432 lines
8.9 KiB
C#
432 lines
8.9 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Decompression.Zlib
|
|
{
|
|
// Token: 0x0200208B RID: 8331
|
|
[Token(Token = "0x200208B")]
|
|
internal sealed class InflateCodes
|
|
{
|
|
// Token: 0x0600D169 RID: 53609 RVA: 0x002FBC20 File Offset: 0x002F9E20
|
|
[Token(Token = "0x600D169")]
|
|
[Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")]
|
|
internal InflateCodes()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600D16A RID: 53610 RVA: 0x002FBC34 File Offset: 0x002F9E34
|
|
[Token(Token = "0x600D16A")]
|
|
[Address(RVA = "0x4EBB60", Offset = "0x4EAB60", VA = "0x1804EBB60")]
|
|
internal void Init(int bl, int bd, int[] tl, int tl_index, int[] td, int td_index)
|
|
{
|
|
int num = 0;
|
|
this.ltree_index = 0;
|
|
this.dtree = 0;
|
|
this.dtree_index = 0;
|
|
this.mode = num;
|
|
this.lbits = (byte)bl;
|
|
this.dbits = (byte)bd;
|
|
this.ltree = tl;
|
|
this.tree = num;
|
|
}
|
|
|
|
// Token: 0x0600D16B RID: 53611 RVA: 0x002FBC7C File Offset: 0x002F9E7C
|
|
[Token(Token = "0x600D16B")]
|
|
[Address(RVA = "0x241A0C0", Offset = "0x24190C0", VA = "0x18241A0C0")]
|
|
internal int Process(InflateBlocks blocks, int r)
|
|
{
|
|
ZlibCodec codec = blocks._codec;
|
|
int writeAt = blocks.writeAt;
|
|
int num = blocks.readAt;
|
|
int bitb = blocks.bitb;
|
|
int nextIn = codec.NextIn;
|
|
int availableBytesIn = codec.AvailableBytesIn;
|
|
int bitk = blocks.bitk;
|
|
if (writeAt < num)
|
|
{
|
|
num -= writeAt;
|
|
}
|
|
int num2 = blocks.end;
|
|
num2 -= writeAt;
|
|
blocks.bitb = bitb;
|
|
blocks.bitk = bitk;
|
|
codec.AvailableBytesIn = availableBytesIn;
|
|
codec.NextIn = nextIn;
|
|
blocks.writeAt = writeAt;
|
|
int writeAt2 = blocks.writeAt;
|
|
int num3 = blocks.readAt;
|
|
int bitb2 = blocks.bitb;
|
|
int num4 = codec.NextIn;
|
|
int availableBytesIn2 = codec.AvailableBytesIn;
|
|
int num5 = blocks.bitk;
|
|
if (writeAt2 < num3)
|
|
{
|
|
num3 -= writeAt2;
|
|
}
|
|
int num6 = blocks.end;
|
|
num6 -= writeAt2;
|
|
int num7;
|
|
if (num7 != 0)
|
|
{
|
|
}
|
|
uint num8;
|
|
if (num5 < (int)num8)
|
|
{
|
|
if (availableBytesIn2 == 0)
|
|
{
|
|
goto IL_31B;
|
|
}
|
|
byte[] inputBuffer = codec.InputBuffer;
|
|
num4++;
|
|
num5 += 8;
|
|
}
|
|
uint num9;
|
|
int num10;
|
|
if (num5 < (int)num9)
|
|
{
|
|
if (availableBytesIn2 == 0)
|
|
{
|
|
goto IL_31B;
|
|
}
|
|
num10 = 0;
|
|
byte[] inputBuffer2 = codec.InputBuffer;
|
|
num4++;
|
|
num5 += 8;
|
|
}
|
|
num5 -= (int)num9;
|
|
if (num5 < (int)num9)
|
|
{
|
|
if (availableBytesIn2 == 0)
|
|
{
|
|
goto IL_349;
|
|
}
|
|
byte[] inputBuffer3 = codec.InputBuffer;
|
|
num4++;
|
|
num5 += 8;
|
|
}
|
|
num5 -= num10;
|
|
uint num11;
|
|
int num12;
|
|
if (num5 < (int)num11)
|
|
{
|
|
if (availableBytesIn2 == 0)
|
|
{
|
|
goto IL_31B;
|
|
}
|
|
num12 = 0;
|
|
byte[] inputBuffer4 = codec.InputBuffer;
|
|
num4++;
|
|
num5 += 8;
|
|
}
|
|
num5 -= (int)num11;
|
|
int num14;
|
|
int num15;
|
|
int num16;
|
|
if (num6 == 0)
|
|
{
|
|
int num13 = blocks.end;
|
|
if (writeAt2 == num13)
|
|
{
|
|
int readAt = blocks.readAt;
|
|
if (readAt != 0)
|
|
{
|
|
if (readAt > 0)
|
|
{
|
|
}
|
|
if (num13 != 0)
|
|
{
|
|
goto IL_203;
|
|
}
|
|
}
|
|
}
|
|
blocks.writeAt = writeAt2;
|
|
num14 = blocks.Flush(num12);
|
|
int writeAt3 = blocks.writeAt;
|
|
int end = blocks.end;
|
|
int readAt2 = blocks.readAt;
|
|
if (writeAt3 < readAt2)
|
|
{
|
|
num13 = readAt2;
|
|
num13 -= writeAt3;
|
|
}
|
|
num13 -= writeAt3;
|
|
if (writeAt3 == end && readAt2 != 0)
|
|
{
|
|
num15 = 0;
|
|
num16 = readAt2 - 1;
|
|
if (readAt2 <= 0)
|
|
{
|
|
}
|
|
}
|
|
if (num16 == 0)
|
|
{
|
|
goto IL_358;
|
|
}
|
|
}
|
|
IL_203:
|
|
byte[] window = blocks.window;
|
|
int num17 = writeAt2 + 1;
|
|
num15++;
|
|
int length = window.Length;
|
|
int end2 = blocks.end;
|
|
int i;
|
|
if (num16 == 0)
|
|
{
|
|
int end3 = blocks.end;
|
|
int num18;
|
|
if (num15 == end3)
|
|
{
|
|
int readAt3 = blocks.readAt;
|
|
if (readAt3 != 0)
|
|
{
|
|
num18 = 0;
|
|
int num19;
|
|
if (readAt3 > 0)
|
|
{
|
|
num19 = readAt3 - 1;
|
|
}
|
|
if (num19 != 0)
|
|
{
|
|
goto IL_2D0;
|
|
}
|
|
}
|
|
}
|
|
blocks.writeAt = num18;
|
|
int num20 = blocks.Flush(num14);
|
|
int readAt4 = blocks.readAt;
|
|
num14 = num20;
|
|
int writeAt4 = blocks.writeAt;
|
|
if (writeAt4 < readAt4)
|
|
{
|
|
int num19 = readAt4;
|
|
num19 -= writeAt4;
|
|
}
|
|
int num21 = blocks.end;
|
|
num21 -= writeAt4;
|
|
int end4 = blocks.end;
|
|
int num22;
|
|
if (writeAt4 == end4 && readAt4 != 0)
|
|
{
|
|
i = 0;
|
|
num22 = readAt4 - 1;
|
|
num22 = end4;
|
|
}
|
|
if (num22 == 0)
|
|
{
|
|
goto IL_36E;
|
|
}
|
|
}
|
|
IL_2D0:
|
|
byte[] window2 = blocks.window;
|
|
int num23 = 0;
|
|
i++;
|
|
while (i <= 9)
|
|
{
|
|
}
|
|
blocks.bitb = bitb2;
|
|
blocks.bitk = num5;
|
|
codec.AvailableBytesIn = availableBytesIn2;
|
|
int num24 = 0;
|
|
codec.NextIn = num4;
|
|
blocks.writeAt = i;
|
|
return blocks.Flush(-2);
|
|
IL_31B:
|
|
blocks.bitb = num24;
|
|
blocks.bitk = 0;
|
|
blocks.writeAt = 0;
|
|
blocks.bitb = 0;
|
|
blocks.bitk = 0;
|
|
int num25 = 0;
|
|
blocks.writeAt = 0;
|
|
IL_349:
|
|
blocks.bitb = num25;
|
|
blocks.bitk = 0;
|
|
IL_358:
|
|
blocks.bitb = bitb2;
|
|
blocks.bitk = 0;
|
|
blocks.writeAt = 0;
|
|
IL_36E:
|
|
blocks.bitb = bitb2;
|
|
blocks.bitk = 0;
|
|
blocks.writeAt = 0;
|
|
blocks.writeAt = 0;
|
|
int num26 = blocks.Flush(num23);
|
|
int writeAt5 = blocks.writeAt;
|
|
while (blocks.readAt != writeAt5)
|
|
{
|
|
}
|
|
blocks.bitb = bitb2;
|
|
blocks.bitk = 0;
|
|
int num27 = 0;
|
|
blocks.writeAt = writeAt5;
|
|
blocks.bitb = num27;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600D16C RID: 53612 RVA: 0x002FC058 File Offset: 0x002FA258
|
|
[Token(Token = "0x600D16C")]
|
|
[Address(RVA = "0x24194F0", Offset = "0x24184F0", VA = "0x1824194F0")]
|
|
internal int InflateFast(int bl, int bd, int[] tl, int tl_index, int[] td, int td_index, InflateBlocks s, ZlibCodec z)
|
|
{
|
|
int num6;
|
|
if (bl != 0)
|
|
{
|
|
int num = bd + 1;
|
|
if (bl == 16)
|
|
{
|
|
if (bl != 64)
|
|
{
|
|
goto IL_67;
|
|
}
|
|
while (bl != 0)
|
|
{
|
|
}
|
|
int num2 = bd + 1;
|
|
}
|
|
int num3 = bd + 1;
|
|
if (bl == 16 && bl != 64)
|
|
{
|
|
goto IL_73;
|
|
}
|
|
int num4 = bd - 1;
|
|
while (num4 != 0)
|
|
{
|
|
}
|
|
int num5 = 0;
|
|
num6 = 0;
|
|
if (num5 != 1)
|
|
{
|
|
num6 += 2;
|
|
num4 -= num6;
|
|
if (num4 > 0)
|
|
{
|
|
num6++;
|
|
while (num4 != 0)
|
|
{
|
|
}
|
|
}
|
|
}
|
|
Array.Copy(num6, num6, num6, 1, num4);
|
|
}
|
|
IL_67:
|
|
if (num6 == 32)
|
|
{
|
|
}
|
|
uint num7;
|
|
num7 -= tl;
|
|
IL_73:
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x040084E7 RID: 34023
|
|
[Token(Token = "0x40084E7")]
|
|
private const int START = 0;
|
|
|
|
// Token: 0x040084E8 RID: 34024
|
|
[Token(Token = "0x40084E8")]
|
|
private const int LEN = 1;
|
|
|
|
// Token: 0x040084E9 RID: 34025
|
|
[Token(Token = "0x40084E9")]
|
|
private const int LENEXT = 2;
|
|
|
|
// Token: 0x040084EA RID: 34026
|
|
[Token(Token = "0x40084EA")]
|
|
private const int DIST = 3;
|
|
|
|
// Token: 0x040084EB RID: 34027
|
|
[Token(Token = "0x40084EB")]
|
|
private const int DISTEXT = 4;
|
|
|
|
// Token: 0x040084EC RID: 34028
|
|
[Token(Token = "0x40084EC")]
|
|
private const int COPY = 5;
|
|
|
|
// Token: 0x040084ED RID: 34029
|
|
[Token(Token = "0x40084ED")]
|
|
private const int LIT = 6;
|
|
|
|
// Token: 0x040084EE RID: 34030
|
|
[Token(Token = "0x40084EE")]
|
|
private const int WASH = 7;
|
|
|
|
// Token: 0x040084EF RID: 34031
|
|
[Token(Token = "0x40084EF")]
|
|
private const int END = 8;
|
|
|
|
// Token: 0x040084F0 RID: 34032
|
|
[Token(Token = "0x40084F0")]
|
|
private const int BADCODE = 9;
|
|
|
|
// Token: 0x040084F1 RID: 34033
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40084F1")]
|
|
internal int mode;
|
|
|
|
// Token: 0x040084F2 RID: 34034
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x40084F2")]
|
|
internal int len;
|
|
|
|
// Token: 0x040084F3 RID: 34035
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40084F3")]
|
|
internal int[] tree;
|
|
|
|
// Token: 0x040084F4 RID: 34036
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40084F4")]
|
|
internal int tree_index;
|
|
|
|
// Token: 0x040084F5 RID: 34037
|
|
[FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x40084F5")]
|
|
internal int need;
|
|
|
|
// Token: 0x040084F6 RID: 34038
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40084F6")]
|
|
internal int lit;
|
|
|
|
// Token: 0x040084F7 RID: 34039
|
|
[FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x40084F7")]
|
|
internal int bitsToGet;
|
|
|
|
// Token: 0x040084F8 RID: 34040
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40084F8")]
|
|
internal int dist;
|
|
|
|
// Token: 0x040084F9 RID: 34041
|
|
[FieldOffset(Offset = "0x34")]
|
|
[Token(Token = "0x40084F9")]
|
|
internal byte lbits;
|
|
|
|
// Token: 0x040084FA RID: 34042
|
|
[FieldOffset(Offset = "0x35")]
|
|
[Token(Token = "0x40084FA")]
|
|
internal byte dbits;
|
|
|
|
// Token: 0x040084FB RID: 34043
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40084FB")]
|
|
internal int[] ltree;
|
|
|
|
// Token: 0x040084FC RID: 34044
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40084FC")]
|
|
internal int ltree_index;
|
|
|
|
// Token: 0x040084FD RID: 34045
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x40084FD")]
|
|
internal int[] dtree;
|
|
|
|
// Token: 0x040084FE RID: 34046
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40084FE")]
|
|
internal int dtree_index;
|
|
}
|
|
}
|