// Decompiled with JetBrains decompiler
// Type: .
// Assembly: WindowsBC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9909ee17073e3364
// MVID: 658BFC85-36E1-493D-98E6-AE9127D73D60
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare.00004-msil\Trojan-Downloader.MSIL.BitCoinMiner.c-64f742a0b28b2c3d2a62ef6607fcfd5fa55b793a1aff3a6c11e014e3b119149e.exe

using \u000E\u0002;
using \u0017\u0002;
using ICSharpCode.SharpZipLib;
using System;
using System.Runtime.InteropServices;

namespace \u0017\u0002
{
  internal sealed class \u0017
  {
    private static readonly int[] \u0001 = new int[3]
    {
      3,
      3,
      11
    };
    private static readonly int[] \u0002 = new int[3]
    {
      2,
      3,
      7
    };
    private static readonly int[] \u0003 = new int[19]
    {
      16,
      17,
      18,
      0,
      8,
      7,
      9,
      6,
      10,
      5,
      11,
      4,
      12,
      3,
      13,
      2,
      14,
      1,
      15
    };
    private byte[] \u0004;
    private byte[] \u0005;
    private \u0016 \u0006;
    private int \u0007;
    private int \u0008;
    private int \u000E;
    private int \u000F;
    private int \u0010;
    private int \u0011;
    private byte \u0012;
    private int \u0013;

    public bool \u0011\u0003([In] \u0014 obj0)
    {
      while (true)
      {
        switch (this.\u0007)
        {
          case 0:
            this.\u0008 = obj0.\u0013\u0003(5);
            if (this.\u0008 >= 0)
            {
              this.\u0008 += 257;
              obj0.\u0014\u0003(5);
              this.\u0007 = 1;
              goto case 1;
            }
            else
              goto label_2;
          case 1:
            this.\u000E = obj0.\u0013\u0003(5);
            if (this.\u000E >= 0)
            {
              ++this.\u000E;
              obj0.\u0014\u0003(5);
              this.\u0010 = this.\u0008 + this.\u000E;
              this.\u0005 = new byte[this.\u0010];
              this.\u0007 = 2;
              goto case 2;
            }
            else
              goto label_5;
          case 2:
            this.\u000F = obj0.\u0013\u0003(4);
            if (this.\u000F >= 0)
            {
              this.\u000F += 4;
              obj0.\u0014\u0003(4);
              this.\u0004 = new byte[19];
              this.\u0013 = 0;
              this.\u0007 = 3;
              goto case 3;
            }
            else
              goto label_8;
          case 3:
            for (; this.\u0013 < this.\u000F; ++this.\u0013)
            {
              int num = obj0.\u0013\u0003(3);
              if (num < 0)
                return false;
              obj0.\u0014\u0003(3);
              this.\u0004[\u0017.\u0003[this.\u0013]] = (byte) num;
            }
            this.\u0006 = new \u0016(this.\u0004);
            this.\u0004 = (byte[]) null;
            this.\u0013 = 0;
            this.\u0007 = 4;
            goto case 4;
          case 4:
            int num1;
            while (((num1 = this.\u0006.\u0081\u0003(obj0)) & -16) == 0)
            {
              this.\u0005[this.\u0013++] = this.\u0012 = (byte) num1;
              if (this.\u0013 == this.\u0010)
                return true;
            }
            if (num1 >= 0)
            {
              if (num1 >= 17)
                this.\u0012 = (byte) 0;
              else if (this.\u0013 == 0)
                goto label_23;
              this.\u0011 = num1 - 16;
              this.\u0007 = 5;
              goto case 5;
            }
            else
              goto label_19;
          case 5:
            int num2 = \u0017.\u0002[this.\u0011];
            int num3 = obj0.\u0013\u0003(num2);
            if (num3 >= 0)
            {
              obj0.\u0014\u0003(num2);
              int num4 = num3 + \u0017.\u0001[this.\u0011];
              if (this.\u0013 + num4 <= this.\u0010)
              {
                while (num4-- > 0)
                  this.\u0005[this.\u0013++] = this.\u0012;
                if (this.\u0013 != this.\u0010)
                {
                  this.\u0007 = 4;
                  continue;
                }
                goto label_32;
              }
              else
                goto label_28;
            }
            else
              goto label_26;
          default:
            continue;
        }
      }
label_2:
      return false;
label_5:
      return false;
label_8:
      return false;
label_19:
      return false;
label_23:
      throw new SharpZipBaseException();
label_26:
      return false;
label_28:
      throw new SharpZipBaseException();
label_32:
      return true;
    }

    public \u0016 \u0082\u0003()
    {
      byte[] numArray = new byte[this.\u0008];
      \u008F\u0003.\u0098((Array) this.\u0005, 0, (Array) numArray, 0, this.\u0008);
      return new \u0016(numArray);
    }

    public \u0016 \u0083\u0003()
    {
      byte[] numArray = new byte[this.\u000E];
      \u008F\u0003.\u0098((Array) this.\u0005, this.\u0008, (Array) numArray, 0, this.\u000E);
      return new \u0016(numArray);
    }
  }
}
