// 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 \u0001;
using SmartAssembly.SmartExceptionsCore;
using System;
using System.Diagnostics;
using System.Reflection;
using System.Reflection.Emit;

namespace \u0001
{
  internal static class \u0003
  {
    public static void \u0003()
    {
      StackFrame frame;
      Type declaringType;
      FieldInfo[] fields;
      int index1;
      FieldInfo fieldInfo;
      Type[] typeArray;
      DynamicMethod dynamicMethod;
      ILGenerator ilGenerator;
      MethodInfo[] methods;
      int index2;
      MethodInfo meth;
      StackTrace stackTrace;
      try
      {
        stackTrace = new StackTrace();
        frame = stackTrace.GetFrame(1);
        declaringType = frame.GetMethod().DeclaringType;
        fields = declaringType.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField);
        for (index1 = 0; index1 < fields.Length; ++index1)
        {
          fieldInfo = fields[index1];
          try
          {
            if ((object) fieldInfo.FieldType == (object) typeof (\u0002))
            {
              string empty = string.Empty;
              Type returnType = typeof (string);
              typeArray = new Type[1]{ typeof (int) };
              Type[] parameterTypes = typeArray;
              Type owner = declaringType;
              dynamicMethod = new DynamicMethod(empty, returnType, parameterTypes, owner, true);
              ilGenerator = dynamicMethod.GetILGenerator();
              ilGenerator.Emit(OpCodes.Ldarg_0);
              methods = typeof (\u0006).GetMethods(BindingFlags.Static | BindingFlags.Public);
              for (index2 = 0; index2 < methods.Length; ++index2)
              {
                meth = methods[index2];
                if ((object) meth.ReturnType == (object) typeof (string))
                {
                  ilGenerator.Emit(OpCodes.Ldc_I4, fieldInfo.MetadataToken & 16777215);
                  ilGenerator.Emit(OpCodes.Sub);
                  ilGenerator.Emit(OpCodes.Call, meth);
                  break;
                }
              }
              ilGenerator.Emit(OpCodes.Ret);
              fieldInfo.SetValue((object) null, (object) (\u0002) dynamicMethod.CreateDelegate(typeof (\u0002)));
              break;
            }
          }
          catch
          {
          }
        }
      }
      catch (Exception ex)
      {
        object[] objArray = new object[12]
        {
          (object) stackTrace,
          (object) frame,
          (object) declaringType,
          (object) fieldInfo,
          (object) dynamicMethod,
          (object) ilGenerator,
          (object) meth,
          (object) fields,
          (object) index1,
          (object) typeArray,
          (object) methods,
          (object) index2
        };
        throw UnhandledException.\u0003(ex, objArray);
      }
    }
  }
}