using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Threading; using Cpp2IlInjected; using UnityEngine; namespace Steamworks { // Token: 0x02001089 RID: 4233 [Token(Token = "0x2001089")] [StructLayout(3)] public static class CallbackDispatcher { // Token: 0x06006738 RID: 26424 RVA: 0x0016A030 File Offset: 0x00168230 [Token(Token = "0x6006738")] [Address(RVA = "0x1D5DBE0", Offset = "0x1D5C5E0", VA = "0x181D5DBE0")] public static void ExceptionHandler(Exception e) { Debug.LogException(e); } // Token: 0x17001283 RID: 4739 // (get) Token: 0x06006739 RID: 26425 RVA: 0x0016A044 File Offset: 0x00168244 [Token(Token = "0x17001283")] public static bool IsInitialized { [Token(Token = "0x6006739")] [Address(RVA = "0x1D5FB40", Offset = "0x1D5E540", VA = "0x181D5FB40")] get { return "{il2cpp field on {'constant10' (constant value of type Cpp2IL.Core.Analysis.ResultModels.StaticFieldsPtr)}, offset 0x28}" > (ulong)0L; } } // Token: 0x0600673A RID: 26426 RVA: 0x0016A05C File Offset: 0x0016825C [Token(Token = "0x600673A")] [Address(RVA = "0x1D5DC40", Offset = "0x1D5C640", VA = "0x181D5DC40")] internal static void Initialize() { int num; do { num = 0; object sync = CallbackDispatcher.m_sync; NativeMethods.SteamAPI_ManualDispatch_Init(); CallbackDispatcher.m_pCallbackMsg = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CallbackMsg_t))); Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x0600673B RID: 26427 RVA: 0x0016A0A0 File Offset: 0x001682A0 [Token(Token = "0x600673B")] [Address(RVA = "0x1D5ECC0", Offset = "0x1D5D6C0", VA = "0x181D5ECC0")] internal static void Shutdown() { int num; do { num = 0; object sync = CallbackDispatcher.m_sync; CallbackDispatcher.UnregisterAll(); Marshal.FreeHGlobal(CallbackDispatcher.m_pCallbackMsg); CallbackDispatcher.m_pCallbackMsg = (IntPtr)num; Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x0600673C RID: 26428 RVA: 0x0016A0DC File Offset: 0x001682DC [Token(Token = "0x600673C")] [Address(RVA = "0x1D5DE40", Offset = "0x1D5C840", VA = "0x181D5DE40")] internal static void Register(Callback cb) { int num; do { num = 0; bool isGameServer = cb.IsGameServer; if (cb.ToString() != 0) { } Dictionary> registeredCallbacks = CallbackDispatcher.m_registeredCallbacks; object sync = CallbackDispatcher.m_sync; int num2 = 0; int num3; if (!registeredCallbacks.TryGetValue(num3, num2)) { List list = new List(); registeredCallbacks.Add(num3, list); } Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x0600673D RID: 26429 RVA: 0x0016A144 File Offset: 0x00168344 [Token(Token = "0x600673D")] [Address(RVA = "0x1D5E070", Offset = "0x1D5CA70", VA = "0x181D5E070")] internal static void Register(SteamAPICall_t asyncCall, CallResult cr) { int num; do { num = 0; object sync = CallbackDispatcher.m_sync; Dictionary> registeredCallResults = CallbackDispatcher.m_registeredCallResults; bool flag; if (!flag) { List list = new List(); Dictionary> registeredCallResults2 = CallbackDispatcher.m_registeredCallResults; } Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x0600673E RID: 26430 RVA: 0x0016A194 File Offset: 0x00168394 [Token(Token = "0x600673E")] [Address(RVA = "0x1D5F830", Offset = "0x1D5E230", VA = "0x181D5F830")] internal static void Unregister(Callback cb) { int num; do { num = 0; bool isGameServer = cb.IsGameServer; if (cb.ToString() != 0) { } Dictionary> registeredCallbacks = CallbackDispatcher.m_registeredCallbacks; object sync = CallbackDispatcher.m_sync; int num2 = 0; int num3; if (registeredCallbacks.TryGetValue(num3, num2)) { bool flag = registeredCallbacks.Remove(num3); } Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x0600673F RID: 26431 RVA: 0x0016A1FC File Offset: 0x001683FC [Token(Token = "0x600673F")] [Address(RVA = "0x1D5F5F0", Offset = "0x1D5DFF0", VA = "0x181D5F5F0")] internal static void Unregister(SteamAPICall_t asyncCall, CallResult cr) { int num; do { num = 0; object sync = CallbackDispatcher.m_sync; Dictionary> registeredCallResults = CallbackDispatcher.m_registeredCallResults; bool flag; if (flag) { Dictionary> registeredCallResults2 = CallbackDispatcher.m_registeredCallResults; } Monitor.Exit(sync); if (num != -1) { } } while (num != 0); } // Token: 0x06006740 RID: 26432 RVA: 0x0016A248 File Offset: 0x00168448 [Token(Token = "0x6006740")] [Address(RVA = "0x1D5EE60", Offset = "0x1D5D860", VA = "0x181D5EE60")] private static void UnregisterAll() { for (;;) { int num = 0; List list = new List(); List list2 = new List(); object sync = CallbackDispatcher.m_sync; Dictionary> registeredCallbacks = CallbackDispatcher.m_registeredCallbacks; Dictionary.Enumerator enumerator; if (enumerator != 0) { } if (num == -1) { goto IL_3A; } CallbackDispatcher.m_registeredCallbacks.Clear(); Dictionary> registeredGameServerCallbacks = CallbackDispatcher.m_registeredGameServerCallbacks; Dictionary.Enumerator enumerator2; if (enumerator2 != 0) { goto IL_3A; } IL_41: num++; if (num == -1) { goto IL_5F; } CallbackDispatcher.m_registeredGameServerCallbacks.Clear(); Dictionary> registeredCallResults = CallbackDispatcher.m_registeredCallResults; Dictionary.Enumerator enumerator3; if (enumerator3 != 0) { goto IL_5F; } IL_63: num++; if (num == -1) { goto IL_87; } Dictionary> registeredCallResults2 = CallbackDispatcher.m_registeredCallResults; registeredCallResults2.Clear(); List.Enumerator enumerator4; if (enumerator4 != 0) { ICollection collection = registeredCallResults2.System.Collections.Generic.IDictionary.get_Keys(); goto IL_87; } IL_8B: num++; List.Enumerator enumerator5; if ((num == -1 || enumerator5 != 0) && num != 0) { goto IL_D3; } num++; if (num != -1) { } if (num != 0) { goto IL_D9; } Monitor.Exit(registeredCallResults2); if (num != -1) { } if (num == 0) { break; } continue; IL_87: if (num == 0) { goto IL_8B; } goto IL_CD; IL_5F: if (num == 0) { goto IL_63; } goto IL_C7; IL_3A: if (num == 0) { goto IL_41; } goto IL_C1; } return; IL_C1: throw new NullReferenceException(); IL_C7: throw new NullReferenceException(); IL_CD: throw new NullReferenceException(); IL_D3: throw new NullReferenceException(); IL_D9: throw new NullReferenceException(); } // Token: 0x06006741 RID: 26433 RVA: 0x0016A360 File Offset: 0x00168560 [Token(Token = "0x6006741")] [Address(RVA = "0x1D5E2C0", Offset = "0x1D5CCC0", VA = "0x181D5E2C0")] internal static void RunFrame(bool isGameServer) { for (;;) { int num = 0; if (isGameServer) { int num2 = NativeMethods.SteamGameServer_GetHSteamPipe(); } int num3 = NativeMethods.SteamAPI_GetHSteamPipe(); if (isGameServer) { } bool flag; if (flag) { IntPtr pCallbackMsg = CallbackDispatcher.m_pCallbackMsg; Type typeFromHandle = typeof(CallbackMsg_t); object obj = Marshal.PtrToStructure(pCallbackMsg, typeFromHandle); bool flag2; if (!flag2) { goto IL_E3; } object sync = CallbackDispatcher.m_sync; uint num4; num4 += (uint)1; Monitor.Exit(sync); List.Enumerator enumerator; if ((num4 == (uint)(-1) || enumerator != 0) && num != 0) { goto IL_FE; } num4 += (uint)1; if (num4 != (uint)(-1)) { } if (num == 0) { Type typeFromHandle2 = typeof(SteamAPICallCompleted_t); object obj2 = Marshal.PtrToStructure(typeof(Marshal).TypeHandle, typeFromHandle2); bool flag3; if (flag3) { object sync2 = CallbackDispatcher.m_sync; Dictionary> registeredCallResults = CallbackDispatcher.m_registeredCallResults; bool flag4; if (flag4) { Dictionary> registeredCallResults2 = CallbackDispatcher.m_registeredCallResults; List.Enumerator enumerator2; if (enumerator2 != 0) { } num4 += (uint)1; if (num4 != (uint)(-1)) { } if (num != 0) { goto IL_116; } } num4 += (uint)1; Monitor.Exit(sync2); if (num4 == (uint)(-1)) { goto IL_E8; } } IntPtr intPtr; Marshal.FreeHGlobal(intPtr); goto IL_E3; } goto IL_104; IL_E8: if (num != 0) { goto IL_128; } num4 += (uint)1; if (num4 != (uint)(-1)) { } if (num == 0) { break; } continue; IL_E3: num4 += (uint)1; goto IL_E8; } break; } return; IL_FE: throw new NullReferenceException(); IL_104: throw new NullReferenceException(); IL_116: throw new NullReferenceException(); IL_128: throw new NullReferenceException(); } // Token: 0x0400496A RID: 18794 [Token(Token = "0x400496A")] private static Dictionary> m_registeredCallbacks = new Dictionary(); // Token: 0x0400496B RID: 18795 [Token(Token = "0x400496B")] private static Dictionary> m_registeredGameServerCallbacks = new Dictionary(); // Token: 0x0400496C RID: 18796 [Token(Token = "0x400496C")] private static Dictionary> m_registeredCallResults = new Dictionary(); // Token: 0x0400496D RID: 18797 [Token(Token = "0x400496D")] private static object m_sync = new object(); // Token: 0x0400496E RID: 18798 [Token(Token = "0x400496E")] private static IntPtr m_pCallbackMsg; // Token: 0x0400496F RID: 18799 [Token(Token = "0x400496F")] private static int m_initCount; } }