432 lines
8.9 KiB
C#
432 lines
8.9 KiB
C#
using System;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Decompression.Zlib
|
|
{
|
|
// Token: 0x02001FAB RID: 8107
|
|
[Token(Token = "0x2001FAB")]
|
|
internal sealed class InflateCodes
|
|
{
|
|
// Token: 0x0600CD9B RID: 52635 RVA: 0x002F35B0 File Offset: 0x002F17B0
|
|
[Token(Token = "0x600CD9B")]
|
|
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
|
internal InflateCodes()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600CD9C RID: 52636 RVA: 0x002F35C4 File Offset: 0x002F17C4
|
|
[Token(Token = "0x600CD9C")]
|
|
[Address(RVA = "0x18E2030", Offset = "0x18E0E30", VA = "0x1818E2030")]
|
|
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: 0x0600CD9D RID: 52637 RVA: 0x002F360C File Offset: 0x002F180C
|
|
[Token(Token = "0x600CD9D")]
|
|
[Address(RVA = "0x1972090", Offset = "0x1970E90", VA = "0x181972090")]
|
|
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: 0x0600CD9E RID: 52638 RVA: 0x002F39E8 File Offset: 0x002F1BE8
|
|
[Token(Token = "0x600CD9E")]
|
|
[Address(RVA = "0x19714C0", Offset = "0x19702C0", VA = "0x1819714C0")]
|
|
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: 0x0400832E RID: 33582
|
|
[Token(Token = "0x400832E")]
|
|
private const int START = 0;
|
|
|
|
// Token: 0x0400832F RID: 33583
|
|
[Token(Token = "0x400832F")]
|
|
private const int LEN = 1;
|
|
|
|
// Token: 0x04008330 RID: 33584
|
|
[Token(Token = "0x4008330")]
|
|
private const int LENEXT = 2;
|
|
|
|
// Token: 0x04008331 RID: 33585
|
|
[Token(Token = "0x4008331")]
|
|
private const int DIST = 3;
|
|
|
|
// Token: 0x04008332 RID: 33586
|
|
[Token(Token = "0x4008332")]
|
|
private const int DISTEXT = 4;
|
|
|
|
// Token: 0x04008333 RID: 33587
|
|
[Token(Token = "0x4008333")]
|
|
private const int COPY = 5;
|
|
|
|
// Token: 0x04008334 RID: 33588
|
|
[Token(Token = "0x4008334")]
|
|
private const int LIT = 6;
|
|
|
|
// Token: 0x04008335 RID: 33589
|
|
[Token(Token = "0x4008335")]
|
|
private const int WASH = 7;
|
|
|
|
// Token: 0x04008336 RID: 33590
|
|
[Token(Token = "0x4008336")]
|
|
private const int END = 8;
|
|
|
|
// Token: 0x04008337 RID: 33591
|
|
[Token(Token = "0x4008337")]
|
|
private const int BADCODE = 9;
|
|
|
|
// Token: 0x04008338 RID: 33592
|
|
[FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4008338")]
|
|
internal int mode;
|
|
|
|
// Token: 0x04008339 RID: 33593
|
|
[FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x4008339")]
|
|
internal int len;
|
|
|
|
// Token: 0x0400833A RID: 33594
|
|
[FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x400833A")]
|
|
internal int[] tree;
|
|
|
|
// Token: 0x0400833B RID: 33595
|
|
[FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x400833B")]
|
|
internal int tree_index;
|
|
|
|
// Token: 0x0400833C RID: 33596
|
|
[FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x400833C")]
|
|
internal int need;
|
|
|
|
// Token: 0x0400833D RID: 33597
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x400833D")]
|
|
internal int lit;
|
|
|
|
// Token: 0x0400833E RID: 33598
|
|
[FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x400833E")]
|
|
internal int bitsToGet;
|
|
|
|
// Token: 0x0400833F RID: 33599
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x400833F")]
|
|
internal int dist;
|
|
|
|
// Token: 0x04008340 RID: 33600
|
|
[FieldOffset(Offset = "0x34")]
|
|
[Token(Token = "0x4008340")]
|
|
internal byte lbits;
|
|
|
|
// Token: 0x04008341 RID: 33601
|
|
[FieldOffset(Offset = "0x35")]
|
|
[Token(Token = "0x4008341")]
|
|
internal byte dbits;
|
|
|
|
// Token: 0x04008342 RID: 33602
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4008342")]
|
|
internal int[] ltree;
|
|
|
|
// Token: 0x04008343 RID: 33603
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4008343")]
|
|
internal int ltree_index;
|
|
|
|
// Token: 0x04008344 RID: 33604
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4008344")]
|
|
internal int[] dtree;
|
|
|
|
// Token: 0x04008345 RID: 33605
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4008345")]
|
|
internal int dtree_index;
|
|
}
|
|
}
|