// Decompiled with JetBrains decompiler // Type: . // Assembly: a5b7ee8e-cbdf-4eff-9144-efd0c433f3fe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 97CE9FDF-0921-44CB-AE13-1E9A2A550F0F // Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Virus.Win32.Sality.sil-9eb937e4a3faa7c29e8cc85118a5c87d65f8716c89e5d1b13d7d7bc334ec8975.exe using \u0002; using \u0003; using \u0004; using Microsoft.Win32; using SmartAssembly.SmartExceptionsCore; using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Net; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using System.Text; using System.Threading; using System.Web.Services.Protocols; using System.Xml; namespace \u0003 { internal abstract class \u0006 { [NonSerialized] internal static \u0001.\u0002 \u0001; private static string \u0001; internal static bool \u0001; private IWebProxy \u0001; private char[] \u0001 = new char[0]; private static \u0006 \u0001; private Exception \u0001; private Hashtable \u0001; private Hashtable \u0002; private XmlTextWriter \u0001; private ArrayList \u0001 = new ArrayList(); private ArrayList \u0002 = new ArrayList(); private Hashtable \u0003 = new Hashtable(); private ArrayList \u0003 = new ArrayList(); private Hashtable \u0004 = new Hashtable(); private EventHandler \u0001; private \u0004.\u0002 \u0001; [SpecialName] [MethodImpl(MethodImplOptions.Synchronized)] public void \u0003([In] EventHandler obj0) => this.\u0001 = (EventHandler) \u0018\u0003.\u0014\u0004((Delegate) this.\u0001, (Delegate) obj0); [SpecialName] [MethodImpl(MethodImplOptions.Synchronized)] public void \u0003([In] \u0004.\u0002 obj0) => this.\u0001 = (\u0004.\u0002) \u0018\u0003.\u0014\u0004((Delegate) this.\u0001, (Delegate) obj0); protected abstract void \u0003([In] \u0005.\u0002 obj0); protected abstract void \u0003([In] \u0004.\u0005 obj0); protected abstract void \u0003([In] \u0004.\u0004 obj0); [SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)] public static void \u0003([In] \u0006 obj0) { if (obj0 == null) return; \u0006.\u0001 = obj0; \u008C\u0005.\u007E\u001F\u0004((object) \u0099\u0003.\u001D\u0004(), new UnhandledExceptionEventHandler(obj0.\u0003)); \u007F\u0003.\u001F(new ThreadExceptionEventHandler(obj0.\u0003)); } [SpecialName] public char[] \u0003() { string str; if (this.\u0001.Length == 0 && (str = \u0003\u0006.\u007E\u008F\u0003((object) \u0006.\u0001(1019))) != null) { if (!\u0008\u0003.\u0081\u0003(str, \u0006.\u0001(1032))) { if (\u0008\u0003.\u0081\u0003(str, \u0006.\u0001(1019))) this.\u0001 = new char[58] { '\u0001', '\u0002', '\u0003', '\u0004', '\u0005', '\u0006', '\a', '\b', '\u000E', '\u000F', '\u0010', '\u0011', '\u0012', '\u0013', '\u0014', '\u0015', '\u0016', '\u0017', '\u0018', '\u0019', '\u001A', '\u001B', '\u001C', '\u001D', '\u001E', '\u001F', '\u007F', '\u0080', '\u0081', '\u0082', '\u0083', '\u0084', '\u0086', '\u0087', '\u0088', '\u0089', '\u008A', '\u008B', '\u008C', '\u008D', '\u008E', '\u008F', '\u0090', '\u0091', '\u0092', '\u0093', '\u0094', '\u0095', '\u0096', '\u0097', '\u0098', '\u0099', '\u009A', '\u009B', '\u009C', '\u009D', '\u009E', '\u009F' }; } else this.\u0001 = new char[62] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; } return this.\u0001; } public static void \u0003([In] Exception obj0, [In] object[] obj1) { try { if (obj0 != null && obj0 is SecurityException && \u0008\u0003.\u0081\u0003(\u0006.\u0001, \u0006.\u0001(1041)) && \u0006.\u0001.\u0003((SecurityException) obj0)) return; \u0006.\u0001.\u0003(UnhandledException.\u0003(obj0, obj1), false); } catch { \u0016\u0005.\u007F(); } } public static Exception \u0003([In] Exception obj0, [In] object[] obj1) { \u0006.\u0004(obj0, obj1); return (Exception) new SoapException(\u0003\u0006.\u007E\u0001\u0004((object) obj0), SoapException.ServerFaultCode); } public static void \u0004([In] Exception obj0, [In] object[] obj1) { try { if (\u0006.\u0001 == null) { foreach (Type type in \u0091\u0003.\u007E\u001B\u0006((object) \u0003\u0003.\u0082\u0006())) { if ((object) type != null && (object) \u0011\u0004.\u007E\u0016\u0005((object) type) != null) { // ISSUE: type reference if ((object) \u0011\u0004.\u007E\u0016\u0005((object) type) == (object) \u0084\u0003.\u0012\u0005(__typeref (\u0006))) { try { \u0006.\u0001 = (\u0006) \u008D\u0002.\u0016\u0004(type, true); if (\u0006.\u0001 != null) break; } catch { } } } } } if (\u0006.\u0001 == null) return; \u0006.\u0001.\u0003(UnhandledException.\u0003(obj0, obj1), true); } catch { } } private void \u0003([In] object obj0, [In] ThreadExceptionEventArgs obj1) { try { if (\u001B\u0004.\u007E\u001A\u0008((object) obj1) is SecurityException && \u0008\u0003.\u0081\u0003(\u0006.\u0001, \u0006.\u0001(1041)) && this.\u0003(\u001B\u0004.\u007E\u001A\u0008((object) obj1) as SecurityException)) return; this.\u0003(\u001B\u0004.\u007E\u001A\u0008((object) obj1), true); } catch { } } private void \u0003([In] object obj0, [In] UnhandledExceptionEventArgs obj1) { try { if (\u0010\u0005.\u007E\u008C\u0005((object) obj1) is SecurityException && \u0008\u0003.\u0081\u0003(\u0006.\u0001, \u0006.\u0001(1041)) && this.\u0003(\u0010\u0005.\u007E\u008C\u0005((object) obj1) as SecurityException) || !(\u0010\u0005.\u007E\u008C\u0005((object) obj1) is Exception)) return; this.\u0003((Exception) \u0010\u0005.\u007E\u008C\u0005((object) obj1), !\u009E\u0005.\u007E\u008D\u0005((object) obj1)); } catch { } } private string \u0003([In] object obj0) { try { if (obj0 == null) return string.Empty; if (obj0 is int num1) return num1.ToString(\u0006.\u0001(1046)); switch (obj0) { case long num2: return num2.ToString(\u0006.\u0001(1046)); case short num3: return num3.ToString(\u0006.\u0001(1046)); case uint num4: return num4.ToString(\u0006.\u0001(1046)); case ulong num5: return num5.ToString(\u0006.\u0001(1046)); case ushort num6: return num6.ToString(\u0006.\u0001(1046)); case byte num7: return num7.ToString(\u0006.\u0001(1046)); case sbyte num8: return num8.ToString(\u0006.\u0001(1046)); case IntPtr num9: return num9.ToInt64().ToString(\u0006.\u0001(1046)); case UIntPtr num10: return num10.ToUInt64().ToString(\u0006.\u0001(1046)); } } catch { } return string.Empty; } private string \u0003([In] string obj0) => \u0087\u0003.\u007E\u008D\u0003((object) obj0, \u0006.\u0001(1051)) && \u0087\u0003.\u007E\u0089\u0003((object) obj0, \u0006.\u0001(1072)) ? \u0006.\u0001(1093) : obj0; private void \u0003([In] object obj0, [In] FieldInfo obj1) { string str1 = (object) obj1 == null ? (string) null : \u0003\u0006.\u007E\u0007\u0005((object) obj1); string str2 = (object) obj1 == null ? \u0006.\u0001(1175) : \u0006.\u0001(1166); if (obj0 == null) { \u0096\u0004.\u007E\u0012((object) this.\u0001, str2); if ((object) obj1 != null) { if (\u009E\u0005.\u007E\u0096\u0006((object) obj1)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1184), \u0006.\u0001(1041)); Type type = \u0011\u0004.\u007E\u0093\u0006((object) obj1); if ((object) type != null && \u009E\u0005.\u007E\u0082\u0005((object) type)) { this.\u0003(\u0011\u0004.\u007E\u0083\u0005((object) type)); if (\u009E\u0005.\u007E\u007F\u0005((object) type)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1193), \u0006.\u0001(1041)); if (\u009E\u0005.\u007E\u0080\u0005((object) type)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1202), \u0006.\u0001(1041)); if (\u009E\u0005.\u007E\u001F\u0005((object) type)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1215), \u008A\u0005.\u007E\u0015\u0005((object) type).ToString()); } else this.\u0003(type); } if (str1 != null) this.\u0003(str1); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1224), \u0006.\u0001(1041)); \u0087\u0005.\u007E\u0013((object) this.\u0001); } else { Type type = \u0011\u0004.\u007E\u0015\u0003(obj0); string str3 = (string) null; string str4 = (string) null; if (obj0 is string) str3 = \u0006.\u0001(1233); if (str3 == null) { if (\u009E\u0005.\u007E\u0081\u0005((object) type) || obj0 is IntPtr || obj0 is UIntPtr) { str3 = \u0003\u0006.\u007E\u0013\u0005((object) type); if (obj0 is char ch) { int num = (int) ch; StringBuilder stringBuilder1 = new StringBuilder(); if (num >= 32) { StringBuilder stringBuilder2 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, '\''); StringBuilder stringBuilder3 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, (char) obj0); StringBuilder stringBuilder4 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, \u0006.\u0001(1254)); } StringBuilder stringBuilder5 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, \u0006.\u0001(1259)); StringBuilder stringBuilder6 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, num.ToString(\u0006.\u0001(1046))); StringBuilder stringBuilder7 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, ')'); str4 = \u0003\u0006.\u007E\u0013\u0003((object) stringBuilder1); } if (obj0 is bool) str4 = \u0003\u0006.\u007E\u008E\u0003((object) \u0003\u0006.\u007E\u0013\u0003(obj0)); if (str4 == null) { string str5 = string.Empty; try { str5 = this.\u0003(obj0); } catch { } if (\u008A\u0005.\u007E\u0084\u0003((object) str5) > 0) { StringBuilder stringBuilder8 = new StringBuilder(); StringBuilder stringBuilder9 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder8, \u0003\u0006.\u007E\u0013\u0003(obj0)); StringBuilder stringBuilder10 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder8, \u0006.\u0001(1264)); StringBuilder stringBuilder11 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder8, str5); StringBuilder stringBuilder12 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder8, ')'); str4 = \u0003\u0006.\u007E\u0013\u0003((object) stringBuilder8); } else str4 = \u0003\u0006.\u007E\u0013\u0003(obj0); } } else if (\u009E\u0005.\u007E\u001D\u0005((object) type) && (object) \u0093\u0004.\u007E\u0010\u0005((object) type) != (object) \u0093\u0004.\u007E\u0010\u0005((object) \u0011\u0004.\u0015\u0003((object) this))) str3 = \u0003\u0006.\u007E\u0013\u0005((object) type); } if (str3 != null) { \u0096\u0004.\u007E\u0012((object) this.\u0001, str2); if ((object) obj1 != null && \u009E\u0005.\u007E\u0096\u0006((object) obj1)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1184), \u0006.\u0001(1041)); this.\u0003(type); if (str1 != null) this.\u0003(str1); if (\u009E\u0005.\u007E\u001E\u0005((object) type)) str4 = \u0003\u0006.\u007E\u0013\u0003(obj0); if (obj0 is Guid) str4 = \u0091\u0005.\u0096\u0003(\u0006.\u0001(698), \u0003\u0006.\u007E\u0013\u0003(obj0), \u0006.\u0001(1273)); if (str4 == null) str4 = \u0091\u0005.\u0096\u0003(\u0006.\u0001(1278), \u0003\u0006.\u007E\u0013\u0003(obj0), \u0006.\u0001(1278)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1283), this.\u0003(str4)); \u0087\u0005.\u007E\u0013((object) this.\u0001); } else { \u0096\u0004.\u007E\u0012((object) this.\u0001, str2); if ((object) obj1 != null && \u009E\u0005.\u007E\u0096\u0006((object) obj1)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1184), \u0006.\u0001(1041)); int num = -1; for (int index = 0; index < \u008A\u0005.\u007E\u009A\u0005((object) this.\u0001); ++index) { try { if (\u0097\u0004.\u007E\u0014\u0003(\u0081\u0005.\u007E\u009B\u0005((object) this.\u0001, index), obj0)) { num = index; break; } } catch { } } if (num == -1) num = \u0088\u0004.\u007E\u009C\u0005((object) this.\u0001, obj0); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1292), num.ToString()); if (str1 != null) this.\u0003(str1); \u0087\u0005.\u007E\u0013((object) this.\u0001); } } } private void \u0003([In] string obj0) { int num = this.\u0003(obj0); if (num != -1) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1297), num.ToString()); else \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1306), obj0); } private \u0006.\u0003 \u0003([In] Type obj0) { \u0006.\u0003 obj = \u0006.\u0003.\u0003(); if ((object) obj0 != null && (object) \u0092\u0003.\u007E\u001A\u0006((object) \u0008\u0005.\u007E\u0011\u0005((object) obj0), \u0006.\u0001(1315)) != null) { obj.\u0001 = ((\u008A\u0005.\u007E\u000E\u0005((object) obj0) & 16777215) - 1).ToString(); Assembly assembly = \u0008\u0005.\u007E\u0011\u0005((object) obj0); obj.\u0001 = new \u0006.\u0002(\u008F\u0002.\u007E\u008C\u0006((object) \u0093\u0004.\u007E\u001D\u0006((object) assembly)).ToString(\u0006.\u0001(1376)), \u0003\u0006.\u007E\u0019\u0006((object) assembly)); } return obj; } private int \u0003([In] \u0006.\u0003 obj0) { string str = \u0003\u0006.\u007E\u008F\u0003((object) obj0.\u0001.\u0001); if (\u0097\u0004.\u007E\u0004\u0006((object) this.\u0004, (object) str)) return (int) \u0083\u0005.\u007E\u0005\u0006((object) this.\u0004, (object) str); int num = \u0088\u0004.\u007E\u009C\u0005((object) this.\u0003, (object) obj0.\u0001); \u0001\u0005.\u007E\u0002\u0006((object) this.\u0004, (object) str, (object) num); return num; } private void \u0003([In] Type obj0) { if ((object) obj0 == null) return; try { \u0006.\u0003 obj = this.\u0003(obj0); if (!obj.\u0003()) { \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1381), obj.\u0001); int num = this.\u0003(obj); if (num <= 0) return; \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1394), num.ToString()); } else { string str1 = \u0003\u0006.\u007E\u0013\u0005((object) obj0); int num1; if (\u0097\u0004.\u007E\u0004\u0006((object) this.\u0003, (object) str1)) { num1 = (int) \u0083\u0005.\u007E\u0005\u0006((object) this.\u0003, (object) str1); } else { StringBuilder stringBuilder1 = new StringBuilder(); string str2 = \u0003\u0006.\u007E\u008A\u0006((object) \u0095\u0004.\u007E\u0018\u0006((object) \u0008\u0005.\u007E\u0011\u0005((object) obj0))); if (\u008A\u0005.\u007E\u0084\u0003((object) str2) > 0 && \u0008\u0003.\u0082\u0003(str2, \u0006.\u0001(1407))) { StringBuilder stringBuilder2 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, '['); StringBuilder stringBuilder3 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, str2); StringBuilder stringBuilder4 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, ']'); } string str3 = \u0003\u0006.\u007E\u0014\u0005((object) obj0); if (\u008A\u0005.\u007E\u0084\u0003((object) str3) > 0) { StringBuilder stringBuilder5 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, str3); StringBuilder stringBuilder6 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, '.'); } if (\u009E\u0005.\u007E\u0082\u0005((object) obj0)) obj0 = \u0011\u0004.\u007E\u0083\u0005((object) obj0); int num2 = \u0016\u0003.\u007E\u008C\u0003((object) str1, \u0006.\u0001(1420)); if (num2 > 0) { string str4 = \u0097\u0002.\u007E\u0091\u0003((object) \u0098\u0004.\u007E\u0088\u0003((object) str1, \u008A\u0005.\u007E\u0084\u0003((object) str3) + 1, num2 - \u008A\u0005.\u007E\u0084\u0003((object) str3)), \u0006.\u0001(1420), \u0006.\u0001(1425)); StringBuilder stringBuilder7 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, str4); } StringBuilder stringBuilder8 = \u0097\u0005.\u007E\u009A\u0003((object) stringBuilder1, \u0003\u0006.\u007E\u0007\u0005((object) obj0)); num1 = \u0088\u0004.\u007E\u009C\u0005((object) this.\u0002, (object) \u0003\u0006.\u007E\u0013\u0003((object) stringBuilder1)); \u0001\u0005.\u007E\u0002\u0006((object) this.\u0003, (object) str1, (object) num1); } \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1430), num1.ToString()); } } catch { } } private int \u0003([In] string obj0) { try { bool flag1 = this.\u0003()[0] == '\u0001'; if (obj0 == null || \u008A\u0005.\u007E\u0084\u0003((object) obj0) == 0 || flag1 && \u008A\u0005.\u007E\u0084\u0003((object) obj0) > 4 || !flag1 && \u009E\u0004.\u007E\u0083\u0003((object) obj0, 0) != '#') return -1; int num = 0; for (int index1 = \u008A\u0005.\u007E\u0084\u0003((object) obj0) - 1; index1 >= 0 && (flag1 || index1 != 0); --index1) { char ch = \u009E\u0004.\u007E\u0083\u0003((object) obj0, index1); bool flag2 = false; for (int index2 = 0; index2 < this.\u0003().Length; ++index2) { if ((int) this.\u0003()[index2] == (int) ch) { num = num * this.\u0003().Length + index2; flag2 = true; break; } } if (!flag2) return -1; } return num; } catch { return -1; } } protected virtual Guid \u0003() => Guid.Empty; private string \u0003() { try { return \u009E\u0003.\u001D(); } catch { return \u0006.\u0001(1443); } } private Assembly[] \u0003() { try { return \u009A\u0002.\u007E\u001E\u0004((object) \u0099\u0003.\u001D\u0004()); } catch { return new Assembly[1]{ this.\u0003() }; } } private Assembly \u0003() { try { return \u0003\u0003.\u0082\u0006(); } catch { return (Assembly) null; } } private byte[] \u0003([In] string obj0) { MemoryStream w = new MemoryStream(); this.\u0001 = new XmlTextWriter((Stream) w, (Encoding) new UTF8Encoding(false)); \u0087\u0005.\u007E\u0010((object) this.\u0001); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1448)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1481), \u0003\u0006.\u007E\u008F\u0003((object) \u0006.\u0001(1498))); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1551), \u0002\u0006.\u000F\u0004().ToString(\u0006.\u0001(1564))); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1569), this.\u0003()); Guid guid = this.\u0003(); if (\u001B\u0003.\u0094\u0004(guid, Guid.Empty)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1578), guid.ToString(\u0006.\u0001(1376))); if (\u008A\u0005.\u007E\u0084\u0003((object) obj0) > 0) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1587), obj0); if (\u008A\u0005.\u007E\u009A\u0005((object) this.\u0003) > 0) \u0087\u0005.\u007E\u009D\u0005((object) this.\u0003); int num1 = \u0088\u0004.\u007E\u009C\u0005((object) this.\u0003, (object) new \u0006.\u0002(\u0006.\u0001(1498), string.Empty)); if (\u008A\u0005.\u007E\u0007\u0006((object) this.\u0004) > 0) \u0087\u0005.\u007E\u0003\u0006((object) this.\u0004); \u0001\u0005.\u007E\u0002\u0006((object) this.\u0004, (object) \u0006.\u0001(1498), (object) 0); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1600)); Assembly assembly1 = this.\u0003(); foreach (Assembly assembly2 in this.\u0003()) { if ((object) assembly2 != null) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1394)); try { \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1306), \u0003\u0006.\u007E\u0019\u0006((object) assembly2)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1617), \u0003\u0006.\u007E\u0017\u0006((object) assembly2)); if ((object) assembly2 == (object) assembly1) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1630), \u0006.\u0001(1041)); } catch { } \u0087\u0005.\u007E\u0013((object) this.\u0001); } } \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1639)); if (this.\u0001 != null && \u008A\u0005.\u007E\u0007\u0006((object) this.\u0001) > 0) { IEnumerator enumerator = \u0083\u0004.\u007E\u0016\u0003((object) \u0015\u0005.\u007E\u0006\u0006((object) this.\u0001)); try { while (\u009E\u0005.\u007E\u001D\u0003((object) enumerator)) { string str1 = (string) \u0010\u0005.\u007E\u001E\u0003((object) enumerator); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1664)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1306), str1); string str2 = (string) \u0083\u0005.\u007E\u0005\u0006((object) this.\u0001, (object) str1); if (str2 == null) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1224), \u0006.\u0001(1041)); else \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1283), \u0091\u0005.\u0096\u0003(\u0006.\u0001(1278), str2, \u0006.\u0001(1278))); \u0087\u0005.\u007E\u0013((object) this.\u0001); } } finally { if (enumerator is IDisposable disposable) \u0087\u0005.\u007E\u001F\u0003((object) disposable); } } \u0087\u0005.\u007E\u0013((object) this.\u0001); if (this.\u0002 != null && \u008A\u0005.\u007E\u0007\u0006((object) this.\u0002) > 0) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1685)); IEnumerator enumerator = \u0083\u0004.\u007E\u0016\u0003((object) \u0015\u0005.\u007E\u0006\u0006((object) this.\u0002)); try { while (\u009E\u0005.\u007E\u001D\u0003((object) enumerator)) { string str = (string) \u0010\u0005.\u007E\u001E\u0003((object) enumerator); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1706)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1723), str); \u0006.\u0001 obj = (\u0006.\u0001) \u0083\u0005.\u007E\u0005\u0006((object) this.\u0002, (object) str); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1728), obj.\u0001); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1741), obj.\u0001.ToString()); if (\u008A\u0005.\u007E\u0084\u0003((object) obj.\u0003) > 0) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1750), obj.\u0003); else \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1759), obj.\u0002); \u0087\u0005.\u007E\u0013((object) this.\u0001); } } finally { if (enumerator is IDisposable disposable) \u0087\u0005.\u007E\u001F\u0003((object) disposable); } \u0087\u0005.\u007E\u0013((object) this.\u0001); } \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1768)); try { \u0014\u0004.\u007E\u0016((object) this.\u0001, \u0006.\u0001(1793), \u0003\u0006.\u007E\u0013\u0003((object) \u0007\u0005.\u007E\u0006\u0005((object) \u0081\u0003.\u0090\u0004()))); \u0014\u0004.\u007E\u0016((object) this.\u0001, \u0006.\u0001(1806), \u0003\u0006.\u007E\u0013\u0003((object) \u008C\u0004.\u007E\u0005\u0005((object) \u0081\u0003.\u0090\u0004()))); \u0014\u0004.\u007E\u0016((object) this.\u0001, \u0006.\u0001(1823), \u0005.\u0003.\u0003()); } catch { } \u0087\u0005.\u007E\u0013((object) this.\u0001); ArrayList arrayList = new ArrayList(); for (Exception exception = this.\u0001; exception != null; exception = \u001B\u0004.\u007E\u0002\u0004((object) exception)) { Type type = \u0011\u0004.\u007E\u0005\u0004((object) exception); if (\u0008\u0003.\u0081\u0003(\u0003\u0006.\u007E\u0007\u0005((object) type), \u0006.\u0001(1840)) && \u0008\u0003.\u0081\u0003(\u0003\u0006.\u007E\u0014\u0005((object) type), \u0006.\u0001(1865))) { int num2 = \u0088\u0004.\u007E\u009C\u0005((object) arrayList, (object) exception); } else \u0002\u0003.\u007E\u009F\u0005((object) arrayList, 0, (object) exception); } \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1910)); int num3 = \u008A\u0005.\u007E\u009A\u0005((object) arrayList); int num4 = 0; IEnumerator enumerator1 = \u0083\u0004.\u007E\u009E\u0005((object) arrayList); try { while (\u009E\u0005.\u007E\u001D\u0003((object) enumerator1)) { Exception exception = (Exception) \u0010\u0005.\u007E\u001E\u0003((object) enumerator1); ++num4; if (num4 > 100 && num4 == num3 - 100) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1927)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1948), num3.ToString()); \u0087\u0005.\u007E\u0013((object) this.\u0001); } else if (num4 <= 100 || num4 > num3 - 100) { Type type = \u0011\u0004.\u007E\u0005\u0004((object) exception); if (\u0008\u0003.\u0081\u0003(\u0003\u0006.\u007E\u0007\u0005((object) type), \u0006.\u0001(1840)) && \u0008\u0003.\u0081\u0003(\u0003\u0006.\u007E\u0014\u0005((object) type), \u0006.\u0001(1865))) { int num5 = 0; int num6 = -1; object[] objArray = (object[]) null; \u0006.\u0003 obj1 = \u0006.\u0003.\u0003(); bool flag = true; try { num5 = (int) \u0083\u0005.\u007E\u0094\u0006((object) \u0010\u0004.\u007E\u001A\u0005((object) type, \u0006.\u0001(1973)), (object) exception); num6 = (int) \u0083\u0005.\u007E\u0094\u0006((object) \u0010\u0004.\u007E\u001A\u0005((object) type, \u0006.\u0001(1986)), (object) exception); objArray = (object[]) \u0083\u0005.\u007E\u0094\u0006((object) \u0010\u0004.\u007E\u001A\u0005((object) type, \u0006.\u0001(1999)), (object) exception); obj1 = this.\u0003(type); } catch { flag = false; } if (flag && !obj1.\u0003()) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2012)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1973), num5.ToString()); int num7 = this.\u0003(obj1); if (num7 > 0) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1394), num7.ToString()); if (num6 != -1) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1986), num6.ToString()); foreach (object obj2 in objArray) { try { this.\u0003(obj2, (FieldInfo) null); } catch { } } \u0087\u0005.\u007E\u0013((object) this.\u0001); } } else { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2029)); try { this.\u0003(\u0011\u0004.\u007E\u0005\u0004((object) exception)); string str3 = \u0006.\u0001(1443); try { str3 = \u0003\u0006.\u007E\u0001\u0004((object) exception); } catch { } \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2042), str3); string str4 = \u0003\u0006.\u007E\u0090\u0003((object) \u0003\u0006.\u007E\u0003\u0004((object) exception)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2055), str4); int num8 = \u0004\u0005.\u007E\u008A\u0003((object) str4, ' '); string str5 = \u009B\u0002.\u007E\u0087\u0003((object) str4, num8 + 1); int num9 = \u0016\u0003.\u007E\u008B\u0003((object) str5, \u0006.\u0001(2084)); if (num9 != -1) str5 = \u0098\u0004.\u007E\u0088\u0003((object) str5, 0, num9); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2089), str5); } catch { } \u0087\u0005.\u007E\u0013((object) this.\u0001); } } } } finally { if (enumerator1 is IDisposable disposable) \u0087\u0005.\u007E\u001F\u0003((object) disposable); } \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1999)); int num10 = \u008A\u0005.\u007E\u009A\u0005((object) this.\u0001); for (int index1 = 0; index1 < \u008A\u0005.\u007E\u009A\u0005((object) this.\u0001); ++index1) { object obj3 = \u0081\u0005.\u007E\u009B\u0005((object) this.\u0001, index1); Type type = \u0011\u0004.\u007E\u0015\u0003(obj3); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2098)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1292), index1.ToString()); string str = (string) null; try { str = \u0003\u0006.\u007E\u0013\u0003(obj3); str = !\u0008\u0003.\u0081\u0003(str, \u0003\u0006.\u007E\u0013\u0005((object) type)) ? (!\u009E\u0005.\u007E\u001E\u0005((object) type) ? (!(obj3 is Guid) ? \u0091\u0005.\u0096\u0003(\u0006.\u0001(1278), str, \u0006.\u0001(1278)) : \u0091\u0005.\u0096\u0003(\u0006.\u0001(698), str, \u0006.\u0001(1273))) : \u0015\u0004.\u007F\u0003(type, obj3, \u0006.\u0001(2111))) : (string) null; } catch { } if (str != null) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1283), this.\u0003(str)); if (\u009E\u0005.\u007E\u0082\u0005((object) type)) { this.\u0003(\u0011\u0004.\u007E\u0083\u0005((object) type)); if (\u009E\u0005.\u007E\u007F\u0005((object) type)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1193), \u0006.\u0001(1041)); if (\u009E\u0005.\u007E\u0080\u0005((object) type)) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1202), \u0006.\u0001(1041)); if (\u009E\u0005.\u007E\u001F\u0005((object) type)) { Array array = (Array) obj3; \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1215), \u008A\u0005.\u007E\u001C\u0003((object) array).ToString()); StringBuilder stringBuilder1 = new StringBuilder(); for (int index2 = 0; index2 < \u008A\u0005.\u007E\u001C\u0003((object) array); ++index2) { if (index2 > 0) { StringBuilder stringBuilder2 = \u0086\u0004.\u007E\u009B\u0003((object) stringBuilder1, ','); } StringBuilder stringBuilder3 = \u0088\u0003.\u007E\u009C\u0003((object) stringBuilder1, \u0099\u0005.\u007E\u001B\u0003((object) array, index2)); } \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1741), \u0003\u0006.\u007E\u0013\u0003((object) stringBuilder1)); if (\u008A\u0005.\u007E\u001C\u0003((object) array) == 1) { int num11 = \u008A\u0005.\u007E\u001A\u0003((object) array); for (int index3 = 0; index3 < num11; ++index3) { if (index3 == 10) { if (num11 > 16) index3 = num11 - 5; } try { this.\u0003(\u0081\u0005.\u007E\u0019\u0003((object) array, index3), (FieldInfo) null); } catch { } } } } } else { this.\u0003(type); if (index1 < num10) { if (obj3 is IEnumerable) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2116)); try { int num12 = 0; IEnumerator enumerator2 = \u0083\u0004.\u007E\u0016\u0003((object) (IEnumerable) obj3); try { while (\u009E\u0005.\u007E\u001D\u0003((object) enumerator2)) { object obj4 = \u0010\u0005.\u007E\u001E\u0003((object) enumerator2); if (num12 > 20) { \u0014\u0004.\u007E\u0016((object) this.\u0001, \u0006.\u0001(2133), string.Empty); break; } this.\u0003(obj4, (FieldInfo) null); ++num12; } } finally { if (enumerator2 is IDisposable disposable) \u0087\u0005.\u007E\u001F\u0003((object) disposable); } } catch { } \u0087\u0005.\u007E\u0013((object) this.\u0001); } bool flag = true; while ((object) type != null) { if (!flag) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2142)); this.\u0003(type); \u0087\u0005.\u007E\u0013((object) this.\u0001); } FieldInfo[] fieldInfoArray = \u0096\u0003.\u007E\u001B\u0005((object) type, BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); if (fieldInfoArray.Length > 0) { for (int index4 = 0; index4 < fieldInfoArray.Length; ++index4) { try { if (!\u009E\u0005.\u007E\u0098\u0006((object) fieldInfoArray[index4])) { if (\u009E\u0005.\u007E\u0096\u0006((object) fieldInfoArray[index4])) { if (\u009E\u0005.\u007E\u0097\u0006((object) fieldInfoArray[index4])) continue; } this.\u0003(\u0083\u0005.\u007E\u0094\u0006((object) fieldInfoArray[index4], obj3), fieldInfoArray[index4]); } } catch { } } } type = \u0011\u0004.\u007E\u0016\u0005((object) type); flag = false; if (this.\u0003(type).\u0003()) break; } } } \u0087\u0005.\u007E\u0013((object) this.\u0001); } \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2159)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2172), \u008A\u0005.\u007E\u009A\u0005((object) this.\u0002).ToString()); for (int index = 0; index < \u008A\u0005.\u007E\u009A\u0005((object) this.\u0002); ++index) { string empty = string.Empty; string str; try { str = \u0003\u0006.\u007E\u0013\u0003(\u0081\u0005.\u007E\u009B\u0005((object) this.\u0002, index)); } catch (Exception ex) { str = \u000E\u0005.\u0094\u0003((object) '"', (object) \u0003\u0006.\u007E\u0001\u0004((object) ex), (object) '"'); } \u0014\u0004.\u007E\u0016((object) this.\u0001, \u0006.\u0001(1430), str); } \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(2181)); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2172), \u008A\u0005.\u007E\u009A\u0005((object) this.\u0003).ToString()); for (int index = 0; index < \u008A\u0005.\u007E\u009A\u0005((object) this.\u0003); ++index) { \u0096\u0004.\u007E\u0012((object) this.\u0001, \u0006.\u0001(1481)); \u0006.\u0002 obj = (\u0006.\u0002) \u0081\u0005.\u007E\u009B\u0005((object) this.\u0003, index); \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(1292), obj.\u0001); if (\u008A\u0005.\u007E\u0084\u0003((object) obj.\u0002) > 0) \u0014\u0004.\u007E\u0014((object) this.\u0001, \u0006.\u0001(2198), obj.\u0002); \u0087\u0005.\u007E\u0013((object) this.\u0001); } \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0087\u0005.\u007E\u0013((object) this.\u0001); \u0087\u0005.\u007E\u0011((object) this.\u0001); \u0087\u0005.\u007E\u0015((object) this.\u0001); \u0087\u0005.\u007E\u0019\u0007((object) w); return \u0095\u0002.\u007E\u008B\u0007((object) w); } internal bool \u0003([In] string obj0) { try { byte[] numArray1 = this.\u0003(\u008E\u0004.\u0095\u0004().ToString(\u0006.\u0001(1376))); FileStream fileStream = \u0003\u0005.\u0087\u0007(obj0); byte[] numArray2 = \u0003.\u0005.\u0003(\u0006.\u0004(numArray1), \u0006.\u0001(2211)); byte[] numArray3 = \u0019\u0005.\u007E\u009F\u0006((object) \u001F\u0003.\u009E\u0006(), \u0006.\u0001(1498)); \u009B\u0005.\u007E\u001D\u0007((object) fileStream, numArray3, 0, numArray3.Length); \u009B\u0005.\u007E\u001D\u0007((object) fileStream, numArray2, 0, numArray2.Length); \u0087\u0005.\u007E\u0018\u0007((object) fileStream); return true; } catch (ThreadAbortException ex) { return false; } catch (Exception ex) { return false; } } internal void \u0003() { try { string str1 = \u009E\u0003.\u008D\u0007(); this.\u0003(str1); string str2 = this.\u0004(\u0006.\u0001(1569)); if (\u008A\u0005.\u007E\u0084\u0003((object) str2) > 0 && !\u0087\u0003.\u007E\u0089\u0003((object) str2, \u0006.\u0001(2537))) str2 = \u0010\u0003.\u0095\u0003(str2, \u0006.\u0001(2537)); Process process = \u008A\u0003.\u0081\u0008(\u0010\u0003.\u0095\u0003(str2, \u0006.\u0001(2542)), \u0091\u0005.\u0096\u0003(\u0006.\u0001(2571), str1, \u0006.\u0001(1278))); if (this.\u0001 == null) return; \u0011\u0003.\u007E\u0092\u0004((object) this.\u0001, (object) this, EventArgs.Empty); } catch (ThreadAbortException ex) { } catch (Exception ex) { this.\u0003(new \u0004.\u0005(ex)); } } internal bool \u0003() { try { if (this.\u0001 != null) goto label_35; label_1: byte[] numArray1; try { numArray1 = this.\u0003(string.Empty); } catch (Exception ex) { int num = -1; try { StackTrace stackTrace = new StackTrace(ex); if (\u008A\u0005.\u007E\u0013\u0006((object) stackTrace) > 0) { StackFrame stackFrame = \u0082\u0005.\u007E\u0014\u0006((object) stackTrace, \u008A\u0005.\u007E\u0013\u0006((object) stackTrace) - 1); num = \u008A\u0005.\u007E\u0016\u0006((object) stackFrame); } } catch { } if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0001, \u0090\u0005.\u0093\u0003(\u0006.\u0001(2600), (object) \u0003\u0006.\u007E\u0001\u0004((object) ex), (object) num))); return false; } byte[] numArray2 = \u0006.\u0004(numArray1); if (numArray2 == null) { if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0001, \u0006.\u0001)); return false; } byte[] numArray3 = \u0003.\u0005.\u0003(numArray2, \u0006.\u0001(2211)); if (numArray3 == null) { if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0001, \u0003.\u0005.\u0001)); return false; } if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0002)); \u0006 obj = new \u0006(\u0006.\u0001(2633)); if (this.\u0001 != null) obj.\u0003(this.\u0001); string str1 = obj.\u0003(); if (\u0008\u0003.\u0081\u0003(str1, \u0006.\u0001(2686))) { if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0003)); byte[] numArray4 = \u0019\u0005.\u007E\u009F\u0006((object) \u001F\u0003.\u009E\u0006(), \u0006.\u0001(1498)); byte[] numArray5 = new byte[numArray4.Length + numArray3.Length]; \u0005\u0006.\u0017\u0003((Array) numArray4, (Array) numArray5, numArray4.Length); \u0081\u0004.\u0018\u0003((Array) numArray3, 0, (Array) numArray5, numArray4.Length, numArray3.Length); string str2 = obj.\u0003(numArray5); if (\u0087\u0003.\u007E\u008D\u0003((object) str2, \u0006.\u0001(2691))) { if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0003, str2)); return false; } if (this.\u0001 != null) { \u0004.\u0003 e = new \u0004.\u0003(\u0003.\u0002.\u0004); e.\u0003(str2); this.\u0001((object) this, e); } return true; } string str3 = str1; if (this.\u0001 != null) this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0002, str3)); return false; label_35: this.\u0001((object) this, new \u0004.\u0003(\u0003.\u0002.\u0001)); goto label_1; } catch (ThreadAbortException ex) { return false; } catch (Exception ex) { this.\u0003(new \u0004.\u0005(ex)); return false; } } private string \u0004([In] string obj0) { try { RegistryKey registryKey = \u009A\u0005.\u007E\u0008\u0007((object) Registry.LocalMachine, \u0006.\u0001(2696)) ?? \u009A\u0005.\u007E\u0008\u0007((object) Registry.LocalMachine, \u0006.\u0001(2729)); if (registryKey == null) return string.Empty; string str = (string) \u007F\u0004.\u007E\u000E\u0007((object) registryKey, obj0, (object) string.Empty); \u0087\u0005.\u007E\u0007\u0007((object) registryKey); return str; } catch { return string.Empty; } } internal bool \u0003([In] SecurityException obj0) { \u0004.\u0004 obj = new \u0004.\u0004(obj0); this.\u0003(obj); if (obj.\u0005()) return false; if (!obj.\u0004()) \u0016\u0005.\u007F(); return true; } internal string \u0004() { string str1 = Guid.Empty.ToString(\u0006.\u0001(1376)); try { string str2 = this.\u0004(\u0006.\u0001(1569)); if (\u008A\u0005.\u007E\u0084\u0003((object) str2) > 0 && !\u0087\u0003.\u007E\u0089\u0003((object) str2, \u0006.\u0001(2537))) str2 = \u0010\u0003.\u0095\u0003(str2, \u0006.\u0001(2537)); string url = \u0010\u0003.\u0095\u0003(str2, \u0006.\u0001(2778)); if (\u001E\u0005.\u0086\u0007(url)) { XmlTextReader xmlTextReader = new XmlTextReader(url); if (\u009E\u0005.\u007E\u0018((object) xmlTextReader)) str1 = \u008E\u0003.\u007E\u0017((object) xmlTextReader, \u0006.\u0001(2815)); \u0087\u0005.\u007E\u0019((object) xmlTextReader); } } catch { } return str1; } internal void \u0003([In] Exception obj0, [In] bool obj1) { if (obj0 == null || obj0 is ThreadAbortException) return; \u0006.\u0001 = true; bool flag = true; try { this.\u0001 = obj0; this.\u0001 = (Hashtable) null; this.\u0002 = (Hashtable) null; \u0005.\u0002 obj2 = new \u0005.\u0002(this, obj0); if (\u0008\u0003.\u0081\u0003(\u0003\u0006.\u007E\u008E\u0003((object) \u0006.\u0001(2633)), \u0003\u0006.\u007E\u008E\u0003((object) this.\u0004()))) obj2.\u0003(); \u0008\u0003 obj3 = \u0008\u0003.\u0081\u0003; string str1 = \u0003\u0006.\u007E\u008E\u0003((object) \u0006.\u0001(2633)); Guid empty = Guid.Empty; string str2 = \u0003\u0006.\u007E\u008E\u0003((object) empty.ToString(\u0006.\u0001(1376))); if (obj3(str1, str2)) obj2.\u0004(); if (!obj1) obj2.\u0005(); this.\u0003(obj2); flag = !obj2.\u0006(); } catch (ThreadAbortException ex) { } catch (Exception ex) { this.\u0003(new \u0004.\u0005(ex)); } this.\u0001 = (Exception) null; this.\u0001 = (Hashtable) null; this.\u0002 = (Hashtable) null; \u0006.\u0001 = false; if (!flag) return; foreach (Assembly assembly in \u009A\u0002.\u007E\u001E\u0004((object) \u0099\u0003.\u001D\u0004())) { try { string str = \u0003\u0006.\u007E\u0019\u0006((object) assembly); if (\u0087\u0003.\u007E\u0089\u0003((object) str, \u0006.\u0001(2828))) { if (\u0087\u0003.\u007E\u008D\u0003((object) str, \u0006.\u0001(2853))) { object obj4 = \u0093\u0005.\u007E\u0090\u0006((object) \u0008\u0004.\u007E\u0099\u0006((object) \u0014\u0005.\u007E\u001C\u0005((object) \u0092\u0003.\u007E\u001A\u0006((object) assembly, \u0006.\u0001(2886)), \u0006.\u0001(2923))), (object) null, (object[]) null); object obj5 = \u0093\u0005.\u007E\u0090\u0006((object) \u0012\u0005.\u007E\u0017\u0005((object) \u0011\u0004.\u007E\u0015\u0003(obj4), \u0006.\u0001(2936), new Type[0]), obj4, (object[]) null); } } } catch { } } \u0016\u0005.\u007F(); try { \u009D\u0005.\u008F\u0004(0); } catch { } } static \u0006() { \u0001.\u0003.\u0003(); \u0006.\u0001 = \u0006.\u0001(1041); \u0006.\u0001 = false; \u0006.\u0001 = (\u0006) null; } private struct \u0001 { public string \u0001; public string \u0002; public string \u0003; public int \u0001; } private struct \u0002 { public string \u0001; public string \u0002; public \u0002([In] string obj0, [In] string obj1) { this.\u0001 = obj0; this.\u0002 = obj1; } } private struct \u0003 { public string \u0001; public \u0006.\u0002 \u0001; [SpecialName] public bool \u0003() => \u008A\u0005.\u007E\u0084\u0003((object) this.\u0001) == 0; [SpecialName] public static \u0006.\u0003 \u0003() => new \u0006.\u0003(string.Empty, string.Empty, string.Empty); public \u0003([In] string obj0, [In] string obj1, [In] string obj2) { this.\u0001 = obj0; this.\u0001 = new \u0006.\u0002(obj1, obj2); } } } }