using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Cpp2IlInjected; namespace Steamworks { // Token: 0x0200178A RID: 6026 [Token(Token = "0x200178A")] public sealed class Callback : Callback, IDisposable { // Token: 0x140000B6 RID: 182 // (add) Token: 0x06008A8F RID: 35471 RVA: 0x001D4E50 File Offset: 0x001D3050 // (remove) Token: 0x06008A90 RID: 35472 RVA: 0x001D4E78 File Offset: 0x001D3078 [Token(Token = "0x140000B6")] private event Callback.DispatchDelegate m_Func { [Token(Token = "0x6008A8F")] [Address(RVA = "0x32CF670", Offset = "0x32CE670", VA = "0x1832CF670")] [CompilerGenerated] add { Callback.DispatchDelegate func; Delegate @delegate; do { func = this.m_Func; @delegate = Delegate.Combine(func, value); if (@delegate == 0) { } } while (@delegate == 0); while (@delegate != func) { } } [Token(Token = "0x6008A90")] [Address(RVA = "0x32CF730", Offset = "0x32CE730", VA = "0x1832CF730")] [CompilerGenerated] remove { Callback.DispatchDelegate func; Delegate @delegate; do { func = this.m_Func; @delegate = Delegate.Remove(func, value); if (@delegate == 0) { } } while (@delegate == 0); while (@delegate != func) { } } } // Token: 0x06008A91 RID: 35473 RVA: 0x001D4EA0 File Offset: 0x001D30A0 [Token(Token = "0x6008A91")] [Address(RVA = "0x32CF8C0", Offset = "0x32CE8C0", VA = "0x1832CF8C0")] public static Callback Create(Callback.DispatchDelegate func) { int num; Callback callback = new Callback(func, num != 0); num = 0; return callback; } // Token: 0x06008A92 RID: 35474 RVA: 0x001D4EB8 File Offset: 0x001D30B8 [Token(Token = "0x6008A92")] [Address(RVA = "0x32CF7F0", Offset = "0x32CE7F0", VA = "0x1832CF7F0")] public static Callback CreateGameServer(Callback.DispatchDelegate func) { return new Callback(func, true); } // Token: 0x06008A93 RID: 35475 RVA: 0x001D4ECC File Offset: 0x001D30CC [Token(Token = "0x6008A93")] [Address(RVA = "0x32D0EA0", Offset = "0x32CFEA0", VA = "0x1832D0EA0")] public Callback(Callback.DispatchDelegate func, bool bGameServer = false) { this.m_bGameServer = bGameServer; ((IDisposable)this).Dispose(); } // Token: 0x06008A94 RID: 35476 RVA: 0x001D4EF4 File Offset: 0x001D30F4 [Token(Token = "0x6008A94")] [Address(RVA = "0x32CFDA0", Offset = "0x32CEDA0", VA = "0x1832CFDA0", Slot = "1")] protected override void Finalize() { int num; do { num = 0; this.Dispose(); base..ctor(); } while (num != 0); } // Token: 0x06008A95 RID: 35477 RVA: 0x001D4F1C File Offset: 0x001D311C [Token(Token = "0x6008A95")] [Address(RVA = "0x32CFBD0", Offset = "0x32CEBD0", VA = "0x1832CFBD0", Slot = "8")] public void Dispose() { GC.SuppressFinalize(this); this.Unregister(); this.m_bDisposed = true; } // Token: 0x06008A96 RID: 35478 RVA: 0x001D4F3C File Offset: 0x001D313C [Token(Token = "0x6008A96")] [Address(RVA = "0x32D0A40", Offset = "0x32CFA40", VA = "0x1832D0A40")] public void Register(Callback.DispatchDelegate func) { /* An exception occurred when decompiling this method (06008A96) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void Steamworks.Callback`1::Register(Steamworks.Callback`1/DispatchDelegate) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_1F: stloc:Exception(var_0_29, newobj:Exception(Exception::.ctor, ldstr:string("Callback function must not be 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: 0x06008A97 RID: 35479 RVA: 0x001D4F74 File Offset: 0x001D3174 [Token(Token = "0x6008A97")] [Address(RVA = "0x32D0CC0", Offset = "0x32CFCC0", VA = "0x1832D0CC0")] public void Unregister() { CallbackDispatcher.Unregister(this); this.m_bIsRegistered = false; } // Token: 0x17001765 RID: 5989 // (get) Token: 0x06008A98 RID: 35480 RVA: 0x001D4F90 File Offset: 0x001D3190 [Token(Token = "0x17001765")] public override bool IsGameServer { [Token(Token = "0x6008A98")] [Address(RVA = "0x497570", Offset = "0x496570", VA = "0x180497570", Slot = "4")] get { return this.m_bGameServer; } } // Token: 0x06008A99 RID: 35481 RVA: 0x001D4FA4 File Offset: 0x001D31A4 [Token(Token = "0x6008A99")] [Address(RVA = "0x32D00A0", Offset = "0x32CF0A0", VA = "0x1832D00A0", Slot = "5")] internal override Type GetCallbackType() { Type type; return type; } // Token: 0x06008A9A RID: 35482 RVA: 0x001D4FB4 File Offset: 0x001D31B4 [Token(Token = "0x6008A9A")] [Address(RVA = "0x32D02D0", Offset = "0x32CF2D0", VA = "0x1832D02D0", Slot = "6")] internal override void OnRunCallback(IntPtr pvParam) { Callback.DispatchDelegate func = this.m_Func; Type type; object obj = Marshal.PtrToStructure(pvParam, type); func(obj); } // Token: 0x06008A9B RID: 35483 RVA: 0x001D4FE4 File Offset: 0x001D31E4 [Token(Token = "0x6008A9B")] [Address(RVA = "0x32D0CB0", Offset = "0x32CFCB0", VA = "0x1832D0CB0", Slot = "7")] internal override void SetUnregistered() { this.m_bIsRegistered = false; } // Token: 0x04005B05 RID: 23301 [global::Cpp2IlInjected.FieldOffset(Offset = "0x0")] [Token(Token = "0x4005B05")] private bool m_bGameServer; // Token: 0x04005B06 RID: 23302 [global::Cpp2IlInjected.FieldOffset(Offset = "0x0")] [Token(Token = "0x4005B06")] private bool m_bIsRegistered; // Token: 0x04005B07 RID: 23303 [global::Cpp2IlInjected.FieldOffset(Offset = "0x0")] [Token(Token = "0x4005B07")] private bool m_bDisposed; // Token: 0x0200178B RID: 6027 [Token(Token = "0x200178B")] public sealed class DispatchDelegate : MulticastDelegate { // Token: 0x06008A9C RID: 35484 RVA: 0x001D4FF8 File Offset: 0x001D31F8 [Token(Token = "0x6008A9C")] [Address(RVA = "0x4AF020", Offset = "0x4AE020", VA = "0x1804AF020")] public DispatchDelegate(object @object, IntPtr method) { } // Token: 0x06008A9D RID: 35485 RVA: 0x001D5008 File Offset: 0x001D3208 [Token(Token = "0x6008A9D")] [Address(RVA = "0x32D4D10", Offset = "0x32D3D10", VA = "0x1832D4D10", Slot = "13")] public void Invoke(T param) { uint num; if (num != (uint)0) { throw new ExecutionEngineException(); } } // Token: 0x06008A9E RID: 35486 RVA: 0x001D5078 File Offset: 0x001D3278 [Token(Token = "0x6008A9E")] [Address(RVA = "0x32D4C10", Offset = "0x32D3C10", VA = "0x1832D4C10", Slot = "14")] public IAsyncResult BeginInvoke(T param, AsyncCallback callback, object @object) { } // Token: 0x06008A9F RID: 35487 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x6008A9F")] [Address(RVA = "0x4F56B0", Offset = "0x4F46B0", VA = "0x1804F56B0", Slot = "15")] public void EndInvoke(IAsyncResult result) { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } } } }