338 lines
14 KiB
C#
338 lines
14 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.Decompression.Zlib
|
|
{
|
|
// Token: 0x020019CF RID: 6607
|
|
[Token(Token = "0x20019CF")]
|
|
[StructLayout(3)]
|
|
internal sealed class InflateManager
|
|
{
|
|
// Token: 0x17001CB6 RID: 7350
|
|
// (get) Token: 0x0600B1C5 RID: 45509 RVA: 0x0029B41C File Offset: 0x0029961C
|
|
// (set) Token: 0x0600B1C6 RID: 45510 RVA: 0x0029B430 File Offset: 0x00299630
|
|
[Token(Token = "0x17001CB6")]
|
|
internal bool HandleRfc1950HeaderBytes
|
|
{
|
|
[Token(Token = "0x600B1C5")]
|
|
[Address(RVA = "0x4CB2D0", Offset = "0x4C9CD0", VA = "0x1804CB2D0")]
|
|
get
|
|
{
|
|
return this._handleRfc1950HeaderBytes;
|
|
}
|
|
[Token(Token = "0x600B1C6")]
|
|
[Address(RVA = "0x4CB340", Offset = "0x4C9D40", VA = "0x1804CB340")]
|
|
set
|
|
{
|
|
this._handleRfc1950HeaderBytes = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600B1C7 RID: 45511 RVA: 0x0029B444 File Offset: 0x00299644
|
|
[Token(Token = "0x600B1C7")]
|
|
[Address(RVA = "0x639FF0", Offset = "0x6389F0", VA = "0x180639FF0")]
|
|
public InflateManager()
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600B1C8 RID: 45512 RVA: 0x0029B460 File Offset: 0x00299660
|
|
[Token(Token = "0x600B1C8")]
|
|
[Address(RVA = "0xE31C30", Offset = "0xE30630", VA = "0x180E31C30")]
|
|
public InflateManager(bool expectRfc1950HeaderBytes)
|
|
{
|
|
this._handleRfc1950HeaderBytes = expectRfc1950HeaderBytes;
|
|
}
|
|
|
|
// Token: 0x0600B1C9 RID: 45513 RVA: 0x0029B484 File Offset: 0x00299684
|
|
[Token(Token = "0x600B1C9")]
|
|
[Address(RVA = "0x1E66060", Offset = "0x1E64A60", VA = "0x181E66060")]
|
|
internal int Reset()
|
|
{
|
|
ZlibCodec codec = this._codec;
|
|
int num = 0;
|
|
codec.TotalBytesOut = (long)num;
|
|
codec.TotalBytesIn = (long)num;
|
|
this._codec.Message = num;
|
|
this.mode = (InflateManager.InflateManagerMode)((uint)7);
|
|
uint num2 = this.blocks.Reset();
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x0600B1CA RID: 45514 RVA: 0x0029B4D0 File Offset: 0x002996D0
|
|
[Token(Token = "0x600B1CA")]
|
|
[Address(RVA = "0x1E655C0", Offset = "0x1E63FC0", VA = "0x181E655C0")]
|
|
internal int End()
|
|
{
|
|
InflateBlocks inflateBlocks = this.blocks;
|
|
if (inflateBlocks != 0)
|
|
{
|
|
inflateBlocks.Free();
|
|
}
|
|
int num = 0;
|
|
this.blocks = num;
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x0600B1CB RID: 45515 RVA: 0x0029B4F8 File Offset: 0x002996F8
|
|
[Token(Token = "0x600B1CB")]
|
|
[Address(RVA = "0x1E65F20", Offset = "0x1E64920", VA = "0x181E65F20")]
|
|
internal int Initialize(ZlibCodec codec, int w)
|
|
{
|
|
this._codec = codec;
|
|
int num = 0;
|
|
codec.Message = num;
|
|
this.blocks = num;
|
|
bool handleRfc1950HeaderBytes = this._handleRfc1950HeaderBytes;
|
|
this.wbits = w;
|
|
InflateBlocks inflateBlocks = new InflateBlocks(codec, num, 1);
|
|
this.blocks = inflateBlocks;
|
|
ZlibCodec codec2 = this._codec;
|
|
codec2.TotalBytesOut = (long)num;
|
|
codec2.TotalBytesIn = (long)num;
|
|
this._codec.Message = num;
|
|
this.mode = (InflateManager.InflateManagerMode)((uint)7);
|
|
uint num2 = this.blocks.Reset();
|
|
return 0;
|
|
}
|
|
|
|
// Token: 0x0600B1CC RID: 45516 RVA: 0x0029B58C File Offset: 0x0029978C
|
|
[Token(Token = "0x600B1CC")]
|
|
[Address(RVA = "0x1E655F0", Offset = "0x1E63FF0", VA = "0x181E655F0")]
|
|
internal int Inflate(FlushType flush)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600B1CC)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.Decompression.Zlib.InflateManager::Inflate(BestHTTP.Decompression.Zlib.FlushType)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_5BD:
|
|
stloc:ZlibException(var_104_5C7, newobj:ZlibException(ZlibException::.ctor, ldstr:string("Stream error.")))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x0600B1CD RID: 45517 RVA: 0x0029BB64 File Offset: 0x00299D64
|
|
[Token(Token = "0x600B1CD")]
|
|
[Address(RVA = "0x1E660B0", Offset = "0x1E64AB0", VA = "0x181E660B0")]
|
|
internal int SetDictionary(byte[] dictionary)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600B1CD)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.Decompression.Zlib.InflateManager::SetDictionary(System.Byte[])
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_80:
|
|
stloc:ZlibException(var_13_8A, newobj:ZlibException(ZlibException::.ctor, ldstr:string("Stream error.")))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x0600B1CE RID: 45518 RVA: 0x0029BBFC File Offset: 0x00299DFC
|
|
[Token(Token = "0x600B1CE")]
|
|
[Address(RVA = "0x1E66250", Offset = "0x1E64C50", VA = "0x181E66250")]
|
|
internal int Sync()
|
|
{
|
|
int num = 0;
|
|
if (this.mode != InflateManager.InflateManagerMode.BAD)
|
|
{
|
|
this.mode = (InflateManager.InflateManagerMode)((ulong)13L);
|
|
this.marker = num;
|
|
}
|
|
ZlibCodec codec = this._codec;
|
|
int availableBytesIn = codec.AvailableBytesIn;
|
|
if (availableBytesIn != 0)
|
|
{
|
|
int num2 = codec.NextIn;
|
|
int num3 = this.marker;
|
|
if (num3 < 4)
|
|
{
|
|
byte b = this._codec.InputBuffer[num2];
|
|
byte[] array = InflateManager.mark;
|
|
byte[] inputBuffer = this._codec.InputBuffer;
|
|
if ("{il2cpp array field local11->}" == num)
|
|
{
|
|
uint num4;
|
|
num4 -= (uint)num3;
|
|
}
|
|
num++;
|
|
num2++;
|
|
while ("{il2cpp array field local11->}" != num)
|
|
{
|
|
}
|
|
}
|
|
ZlibCodec codec2 = this._codec;
|
|
this._codec.NextIn = num2;
|
|
this._codec.AvailableBytesIn = availableBytesIn;
|
|
this.marker = num;
|
|
if (num == 4)
|
|
{
|
|
ZlibCodec codec3 = this._codec;
|
|
long totalBytesIn = codec3.TotalBytesIn;
|
|
long totalBytesOut = codec3.TotalBytesOut;
|
|
codec3.TotalBytesOut = (long)num;
|
|
codec3.TotalBytesIn = (long)num;
|
|
this._codec.Message = num;
|
|
uint num5;
|
|
this.mode = (InflateManager.InflateManagerMode)num5;
|
|
uint num6 = this.blocks.Reset();
|
|
this._codec.TotalBytesIn = totalBytesIn;
|
|
this._codec.TotalBytesOut = totalBytesOut;
|
|
int num7 = 0;
|
|
this.mode = (InflateManager.InflateManagerMode)num5;
|
|
return num7;
|
|
}
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600B1CF RID: 45519 RVA: 0x0029BD38 File Offset: 0x00299F38
|
|
[Token(Token = "0x600B1CF")]
|
|
[Address(RVA = "0x1E66230", Offset = "0x1E64C30", VA = "0x181E66230")]
|
|
internal int SyncPoint(ZlibCodec z)
|
|
{
|
|
return this.blocks.SyncPoint();
|
|
}
|
|
|
|
// Token: 0x0600B1D0 RID: 45520 RVA: 0x0029BD58 File Offset: 0x00299F58
|
|
// Note: this type is marked as 'beforefieldinit'.
|
|
[Token(Token = "0x600B1D0")]
|
|
[Address(RVA = "0x1E664C0", Offset = "0x1E64EC0", VA = "0x181E664C0")]
|
|
static InflateManager()
|
|
{
|
|
byte[] array = new byte[4];
|
|
array[0] = (byte)((ulong)255L);
|
|
array[0] = (byte)((ulong)255L);
|
|
InflateManager.mark = array;
|
|
}
|
|
|
|
// Token: 0x04007503 RID: 29955
|
|
[Token(Token = "0x4007503")]
|
|
private const int PRESET_DICT = 32;
|
|
|
|
// Token: 0x04007504 RID: 29956
|
|
[Token(Token = "0x4007504")]
|
|
private const int Z_DEFLATED = 8;
|
|
|
|
// Token: 0x04007505 RID: 29957
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4007505")]
|
|
private InflateManager.InflateManagerMode mode;
|
|
|
|
// Token: 0x04007506 RID: 29958
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4007506")]
|
|
internal ZlibCodec _codec;
|
|
|
|
// Token: 0x04007507 RID: 29959
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4007507")]
|
|
internal int method;
|
|
|
|
// Token: 0x04007508 RID: 29960
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x4007508")]
|
|
internal uint computedCheck;
|
|
|
|
// Token: 0x04007509 RID: 29961
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4007509")]
|
|
internal uint expectedCheck;
|
|
|
|
// Token: 0x0400750A RID: 29962
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x2C")]
|
|
[Token(Token = "0x400750A")]
|
|
internal int marker;
|
|
|
|
// Token: 0x0400750B RID: 29963
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x400750B")]
|
|
private bool _handleRfc1950HeaderBytes = true;
|
|
|
|
// Token: 0x0400750C RID: 29964
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x34")]
|
|
[Token(Token = "0x400750C")]
|
|
internal int wbits;
|
|
|
|
// Token: 0x0400750D RID: 29965
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x400750D")]
|
|
internal InflateBlocks blocks;
|
|
|
|
// Token: 0x0400750E RID: 29966
|
|
[Token(Token = "0x400750E")]
|
|
private static readonly byte[] mark;
|
|
|
|
// Token: 0x020019D0 RID: 6608
|
|
[Token(Token = "0x20019D0")]
|
|
private enum InflateManagerMode
|
|
{
|
|
// Token: 0x04007510 RID: 29968
|
|
[Token(Token = "0x4007510")]
|
|
METHOD,
|
|
// Token: 0x04007511 RID: 29969
|
|
[Token(Token = "0x4007511")]
|
|
FLAG,
|
|
// Token: 0x04007512 RID: 29970
|
|
[Token(Token = "0x4007512")]
|
|
DICT4,
|
|
// Token: 0x04007513 RID: 29971
|
|
[Token(Token = "0x4007513")]
|
|
DICT3,
|
|
// Token: 0x04007514 RID: 29972
|
|
[Token(Token = "0x4007514")]
|
|
DICT2,
|
|
// Token: 0x04007515 RID: 29973
|
|
[Token(Token = "0x4007515")]
|
|
DICT1,
|
|
// Token: 0x04007516 RID: 29974
|
|
[Token(Token = "0x4007516")]
|
|
DICT0,
|
|
// Token: 0x04007517 RID: 29975
|
|
[Token(Token = "0x4007517")]
|
|
BLOCKS,
|
|
// Token: 0x04007518 RID: 29976
|
|
[Token(Token = "0x4007518")]
|
|
CHECK4,
|
|
// Token: 0x04007519 RID: 29977
|
|
[Token(Token = "0x4007519")]
|
|
CHECK3,
|
|
// Token: 0x0400751A RID: 29978
|
|
[Token(Token = "0x400751A")]
|
|
CHECK2,
|
|
// Token: 0x0400751B RID: 29979
|
|
[Token(Token = "0x400751B")]
|
|
CHECK1,
|
|
// Token: 0x0400751C RID: 29980
|
|
[Token(Token = "0x400751C")]
|
|
DONE,
|
|
// Token: 0x0400751D RID: 29981
|
|
[Token(Token = "0x400751D")]
|
|
BAD
|
|
}
|
|
}
|
|
}
|