434 lines
9.3 KiB
C#
434 lines
9.3 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Decompression.Zlib
|
|
{
|
|
// Token: 0x020019CE RID: 6606
|
|
[Token(Token = "0x20019CE")]
|
|
[StructLayout(3)]
|
|
internal sealed class InflateCodes
|
|
{
|
|
// Token: 0x0600B1C1 RID: 45505 RVA: 0x0029AF5C File Offset: 0x0029915C
|
|
[Token(Token = "0x600B1C1")]
|
|
[Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")]
|
|
internal InflateCodes()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600B1C2 RID: 45506 RVA: 0x0029AF70 File Offset: 0x00299170
|
|
[Token(Token = "0x600B1C2")]
|
|
[Address(RVA = "0xE302D0", Offset = "0xE2ECD0", VA = "0x180E302D0")]
|
|
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: 0x0600B1C3 RID: 45507 RVA: 0x0029AFB8 File Offset: 0x002991B8
|
|
[Token(Token = "0x600B1C3")]
|
|
[Address(RVA = "0x1F162E0", Offset = "0x1F14CE0", VA = "0x181F162E0")]
|
|
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: 0x0600B1C4 RID: 45508 RVA: 0x0029B394 File Offset: 0x00299594
|
|
[Token(Token = "0x600B1C4")]
|
|
[Address(RVA = "0x1F15710", Offset = "0x1F14110", VA = "0x181F15710")]
|
|
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: 0x040074EB RID: 29931
|
|
[Token(Token = "0x40074EB")]
|
|
private const int START = 0;
|
|
|
|
// Token: 0x040074EC RID: 29932
|
|
[Token(Token = "0x40074EC")]
|
|
private const int LEN = 1;
|
|
|
|
// Token: 0x040074ED RID: 29933
|
|
[Token(Token = "0x40074ED")]
|
|
private const int LENEXT = 2;
|
|
|
|
// Token: 0x040074EE RID: 29934
|
|
[Token(Token = "0x40074EE")]
|
|
private const int DIST = 3;
|
|
|
|
// Token: 0x040074EF RID: 29935
|
|
[Token(Token = "0x40074EF")]
|
|
private const int DISTEXT = 4;
|
|
|
|
// Token: 0x040074F0 RID: 29936
|
|
[Token(Token = "0x40074F0")]
|
|
private const int COPY = 5;
|
|
|
|
// Token: 0x040074F1 RID: 29937
|
|
[Token(Token = "0x40074F1")]
|
|
private const int LIT = 6;
|
|
|
|
// Token: 0x040074F2 RID: 29938
|
|
[Token(Token = "0x40074F2")]
|
|
private const int WASH = 7;
|
|
|
|
// Token: 0x040074F3 RID: 29939
|
|
[Token(Token = "0x40074F3")]
|
|
private const int END = 8;
|
|
|
|
// Token: 0x040074F4 RID: 29940
|
|
[Token(Token = "0x40074F4")]
|
|
private const int BADCODE = 9;
|
|
|
|
// Token: 0x040074F5 RID: 29941
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x40074F5")]
|
|
internal int mode;
|
|
|
|
// Token: 0x040074F6 RID: 29942
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x14")]
|
|
[Token(Token = "0x40074F6")]
|
|
internal int len;
|
|
|
|
// Token: 0x040074F7 RID: 29943
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x40074F7")]
|
|
internal int[] tree;
|
|
|
|
// Token: 0x040074F8 RID: 29944
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x40074F8")]
|
|
internal int tree_index;
|
|
|
|
// Token: 0x040074F9 RID: 29945
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x40074F9")]
|
|
internal int need;
|
|
|
|
// Token: 0x040074FA RID: 29946
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40074FA")]
|
|
internal int lit;
|
|
|
|
// Token: 0x040074FB RID: 29947
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x40074FB")]
|
|
internal int bitsToGet;
|
|
|
|
// Token: 0x040074FC RID: 29948
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40074FC")]
|
|
internal int dist;
|
|
|
|
// Token: 0x040074FD RID: 29949
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x34")]
|
|
[Token(Token = "0x40074FD")]
|
|
internal byte lbits;
|
|
|
|
// Token: 0x040074FE RID: 29950
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x35")]
|
|
[Token(Token = "0x40074FE")]
|
|
internal byte dbits;
|
|
|
|
// Token: 0x040074FF RID: 29951
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40074FF")]
|
|
internal int[] ltree;
|
|
|
|
// Token: 0x04007500 RID: 29952
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4007500")]
|
|
internal int ltree_index;
|
|
|
|
// Token: 0x04007501 RID: 29953
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4007501")]
|
|
internal int[] dtree;
|
|
|
|
// Token: 0x04007502 RID: 29954
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4007502")]
|
|
internal int dtree_index;
|
|
}
|
|
}
|