Files
Jan2021-Cpp2Il-Dump/Assembly-CSharp/BestHTTP/Decompression/Zlib/InflateCodes.cs
T
2026-04-08 23:40:05 +02:00

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;
}
}