// 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;
using \u000E\u0002;
using \u0017\u0002;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

namespace \u000E\u0002
{
  internal sealed class \u0008\u0002 : Stream
  {
    protected \u0013 \u0001;
    protected \u0016\u0002 \u0002;
    private Stream \u0003;
    private bool \u0004;
    private bool \u0005 = true;

    public \u0008\u0002([In] Stream obj0, [In] \u0013 obj1)
      : this(obj0, obj1, 4096)
    {
    }

    public \u0008\u0002([In] Stream obj0, [In] \u0013 obj1, [In] int obj2)
    {
      if (obj0 == null)
        throw new ArgumentNullException(\u0008.\u000E\u0003(1426));
      if (obj1 == null)
        throw new ArgumentNullException(\u0008.\u000E\u0003(1447));
      if (obj2 <= 0)
        throw new ArgumentOutOfRangeException(\u0008.\u000E\u0003(1460));
      this.\u0003 = obj0;
      this.\u0001 = obj1;
      this.\u0002 = new \u0016\u0002(obj0, obj2);
    }

    protected void \u009C\u0003()
    {
      if (this.\u0002.\u0086\u0004() <= 0)
        goto label_3;
label_2:
      this.\u0002.\u0087\u0004(this.\u0001);
      return;
label_3:
      this.\u0002.\u009C\u0003();
      if (this.\u0002.\u0086\u0004() <= 0)
        throw new SharpZipBaseException(\u0008.\u000E\u0003(1477));
      goto label_2;
    }

    [SpecialName]
    public override bool get_CanRead() => \u0007\u0003.\u007E\u009E\u0004((object) this.\u0003);

    [SpecialName]
    public override bool get_CanSeek() => false;

    [SpecialName]
    public override bool get_CanWrite() => false;

    [SpecialName]
    public override long get_Length() => (long) this.\u0002.\u0084\u0004();

    [SpecialName]
    public override long get_Position() => \u007F\u0004.\u007E\u0004\u0005((object) this.\u0003);

    [SpecialName]
    public override void set_Position([In] long obj0) => throw new NotSupportedException(\u0008.\u000E\u0003(1498));

    public override void Flush() => \u0093\u0003.\u007E\u0007\u0005((object) this.\u0003);

    public override long Seek([In] long obj0, [In] SeekOrigin obj1) => throw new NotSupportedException(\u0008.\u000E\u0003(1555));

    public override void SetLength([In] long obj0) => throw new NotSupportedException(\u0008.\u000E\u0003(1580));

    public override void Write([In] byte[] obj0, [In] int obj1, [In] int obj2) => throw new NotSupportedException(\u0008.\u000E\u0003(1641));

    public override void WriteByte([In] byte obj0) => throw new NotSupportedException(\u0008.\u000E\u0003(1694));

    public override IAsyncResult BeginWrite(
      [In] byte[] obj0,
      [In] int obj1,
      [In] int obj2,
      [In] AsyncCallback obj3,
      [In] object obj4)
    {
      throw new NotSupportedException(\u0008.\u000E\u0003(1755));
    }

    public override void Close()
    {
      if (this.\u0004)
        return;
      this.\u0004 = true;
      if (!this.\u0005)
        return;
      \u0093\u0003.\u007E\u0006\u0005((object) this.\u0003);
    }

    public override int Read([In] byte[] obj0, [In] int obj1, [In] int obj2)
    {
      if (this.\u0001.\u008B\u0004())
        throw new SharpZipBaseException(\u0008.\u000E\u0003(1816));
      int num1 = obj2;
      int num2;
      do
      {
        num2 = this.\u0001.\u0012\u0003(obj0, obj1, num1);
        obj1 += num2;
        num1 -= num2;
        if (num1 != 0 && !this.\u0001.\u008C\u0004())
        {
          if (this.\u0001.\u0018\u0003())
            this.\u009C\u0003();
        }
        else
          goto label_8;
      }
      while (num2 != 0);
      throw new ZipException(\u0008.\u000E\u0003(1841));
label_8:
      return obj2 - num1;
    }
  }
}
