using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading; using BestHTTP.Caching; using BestHTTP.Cookies; using BestHTTP.Decompression.Zlib; using BestHTTP.Extensions; using BestHTTP.Logger; using Cpp2IlInjected; using UnityEngine; namespace BestHTTP { // Token: 0x020018A6 RID: 6310 [Token(Token = "0x20018A6")] public class HTTPResponse : IDisposable { // Token: 0x17001793 RID: 6035 // (get) Token: 0x06009446 RID: 37958 RVA: 0x001E6B14 File Offset: 0x001E4D14 // (set) Token: 0x06009447 RID: 37959 RVA: 0x001E6B28 File Offset: 0x001E4D28 [Token(Token = "0x17001793")] public int VersionMajor { [Token(Token = "0x6009446")] [Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560")] get; [Token(Token = "0x6009447")] [Address(RVA = "0x536480", Offset = "0x535280", VA = "0x180536480")] protected set; } // Token: 0x17001794 RID: 6036 // (get) Token: 0x06009448 RID: 37960 RVA: 0x001E6B3C File Offset: 0x001E4D3C // (set) Token: 0x06009449 RID: 37961 RVA: 0x001E6B50 File Offset: 0x001E4D50 [Token(Token = "0x17001794")] public int VersionMinor { [Token(Token = "0x6009448")] [Address(RVA = "0x495080", Offset = "0x493E80", VA = "0x180495080")] get; [Token(Token = "0x6009449")] [Address(RVA = "0x52EC20", Offset = "0x52DA20", VA = "0x18052EC20")] protected set; } // Token: 0x17001795 RID: 6037 // (get) Token: 0x0600944A RID: 37962 RVA: 0x001E6B64 File Offset: 0x001E4D64 // (set) Token: 0x0600944B RID: 37963 RVA: 0x001E6B78 File Offset: 0x001E4D78 [Token(Token = "0x17001795")] public int StatusCode { [Token(Token = "0x600944A")] [Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720")] get; [Token(Token = "0x600944B")] [Address(RVA = "0x41F740", Offset = "0x41E540", VA = "0x18041F740")] protected set; } // Token: 0x17001796 RID: 6038 // (get) Token: 0x0600944C RID: 37964 RVA: 0x001E6B8C File Offset: 0x001E4D8C [Token(Token = "0x17001796")] public bool IsSuccess { [Token(Token = "0x600944C")] [Address(RVA = "0x1727BB0", Offset = "0x17269B0", VA = "0x181727BB0")] get { int num = this.k__BackingField; return true; } } // Token: 0x17001797 RID: 6039 // (get) Token: 0x0600944D RID: 37965 RVA: 0x001E6BAC File Offset: 0x001E4DAC // (set) Token: 0x0600944E RID: 37966 RVA: 0x001E6BC0 File Offset: 0x001E4DC0 [Token(Token = "0x17001797")] public string Message { [Token(Token = "0x600944D")] [Address(RVA = "0x3F6400", Offset = "0x3F5200", VA = "0x1803F6400")] get; [Token(Token = "0x600944E")] [Address(RVA = "0x460F90", Offset = "0x45FD90", VA = "0x180460F90")] protected set; } // Token: 0x17001798 RID: 6040 // (get) Token: 0x0600944F RID: 37967 RVA: 0x001E6BD4 File Offset: 0x001E4DD4 // (set) Token: 0x06009450 RID: 37968 RVA: 0x001E6BE8 File Offset: 0x001E4DE8 [Token(Token = "0x17001798")] public bool IsStreamed { [Token(Token = "0x600944F")] [Address(RVA = "0x494270", Offset = "0x493070", VA = "0x180494270")] get; [Token(Token = "0x6009450")] [Address(RVA = "0x494500", Offset = "0x493300", VA = "0x180494500")] protected set; } // Token: 0x17001799 RID: 6041 // (get) Token: 0x06009451 RID: 37969 RVA: 0x001E6BFC File Offset: 0x001E4DFC // (set) Token: 0x06009452 RID: 37970 RVA: 0x001E6C10 File Offset: 0x001E4E10 [Token(Token = "0x17001799")] public bool IsStreamingFinished { [Token(Token = "0x6009451")] [Address(RVA = "0x494260", Offset = "0x493060", VA = "0x180494260")] get; [Token(Token = "0x6009452")] [Address(RVA = "0x4944F0", Offset = "0x4932F0", VA = "0x1804944F0")] internal set; } // Token: 0x1700179A RID: 6042 // (get) Token: 0x06009453 RID: 37971 RVA: 0x001E6C24 File Offset: 0x001E4E24 // (set) Token: 0x06009454 RID: 37972 RVA: 0x001E6C38 File Offset: 0x001E4E38 [Token(Token = "0x1700179A")] public bool IsFromCache { [Token(Token = "0x6009453")] [Address(RVA = "0x494240", Offset = "0x493040", VA = "0x180494240")] get; [Token(Token = "0x6009454")] [Address(RVA = "0x6CEB60", Offset = "0x6CD960", VA = "0x1806CEB60")] internal set; } // Token: 0x1700179B RID: 6043 // (get) Token: 0x06009455 RID: 37973 RVA: 0x001E6C4C File Offset: 0x001E4E4C // (set) Token: 0x06009456 RID: 37974 RVA: 0x001E6C60 File Offset: 0x001E4E60 [Token(Token = "0x1700179B")] public HTTPCacheFileInfo CacheFileInfo { [Token(Token = "0x6009455")] [Address(RVA = "0x3FA180", Offset = "0x3F8F80", VA = "0x1803FA180")] get; [Token(Token = "0x6009456")] [Address(RVA = "0x4437E0", Offset = "0x4425E0", VA = "0x1804437E0")] internal set; } // Token: 0x1700179C RID: 6044 // (get) Token: 0x06009457 RID: 37975 RVA: 0x001E6C74 File Offset: 0x001E4E74 // (set) Token: 0x06009458 RID: 37976 RVA: 0x001E6C88 File Offset: 0x001E4E88 [Token(Token = "0x1700179C")] public bool IsCacheOnly { [Token(Token = "0x6009457")] [Address(RVA = "0x43A970", Offset = "0x439770", VA = "0x18043A970")] get; [Token(Token = "0x6009458")] [Address(RVA = "0x43ABB0", Offset = "0x4399B0", VA = "0x18043ABB0")] private set; } // Token: 0x1700179D RID: 6045 // (get) Token: 0x06009459 RID: 37977 RVA: 0x001E6C9C File Offset: 0x001E4E9C // (set) Token: 0x0600945A RID: 37978 RVA: 0x001E6CB0 File Offset: 0x001E4EB0 [Token(Token = "0x1700179D")] public Dictionary> Headers { [Token(Token = "0x6009459")] [Address(RVA = "0x408890", Offset = "0x407690", VA = "0x180408890")] get; [Token(Token = "0x600945A")] [Address(RVA = "0x403B30", Offset = "0x402930", VA = "0x180403B30")] protected set; } // Token: 0x1700179E RID: 6046 // (get) Token: 0x0600945B RID: 37979 RVA: 0x001E6CC4 File Offset: 0x001E4EC4 // (set) Token: 0x0600945C RID: 37980 RVA: 0x001E6CD8 File Offset: 0x001E4ED8 [Token(Token = "0x1700179E")] public byte[] Data { [Token(Token = "0x600945B")] [Address(RVA = "0x3FA170", Offset = "0x3F8F70", VA = "0x1803FA170")] get; [Token(Token = "0x600945C")] [Address(RVA = "0x46AA50", Offset = "0x469850", VA = "0x18046AA50")] internal set; } // Token: 0x1700179F RID: 6047 // (get) Token: 0x0600945D RID: 37981 RVA: 0x001E6CEC File Offset: 0x001E4EEC // (set) Token: 0x0600945E RID: 37982 RVA: 0x001E6D00 File Offset: 0x001E4F00 [Token(Token = "0x1700179F")] public bool IsUpgraded { [Token(Token = "0x600945D")] [Address(RVA = "0x7722A0", Offset = "0x7710A0", VA = "0x1807722A0")] get; [Token(Token = "0x600945E")] [Address(RVA = "0x781F80", Offset = "0x780D80", VA = "0x180781F80")] protected set; } // Token: 0x170017A0 RID: 6048 // (get) Token: 0x0600945F RID: 37983 RVA: 0x001E6D14 File Offset: 0x001E4F14 // (set) Token: 0x06009460 RID: 37984 RVA: 0x001E6D28 File Offset: 0x001E4F28 [Token(Token = "0x170017A0")] public List Cookies { [Token(Token = "0x600945F")] [Address(RVA = "0x423D40", Offset = "0x422B40", VA = "0x180423D40")] get; [Token(Token = "0x6009460")] [Address(RVA = "0x466B90", Offset = "0x465990", VA = "0x180466B90")] internal set; } // Token: 0x170017A1 RID: 6049 // (get) Token: 0x06009461 RID: 37985 RVA: 0x001E6D3C File Offset: 0x001E4F3C [Token(Token = "0x170017A1")] public string DataAsText { [Token(Token = "0x6009461")] [Address(RVA = "0x1727A40", Offset = "0x1726840", VA = "0x181727A40")] get { if (this.k__BackingField == (ulong)0L) { return string.Empty; } if (string.IsNullOrEmpty(this.dataAsText)) { Encoding utf = Encoding.UTF8; byte[] array = this.k__BackingField; string @string = utf.GetString(array); this.dataAsText = @string; return @string; } return this.dataAsText; } } // Token: 0x170017A2 RID: 6050 // (get) Token: 0x06009462 RID: 37986 RVA: 0x001E6D94 File Offset: 0x001E4F94 [Token(Token = "0x170017A2")] public Texture2D DataAsTexture2D { [Token(Token = "0x6009462")] [Address(RVA = "0x1727AE0", Offset = "0x17268E0", VA = "0x181727AE0")] get { if (this.k__BackingField != (ulong)0L) { Texture2D texture2D = this.texture; int num = 0; if (!(texture2D != num)) { int num2; int num3; ulong num4; Texture2D texture2D2 = new Texture2D(num2, num3, (TextureFormat)((uint)5), num4 != 0UL); num3 = 0; num2 = 0; byte[] array = this.k__BackingField; this.texture = texture2D2; bool flag = texture2D2.LoadImage(array); } return this.texture; } } } // Token: 0x170017A3 RID: 6051 // (get) Token: 0x06009463 RID: 37987 RVA: 0x001E6DF8 File Offset: 0x001E4FF8 // (set) Token: 0x06009464 RID: 37988 RVA: 0x001E6E0C File Offset: 0x001E500C [Token(Token = "0x170017A3")] public bool IsClosedManually { [Token(Token = "0x6009463")] [Address(RVA = "0x567CF0", Offset = "0x566AF0", VA = "0x180567CF0")] get; [Token(Token = "0x6009464")] [Address(RVA = "0x567D40", Offset = "0x566B40", VA = "0x180567D40")] protected set; } // Token: 0x06009465 RID: 37989 RVA: 0x001E6E20 File Offset: 0x001E5020 [Token(Token = "0x6009465")] [Address(RVA = "0x1727980", Offset = "0x1726780", VA = "0x181727980")] public HTTPResponse(HTTPRequest request, Stream stream, bool isStreamed, bool isFromCache) { object obj = new object(); this.SyncRoot = obj; base..ctor(); this.IsFromCache = false; this.baseRequest = request; this.Stream = stream; this.IsStreamed = isStreamed; bool cacheOnly = request.cacheOnly; this.IsCacheOnly = cacheOnly; this.IsClosedManually = false; } // Token: 0x06009466 RID: 37990 RVA: 0x001E6E78 File Offset: 0x001E5078 [Token(Token = "0x6009466")] [Address(RVA = "0x1726F40", Offset = "0x1725D40", VA = "0x181726F40", Slot = "5")] public virtual bool Receive(int forceReadRawContentLength = -1, bool readPayloadData = true) { for (;;) { if (HTTPManager.Logger == 0) { string text; this.VerboseLogging(text); } Stream stream = this.Stream; string text3; string text2; if (HTTPManager.Logger == 0) { text2 = string.Format("Status Line: '{0}'", text3); this.VerboseLogging(text2); } if (text2 == 0) { char[] array = new char[2]; array[0] = (char)((uint)47); array[0] = (char)((uint)46); string[] array2 = text3.Split(array); int num = int.Parse(array2[1]); this.k__BackingField = num; int num2 = int.Parse(array2[2]); this.k__BackingField = num2; BestHTTP.Logger.ILogger logger = HTTPManager.Logger; int num3 = 0; if (logger == 0) { string text4 = num3.ToString(); string text5 = this.k__BackingField.ToString(); string text6 = string.Format("HTTP Version: '{0}.{1}'", text4, text5); this.VerboseLogging(text6); } Stream stream2 = this.Stream; string text8; if (HTTPManager.Logger == 0) { string text7 = string.Format("Status Code: '{0}'", text8); this.VerboseLogging(text7); } bool flag; if (!this.baseRequest.k__BackingField && !flag) { goto IL_291; } int num4 = int.Parse(text8); this.k__BackingField = num4; int stringLength = text8.m_stringLength; if (stringLength > 0) { char c = text8[stringLength]; int stringLength2 = text8.m_stringLength; char c2 = text8[stringLength2]; Stream stream3 = this.Stream; string text9; this.k__BackingField = text9; if (HTTPManager.Logger != 0) { goto IL_1DF; } string text10 = this.k__BackingField; string text11 = string.Format("Status Message: '{0}'", text10); this.VerboseLogging(text11); } BestHTTP.Logger.ILogger logger2 = HTTPManager.Logger; HTTPRequest httprequest = this.baseRequest; if (!httprequest.k__BackingField) { continue; } int hashCode = httprequest.k__BackingField.m_String.GetHashCode(); string text12 = string.Format("{0} - Skipping Status Message reading!", hashCode); string empty = string.Empty; this.k__BackingField = empty; IL_1DF: Stream stream4 = this.Stream; this.ReadHeaders(stream4); if (this.k__BackingField != 101) { } if (this.HasHeaderWithValue("connection", "upgrade")) { } bool flag2 = this.GetHeaderValues("upgrade") != 0; this.k__BackingField = flag2; if (flag2 && HTTPManager.Logger == 0) { this.VerboseLogging("Request Upgraded!"); } if (readPayloadData) { break; } } HTTPRequest httprequest2 = this.baseRequest; if (!httprequest2.k__BackingField && !httprequest2.k__BackingField) { goto Block_13; } } return this.ReadPayload(forceReadRawContentLength); Block_13: int num5 = 0; BestHTTP.Logger.ILogger logger3 = HTTPManager.Logger; int hashCode2 = num5.GetHashCode(); string text13 = string.Format("{0} - Failed to read Status Line! Retry is enabled, returning with false.", hashCode2); IL_291: throw new NullReferenceException(); } // Token: 0x06009467 RID: 37991 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x6009467")] [Address(RVA = "0x1725CA0", Offset = "0x1724AA0", VA = "0x181725CA0")] protected bool ReadPayload(int forceReadRawContentLength) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06009468 RID: 37992 RVA: 0x001E711C File Offset: 0x001E531C [Token(Token = "0x6009468")] [Address(RVA = "0x1725B50", Offset = "0x1724950", VA = "0x181725B50")] protected void ReadHeaders(Stream stream) { string empty2; string text4; do { string empty = string.Empty; string text; if (!(text != empty)) { break; } string text3; if (HTTPManager.Logger == 0) { string text2 = string.Format("Header - '{0}': '{1}'", text, text3); this.VerboseLogging(text2); } this.AddHeader(text, text3); empty2 = string.Empty; } while (text4 != empty2); } // Token: 0x06009469 RID: 37993 RVA: 0x001E717C File Offset: 0x001E537C [Token(Token = "0x6009469")] [Address(RVA = "0x1723820", Offset = "0x1722620", VA = "0x181723820")] protected void AddHeader(string name, string value) { string text = name.ToLower(); if (this.k__BackingField == 0) { Dictionary> dictionary = new Dictionary(); this.k__BackingField = dictionary; } bool flag; List list; if (!flag) { Dictionary> dictionary2 = this.k__BackingField; list = new List(1); dictionary2.Add(text, list); } list.Add(value); } // Token: 0x0600946A RID: 37994 RVA: 0x001E71D4 File Offset: 0x001E53D4 [Token(Token = "0x600946A")] [Address(RVA = "0x1724A00", Offset = "0x1723800", VA = "0x181724A00")] public List GetHeaderValues(string name) { if (this.k__BackingField != (ulong)0L) { string text = name.ToLower(); Dictionary> dictionary = this.k__BackingField; bool flag; if (flag) { } } throw new NullReferenceException(); } // Token: 0x0600946B RID: 37995 RVA: 0x001E7208 File Offset: 0x001E5408 [Token(Token = "0x600946B")] [Address(RVA = "0x1724950", Offset = "0x1723750", VA = "0x181724950")] public string GetFirstHeaderValue(string name) { if (this.k__BackingField != (ulong)0L) { string text = name.ToLower(); Dictionary> dictionary = this.k__BackingField; bool flag; if (!flag || flag) { } } throw new NullReferenceException(); } // Token: 0x0600946C RID: 37996 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600946C")] [Address(RVA = "0x1724F30", Offset = "0x1723D30", VA = "0x181724F30")] public bool HasHeaderWithValue(string headerName, string value) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600946D RID: 37997 RVA: 0x001E7240 File Offset: 0x001E5440 [Token(Token = "0x600946D")] [Address(RVA = "0x1724FE0", Offset = "0x1723DE0", VA = "0x181724FE0")] public bool HasHeader(string headerName) { return this.GetHeaderValues(headerName) != 0; } // Token: 0x0600946E RID: 37998 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600946E")] [Address(RVA = "0x1724AA0", Offset = "0x17238A0", VA = "0x181724AA0")] public HTTPRange GetRange() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600946F RID: 37999 RVA: 0x001E725C File Offset: 0x001E545C [Token(Token = "0x600946F")] [Address(RVA = "0x17263F0", Offset = "0x17251F0", VA = "0x1817263F0")] public static string ReadTo(Stream stream, byte blocker) { int num; do { num = 0; uint num2; ulong num3; byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL); int num4; uint num5; if (num4 != (int)blocker && num4 != -1 && !char.IsWhiteSpace((char)num5)) { num++; } bool flag; if (num <= 0 || flag) { } Encoding utf = Encoding.UTF8; } while (num != 0); string text; return text; } // Token: 0x06009470 RID: 38000 RVA: 0x001E72D0 File Offset: 0x001E54D0 [Token(Token = "0x6009470")] [Address(RVA = "0x17266C0", Offset = "0x17254C0", VA = "0x1817266C0")] public static string ReadTo(Stream stream, byte blocker1, byte blocker2) { int num; do { num = 0; uint num2; ulong num3; byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL); int num4; uint num5; if (num4 != (int)blocker1 && num4 != (int)blocker1 && num4 != -1 && !char.IsWhiteSpace((char)num5)) { num++; } if (num <= 0 || char.IsWhiteSpace((char)blocker1)) { } Encoding utf = Encoding.UTF8; } while (num != 0); string text; return text; } // Token: 0x06009471 RID: 38001 RVA: 0x001E734C File Offset: 0x001E554C [Token(Token = "0x6009471")] [Address(RVA = "0x17250E0", Offset = "0x1723EE0", VA = "0x1817250E0")] public static string NoTrimReadTo(Stream stream, byte blocker1, byte blocker2) { int num; do { num = 0; uint num2; ulong num3; byte[] array = VariableSizedBufferPool.Get((long)num2, num3 != 0UL); int num4; uint num5; if (num4 != (int)blocker1 && num4 != (int)blocker1 && num4 != -1 && !char.IsWhiteSpace((char)num5)) { num++; } Encoding utf = Encoding.UTF8; } while (num != 0); string text; return text; } // Token: 0x06009472 RID: 38002 RVA: 0x001E73B0 File Offset: 0x001E55B0 [Token(Token = "0x6009472")] [Address(RVA = "0x1725350", Offset = "0x1724150", VA = "0x181725350")] protected int ReadChunkLength(Stream stream) { /* An exception occurred when decompiling this method (06009472) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.HTTPResponse::ReadChunkLength(System.IO.Stream) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_3E: stloc:Exception(var_5_4E, newobj:Exception(Exception::.ctor, call:string(string::Format, ldstr:string("Can't parse '{0}' as a hex number!"), ldloc:string[exp:object](var_3_20)))) } 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 1660 */; } // Token: 0x06009473 RID: 38003 RVA: 0x001E740C File Offset: 0x001E560C [Token(Token = "0x6009473")] [Address(RVA = "0x1725470", Offset = "0x1724270", VA = "0x181725470")] protected void ReadChunked(Stream stream) { int num; do { num = 0; this.BeginReceiveStreamFragments(); string firstHeaderValue = this.GetFirstHeaderValue("Content-Length"); int num2 = 0; if (!string.IsNullOrEmpty(firstHeaderValue)) { bool flag = int.TryParse(firstHeaderValue, num2); } BestHTTP.Logger.ILogger logger = HTTPManager.Logger; if (logger == 0) { string text2; int num3; string text = string.Format("ReadChunked - hasContentLengthHeader: {0}, contentLengthHeader: {1} realLength: {2:N0}", text2, firstHeaderValue, num3); this.VerboseLogging(text); } BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream(); int num4 = this.ReadChunkLength(stream); if (HTTPManager.Logger == 0) { string text3; this.VerboseLogging(text3); } ulong num5; byte[] array = VariableSizedBufferPool.Get((long)Mathf.NextPowerOfTwo(num4), num5 != 0UL); this.baseRequest.k__BackingField = (long)num4; HTTPRequest httprequest = this.baseRequest; int num6 = this.k__BackingField; if (num4 <= 99 || num6 != 304) { } uint num7; bool flag2 = num7 != (uint)0; httprequest.k__BackingField = flag2; if (this.k__BackingField) { } string firstHeaderValue2 = this.GetFirstHeaderValue("content-encoding"); if (string.IsNullOrEmpty(firstHeaderValue2)) { } bool flag3 = string.Equals(firstHeaderValue2, "gzip"); HTTPRequest httprequest3; if (num4 != 0) { num4 -= num; stream.SetLength((long)num4); HTTPRequest httprequest2 = this.baseRequest; httprequest3 = this.baseRequest; if (!this.IsSuccess) { } uint num8; bool flag4 = num8 != (uint)0; httprequest3.k__BackingField = flag4; if (num < num4) { } if (!this.baseRequest.useStreaming) { int num9 = bufferPoolMemoryStream.ReadByte(); } if (httprequest3 == 0) { } byte[] array2; if (array2 != 0) { int length = array2.Length; int num10 = 0; this.FeedStreamFragment(array2, num10, length); } ulong num11; string text4 = HTTPResponse.ReadTo(stream, (byte)num11); num4 = this.ReadChunkLength(stream); if (HTTPManager.Logger == 0) { string text5; this.VerboseLogging(text5); } HTTPRequest httprequest4 = this.baseRequest; HTTPRequest httprequest5 = this.baseRequest; if (this.IsSuccess) { continue; } bool flag5 = this.k__BackingField; httprequest5.k__BackingField = flag5; } if (this.baseRequest.useStreaming) { byte[] array3; if (httprequest3 != 0 && array3 != 0) { int length2 = array3.Length; int num12 = 0; this.FeedStreamFragment(array3, num12, length2); } this.FlushRemainingFragmentBuffer(); } this.ReadHeaders(stream); if (!this.baseRequest.useStreaming) { byte[] array4 = this.DecodeStream(bufferPoolMemoryStream); this.k__BackingField = array4; } if (bufferPoolMemoryStream != 0) { } } while (num != 0); this.CloseDecompressors(); } // Token: 0x06009474 RID: 38004 RVA: 0x001E76BC File Offset: 0x001E58BC [Token(Token = "0x6009474")] [Address(RVA = "0x1725E60", Offset = "0x1724C60", VA = "0x181725E60")] internal void ReadRaw(Stream stream, long contentLength) { for (;;) { int num = 0; this.BeginReceiveStreamFragments(); HTTPRequest httprequest = this.baseRequest; httprequest.k__BackingField = contentLength; HTTPRequest httprequest2 = this.baseRequest; int num2 = this.k__BackingField; if (httprequest <= (ulong)99L || num2 != 304) { } uint num3; bool flag = num3 != (uint)0; httprequest2.k__BackingField = flag; if (HTTPManager.Logger == 0) { string text; this.VerboseLogging(text); } if ((this.k__BackingField ? 1 : 0) != num) { } if (this.GetFirstHeaderValue("content-encoding") != 0) { } if (!this.baseRequest.useStreaming) { } BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream((int)contentLength); int num4 = this.baseRequest.streamFragmentSize; uint num5; num4 = Math.Max(num4, (int)num5); ulong num6; byte[] array = VariableSizedBufferPool.Get((long)num4, num6 != 0UL); uint num8; uint num7 = Math.Min(num8, (uint)contentLength); int num9 = array.Length; num9 -= num; int num10 = Math.Min((int)num7, num9); if (num10 > 0) { num += num10; HTTPRequest httprequest3 = this.baseRequest; HTTPRequest httprequest4 = this.baseRequest; if (!this.IsSuccess) { } uint num11; bool flag2 = num11 != (uint)0; httprequest4.k__BackingField = flag2; if (num < array.Length) { } if (!this.baseRequest.useStreaming) { } int num12 = 0; this.FeedStreamFragment(array, num12, num); ulong num13; byte[] array2 = this.Decompress(array, num12, num, num13 != 0UL); while (array2 == 0) { } int length = array2.Length; int num14 = 0; this.FeedStreamFragment(array2, num14, length); VariableSizedBufferPool.Release(array); if (this.baseRequest.useStreaming) { byte[] array3; if (array3 != 0) { int length2 = array3.Length; int num15 = 0; this.FeedStreamFragment(array3, num15, length2); } this.FlushRemainingFragmentBuffer(); } if (!this.baseRequest.useStreaming) { byte[] array4; this.k__BackingField = array4; } if (httprequest4 != 0) { } if (num == 0) { break; } } } this.CloseDecompressors(); } // Token: 0x06009475 RID: 38005 RVA: 0x001E7888 File Offset: 0x001E5A88 [Token(Token = "0x6009475")] [Address(RVA = "0x17269A0", Offset = "0x17257A0", VA = "0x1817269A0")] protected void ReadUnknownSize(Stream stream) { for (;;) { if (this.k__BackingField) { } string firstHeaderValue = this.GetFirstHeaderValue("content-encoding"); if (string.IsNullOrEmpty(firstHeaderValue)) { } bool flag = string.Equals(firstHeaderValue, "gzip"); BufferPoolMemoryStream bufferPoolMemoryStream = new BufferPoolMemoryStream(); int num = this.baseRequest.streamFragmentSize; uint num2; num = Math.Max(num, (int)num2); int num3 = 0; byte[] array = VariableSizedBufferPool.Get((long)num, num3 != 0); if (HTTPManager.Logger == 0) { int length = array.Length; string text = string.Format("ReadUnknownSize - buffer size: {0:N0}", length); this.VerboseLogging(text); } int num4 = 0; int num5 = 0; if (stream == 0 || stream == 0 || (this.baseRequest.k__BackingField ? 1 : 0) == num5) { goto IL_B3; } if (num4 < array.Length) { num5++; num4++; goto IL_B3; } IL_C3: HTTPRequest httprequest = this.baseRequest; HTTPRequest httprequest2 = this.baseRequest; long k__BackingField = httprequest2.k__BackingField; httprequest2.k__BackingField = k__BackingField; HTTPRequest httprequest3 = this.baseRequest; if (this.IsSuccess) { continue; } bool flag2 = this.k__BackingField; httprequest3.k__BackingField = flag2; if (num4 < array.Length) { } if (!this.baseRequest.useStreaming) { int num6 = stream.ReadByte(); } int num7 = 0; if (httprequest3 == 0) { this.FeedStreamFragment(array, num7, num4); } ulong num8; byte[] array2 = this.Decompress(array, num7, num4, num8 != 0UL); if (array2 != 0) { int length2 = array2.Length; int num9 = 0; this.FeedStreamFragment(array2, num9, length2); } VariableSizedBufferPool.Release(array); if (this.baseRequest.useStreaming) { byte[] array3; if (httprequest3 != 0 && array3 != 0) { int length3 = array3.Length; int num10 = 0; this.FeedStreamFragment(array3, num10, length3); } this.FlushRemainingFragmentBuffer(); } if (!this.baseRequest.useStreaming) { byte[] array4; this.k__BackingField = array4; } int num11 = 0; if (stream != 0) { } if (num11 == 0) { break; } continue; IL_B3: int num12 = array.Length; num12 -= num4; goto IL_C3; } GZipStream gzipStream = this.decompressorGZipStream; if (gzipStream != 0) { gzipStream.Dispose(); } this.decompressorGZipStream = (ulong)0L; BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorInputStream; if (bufferPoolMemoryStream2 != 0) { bufferPoolMemoryStream2.Dispose(); } this.decompressorInputStream = (ulong)0L; BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorOutputStream; if (bufferPoolMemoryStream3 != 0) { bufferPoolMemoryStream3.Dispose(); } this.decompressorOutputStream = (ulong)0L; } // Token: 0x06009476 RID: 38006 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x6009476")] [Address(RVA = "0x1723D00", Offset = "0x1722B00", VA = "0x181723D00")] protected byte[] DecodeStream(BufferPoolMemoryStream streamToDecode) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x06009477 RID: 38007 RVA: 0x001E7B1C File Offset: 0x001E5D1C [Token(Token = "0x6009477")] [Address(RVA = "0x1723C90", Offset = "0x1722A90", VA = "0x181723C90")] private void CloseDecompressors() { GZipStream gzipStream = this.decompressorGZipStream; if (gzipStream != 0) { gzipStream.Dispose(); } BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream; int num = 0; this.decompressorGZipStream = num; if (bufferPoolMemoryStream != 0) { bufferPoolMemoryStream.Dispose(); } BufferPoolMemoryStream bufferPoolMemoryStream2 = this.decompressorOutputStream; this.decompressorInputStream = num; if (bufferPoolMemoryStream2 != 0) { bufferPoolMemoryStream2.Dispose(); } this.decompressorOutputStream = num; } // Token: 0x06009478 RID: 38008 RVA: 0x001E7B74 File Offset: 0x001E5D74 [Token(Token = "0x6009478")] [Address(RVA = "0x1723FD0", Offset = "0x1722DD0", VA = "0x181723FD0")] private byte[] Decompress(byte[] data, int offset, int count, bool forceDecompress = false) { BufferPoolMemoryStream bufferPoolMemoryStream = this.decompressorInputStream; if (bufferPoolMemoryStream == 0) { BufferPoolMemoryStream bufferPoolMemoryStream2 = new BufferPoolMemoryStream(count); this.decompressorInputStream = bufferPoolMemoryStream2; } if (data != 0) { int num = bufferPoolMemoryStream.ReadByte(); } BufferPoolMemoryStream bufferPoolMemoryStream3 = this.decompressorInputStream; if (bufferPoolMemoryStream3.CanWrite < false) { } long position = bufferPoolMemoryStream3.Position; GZipStream gzipStream; FlushType flushMode = gzipStream.FlushMode; BufferPoolMemoryStream bufferPoolMemoryStream4 = new BufferPoolMemoryStream(); byte[] array; VariableSizedBufferPool.Release(array); throw new NullReferenceException(); } // Token: 0x06009479 RID: 38009 RVA: 0x001E7BDC File Offset: 0x001E5DDC [Token(Token = "0x6009479")] [Address(RVA = "0x1723B60", Offset = "0x1722960", VA = "0x181723B60")] protected void BeginReceiveStreamFragments() { HTTPRequest httprequest = this.baseRequest; if (!httprequest.disableCache && httprequest.useStreaming && !this.k__BackingField) { if (httprequest.k__BackingField) { } Uri k__BackingField = httprequest.k__BackingField; HTTPMethods k__BackingField = httprequest.k__BackingField; if (HTTPCacheService.IsCacheble(k__BackingField, k__BackingField, this)) { HTTPRequest httprequest2 = this.baseRequest; if (httprequest2.k__BackingField) { } Stream stream = HTTPCacheService.PrepareStreamed(httprequest2.k__BackingField, this); this.cacheStream = stream; } } this.allFragmentSize = (int)((ulong)0L); } // Token: 0x0600947A RID: 38010 RVA: 0x001E7C64 File Offset: 0x001E5E64 [Token(Token = "0x600947A")] [Address(RVA = "0x1724380", Offset = "0x1723180", VA = "0x181724380")] protected void FeedStreamFragment(byte[] buffer, int pos, int length) { int num = 0; if (buffer != 0 && length != 0) { if ((this.baseRequest.useStreaming ? 1 : 0) != num && this.FragmentQueueIsFull()) { this.VerboseLogging("WaitWhileFragmentQueueIsFull"); if (this.fragmentWaitEvent == 0) { int num2; AutoResetEvent autoResetEvent = new AutoResetEvent(num2 != 0); num2 = 0; this.fragmentWaitEvent = autoResetEvent; } AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent; } byte[] array; if (this.fragmentBuffer == num) { int streamFragmentSize = this.baseRequest.streamFragmentSize; int num3 = 0; array = VariableSizedBufferPool.Get((long)streamFragmentSize, num3 != 0); this.fragmentBuffer = array; this.fragmentBufferDataLength = num; } HTTPRequest httprequest = this.baseRequest; int num4 = this.fragmentBufferDataLength; int num5 = httprequest.streamFragmentSize; if (array > num5) { num5 -= num4; num4 = num5; this.FeedStreamFragment(buffer, pos, num4); } byte[] array2 = this.fragmentBuffer; Array.Copy(buffer, pos, array2, num4, length); int num6 = this.fragmentBufferDataLength; HTTPRequest httprequest2 = this.baseRequest; num6 += length; this.fragmentBufferDataLength = num6; if (num6 == httprequest2.streamFragmentSize) { byte[] array3 = this.fragmentBuffer; this.AddStreamedFragment(array3); this.fragmentBuffer = num; this.fragmentBufferDataLength = num; } } } // Token: 0x0600947B RID: 38011 RVA: 0x001E7D8C File Offset: 0x001E5F8C [Token(Token = "0x600947B")] [Address(RVA = "0x1724650", Offset = "0x1723450", VA = "0x181724650")] protected void FlushRemainingFragmentBuffer() { int num = 0; if (this.fragmentBuffer != num) { byte[] array = this.fragmentBuffer; this.AddStreamedFragment(array); this.fragmentBuffer = num; this.fragmentBufferDataLength = num; } Stream stream = this.cacheStream; if (stream != 0) { stream.Dispose(); HTTPRequest httprequest = this.baseRequest; this.cacheStream = num; if ((httprequest.k__BackingField ? 1 : 0) != num) { } Uri k__BackingField = httprequest.k__BackingField; int num2 = this.allFragmentSize; HTTPCacheService.SetBodyLength(k__BackingField, num2); } AutoResetEvent autoResetEvent = this.fragmentWaitEvent; this.fragmentWaitEvent = num; if (autoResetEvent != 0) { } } // Token: 0x0600947C RID: 38012 RVA: 0x001E7E20 File Offset: 0x001E6020 [Token(Token = "0x600947C")] [Address(RVA = "0x1723940", Offset = "0x1722740", VA = "0x181723940")] protected void AddStreamedFragment(byte[] buffer) { int num; do { num = 0; object syncRoot = this.SyncRoot; if ((this.k__BackingField ? 1 : 0) == num) { List list = this.streamedFragments; if (list == 0) { List list2 = new List(); this.streamedFragments = list2; } list.Add(buffer); } if (HTTPManager.Logger == 0 && buffer != 0 && this.streamedFragments != (ulong)0L) { int length = buffer.Length; List list3 = this.streamedFragments; string text = string.Format("AddStreamedFragment buffer length: {0:N0} streamedFragments: {1:N0}", length, length); this.VerboseLogging(text); } Stream stream = this.cacheStream; if (stream != 0) { int num2 = stream.ReadByte(); int length2 = buffer.Length; } Monitor.Exit(syncRoot); } while (num != 0); } // Token: 0x0600947D RID: 38013 RVA: 0x001E7EE4 File Offset: 0x001E60E4 [Token(Token = "0x600947D")] [Address(RVA = "0x1727880", Offset = "0x1726680", VA = "0x181727880")] protected void WaitWhileFragmentQueueIsFull() { if (this.baseRequest.useStreaming && this.FragmentQueueIsFull()) { this.VerboseLogging("WaitWhileFragmentQueueIsFull"); if (this.fragmentWaitEvent == 0) { int num; AutoResetEvent autoResetEvent = new AutoResetEvent(num != 0); num = 0; this.fragmentWaitEvent = autoResetEvent; } AutoResetEvent autoResetEvent2 = this.fragmentWaitEvent; HTTPRequest httprequest = this.baseRequest; } } // Token: 0x0600947E RID: 38014 RVA: 0x001E7F44 File Offset: 0x001E6144 [Token(Token = "0x600947E")] [Address(RVA = "0x17247A0", Offset = "0x17235A0", VA = "0x1817247A0")] private bool FragmentQueueIsFull() { bool flag; for (;;) { int num = 0; object syncRoot = this.SyncRoot; List list = this.streamedFragments; if (list == 0) { } int size = list._size; int k__BackingField = this.baseRequest.k__BackingField; flag = size >= k__BackingField; if (HTTPManager.Logger == 0) { int size2 = this.streamedFragments._size; int k__BackingField2 = this.baseRequest.k__BackingField; string text = string.Format("HasFragmentsInQueue - {0} / {1}", size2, k__BackingField2); this.VerboseLogging(text); Monitor.Exit(syncRoot); if (num == 0) { break; } } } return flag; } // Token: 0x0600947F RID: 38015 RVA: 0x001E7FE4 File Offset: 0x001E61E4 [Token(Token = "0x600947F")] [Address(RVA = "0x1724CE0", Offset = "0x1723AE0", VA = "0x181724CE0")] public List GetStreamedFragments() { int num; do { num = 0; object syncRoot = this.SyncRoot; List list = this.streamedFragments; if (list != 0) { List list2 = new List(list); this.streamedFragments.Clear(); if (this.fragmentWaitEvent != 0) { bool flag = this.fragmentWaitEvent.Set(); } BestHTTP.Logger.ILogger logger = HTTPManager.Logger; int num2 = 0; if (logger == 0) { string text = num2.ToString(); string text2 = string.Format("GetStreamedFragments - returning with {0:N0} fragments", text); this.VerboseLogging(text2); } } if (HTTPManager.Logger == 0) { this.VerboseLogging("GetStreamedFragments - no fragments, returning with null"); } Monitor.Exit(syncRoot); } while (num != 0); throw new NullReferenceException(); } // Token: 0x06009480 RID: 38016 RVA: 0x001E80A0 File Offset: 0x001E62A0 [Token(Token = "0x6009480")] [Address(RVA = "0x1725000", Offset = "0x1723E00", VA = "0x181725000")] internal bool HasStreamedFragments() { int num; bool flag; do { num = 0; object syncRoot = this.SyncRoot; List list = this.streamedFragments; if (list == 0) { } int size = list._size; HTTPRequest httprequest = this.baseRequest; flag = size >= httprequest.k__BackingField; Monitor.Exit(syncRoot); } while (num != 0); return flag; } // Token: 0x06009481 RID: 38017 RVA: 0x001E80F4 File Offset: 0x001E62F4 [Token(Token = "0x6009481")] [Address(RVA = "0x17245C0", Offset = "0x17233C0", VA = "0x1817245C0")] internal void FinishStreaming() { if (HTTPManager.Logger == 0) { this.VerboseLogging("FinishStreaming"); } this.k__BackingField = true; this.Dispose(); } // Token: 0x06009482 RID: 38018 RVA: 0x001E812C File Offset: 0x001E632C [Token(Token = "0x6009482")] [Address(RVA = "0x1727750", Offset = "0x1726550", VA = "0x181727750")] private void VerboseLogging(string str) { if (HTTPManager.Logger == 0) { BestHTTP.Logger.ILogger logger = HTTPManager.Logger; HTTPRequest httprequest = this.baseRequest; if (httprequest.k__BackingField) { } int hashCode = httprequest.k__BackingField.GetHashCode(); } } // Token: 0x06009483 RID: 38019 RVA: 0x001E8170 File Offset: 0x001E6370 [Token(Token = "0x6009483")] [Address(RVA = "0x17242A0", Offset = "0x17230A0", VA = "0x1817242A0", Slot = "4")] public void Dispose() { Stream stream = this.Stream; if (stream == 0 || stream != 0) { } Stream stream2 = this.cacheStream; this.Stream = (ulong)0L; if (stream2 != 0) { stream2.Dispose(); this.cacheStream = (ulong)0L; } GC.SuppressFinalize(this); } // Token: 0x0400650E RID: 25870 [Token(Token = "0x400650E")] internal const byte CR = 13; // Token: 0x0400650F RID: 25871 [Token(Token = "0x400650F")] internal const byte LF = 10; // Token: 0x04006510 RID: 25872 [Token(Token = "0x4006510")] public const int MinBufferSize = 4096; // Token: 0x0400651E RID: 25886 [FieldOffset(Offset = "0x60")] [Token(Token = "0x400651E")] protected string dataAsText; // Token: 0x0400651F RID: 25887 [FieldOffset(Offset = "0x68")] [Token(Token = "0x400651F")] protected Texture2D texture; // Token: 0x04006521 RID: 25889 [FieldOffset(Offset = "0x78")] [Token(Token = "0x4006521")] internal HTTPRequest baseRequest; // Token: 0x04006522 RID: 25890 [FieldOffset(Offset = "0x80")] [Token(Token = "0x4006522")] protected Stream Stream; // Token: 0x04006523 RID: 25891 [FieldOffset(Offset = "0x88")] [Token(Token = "0x4006523")] protected List streamedFragments; // Token: 0x04006524 RID: 25892 [FieldOffset(Offset = "0x90")] [Token(Token = "0x4006524")] protected object SyncRoot; // Token: 0x04006525 RID: 25893 [FieldOffset(Offset = "0x98")] [Token(Token = "0x4006525")] protected byte[] fragmentBuffer; // Token: 0x04006526 RID: 25894 [FieldOffset(Offset = "0xA0")] [Token(Token = "0x4006526")] protected int fragmentBufferDataLength; // Token: 0x04006527 RID: 25895 [FieldOffset(Offset = "0xA8")] [Token(Token = "0x4006527")] protected Stream cacheStream; // Token: 0x04006528 RID: 25896 [FieldOffset(Offset = "0xB0")] [Token(Token = "0x4006528")] protected int allFragmentSize; // Token: 0x04006529 RID: 25897 [FieldOffset(Offset = "0xB8")] [Token(Token = "0x4006529")] private BufferPoolMemoryStream decompressorInputStream; // Token: 0x0400652A RID: 25898 [FieldOffset(Offset = "0xC0")] [Token(Token = "0x400652A")] private BufferPoolMemoryStream decompressorOutputStream; // Token: 0x0400652B RID: 25899 [FieldOffset(Offset = "0xC8")] [Token(Token = "0x400652B")] private GZipStream decompressorGZipStream; // Token: 0x0400652C RID: 25900 [Token(Token = "0x400652C")] private const int MinLengthToDecompress = 256; // Token: 0x0400652D RID: 25901 [FieldOffset(Offset = "0xD0")] [Token(Token = "0x400652D")] private AutoResetEvent fragmentWaitEvent; } }