// Decompiled with JetBrains decompiler
// Type: .
// Assembly: CSPharm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=91f7ba0f4234404d
// MVID: E3EED34E-DEA0-448A-9147-166831419ACC
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00002-msil\Trojan-Downloader.Win32.Dapato.lnd-7f2f48002f973886553b938cc98149108eb2e39f2ac47324d3c731a4208c60fd.exe

using \u0003;
using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace \u0005
{
  internal sealed class \u0003
  {
    internal sealed class \u0001
    {
      internal static readonly int[] \u0001 = new int[29]
      {
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        13,
        15,
        17,
        19,
        23,
        27,
        31,
        35,
        43,
        51,
        59,
        67,
        83,
        99,
        115,
        131,
        163,
        195,
        227,
        258
      };
      internal static readonly int[] \u0002 = new int[29]
      {
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        0,
        1,
        1,
        1,
        1,
        2,
        2,
        2,
        2,
        3,
        3,
        3,
        3,
        4,
        4,
        4,
        4,
        5,
        5,
        5,
        5,
        0
      };
      internal static readonly int[] \u0003 = new int[30]
      {
        1,
        2,
        3,
        4,
        5,
        7,
        9,
        13,
        17,
        25,
        33,
        49,
        65,
        97,
        129,
        193,
        257,
        385,
        513,
        769,
        1025,
        1537,
        2049,
        3073,
        4097,
        6145,
        8193,
        12289,
        16385,
        24577
      };
      internal static readonly int[] \u0004 = new int[30]
      {
        0,
        0,
        0,
        0,
        1,
        1,
        2,
        2,
        3,
        3,
        4,
        4,
        5,
        5,
        6,
        6,
        7,
        7,
        8,
        8,
        9,
        9,
        10,
        10,
        11,
        11,
        12,
        12,
        13,
        13
      };
      internal int \u0005;
      internal int \u0006;
      internal int \u0007;
      internal int \u0008;
      internal int \u000E;
      internal bool \u000F;
      internal \u0005.\u0003.\u0002 \u0010;
      internal \u0005.\u0003.\u0003 \u0011;
      internal \u0005.\u0003.\u0005 \u0012;
      internal \u0005.\u0003.\u0004 \u0013;
      internal \u0005.\u0003.\u0004 \u0014;

      public \u0001([In] byte[] obj0)
      {
        this.\u0010 = new \u0005.\u0003.\u0002();
        this.\u0011 = new \u0005.\u0003.\u0003();
        this.\u0005 = 2;
        \u0001.\u0001(obj0.Length, 0, obj0, this.\u0010);
      }
    }

    internal sealed class \u0002
    {
      internal byte[] \u0001;
      internal int \u0002 = 0;
      internal int \u0003 = 0;
      internal uint \u0004 = 0;
      internal int \u0005 = 0;
    }

    internal sealed class \u0003
    {
      internal byte[] \u0001 = new byte[32768];
      internal int \u0002 = 0;
      internal int \u0003 = 0;
    }

    internal sealed class \u0004
    {
      internal short[] \u0001;
      public static readonly \u0005.\u0003.\u0004 \u0002;
      public static readonly \u0005.\u0003.\u0004 \u0003;

      static \u0004()
      {
        byte[] numArray1 = new byte[288];
        int num1 = 0;
        while (num1 < 144)
          numArray1[num1++] = (byte) 8;
        while (num1 < 256)
          numArray1[num1++] = (byte) 9;
        while (num1 < 280)
          numArray1[num1++] = (byte) 7;
        while (num1 < 288)
          numArray1[num1++] = (byte) 8;
        \u0005.\u0003.\u0004.\u0002 = new \u0005.\u0003.\u0004(numArray1);
        byte[] numArray2 = new byte[32];
        int num2 = 0;
        while (num2 < 32)
          numArray2[num2++] = (byte) 5;
        \u0005.\u0003.\u0004.\u0003 = new \u0005.\u0003.\u0004(numArray2);
      }

      public \u0004([In] byte[] obj0) => \u0001.\u0001(obj0, this);
    }

    internal sealed class \u0005
    {
      internal static readonly int[] \u0001 = new int[3]
      {
        3,
        3,
        11
      };
      internal static readonly int[] \u0002 = new int[3]
      {
        2,
        3,
        7
      };
      internal byte[] \u0003;
      internal byte[] \u0004;
      internal \u0005.\u0003.\u0004 \u0005;
      internal int \u0006;
      internal int \u0007;
      internal int \u0008;
      internal int \u000E;
      internal int \u000F;
      internal int \u0010;
      internal byte \u0011;
      internal int \u0012;
      internal static readonly int[] \u0013;

      static \u0005()
      {
        int[] numArray = new int[19];
        // ISSUE: field reference
        RuntimeFieldHandle fldHandle = __fieldref (\u0002.\u0002.\u0010);
        if (true)
          goto label_2;
label_1:
        \u0005.\u0003.\u0005.\u0013 = numArray;
        return;
label_2:
        RuntimeHelpers.InitializeArray((Array) numArray, fldHandle);
        goto label_1;
      }
    }

    internal sealed class \u0006
    {
      private static readonly int[] \u0001 = new int[19]
      {
        16,
        17,
        18,
        0,
        8,
        7,
        9,
        6,
        10,
        5,
        11,
        4,
        12,
        3,
        13,
        2,
        14,
        1,
        15
      };
      internal static readonly byte[] \u0002 = new byte[16]
      {
        (byte) 0,
        (byte) 8,
        (byte) 4,
        (byte) 12,
        (byte) 2,
        (byte) 10,
        (byte) 6,
        (byte) 14,
        (byte) 1,
        (byte) 9,
        (byte) 5,
        (byte) 13,
        (byte) 3,
        (byte) 11,
        (byte) 7,
        (byte) 15
      };
      private static readonly short[] \u0003 = new short[286];
      private static readonly byte[] \u0004 = new byte[286];
      private static readonly short[] \u0005;
      private static readonly byte[] \u0006;

      static \u0006()
      {
        if (true)
          goto label_13;
label_2:
        int index1;
        for (; index1 < 144; \u0005.\u0003.\u0006.\u0004[index1++] = (byte) 8)
          \u0005.\u0003.\u0006.\u0003[index1] = \u0001.\u0001(48 + index1 << 8);
        for (; index1 < 256; \u0005.\u0003.\u0006.\u0004[index1++] = (byte) 9)
          \u0005.\u0003.\u0006.\u0003[index1] = \u0001.\u0001(256 + index1 << 7);
        for (; index1 < 280; \u0005.\u0003.\u0006.\u0004[index1++] = (byte) 7)
          \u0005.\u0003.\u0006.\u0003[index1] = \u0001.\u0001(index1 - 256 << 9);
        for (; index1 < 286; \u0005.\u0003.\u0006.\u0004[index1++] = (byte) 8)
          \u0005.\u0003.\u0006.\u0003[index1] = \u0001.\u0001(index1 - 88 << 8);
        \u0005.\u0003.\u0006.\u0005 = new short[30];
        \u0005.\u0003.\u0006.\u0006 = new byte[30];
        for (int index2 = 0; index2 < 30; ++index2)
        {
          \u0005.\u0003.\u0006.\u0005[index2] = \u0001.\u0001(index2 << 11);
          \u0005.\u0003.\u0006.\u0006[index2] = (byte) 5;
        }
        return;
label_13:
        index1 = 0;
        goto label_2;
      }
    }

    internal sealed class \u0007 : MemoryStream
    {
      public \u0007([In] byte[] obj0)
        : base(obj0, false)
      {
      }
    }
  }
}
