using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using System.Threading; using BestHTTP.Logger; using BestHTTP.PlatformSupport.FileSystem; using Cpp2IlInjected; namespace BestHTTP.Caching { // Token: 0x020019E8 RID: 6632 [Token(Token = "0x20019E8")] [StructLayout(3)] public static class HTTPCacheService { // Token: 0x17001CE0 RID: 7392 // (get) Token: 0x0600B29B RID: 45723 RVA: 0x0029FC44 File Offset: 0x0029DE44 [Token(Token = "0x17001CE0")] public static bool IsSupported { [Token(Token = "0x600B29B")] [Address(RVA = "0x1F121B0", Offset = "0x1F10BB0", VA = "0x181F121B0")] get { int num; do { num = 0; IIOService ioservice = HTTPManager.IOService; string rootCacheFolder = HTTPManager.GetRootCacheFolder(); ILogger logger = HTTPManager.Logger; num++; if (num != -1) { } } while (num != 0); return HTTPCacheService.isSupported; } } // Token: 0x17001CE1 RID: 7393 // (get) Token: 0x0600B29C RID: 45724 RVA: 0x0029FC90 File Offset: 0x0029DE90 [Token(Token = "0x17001CE1")] private static Dictionary Library { [Token(Token = "0x600B29C")] [Address(RVA = "0x1F12520", Offset = "0x1F10F20", VA = "0x181F12520")] get { HTTPCacheService.LoadLibrary(); return HTTPCacheService.library; } } // Token: 0x17001CE2 RID: 7394 // (get) Token: 0x0600B29D RID: 45725 RVA: 0x0029FCAC File Offset: 0x0029DEAC // (set) Token: 0x0600B29E RID: 45726 RVA: 0x0029FCC0 File Offset: 0x0029DEC0 [Token(Token = "0x17001CE2")] internal static string CacheFolder { [Token(Token = "0x600B29D")] [Address(RVA = "0x1F12150", Offset = "0x1F10B50", VA = "0x181F12150")] get; [Token(Token = "0x600B29E")] [Address(RVA = "0x1F12580", Offset = "0x1F10F80", VA = "0x181F12580")] private set; } // Token: 0x17001CE3 RID: 7395 // (get) Token: 0x0600B29F RID: 45727 RVA: 0x0029FCD4 File Offset: 0x0029DED4 // (set) Token: 0x0600B2A0 RID: 45728 RVA: 0x0029FCE8 File Offset: 0x0029DEE8 [Token(Token = "0x17001CE3")] private static string LibraryPath { [Token(Token = "0x600B29F")] [Address(RVA = "0x1F12460", Offset = "0x1F10E60", VA = "0x181F12460")] get; [Token(Token = "0x600B2A0")] [Address(RVA = "0x1F125E0", Offset = "0x1F10FE0", VA = "0x181F125E0")] set; } // Token: 0x0600B2A2 RID: 45730 RVA: 0x0029FD14 File Offset: 0x0029DF14 [Token(Token = "0x600B2A2")] [Address(RVA = "0x1F0E470", Offset = "0x1F0CE70", VA = "0x181F0E470")] internal static void CheckSetup() { if (HTTPCacheService.IsSupported) { HTTPCacheService.SetupCacheFolder(); HTTPCacheService.LoadLibrary(); } } // Token: 0x0600B2A3 RID: 45731 RVA: 0x0029FD3C File Offset: 0x0029DF3C [Token(Token = "0x600B2A3")] [Address(RVA = "0x1F11860", Offset = "0x1F10260", VA = "0x181F11860")] internal static void SetupCacheFolder() { if (HTTPCacheService.IsSupported) { bool flag = string.IsNullOrEmpty(HTTPCacheService.k__BackingField); if (flag || flag) { HTTPCacheService.k__BackingField = Path.Combine(HTTPManager.GetRootCacheFolder(), "HTTPCache"); IIOService ioservice = HTTPManager.IOService; IIOService ioservice2 = HTTPManager.IOService; HTTPCacheService.k__BackingField = Path.Combine(HTTPManager.GetRootCacheFolder(), "Library"); } ILogger logger = HTTPManager.Logger; } } // Token: 0x0600B2A4 RID: 45732 RVA: 0x0029FDBC File Offset: 0x0029DFBC [Token(Token = "0x600B2A4")] [Address(RVA = "0x1F0F970", Offset = "0x1F0E370", VA = "0x181F0F970")] internal static ulong GetNameIdx() { int num; ulong nextNameIDX; do { num = 0; HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; nextNameIDX = HTTPCacheService.NextNameIDX; ulong num2 = HTTPCacheService.NextNameIDX; num2 += (ulong)1L; HTTPCacheService.NextNameIDX = num2; HTTPCacheService.NextNameIDX = 0UL; Dictionary usedIndexes = HTTPCacheService.UsedIndexes; ulong nextNameIDX2 = HTTPCacheService.NextNameIDX; if (usedIndexes.ContainsKey(nextNameIDX2)) { } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); return nextNameIDX; } // Token: 0x0600B2A5 RID: 45733 RVA: 0x0029FE2C File Offset: 0x0029E02C [Token(Token = "0x600B2A5")] [Address(RVA = "0x1F0FB80", Offset = "0x1F0E580", VA = "0x181F0FB80")] internal static bool HasEntity(Uri uri) { int num; bool flag; do { num = 0; if (!HTTPCacheService.IsSupported) { goto IL_3F; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; HTTPCacheService.LoadLibrary(); flag = HTTPCacheService.library.ContainsKey(uri); Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); return flag; IL_3F: throw new NullReferenceException(); } // Token: 0x0600B2A6 RID: 45734 RVA: 0x0029FE80 File Offset: 0x0029E080 [Token(Token = "0x600B2A6")] [Address(RVA = "0x1F0E800", Offset = "0x1F0D200", VA = "0x181F0E800")] public static bool DeleteEntity(Uri uri, bool removeFromLibrary = true) { for (;;) { int num = 0; if (!HTTPCacheService.IsSupported) { break; } int num2 = 0; object obj = HTTPCacheFileLock.Acquire(uri); Monitor.Enter(obj, num2); HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num3 = 0; Monitor.Enter(dictionary, num2); HTTPCacheService.LoadLibrary(); bool flag = HTTPCacheService.library.TryGetValue(uri, num3); if (flag) { } if (removeFromLibrary != flag) { bool flag2 = HTTPCacheService.Library.Remove(uri); Dictionary usedIndexes = HTTPCacheService.UsedIndexes; } Monitor.Exit(dictionary); if (num != -1) { } if (num == 0) { Monitor.Exit(obj); if (num != -1) { } if (num == 0) { break; } } } throw new NullReferenceException(); } // Token: 0x0600B2A7 RID: 45735 RVA: 0x0029FF44 File Offset: 0x0029E144 [Token(Token = "0x600B2A7")] [Address(RVA = "0x1F10000", Offset = "0x1F0EA00", VA = "0x181F10000")] internal static bool IsCachedEntityExpiresInTheFuture(HTTPRequest request) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); Dictionary dictionary2 = HTTPCacheService.library; Uri currentUri = request.CurrentUri; if (!dictionary2.TryGetValue(currentUri, num2)) { } int num3 = 0; Monitor.Exit(dictionary); if (num != -1) { if (num3 == 68) { } if (num3 == 66) { break; } } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B2A8 RID: 45736 RVA: 0x0029FFC4 File Offset: 0x0029E1C4 [Token(Token = "0x600B2A8")] [Address(RVA = "0x1F115F0", Offset = "0x1F0FFF0", VA = "0x181F115F0")] internal static void SetHeaders(HTTPRequest request) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } bool flag = request.RemoveHeader("If-None-Match"); bool flag2 = request.RemoveHeader("If-Modified-Since"); HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); Dictionary dictionary2 = HTTPCacheService.library; Uri currentUri = request.CurrentUri; if (dictionary2.TryGetValue(currentUri, num2)) { } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); } // Token: 0x0600B2A9 RID: 45737 RVA: 0x002A0048 File Offset: 0x0029E248 [Token(Token = "0x600B2A9")] [Address(RVA = "0x1F0F4C0", Offset = "0x1F0DEC0", VA = "0x181F0F4C0")] internal static HTTPCacheFileInfo GetEntity(Uri uri) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); bool flag = HTTPCacheService.library.TryGetValue(uri, num2); Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B2AA RID: 45738 RVA: 0x002A00A0 File Offset: 0x0029E2A0 [Token(Token = "0x600B2AA")] [Address(RVA = "0x1F0F6E0", Offset = "0x1F0E0E0", VA = "0x181F0F6E0")] internal static HTTPResponse GetFullResponse(HTTPRequest request) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); Dictionary dictionary2 = HTTPCacheService.library; Uri currentUri = request.CurrentUri; if (!dictionary2.TryGetValue(currentUri, num2)) { } int num3 = 0; Monitor.Exit(dictionary); if (num != -1) { if (num3 == 69) { } if (num3 == 67) { break; } } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B2AB RID: 45739 RVA: 0x002A0120 File Offset: 0x0029E320 [Token(Token = "0x600B2AB")] [Address(RVA = "0x1F0FDB0", Offset = "0x1F0E7B0", VA = "0x181F0FDB0")] internal static bool IsCacheble(Uri uri, HTTPMethods method, HTTPResponse response) { if (!HTTPCacheService.IsSupported || response == 0 || response.k__BackingField > 199) { return; } List headerValues = response.GetHeaderValues("cache-control"); if (headerValues != 0) { Predicate <>9__30_ = HTTPCacheService.<>c.<>9__30_0; if (<>9__30_ == 0) { HTTPCacheService.<>c.<>9__30_0 = delegate(string headerValue) { string text = headerValue.ToLower(); return text.Contains("no-store") || text.Contains("no-cache"); }; } if (headerValues.Exists(<>9__30_)) { return; } } List headerValues2 = response.GetHeaderValues("pragma"); if (headerValues2 != 0) { Predicate predicate; if (HTTPCacheService.<>c.<>9__30_1 == 0) { predicate = delegate(string headerValue) { string text2 = headerValue.ToLower(); return text2.Contains("no-store") || text2.Contains("no-cache"); }; HTTPCacheService.<>c.<>9__30_1 = predicate; } if (headerValues2.Exists(predicate)) { return; } } if (response.GetHeaderValues("content-range") == 0) { return; } } // Token: 0x0600B2AC RID: 45740 RVA: 0x002A01D8 File Offset: 0x0029E3D8 [Token(Token = "0x600B2AC")] [Address(RVA = "0x1F11CD0", Offset = "0x1F106D0", VA = "0x181F11CD0")] internal static HTTPCacheFileInfo Store(Uri uri, HTTPMethods method, HTTPResponse response) { int num; do { num = 0; if (response == 0) { break; } byte[] k__BackingField = response.k__BackingField; if (k__BackingField == 0 || k__BackingField.Length == num || !HTTPCacheService.IsSupported) { break; } Dictionary dictionary = HTTPCacheService.Library; int num2 = 0; if (!HTTPCacheService.Library.TryGetValue(uri, num2)) { Dictionary dictionary2 = HTTPCacheService.Library; HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri); dictionary2.Add(uri, httpcacheFileInfo); Dictionary usedIndexes = HTTPCacheService.UsedIndexes; ulong k__BackingField = httpcacheFileInfo.k__BackingField; usedIndexes.Add(k__BackingField, httpcacheFileInfo); } int num3 = 0; ILogger logger = HTTPManager.Logger; if (num < num3) { num += num; num++; } if (num == 0) { ILogger logger2 = HTTPManager.Logger; int hashCode = uri.GetHashCode(); string text = string.Format("{0} - Saved to cache", hashCode); } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B2AD RID: 45741 RVA: 0x002A02F0 File Offset: 0x0029E4F0 [Token(Token = "0x600B2AD")] [Address(RVA = "0x1F10A30", Offset = "0x1F0F430", VA = "0x181F10A30")] internal static Stream PrepareStreamed(Uri uri, HTTPResponse response) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); if (!HTTPCacheService.library.TryGetValue(uri, num2)) { Dictionary dictionary2 = HTTPCacheService.Library; HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri); dictionary2.Add(uri, httpcacheFileInfo); Dictionary usedIndexes = HTTPCacheService.UsedIndexes; ulong k__BackingField = httpcacheFileInfo.k__BackingField; usedIndexes.Add(k__BackingField, httpcacheFileInfo); } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); throw new NullReferenceException(); } // Token: 0x0600B2AE RID: 45742 RVA: 0x002A0398 File Offset: 0x0029E598 [Token(Token = "0x600B2AE")] [Address(RVA = "0x1F0E1A0", Offset = "0x1F0CBA0", VA = "0x181F0E1A0")] public static void BeginClear() { if (HTTPCacheService.IsSupported) { HTTPCacheService.SetupCacheFolder(); WaitCallback <>9__33_ = HTTPCacheService.<>c.<>9__33_0; if (<>9__33_ == 0) { HTTPCacheService.<>c.<>9__33_0 = delegate(object param) { HTTPCacheService.ClearImpl(param); }; } bool flag = ThreadPool.QueueUserWorkItem(<>9__33_); return; } } // Token: 0x0600B2AF RID: 45743 RVA: 0x002A03E0 File Offset: 0x0029E5E0 [Token(Token = "0x600B2AF")] [Address(RVA = "0x1F0E510", Offset = "0x1F0CF10", VA = "0x181F0E510")] private static void ClearImpl(object param) { int num = 0; if (HTTPCacheService.IsSupported) { IIOService ioservice = HTTPManager.IOService; IIOService ioservice2 = HTTPManager.IOService; num++; int num2 = 0; num++; HTTPCacheService.UsedIndexes.Clear(); HTTPCacheService.library.Clear(); HTTPCacheService.SaveLibrary(); if (num2 != -1) { } } } // Token: 0x0600B2B0 RID: 45744 RVA: 0x002A044C File Offset: 0x0029E64C [Token(Token = "0x600B2B0")] [Address(RVA = "0x1F0E310", Offset = "0x1F0CD10", VA = "0x181F0E310")] public static void BeginMaintainence(HTTPCacheMaintananceParams maintananceParam) { /* An exception occurred when decompiling this method (0600B2B0) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.Caching.HTTPCacheService::BeginMaintainence(BestHTTP.Caching.HTTPCacheMaintananceParams) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_3B: stloc:ArgumentNullException(var_4_45, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldstr:string("maintananceParams == null"))) } 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: 0x0600B2B1 RID: 45745 RVA: 0x002A04A0 File Offset: 0x0029E6A0 [Token(Token = "0x600B2B1")] [Address(RVA = "0x1F0EFA0", Offset = "0x1F0D9A0", VA = "0x181F0EFA0")] public static int GetCacheEntityCount() { int num; int count; do { num = 0; if (!HTTPCacheService.IsSupported) { return 0; } HTTPCacheService.CheckSetup(); HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; HTTPCacheService.LoadLibrary(); count = HTTPCacheService.library.Count; Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); return count; } // Token: 0x0600B2B2 RID: 45746 RVA: 0x002A04FC File Offset: 0x0029E6FC [Token(Token = "0x600B2B2")] [Address(RVA = "0x1F0F1C0", Offset = "0x1F0DBC0", VA = "0x181F0F1C0")] public static ulong GetCacheSize() { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.CheckSetup(); HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; HTTPCacheService.LoadLibrary(); Dictionary dictionary2 = HTTPCacheService.library; Dictionary.Enumerator enumerator; if (enumerator != 0) { int i = enumerator.getEnumeratorRetType; while (i <= 0) { } num += i; } if (num != -1) { } if (num != 0) { goto IL_68; } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); throw new NullReferenceException(); IL_68: throw new NullReferenceException(); } // Token: 0x0600B2B3 RID: 45747 RVA: 0x002A0578 File Offset: 0x0029E778 [Token(Token = "0x600B2B3")] [Address(RVA = "0x1F10290", Offset = "0x1F0EC90", VA = "0x181F10290")] private static void LoadLibrary() { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { return; } HTTPCacheService.library = new Dictionary(new UriComparer()); IIOService ioservice = HTTPManager.IOService; Dictionary dictionary = HTTPCacheService.library; IIOService ioservice2 = HTTPManager.IOService; BinaryReader binaryReader; ushort num2 = binaryReader.ReadUInt16(); HTTPCacheService.NextNameIDX = (ulong)binaryReader.ReadInt64(); ushort num3 = binaryReader.ReadUInt16(); if (num < (int)num3) { decimal num4 = binaryReader.ReadDecimal(); Uri uri; HTTPCacheFileInfo httpcacheFileInfo = new HTTPCacheFileInfo(uri, binaryReader, (int)num2); if (httpcacheFileInfo.IsExists()) { HTTPCacheService.library.Add(uri, httpcacheFileInfo); Dictionary usedIndexes = HTTPCacheService.UsedIndexes; ulong k__BackingField = httpcacheFileInfo.k__BackingField; usedIndexes.Add(k__BackingField, httpcacheFileInfo); } num++; } if (binaryReader != 0) { } if (num != -1) { num++; } if (num != 0) { goto IL_149; } int num5; if (num != 0) { num5 = 0; } if (num != -1) { num++; } if (num != 0) { goto IL_149; } Monitor.Exit(num5); if (num != -1) { } } while (num != 0); HTTPCacheService.DeleteUnusedFiles(); if (HTTPCacheService.IsSupported) { HTTPCacheService.SetupCacheFolder(); WaitCallback waitCallback; if (HTTPCacheService.<>c.<>9__33_0 == 0) { waitCallback = delegate(object param) { HTTPCacheService.ClearImpl(param); }; HTTPCacheService.<>c.<>9__33_0 = waitCallback; } bool flag = ThreadPool.QueueUserWorkItem(waitCallback); } return; IL_149: throw new NullReferenceException(); } // Token: 0x0600B2B4 RID: 45748 RVA: 0x002A06D4 File Offset: 0x0029E8D4 [Token(Token = "0x600B2B4")] [Address(RVA = "0x1F10D80", Offset = "0x1F0F780", VA = "0x181F10D80")] internal static void SaveLibrary() { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; IIOService ioservice = HTTPManager.IOService; BinaryWriter binaryWriter; binaryWriter.Write(2); ulong nextNameIDX = HTTPCacheService.NextNameIDX; binaryWriter.Write((long)nextNameIDX); int count = HTTPCacheService.Library.Count; binaryWriter.Write((ushort)count); int num2 = 0; Dictionary dictionary2 = HTTPCacheService.Library; Dictionary.Enumerator enumerator; if (enumerator != 0) { int hashCode = num2.GetHashCode(); } if (num != -1) { num++; } if (num != 0) { goto IL_B6; } if (binaryWriter != 0) { } if (num != -1) { num++; } if (num != 0) { goto IL_C8; } int num3 = 0; if (num != -1) { num++; } if (num != 0) { goto IL_C8; } Monitor.Exit(num3); if (num != -1) { } } while (num != 0); return; IL_B6: throw new NullReferenceException(); IL_C8: throw new NullReferenceException(); } // Token: 0x0600B2B5 RID: 45749 RVA: 0x002A07B0 File Offset: 0x0029E9B0 [Token(Token = "0x600B2B5")] [Address(RVA = "0x1F112C0", Offset = "0x1F0FCC0", VA = "0x181F112C0")] internal static void SetBodyLength(Uri uri, int bodyLength) { int num; do { num = 0; if (!HTTPCacheService.IsSupported) { break; } HTTPCacheService.LoadLibrary(); Dictionary dictionary = HTTPCacheService.library; int num2 = 0; HTTPCacheService.LoadLibrary(); if (!HTTPCacheService.library.TryGetValue(uri, num2)) { Dictionary dictionary2 = HTTPCacheService.Library; DateTime utcNow = DateTime.UtcNow; HTTPCacheFileInfo httpcacheFileInfo; dictionary2.Add(uri, httpcacheFileInfo); Dictionary usedIndexes = HTTPCacheService.UsedIndexes; ulong k__BackingField = httpcacheFileInfo.k__BackingField; usedIndexes.Add(k__BackingField, httpcacheFileInfo); } Monitor.Exit(dictionary); if (num != -1) { } } while (num != 0); } // Token: 0x0600B2B6 RID: 45750 RVA: 0x002A0858 File Offset: 0x0029EA58 [Token(Token = "0x600B2B6")] [Address(RVA = "0x1F0EB80", Offset = "0x1F0D580", VA = "0x181F0EB80")] private static void DeleteUnusedFiles() { if (HTTPCacheService.IsSupported) { HTTPCacheService.CheckSetup(); IIOService ioservice = HTTPManager.IOService; int num = 0; bool flag; if (flag) { Dictionary dictionary = HTTPCacheService.Library; bool flag2 = !HTTPCacheService.UsedIndexes.ContainsKey((ulong)2199023255552L); Monitor.Exit(dictionary); if ((ulong)((uint)(-1)) == (ulong)(-1L) || !flag2) { goto IL_5B; } } IIOService ioservice2 = HTTPManager.IOService; IL_5B: num++; } } // Token: 0x040075BF RID: 30143 [Token(Token = "0x40075BF")] private const int LibraryVersion = 2; // Token: 0x040075C0 RID: 30144 [Token(Token = "0x40075C0")] private static bool isSupported; // Token: 0x040075C1 RID: 30145 [Token(Token = "0x40075C1")] private static bool IsSupportCheckDone; // Token: 0x040075C2 RID: 30146 [Token(Token = "0x40075C2")] private static Dictionary library; // Token: 0x040075C3 RID: 30147 [Token(Token = "0x40075C3")] private static Dictionary UsedIndexes = new Dictionary(); // Token: 0x040075C6 RID: 30150 [Token(Token = "0x40075C6")] private static bool InClearThread; // Token: 0x040075C7 RID: 30151 [Token(Token = "0x40075C7")] private static bool InMaintainenceThread; // Token: 0x040075C8 RID: 30152 [Token(Token = "0x40075C8")] private static ulong NextNameIDX; } }