using System; using System.Buffers; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Runtime.Versioning; using System.Security.Permissions; using System.Threading; using System.Threading.Tasks; using .$Mirage.Domain; using .$Mirage.Domain.Audio; using .$Mirage.Hook; using .$Mirage.Unity; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Concentus.Oggfile; using Dissonance; using Dissonance.Audio.Capture; using Dissonance.Audio.Playback; using FSharpPlus; using FSharpPlus.Control; using FSharpPlus.Internals; using GameNetcodeStuff; using IcedTasks; using Microsoft.FSharp.Collections; using Microsoft.FSharp.Control; using Microsoft.FSharp.Core; using Microsoft.FSharp.Core.CompilerServices; using Mirage.Compatibility; using Mirage.Core.Audio; using Mirage.Core.Audio.Microphone; using Mirage.Core.Audio.Opus; using Mirage.Core.Task; using Mirage.Domain; using Mirage.Domain.Audio; using Mirage.Hook; using Mirage.NetcodePatcher; using Mirage.Unity; using NAudio.Wave; using Newtonsoft.Json; using On; using On.Dissonance; using On.GameNetcodeStuff; using On.Unity.Netcode; using OpusDotNet; using Silero; using Unity.Collections; using Unity.Netcode; using UnityEngine; [assembly: FSharpInterfaceDataVersion(2, 0, 0)] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("DunGen")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.ASPP")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.UnityNav")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("LethalConfig")] [assembly: IgnoresAccessChecksTo("LethalSettings")] [assembly: IgnoresAccessChecksTo("NAudio.Core")] [assembly: IgnoresAccessChecksTo("NAudio")] [assembly: IgnoresAccessChecksTo("NAudio.WinMM")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.XR.CoreUtils")] [assembly: IgnoresAccessChecksTo("Unity.XR.Management")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.ConformanceAutomation")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MetaQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MockRuntime")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.OculusQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.RuntimeDebugger")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpatialTracking")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("UnityEngine.XR.LegacyInputHelpers")] [assembly: AssemblyCompany("Mirage")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+b678040b73b05cff93508fa92e44b83f62cc77c0")] [assembly: AssemblyProduct("Mirage")] [assembly: AssemblyTitle("Mirage")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: NetcodePatchedAssembly] namespace Mirage { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Main { [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct main@52-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class main@52-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public main@52-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-9(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct main@52-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new main@52-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class main@67-6 { internal static void Invoke() { Mirage.Domain.Setting.Settings settings = Mirage.Domain.Setting.getSettings(); ValueTask valueTask = Mirage.Domain.Audio.Recording.deleteRecordings(settings); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct main@52-5 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string pluginId; public string pluginName; public string pluginVersion; public Assembly assembly; public RuntimeAnimatorController maskedAnimatorController; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Main.initLobbyCompatibility(pluginName, pluginVersion); Main.initGeneralLethalConfig(assembly, Mirage.Domain.Config.localConfig.General@); Mirage.Domain.Netcode.initNetcodePatcher(assembly); DirectoryInfo directoryInfo = System.IO.Directory.CreateDirectory(Mirage.Domain.Directory.mirageDirectory); awaiter = Mirage.Domain.Setting.initSettings(Path.Join((ReadOnlySpan)Mirage.Domain.Directory.mirageDirectory, (ReadOnlySpan)"settings.json"), pluginId, pluginName, pluginVersion).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00ce; } case 1: { num = 1; goto IL_00ce; } IL_00ce: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { Mirage.Domain.Setting.Settings result = awaiter.GetResult(); Mirage.Domain.Setting.Settings settings = result; Mirage.Domain.Logger.logInfo.Invoke("Loaded settings: " + JsonConvert.SerializeObject((object)settings, (Formatting)1)); ValueTask valueTask = Mirage.Domain.Audio.Recording.deleteRecordings(settings); Application.quitting += main@67-6.Invoke; Mirage.Hook.Dissonance.cacheDissonance(); Mirage.Hook.Microphone.readMicrophone(Mirage.Domain.Directory.recordingDirectory); Mirage.Hook.Item.populateItems(); Mirage.Hook.AudioSpatializer.disableAudioSpatializer(); Mirage.Hook.Prefab.registerPrefab(); Mirage.Hook.Config.syncConfig(); Mirage.Hook.MaskedPlayerEnemy.hookMaskedEnemy(maskedAnimatorController); Mirage.Hook.PlayerControllerB.hookPlayerControllerB(); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class main@52-4 : FSharpFunc> { public string pluginId; public string pluginName; public string pluginVersion; public Assembly assembly; public RuntimeAnimatorController maskedAnimatorController; [CompilerGenerated] [DebuggerNonUserCode] internal main@52-4(string pluginId, string pluginName, string pluginVersion, Assembly assembly, RuntimeAnimatorController maskedAnimatorController) { this.pluginId = pluginId; this.pluginName = pluginName; this.pluginVersion = pluginVersion; this.assembly = assembly; this.maskedAnimatorController = maskedAnimatorController; } public override ValueTask Invoke(Unit unitVar0) { main@52-5 stateMachine = default(main@52-5); stateMachine.pluginId = pluginId; stateMachine.pluginName = pluginName; stateMachine.pluginVersion = pluginVersion; stateMachine.assembly = assembly; stateMachine.maskedAnimatorController = maskedAnimatorController; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class main@34 : GeneratedSequenceBase { public string pluginLocation; public string pluginId; public string pluginName; public string pluginVersion; public Assembly assembly; public AssetBundleCreateRequest bundleRequest; public AssetBundleRequest assetRequest; public RuntimeAnimatorController maskedAnimatorController; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public IEnumerator @enum; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public int pc; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public object current; public main@34(string pluginLocation, string pluginId, string pluginName, string pluginVersion, Assembly assembly, AssetBundleCreateRequest bundleRequest, AssetBundleRequest assetRequest, RuntimeAnimatorController maskedAnimatorController, IEnumerator @enum, int pc, object current) { this.pluginLocation = pluginLocation; this.pluginId = pluginId; this.pluginName = pluginName; this.pluginVersion = pluginVersion; this.assembly = assembly; this.bundleRequest = bundleRequest; this.assetRequest = assetRequest; this.maskedAnimatorController = maskedAnimatorController; this.@enum = @enum; this.pc = pc; this.current = current; base..ctor(); } public override int GenerateNext(ref IEnumerable next) { //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Expected O, but got Unknown //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) switch (pc) { default: Mirage.Domain.Logger.initLogger(pluginId); assembly = Assembly.GetExecutingAssembly(); bundleRequest = AssetBundle.LoadFromFileAsync(Path.Combine(pluginLocation, "Mirage.unity3d")); pc = 1; current = bundleRequest; return 1; case 1: { AssetBundle assetBundle = bundleRequest.assetBundle; object obj = assetBundle; if (obj == null || (obj is Object && !Object.op_Implicit((Object)obj))) { InvalidProgramException ex = new InvalidProgramException("Failed to load Mirage due to missing asset bundle: " + "Mirage.unity3d" + "."); if (0 == 0) { throw ex; } _ = (Unit)(object)null; } assetRequest = assetBundle.LoadAssetAsync("metarig_0.controller"); pc = 2; current = assetRequest; return 1; } case 2: { maskedAnimatorController = (RuntimeAnimatorController)(object)assetRequest.asset; Array values = Enum.GetValues(typeof(LogCategory)); @enum = SeqModule.Cast((IEnumerable)values).GetEnumerator(); pc = 3; while (@enum.MoveNext()) { LogCategory val = @enum.Current; Logs.SetLogLevel(val, (LogLevel)4); } goto case 3; } case 3: { pc = 4; IntrinsicFunctions.Dispose>(@enum); @enum = null; CancellationToken none = CancellationToken.None; FSharpFunc> program = new main@52-4(pluginId, pluginName, pluginVersion, assembly, maskedAnimatorController); ValueTask valueTask = func1@1-6(none, program); maskedAnimatorController = null; assetRequest = null; bundleRequest = null; assembly = null; pc = 4; break; } case 4: break; } current = null; return 0; } public override void Close() { Exception ex = default(Exception); while (true) { switch (pc) { case 4: if (ex != null) { throw ex; } return; } try { switch (pc) { case 3: pc = 4; IntrinsicFunctions.Dispose>(@enum); break; } pc = 4; current = null; } catch (object obj) { Exception ex2 = (Exception)obj; ex = ex2; } } } public override bool get_CheckClose() { return pc switch { 3 => true, 2 => false, 1 => false, _ => false, }; } [CompilerGenerated] [DebuggerNonUserCode] public override object get_LastGenerated() { return current; } [CompilerGenerated] [DebuggerNonUserCode] public override IEnumerator GetFreshEnumerator() { return (IEnumerator)(object)new main@34(pluginLocation, pluginId, pluginName, pluginVersion, null, null, null, null, null, 0, null); } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const string bundleName = "Mirage.unity3d"; [CompilerGenerated] internal static ValueTask thread@1-9(FSharpFunc> program, Channel> channel, Unit unitVar0) { main@52-2 stateMachine = default(main@52-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-6(CancellationToken cancellationToken, FSharpFunc> program) { main@52-1 stateMachine = default(main@52-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilationArgumentCounts(new int[] { 1, 1, 1, 1 })] public static IEnumerator main(string pluginLocation, string pluginId, string pluginName, string pluginVersion) { return (IEnumerator)(object)new main@34(pluginLocation, pluginId, pluginName, pluginVersion, null, null, null, null, null, 0, null); } } } namespace .$Mirage { internal static class Main { } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class AssemblyInfo { } namespace { internal static class $AssemblyInfo { } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Microphone { [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct ProcessingInput : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Samples samples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal WaveFormat format@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool isReady@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool isPlayerDead@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool pushToTalkEnabled@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool isMuted@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool allowRecordVoice@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly Samples samples { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return samples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly WaveFormat format { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return format@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool isReady { [CompilerGenerated] [DebuggerNonUserCode] get { return isReady@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool isPlayerDead { [CompilerGenerated] [DebuggerNonUserCode] get { return isPlayerDead@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool pushToTalkEnabled { [CompilerGenerated] [DebuggerNonUserCode] get { return pushToTalkEnabled@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool isMuted { [CompilerGenerated] [DebuggerNonUserCode] get { return isMuted@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool allowRecordVoice { [CompilerGenerated] [DebuggerNonUserCode] get { return allowRecordVoice@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(ProcessingInput))] public ProcessingInput(Samples samples, WaveFormat format, bool isReady, bool isPlayerDead, bool pushToTalkEnabled, bool isMuted, bool allowRecordVoice) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) samples@ = samples; format@ = format; isReady@ = isReady; isPlayerDead@ = isPlayerDead; pushToTalkEnabled@ = pushToTalkEnabled; isMuted@ = isMuted; allowRecordVoice@ = allowRecordVoice; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, ProcessingInput>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(ProcessingInput obj) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) IComparer genericComparer = LanguagePrimitives.GenericComparer; Samples val = samples@; Samples val2 = obj.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, genericComparer); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; WaveFormat val3 = format@; WaveFormat val4 = obj.format@; int num2 = ((WaveFormat)(ref val3)).CompareTo((object)val4, genericComparer); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } genericComparer = LanguagePrimitives.GenericComparer; bool flag = isReady@; bool flag2 = obj.isReady@; int num3 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } genericComparer = LanguagePrimitives.GenericComparer; flag = isPlayerDead@; flag2 = obj.isPlayerDead@; int num4 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } genericComparer = LanguagePrimitives.GenericComparer; flag = pushToTalkEnabled@; flag2 = obj.pushToTalkEnabled@; int num5 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } genericComparer = LanguagePrimitives.GenericComparer; flag = isMuted@; flag2 = obj.isMuted@; int num6 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num6 < 0) { return num6; } if (num6 > 0) { return num6; } genericComparer = LanguagePrimitives.GenericComparer; flag = allowRecordVoice@; flag2 = obj.allowRecordVoice@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((ProcessingInput)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) ProcessingInput processingInput = (ProcessingInput)obj; Samples val = samples@; Samples val2 = processingInput.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, comp); if (num < 0) { return num; } if (num > 0) { return num; } WaveFormat val3 = format@; WaveFormat val4 = processingInput.format@; int num2 = ((WaveFormat)(ref val3)).CompareTo((object)val4, comp); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } bool flag = isReady@; bool flag2 = processingInput.isReady@; int num3 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } flag = isPlayerDead@; flag2 = processingInput.isPlayerDead@; int num4 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } flag = pushToTalkEnabled@; flag2 = processingInput.pushToTalkEnabled@; int num5 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } flag = isMuted@; flag2 = processingInput.isMuted@; int num6 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num6 < 0) { return num6; } if (num6 > 0) { return num6; } flag = allowRecordVoice@; flag2 = processingInput.allowRecordVoice@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) int num = 0; num = -1640531527 + ((allowRecordVoice@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((isMuted@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((pushToTalkEnabled@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((isPlayerDead@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((isReady@ ? 1 : 0) + ((num << 6) + (num >> 2))); WaveFormat val = format@; num = -1640531527 + (((WaveFormat)(ref val)).GetHashCode(comp) + ((num << 6) + (num >> 2))); Samples val2 = samples@; return -1640531527 + (((Samples)(ref val2)).GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(ProcessingInput obj, IEqualityComparer comp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; Samples val2 = obj.samples@; if (((Samples)(ref val)).Equals((object)val2, comp)) { WaveFormat val3 = format@; WaveFormat val4 = obj.format@; if (((WaveFormat)(ref val3)).Equals((object)val4, comp)) { if (isReady@ == obj.isReady@) { if (isPlayerDead@ == obj.isPlayerDead@) { if (pushToTalkEnabled@ == obj.pushToTalkEnabled@) { if (isMuted@ == obj.isMuted@) { return allowRecordVoice@ == obj.allowRecordVoice@; } return false; } return false; } return false; } return false; } return false; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is ProcessingInput obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(ProcessingInput obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; if (((Samples)(ref val)).Equals(obj.samples@)) { WaveFormat val2 = format@; if (((WaveFormat)(ref val2)).Equals(obj.format@)) { if (isReady@ == obj.isReady@) { if (isPlayerDead@ == obj.isPlayerDead@) { if (pushToTalkEnabled@ == obj.pushToTalkEnabled@) { if (isMuted@ == obj.isMuted@) { return allowRecordVoice@ == obj.allowRecordVoice@; } return false; } return false; } return false; } return false; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is ProcessingInput) { return Equals((ProcessingInput)obj); } return false; } } [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct ProcessingState : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpValueOption forcedProbability@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool allowRecordVoice@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly FSharpValueOption forcedProbability { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return forcedProbability@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly bool allowRecordVoice { [CompilerGenerated] [DebuggerNonUserCode] get { return allowRecordVoice@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(ProcessingState))] public ProcessingState(FSharpValueOption forcedProbability, bool allowRecordVoice) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) forcedProbability@ = forcedProbability; allowRecordVoice@ = allowRecordVoice; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, ProcessingState>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(ProcessingState obj) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) IComparer genericComparer = LanguagePrimitives.GenericComparer; FSharpValueOption val = forcedProbability@; FSharpValueOption val2 = obj.forcedProbability@; int num = val.CompareTo((object)val2, genericComparer); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; bool flag = allowRecordVoice@; bool flag2 = obj.allowRecordVoice@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((ProcessingState)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) ProcessingState processingState = (ProcessingState)obj; FSharpValueOption val = forcedProbability@; FSharpValueOption val2 = processingState.forcedProbability@; int num = val.CompareTo((object)val2, comp); if (num < 0) { return num; } if (num > 0) { return num; } bool flag = allowRecordVoice@; bool flag2 = processingState.allowRecordVoice@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) int num = 0; num = -1640531527 + ((allowRecordVoice@ ? 1 : 0) + ((num << 6) + (num >> 2))); FSharpValueOption val = forcedProbability@; return -1640531527 + (val.GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(ProcessingState obj, IEqualityComparer comp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) FSharpValueOption val = forcedProbability@; FSharpValueOption val2 = obj.forcedProbability@; if (val.Equals((object)val2, comp)) { return allowRecordVoice@ == obj.allowRecordVoice@; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is ProcessingState obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(ProcessingState obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) if (HashCompare.GenericEqualityERIntrinsic>(forcedProbability@, obj.forcedProbability@)) { return allowRecordVoice@ == obj.allowRecordVoice@; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is ProcessingState) { return Equals((ProcessingState)obj); } return false; } } [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct BufferInput : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Samples samples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int sampleRate@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int channels@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly Samples samples { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return samples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int sampleRate { [CompilerGenerated] [DebuggerNonUserCode] get { return sampleRate@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int channels { [CompilerGenerated] [DebuggerNonUserCode] get { return channels@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(BufferInput))] public BufferInput(Samples samples, int sampleRate, int channels) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) samples@ = samples; sampleRate@ = sampleRate; channels@ = channels; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, BufferInput>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(BufferInput obj) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) IComparer genericComparer = LanguagePrimitives.GenericComparer; Samples val = samples@; Samples val2 = obj.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, genericComparer); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; int num2 = sampleRate@; int num3 = obj.sampleRate@; int num4 = ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } genericComparer = LanguagePrimitives.GenericComparer; num2 = channels@; num3 = obj.channels@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((BufferInput)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) BufferInput bufferInput = (BufferInput)obj; Samples val = samples@; Samples val2 = bufferInput.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, comp); if (num < 0) { return num; } if (num > 0) { return num; } int num2 = sampleRate@; int num3 = bufferInput.sampleRate@; int num4 = ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } num2 = channels@; num3 = bufferInput.channels@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) int num = 0; num = -1640531527 + (channels@ + ((num << 6) + (num >> 2))); num = -1640531527 + (sampleRate@ + ((num << 6) + (num >> 2))); Samples val = samples@; return -1640531527 + (((Samples)(ref val)).GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(BufferInput obj, IEqualityComparer comp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; Samples val2 = obj.samples@; if (((Samples)(ref val)).Equals((object)val2, comp)) { if (sampleRate@ == obj.sampleRate@) { return channels@ == obj.channels@; } return false; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is BufferInput obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(BufferInput obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; if (((Samples)(ref val)).Equals(obj.samples@)) { if (sampleRate@ == obj.sampleRate@) { return channels@ == obj.channels@; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is BufferInput) { return Equals((BufferInput)obj); } return false; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@63-7 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: awaiter = channel@61.reader.ReadAsync(channel@61.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0074; case 1: { num = 1; goto IL_0074; } IL_0074: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { BufferInput result = awaiter.GetResult(); BufferInput bufferInput = result; object instance = StartOfRound.Instance; if (instance == null || (instance is Object && !Object.op_Implicit((Object)instance))) { goto IL_015a; } ProcessingInput processingInput = new ProcessingInput(bufferInput.samples@, new WaveFormat(bufferInput.sampleRate@, bufferInput.channels@), isReady, StartOfRound.Instance.localPlayerController.isPlayerDead, IngamePlayerSettings.Instance.settings.pushToTalk, Dissonance.getDissonance().IsMuted, Mirage.Domain.Setting.getSettings().allowRecordVoice@); func2@1(FSharpValueOption.NewValueSome(processingInput)); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { goto IL_015a; } goto end_IL_0019; IL_015a: ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0019:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@63-8 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00cf; case 1: { num = 1; goto IL_0069; } IL_00cf: if (flag) { awaiter = program@1-7(null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_0073; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0069; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_0069: flag3 = (byte)num != 0; flag2 = flag3; goto IL_0073; IL_0073: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00cf; } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class consumer@63-6 : FSharpFunc> { internal static readonly consumer@63-6 @_instance = new consumer@63-6(); [CompilerGenerated] [DebuggerNonUserCode] internal consumer@63-6() { } public override ValueTask Invoke(Unit unitVar0) { consumer@63-8 stateMachine = default(consumer@63-8); stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct bufferChannel@79-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class bufferChannel@79-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public bufferChannel@79-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-7(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct bufferChannel@79-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new bufferChannel@79-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class bufferChannel@79-4 : FSharpFunc>, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public CancellationToken cancellationToken; [CompilerGenerated] [DebuggerNonUserCode] internal bufferChannel@79-4(CancellationToken cancellationToken) { this.cancellationToken = cancellationToken; } public override Unit Invoke(FSharpFunc> x) { ValueTask valueTask = func1@1-4(cancellationToken, x); return null; } } [Serializable] internal sealed class bufferChannel@79 : FSharpFunc>, Unit>> { internal static readonly bufferChannel@79 @_instance = new bufferChannel@79(); [CompilerGenerated] [DebuggerNonUserCode] internal bufferChannel@79() { } public override FSharpFunc>, Unit> Invoke(CancellationToken cancellationToken) { return new bufferChannel@79-4(cancellationToken); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class MicrophoneSubscriber : IMicrophoneSubscriber { unsafe virtual void IMicrophoneSubscriber.ReceiveMicrophoneData(ArraySegment buffer, WaveFormat format) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) float[] array = ArrayPool.Shared.Rent(buffer.Count); Buffer.BlockCopy(buffer.Array, buffer.Offset, array, 0, buffer.Count * sizeof(float)); BufferInput item = new BufferInput(new Samples(array, buffer.Count), format.SampleRate, format.Channels); ValueTask valueTask = bufferChannel.writer.WriteAsync(item, bufferChannel.cancellationToken); } virtual void IMicrophoneSubscriber.Reset() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) FSharpValueOption valueNone = FSharpValueOption.ValueNone; ValueTask valueTask = processingChannel.writer.WriteAsync(valueNone, processingChannel.cancellationToken); } } [Serializable] internal sealed class recorder@100 : FSharpFunc { internal static readonly recorder@100 @_instance = new recorder@100(); [CompilerGenerated] [DebuggerNonUserCode] internal recorder@100() { } public override bool Invoke(ProcessingState _arg1) { return _arg1.allowRecordVoice@; } } [Serializable] internal sealed class voiceDetector@105 : FSharpFunc> { internal static readonly voiceDetector@105 @_instance = new voiceDetector@105(); [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@105() { } public override FSharpValueOption Invoke(ProcessingState _arg2) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return _arg2.forcedProbability@; } } [Serializable] internal sealed class voiceDetector@108-1 : FSharpFunc { public SileroVAD silero; [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@108-1(SileroVAD silero) { this.silero = silero; } public override float Invoke(float[] pcmData, int pcmLength) { return API.detectSpeech(silero, pcmData, pcmLength); } } [Serializable] internal sealed class voiceDetector@108-2 : FSharpFunc> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> func2; [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@108-2(FSharpFunc> func2) { this.func2 = func2; } public override FSharpFunc Invoke(Samples x) { return func2.Invoke(((Samples)(ref x)).data); } } [Serializable] internal sealed class voiceDetector@109-5 : FSharpFunc<(ProcessingState, DetectAction), Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel<(ProcessingState, DetectAction)> channel; [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@109-5(Channel<(ProcessingState, DetectAction)> channel) { this.channel = channel; } public override Unit Invoke((ProcessingState, DetectAction) element) { ValueTask valueTask = channel.writer.WriteAsync(element, channel.cancellationToken); return null; } } [Serializable] internal sealed class voiceDetector@109-4 : FSharpFunc, FSharpFunc<(ProcessingState, DetectAction), Unit>> { internal static readonly voiceDetector@109-4 @_instance = new voiceDetector@109-4(); [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@109-4() { } public override FSharpFunc<(ProcessingState, DetectAction), Unit> Invoke(Recorder recorder) { Channel<(ProcessingState, DetectAction)> channel = recorder.channel; return new voiceDetector@109-5(channel); } } [Serializable] internal sealed class voiceDetector@109-3 : FSharpFunc { public Recorder recorder; [CompilerGenerated] [DebuggerNonUserCode] internal voiceDetector@109-3(Recorder recorder) { this.recorder = recorder; } public override Unit Invoke(ProcessingState state, DetectAction action) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) return FSharpFunc, (ProcessingState, DetectAction)>.InvokeFast((FSharpFunc, FSharpFunc<(ProcessingState, DetectAction), Unit>>)voiceDetector@109-4.@_instance, recorder, (state, action)); } } [Serializable] internal sealed class resampler@111 : FSharpFunc, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; [CompilerGenerated] [DebuggerNonUserCode] internal resampler@111(Channel> channel) { this.channel = channel; } public override Unit Invoke(ResamplerOutput element) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) ValueTask valueTask = channel.writer.WriteAsync(element, channel.cancellationToken); return null; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@113-10 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Resampler resampler; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: awaiter = processingChannel.reader.ReadAsync(processingChannel.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0074; case 1: { num = 1; goto IL_0074; } IL_0074: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpValueOption result = awaiter.GetResult(); FSharpValueOption val = result; if (val.Tag != 1) { Resampler val2 = resampler; Channel> channel = val2.channel; ResamplerInput reset = ResamplerInput.Reset; ValueTask valueTask = channel.writer.WriteAsync(reset, channel.cancellationToken); num2 = 1; } else { ProcessingInput item = val.Item; if (!item.isReady@ || !Mirage.Domain.Config.isConfigReady() || (!Mirage.Domain.Config.getConfig().enableRecordVoiceWhileDead@ && item.isPlayerDead@)) { goto IL_01da; } AudioFrame item2 = new AudioFrame(item.samples@, item.format@); ProcessingState item3 = new ProcessingState(item.isMuted@ ? FSharpValueOption.NewValueSome(0f) : ((!item.pushToTalkEnabled@) ? FSharpValueOption.ValueNone : FSharpValueOption.NewValueSome(1f)), Mirage.Domain.Setting.getSettings().allowRecordVoice@); Channel> channel = resampler.channel; ResamplerInput reset = ResamplerInput.NewResamplerInput((item3, item2)); ValueTask valueTask = channel.writer.WriteAsync(reset, channel.cancellationToken); num2 = 1; } } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { goto IL_01da; } goto end_IL_0019; IL_01da: ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0019:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@113-11 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Resampler resampler; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00d5; case 1: { num = 1; goto IL_006f; } IL_00d5: if (flag) { awaiter = program@1-8(resampler, null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_0079; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_006f; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_006f: flag3 = (byte)num != 0; flag2 = flag3; goto IL_0079; IL_0079: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00d5; } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class consumer@113-9 : FSharpFunc> { public Resampler resampler; [CompilerGenerated] [DebuggerNonUserCode] internal consumer@113-9(Resampler resampler) { this.resampler = resampler; } public override ValueTask Invoke(Unit unitVar0) { consumer@113-11 stateMachine = default(consumer@113-11); stateMachine.resampler = resampler; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct readMicrophone@132-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class readMicrophone@132-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public readMicrophone@132-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-8(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct readMicrophone@132-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new readMicrophone@132-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class readMicrophone@132-4 : FSharpFunc>, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public CancellationToken cancellationToken; [CompilerGenerated] [DebuggerNonUserCode] internal readMicrophone@132-4(CancellationToken cancellationToken) { this.cancellationToken = cancellationToken; } public override Unit Invoke(FSharpFunc> x) { ValueTask valueTask = func1@1-5(cancellationToken, x); return null; } } [Serializable] internal sealed class readMicrophone@132 : FSharpFunc>, Unit>> { internal static readonly readMicrophone@132 @_instance = new readMicrophone@132(); [CompilerGenerated] [DebuggerNonUserCode] internal readMicrophone@132() { } public override FSharpFunc>, Unit> Invoke(CancellationToken cancellationToken) { return new readMicrophone@132-4(cancellationToken); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@134-5 { internal static void Invoke(orig_Start orig, DissonanceComms self) { orig.Invoke(self); MicrophoneSubscriber microphoneSubscriber = new MicrophoneSubscriber(); self.SubscribeToRecordedAudio((IMicrophoneSubscriber)(object)microphoneSubscriber); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@141-6 { internal static void Invoke(orig_StartTrackingAllPlayerVoices orig, StartOfRound self) { isReady = true; orig.Invoke(self); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@147-7 { internal static void Invoke(orig_OnShipLandedMiscEvents orig, StartOfRound self) { isReady = true; orig.Invoke(self); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@153-8 { internal static void Invoke(orig_OnDestroy orig, StartOfRound self) { isReady = false; orig.Invoke(self); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@158-9 { internal static void Invoke(orig_ReviveDeadPlayers orig, StartOfRound self) { isReady = false; orig.Invoke(self); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class readMicrophone@163-10 { internal static void Invoke(orig_Awake orig, MenuManager self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); FSharpValueOption valueNone = FSharpValueOption.ValueNone; ValueTask valueTask = processingChannel.writer.WriteAsync(valueNone, processingChannel.cancellationToken); } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const int MinAudioDurationMs = 150; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const int MinSilenceDurationMs = 2000; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const int SamplesPerWindow = 2048; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const float StartThreshold = 0.35f; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const float EndThreshold = 0.2f; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static bool isReady { get { return .$Mirage.Hook.Microphone.isReady@44; } set { .$Mirage.Hook.Microphone.isReady@44 = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static Channel> processingChannel => .$Mirage.Hook.Microphone.processingChannel@47; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static Channel bufferChannel => .$Mirage.Hook.Microphone.bufferChannel@60; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static Channel channel@61 => .$Mirage.Hook.Microphone.channel@61-1; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpFunc> consumer@62-5 => .$Mirage.Hook.Microphone.consumer@62; [CompilerGenerated] internal static void func2@1(FSharpValueOption element) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) ValueTask valueTask = processingChannel.writer.WriteAsync(element, processingChannel.cancellationToken); } [CompilerGenerated] internal static ValueTask program@1-7(Unit unitVar0) { consumer@63-7 stateMachine = default(consumer@63-7); stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-7(FSharpFunc> program, Channel> channel, Unit unitVar0) { bufferChannel@79-2 stateMachine = default(bufferChannel@79-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-4(CancellationToken cancellationToken, FSharpFunc> program) { bufferChannel@79-1 stateMachine = default(bufferChannel@79-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask program@1-8(Resampler resampler, Unit unitVar0) { consumer@113-10 stateMachine = default(consumer@113-10); stateMachine.resampler = resampler; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-8(FSharpFunc> program, Channel> channel, Unit unitVar0) { readMicrophone@132-2 stateMachine = default(readMicrophone@132-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-5(CancellationToken cancellationToken, FSharpFunc> program) { readMicrophone@132-1 stateMachine = default(readMicrophone@132-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static void readMicrophone(string recordingDirectory) { //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Expected O, but got Unknown //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown SileroVAD silero = API.SileroVAD(2048); Recorder recorder = Recorder.Recorder(new RecorderArgs(150, recordingDirectory, (FSharpFunc)recorder@100.@_instance)); voiceDetector@105 @_instance; @_instance = voiceDetector@105.@_instance; FSharpFunc> func = (FSharpFunc>)(object)new voiceDetector@108-1(silero); VoiceDetector val = Detection.VoiceDetector(new VoiceDetectorArgs(2000, (FSharpFunc>)@_instance, 0.35f, 0.2f, (FSharpFunc>)new voiceDetector@108-2(func), (FSharpFunc>)(object)new voiceDetector@109-3(recorder))); Channel> channel = val.channel; Resampler resampler = Resampler.Resampler(2048, (FSharpFunc, Unit>)new resampler@111(channel)); FSharpFunc> val2 = new consumer@113-9(resampler); FSharpFunc>>.InvokeFast((FSharpFunc>, Unit>>)readMicrophone@132.@_instance, CancellationToken.None, val2); DissonanceComms.Start += new hook_Start(readMicrophone@134-5.Invoke); StartOfRound.StartTrackingAllPlayerVoices += new hook_StartTrackingAllPlayerVoices(readMicrophone@141-6.Invoke); StartOfRound.OnShipLandedMiscEvents += new hook_OnShipLandedMiscEvents(readMicrophone@147-7.Invoke); StartOfRound.OnDestroy += new hook_OnDestroy(readMicrophone@153-8.Invoke); StartOfRound.ReviveDeadPlayers += new hook_ReviveDeadPlayers(readMicrophone@158-9.Invoke); MenuManager.Awake += new hook_Awake(readMicrophone@163-10.Invoke); } static Microphone() { .$Mirage.Hook.Microphone.init@ = 0; _ = .$Mirage.Hook.Microphone.init@; } } } namespace .$Mirage.Hook { internal static class Microphone { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static bool isReady@44; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Channel> processingChannel@47; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Channel bufferChannel@60; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Channel channel@61-1; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc> consumer@62; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Microphone() { isReady@44 = false; processingChannel@47 = Channel.Channel>(CancellationToken.None); channel@61-1 = Channel.Channel(CancellationToken.None); consumer@62 = Mirage.Hook.Microphone.consumer@63-6.@_instance; FSharpFunc>>.InvokeFast((FSharpFunc>, Unit>>)Mirage.Hook.Microphone.bufferChannel@79.@_instance, CancellationToken.None, Mirage.Hook.Microphone.consumer@62-5); bufferChannel@60 = Mirage.Hook.Microphone.channel@61; } } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Prefab { [Serializable] internal sealed class registerPrefab@21-1 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public GameObject objectArg; [CompilerGenerated] [DebuggerNonUserCode] internal registerPrefab@21-1(GameObject objectArg) { this.objectArg = objectArg; } public override Component Invoke(Type componentType) { return objectArg.AddComponent(componentType); } } [Serializable] internal sealed class registerPrefab@21-2 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc func1; [CompilerGenerated] [DebuggerNonUserCode] internal registerPrefab@21-2(FSharpFunc func1) { this.func1 = func1; } public override Unit Invoke(Type x) { Component val = func1.Invoke(x); return null; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class registerPrefab@14 { internal static void Invoke(orig_Start orig, MenuManager self) { //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown orig.Invoke(self); if (initialized) { return; } initialized = true; List prefabs = ((Component)GameNetworkManager.Instance).GetComponent().NetworkConfig.Prefabs.m_Prefabs; foreach (NetworkPrefab item in prefabs) { EnemyAI component = item.Prefab.GetComponent(); object obj = component; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { GameObject gameObject = ((Component)component).gameObject; FSharpFunc func = new registerPrefab@21-1(gameObject); FSharpFunc val = new registerPrefab@21-2(func); FSharpList val2 = FSharpList.Cons(typeof(Mirage.Unity.AudioStream.AudioStream), FSharpList.Cons(typeof(Mirage.Unity.MimicPlayer.MimicPlayer), FSharpList.Cons(typeof(Mirage.Unity.MimicVoice.MimicVoice), FSharpList.Empty))); Iterate val3 = null; Iterate.Iterate(val2, val); if (component is MaskedPlayerEnemy) { Mirage.Unity.MaskedAnimator.MaskedAnimator maskedAnimator = ((Component)component).gameObject.AddComponent(); } } } } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static bool initialized { get { return .$Mirage.Hook.Prefab.initialized@11; } set { .$Mirage.Hook.Prefab.initialized@11 = value; } } public static void registerPrefab() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown MenuManager.Start += new hook_Start(registerPrefab@14.Invoke); } } } namespace .$Mirage.Hook { internal static class Prefab { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static bool initialized@11; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Prefab() { initialized@11 = false; } } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class MaskedPlayerEnemy { [Serializable] internal sealed class hookMaskedEnemy@29-1 : FSharpFunc { internal static readonly hookMaskedEnemy@29-1 @_instance = new hookMaskedEnemy@29-1(); [CompilerGenerated] [DebuggerNonUserCode] internal hookMaskedEnemy@29-1() { } public override bool Invoke(Transform _arg1) { return ((Object)_arg1).name.StartsWith("HeadMask"); } } [Serializable] internal sealed class hookMaskedEnemy@30-2 : FSharpFunc { internal static readonly hookMaskedEnemy@30-2 @_instance = new hookMaskedEnemy@30-2(); [CompilerGenerated] [DebuggerNonUserCode] internal hookMaskedEnemy@30-2() { } public override Unit Invoke(Transform _arg2) { ((Component)_arg2).gameObject.SetActive(false); return null; } } [Serializable] internal sealed class disable@33 : FSharpFunc { internal static readonly disable@33 @_instance = new disable@33(); [CompilerGenerated] [DebuggerNonUserCode] internal disable@33() { } public override Unit Invoke(Transform transform) { ((Behaviour)((Component)transform).GetComponent()).enabled = false; return null; } } [Serializable] internal sealed class hookMaskedEnemy@35-3 : FSharpFunc { internal static readonly hookMaskedEnemy@35-3 @_instance = new hookMaskedEnemy@35-3(); [CompilerGenerated] [DebuggerNonUserCode] internal hookMaskedEnemy@35-3() { } public override bool Invoke(Transform _arg3) { return ((Object)_arg3).name.StartsWith("MapDot"); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class hookMaskedEnemy@19 { public RuntimeAnimatorController maskedAnimationController; public hookMaskedEnemy@19(RuntimeAnimatorController maskedAnimationController) { this.maskedAnimationController = maskedAnimationController; base..ctor(); } internal void Invoke(orig_Start orig, MaskedPlayerEnemy self) { try { ((Component)self).GetComponent().StartMimicking(); } catch (object obj) when ((Exception)obj is NullReferenceException) { Exception ex2 = (Exception)obj; if (!(ex2 is NullReferenceException)) { throw; } Mirage.Domain.Logger.logWarning.Invoke("\nFailed to initialize voice mimicking due to an incompatible mod." + "\nEnemy name: " + ((EnemyAI)self).enemyType.enemyName); } orig.Invoke(self); if (!Mirage.Domain.Config.getConfig().enableMaskTexture@) { Transform[] componentsInChildren = ((Component)self).GetComponentsInChildren(); FSharpFunc @_instance; @_instance = hookMaskedEnemy@29-1.@_instance; Filter val = null; Transform[] array = ArrayModule.Filter(@_instance, componentsInChildren); FSharpFunc @_instance2; @_instance2 = hookMaskedEnemy@30-2.@_instance; Iterate val2 = null; Iterate.Iterate(array, @_instance2); } if (!Mirage.Domain.Config.getConfig().enableRadarSpin@) { FSharpFunc @_instance2; @_instance2 = disable@33.@_instance; Transform[] array = ((Component)self).GetComponentsInChildren(); FSharpFunc @_instance; @_instance = hookMaskedEnemy@35-3.@_instance; TryFind val3 = null; FSharpOption val4 = ArrayModule.TryFind(@_instance, array); Iterate val2 = null; Iterate.Iterate(val4, @_instance2); } if (!Chainloader.PluginInfos.ContainsKey("VirusTLNR.LethalIntelligence") && Mirage.Domain.Config.getConfig().maskedItemSpawnChance@ > 0) { ((EnemyAI)self).creatureAnimator.runtimeAnimatorController = maskedAnimationController; } } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@43-4 { internal static void Invoke(orig_SetHandsOutClientRpc orig, MaskedPlayerEnemy self, bool _arg1) { orig.Invoke(self, Mirage.Domain.Config.getConfig().enableArmsOut@); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@47-5 { internal static void Invoke(orig_SetHandsOutServerRpc orig, MaskedPlayerEnemy self, bool _arg2) { orig.Invoke(self, Mirage.Domain.Config.getConfig().enableArmsOut@); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@51-6 { internal static IEnumerator Invoke(orig_EndOfGame orig, StartOfRound self, int bodiesInsured, int connectedPlayersOnServer, int scrapCollected) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB[] allPlayerScripts = self.allPlayerScripts; for (int i = 0; i < allPlayerScripts.Length; i++) { allPlayerScripts[i].deadBody = null; } return orig.Invoke(self, bodiesInsured, connectedPlayersOnServer, scrapCollected); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@59-7 { internal static void Invoke(orig_Start orig, GameNetworkManager self) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown orig.Invoke(self); List prefabs = NetworkManager.Singleton.NetworkConfig.Prefabs.m_Prefabs; foreach (NetworkPrefab item in prefabs) { MaskedPlayerEnemy component = item.Prefab.GetComponent(); object obj = component; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { component = item.Prefab.GetComponent(); if (string.Equals(((EnemyAI)component).enemyType.enemyName, "Masked")) { maskedPrefab = component; } } } } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@93-9 { internal static bool Invoke(SpawnableEnemyWithRarity delegateArg0) { return isMaskedEnemy@84(delegateArg0); } } [Serializable] internal sealed class totalWeight@96 : FSharpFunc { internal static readonly totalWeight@96 @_instance = new totalWeight@96(); [CompilerGenerated] [DebuggerNonUserCode] internal totalWeight@96() { } public override bool Invoke(SpawnableEnemyWithRarity x) { return !isMaskedEnemy@84(x); } } [Serializable] internal sealed class totalWeight@97-1 : FSharpFunc { internal static readonly totalWeight@97-1 @_instance = new totalWeight@97-1(); [CompilerGenerated] [DebuggerNonUserCode] internal totalWeight@97-1() { } public override int Invoke(SpawnableEnemyWithRarity _arg4) { return _arg4.rarity; } } [Serializable] internal sealed class totalWeight@98-2 : FSharpFunc { internal static readonly totalWeight@98-2 @_instance = new totalWeight@98-2(); [CompilerGenerated] [DebuggerNonUserCode] internal totalWeight@98-2() { } public override int Invoke(int x, int y) { Default1 val = null; return x + y; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@69-8 { internal static void Invoke(orig_Start orig, TimeOfDay self) { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Expected O, but got Unknown //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Expected O, but got Unknown orig.Invoke(self); if (!((NetworkBehaviour)self).IsHost || !Mirage.Domain.Config.localConfig.EnableSpawnControl@.Value) { return; } EnemyType val = Object.Instantiate(((EnemyAI)maskedPrefab).enemyType); AnimationCurve probabilityCurve = val.probabilityCurve; probabilityCurve.ClearKeys(); Keyframe val2 = new Keyframe(0f, 0f); int num = probabilityCurve.AddKey(val2); val2 = new Keyframe(0.19f, 0f); num = probabilityCurve.AddKey(val2); val2 = new Keyframe(0.2f, 0.5f); num = probabilityCurve.AddKey(val2); val2 = new Keyframe(0.5f, 10f); num = probabilityCurve.AddKey(val2); val2 = new Keyframe(0.9f, 15f); num = probabilityCurve.AddKey(val2); val2 = new Keyframe(1f, 1f); num = probabilityCurve.AddKey(val2); EnemyType val3 = val; List list = new List(); double num2 = Mirage.Domain.Config.localConfig.MaskedSpawnChance@.Value; SelectableLevel[] levels = StartOfRound.Instance.levels; foreach (SelectableLevel val4 in levels) { int num3 = val4.Enemies.RemoveAll(hookMaskedEnemy@93-9.Invoke); List enemies = val4.Enemies; FSharpFunc @_instance; @_instance = totalWeight@96.@_instance; Filter val5 = null; List item = new List(SeqModule.Filter(@_instance, (IEnumerable)enemies)); FSharpFunc @_instance2; @_instance2 = totalWeight@97-1.@_instance; Map val6 = null; List list2 = null; List list3 = Map.Map(new Tuple, FSharpFunc>(item, @_instance2), val6); IEnumerable enumerable = list3; FSharpFunc> @_instance3; @_instance3 = (FSharpFunc>)(object)totalWeight@98-2.@_instance; Zero val7 = null; int num4 = 0; Default1 val8 = (Default1)(object)val7; int num5 = 0; Fold val9 = null; num3 = SeqModule.Fold(@_instance3, num5, enumerable); if (num3 > 0) { double a = (double)num3 * num2 / (100.0 - num2); num5 = (int)Math.Ceiling(a); num3 += num5; a = (double)num5 / (double)num3 * 100.0; list.Add(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat>("Level: %P(). Weight: %P(). SpawnChance: %P(F2)%%", new object[3] { val4.PlanetName, num5, a }, (Type[])null))); SpawnableEnemyWithRarity val10 = new SpawnableEnemyWithRarity(val3, num5); val10.enemyType.MaxCount = Mirage.Domain.Config.localConfig.MaxMaskedSpawns@.Value; val4.Enemies.Add(val10); } } Mirage.Domain.Logger.logInfo.Invoke("Adjusting spawn weights for masked enemies:\n" + string.Join("\n", list)); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookMaskedEnemy@110-10 { internal static void Invoke(orig_KillEnemy orig, MaskedPlayerEnemy self, bool destroy) { orig.Invoke(self, destroy); ((Component)self).GetComponent().OnDeath(); } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal const string MaskedEnemyName = "Masked"; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static MaskedPlayerEnemy maskedPrefab { get { return .$Mirage.Hook.MaskedPlayerEnemy.maskedPrefab@16; } set { .$Mirage.Hook.MaskedPlayerEnemy.maskedPrefab@16 = value; } } internal static bool isMaskedEnemy@84(SpawnableEnemyWithRarity enemy) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Expected O, but got Unknown object obj = enemy; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { obj = enemy.enemyType; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { obj = enemy.enemyType.enemyPrefab; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { return string.Equals(enemy.enemyType.enemyName, ((EnemyAI)maskedPrefab).enemyType.enemyName); } } } return false; } public static void hookMaskedEnemy(RuntimeAnimatorController maskedAnimationController) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown MaskedPlayerEnemy.Start += new hook_Start(new hookMaskedEnemy@19(maskedAnimationController).Invoke); MaskedPlayerEnemy.SetHandsOutClientRpc += new hook_SetHandsOutClientRpc(hookMaskedEnemy@43-4.Invoke); MaskedPlayerEnemy.SetHandsOutServerRpc += new hook_SetHandsOutServerRpc(hookMaskedEnemy@47-5.Invoke); StartOfRound.EndOfGame += new hook_EndOfGame(hookMaskedEnemy@51-6.Invoke); GameNetworkManager.Start += new hook_Start(hookMaskedEnemy@59-7.Invoke); TimeOfDay.Start += new hook_Start(hookMaskedEnemy@69-8.Invoke); MaskedPlayerEnemy.KillEnemy += new hook_KillEnemy(hookMaskedEnemy@110-10.Invoke); } static MaskedPlayerEnemy() { .$Mirage.Hook.MaskedPlayerEnemy.init@ = 0; _ = .$Mirage.Hook.MaskedPlayerEnemy.init@; } } } namespace .$Mirage.Hook { internal static class MaskedPlayerEnemy { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static MaskedPlayerEnemy maskedPrefab@16; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static MaskedPlayerEnemy() { maskedPrefab@16 = null; } } } namespace Mirage.Unity { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class MaskedAnimator { [Serializable] [AllowNullLiteral] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class MaskedAnimator : NetworkBehaviour { internal FSharpRef self = new FSharpRef((MaskedAnimator)null); internal Lazy animator; internal Lazy layerIndex; internal Random random; internal GameObject itemHolder; internal float upperBodyAnimationsWeight; internal bool dropItemOnDeath; internal GrabbableObject HeldItem@; internal int init@20; public GrabbableObject HeldItem { [CompilerGenerated] [DebuggerNonUserCode] get { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } return HeldItem@; } [CompilerGenerated] [DebuggerNonUserCode] set { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } HeldItem@ = value; } } public bool DropItemOnDeath { get { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } return dropItemOnDeath; } } public MaskedAnimator() { //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown FSharpRef val = self; ((NetworkBehaviour)this)..ctor(); self.contents = this; animator = LazyExtensions.Create((FSharpFunc)new -ctor@23(this)); layerIndex = LazyExtensions.Create((FSharpFunc)new -ctor@24-1(this)); random = new Random(); itemHolder = new GameObject("LocalItemHolder"); upperBodyAnimationsWeight = 0f; dropItemOnDeath = false; HeldItem@ = null; init@20 = 1; } public void Start() { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } if (Chainloader.PluginInfos.ContainsKey("VirusTLNR.LethalIntelligence")) { ((Behaviour)this).enabled = false; } } public override void OnNetworkSpawn() { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } ((NetworkBehaviour)this).OnNetworkSpawn(); if (((NetworkBehaviour)this).IsHost && !Chainloader.PluginInfos.ContainsKey("VirusTLNR.LethalIntelligence") && random.Next(0, 100) < Mirage.Domain.Config.getConfig().maskedItemSpawnChance@) { HoldItem(spawnItem()); } } public void HoldItem((GrabbableObject, int) _arg1) { if (init@20 < 1) { IntrinsicFunctions.FailInit(); } int item = _arg1.Item2; GrabbableObject item2 = _arg1.Item1; HoldItem@122 stateMachine = default(HoldItem@122); stateMachine.@this = this; stateMachine.scrapValue = item; stateMachine.item = item2; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); ValueTask task = stateMachine.Data.MethodBuilder.Task; } internal void EmitFlashlight() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (init@20 < 1) { IntrinsicFunctions.FailInit(); } object heldItem = HeldItem; if (heldItem is FlashlightItem) { Light[] componentsInChildren = ((Component)HeldItem).GetComponentsInChildren(); for (int i = 0; i < componentsInChildren.Length; i++) { ((Behaviour)componentsInChildren[i]).enabled = true; } } } [ClientRpc] public void HoldItemClientRpc(NetworkObjectReference reference, int scrapValue, bool dropItemOnDeath', bool emitFlashlight) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1565829825u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref reference, default(ForNetworkSerializable)); BytePacker.WriteValueBitPacked(val2, scrapValue); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref dropItemOnDeath', default(ForPrimitives)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref emitFlashlight, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1565829825u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; if (init@20 < 1) { IntrinsicFunctions.FailInit(); } if (((NetworkBehaviour)this).IsHost) { return; } NetworkObject val3 = null; if (((NetworkObjectReference)(ref reference)).TryGet(ref val3, (NetworkManager)null)) { HoldItem((((Component)val3).GetComponent(), scrapValue)); dropItemOnDeath = dropItemOnDeath'; if (emitFlashlight) { EmitFlashlight(); } } } public void FixedUpdate() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown if (init@20 < 1) { IntrinsicFunctions.FailInit(); } object heldItem = HeldItem; if (heldItem != null && (!(heldItem is Object) || Object.op_Implicit((Object)heldItem))) { upperBodyAnimationsWeight = Mathf.Lerp(upperBodyAnimationsWeight, 0.9f, 0.5f); animator.Value.SetLayerWeight(layerIndex.Value, upperBodyAnimationsWeight); } } public void OnDeath() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown if (init@20 < 1) { IntrinsicFunctions.FailInit(); } GrabbableObject heldItem = HeldItem; if (!Chainloader.PluginInfos.ContainsKey("VirusTLNR.LethalIntelligence")) { object obj = heldItem; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj)) && DropItemOnDeath) { OnDeath@208 stateMachine = default(OnDeath@208); stateMachine.@this = this; stateMachine.heldItem = heldItem; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); ValueTask task = stateMachine.Data.MethodBuilder.Task; } } } [CompilerGenerated] internal (Vector3, Quaternion) itemHolderPositionAndRotation(string _arg2) { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) if (!string.Equals(_arg2, "HoldKnife") && !string.Equals(_arg2, "HoldPatcherTool") && !string.Equals(_arg2, "Grab")) { if (!string.Equals(_arg2, "HoldLung")) { if (!string.Equals(_arg2, "HoldShotgun")) { if (!string.Equals(_arg2, "HoldJetpack")) { if (!string.Equals(_arg2, "HoldForward")) { if (string.Equals(_arg2, "GrabClipboard")) { return (new Vector3(0.007f, 0.138f, -0.066f), Quaternion.Euler(15.577f, 358.759f, 356.795f)); } Mirage.Domain.Logger.logWarning.Invoke("Unsupported held item animation. Item: " + IntrinsicFunctions.CheckThis(self.contents).HeldItem.itemProperties.itemName + ". Animation: " + _arg2); return (new Vector3(0.002f, 0.0563f, -0.0456f), Quaternion.Euler(359.9778f, -0.0006f, 359.9901f)); } return (new Vector3(-0.1453f, -0.0898f, -0.4686f), Quaternion.Euler(314.149f, 13.06f, 305.192f)); } return (new Vector3(-0.107f, -0.078f, -0.232f), Quaternion.Euler(305.184f, 210.613f, 84.047f)); } return (new Vector3(0.0402f, -0.048f, 0.0104f), Quaternion.Euler(340.836f, 22.626f, 2.104f)); } return (new Vector3(-0.1799f, -0.1014f, -0.5119f), Quaternion.Euler(314.149f, 13.06f, 305.192f)); } return (new Vector3(0.002f, 0.056f, -0.046f), Quaternion.Euler(352.996f, 0f, 356.89f)); } [CompilerGenerated] internal Item chooseItem() { //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown double num = random.NextDouble() * 100.0; double num2 = 0.0; if (random.Next(0, 100) < Mirage.Domain.Config.getConfig().storeItemRollChance@ && !Mirage.Domain.Config.getConfig().storeItemWeights@.IsEmpty) { string text = null; FSharpMap storeItemWeights@ = Mirage.Domain.Config.getConfig().storeItemWeights@; foreach (KeyValuePair item in (IEnumerable>)storeItemWeights@) { object obj = text; if (obj == null || (obj is Object && !Object.op_Implicit((Object)obj))) { ref double reference = ref num2; double num3 = (double)item.Value / (double)Mirage.Domain.Config.getConfig().totalItemWeights@ * 100.0; reference += num3; if (num < num2) { text = Mirage.Domain.Config.stripConfigKey.Invoke(item.Key); } } } return MapModule.Find(text, Mirage.Hook.Item.getItems()); } Item val = null; List spawnableScrap = StartOfRound.Instance.currentLevel.spawnableScrap; foreach (SpawnableItemWithRarity item2 in spawnableScrap) { object obj = val; if (obj == null || (obj is Object && !Object.op_Implicit((Object)obj))) { ref double reference = ref num2; double num3 = (double)item2.rarity / (double)Mirage.Hook.Item.getTotalScrapWeight() * 100.0; reference += num3; if (!SetModule.Contains(Mirage.Domain.Config.stripConfigKey.Invoke(item2.spawnableItem.itemName), Mirage.Domain.Config.getConfig().disabledScrapItems@) && num < num2) { val = item2.spawnableItem; } } } return val; } [CompilerGenerated] internal (GrabbableObject, int) spawnItem() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) Item val = chooseItem(); GameObject val2 = Object.Instantiate(val.spawnPrefab, ((Component)IntrinsicFunctions.CheckThis(self.contents)).transform.position, Quaternion.identity); val2.GetComponent().Spawn(true); return (val2.GetComponent(), (int)((double)random.Next(val.minValue, val.maxValue) * (double)RoundManager.Instance.scrapValueMultiplier * Mirage.Domain.Config.getConfig().scrapValueMultiplier@)); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1565829825u, new RpcReceiveHandler(__rpc_handler_1565829825), "HoldItemClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_1565829825(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkObjectReference reference = default(NetworkObjectReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref reference, default(ForNetworkSerializable)); int scrapValue = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref scrapValue); bool dropItemOnDeath' = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref dropItemOnDeath', default(ForPrimitives)); bool emitFlashlight = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref emitFlashlight, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((MaskedAnimator)(object)target).HoldItemClientRpc(reference, scrapValue, dropItemOnDeath', emitFlashlight); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "MaskedAnimator"; } } [Serializable] internal sealed class -ctor@23 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MaskedAnimator @this; [CompilerGenerated] [DebuggerNonUserCode] internal -ctor@23(MaskedAnimator @this) { this.@this = @this; } public override Animator Invoke(Unit unitVar) { return ((Component)((Component)IntrinsicFunctions.CheckThis(this.@this.self.contents)).transform.GetChild(0).GetChild(3)).GetComponent(); } } [Serializable] internal sealed class -ctor@24-1 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public MaskedAnimator @this; [CompilerGenerated] [DebuggerNonUserCode] internal -ctor@24-1(MaskedAnimator @this) { this.@this = @this; } public override int Invoke(Unit unitVar) { return this.@this.animator.Value.GetLayerIndex("Held Item"); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct HoldItem@122 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public MaskedAnimator @this; public int scrapValue; public GrabbableObject item; public TaskAwaiter awaiter; public override void MoveNext() { //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Expected O, but got Unknown //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0394: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: break; } Exception ex2; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: awaiter = Task.Delay(2000).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0063; case 1: { num = 1; goto IL_0063; } IL_0063: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (!flag) { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; goto IL_03ed; } awaiter.GetResult(); _ = null; this.@this.HeldItem = this.item; ScanNodeProperties componentInChildren = ((Component)this.item).GetComponentInChildren(); object obj = componentInChildren; if (obj == null || (obj is Object && !Object.op_Implicit((Object)obj))) { goto IL_00fb; } this.@this.HeldItem.SetScrapValue(scrapValue); ((Component)componentInChildren).gameObject.SetActive(false); if (true) { goto IL_00fb; } goto end_IL_001b; IL_014a: string text = ((!string.IsNullOrEmpty(this.@this.HeldItem.itemProperties.grabAnim)) ? this.@this.HeldItem.itemProperties.grabAnim : "Grab"); this.@this.animator.Value.SetBool(text, true); this.@this.itemHolder.transform.parent = ((Component)this.@this).transform.GetChild(0).GetChild(3).GetChild(0) .GetChild(0) .GetChild(0) .GetChild(0) .GetChild(1) .GetChild(0) .GetChild(0) .GetChild(0); (Vector3, Quaternion) tuple = this.@this.itemHolderPositionAndRotation(text); Quaternion item = tuple.Item2; var (localPosition, _) = tuple; this.@this.itemHolder.transform.localPosition = localPosition; this.@this.itemHolder.transform.localRotation = item; this.@this.HeldItem.isHeldByEnemy = true; this.@this.HeldItem.grabbable = false; this.@this.HeldItem.grabbableToEnemies = false; this.@this.HeldItem.hasHitGround = false; this.@this.HeldItem.EnablePhysics(false); this.@this.HeldItem.parentObject = this.@this.itemHolder.transform; if (!((NetworkBehaviour)this.@this).IsHost) { goto IL_03ef; } bool isScrap = this.@this.HeldItem.itemProperties.isScrap; this.@this.dropItemOnDeath = (isScrap && this.@this.random.Next(0, 100) < Mirage.Domain.Config.getConfig().maskedDropScrapItemOnDeath@) || (!isScrap && this.@this.random.Next(0, 100) < Mirage.Domain.Config.getConfig().maskedDropStoreItemOnDeath@); bool flag3 = this.@this.random.Next(0, 100) < Mirage.Domain.Config.getConfig().emitFlashlightChance@; if (!flag3) { goto IL_0383; } this.@this.EmitFlashlight(); if (true) { goto IL_0383; } goto end_IL_001b; IL_03ef: awaiter = default(TaskAwaiter); if (true) { Data.MethodBuilder.SetResult(Data.Result); } goto end_IL_001b; IL_03ed: if (num2 != 0) { goto IL_03ef; } goto end_IL_001b; IL_00fb: BoxCollider component = ((Component)this.item).GetComponent(); obj = component; if (obj == null || (obj is Object && !Object.op_Implicit((Object)obj))) { goto IL_014a; } ((Collider)component).enabled = false; if (true) { goto IL_014a; } goto end_IL_001b; IL_0383: this.@this.HoldItemClientRpc(NetworkObjectReference.op_Implicit(((NetworkBehaviour)this.item).NetworkObject), scrapValue, this.@this.dropItemOnDeath, flag3); num2 = 1; goto IL_03ed; end_IL_001b:; } catch (object obj2) { ex2 = (Exception)obj2; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct OnDeath@208 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public MaskedAnimator @this; public GrabbableObject heldItem; public TaskAwaiter awaiter; public unsafe override void MoveNext() { //IL_0165: Expected O, but got Ref //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Expected O, but got Unknown //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Expected O, but got Unknown //IL_0195: Expected O, but got Ref int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: break; } Exception ex2; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: awaiter = Task.Delay(900).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0063; case 1: { num = 1; goto IL_0063; } IL_0063: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (!flag) { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; goto IL_02b2; } awaiter.GetResult(); _ = null; ref float totalScrapValueInLevel = ref RoundManager.Instance.totalScrapValueInLevel; float num3 = heldItem.scrapValue; totalScrapValueInLevel += num3; heldItem.isHeldByEnemy = false; heldItem.hasHitGround = true; heldItem.EnablePhysics(true); if (!(heldItem is FlashlightItem)) { goto IL_01b0; } IEnumerable componentsInChildren = ((Component)heldItem).GetComponentsInChildren(); IEnumerator enumerator = componentsInChildren.GetEnumerator(); bool flag3 = false; flag3 = flag3 || flag3; IEnumerator enumerator2; try { enumerator2 = enumerator; bool flag4 = true; while (flag4 && enumerator2.MoveNext()) { Light current = enumerator2.Current; ((Behaviour)current).enabled = false; bool flag5 = true; flag4 = flag5; resumptionPoint = 0; } bool flag6 = flag4; flag3 = flag6; } catch (object obj) { ex2 = (Exception)obj; if (enumerator != null) { enumerator2 = enumerator; ((IEnumerator)(&enumerator2)).Dispose(); } bool flag6 = true; throw; } if (flag3) { if (enumerator != null) { IEnumerator enumerator3 = enumerator; ((IEnumerator)(&enumerator3)).Dispose(); } bool flag6 = true; } if (flag3) { goto IL_01b0; } goto end_IL_001b; IL_020a: BoxCollider component = ((Component)heldItem).GetComponent(); object obj2 = component; if (obj2 == null || (obj2 is Object && !Object.op_Implicit((Object)obj2))) { goto IL_0256; } ((Collider)component).enabled = true; if (true) { goto IL_0256; } goto end_IL_001b; IL_01b0: ScanNodeProperties componentInChildren = ((Component)((Component)heldItem).transform).GetComponentInChildren(true); obj2 = componentInChildren; if (obj2 == null || (obj2 is Object && !Object.op_Implicit((Object)obj2))) { goto IL_020a; } ((Component)componentInChildren).gameObject.SetActive(true); if (true) { goto IL_020a; } goto end_IL_001b; IL_02b2: if (num2 != 0) { awaiter = default(TaskAwaiter); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } goto end_IL_001b; IL_0256: heldItem.grabbable = true; heldItem.grabbableToEnemies = true; this.@this.HeldItem = null; num2 = 1; goto IL_02b2; end_IL_001b:; } catch (object obj3) { ex2 = (Exception)obj3; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } } } namespace .$Mirage.Unity { internal static class MaskedAnimator { } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Item { [Serializable] internal sealed class populateItems@17-1 : FSharpFunc, FSharpMap> { public Item item; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string key; [CompilerGenerated] [DebuggerNonUserCode] internal populateItems@17-1(Item item, string key) { this.item = item; this.key = key; } public override FSharpMap Invoke(FSharpMap table) { return table.Add(key, item); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class populateItems@14 { internal static void Invoke(orig_LoadShipGrabbableItems orig, StartOfRound self) { orig.Invoke(self); List itemsList = self.allItemsList.itemsList; foreach (Item item in itemsList) { string key = Mirage.Domain.Config.stripConfigKey.Invoke(item.itemName); FSharpFunc, FSharpMap> val = new populateItems@17-1(item, key); .$Mirage.Hook.Item.items@7 = val.Invoke(.$Mirage.Hook.Item.items@7); } } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class populateItems@20-2 { internal static void Invoke(orig_OnDestroy orig, StartOfRound self) { orig.Invoke(self); Zero val = null; FSharpMap val2 = null; items = MapModule.Empty(); totalScrapWeight = 0; } } [Serializable] internal sealed class populateItems@30-4 : FSharpFunc { internal static readonly populateItems@30-4 @_instance = new populateItems@30-4(); [CompilerGenerated] [DebuggerNonUserCode] internal populateItems@30-4() { } public override int Invoke(SpawnableItemWithRarity _arg1) { return _arg1.rarity; } } [Serializable] internal sealed class populateItems@31-5 : FSharpFunc { internal static readonly populateItems@31-5 @_instance = new populateItems@31-5(); [CompilerGenerated] [DebuggerNonUserCode] internal populateItems@31-5() { } public override int Invoke(int x, int y) { Default1 val = null; return x + y; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class populateItems@26-3 { internal static void Invoke(orig_ChangeLevel orig, StartOfRound self, int levelId) { orig.Invoke(self, levelId); List spawnableScrap = self.currentLevel.spawnableScrap; FSharpFunc @_instance; @_instance = populateItems@30-4.@_instance; Map val = null; List list = null; List list2 = Map.Map(new Tuple, FSharpFunc>(spawnableScrap, @_instance), val); IEnumerable enumerable = list2; FSharpFunc> @_instance2; @_instance2 = (FSharpFunc>)(object)populateItems@31-5.@_instance; Zero val2 = null; int num = 0; Default1 val3 = (Default1)(object)val2; int num2 = 0; Fold val4 = null; totalScrapWeight = SeqModule.Fold(@_instance2, num2, enumerable); } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpMap items { get { return .$Mirage.Hook.Item.items@7; } set { .$Mirage.Hook.Item.items@7 = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static Zero a@1 => .$Mirage.Hook.Item.a@1; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpMap _arg23@1 => .$Mirage.Hook.Item._arg23@1; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static int totalScrapWeight { get { return .$Mirage.Hook.Item.totalScrapWeight@8; } set { .$Mirage.Hook.Item.totalScrapWeight@8 = value; } } public static FSharpMap getItems() { return items; } public static int getTotalScrapWeight() { return totalScrapWeight; } public static void populateItems() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown StartOfRound.LoadShipGrabbableItems += new hook_LoadShipGrabbableItems(populateItems@14.Invoke); StartOfRound.OnDestroy += new hook_OnDestroy(populateItems@20-2.Invoke); StartOfRound.ChangeLevel += new hook_ChangeLevel(populateItems@26-3.Invoke); } } } namespace .$Mirage.Hook { internal static class Item { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static FSharpMap items@7; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Zero a@1; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpMap _arg23@1; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static int totalScrapWeight@8; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Item() { a@1 = null; _arg23@1 = null; items@7 = MapModule.Empty(); totalScrapWeight@8 = 0; } } } namespace Mirage.Unity { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class MimicVoice { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class MimicVoice : NetworkBehaviour { internal Mirage.Domain.Audio.Recording.RecordingManager recordingManager; internal Random random; internal GameObject voicePlayback; internal AudioStream.AudioStream audioStream; internal MimicPlayer.MimicPlayer mimicPlayer; internal EnemyAI enemyAI; public MimicVoice() { recordingManager = Mirage.Domain.Audio.Recording.RecordingManager(); random = new Random(); voicePlayback = null; audioStream = null; mimicPlayer = null; enemyAI = null; } public void Awake() { audioStream = ((Component)this).GetComponent(); mimicPlayer = ((Component)this).GetComponent(); enemyAI = ((Component)this).GetComponent(); voicePlayback = Object.Instantiate(Mirage.Hook.Dissonance.getDissonance()._playbackPrefab2); ((Object)voicePlayback).name = "Mirage"; GameObject objectArg = voicePlayback; FSharpFunc func = new removeComponent@39(objectArg); FSharpFunc val = new removeComponent@39-1(func); FSharpList val2 = FSharpList.Cons(typeof(VoicePlayback), FSharpList.Cons(typeof(SamplePlaybackComponent), FSharpList.Cons(typeof(PlayerVoiceIngameSettings), FSharpList.Empty))); Iterate val3 = null; Iterate.Iterate(val2, val); ((Behaviour)voicePlayback.GetComponent()).enabled = true; audioStream.AudioSource = voicePlayback.GetComponent(); audioStream.AudioSource.loop = false; voicePlayback.transform.parent = ((Component)audioStream).transform; voicePlayback.SetActive(true); } public void Start() { try { ValueTask valueTask = startVoiceMimicking@52(this, null); } catch (object obj) when ((Exception)obj is TaskCanceledException) { Exception ex2 = (Exception)obj; TaskCanceledException ex3 = ex2 as TaskCanceledException; if (ex3 != null) { return; } throw; } } public void LateUpdate() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) voicePlayback.transform.position = ((Component)this).transform.position; } public void FixedUpdate() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Expected O, but got Unknown //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Expected O, but got Unknown object mimickingPlayer = mimicPlayer.mimickingPlayer; PlayerControllerB localPlayerController; PlayerControllerB val; AudioSource audioSource; float volume; if (mimickingPlayer != null && (!(mimickingPlayer is Object) || Object.op_Implicit((Object)mimickingPlayer))) { mimickingPlayer = enemyAI; if (mimickingPlayer != null && (!(mimickingPlayer is Object) || Object.op_Implicit((Object)mimickingPlayer))) { localPlayerController = StartOfRound.Instance.localPlayerController; mimickingPlayer = localPlayerController.spectatedPlayerScript; val = ((mimickingPlayer != null && (!(mimickingPlayer is Object) || Object.op_Implicit((Object)mimickingPlayer))) ? localPlayerController.spectatedPlayerScript : localPlayerController); audioSource = audioStream.AudioSource; if (object.ReferenceEquals(mimicPlayer.mimickingPlayer, localPlayerController)) { volume = Mirage.Domain.Setting.getSettings().localPlayerVolume@; } else { mimickingPlayer = mimicPlayer.mimickingPlayer; if (mimickingPlayer != null && (!(mimickingPlayer is Object) || Object.op_Implicit((Object)mimickingPlayer))) { mimickingPlayer = mimicPlayer.mimickingPlayer.currentVoiceChatAudioSource; if (mimickingPlayer != null && (!(mimickingPlayer is Object) || Object.op_Implicit((Object)mimickingPlayer))) { volume = mimicPlayer.mimickingPlayer.currentVoiceChatAudioSource.volume; goto IL_0166; } } volume = 1f; } goto IL_0166; } } audioStream.AudioSource.mute = true; return; IL_0166: audioSource.volume = volume; audioStream.AudioSource.outputAudioMixerGroup = SoundManager.Instance.playerVoiceMixers[(uint)mimicPlayer.mimickingPlayer.playerClientId]; audioStream.AudioSource.mute = enemyAI.isEnemyDead || (!Mirage.Domain.Config.getConfig().mimicVoiceWhileHiding@ && maskedEnemyIsHiding@98(this, null)) || isMimicLocalPlayerMuted@86(this, localPlayerController, null) || isNotHauntedOrDisappearedDressGirl@92(this, null) || val.isInsideFactory == enemyAI.isOutside || Mirage.Domain.Setting.getSettings().muteVoiceMimic@; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "MimicVoice"; } } [Serializable] internal sealed class removeComponent@39 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public GameObject objectArg; [CompilerGenerated] [DebuggerNonUserCode] internal removeComponent@39(GameObject objectArg) { this.objectArg = objectArg; } public override Component Invoke(Type type) { return objectArg.GetComponent(type); } } [Serializable] internal sealed class removeComponent@39-1 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc func1; [CompilerGenerated] [DebuggerNonUserCode] internal removeComponent@39-1(FSharpFunc func1) { this.func1 = func1; } public override Unit Invoke(Type x) { Component val = func1.Invoke(x); Object.Destroy((Object)(object)val); return null; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startVoiceMimicking@53-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public MimicVoice @this; public ValueTaskAwaiter> awaiter; public ValueTaskAwaiter awaiter0; public TaskAwaiter awaiter1; public override void MoveNext() { //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Expected O, but got Unknown //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Expected O, but got Unknown int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: case 3: break; } Exception ex2 = default(Exception); try { bool flag = default(bool); int num; bool flag2 = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex2 = null; flag = flag || flag; goto case 1; case 1: case 2: { try { bool flag3; int num2; int num3; int num6; int num4; int num5; ICriticalNotifyCompletion criticalNotifyCompletion; bool flag4; bool flag5; switch (resumptionPoint) { default: { object enemyAI = this.@this.enemyAI; if (enemyAI != null && (!(enemyAI is Object) || Object.op_Implicit((Object)enemyAI)) && !this.@this.enemyAI.isEnemyDead) { enemyAI = this.@this.mimicPlayer.mimickingPlayer; if (enemyAI != null && (!(enemyAI is Object) || Object.op_Implicit((Object)enemyAI)) && object.ReferenceEquals(this.@this.mimicPlayer.mimickingPlayer, StartOfRound.Instance.localPlayerController)) { awaiter = Mirage.Domain.Audio.Recording.getRecording(this.@this.recordingManager).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { goto IL_017d; } if (false) { goto case 1; } ResumptionPoint = 1; num2 = 0; goto IL_0173; } } num3 = 1; break; } case 1: num2 = 1; goto IL_0173; case 2: { num6 = 1; goto IL_01e5; } IL_01ef: if (flag4) { awaiter0.GetResult(); _ = null; num4 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; } if (num4 != 0) { awaiter0 = default(ValueTaskAwaiter); num5 = 1; goto IL_0271; } goto IL_0287; IL_017d: if (flag3) { FSharpOption result = awaiter.GetResult(); FSharpOption val = result; if (val != null) { awaiter0 = this.@this.audioStream.StreamOpusFromFile(val.Value).GetAwaiter(); flag4 = true; if (awaiter0.IsCompleted) { goto IL_01ef; } if (false) { goto case 2; } ResumptionPoint = 2; num6 = 0; goto IL_01e5; } goto IL_0273; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num5 = 0; goto IL_0271; IL_0173: flag4 = (byte)num2 != 0; flag3 = flag4; goto IL_017d; IL_0273: awaiter = default(ValueTaskAwaiter>); num3 = 1; break; IL_0271: if (num5 != 0) { goto IL_0273; } goto IL_0287; IL_0287: num3 = 0; break; IL_01e5: flag5 = (byte)num6 != 0; flag4 = flag5; goto IL_01ef; } bool flag6 = (byte)num3 != 0; flag = flag6; } catch (object obj) { Exception ex3 = (Exception)obj; flag2 = true; ex2 = ex3; } int num7; if (flag2) { Exception ex3 = ex2; if (ex3 is TaskCanceledException ex4) { TaskCanceledException ex5 = ex4; if (0 == 0) { throw ex5; } _ = (Unit)(object)null; num7 = 1; } else { Exception ex6 = ex3; Mirage.Domain.Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Error occurred while mimicking voice: %P()", new object[1] { ex6 }, (Type[])null))); num7 = 1; } } else { num7 = (flag ? 1 : 0); } if (num7 != 0) { object enemyAI = this.@this.enemyAI; int millisecondsDelay = ((!(enemyAI is MaskedPlayerEnemy)) ? this.@this.random.Next(Mirage.Domain.Config.getConfig().minimumDelayNonMasked@, Mirage.Domain.Config.getConfig().maximumDelayNonMasked@ + 1) : this.@this.random.Next(Mirage.Domain.Config.getConfig().minimumDelayMasked@, Mirage.Domain.Config.getConfig().maximumDelayMasked@ + 1)); awaiter1 = Task.Delay(millisecondsDelay, ((MonoBehaviour)this.@this).destroyCancellationToken).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { break; } if (false) { goto case 3; } ResumptionPoint = 3; num = 0; goto IL_03bd; } goto end_IL_0029; } case 3: { num = 1; goto IL_03bd; } IL_03bd: flag2 = (byte)num != 0; flag = flag2; break; } int num8; if (flag) { awaiter1.GetResult(); _ = null; num8 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num8 = 0; } if (num8 != 0) { awaiter1 = default(TaskAwaiter); if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0029:; } catch (object obj2) { ex2 = (Exception)obj2; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startVoiceMimicking@53-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public MimicVoice @this; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: break; } Exception ex2; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00d7; case 1: { num = 1; goto IL_0071; } IL_00d7: if (flag) { awaiter = program@1-6(this.@this, null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_007b; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0071; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_0071: flag3 = (byte)num != 0; flag2 = flag3; goto IL_007b; IL_007b: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00d7; } } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [CompilerGenerated] internal static ValueTask program@1-6(MimicVoice @this, Unit unitVar0) { startVoiceMimicking@53-1 stateMachine = default(startVoiceMimicking@53-1); stateMachine.@this = @this; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static ValueTask startVoiceMimicking@52(MimicVoice @this, Unit unitVar0) { startVoiceMimicking@53-2 stateMachine = default(startVoiceMimicking@53-2); stateMachine.@this = @this; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static bool isMimicLocalPlayerMuted@86(MimicVoice _, PlayerControllerB localPlayer, Unit unitVar0) { bool result = Mirage.Domain.Setting.getSettings().localPlayerVolume@ == 0f; bool flag = !Mirage.Domain.Config.getConfig().enableMimicVoiceWhileAlive@ && !_.mimicPlayer.mimickingPlayer.isPlayerDead; if (HashCompare.GenericEqualityIntrinsic(_.mimicPlayer.mimickingPlayer, localPlayer)) { if (flag) { return true; } return result; } return false; } internal static bool isNotHauntedOrDisappearedDressGirl@92(MimicVoice _, Unit unitVar0) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown object enemyAI = _.enemyAI; if (enemyAI is DressGirlAI) { DressGirlAI val = (DressGirlAI)(object)_.enemyAI; bool flag = val.staringInHaunt || (((EnemyAI)val).moveTowardsDestination && ((EnemyAI)val).movingTowardsTargetPlayer); if (!val.hauntingLocalPlayer) { return true; } return !flag; } return false; } internal static bool maskedEnemyIsHiding@98(MimicVoice _, Unit unitVar0) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) object enemyAI = _.enemyAI; if (enemyAI is MaskedPlayerEnemy && Vector3.Distance(((Component)_.enemyAI).transform.position, ((MaskedPlayerEnemy)(object)_.enemyAI).shipHidingSpot) < 0.4f && _.enemyAI.agent.speed == 0f) { return ((MaskedPlayerEnemy)(object)_.enemyAI).crouching; } return false; } } } namespace .$Mirage.Unity { internal static class MimicVoice { } } namespace Mirage.Unity { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class MimicPlayer { [Serializable] [AllowNullLiteral] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class MimicPlayer : NetworkBehaviour { internal FSharpEvent onSetMimicId; internal Random random; internal EnemyAI enemyAI; internal Guid mimicId; internal PlayerControllerB mimickingPlayer; public PlayerControllerB MimickingPlayer => mimickingPlayer; public Guid MimicId => mimicId; [CLIEvent] public event FSharpHandler OnSetMimicId { add { ((IDelegateEvent>)(object)onSetMimicId.Publish).AddHandler(value); } remove { ((IDelegateEvent>)(object)onSetMimicId.Publish).RemoveHandler(value); } } public MimicPlayer() { onSetMimicId = new FSharpEvent(); random = new Random(); enemyAI = null; mimicId = Guid.Empty; mimickingPlayer = null; } public void Awake() { enemyAI = ((Component)this).GetComponent(); } public void Start() { object obj = enemyAI; if (!(obj is MaskedPlayerEnemy)) { StartMimicking(); } } public void StartMimicking() { //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Expected O, but got Unknown //IL_011d: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)this).IsHost) { return; } mimicId = Guid.NewGuid(); bool flag = SetModule.Contains(Mirage.Domain.Config.stripConfigKey.Invoke(enemyAI.enemyType.enemyName), Mirage.Domain.Config.getConfig().enemies@); EnemyAI val = enemyAI; MaskedPlayerEnemy val2 = (MaskedPlayerEnemy)(object)((val is MaskedPlayerEnemy) ? val : null); FSharpValueOption val4; if (val2 != null) { if (flag && random.Next(0, 100) < Mirage.Domain.Config.getConfig().maskedMimicChance@) { MaskedPlayerEnemy val3 = val2; object obj = val3.mimickingPlayer; val4 = FSharpValueOption.NewValueSome((obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) ? val3.mimickingPlayer : randomPlayer()); goto IL_018f; } if (flag) { object obj = enemyAI; if (!(obj is MaskedPlayerEnemy)) { obj = enemyAI; if (!(obj is DressGirlAI) && random.Next(0, 100) < Mirage.Domain.Config.getConfig().nonMaskedMimicChance@) { goto IL_017b; } } } } else if (flag) { object obj = enemyAI; if (!(obj is MaskedPlayerEnemy)) { obj = enemyAI; if (!(obj is DressGirlAI) && random.Next(0, 100) < Mirage.Domain.Config.getConfig().nonMaskedMimicChance@) { goto IL_017b; } } } val4 = FSharpValueOption.ValueNone; goto IL_018f; IL_017b: val4 = FSharpValueOption.NewValueSome(randomPlayer()); goto IL_018f; IL_018f: FSharpValueOption val5 = val4; FSharpFunc val6 = new StartMimicking@76(this); Iterate val7 = null; Iterate.Iterate(val5, val6); } public void MimicPlayer(int playerId) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB val = StartOfRound.Instance.allPlayerScripts[playerId]; logMimic(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Mimicking player #%P()", new object[1] { val.playerClientId }, (Type[])null))); mimickingPlayer = val; object obj = enemyAI; if (obj is MaskedPlayerEnemy && Mirage.Domain.Config.getConfig().copyMaskedVisuals@) { MaskedPlayerEnemy val2 = (MaskedPlayerEnemy)(object)enemyAI; val2.mimickingPlayer = val; val2.SetSuit(val.currentSuitID); ((EnemyAI)val2).SetEnemyOutside(((Component)val).transform.position.y < -80f); val2.SetVisibilityOfMaskedEnemy(); } ((Component)this).GetComponent().AllowedSenderId = FSharpOption.Some(val.actualClientId); if (((NetworkBehaviour)this).IsHost) { MimicPlayerClientRpc(playerId, mimicId.ToString()); } onSetMimicId.Trigger(mimicId); } [ClientRpc] public void MimicPlayerClientRpc(int playerId, string mimicId') { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1323253619u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerId); bool flag = mimicId' != null; ((FastBufferWriter)(ref val2)).WriteValueSafe(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(mimicId', false); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1323253619u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (!((NetworkBehaviour)this).IsHost) { mimicId = new Guid(mimicId'); MimicPlayer(playerId); } } } public void ResetMimicPlayer() { logMimic("No longer mimicking a player."); mimickingPlayer = null; if (((NetworkBehaviour)this).IsHost) { ResetMimicPlayerClientRpc(); } } [ClientRpc] public void ResetMimicPlayerClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3099822593u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3099822593u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (!((NetworkBehaviour)this).IsHost) { ResetMimicPlayer(); } } } public void FixedUpdate() { //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)this).IsHost) { return; } object obj = enemyAI; if (!(obj is DressGirlAI) || !SetModule.Contains(Mirage.Domain.Config.stripConfigKey.Invoke(enemyAI.enemyType.enemyName), Mirage.Domain.Config.getConfig().enemies@)) { return; } DressGirlAI val = (DressGirlAI)(object)enemyAI; StartOfRound instance = StartOfRound.Instance; DressGirlAI val2 = val; PlayerControllerB hauntingPlayer = val.hauntingPlayer; FSharpValueOption val3 = ((hauntingPlayer != null) ? FSharpValueOption.NewValueSome(hauntingPlayer) : FSharpValueOption.ValueNone); hauntingPlayer = mimickingPlayer; FSharpValueOption val4 = ((hauntingPlayer != null) ? FSharpValueOption.NewValueSome(hauntingPlayer) : FSharpValueOption.ValueNone); if (val3.Tag == 0) { if (val4.Tag == 1) { ResetMimicPlayer(); } } else if (val4.Tag != 0) { hauntingPlayer = val4.Item; PlayerControllerB item = val3.Item; if (HashCompare.GenericEqualityIntrinsic(item, hauntingPlayer) && instance.connectedPlayersAmount > 0) { MimicPlayer(randomPlayerNotHaunted@121(this, val, null)); } } else { hauntingPlayer = val3.Item; if (instance.connectedPlayersAmount == 0) { MimicPlayer((int)hauntingPlayer.playerClientId); } else { MimicPlayer(randomPlayerNotHaunted@121(this, val, null)); } } } [CompilerGenerated] internal void logMimic(a message) { Mirage.Domain.Logger.logInfo.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat>("%P()(%P()) - %P()", new object[3] { ((object)(EnemyAI)(ref enemyAI)).GetType().Name, mimicId, message }, (Type[])null))); } [CompilerGenerated] internal PlayerControllerB randomPlayer() { //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Expected O, but got Unknown StartOfRound instance; int num3; while (true) { instance = StartOfRound.Instance; int connectedPlayersAmount; if (Mirage.Unity.MimicPlayer.playerPool.Count == 0) { List playerPool = Mirage.Unity.MimicPlayer.playerPool; connectedPlayersAmount = instance.connectedPlayersAmount; ulong num = ((connectedPlayersAmount >= 0) ? ((ulong)(connectedPlayersAmount - 0) + 1uL) : 0); ListCollector val = default(ListCollector); ulong num2 = 0uL; num3 = 0; for (; num2 < num; num2++) { val.Add(num3); num3++; } playerPool.AddRange((IEnumerable)val.Close()); } connectedPlayersAmount = random.Next(Mirage.Unity.MimicPlayer.playerPool.Count); num3 = Mirage.Unity.MimicPlayer.playerPool[connectedPlayersAmount]; PlayerControllerB val2 = StartOfRound.Instance.allPlayerScripts[num3]; Mirage.Unity.MimicPlayer.playerPool.RemoveAt(connectedPlayersAmount); if (num3 <= instance.connectedPlayersAmount && !val2.disconnectedMidGame) { break; } this = this; } return instance.allPlayerScripts[num3]; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1323253619u, new RpcReceiveHandler(__rpc_handler_1323253619), "MimicPlayerClientRpc"); ((NetworkBehaviour)this).__registerRpc(3099822593u, new RpcReceiveHandler(__rpc_handler_3099822593), "ResetMimicPlayerClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_1323253619(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int playerId = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref playerId); bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref flag, default(ForPrimitives)); string mimicId' = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref mimicId', false); } target.__rpc_exec_stage = (__RpcExecStage)1; ((MimicPlayer)(object)target).MimicPlayerClientRpc(playerId, mimicId'); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3099822593(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((MimicPlayer)(object)target).ResetMimicPlayerClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "MimicPlayer"; } } [Serializable] internal sealed class StartMimicking@76 : FSharpFunc { public MimicPlayer @this; [CompilerGenerated] [DebuggerNonUserCode] internal StartMimicking@76(MimicPlayer @this) { this.@this = @this; } public override Unit Invoke(PlayerControllerB player) { this.@this.MimicPlayer((int)player.playerClientId); return null; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static List playerPool => .$Mirage.Unity.MimicPlayer.playerPool@13; internal static int randomPlayerNotHaunted@121(MimicPlayer @this, DressGirlAI dressGirlAI, Unit unitVar0) { PlayerControllerB val; while (true) { val = @this.randomPlayer(); if (!HashCompare.GenericEqualityIntrinsic(val, dressGirlAI.hauntingPlayer)) { break; } MimicPlayer mimicPlayer = @this; DressGirlAI obj = dressGirlAI; unitVar0 = null; dressGirlAI = obj; @this = mimicPlayer; } return (int)val.playerClientId; } } } namespace .$Mirage.Unity { internal static class MimicPlayer { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly List playerPool@13; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static MimicPlayer() { playerPool@13 = new List(); } } } namespace Mirage.Unity { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class AudioStream { [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct AudioStartEvent : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int lengthSamples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int channels@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int frequency@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int lengthSamples { [CompilerGenerated] [DebuggerNonUserCode] get { return lengthSamples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int channels { [CompilerGenerated] [DebuggerNonUserCode] get { return channels@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int frequency { [CompilerGenerated] [DebuggerNonUserCode] get { return frequency@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(AudioStartEvent))] public AudioStartEvent(int lengthSamples, int channels, int frequency) { lengthSamples@ = lengthSamples; channels@ = channels; frequency@ = frequency; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, AudioStartEvent>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(AudioStartEvent obj) { IComparer genericComparer = LanguagePrimitives.GenericComparer; int num = lengthSamples@; int num2 = obj.lengthSamples@; int num3 = ((num > num2) ? 1 : 0) - ((num < num2) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } genericComparer = LanguagePrimitives.GenericComparer; num2 = channels@; int num4 = obj.channels@; num = ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; num2 = frequency@; num4 = obj.frequency@; return ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((AudioStartEvent)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { AudioStartEvent audioStartEvent = (AudioStartEvent)obj; int num = lengthSamples@; int num2 = audioStartEvent.lengthSamples@; int num3 = ((num > num2) ? 1 : 0) - ((num < num2) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } num2 = channels@; int num4 = audioStartEvent.channels@; num = ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); if (num < 0) { return num; } if (num > 0) { return num; } num2 = frequency@; num4 = audioStartEvent.frequency@; return ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { int num = 0; num = -1640531527 + (frequency@ + ((num << 6) + (num >> 2))); num = -1640531527 + (channels@ + ((num << 6) + (num >> 2))); return -1640531527 + (lengthSamples@ + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(AudioStartEvent obj, IEqualityComparer comp) { if (lengthSamples@ == obj.lengthSamples@) { if (channels@ == obj.channels@) { return frequency@ == obj.frequency@; } return false; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is AudioStartEvent obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(AudioStartEvent obj) { if (lengthSamples@ == obj.lengthSamples@) { if (channels@ == obj.channels@) { return frequency@ == obj.frequency@; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is AudioStartEvent) { return Equals((AudioStartEvent)obj); } return false; } } [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct AudioReceivedEvent : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Samples samples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int sampleIndex@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly Samples samples { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return samples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int sampleIndex { [CompilerGenerated] [DebuggerNonUserCode] get { return sampleIndex@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(AudioReceivedEvent))] public AudioReceivedEvent(Samples samples, int sampleIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) samples@ = samples; sampleIndex@ = sampleIndex; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, AudioReceivedEvent>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(AudioReceivedEvent obj) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) IComparer genericComparer = LanguagePrimitives.GenericComparer; Samples val = samples@; Samples val2 = obj.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, genericComparer); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; int num2 = sampleIndex@; int num3 = obj.sampleIndex@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((AudioReceivedEvent)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) AudioReceivedEvent audioReceivedEvent = (AudioReceivedEvent)obj; Samples val = samples@; Samples val2 = audioReceivedEvent.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, comp); if (num < 0) { return num; } if (num > 0) { return num; } int num2 = sampleIndex@; int num3 = audioReceivedEvent.sampleIndex@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) int num = 0; num = -1640531527 + (sampleIndex@ + ((num << 6) + (num >> 2))); Samples val = samples@; return -1640531527 + (((Samples)(ref val)).GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(AudioReceivedEvent obj, IEqualityComparer comp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; Samples val2 = obj.samples@; if (((Samples)(ref val)).Equals((object)val2, comp)) { return sampleIndex@ == obj.sampleIndex@; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is AudioReceivedEvent obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(AudioReceivedEvent obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; if (((Samples)(ref val)).Equals(obj.samples@)) { return sampleIndex@ == obj.sampleIndex@; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is AudioReceivedEvent) { return Equals((AudioReceivedEvent)obj); } return false; } } [Serializable] [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] [Struct] [DebuggerDisplay("{__DebugDisplay(),nq}")] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct AudioStreamEvent : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { public static class Tags { public const int AudioStartEvent = 0; public const int AudioReceivedEvent = 1; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] public int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsAudioStartEvent { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public bool IsAudioReceivedEvent { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] [field: DebuggerNonUserCode] public AudioStartEvent audioStartEvent { [DebuggerNonUserCode] get; } [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] [field: DebuggerNonUserCode] public AudioReceivedEvent audioReceivedEvent { [DebuggerNonUserCode] get; } [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public static AudioStreamEvent NewAudioStartEvent(AudioStartEvent _audioStartEvent) { AudioStreamEvent result = default(AudioStreamEvent); result.audioStartEvent = _audioStartEvent; return result; } [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] public static AudioStreamEvent NewAudioReceivedEvent(AudioReceivedEvent _audioReceivedEvent) { AudioStreamEvent result = default(AudioStreamEvent); result._tag = 1; result.audioReceivedEvent = _audioReceivedEvent; return result; } [SpecialName] [CompilerGenerated] [DebuggerNonUserCode] internal object __DebugDisplay() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, string>("%+0.8A")).Invoke(this); } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, AudioStreamEvent>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(AudioStreamEvent obj) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { IComparer genericComparer; if (Tag == 0) { genericComparer = LanguagePrimitives.GenericComparer; AudioStartEvent audioStartEvent = this.audioStartEvent; AudioStartEvent audioStartEvent2 = obj.audioStartEvent; return audioStartEvent.CompareTo(audioStartEvent2, genericComparer); } genericComparer = LanguagePrimitives.GenericComparer; AudioReceivedEvent audioReceivedEvent = this.audioReceivedEvent; AudioReceivedEvent audioReceivedEvent2 = obj.audioReceivedEvent; return audioReceivedEvent.CompareTo(audioReceivedEvent2, genericComparer); } return tag - tag2; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((AudioStreamEvent)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { AudioStreamEvent audioStreamEvent = (AudioStreamEvent)obj; int tag = _tag; int tag2 = audioStreamEvent._tag; if (tag == tag2) { if (Tag == 0) { AudioStartEvent audioStartEvent = this.audioStartEvent; AudioStartEvent audioStartEvent2 = audioStreamEvent.audioStartEvent; return audioStartEvent.CompareTo(audioStartEvent2, comp); } AudioReceivedEvent audioReceivedEvent = this.audioReceivedEvent; AudioReceivedEvent audioReceivedEvent2 = audioStreamEvent.audioReceivedEvent; return audioReceivedEvent.CompareTo(audioReceivedEvent2, comp); } return tag - tag2; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { int num = 0; if (Tag == 0) { num = 0; AudioStartEvent audioStartEvent = this.audioStartEvent; return -1640531527 + (audioStartEvent.GetHashCode(comp) + ((num << 6) + (num >> 2))); } num = 1; AudioReceivedEvent audioReceivedEvent = this.audioReceivedEvent; return -1640531527 + (audioReceivedEvent.GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(AudioStreamEvent obj, IEqualityComparer comp) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { if (Tag == 0) { AudioStartEvent audioStartEvent = this.audioStartEvent; AudioStartEvent obj2 = obj.audioStartEvent; return audioStartEvent.Equals(obj2, comp); } AudioReceivedEvent audioReceivedEvent = this.audioReceivedEvent; AudioReceivedEvent obj3 = obj.audioReceivedEvent; return audioReceivedEvent.Equals(obj3, comp); } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is AudioStreamEvent obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(AudioStreamEvent obj) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { if (Tag == 0) { AudioStartEvent audioStartEvent = this.audioStartEvent; return audioStartEvent.Equals(obj.audioStartEvent); } AudioReceivedEvent audioReceivedEvent = this.audioReceivedEvent; return audioReceivedEvent.Equals(obj.audioReceivedEvent); } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is AudioStreamEvent) { return Equals((AudioStreamEvent)obj); } return false; } } [Serializable] [AllowNullLiteral] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class AudioStream : NetworkBehaviour { internal FSharpRef self = new FSharpRef((AudioStream)null); internal FSharpOption audioSender; internal FSharpOption audioReceiver; internal FSharpEvent, AudioStreamEvent> @event; internal AudioSource AudioSource@; internal FSharpOption AllowedSenderId@; internal int init@44; public AudioSource AudioSource { [CompilerGenerated] [DebuggerNonUserCode] get { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } return AudioSource@; } [CompilerGenerated] [DebuggerNonUserCode] set { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } AudioSource@ = value; } } public FSharpOption AllowedSenderId { [CompilerGenerated] [DebuggerNonUserCode] get { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } return AllowedSenderId@; } [CompilerGenerated] [DebuggerNonUserCode] set { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } AllowedSenderId@ = value; } } [CLIEvent] public event EventHandler OnAudioStream { add { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } ((IDelegateEvent>)(object)@event.Publish).AddHandler(value); } remove { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } ((IDelegateEvent>)(object)@event.Publish).RemoveHandler(value); } } public AudioStream() { FSharpRef val = self; ((NetworkBehaviour)this)..ctor(); self.contents = this; audioSender = null; audioReceiver = null; @event = new FSharpEvent, AudioStreamEvent>(); AudioSource@ = null; AllowedSenderId@ = null; init@44 = 1; } public override void OnDestroy() { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } ((NetworkBehaviour)this).OnDestroy(); FSharpFunc @_instance; @_instance = OnDestroy@89.@_instance; FSharpOption val = audioSender; Iterate val2 = null; Iterate.Iterate(val, @_instance); FSharpFunc @_instance2; @_instance2 = OnDestroy@90-1.@_instance; FSharpOption val3 = audioReceiver; val2 = null; Iterate.Iterate(val3, @_instance2); } public ValueTask StreamOpusFromFile(string filePath) { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } StreamOpusFromFile@94 stateMachine = default(StreamOpusFromFile@94); stateMachine.@this = this; stateMachine.filePath = filePath; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public void InitializeAudioReceiver(int totalSamples) { if (init@44 < 1) { IntrinsicFunctions.FailInit(); } FSharpFunc @_instance; @_instance = InitializeAudioReceiver@113.@_instance; FSharpOption val = audioReceiver; Iterate val2 = null; Iterate.Iterate(val, @_instance); FSharpFunc onPacketDecoded = new triggerEvent@115(this); audioReceiver = FSharpOption.Some(Mirage.Domain.Audio.Receiver.AudioReceiver(AudioSource, totalSamples, onPacketDecoded, ((MonoBehaviour)this).destroyCancellationToken)); Mirage.Domain.Audio.Receiver.startAudioReceiver(audioReceiver.Value); AudioStreamEvent audioStreamEvent = AudioStreamEvent.NewAudioStartEvent(new AudioStartEvent(totalSamples, 1, 48000)); @event.Trigger((object)this, audioStreamEvent); } [ClientRpc] public void InitializeAudioReceiverClientRpc(int totalSamples) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1377245609u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, totalSamples); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1377245609u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (init@44 < 1) { IntrinsicFunctions.FailInit(); } if (!((NetworkBehaviour)this).IsHost) { InitializeAudioReceiver(totalSamples); } } } [ServerRpc(RequireOwnership = false)] public void InitializeAudioReceiverServerRpc(int totalSamples, ServerRpcParams serverRpcParams) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(956016363u, serverRpcParams, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val, totalSamples); ((NetworkBehaviour)this).__endSendServerRpc(ref val, 956016363u, serverRpcParams, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (init@44 < 1) { IntrinsicFunctions.FailInit(); } onValidSender(serverRpcParams, new InitializeAudioReceiverServerRpc@138(this, totalSamples)); } } [ClientRpc] public void SendPacketClientRpc(Mirage.Domain.Audio.Packet.OpusPacket opusPacket) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2939812228u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref opusPacket, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2939812228u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (init@44 < 1) { IntrinsicFunctions.FailInit(); } if (!((NetworkBehaviour)this).IsHost) { Mirage.Domain.Audio.Receiver.onReceivePacket(audioReceiver, opusPacket); } } } [ServerRpc(RequireOwnership = false)] public void SendPacketServerRpc(Mirage.Domain.Audio.Packet.OpusPacket opusPacket, ServerRpcParams serverRpcParams) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(2659485918u, serverRpcParams, (RpcDelivery)0); ((FastBufferWriter)(ref val)).WriteValueSafe(ref opusPacket, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendServerRpc(ref val, 2659485918u, serverRpcParams, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (init@44 < 1) { IntrinsicFunctions.FailInit(); } onValidSender(serverRpcParams, new SendPacketServerRpc@150(this, opusPacket)); } } [CompilationArgumentCounts(new int[] { 1, 1 })] [CompilerGenerated] internal void onValidSender(ServerRpcParams serverRpcParams, FSharpFunc callback) { ulong senderClientId = serverRpcParams.Receive.SenderClientId; if (((NetworkBehaviour)IntrinsicFunctions.CheckThis(self.contents)).IsHost && ((NetworkBehaviour)IntrinsicFunctions.CheckThis(self.contents)).NetworkManager.ConnectedClients.ContainsKey(senderClientId) && HashCompare.GenericEqualityIntrinsic>(FSharpOption.Some(senderClientId), IntrinsicFunctions.CheckThis(self.contents).AllowedSenderId)) { callback.Invoke((Unit)null); } } [CompilerGenerated] internal void streamAudioHost(OpusReader opusReader) { FSharpFunc @_instance; @_instance = clo@59.@_instance; FSharpOption val = audioSender; Iterate val2 = null; Iterate.Iterate(val, @_instance); IntrinsicFunctions.CheckThis(self.contents).InitializeAudioReceiver(opusReader.totalSamples); IntrinsicFunctions.CheckThis(self.contents).InitializeAudioReceiverClientRpc(opusReader.totalSamples); FSharpFunc sendPacket = new sendPacket@63(this); audioSender = FSharpOption.Some(Mirage.Domain.Audio.Sender.AudioSender(sendPacket, opusReader, ((MonoBehaviour)IntrinsicFunctions.CheckThis(self.contents)).destroyCancellationToken)); Mirage.Domain.Audio.Sender.startAudioSender(audioSender.Value); } [CompilerGenerated] internal void streamAudioClient(OpusReader opusReader) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) FSharpFunc sendPacket = new sendPacket@72-1(this); IntrinsicFunctions.CheckThis(self.contents).InitializeAudioReceiverServerRpc(opusReader.totalSamples, default(ServerRpcParams)); audioSender = FSharpOption.Some(Mirage.Domain.Audio.Sender.AudioSender(sendPacket, opusReader, ((MonoBehaviour)IntrinsicFunctions.CheckThis(self.contents)).destroyCancellationToken)); Mirage.Domain.Audio.Sender.startAudioSender(audioSender.Value); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1377245609u, new RpcReceiveHandler(__rpc_handler_1377245609), "InitializeAudioReceiverClientRpc"); ((NetworkBehaviour)this).__registerRpc(956016363u, new RpcReceiveHandler(__rpc_handler_956016363), "InitializeAudioReceiverServerRpc"); ((NetworkBehaviour)this).__registerRpc(2939812228u, new RpcReceiveHandler(__rpc_handler_2939812228), "SendPacketClientRpc"); ((NetworkBehaviour)this).__registerRpc(2659485918u, new RpcReceiveHandler(__rpc_handler_2659485918), "SendPacketServerRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_1377245609(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int totalSamples = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref totalSamples); target.__rpc_exec_stage = (__RpcExecStage)1; ((AudioStream)(object)target).InitializeAudioReceiverClientRpc(totalSamples); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_956016363(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int totalSamples = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref totalSamples); ServerRpcParams server = rpcParams.Server; target.__rpc_exec_stage = (__RpcExecStage)1; ((AudioStream)(object)target).InitializeAudioReceiverServerRpc(totalSamples, server); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2939812228(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Mirage.Domain.Audio.Packet.OpusPacket opusPacket = default(Mirage.Domain.Audio.Packet.OpusPacket); ((FastBufferReader)(ref reader)).ReadValueSafe(ref opusPacket, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((AudioStream)(object)target).SendPacketClientRpc(opusPacket); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2659485918(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Mirage.Domain.Audio.Packet.OpusPacket opusPacket = default(Mirage.Domain.Audio.Packet.OpusPacket); ((FastBufferReader)(ref reader)).ReadValueSafe(ref opusPacket, default(ForNetworkSerializable)); ServerRpcParams server = rpcParams.Server; target.__rpc_exec_stage = (__RpcExecStage)1; ((AudioStream)(object)target).SendPacketServerRpc(opusPacket, server); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "AudioStream"; } } [Serializable] internal sealed class OnDestroy@89 : FSharpFunc { internal static readonly OnDestroy@89 @_instance = new OnDestroy@89(); [CompilerGenerated] [DebuggerNonUserCode] internal OnDestroy@89() { } public override Unit Invoke(Mirage.Domain.Audio.Sender.AudioSender resource) { Operators.dispose((IDisposable)resource); return null; } } [Serializable] internal sealed class OnDestroy@90-1 : FSharpFunc { internal static readonly OnDestroy@90-1 @_instance = new OnDestroy@90-1(); [CompilerGenerated] [DebuggerNonUserCode] internal OnDestroy@90-1() { } public override Unit Invoke(Mirage.Domain.Audio.Receiver.AudioReceiver resource) { Operators.dispose((IDisposable)resource); return null; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct StreamOpusFromFile@94 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioStream @this; public string filePath; public ValueTaskAwaiter awaiter; public TaskAwaiter awaiter0; public override void MoveNext() { //IL_00b5: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: break; } Exception ex2; try { int num; bool flag; int num2; int num4; bool flag2; int num3; OpusReader result; OpusReader val2; int millisecondsDelay; int num6; bool flag3; int num7; bool flag4; switch (resumptionPoint) { default: { ulong actualClientId = StartOfRound.Instance.localPlayerController.actualClientId; FSharpOption val = FSharpOption.Some(actualClientId); FSharpOption allowedSenderId = this.@this.AllowedSenderId; if (!HashCompare.GenericEqualityIntrinsic>(val, allowedSenderId)) { string message = PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat>>("StreamAudioFromFile cannot be run from this client. LocalId: %P(). AllowedId: %P().", new object[2] { actualClientId, this.@this.AllowedSenderId }, (Type[])null)); if (false) { _ = (Unit)(object)null; num = 1; break; } throw new InvalidOperationException(message); } awaiter = Reader.readOpusFile(filePath).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { goto IL_0112; } if (false) { goto case 1; } ResumptionPoint = 1; num2 = 0; goto IL_0108; } case 1: num2 = 1; goto IL_0108; case 2: { num4 = 1; goto IL_0228; } IL_0108: flag2 = (byte)num2 != 0; flag = flag2; goto IL_0112; IL_02b3: if (num3 != 0) { awaiter = default(ValueTaskAwaiter); num = 1; break; } goto end_IL_0022; IL_0112: if (!flag) { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; goto IL_02b3; } result = awaiter.GetResult(); val2 = result; millisecondsDelay = (int)val2.reader.CurrentTime.TotalMilliseconds; flag3 = false; flag4 = false; ex2 = null; flag3 = flag3 || flag3; try { int num5; if (((NetworkBehaviour)this.@this).IsHost) { this.@this.streamAudioHost(val2); num5 = 1; } else { this.@this.streamAudioClient(val2); num5 = 1; } bool flag5 = (byte)num5 != 0; flag3 = flag5; } catch (object obj) { Exception ex3 = (Exception)obj; flag4 = true; ex2 = ex3; } if (flag4) { Exception ex3 = ex2; Mirage.Domain.Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("An exception occured while streaming audio: %P()", new object[1] { ex3 }, (Type[])null))); num6 = 1; } else { num6 = (flag3 ? 1 : 0); } if (num6 != 0) { awaiter0 = Task.Delay(millisecondsDelay, ((MonoBehaviour)this.@this).destroyCancellationToken).GetAwaiter(); flag3 = true; if (awaiter0.IsCompleted) { goto IL_0232; } if (false) { goto case 2; } ResumptionPoint = 2; num4 = 0; goto IL_0228; } goto end_IL_0022; IL_0232: if (flag3) { awaiter0.GetResult(); _ = null; num7 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num7 = 0; } if (num7 != 0) { awaiter0 = default(TaskAwaiter); num3 = 1; goto IL_02b3; } goto end_IL_0022; IL_0228: flag4 = (byte)num4 != 0; flag3 = flag4; goto IL_0232; } if (num != 0) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0022:; } catch (object obj2) { ex2 = (Exception)obj2; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class InitializeAudioReceiver@113 : FSharpFunc { internal static readonly InitializeAudioReceiver@113 @_instance = new InitializeAudioReceiver@113(); [CompilerGenerated] [DebuggerNonUserCode] internal InitializeAudioReceiver@113() { } public override Unit Invoke(Mirage.Domain.Audio.Receiver.AudioReceiver resource) { Operators.dispose((IDisposable)resource); return null; } } [Serializable] internal sealed class triggerEvent@115 : FSharpFunc { public AudioStream @this; [CompilerGenerated] [DebuggerNonUserCode] internal triggerEvent@115(AudioStream @this) { this.@this = @this; } public override Unit Invoke(Mirage.Domain.Audio.Receiver.DecodedPacket decodedPacket) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) AudioStreamEvent audioStreamEvent = AudioStreamEvent.NewAudioReceivedEvent(new AudioReceivedEvent(decodedPacket.samples@, decodedPacket.sampleIndex@)); this.@this.@event.Trigger((object)IntrinsicFunctions.CheckThis(this.@this.self.contents), audioStreamEvent); return null; } } [Serializable] internal sealed class InitializeAudioReceiverServerRpc@138 : FSharpFunc { public AudioStream @this; public int totalSamples; [CompilerGenerated] [DebuggerNonUserCode] internal InitializeAudioReceiverServerRpc@138(AudioStream @this, int totalSamples) { this.@this = @this; this.totalSamples = totalSamples; } public override Unit Invoke(Unit unitVar0) { this.@this.InitializeAudioReceiver(totalSamples); this.@this.InitializeAudioReceiverClientRpc(totalSamples); return null; } } [Serializable] internal sealed class SendPacketServerRpc@150 : FSharpFunc { public AudioStream @this; public Mirage.Domain.Audio.Packet.OpusPacket opusPacket; [CompilerGenerated] [DebuggerNonUserCode] internal SendPacketServerRpc@150(AudioStream @this, Mirage.Domain.Audio.Packet.OpusPacket opusPacket) { this.@this = @this; this.opusPacket = opusPacket; } public override Unit Invoke(Unit unitVar0) { Mirage.Domain.Audio.Receiver.onReceivePacket(this.@this.audioReceiver, opusPacket); this.@this.SendPacketClientRpc(opusPacket); return null; } } [Serializable] internal sealed class clo@59 : FSharpFunc { internal static readonly clo@59 @_instance = new clo@59(); [CompilerGenerated] [DebuggerNonUserCode] internal clo@59() { } public override Unit Invoke(Mirage.Domain.Audio.Sender.AudioSender resource) { Operators.dispose((IDisposable)resource); return null; } } [Serializable] internal sealed class sendPacket@63 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public AudioStream @this; [CompilerGenerated] [DebuggerNonUserCode] internal sendPacket@63(AudioStream @this) { this.@this = @this; } public override Unit Invoke(Mirage.Domain.Audio.Packet.OpusPacket packet) { IntrinsicFunctions.CheckThis(this.@this.self.contents).SendPacketClientRpc(packet); Mirage.Domain.Audio.Receiver.onReceivePacket(this.@this.audioReceiver, packet); return null; } } [Serializable] internal sealed class sendPacket@72-1 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public AudioStream @this; [CompilerGenerated] [DebuggerNonUserCode] internal sendPacket@72-1(AudioStream @this) { this.@this = @this; } public override Unit Invoke(Mirage.Domain.Audio.Packet.OpusPacket packet) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) IntrinsicFunctions.CheckThis(this.@this.self.contents).SendPacketServerRpc(packet, default(ServerRpcParams)); ArrayPool.Shared.Return(packet.opusData@); return null; } } } } namespace .$Mirage.Unity { internal static class AudioStream { } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Config { [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class syncConfig@13 { internal static void Invoke(orig_ConnectClientToPlayerObject orig, PlayerControllerB self) { if (NetworkManager.Singleton.IsHost) { Mirage.Domain.Config.registerHandler(Mirage.Domain.Config.SyncAction.RequestSync); } else { Mirage.Domain.Config.registerHandler(Mirage.Domain.Config.SyncAction.ReceiveSync); Mirage.Domain.Config.registerHandler(Mirage.Domain.Config.SyncAction.FinishSync); Mirage.Domain.Config.requestSync(); } orig.Invoke(self); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class syncConfig@23-1 { internal static void Invoke(orig_Start orig, MenuManager self) { orig.Invoke(self); Mirage.Domain.Config.revertSync(); } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class syncConfig@28-2 { internal static void Invoke(orig_Awake orig, StartOfRound self) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown orig.Invoke(self); List prefabs = ((Component)GameNetworkManager.Instance).GetComponent().NetworkConfig.Prefabs.m_Prefabs; foreach (NetworkPrefab item in prefabs) { EnemyAI component = item.Prefab.GetComponent(); object obj = component; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { Mirage.Domain.Config.localConfig.RegisterEnemy(component); } } Main.initEnemiesLethalConfig(Assembly.GetExecutingAssembly(), Mirage.Domain.Config.getEnemyConfigEntries()); } } [Serializable] internal sealed class syncConfig@41-4 : FSharpFunc { internal static readonly syncConfig@41-4 @_instance = new syncConfig@41-4(); [CompilerGenerated] [DebuggerNonUserCode] internal syncConfig@41-4() { } public override Unit Invoke(Item item) { Mirage.Domain.Config.localConfig.RegisterStoreItem(item); return null; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class syncConfig@39-3 { internal static void Invoke(orig_Start orig, Terminal self) { orig.Invoke(self); FSharpFunc @_instance; @_instance = syncConfig@41-4.@_instance; Item[] buyableItemsList = self.buyableItemsList; Iterate val = null; Iterate.Iterate(buyableItemsList, @_instance); if (((NetworkBehaviour)self).IsHost) { Mirage.Domain.Config.initSyncedConfig(); Mirage.Domain.Logger.logInfo.Invoke("This configuration will be synced with clients: " + JsonConvert.SerializeObject((object)Mirage.Domain.Config.getConfig(), (Formatting)1)); } } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class syncConfig@47-5 { internal static void Invoke(orig_LoadShipGrabbableItems orig, StartOfRound self) { orig.Invoke(self); List itemsList = self.allItemsList.itemsList; foreach (Item item in itemsList) { if (item.isScrap) { Mirage.Domain.Config.localConfig.RegisterScrapItem(item); } } } } public static void syncConfig() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown PlayerControllerB.ConnectClientToPlayerObject += new hook_ConnectClientToPlayerObject(syncConfig@13.Invoke); MenuManager.Start += new hook_Start(syncConfig@23-1.Invoke); StartOfRound.Awake += new hook_Awake(syncConfig@28-2.Invoke); Terminal.Start += new hook_Start(syncConfig@39-3.Invoke); StartOfRound.LoadShipGrabbableItems += new hook_LoadShipGrabbableItems(syncConfig@47-5.Invoke); } } } namespace .$Mirage.Hook { internal static class Config { } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class AudioSpatializer { [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class disableAudioSpatializer@10 { internal static void Invoke(orig_OnSceneLoaded orig, NetworkSceneManager self, uint eventId) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, eventId); string spatializerPluginName = AudioSettings.GetSpatializerPluginName(); object obj = spatializerPluginName; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { Zero val = null; string text = null; if (!string.Equals(spatializerPluginName, "")) { return; } } AudioSource[] array = Resources.FindObjectsOfTypeAll(); for (int i = 0; i < array.Length; i++) { array[i].spatialize = false; } } } public static void disableAudioSpatializer() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown NetworkSceneManager.OnSceneLoaded += new hook_OnSceneLoaded(disableAudioSpatializer@10.Invoke); } } } namespace .$Mirage.Hook { internal static class AudioSpatializer { } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Dissonance { [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class cacheDissonance@10 { internal static void Invoke(orig_Start orig, DissonanceComms self) { orig.Invoke(self); dissonance = self; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static DissonanceComms dissonance { get { return .$Mirage.Hook.Dissonance.dissonance@5; } set { .$Mirage.Hook.Dissonance.dissonance@5 = value; } } public static DissonanceComms getDissonance() { return dissonance; } public static void cacheDissonance() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown DissonanceComms.Start += new hook_Start(cacheDissonance@10.Invoke); } } } namespace .$Mirage.Hook { internal static class Dissonance { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static DissonanceComms dissonance@5; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Dissonance() { dissonance@5 = null; } } } namespace Mirage.Hook { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class PlayerControllerB { [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static class hookPlayerControllerB@6 { internal static void Invoke(orig_ShowNameBillboard orig, PlayerControllerB self) { if (!Mirage.Domain.Config.isConfigReady() || Mirage.Domain.Config.getConfig().enablePlayerNames@) { orig.Invoke(self); } } } public static void hookPlayerControllerB() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown PlayerControllerB.ShowNameBillboard += new hook_ShowNameBillboard(hookPlayerControllerB@6.Invoke); } } } namespace .$Mirage.Hook { internal static class PlayerControllerB { } } namespace Mirage.Domain.Audio { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Receiver { [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct DecodedPacket : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Samples samples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int sampleIndex@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly Samples samples { [CompilerGenerated] [DebuggerNonUserCode] get { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return samples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public readonly int sampleIndex { [CompilerGenerated] [DebuggerNonUserCode] get { return sampleIndex@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(DecodedPacket))] public DecodedPacket(Samples samples, int sampleIndex) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) samples@ = samples; sampleIndex@ = sampleIndex; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, DecodedPacket>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(DecodedPacket obj) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) IComparer genericComparer = LanguagePrimitives.GenericComparer; Samples val = samples@; Samples val2 = obj.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, genericComparer); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; int num2 = sampleIndex@; int num3 = obj.sampleIndex@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((DecodedPacket)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) DecodedPacket decodedPacket = (DecodedPacket)obj; Samples val = samples@; Samples val2 = decodedPacket.samples@; int num = ((Samples)(ref val)).CompareTo((object)val2, comp); if (num < 0) { return num; } if (num > 0) { return num; } int num2 = sampleIndex@; int num3 = decodedPacket.sampleIndex@; return ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) int num = 0; num = -1640531527 + (sampleIndex@ + ((num << 6) + (num >> 2))); Samples val = samples@; return -1640531527 + (((Samples)(ref val)).GetHashCode(comp) + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(DecodedPacket obj, IEqualityComparer comp) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; Samples val2 = obj.samples@; if (((Samples)(ref val)).Equals((object)val2, comp)) { return sampleIndex@ == obj.sampleIndex@; } return false; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is DecodedPacket obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(DecodedPacket obj) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) Samples val = samples@; if (((Samples)(ref val)).Equals(obj.samples@)) { return sampleIndex@ == obj.sampleIndex@; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is DecodedPacket) { return Equals((DecodedPacket)obj); } return false; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class AudioReceiver : IDisposable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal AudioSource audioSource@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int totalSamples@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal OpusDecoder decoder@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpFunc onPacketDecoded@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal CancellationToken cancellationToken@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Channel decoderChannel@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Channel playbackChannel@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int minimumBufferedPackets@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int bufferedPackets@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool disposed@; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal AudioSource audioSource { [CompilerGenerated] [DebuggerNonUserCode] get { return audioSource@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal int totalSamples { [CompilerGenerated] [DebuggerNonUserCode] get { return totalSamples@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal OpusDecoder decoder { [CompilerGenerated] [DebuggerNonUserCode] get { return decoder@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal FSharpFunc onPacketDecoded { [CompilerGenerated] [DebuggerNonUserCode] get { return onPacketDecoded@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal CancellationToken cancellationToken { [CompilerGenerated] [DebuggerNonUserCode] get { return cancellationToken@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal Channel decoderChannel { [CompilerGenerated] [DebuggerNonUserCode] get { return decoderChannel@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal Channel playbackChannel { [CompilerGenerated] [DebuggerNonUserCode] get { return playbackChannel@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal int minimumBufferedPackets { [CompilerGenerated] [DebuggerNonUserCode] get { return minimumBufferedPackets@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal int bufferedPackets { [CompilerGenerated] [DebuggerNonUserCode] get { return bufferedPackets@; } [CompilerGenerated] [DebuggerNonUserCode] set { bufferedPackets@ = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal bool disposed { [CompilerGenerated] [DebuggerNonUserCode] get { return disposed@; } [CompilerGenerated] [DebuggerNonUserCode] set { disposed@ = value; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(AudioReceiver))] internal AudioReceiver(AudioSource audioSource, int totalSamples, OpusDecoder decoder, FSharpFunc onPacketDecoded, CancellationToken cancellationToken, Channel decoderChannel, Channel playbackChannel, int minimumBufferedPackets, int bufferedPackets, bool disposed) { audioSource@ = audioSource; totalSamples@ = totalSamples; decoder@ = decoder; onPacketDecoded@ = onPacketDecoded; cancellationToken@ = cancellationToken; decoderChannel@ = decoderChannel; playbackChannel@ = playbackChannel; minimumBufferedPackets@ = minimumBufferedPackets; bufferedPackets@ = bufferedPackets; disposed@ = disposed; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, AudioReceiver>("%+A")).Invoke(this); } virtual void IDisposable.Dispose() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown if (disposed@) { return; } disposed = true; Operators.dispose((IDisposable)decoder@); object obj = audioSource@; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { audioSource@.Stop(); obj = audioSource@.clip; if (obj != null && (!(obj is Object) || Object.op_Implicit((Object)obj))) { Object.Destroy((Object)(object)audioSource@.clip); audioSource@.clip = null; } } } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct decoderThread@82-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioReceiver receiver; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel decoderChannel@ = receiver.decoderChannel@; awaiter = decoderChannel@.reader.ReadAsync(decoderChannel@.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_007b; } case 1: { num = 1; goto IL_007b; } IL_007b: flag2 = (byte)num != 0; flag = flag2; break; } int num3; if (flag) { Packet.OpusPacket result = awaiter.GetResult(); Packet.OpusPacket opusPacket = result; byte[] array = ArrayPool.Shared.Rent(1920); flag2 = false; flag2 = flag2 || flag2; try { int num2 = receiver.decoder@.Decode(opusPacket.opusData@, opusPacket.opusLength@, array, 1920); Channel playbackChannel@ = receiver.playbackChannel@; DecodedPacket item = new DecodedPacket(PCM.fromPcmData(new PcmData(array, 1920)), opusPacket.sampleIndex@); ValueTask valueTask = playbackChannel@.writer.WriteAsync(item, playbackChannel@.cancellationToken); bool flag3 = true; flag2 = flag3; } catch (object obj) { ex = (Exception)obj; ArrayPool.Shared.Return(opusPacket.opusData@); ArrayPool.Shared.Return(array); bool flag3 = true; throw; } if (flag2) { ArrayPool.Shared.Return(opusPacket.opusData@); ArrayPool.Shared.Return(array); bool flag3 = true; } num3 = (flag2 ? 1 : 0); } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; } if (num3 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj2) { ex = (Exception)obj2; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct decoderThread@82-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioReceiver receiver; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00d5; case 1: { num = 1; goto IL_006f; } IL_00d5: if (flag) { awaiter = program@1-5(receiver, null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_0079; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_006f; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_006f: flag3 = (byte)num != 0; flag2 = flag3; goto IL_0079; IL_0079: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00d5; } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class decoderThread@82 : FSharpFunc> { public AudioReceiver receiver; [CompilerGenerated] [DebuggerNonUserCode] internal decoderThread@82(AudioReceiver receiver) { this.receiver = receiver; } public override ValueTask Invoke(Unit unitVar0) { decoderThread@82-2 stateMachine = default(decoderThread@82-2); stateMachine.receiver = receiver; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct playbackThread@96-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioReceiver receiver; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; Channel playbackChannel@; bool flag2; int num3; int num4; bool flag6; bool flag3; switch (resumptionPoint) { default: flag = true; goto IL_0212; case 1: { num = 1; goto IL_0083; } IL_0212: if (!flag || receiver.disposed@) { break; } playbackChannel@ = receiver.playbackChannel@; awaiter = playbackChannel@.reader.ReadAsync(playbackChannel@.cancellationToken).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_008d; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0083; IL_008d: if (flag2) { DecodedPacket result = awaiter.GetResult(); DecodedPacket decodedPacket = result; flag3 = false; flag3 = flag3 || flag3; try { int num2; if (((Samples)(ref decodedPacket.samples@)).length > 0) { receiver.bufferedPackets@++; bool flag4 = receiver.audioSource@.clip.SetData(((Samples)(ref decodedPacket.samples@)).data, decodedPacket.sampleIndex@); receiver.onPacketDecoded@.Invoke(decodedPacket); if (1 == 0) { num2 = 0; goto IL_0171; } } if (!receiver.audioSource@.isPlaying && receiver.bufferedPackets@ >= receiver.minimumBufferedPackets@) { receiver.audioSource@.Play(); num2 = 1; } else { num2 = 1; } goto IL_0171; IL_0171: bool flag5 = (byte)num2 != 0; flag3 = flag5; } catch (object obj) { ex = (Exception)obj; ArrayPool.Shared.Return(((Samples)(ref decodedPacket.samples@)).data); bool flag5 = true; throw; } if (flag3) { ArrayPool.Shared.Return(((Samples)(ref decodedPacket.samples@)).data); bool flag5 = true; } num3 = (flag3 ? 1 : 0); } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; } if (num3 != 0) { awaiter = default(ValueTaskAwaiter); num4 = 1; } else { num4 = 0; } flag6 = (byte)num4 != 0; flag = flag6; resumptionPoint = 0; goto IL_0212; IL_0083: flag3 = (byte)num != 0; flag2 = flag3; goto IL_008d; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startAudioReceiver@112-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class startAudioReceiver@112-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public startAudioReceiver@112-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-6(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startAudioReceiver@112-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new startAudioReceiver@112-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class startAudioReceiver@112-4 : FSharpFunc>, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public CancellationToken cancellationToken; [CompilerGenerated] [DebuggerNonUserCode] internal startAudioReceiver@112-4(CancellationToken cancellationToken) { this.cancellationToken = cancellationToken; } public override Unit Invoke(FSharpFunc> x) { ValueTask valueTask = func1@1-3(cancellationToken, x); return null; } } [Serializable] internal sealed class startAudioReceiver@112 : FSharpFunc>, Unit>> { internal static readonly startAudioReceiver@112 @_instance = new startAudioReceiver@112(); [CompilerGenerated] [DebuggerNonUserCode] internal startAudioReceiver@112() { } public override FSharpFunc>, Unit> Invoke(CancellationToken cancellationToken) { return new startAudioReceiver@112-4(cancellationToken); } } [CompilationArgumentCounts(new int[] { 1, 1, 1, 1 })] public static AudioReceiver AudioReceiver(AudioSource audioSource, int totalSamples, FSharpFunc onPacketDecoded, CancellationToken cancellationToken) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown return new AudioReceiver(audioSource, totalSamples, new OpusDecoder(20.0, 48000, 1), onPacketDecoded, cancellationToken, Channel.Channel(cancellationToken), Channel.Channel(cancellationToken), Math.Min(1000 / 20, (int)((double)totalSamples / (48000.0 * 20.0 / 1000.0))), 0, disposed: false); } [CompilerGenerated] internal static ValueTask program@1-5(AudioReceiver receiver, Unit unitVar0) { decoderThread@82-1 stateMachine = default(decoderThread@82-1); stateMachine.receiver = receiver; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static ValueTask playbackThread@95(AudioReceiver receiver, Unit unitVar0) { playbackThread@96-1 stateMachine = default(playbackThread@96-1); stateMachine.receiver = receiver; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-6(FSharpFunc> program, Channel> channel, Unit unitVar0) { startAudioReceiver@112-2 stateMachine = default(startAudioReceiver@112-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-3(CancellationToken cancellationToken, FSharpFunc> program) { startAudioReceiver@112-1 stateMachine = default(startAudioReceiver@112-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static void startAudioReceiver(AudioReceiver receiver) { receiver.audioSource@.clip = AudioClip.Create("AudioReceiver", receiver.totalSamples@, 1, 48000, false); FSharpFunc> val = new decoderThread@82(receiver); FSharpFunc>>.InvokeFast((FSharpFunc>, Unit>>)startAudioReceiver@112.@_instance, receiver.cancellationToken@, val); ValueTask valueTask = playbackThread@95(receiver, null); } [CompilationArgumentCounts(new int[] { 1, 1 })] public static void onReceivePacket(FSharpOption receiver, Packet.OpusPacket opusPacket) { if (receiver != null) { Channel decoderChannel@ = receiver.Value.decoderChannel@; ValueTask valueTask = decoderChannel@.writer.WriteAsync(opusPacket, decoderChannel@.cancellationToken); } } } } namespace .$Mirage.Domain.Audio { internal static class Receiver { } } namespace Mirage.Domain.Audio { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Sender { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class AudioSender : IDisposable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal OpusReader opusReader@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpFunc sendPacket@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Channel> channel@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal CancellationToken cancellationToken@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Lock lock@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal LVar running@; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal OpusReader opusReader { [CompilerGenerated] [DebuggerNonUserCode] get { return opusReader@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal FSharpFunc sendPacket { [CompilerGenerated] [DebuggerNonUserCode] get { return sendPacket@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal Channel> channel { [CompilerGenerated] [DebuggerNonUserCode] get { return channel@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal CancellationToken cancellationToken { [CompilerGenerated] [DebuggerNonUserCode] get { return cancellationToken@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal Lock @lock { [CompilerGenerated] [DebuggerNonUserCode] get { return lock@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal LVar running { [CompilerGenerated] [DebuggerNonUserCode] get { return running@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(AudioSender))] internal AudioSender(OpusReader opusReader, FSharpFunc sendPacket, Channel> channel, CancellationToken cancellationToken, Lock @lock, LVar running) { opusReader@ = opusReader; sendPacket@ = sendPacket; channel@ = channel; cancellationToken@ = cancellationToken; lock@ = @lock; running@ = running; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, AudioSender>("%+A")).Invoke(this); } virtual void IDisposable.Dispose() { try { ValueTask valueTask = LVar.writeLVar(running@, false); } finally { Operators.dispose((IDisposable)opusReader@); } } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct producer@43-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioSender sender; public FSharpValueOption packet; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_00a4: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: awaiter = LVar.readLVar(sender.running@).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_006b; case 1: { num = 1; goto IL_006b; } IL_006b: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { if (!awaiter.GetResult()) { goto IL_00e8; } Channel> channel@ = sender.channel@; ValueTask valueTask = channel@.writer.WriteAsync(packet, channel@.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { goto IL_00e8; } goto end_IL_0019; IL_00e8: ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0019:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class producer@42-1 : FSharpFunc, ValueTask> { public AudioSender sender; [CompilerGenerated] [DebuggerNonUserCode] internal producer@42-1(AudioSender sender) { this.sender = sender; } public override ValueTask Invoke(FSharpValueOption packet) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) producer@43-2 stateMachine = default(producer@43-2); stateMachine.sender = sender; stateMachine.packet = packet; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class producer@42 : FSharpFunc> { public AudioSender sender; [CompilerGenerated] [DebuggerNonUserCode] internal producer@42(AudioSender sender) { this.sender = sender; } public override ValueTask Invoke(Unit unitVar0) { return Stream.streamAudio(sender.opusReader@, sender.cancellationToken@, new producer@42-1(sender)); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct awaitPacket@52-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioSender sender; public FSharpRef> value; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> channel@ = sender.channel@; awaiter = channel@.reader.ReadAsync(channel@.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_007b; } case 1: { num = 1; goto IL_007b; } IL_007b: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpValueOption result = awaiter.GetResult(); FSharpValueOption contents = result; value.contents = contents; flag2 = contents.Tag == 1; Data.Result = flag2; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@49-4 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public AudioSender sender; public FSharpRef> value; public ValueTaskAwaiter awaiter; public FSharpRef cond@; public Packet.OpusPacket packet; public ValueTaskAwaiter awaiter0; public ValueTaskAwaiter awaiter1; public override void MoveNext() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; int num7; int num3; int num2; bool flag2; bool flag4; bool flag6; int num4; bool flag7; int num5; int num6; int num8; ICriticalNotifyCompletion criticalNotifyCompletion; bool flag3; switch (resumptionPoint) { default: value = new FSharpRef>(FSharpValueOption.ValueNone); awaiter = awaitPacket@51(sender, value, null).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { goto IL_00a9; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009f; case 1: num = 1; goto IL_009f; case 2: num7 = 1; goto IL_014f; case 3: { num3 = 1; goto IL_0234; } IL_0159: if (flag2) { if (!awaiter0.GetResult()) { goto IL_01bb; } sender.sendPacket@.Invoke(packet); num2 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { goto IL_01bb; } goto IL_02a5; IL_0234: flag3 = (byte)num3 != 0; flag2 = flag3; goto IL_023e; IL_009f: flag4 = (byte)num != 0; flag = flag4; goto IL_00a9; IL_00a9: if (flag) { flag4 = awaiter.GetResult(); bool flag5 = flag4; cond@ = new FSharpRef(flag5); flag6 = true; goto IL_02af; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num4 = 0; break; IL_02a7: flag7 = (byte)num5 != 0; flag6 = flag7; resumptionPoint = 0; goto IL_02af; IL_02af: if (flag6 && cond@.contents) { FSharpValueOption contents = value.contents; if (contents.Tag != 1) { Operators.dispose((IDisposable)sender); num6 = 1; goto IL_01e9; } packet = contents.Item; awaiter0 = LVar.readLVar(sender.running@).GetAwaiter(); flag2 = true; if (awaiter0.IsCompleted) { goto IL_0159; } if (false) { goto case 2; } ResumptionPoint = 2; num7 = 0; goto IL_014f; } if (flag6) { cond@ = null; num4 = 1; break; } goto end_IL_0027; IL_01bb: awaiter0 = default(ValueTaskAwaiter); if (true) { packet = default(Packet.OpusPacket); num6 = 1; goto IL_01e9; } goto IL_02a5; IL_023e: if (flag2) { flag3 = awaiter1.GetResult(); bool contents2 = flag3; cond@.contents = contents2; num8 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num8 = 0; } if (num8 != 0) { awaiter1 = default(ValueTaskAwaiter); num5 = 1; } else { num5 = 0; } goto IL_02a7; IL_01e9: if (num6 != 0) { awaiter1 = awaitPacket@51(sender, value, null).GetAwaiter(); flag2 = true; if (awaiter1.IsCompleted) { goto IL_023e; } if (false) { goto case 3; } ResumptionPoint = 3; num3 = 0; goto IL_0234; } goto IL_02a5; IL_02a5: num5 = 0; goto IL_02a7; IL_014f: flag3 = (byte)num7 != 0; flag2 = flag3; goto IL_0159; } if (num4 != 0) { awaiter = default(ValueTaskAwaiter); if (true) { value = null; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } end_IL_0027:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startAudioSender@65-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class startAudioSender@65-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public startAudioSender@65-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-5(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct startAudioSender@65-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new startAudioSender@65-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class startAudioSender@65-4 : FSharpFunc>, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public CancellationToken cancellationToken; [CompilerGenerated] [DebuggerNonUserCode] internal startAudioSender@65-4(CancellationToken cancellationToken) { this.cancellationToken = cancellationToken; } public override Unit Invoke(FSharpFunc> x) { ValueTask valueTask = func1@1-2(cancellationToken, x); return null; } } [Serializable] internal sealed class startAudioSender@65 : FSharpFunc>, Unit>> { internal static readonly startAudioSender@65 @_instance = new startAudioSender@65(); [CompilerGenerated] [DebuggerNonUserCode] internal startAudioSender@65() { } public override FSharpFunc>, Unit> Invoke(CancellationToken cancellationToken) { return new startAudioSender@65-4(cancellationToken); } } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static AudioSender AudioSender(FSharpFunc sendPacket, OpusReader opusReader, CancellationToken cancellationToken) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown return new AudioSender(opusReader, sendPacket, Channel.Channel>(cancellationToken), cancellationToken, new Lock(new SemaphoreSlim(1)), LVar.newLVar(true)); } internal static ValueTask awaitPacket@51(AudioSender sender, FSharpRef> value, Unit unitVar0) { awaitPacket@52-1 stateMachine = default(awaitPacket@52-1); stateMachine.sender = sender; stateMachine.value = value; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static ValueTask consumer@48-3(AudioSender sender, Unit unitVar0) { consumer@49-4 stateMachine = default(consumer@49-4); stateMachine.sender = sender; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-5(FSharpFunc> program, Channel> channel, Unit unitVar0) { startAudioSender@65-2 stateMachine = default(startAudioSender@65-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-2(CancellationToken cancellationToken, FSharpFunc> program) { startAudioSender@65-1 stateMachine = default(startAudioSender@65-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static void startAudioSender(AudioSender sender) { FSharpFunc> val = new producer@42(sender); FSharpFunc>>.InvokeFast((FSharpFunc>, Unit>>)startAudioSender@65.@_instance, sender.cancellationToken@, val); ValueTask valueTask = consumer@48-3(sender, null); } } } namespace .$Mirage.Domain.Audio { internal static class Sender { } } namespace Mirage.Domain.Audio { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Stream { [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct streamAudio@29 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public OpusReader opusReader; public CancellationToken cancellationToken; public FSharpFunc, ValueTask> sendPacket; public FSharpRef sampleIndex; public FSharpRef previousTime; public FSharpRef currentBuffer; public LinkedList delayBuffer; public RentedPacket rentedPacket; public double bufferedTime; public long startTime; public FSharpRef delayedTime; public TaskAwaiter awaiter; public ValueTaskAwaiter awaiter0; public ValueTaskAwaiter awaiter1; public override void MoveNext() { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Expected O, but got Unknown //IL_0376: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { int num5; int num11; int num4; int num3; bool flag; bool flag3; bool flag4; int num6; int num7; bool flag5; bool flag6; int num8; bool flag7; Packet.OpusPacket opusPacket; bool flag2; switch (resumptionPoint) { default: sampleIndex = new FSharpRef(0); previousTime = new FSharpRef(0.0); currentBuffer = new FSharpRef(0.0); delayBuffer = new LinkedList(); flag = true; goto IL_0440; case 1: num5 = 1; goto IL_01e7; case 2: num11 = 1; goto IL_03b0; case 3: { num4 = 1; goto IL_04a8; } IL_0440: if (flag && opusReader.reader.HasNextPacket) { rentedPacket = opusReader.reader.RentNextRawPacket(); object packet = rentedPacket.packet; if (packet != null && (!(packet is Object) || Object.op_Implicit((Object)packet))) { double num = opusReader.reader.CurrentTime.TotalMilliseconds * frequency; double num2 = num - previousTime.contents; LinkedListNode linkedListNode = delayBuffer.AddLast(num2); previousTime.contents = num; currentBuffer.contents@ += num2; if (currentBuffer.contents >= maximumBuffer) { bufferedTime = delayBuffer.First.Value; delayBuffer.RemoveFirst(); startTime = Stopwatch.GetTimestamp(); delayedTime = new FSharpRef(0.0); flag2 = true; goto IL_0265; } goto IL_0341; } num3 = 1; goto IL_0438; } if (flag) { awaiter1 = sendPacket.Invoke(FSharpValueOption.ValueNone).GetAwaiter(); flag = true; if (awaiter1.IsCompleted) { break; } if (false) { goto case 3; } ResumptionPoint = 3; num4 = 0; goto IL_04a8; } goto end_IL_0027; IL_01e7: flag3 = (byte)num5 != 0; flag4 = flag3; goto IL_01f1; IL_01f1: if (flag4) { awaiter.GetResult(); _ = null; delayedTime.contents = Stopwatch.GetTimestamp() - startTime; num6 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num6 = 0; } if (num6 != 0) { awaiter = default(TaskAwaiter); num7 = 1; } else { num7 = 0; } flag5 = (byte)num7 != 0; flag2 = flag5; resumptionPoint = 0; goto IL_0265; IL_03ba: if (flag6) { awaiter0.GetResult(); _ = null; sampleIndex.contents@ += 960; num8 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num8 = 0; } if (num8 != 0) { awaiter0 = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } goto IL_0438; IL_04a8: flag7 = (byte)num4 != 0; flag = flag7; break; IL_0438: flag7 = (byte)num3 != 0; flag = flag7; resumptionPoint = 0; goto IL_0440; IL_0265: if (flag2 && delayedTime.contents < bufferedTime) { awaiter = Task.Delay(100, cancellationToken).GetAwaiter(); flag4 = true; if (awaiter.IsCompleted) { goto IL_01f1; } if (false) { goto case 1; } ResumptionPoint = 1; num5 = 0; goto IL_01e7; } if (flag2) { double num9 = ((!(delayedTime.contents > bufferedTime)) ? 1.0 : 2.0); ref double contents@ = ref currentBuffer.contents@; double num10 = delayedTime.contents - bufferedTime * num9; contents@ -= num10; if (true) { delayedTime = null; if (true) { startTime = 0L; if (true) { bufferedTime = 0.0; if (true) { goto IL_0341; } } } } } num3 = 0; goto IL_0438; IL_0341: opusPacket = new Packet.OpusPacket(opusData: rentedPacket.packet, opusLength: rentedPacket.packetLength, sampleIndex: sampleIndex.contents); awaiter0 = sendPacket.Invoke(FSharpValueOption.NewValueSome(opusPacket)).GetAwaiter(); flag6 = true; if (awaiter0.IsCompleted) { goto IL_03ba; } if (false) { goto case 2; } ResumptionPoint = 2; num11 = 0; goto IL_03b0; IL_03b0: flag2 = (byte)num11 != 0; flag6 = flag2; goto IL_03ba; } int num12; if (flag) { awaiter1.GetResult(); _ = null; num12 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter1; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num12 = 0; } if (num12 != 0) { awaiter1 = default(ValueTaskAwaiter); if (true) { delayBuffer = null; if (true) { currentBuffer = null; if (true) { previousTime = null; if (true) { sampleIndex = null; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } } } } end_IL_0027:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const int MinimumBufferedAudioMs = 1000; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static double maximumBuffer => .$Mirage.Domain.Audio.Stream.maximumBuffer@15; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static double frequency => .$Mirage.Domain.Audio.Stream.frequency@16; [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static ValueTask streamAudio(OpusReader opusReader, CancellationToken cancellationToken, FSharpFunc, ValueTask> sendPacket) { streamAudio@29 stateMachine = default(streamAudio@29); stateMachine.opusReader = opusReader; stateMachine.cancellationToken = cancellationToken; stateMachine.sendPacket = sendPacket; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } static Stream() { .$Mirage.Domain.Audio.Stream.init@ = 0; _ = .$Mirage.Domain.Audio.Stream.init@; } } } namespace .$Mirage.Domain.Audio { internal static class Stream { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly double maximumBuffer@15; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly double frequency@16; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Stream() { maximumBuffer@15 = (double)Stopwatch.Frequency * 1000.0 / 1000.0; frequency@16 = (double)Stopwatch.Frequency / 1000.0; } } } namespace Mirage.Domain.Audio { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Packet { [Serializable] [Struct] [CompilationMapping(/*Could not decode attribute arguments.*/)] public struct OpusPacket : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable, INetworkSerializable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int opusLength@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public byte[] opusData@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public int sampleIndex@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public int opusLength { [CompilerGenerated] [DebuggerNonUserCode] readonly get { return opusLength@; } [CompilerGenerated] [DebuggerNonUserCode] set { opusLength@ = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public byte[] opusData { [CompilerGenerated] [DebuggerNonUserCode] readonly get { return opusData@; } [CompilerGenerated] [DebuggerNonUserCode] set { opusData@ = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int sampleIndex { [CompilerGenerated] [DebuggerNonUserCode] readonly get { return sampleIndex@; } [CompilerGenerated] [DebuggerNonUserCode] set { sampleIndex@ = value; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(OpusPacket))] public OpusPacket(int opusLength, byte[] opusData, int sampleIndex) { opusLength@ = opusLength; opusData@ = opusData; sampleIndex@ = sampleIndex; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, OpusPacket>("%+A")).Invoke(this); } [CompilerGenerated] public sealed override int CompareTo(OpusPacket obj) { IComparer genericComparer = LanguagePrimitives.GenericComparer; int num = opusLength@; int num2 = obj.opusLength@; int num3 = ((num > num2) ? 1 : 0) - ((num < num2) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } num = HashCompare.GenericComparisonWithComparerIntrinsic(LanguagePrimitives.GenericComparer, opusData@, obj.opusData@); if (num < 0) { return num; } if (num > 0) { return num; } genericComparer = LanguagePrimitives.GenericComparer; num2 = sampleIndex@; int num4 = obj.sampleIndex@; return ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); } [CompilerGenerated] public sealed override int CompareTo(object obj) { return CompareTo((OpusPacket)obj); } [CompilerGenerated] public sealed override int CompareTo(object obj, IComparer comp) { OpusPacket opusPacket = (OpusPacket)obj; int num = opusLength@; int num2 = opusPacket.opusLength@; int num3 = ((num > num2) ? 1 : 0) - ((num < num2) ? 1 : 0); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } num = HashCompare.GenericComparisonWithComparerIntrinsic(comp, opusData@, opusPacket.opusData@); if (num < 0) { return num; } if (num > 0) { return num; } num2 = sampleIndex@; int num4 = opusPacket.sampleIndex@; return ((num2 > num4) ? 1 : 0) - ((num2 < num4) ? 1 : 0); } [CompilerGenerated] public sealed override int GetHashCode(IEqualityComparer comp) { int num = 0; num = -1640531527 + (sampleIndex@ + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, opusData@) + ((num << 6) + (num >> 2))); return -1640531527 + (opusLength@ + ((num << 6) + (num >> 2))); } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(OpusPacket obj, IEqualityComparer comp) { if (opusLength@ == obj.opusLength@) { if (HashCompare.GenericEqualityWithComparerIntrinsic(comp, opusData@, obj.opusData@)) { return sampleIndex@ == obj.sampleIndex@; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj, IEqualityComparer comp) { if (obj is OpusPacket obj2) { return Equals(obj2, comp); } return false; } virtual void INetworkSerializable.NetworkSerialize(BufferSerializer serializer) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if (serializer.IsReader) { FastBufferReader fastBufferReader = serializer.GetFastBufferReader(); ((FastBufferReader)(ref fastBufferReader)).ReadValueSafe(ref opusLength@, default(ForPrimitives)); opusData = ArrayPool.Shared.Rent(opusLength@); ((FastBufferReader)(ref fastBufferReader)).ReadBytesSafe(ref opusData@, opusLength@, 0); ((FastBufferReader)(ref fastBufferReader)).ReadValueSafe(ref sampleIndex@, default(ForPrimitives)); } else { FastBufferWriter fastBufferWriter = serializer.GetFastBufferWriter(); ((FastBufferWriter)(ref fastBufferWriter)).WriteValue(ref opusLength@, default(ForPrimitives)); ((FastBufferWriter)(ref fastBufferWriter)).WriteBytes(opusData@, opusLength@, 0); ((FastBufferWriter)(ref fastBufferWriter)).WriteValue(ref sampleIndex@, default(ForPrimitives)); } } [CompilerGenerated] public sealed override bool Equals(OpusPacket obj) { if (opusLength@ == obj.opusLength@) { if (HashCompare.GenericEqualityERIntrinsic(opusData@, obj.opusData@)) { return sampleIndex@ == obj.sampleIndex@; } return false; } return false; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is OpusPacket) { return Equals((OpusPacket)obj); } return false; } } } } namespace .$Mirage.Domain.Audio { internal static class Packet { } } namespace Mirage.Domain.Audio { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Recording { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class RecordingManager : IEquatable, IStructuralEquatable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal Random random@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal List recordings@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int recordingCount@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpOption lastRecording@; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal Random random { [CompilerGenerated] [DebuggerNonUserCode] get { return random@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal List recordings { [CompilerGenerated] [DebuggerNonUserCode] get { return recordings@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal int recordingCount { [CompilerGenerated] [DebuggerNonUserCode] get { return recordingCount@; } [CompilerGenerated] [DebuggerNonUserCode] set { recordingCount@ = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal FSharpOption lastRecording { [CompilerGenerated] [DebuggerNonUserCode] get { return lastRecording@; } [CompilerGenerated] [DebuggerNonUserCode] set { lastRecording@ = value; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(RecordingManager))] internal RecordingManager(Random random, List recordings, int recordingCount, FSharpOption lastRecording) { random@ = random; recordings@ = recordings; recordingCount@ = recordingCount; lastRecording@ = lastRecording; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, RecordingManager>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic>(comp, lastRecording@) + ((num << 6) + (num >> 2))); num = -1640531527 + (recordingCount@ + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic>(comp, recordings@) + ((num << 6) + (num >> 2))); return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, random@) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(RecordingManager obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityWithComparerIntrinsic(comp, random@, obj.random@)) { if (HashCompare.GenericEqualityWithComparerIntrinsic>(comp, recordings@, obj.recordings@)) { if (recordingCount@ == obj.recordingCount@) { return HashCompare.GenericEqualityWithComparerIntrinsic>(comp, lastRecording@, obj.lastRecording@); } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is RecordingManager obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(RecordingManager obj) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityERIntrinsic(random@, obj.random@)) { if (HashCompare.GenericEqualityERIntrinsic>(recordings@, obj.recordings@)) { if (recordingCount@ == obj.recordingCount@) { return HashCompare.GenericEqualityERIntrinsic>(lastRecording@, obj.lastRecording@); } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is RecordingManager obj2) { return Equals(obj2); } return false; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct deleteRecordings@41 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Setting.Settings settings; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex3 = default(Exception); Exception ex; try { if (settings.neverDeleteRecordings@) { goto IL_0063; } bool flag = false; bool flag2 = false; ex = null; flag = flag || flag; try { System.IO.Directory.Delete(Directory.recordingDirectory, recursive: true); bool flag3 = true; flag = flag3; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num; if (flag2) { Exception ex2 = ex; num = 1; } else { num = (flag ? 1 : 0); } if (num != 0) { goto IL_0063; } goto end_IL_0007; IL_0063: Data.MethodBuilder.SetResult(Data.Result); end_IL_0007:; } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct deleteRecordings@41-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Setting.Settings settings; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program@1-2(settings, null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class deleteRecordings@41-3 { public Setting.Settings settings; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public deleteRecordings@41-3(Setting.Settings settings, Channel> channel) { this.settings = settings; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-2(settings, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct deleteRecordings@41-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Setting.Settings settings; public CancellationToken cancellationToken; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new deleteRecordings@41-3(settings, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct getRecordings@50 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex2 = default(Exception); Exception ex; try { string[] array; try { array = System.IO.Directory.GetFiles(Directory.recordingDirectory); } catch (object obj) { ex = (Exception)obj; Zero val = null; string[] array2 = null; array = Array.Empty(); } string[] result = array; Data.Result = result; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct getRecordings@50-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program@1-3(null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0086; case 1: { num = 1; goto IL_0086; } IL_0086: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { string[] result = awaiter.GetResult(); string[] array = result; FSharpResult item = FSharpResult.NewOk(array); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class getRecordings@50-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public getRecordings@50-3(Channel> channel) { this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-3(channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct getRecordings@50-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new getRecordings@50-3(val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0097; } case 1: { num = 1; goto IL_0097; } IL_0097: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } string[] resultValue = val2.ResultValue; Data.Result = resultValue; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct getRecording@59 : IAsyncStateMachine, IResumableStateMachine, AsyncValueTaskMethodBuilder>>> { public TaskBaseStateMachineData, AsyncValueTaskMethodBuilder>> Data; public int ResumptionPoint; public RecordingManager recordingManager; public ValueTaskAwaiter awaiter; public ValueTaskAwaiter> awaiter0; public override void MoveNext() { int resumptionPoint = ResumptionPoint; Exception ex = default(Exception); switch (resumptionPoint) { default: ex = null; break; case 1: case 2: break; } Exception ex2; try { int num; int num4; bool flag; int num2; int num3; int index; string text; FSharpOption result; int num5; bool flag2; switch (resumptionPoint) { default: if (recordingManager.recordings@.Count == 0) { awaiter = getRecordings().GetAwaiter(); flag = true; if (awaiter.IsCompleted) { goto IL_0094; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008a; } goto IL_0128; case 1: num = 1; goto IL_008a; case 2: { num4 = 1; goto IL_0243; } IL_024d: if (flag) { result = awaiter0.GetResult(); FSharpOption result2 = result; Data.Result = result2; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter0 = default(ValueTaskAwaiter>); num3 = 1; break; } goto end_IL_0022; IL_0128: if (recordingManager.recordings@.Count == 0) { result = null; Data.Result = result; num3 = 1; break; } index = recordingManager.random@.Next(recordingManager.recordings@.Count); text = recordingManager.recordings@[index]; recordingManager.recordings@.RemoveAt(index); if (!text.EndsWith(".opus")) { Logger.logWarning.Invoke("Found an unsupported recording, make sure it's an opus file: " + text); result = null; Data.Result = result; num3 = 1; break; } if (HashCompare.GenericEqualityIntrinsic>(FSharpOption.Some(text), recordingManager.lastRecording@) && recordingManager.recordingCount@ > 1) { awaiter0 = getRecording(recordingManager).GetAwaiter(); flag = true; if (awaiter0.IsCompleted) { goto IL_024d; } if (false) { goto case 2; } ResumptionPoint = 2; num4 = 0; goto IL_0243; } recordingManager.lastRecording = FSharpOption.Some(text); result = FSharpOption.Some(text); Data.Result = result; num3 = 1; break; IL_008a: flag2 = (byte)num != 0; flag = flag2; goto IL_0094; IL_0094: if (flag) { string[] result3 = awaiter.GetResult(); string[] array = result3; recordingManager.recordings@.Clear(); recordingManager.recordings@.AddRange(array); recordingManager.recordingCount = array.Length; num5 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num5 = 0; } if (num5 != 0) { awaiter = default(ValueTaskAwaiter); if (true) { goto IL_0128; } } goto end_IL_0022; IL_0243: flag2 = (byte)num4 != 0; flag = flag2; goto IL_024d; } if (num3 != 0) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0022:; } catch (object obj) { ex2 = (Exception)obj; ex = ex2; } ex2 = ex; if (ex2 != null) { Data.MethodBuilder.SetException(ex2); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData, AsyncValueTaskMethodBuilder>> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData, AsyncValueTaskMethodBuilder>> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct saveRecording@85 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string fileName; public ArraySegment samples; public WaveFormat format; public override void MoveNext() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; Exception ex2 = default(Exception); Exception ex; try { string text = Path.Join((ReadOnlySpan)Directory.recordingDirectory, (ReadOnlySpan)(fileName + ".opus")); OpusWriter val = Writer.OpusWriter(new OpusWriterArgs(text, format)); Writer.writeOpusSamples(val, new Samples(samples.Array, samples.Count)); Writer.closeOpusWriter(val); Data.Result = text; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct saveRecording@85-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string fileName; public ArraySegment samples; public WaveFormat format; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program@1-4(fileName, samples, format, null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0098; case 1: { num = 1; goto IL_0098; } IL_0098: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { string result = awaiter.GetResult(); string text = result; FSharpResult item = FSharpResult.NewOk(text); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class saveRecording@85-3 { public string fileName; public ArraySegment samples; public WaveFormat format; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public saveRecording@85-3(string fileName, ArraySegment samples, WaveFormat format, Channel> channel) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) this.fileName = fileName; this.samples = samples; this.format = format; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) return thread@1-4(fileName, samples, format, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct saveRecording@85-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string fileName; public ArraySegment samples; public WaveFormat format; public CancellationToken cancellationToken; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new saveRecording@85-3(fileName, samples, format, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00a9; } case 1: { num = 1; goto IL_00a9; } IL_00a9: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } string resultValue = val2.ResultValue; Data.Result = resultValue; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct saveAudioClipWithName@102 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string fileName; public AudioClip audioClip; public float[] samples; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { WaveFormat format = default(WaveFormat); bool flag; switch (resumptionPoint) { default: format = new WaveFormat(audioClip.frequency, audioClip.channels); samples = ArrayPool.Shared.Rent(audioClip.samples); flag = false; flag = flag || flag; break; case 1: break; } try { bool data; int num; bool flag2; switch (resumptionPoint) { default: { data = audioClip.GetData(samples, 0); ArraySegment arraySegment = new ArraySegment(samples, 0, audioClip.samples); awaiter = saveRecording(fileName, arraySegment, format).GetAwaiter(); data = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_00f1; } case 1: { num = 1; goto IL_00f1; } IL_00f1: flag2 = (byte)num != 0; data = flag2; break; } int num2; if (data) { string result = awaiter.GetResult(); string result2 = result; Data.Result = result2; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag3 = (byte)num3 != 0; flag = flag3; } catch (object obj) { ex = (Exception)obj; ArrayPool.Shared.Return(samples); bool flag3 = true; throw; } if (flag) { ArrayPool.Shared.Return(samples); bool flag3 = true; } if (flag) { samples = null; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj2) { ex = (Exception)obj2; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } public static RecordingManager RecordingManager() { Random random = new Random(); Zero val = null; List list = null; List recordings = new List(); val = null; int num = 0; Default1 val2 = (Default1)(object)val; val = null; FSharpOption val3 = null; return new RecordingManager(random, recordings, 0, null); } [CompilerGenerated] internal static ValueTask program@1-2(Setting.Settings settings, Unit unitVar0) { deleteRecordings@41 stateMachine = default(deleteRecordings@41); stateMachine.settings = settings; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-2(Setting.Settings settings, Channel> channel, Unit unitVar0) { deleteRecordings@41-2 stateMachine = default(deleteRecordings@41-2); stateMachine.settings = settings; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static ValueTask deleteRecordings(Setting.Settings settings) { CancellationToken none = CancellationToken.None; deleteRecordings@41-1 stateMachine = default(deleteRecordings@41-1); stateMachine.settings = settings; stateMachine.cancellationToken = none; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask program@1-3(Unit unitVar0) { getRecordings@50 stateMachine = default(getRecordings@50); stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-3(Channel> channel, Unit unitVar0) { getRecordings@50-2 stateMachine = default(getRecordings@50-2); stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static ValueTask getRecordings() { CancellationToken none = CancellationToken.None; getRecordings@50-1 stateMachine = default(getRecordings@50-1); stateMachine.cancellationToken = none; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static ValueTask> getRecording(RecordingManager recordingManager) { getRecording@59 stateMachine = default(getRecording@59); stateMachine.recordingManager = recordingManager; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder>.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask program@1-4(string fileName, ArraySegment samples, WaveFormat format, Unit unitVar0) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) saveRecording@85 stateMachine = default(saveRecording@85); stateMachine.fileName = fileName; stateMachine.samples = samples; stateMachine.format = format; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-4(string fileName, ArraySegment samples, WaveFormat format, Channel> channel, Unit unitVar0) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) saveRecording@85-2 stateMachine = default(saveRecording@85-2); stateMachine.fileName = fileName; stateMachine.samples = samples; stateMachine.format = format; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] public static ValueTask saveRecording(string fileName, ArraySegment samples, WaveFormat format) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) CancellationToken none = CancellationToken.None; saveRecording@85-1 stateMachine = default(saveRecording@85-1); stateMachine.fileName = fileName; stateMachine.samples = samples; stateMachine.format = format; stateMachine.cancellationToken = none; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilationArgumentCounts(new int[] { 1, 1 })] public static ValueTask saveAudioClipWithName(string fileName, AudioClip audioClip) { saveAudioClipWithName@102 stateMachine = default(saveAudioClipWithName@102); stateMachine.fileName = fileName; stateMachine.audioClip = audioClip; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static ValueTask saveAudioClip(AudioClip audioClip) { return saveAudioClipWithName(Guid.NewGuid().ToString(), audioClip); } } } namespace .$Mirage.Domain.Audio { internal static class Recording { } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Config { [Serializable] internal sealed class stripConfigKey@33 : FSharpFunc { internal static readonly stripConfigKey@33 @_instance = new stripConfigKey@33(); [CompilerGenerated] [DebuggerNonUserCode] internal stripConfigKey@33() { } public override string Invoke(string source) { return String.replace("'", "", source); } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public class LocalConfig { internal ConfigFile items; internal ConfigFile general; internal ConfigFile enemies; internal ConfigFile General@; internal ConfigFile Enemies@; internal ConfigFile Items@; internal ConfigEntry MaskedMimicChance@; internal ConfigEntry NonMaskedMimicChance@; internal ConfigEntry MinimumDelayMasked@; internal ConfigEntry MaximumDelayMasked@; internal ConfigEntry MinimumDelayNonMasked@; internal ConfigEntry MaximumDelayNonMasked@; internal ConfigEntry EnableMimicVoiceWhileAlive@; internal ConfigEntry EnableRecordVoiceWhileDead@; internal ConfigEntry EnableArmsOut@; internal ConfigEntry EnableMaskTexture@; internal ConfigEntry EnableRadarSpin@; internal ConfigEntry MimicVoiceWhileHiding@; internal ConfigEntry CopyMaskedVisuals@; internal ConfigEntry EnablePlayerNames@; internal ConfigEntry EnableSpawnControl@; internal ConfigEntry MaskedSpawnChance@; internal ConfigEntry MaxMaskedSpawns@; internal ConfigEntry MaskedItemSpawnChance@; internal ConfigEntry StoreItemRollChance@; internal ConfigEntry MaskedDropStoreItemOnDeath@; internal ConfigEntry MaskedDropScrapItemOnDeath@; internal ConfigEntry EmitFlashlightChance@; internal ConfigEntry ScrapValueMultiplier@; internal ConfigFile General { [CompilerGenerated] [DebuggerNonUserCode] get { return General@; } } internal ConfigFile Enemies { [CompilerGenerated] [DebuggerNonUserCode] get { return Enemies@; } } internal ConfigFile Items { [CompilerGenerated] [DebuggerNonUserCode] get { return Items@; } } public ConfigEntry MaskedMimicChance { [CompilerGenerated] [DebuggerNonUserCode] get { return MaskedMimicChance@; } } public ConfigEntry NonMaskedMimicChance { [CompilerGenerated] [DebuggerNonUserCode] get { return NonMaskedMimicChance@; } } public ConfigEntry MinimumDelayMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return MinimumDelayMasked@; } } public ConfigEntry MaximumDelayMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return MaximumDelayMasked@; } } public ConfigEntry MinimumDelayNonMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return MinimumDelayNonMasked@; } } public ConfigEntry MaximumDelayNonMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return MaximumDelayNonMasked@; } } public ConfigEntry EnableMimicVoiceWhileAlive { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableMimicVoiceWhileAlive@; } } public ConfigEntry EnableRecordVoiceWhileDead { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableRecordVoiceWhileDead@; } } public ConfigEntry EnableArmsOut { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableArmsOut@; } } public ConfigEntry EnableMaskTexture { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableMaskTexture@; } } public ConfigEntry EnableRadarSpin { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableRadarSpin@; } } public ConfigEntry MimicVoiceWhileHiding { [CompilerGenerated] [DebuggerNonUserCode] get { return MimicVoiceWhileHiding@; } } public ConfigEntry CopyMaskedVisuals { [CompilerGenerated] [DebuggerNonUserCode] get { return CopyMaskedVisuals@; } } public ConfigEntry EnablePlayerNames { [CompilerGenerated] [DebuggerNonUserCode] get { return EnablePlayerNames@; } } public ConfigEntry EnableSpawnControl { [CompilerGenerated] [DebuggerNonUserCode] get { return EnableSpawnControl@; } } public ConfigEntry MaskedSpawnChance { [CompilerGenerated] [DebuggerNonUserCode] get { return MaskedSpawnChance@; } } public ConfigEntry MaxMaskedSpawns { [CompilerGenerated] [DebuggerNonUserCode] get { return MaxMaskedSpawns@; } } public ConfigEntry MaskedItemSpawnChance { [CompilerGenerated] [DebuggerNonUserCode] get { return MaskedItemSpawnChance@; } } public ConfigEntry StoreItemRollChance { [CompilerGenerated] [DebuggerNonUserCode] get { return StoreItemRollChance@; } } public ConfigEntry MaskedDropStoreItemOnDeath { [CompilerGenerated] [DebuggerNonUserCode] get { return MaskedDropStoreItemOnDeath@; } } public ConfigEntry MaskedDropScrapItemOnDeath { [CompilerGenerated] [DebuggerNonUserCode] get { return MaskedDropScrapItemOnDeath@; } } public ConfigEntry EmitFlashlightChance { [CompilerGenerated] [DebuggerNonUserCode] get { return EmitFlashlightChance@; } } public ConfigEntry ScrapValueMultiplier { [CompilerGenerated] [DebuggerNonUserCode] get { return ScrapValueMultiplier@; } } public LocalConfig(ConfigFile general, ConfigFile enemies, ConfigFile items) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Expected O, but got Unknown //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Expected O, but got Unknown //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Expected O, but got Unknown //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Expected O, but got Unknown //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Expected O, but got Unknown //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Expected O, but got Unknown //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Expected O, but got Unknown //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Expected O, but got Unknown //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Expected O, but got Unknown //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Expected O, but got Unknown //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Expected O, but got Unknown //IL_036c: Unknown result type (might be due to invalid IL or missing references) //IL_0376: Expected O, but got Unknown //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Expected O, but got Unknown //IL_03c1: Unknown result type (might be due to invalid IL or missing references) //IL_03cb: Expected O, but got Unknown //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Expected O, but got Unknown //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_0421: Expected O, but got Unknown this.general = general; this.enemies = enemies; this.items = items; General@ = this.general; Enemies@ = this.enemies; Items@ = this.items; MaskedMimicChance@ = this.bindImitateVoice("Mimic chance (masked enemies)", 100, new ConfigDescription("Chance for masked enemy to start mimicking a player's suit, cosmetics, and voice.", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); NonMaskedMimicChance@ = this.bindImitateVoice("Mimic chance (non-masked enemies)", 100, new ConfigDescription("Chance for non-masked enemies to start mimicking a player's voice.", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); MinimumDelayMasked@ = this.bindImitateVoice("Minimum delay (masked enemy)", 7000, new ConfigDescription("The minimum amount of time in between voice playbacks for masked enemies (in milliseconds).", (AcceptableValueBase)(object)new AcceptableValueRange(1, 600000), Array.Empty())); MaximumDelayMasked@ = this.bindImitateVoice("Maximum delay (masked enemy)", 12000, new ConfigDescription("The maximum amount of time in between voice playbacks for masked enemies (in milliseconds).", (AcceptableValueBase)(object)new AcceptableValueRange(1, 600000), Array.Empty())); MinimumDelayNonMasked@ = this.bindImitateVoice("Minimum delay (non-masked enemies)", 7000, new ConfigDescription("The minimum amount of time in between voice playbacks for non-masked enemies (in milliseconds).", (AcceptableValueBase)(object)new AcceptableValueRange(1, 600000), Array.Empty())); MaximumDelayNonMasked@ = this.bindImitateVoice("Maximum delay (non-masked enemies)", 12000, new ConfigDescription("The maximum amount of time in between voice playbacks for non-masked enemies (in milliseconds).", (AcceptableValueBase)(object)new AcceptableValueRange(1, 600000), Array.Empty())); string text = "If true, players will always be able to hear monsters mimicking their voice.\n" + "If false, players will only be able to hear monsters mimicking their voice while the player is dead."; EnableMimicVoiceWhileAlive@ = this.bindImitateVoice("Enable the ability for players to hear enemies mimicking their voice while the player is alive.", value: true, new ConfigDescription(text, (AcceptableValueBase)null, Array.Empty())); text = "If true, the microphone will always be recording during the round (after the lever is pulled).\n" + "If false, the microphone will only record while the player is alive (after the lever is pulled)."; EnableRecordVoiceWhileDead@ = this.bindImitateVoice("Enable recording player voices while the player is dead.", value: false, new ConfigDescription(text, (AcceptableValueBase)null, Array.Empty())); EnableArmsOut@ = this.bindMaskedEnemy("Enable arms-out animation", value: false, new ConfigDescription("Whether the zombie arms animation should be used.", (AcceptableValueBase)null, Array.Empty())); EnableMaskTexture@ = this.bindMaskedEnemy("Enable mask texture", value: false, new ConfigDescription("Whether the masked enemy's mask texture should be shown.", (AcceptableValueBase)null, Array.Empty())); EnableRadarSpin@ = this.bindMaskedEnemy("Enable radar spin", value: false, new ConfigDescription("Whether masked enemies should spin on the radar.", (AcceptableValueBase)null, Array.Empty())); MimicVoiceWhileHiding@ = this.bindMaskedEnemy("Mimic voice while hiding", value: false, new ConfigDescription("Whether or not masked enemies should mimic voices while hiding on the ship", (AcceptableValueBase)null, Array.Empty())); CopyMaskedVisuals@ = this.bindMaskedEnemy("Copy masked visuals", value: true, new ConfigDescription("Whether or not masked enemies should copy the player's visuals of who it's mimicking", (AcceptableValueBase)null, Array.Empty())); EnablePlayerNames@ = bind("Player", "Enable player name tags", value: true, new ConfigDescription("Whether or not name tags above a player should show. Useful for making it harder to distinguish masked enemies from players.", (AcceptableValueBase)null, Array.Empty())); text = "If set to false, masked enemy spawns are untouched and are left at the vanilla spawn rates.\n" + "If set to true, masked enemy spawns will use the configured spawn chance."; EnableSpawnControl@ = this.bindSpawnControl("Enable spawn control (masked enemies)", value: true, new ConfigDescription(text, (AcceptableValueBase)null, Array.Empty())); text = "The percentage chance a masked enemy should naturally spawn. Spawn weights are internally calculated and modified to fit this percentage based on the moon.\n" + "Note: The spawn chance is based on each attempt the game tries to spawn an enemy. If you want a basically guaranteed spawn each round, set this to 25"; MaskedSpawnChance@ = this.bindSpawnControl("Masked enemy spawn chance", 0.5f, new ConfigDescription(text, (AcceptableValueBase)(object)new AcceptableValueRange(0.1f, 50f), Array.Empty())); text = "The maximum number of masked enemies that can be naturally spawned within the same round.\n" + "Note: If this config option isn't working, it's often due to other mods overwriting the max spawns after Mirage sets it."; MaxMaskedSpawns@ = this.bindSpawnControl("Max spawned masked enemies", 2, new ConfigDescription(text, (AcceptableValueBase)null, Array.Empty())); MaskedItemSpawnChance@ = this.bindConfigureItem("Chance to spawn with item", 80, new ConfigDescription("Percent chance for a masked enemy to spawn with an item. This is automatically disabled when LethalIntelligence is installed to allow it to control held items instead.", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); StoreItemRollChance@ = this.bindConfigureItem("Chance to roll as store item", 50, new ConfigDescription("When a masked enemy spawns with an item, this config is the percent chance for the item to be a store item. When it fails the roll, it becomes a scrap item instead (using the current round's scrap weights).", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); MaskedDropStoreItemOnDeath@ = this.bindConfigureItem("Chance to drop held store item on death", 0, new ConfigDescription("Percent chance for a masked enemy to drop its held item on death (if it's a store item).", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); MaskedDropScrapItemOnDeath@ = this.bindConfigureItem("Chance to drop held scrap item on death", 100, new ConfigDescription("Percent chance for a masked enemy to drop its held item on death (if it's a scrap item).", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); EmitFlashlightChance@ = this.bindConfigureItem("Chance for flashlights to emit light", 50, new ConfigDescription("Percent chance for flashlights to emit light while being held by a masked enemy.", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); ScrapValueMultiplier@ = this.bindConfigureItem("Scrap value multiplier", 1.0, new ConfigDescription("Value multiplier to use on scrap items that drop from masked enemies.", (AcceptableValueBase)null, Array.Empty())); } public void RegisterEnemy(EnemyAI enemyAI) { try { ConfigEntry val = enemies.Bind("Enemies", stripConfigKey.Invoke(enemyAI.enemyType.enemyName), enemyAI is MaskedPlayerEnemy, (ConfigDescription)null); } catch (object obj) { Exception ex = (Exception)obj; Logger.logWarning.Invoke("Failed to register an enemy to the config: " + ((object)enemyAI).GetType().Name); } } public void RegisterStoreItem(Item item) { try { ConfigEntry val = items.Bind("2. Store Item Weights", stripConfigKey.Invoke(item.itemName), defaultStoreItemWeight(item.itemName), (ConfigDescription)null); } catch (object obj) { Exception ex = (Exception)obj; Logger.logWarning.Invoke("Failed to register a store item to the config: " + item.itemName); } } public void RegisterScrapItem(Item item) { try { ConfigEntry val = items.Bind("3. Scrap Item Blacklist (Enable to prevent masked from holding these items)", stripConfigKey.Invoke(item.itemName), SetModule.Contains(item.itemName, defaultDisabledScrapItems), (ConfigDescription)null); } catch (object obj) { Exception ex = (Exception)obj; Logger.logWarning.Invoke("Failed to register a scrap item to the config: " + item.itemName); } } [CompilationArgumentCounts(new int[] { 1, 1, 1, 1 })] [CompilerGenerated] internal ConfigEntry bind(string section, string key, a value, ConfigDescription description) { return general.Bind(section, key, value, description); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] [CompilerGenerated] internal ConfigEntry bindImitateVoice(string key, A value, B description) where B : ConfigDescription { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown return bind("Imitate voice", key, value, (ConfigDescription)(object)description); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] [CompilerGenerated] internal ConfigEntry bindMaskedEnemy(string key, A value, B description) where B : ConfigDescription { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown return bind("Masked enemy", key, value, (ConfigDescription)(object)description); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] [CompilerGenerated] internal ConfigEntry bindSpawnControl(string key, A value, B description) where B : ConfigDescription { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown return bind("Spawn control", key, value, (ConfigDescription)(object)description); } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] [CompilerGenerated] internal ConfigEntry bindConfigureItem(string key, A value, B description) where B : ConfigDescription { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown return items.Bind("1. Masked held item configuration", key, value, (ConfigDescription)(object)description); } } [Serializable] [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class SyncedConfig : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpSet enemies@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int totalItemWeights@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpMap storeItemWeights@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal FSharpSet disabledScrapItems@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maskedMimicChance@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int nonMaskedMimicChance@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int minimumDelayMasked@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maximumDelayMasked@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int minimumDelayNonMasked@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maximumDelayNonMasked@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maskedItemSpawnChance@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int storeItemRollChance@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maskedDropStoreItemOnDeath@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int maskedDropScrapItemOnDeath@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal int emitFlashlightChance@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal double scrapValueMultiplier@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enableMimicVoiceWhileAlive@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enableRecordVoiceWhileDead@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enableArmsOut@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enableMaskTexture@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enableRadarSpin@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool mimicVoiceWhileHiding@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool copyMaskedVisuals@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool enablePlayerNames@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public FSharpSet enemies { [CompilerGenerated] [DebuggerNonUserCode] get { return enemies@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int totalItemWeights { [CompilerGenerated] [DebuggerNonUserCode] get { return totalItemWeights@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public FSharpMap storeItemWeights { [CompilerGenerated] [DebuggerNonUserCode] get { return storeItemWeights@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public FSharpSet disabledScrapItems { [CompilerGenerated] [DebuggerNonUserCode] get { return disabledScrapItems@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maskedMimicChance { [CompilerGenerated] [DebuggerNonUserCode] get { return maskedMimicChance@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int nonMaskedMimicChance { [CompilerGenerated] [DebuggerNonUserCode] get { return nonMaskedMimicChance@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int minimumDelayMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return minimumDelayMasked@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maximumDelayMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return maximumDelayMasked@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int minimumDelayNonMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return minimumDelayNonMasked@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maximumDelayNonMasked { [CompilerGenerated] [DebuggerNonUserCode] get { return maximumDelayNonMasked@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maskedItemSpawnChance { [CompilerGenerated] [DebuggerNonUserCode] get { return maskedItemSpawnChance@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int storeItemRollChance { [CompilerGenerated] [DebuggerNonUserCode] get { return storeItemRollChance@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maskedDropStoreItemOnDeath { [CompilerGenerated] [DebuggerNonUserCode] get { return maskedDropStoreItemOnDeath@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int maskedDropScrapItemOnDeath { [CompilerGenerated] [DebuggerNonUserCode] get { return maskedDropScrapItemOnDeath@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public int emitFlashlightChance { [CompilerGenerated] [DebuggerNonUserCode] get { return emitFlashlightChance@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public double scrapValueMultiplier { [CompilerGenerated] [DebuggerNonUserCode] get { return scrapValueMultiplier@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enableMimicVoiceWhileAlive { [CompilerGenerated] [DebuggerNonUserCode] get { return enableMimicVoiceWhileAlive@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enableRecordVoiceWhileDead { [CompilerGenerated] [DebuggerNonUserCode] get { return enableRecordVoiceWhileDead@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enableArmsOut { [CompilerGenerated] [DebuggerNonUserCode] get { return enableArmsOut@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enableMaskTexture { [CompilerGenerated] [DebuggerNonUserCode] get { return enableMaskTexture@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enableRadarSpin { [CompilerGenerated] [DebuggerNonUserCode] get { return enableRadarSpin@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool mimicVoiceWhileHiding { [CompilerGenerated] [DebuggerNonUserCode] get { return mimicVoiceWhileHiding@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool copyMaskedVisuals { [CompilerGenerated] [DebuggerNonUserCode] get { return copyMaskedVisuals@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool enablePlayerNames { [CompilerGenerated] [DebuggerNonUserCode] get { return enablePlayerNames@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(SyncedConfig))] public SyncedConfig(FSharpSet enemies, int totalItemWeights, FSharpMap storeItemWeights, FSharpSet disabledScrapItems, int maskedMimicChance, int nonMaskedMimicChance, int minimumDelayMasked, int maximumDelayMasked, int minimumDelayNonMasked, int maximumDelayNonMasked, int maskedItemSpawnChance, int storeItemRollChance, int maskedDropStoreItemOnDeath, int maskedDropScrapItemOnDeath, int emitFlashlightChance, double scrapValueMultiplier, bool enableMimicVoiceWhileAlive, bool enableRecordVoiceWhileDead, bool enableArmsOut, bool enableMaskTexture, bool enableRadarSpin, bool mimicVoiceWhileHiding, bool copyMaskedVisuals, bool enablePlayerNames) { enemies@ = enemies; totalItemWeights@ = totalItemWeights; storeItemWeights@ = storeItemWeights; disabledScrapItems@ = disabledScrapItems; maskedMimicChance@ = maskedMimicChance; nonMaskedMimicChance@ = nonMaskedMimicChance; minimumDelayMasked@ = minimumDelayMasked; maximumDelayMasked@ = maximumDelayMasked; minimumDelayNonMasked@ = minimumDelayNonMasked; maximumDelayNonMasked@ = maximumDelayNonMasked; maskedItemSpawnChance@ = maskedItemSpawnChance; storeItemRollChance@ = storeItemRollChance; maskedDropStoreItemOnDeath@ = maskedDropStoreItemOnDeath; maskedDropScrapItemOnDeath@ = maskedDropScrapItemOnDeath; emitFlashlightChance@ = emitFlashlightChance; scrapValueMultiplier@ = scrapValueMultiplier; enableMimicVoiceWhileAlive@ = enableMimicVoiceWhileAlive; enableRecordVoiceWhileDead@ = enableRecordVoiceWhileDead; enableArmsOut@ = enableArmsOut; enableMaskTexture@ = enableMaskTexture; enableRadarSpin@ = enableRadarSpin; mimicVoiceWhileHiding@ = mimicVoiceWhileHiding; copyMaskedVisuals@ = copyMaskedVisuals; enablePlayerNames@ = enablePlayerNames; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, SyncedConfig>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(SyncedConfig obj) { if (this != null) { if (obj != null) { int num = HashCompare.GenericComparisonWithComparerIntrinsic>(LanguagePrimitives.GenericComparer, enemies@, obj.enemies@); if (num < 0) { return num; } if (num > 0) { return num; } IComparer genericComparer = LanguagePrimitives.GenericComparer; int num2 = totalItemWeights@; int num3 = obj.totalItemWeights@; int num4 = ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } num2 = HashCompare.GenericComparisonWithComparerIntrinsic>(LanguagePrimitives.GenericComparer, storeItemWeights@, obj.storeItemWeights@); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } num3 = HashCompare.GenericComparisonWithComparerIntrinsic>(LanguagePrimitives.GenericComparer, disabledScrapItems@, obj.disabledScrapItems@); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } genericComparer = LanguagePrimitives.GenericComparer; int num5 = maskedMimicChance@; int num6 = obj.maskedMimicChance@; int num7 = ((num5 > num6) ? 1 : 0) - ((num5 < num6) ? 1 : 0); if (num7 < 0) { return num7; } if (num7 > 0) { return num7; } genericComparer = LanguagePrimitives.GenericComparer; num6 = nonMaskedMimicChance@; int num8 = obj.nonMaskedMimicChance@; num5 = ((num6 > num8) ? 1 : 0) - ((num6 < num8) ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } genericComparer = LanguagePrimitives.GenericComparer; num8 = minimumDelayMasked@; int num9 = obj.minimumDelayMasked@; num6 = ((num8 > num9) ? 1 : 0) - ((num8 < num9) ? 1 : 0); if (num6 < 0) { return num6; } if (num6 > 0) { return num6; } genericComparer = LanguagePrimitives.GenericComparer; num9 = maximumDelayMasked@; int num10 = obj.maximumDelayMasked@; num8 = ((num9 > num10) ? 1 : 0) - ((num9 < num10) ? 1 : 0); if (num8 < 0) { return num8; } if (num8 > 0) { return num8; } genericComparer = LanguagePrimitives.GenericComparer; num10 = minimumDelayNonMasked@; int num11 = obj.minimumDelayNonMasked@; num9 = ((num10 > num11) ? 1 : 0) - ((num10 < num11) ? 1 : 0); if (num9 < 0) { return num9; } if (num9 > 0) { return num9; } genericComparer = LanguagePrimitives.GenericComparer; num11 = maximumDelayNonMasked@; int num12 = obj.maximumDelayNonMasked@; num10 = ((num11 > num12) ? 1 : 0) - ((num11 < num12) ? 1 : 0); if (num10 < 0) { return num10; } if (num10 > 0) { return num10; } genericComparer = LanguagePrimitives.GenericComparer; num12 = maskedItemSpawnChance@; int num13 = obj.maskedItemSpawnChance@; num11 = ((num12 > num13) ? 1 : 0) - ((num12 < num13) ? 1 : 0); if (num11 < 0) { return num11; } if (num11 > 0) { return num11; } genericComparer = LanguagePrimitives.GenericComparer; num13 = storeItemRollChance@; int num14 = obj.storeItemRollChance@; num12 = ((num13 > num14) ? 1 : 0) - ((num13 < num14) ? 1 : 0); if (num12 < 0) { return num12; } if (num12 > 0) { return num12; } genericComparer = LanguagePrimitives.GenericComparer; num14 = maskedDropStoreItemOnDeath@; int num15 = obj.maskedDropStoreItemOnDeath@; num13 = ((num14 > num15) ? 1 : 0) - ((num14 < num15) ? 1 : 0); if (num13 < 0) { return num13; } if (num13 > 0) { return num13; } genericComparer = LanguagePrimitives.GenericComparer; num15 = maskedDropScrapItemOnDeath@; int num16 = obj.maskedDropScrapItemOnDeath@; num14 = ((num15 > num16) ? 1 : 0) - ((num15 < num16) ? 1 : 0); if (num14 < 0) { return num14; } if (num14 > 0) { return num14; } genericComparer = LanguagePrimitives.GenericComparer; num16 = emitFlashlightChance@; int num17 = obj.emitFlashlightChance@; num15 = ((num16 > num17) ? 1 : 0) - ((num16 < num17) ? 1 : 0); if (num15 < 0) { return num15; } if (num15 > 0) { return num15; } genericComparer = LanguagePrimitives.GenericComparer; double num18 = scrapValueMultiplier@; double num19 = obj.scrapValueMultiplier@; num16 = ((num18 < num19) ? (-1) : ((num18 > num19) ? 1 : ((num18 != num19) ? HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, num18, num19) : 0))); if (num16 < 0) { return num16; } if (num16 > 0) { return num16; } genericComparer = LanguagePrimitives.GenericComparer; bool flag = enableMimicVoiceWhileAlive@; bool flag2 = obj.enableMimicVoiceWhileAlive@; num17 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num17 < 0) { return num17; } if (num17 > 0) { return num17; } genericComparer = LanguagePrimitives.GenericComparer; flag = enableRecordVoiceWhileDead@; flag2 = obj.enableRecordVoiceWhileDead@; int num20 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num20 < 0) { return num20; } if (num20 > 0) { return num20; } genericComparer = LanguagePrimitives.GenericComparer; flag = enableArmsOut@; flag2 = obj.enableArmsOut@; int num21 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num21 < 0) { return num21; } if (num21 > 0) { return num21; } genericComparer = LanguagePrimitives.GenericComparer; flag = enableMaskTexture@; flag2 = obj.enableMaskTexture@; int num22 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num22 < 0) { return num22; } if (num22 > 0) { return num22; } genericComparer = LanguagePrimitives.GenericComparer; flag = enableRadarSpin@; flag2 = obj.enableRadarSpin@; int num23 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num23 < 0) { return num23; } if (num23 > 0) { return num23; } genericComparer = LanguagePrimitives.GenericComparer; flag = mimicVoiceWhileHiding@; flag2 = obj.mimicVoiceWhileHiding@; int num24 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num24 < 0) { return num24; } if (num24 > 0) { return num24; } genericComparer = LanguagePrimitives.GenericComparer; flag = copyMaskedVisuals@; flag2 = obj.copyMaskedVisuals@; int num25 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num25 < 0) { return num25; } if (num25 > 0) { return num25; } genericComparer = LanguagePrimitives.GenericComparer; flag = enablePlayerNames@; flag2 = obj.enablePlayerNames@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((SyncedConfig)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { SyncedConfig syncedConfig = (SyncedConfig)obj; if (this != null) { if ((SyncedConfig)obj != null) { int num = HashCompare.GenericComparisonWithComparerIntrinsic>(comp, enemies@, syncedConfig.enemies@); if (num < 0) { return num; } if (num > 0) { return num; } int num2 = totalItemWeights@; int num3 = syncedConfig.totalItemWeights@; int num4 = ((num2 > num3) ? 1 : 0) - ((num2 < num3) ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } num2 = HashCompare.GenericComparisonWithComparerIntrinsic>(comp, storeItemWeights@, syncedConfig.storeItemWeights@); if (num2 < 0) { return num2; } if (num2 > 0) { return num2; } num3 = HashCompare.GenericComparisonWithComparerIntrinsic>(comp, disabledScrapItems@, syncedConfig.disabledScrapItems@); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } int num5 = maskedMimicChance@; int num6 = syncedConfig.maskedMimicChance@; int num7 = ((num5 > num6) ? 1 : 0) - ((num5 < num6) ? 1 : 0); if (num7 < 0) { return num7; } if (num7 > 0) { return num7; } num6 = nonMaskedMimicChance@; int num8 = syncedConfig.nonMaskedMimicChance@; num5 = ((num6 > num8) ? 1 : 0) - ((num6 < num8) ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } num8 = minimumDelayMasked@; int num9 = syncedConfig.minimumDelayMasked@; num6 = ((num8 > num9) ? 1 : 0) - ((num8 < num9) ? 1 : 0); if (num6 < 0) { return num6; } if (num6 > 0) { return num6; } num9 = maximumDelayMasked@; int num10 = syncedConfig.maximumDelayMasked@; num8 = ((num9 > num10) ? 1 : 0) - ((num9 < num10) ? 1 : 0); if (num8 < 0) { return num8; } if (num8 > 0) { return num8; } num10 = minimumDelayNonMasked@; int num11 = syncedConfig.minimumDelayNonMasked@; num9 = ((num10 > num11) ? 1 : 0) - ((num10 < num11) ? 1 : 0); if (num9 < 0) { return num9; } if (num9 > 0) { return num9; } num11 = maximumDelayNonMasked@; int num12 = syncedConfig.maximumDelayNonMasked@; num10 = ((num11 > num12) ? 1 : 0) - ((num11 < num12) ? 1 : 0); if (num10 < 0) { return num10; } if (num10 > 0) { return num10; } num12 = maskedItemSpawnChance@; int num13 = syncedConfig.maskedItemSpawnChance@; num11 = ((num12 > num13) ? 1 : 0) - ((num12 < num13) ? 1 : 0); if (num11 < 0) { return num11; } if (num11 > 0) { return num11; } num13 = storeItemRollChance@; int num14 = syncedConfig.storeItemRollChance@; num12 = ((num13 > num14) ? 1 : 0) - ((num13 < num14) ? 1 : 0); if (num12 < 0) { return num12; } if (num12 > 0) { return num12; } num14 = maskedDropStoreItemOnDeath@; int num15 = syncedConfig.maskedDropStoreItemOnDeath@; num13 = ((num14 > num15) ? 1 : 0) - ((num14 < num15) ? 1 : 0); if (num13 < 0) { return num13; } if (num13 > 0) { return num13; } num15 = maskedDropScrapItemOnDeath@; int num16 = syncedConfig.maskedDropScrapItemOnDeath@; num14 = ((num15 > num16) ? 1 : 0) - ((num15 < num16) ? 1 : 0); if (num14 < 0) { return num14; } if (num14 > 0) { return num14; } num16 = emitFlashlightChance@; int num17 = syncedConfig.emitFlashlightChance@; num15 = ((num16 > num17) ? 1 : 0) - ((num16 < num17) ? 1 : 0); if (num15 < 0) { return num15; } if (num15 > 0) { return num15; } double num18 = scrapValueMultiplier@; double num19 = syncedConfig.scrapValueMultiplier@; num16 = ((num18 < num19) ? (-1) : ((num18 > num19) ? 1 : ((num18 != num19) ? HashCompare.GenericComparisonWithComparerIntrinsic(comp, num18, num19) : 0))); if (num16 < 0) { return num16; } if (num16 > 0) { return num16; } bool flag = enableMimicVoiceWhileAlive@; bool flag2 = syncedConfig.enableMimicVoiceWhileAlive@; num17 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num17 < 0) { return num17; } if (num17 > 0) { return num17; } flag = enableRecordVoiceWhileDead@; flag2 = syncedConfig.enableRecordVoiceWhileDead@; int num20 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num20 < 0) { return num20; } if (num20 > 0) { return num20; } flag = enableArmsOut@; flag2 = syncedConfig.enableArmsOut@; int num21 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num21 < 0) { return num21; } if (num21 > 0) { return num21; } flag = enableMaskTexture@; flag2 = syncedConfig.enableMaskTexture@; int num22 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num22 < 0) { return num22; } if (num22 > 0) { return num22; } flag = enableRadarSpin@; flag2 = syncedConfig.enableRadarSpin@; int num23 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num23 < 0) { return num23; } if (num23 > 0) { return num23; } flag = mimicVoiceWhileHiding@; flag2 = syncedConfig.mimicVoiceWhileHiding@; int num24 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num24 < 0) { return num24; } if (num24 > 0) { return num24; } flag = copyMaskedVisuals@; flag2 = syncedConfig.copyMaskedVisuals@; int num25 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num25 < 0) { return num25; } if (num25 > 0) { return num25; } flag = enablePlayerNames@; flag2 = syncedConfig.enablePlayerNames@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } return 1; } if ((SyncedConfig)obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; num = -1640531527 + ((enablePlayerNames@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((copyMaskedVisuals@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((mimicVoiceWhileHiding@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((enableRadarSpin@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((enableMaskTexture@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((enableArmsOut@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((enableRecordVoiceWhileDead@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((enableMimicVoiceWhileAlive@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, scrapValueMultiplier@) + ((num << 6) + (num >> 2))); num = -1640531527 + (emitFlashlightChance@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maskedDropScrapItemOnDeath@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maskedDropStoreItemOnDeath@ + ((num << 6) + (num >> 2))); num = -1640531527 + (storeItemRollChance@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maskedItemSpawnChance@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maximumDelayNonMasked@ + ((num << 6) + (num >> 2))); num = -1640531527 + (minimumDelayNonMasked@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maximumDelayMasked@ + ((num << 6) + (num >> 2))); num = -1640531527 + (minimumDelayMasked@ + ((num << 6) + (num >> 2))); num = -1640531527 + (nonMaskedMimicChance@ + ((num << 6) + (num >> 2))); num = -1640531527 + (maskedMimicChance@ + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic>(comp, disabledScrapItems@) + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic>(comp, storeItemWeights@) + ((num << 6) + (num >> 2))); num = -1640531527 + (totalItemWeights@ + ((num << 6) + (num >> 2))); return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic>(comp, enemies@) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(SyncedConfig obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityWithComparerIntrinsic>(comp, enemies@, obj.enemies@)) { if (totalItemWeights@ == obj.totalItemWeights@) { if (HashCompare.GenericEqualityWithComparerIntrinsic>(comp, storeItemWeights@, obj.storeItemWeights@)) { if (HashCompare.GenericEqualityWithComparerIntrinsic>(comp, disabledScrapItems@, obj.disabledScrapItems@)) { if (maskedMimicChance@ == obj.maskedMimicChance@) { if (nonMaskedMimicChance@ == obj.nonMaskedMimicChance@) { if (minimumDelayMasked@ == obj.minimumDelayMasked@) { if (maximumDelayMasked@ == obj.maximumDelayMasked@) { if (minimumDelayNonMasked@ == obj.minimumDelayNonMasked@) { if (maximumDelayNonMasked@ == obj.maximumDelayNonMasked@) { if (maskedItemSpawnChance@ == obj.maskedItemSpawnChance@) { if (storeItemRollChance@ == obj.storeItemRollChance@) { if (maskedDropStoreItemOnDeath@ == obj.maskedDropStoreItemOnDeath@) { if (maskedDropScrapItemOnDeath@ == obj.maskedDropScrapItemOnDeath@) { if (emitFlashlightChance@ == obj.emitFlashlightChance@) { if (scrapValueMultiplier@ == obj.scrapValueMultiplier@) { if (enableMimicVoiceWhileAlive@ == obj.enableMimicVoiceWhileAlive@) { if (enableRecordVoiceWhileDead@ == obj.enableRecordVoiceWhileDead@) { if (enableArmsOut@ == obj.enableArmsOut@) { if (enableMaskTexture@ == obj.enableMaskTexture@) { if (enableRadarSpin@ == obj.enableRadarSpin@) { if (mimicVoiceWhileHiding@ == obj.mimicVoiceWhileHiding@) { if (copyMaskedVisuals@ == obj.copyMaskedVisuals@) { return enablePlayerNames@ == obj.enablePlayerNames@; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is SyncedConfig obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(SyncedConfig obj) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityERIntrinsic>(enemies@, obj.enemies@)) { if (totalItemWeights@ == obj.totalItemWeights@) { if (HashCompare.GenericEqualityERIntrinsic>(storeItemWeights@, obj.storeItemWeights@)) { if (HashCompare.GenericEqualityERIntrinsic>(disabledScrapItems@, obj.disabledScrapItems@)) { if (maskedMimicChance@ == obj.maskedMimicChance@) { if (nonMaskedMimicChance@ == obj.nonMaskedMimicChance@) { if (minimumDelayMasked@ == obj.minimumDelayMasked@) { if (maximumDelayMasked@ == obj.maximumDelayMasked@) { if (minimumDelayNonMasked@ == obj.minimumDelayNonMasked@) { if (maximumDelayNonMasked@ == obj.maximumDelayNonMasked@) { if (maskedItemSpawnChance@ == obj.maskedItemSpawnChance@) { if (storeItemRollChance@ == obj.storeItemRollChance@) { if (maskedDropStoreItemOnDeath@ == obj.maskedDropStoreItemOnDeath@) { if (maskedDropScrapItemOnDeath@ == obj.maskedDropScrapItemOnDeath@) { if (emitFlashlightChance@ == obj.emitFlashlightChance@) { double num = scrapValueMultiplier@; double num2 = obj.scrapValueMultiplier@; if (num == num2 || (num != num && num2 != num2)) { if (enableMimicVoiceWhileAlive@ == obj.enableMimicVoiceWhileAlive@) { if (enableRecordVoiceWhileDead@ == obj.enableRecordVoiceWhileDead@) { if (enableArmsOut@ == obj.enableArmsOut@) { if (enableMaskTexture@ == obj.enableMaskTexture@) { if (enableRadarSpin@ == obj.enableRadarSpin@) { if (mimicVoiceWhileHiding@ == obj.mimicVoiceWhileHiding@) { if (copyMaskedVisuals@ == obj.copyMaskedVisuals@) { return enablePlayerNames@ == obj.enablePlayerNames@; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is SyncedConfig obj2) { return Equals(obj2); } return false; } } [Serializable] internal sealed class toSyncedConfig@328 : FSharpFunc, FSharpSet> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string value; [CompilerGenerated] [DebuggerNonUserCode] internal toSyncedConfig@328(string value) { this.value = value; } public override FSharpSet Invoke(FSharpSet set) { return set.Add(value); } } [Serializable] internal sealed class toSyncedConfig@338-1 : FSharpFunc, FSharpMap> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string key; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public int value; [CompilerGenerated] [DebuggerNonUserCode] internal toSyncedConfig@338-1(string key, int value) { this.key = key; this.value = value; } public override FSharpMap Invoke(FSharpMap table) { return table.Add(key, value); } } [Serializable] internal sealed class toSyncedConfig@342-2 : FSharpFunc, FSharpSet> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public string value; [CompilerGenerated] [DebuggerNonUserCode] internal toSyncedConfig@342-2(string value) { this.value = value; } public override FSharpSet Invoke(FSharpSet set) { return set.Add(value); } } [Serializable] internal sealed class toSyncedConfig@346-3 : FSharpFunc { internal static readonly toSyncedConfig@346-3 @_instance = new toSyncedConfig@346-3(); [CompilerGenerated] [DebuggerNonUserCode] internal toSyncedConfig@346-3() { } public override int Invoke(int x, int y) { Default1 val = null; return x + y; } } [Serializable] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [DebuggerDisplay("{__DebugDisplay(),nq}")] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class SyncAction : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { internal static class Tags { public const int RequestSync = 0; public const int ReceiveSync = 1; public const int FinishSync = 2; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] internal int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] internal static SyncAction RequestSync { [CompilationMapping(/*Could not decode attribute arguments.*/)] [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsRequestSync { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] internal static SyncAction ReceiveSync { [CompilationMapping(/*Could not decode attribute arguments.*/)] [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsReceiveSync { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] internal static SyncAction FinishSync { [CompilationMapping(/*Could not decode attribute arguments.*/)] [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsFinishSync { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 2; } } static SyncAction() { _unique_RequestSync = new SyncAction(0); _unique_ReceiveSync = new SyncAction(1); _unique_FinishSync = new SyncAction(2); } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicNestedTypes | DynamicallyAccessedMemberTypes.NonPublicNestedTypes | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(SyncAction))] [CompilerGenerated] [DebuggerNonUserCode] internal SyncAction(int _tag) { this._tag = _tag; } [SpecialName] [CompilerGenerated] [DebuggerNonUserCode] internal object __DebugDisplay() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, string>("%+0.8A")).Invoke(this); } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, SyncAction>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(SyncAction obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { return 0; } return tag - tag2; } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((SyncAction)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { SyncAction syncAction = (SyncAction)obj; if (this != null) { if ((SyncAction)obj != null) { int tag = _tag; int tag2 = syncAction._tag; if (tag == tag2) { return 0; } return tag - tag2; } return 1; } if ((SyncAction)obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { return this?._tag ?? 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] internal bool Equals(SyncAction obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; return tag == tag2; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is SyncAction obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(SyncAction obj) { if (this != null) { if (obj != null) { int tag = _tag; int tag2 = obj._tag; return tag == tag2; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is SyncAction obj2) { return Equals(obj2); } return false; } } [Serializable] internal sealed class onReceiveSync@460 : FSharpFunc>, FSharpFunc>> { internal static readonly onReceiveSync@460 @_instance = new onReceiveSync@460(); [CompilerGenerated] [DebuggerNonUserCode] internal onReceiveSync@460() { } public override FSharpFunc> Invoke(Tuple> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class onReceiveSync@464-1 : FSharpFunc>, FSharpFunc>> { internal static readonly onReceiveSync@464-1 @_instance = new onReceiveSync@464-1(); [CompilerGenerated] [DebuggerNonUserCode] internal onReceiveSync@464-1() { } public override FSharpFunc> Invoke(Tuple> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class onReceiveSync@468-2 : FSharpFunc>, FSharpFunc>> { internal static readonly onReceiveSync@468-2 @_instance = new onReceiveSync@468-2(); [CompilerGenerated] [DebuggerNonUserCode] internal onReceiveSync@468-2() { } public override FSharpFunc> Invoke(Tuple> tupledArg) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Return.Return(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class callback@486 : FSharpFunc { internal static readonly callback@486 @_instance = new callback@486(); [CompilerGenerated] [DebuggerNonUserCode] internal callback@486() { } public override Unit Invoke(ulong clientId, FastBufferReader arg10@) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) onRequestSync(clientId, arg10@); return null; } } [Serializable] internal sealed class callback@487-1 : FSharpFunc { internal static readonly callback@487-1 @_instance = new callback@487-1(); [CompilerGenerated] [DebuggerNonUserCode] internal callback@487-1() { } public override Unit Invoke(ulong arg00@, FastBufferReader reader) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) onReceiveSync(arg00@, reader); return null; } } [Serializable] internal sealed class callback@488-2 : FSharpFunc { internal static readonly callback@488-2 @_instance = new callback@488-2(); [CompilerGenerated] [DebuggerNonUserCode] internal callback@488-2() { } public override Unit Invoke(ulong arg00@, FastBufferReader arg10@) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) onFinishSync(arg00@, arg10@); return null; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class registerHandler@489 { public FSharpFunc> callback; public registerHandler@489(FSharpFunc> callback) { this.callback = callback; base..ctor(); } internal void Invoke(ulong delegateArg0, FastBufferReader delegateArg1) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) FSharpFunc.InvokeFast(callback, delegateArg0, delegateArg1); } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] public const int MaxPacket = 1024; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal const string StoreItemSection = "2. Store Item Weights"; [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal const string ScrapItemSection = "3. Scrap Item Blacklist (Enable to prevent masked from holding these items)"; [CompilationMapping(/*Could not decode attribute arguments.*/)] public static FSharpSet defaultDisabledScrapItems => .$Mirage.Domain.Config.defaultDisabledScrapItems@27; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpList elements@1 => .$Mirage.Domain.Config.elements@1; [CompilationMapping(/*Could not decode attribute arguments.*/)] public static FSharpFunc stripConfigKey => .$Mirage.Domain.Config.stripConfigKey@33; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static List receivedPackets { get { return .$Mirage.Domain.Config.receivedPackets@40; } set { .$Mirage.Domain.Config.receivedPackets@40 = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static LocalConfig localConfig => .$Mirage.Domain.Config.localConfig@265; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpOption syncedConfig { get { return .$Mirage.Domain.Config.syncedConfig@320; } set { .$Mirage.Domain.Config.syncedConfig@320 = value; } } public static string messageId { [CompilerGenerated] [DebuggerNonUserCode] get { return "a5fb3c29-349d-4a27-a553-02ec39d58374"; } } public static int defaultStoreItemWeight(string _arg1) { if (!string.Equals(_arg1, "Walkie-talkie")) { if (!string.Equals(_arg1, "Shovel")) { if (!string.Equals(_arg1, "Pro-flashlight")) { if (!string.Equals(_arg1, "Stun grenade")) { if (!string.Equals(_arg1, "Extension ladder")) { if (string.Equals(_arg1, "Spray paint")) { return 1; } return 0; } return 1; } return 1; } return 10; } return 15; } return 3; } internal static ConfigFile loadConfig(a configName) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown return new ConfigFile(Path.Combine(Paths.ConfigPath, PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Mirage.%P().cfg", new object[1] { configName }, (Type[])null))), true); } internal static FSharpList> getEnemyConfigEntries() { Zero val = null; FSharpList> val2 = null; FSharpList> val3 = FSharpList>.Empty; ICollection keys = localConfig.Enemies@.Keys; foreach (ConfigDefinition item in keys) { try { ConfigEntry val4 = (ConfigEntry)(object)localConfig.Enemies@[item]; val3 = FSharpList>.Cons(val4, val3); } catch (object obj) { Exception ex = (Exception)obj; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Failed to read entry from Mirage.Enemies.cfg:\n%P()", new object[1] { ex }, (Type[])null))); } } return val3; } internal static SyncedConfig toSyncedConfig() { Zero val = null; FSharpSet val2 = null; FSharpSet val3 = SetModule.Empty(); ICollection keys = localConfig.Enemies@.Keys; foreach (ConfigDefinition item in keys) { ConfigEntry val4 = null; if (localConfig.Enemies@.TryGetEntry(item, ref val4) && val4.Value) { ref FSharpSet reference = ref val3; string key = item.Key; FSharpFunc, FSharpSet> val5 = new toSyncedConfig@328(key); reference = val5.Invoke(reference); } } val = null; FSharpMap val6 = null; FSharpMap val7 = MapModule.Empty(); val = null; FSharpSet val8 = null; val2 = SetModule.Empty(); keys = localConfig.Items@.Keys; int value; foreach (ConfigDefinition item2 in keys) { string key = item2.Section; if (!string.Equals(key, "2. Store Item Weights")) { if (string.Equals(key, "3. Scrap Item Blacklist (Enable to prevent masked from holding these items)")) { ConfigEntry val4 = null; if (localConfig.Items@.TryGetEntry(item2, ref val4) && val4.Value) { ref FSharpSet reference = ref val2; string key2 = item2.Key; FSharpFunc, FSharpSet> val5 = new toSyncedConfig@342-2(key2); reference = val5.Invoke(reference); } } } else { ConfigEntry val9 = null; if (localConfig.Items@.TryGetEntry(item2, ref val9) && val9.Value > 0) { string key2 = item2.Key; value = val9.Value; FSharpFunc, FSharpMap> val10 = new toSyncedConfig@338-1(key2, value); val7 = val10.Invoke(val7); } } } FSharpSet enemies = val3; IEnumerable enumerable = Map.values(val7); FSharpFunc> @_instance; @_instance = (FSharpFunc>)(object)toSyncedConfig@346-3.@_instance; val = null; int num = 0; Default1 val11 = (Default1)(object)val; value = 0; Fold val12 = null; return new SyncedConfig(enemies, SeqModule.Fold(@_instance, value, enumerable), val7, val2, localConfig.MaskedMimicChance@.Value, localConfig.NonMaskedMimicChance@.Value, localConfig.MinimumDelayMasked@.Value, localConfig.MaximumDelayMasked@.Value, localConfig.MinimumDelayNonMasked@.Value, localConfig.MaximumDelayNonMasked@.Value, localConfig.MaskedItemSpawnChance@.Value, localConfig.StoreItemRollChance@.Value, localConfig.MaskedDropStoreItemOnDeath@.Value, localConfig.MaskedDropScrapItemOnDeath@.Value, localConfig.EmitFlashlightChance@.Value, localConfig.ScrapValueMultiplier@.Value, localConfig.EnableMimicVoiceWhileAlive@.Value, localConfig.EnableRecordVoiceWhileDead@.Value, localConfig.EnableArmsOut@.Value, localConfig.EnableMaskTexture@.Value, localConfig.EnableRadarSpin@.Value, localConfig.MimicVoiceWhileHiding@.Value, localConfig.CopyMaskedVisuals@.Value, localConfig.EnablePlayerNames@.Value); } public static void initSyncedConfig() { syncedConfig = FSharpOption.Some(toSyncedConfig()); } public static bool isConfigReady() { return syncedConfig != null; } public static SyncedConfig getConfig() { if (!isConfigReady()) { Logger.logWarning.Invoke("syncedConfig has not been initialized yet."); } return syncedConfig.Value; } internal static string toNamedMessage(SyncAction _arg1) { return _arg1.Tag switch { 1 => "a5fb3c29-349d-4a27-a553-02ec39d58374" + "_OnReceiveConfigSync", 2 => "a5fb3c29-349d-4a27-a553-02ec39d58374" + "_OnFinishConfigSync", _ => "a5fb3c29-349d-4a27-a553-02ec39d58374" + "_OnRequestConfigSync", }; } internal static CustomMessagingManager messageManager() { return NetworkManager.Singleton.CustomMessagingManager; } internal static bool isClient() { return NetworkManager.Singleton.IsClient; } internal static bool isHost() { return NetworkManager.Singleton.IsHost; } internal static byte[] serializeToBytes(A value) { DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(A)); using MemoryStream memoryStream = new MemoryStream(); try { dataContractSerializer.WriteObject(memoryStream, value); return memoryStream.ToArray(); } catch (object obj) { Exception ex = (Exception)obj; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Failed to serialize value: %P()", new object[1] { ex }, (Type[])null))); return null; } } internal static A deserializeFromBytes(byte[] data) { DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(A)); using MemoryStream stream = new MemoryStream(data); try { return IntrinsicFunctions.UnboxGeneric(dataContractSerializer.ReadObject(stream)); } catch (object obj) { Exception ex = (Exception)obj; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Failed to deserialize bytes: %P()", new object[1] { ex }, (Type[])null))); A result = default(A); return result; } } [CompilationArgumentCounts(new int[] { 1, 1, 1 })] internal static void sendMessage(SyncAction action, ulong clientId, FastBufferWriter stream) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) NetworkManager.Singleton.CustomMessagingManager.SendNamedMessage(toNamedMessage(action), clientId, stream, (NetworkDelivery)3); } internal static void revertSync() { syncedConfig = null; } internal unsafe static void requestSync() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) if (NetworkManager.Singleton.IsClient) { FastBufferWriter stream = new FastBufferWriter(sizeof(int), (Allocator)2, -1); try { sendMessage(SyncAction.RequestSync, 0uL, stream); } finally { ((IDisposable)(FastBufferWriter)(ref stream)).Dispose(); } } } [CompilationArgumentCounts(new int[] { 1, 1 })] internal unsafe static void onRequestSync(ulong clientId, a _arg1) { //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) if (!NetworkManager.Singleton.IsHost) { return; } byte[] array = serializeToBytes(getConfig()); int num = StartOfRound.Instance.ClientPlayerList[clientId]; Logger.logInfo.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Syncing configuration with Player #%P()", new object[1] { num }, (Type[])null))); FastBufferWriter stream; try { int num2 = 0; int num3 = (array.Length - 1) / 1024; if (num3 >= num2) { do { int num4 = num2 * 1024; int num5 = Math.Min(1024, array.Length - num4); stream = new FastBufferWriter(num5 + sizeof(int), (Allocator)2, -1); try { ((FastBufferWriter)(ref stream)).WriteValueSafe(ref num5, default(ForPrimitives)); ((FastBufferWriter)(ref stream)).WriteBytesSafe(array, num5, num4); sendMessage(SyncAction.ReceiveSync, clientId, stream); } finally { ((IDisposable)(FastBufferWriter)(ref stream)).Dispose(); } num2++; } while (num2 != num3 + 1); } } catch (object obj) { Exception ex = (Exception)obj; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat>("Failed while sending ReceiveSync packet for Player #%P(): %P()", new object[2] { num, ex }, (Type[])null))); } try { stream = new FastBufferWriter(sizeof(int), (Allocator)2, -1); try { sendMessage(SyncAction.FinishSync, clientId, stream); } finally { ((IDisposable)(FastBufferWriter)(ref stream)).Dispose(); } } catch (object obj2) { Exception ex = (Exception)obj2; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat>("Failed while sending FinishSync packet for Player #%P(): %P()", new object[2] { num, ex }, (Type[])null))); } } [CompilerGenerated] internal static FSharpResult f@1-1(FastBufferReader reader, FSharpRef packetLength, Unit unitVar0) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) byte[] array = ArrayModule.ZeroCreate(packetLength.contents); ((FastBufferReader)(ref reader)).ReadBytesSafe(ref new FSharpRef(array).contents@, packetLength.contents, 0); receivedPackets.AddRange(array); FSharpResult item = default(FSharpResult); return FSharpFunc>, Unit>.InvokeFast>((FSharpFunc>, FSharpFunc>>)onReceiveSync@468-2.@_instance, new Tuple>(null, item), (Unit)null); } [CompilerGenerated] internal static FSharpResult f@1(FastBufferReader reader, Unit unitVar0) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) FSharpRef val = new FSharpRef(0); ForPrimitives val2 = default(ForPrimitives); ((FastBufferReader)(ref reader)).ReadValueSafe(ref val.contents@, val2); FSharpResult item = default(FSharpResult); FSharpResult val3 = (((FastBufferReader)(ref reader)).TryBeginRead(val.contents) ? FSharpFunc>, Unit>.InvokeFast>((FSharpFunc>, FSharpFunc>>)onReceiveSync@464-1.@_instance, new Tuple>(null, item), (Unit)null) : FSharpResult.NewError("onReceiveSync failed while reading the packet length.")); Bind val4 = null; FSharpResult val5 = default(FSharpResult); item = val5; if (val3.Tag != 0) { return FSharpResult.NewError(val3.ErrorValue); } return f@1-1(reader, val, val3.ResultValue); } [CompilationArgumentCounts(new int[] { 1, 1 })] internal unsafe static void onReceiveSync(a _arg1, FastBufferReader reader) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) if (!NetworkManager.Singleton.IsHost) { MonadFxStrictBuilder> val = new MonadFxStrictBuilder>(); FSharpResult item = default(FSharpResult); FSharpResult val2 = (((FastBufferReader)(ref reader)).TryBeginRead(sizeof(int)) ? FSharpFunc>, Unit>.InvokeFast>((FSharpFunc>, FSharpFunc>>)onReceiveSync@460.@_instance, new Tuple>(null, item), (Unit)null) : FSharpResult.NewError("onReceiveSync failed while reading beginning of buffer.")); Bind val3 = null; FSharpResult val4 = default(FSharpResult); item = val4; FSharpResult val5 = ((val2.Tag == 0) ? f@1(reader, val2.ResultValue) : FSharpResult.NewError(val2.ErrorValue)); if (val5.Tag == 1) { Logger.logError.Invoke(val5.ErrorValue); } } } [CompilationArgumentCounts(new int[] { 1, 1 })] public static void onFinishSync(a _arg2, b _arg1) { if (!NetworkManager.Singleton.IsHost) { try { byte[] data = receivedPackets.ToArray(); syncedConfig = FSharpOption.Some(deserializeFromBytes(data)); Logger.logInfo.Invoke("Received config from host: " + JsonConvert.SerializeObject((object)syncedConfig.Value, (Formatting)1)); } catch (object obj) { Exception ex = (Exception)obj; Logger.logError.Invoke(PrintfModule.PrintFormatToStringThen((PrintfFormat)(object)new PrintfFormat("Failed onFinishSync due to error: %P()", new object[1] { ex }, (Type[])null))); } receivedPackets.Clear(); } } internal static void registerHandler(SyncAction action) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown string text = toNamedMessage(action); HandleNamedMessageDelegate val = new HandleNamedMessageDelegate(new registerHandler@489((FSharpFunc>)(action.Tag switch { 1 => callback@487-1.@_instance, 2 => callback@488-2.@_instance, _ => callback@486.@_instance, })).Invoke); NetworkManager.Singleton.CustomMessagingManager.RegisterNamedMessageHandler(text, val); } static Config() { .$Mirage.Domain.Config.init@ = 0; _ = .$Mirage.Domain.Config.init@; } } } namespace .$Mirage.Domain { internal static class Config { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpSet defaultDisabledScrapItems@27; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpList elements@1; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc stripConfigKey@33; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static List receivedPackets@40; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Mirage.Domain.Config.LocalConfig localConfig@265; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static FSharpOption syncedConfig@320; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Config() { elements@1 = FSharpList.Cons("Apparatus", FSharpList.Empty); defaultDisabledScrapItems@27 = new FSharpSet((IEnumerable)Mirage.Domain.Config.elements@1); stripConfigKey@33 = Mirage.Domain.Config.stripConfigKey@33.@_instance; receivedPackets@40 = new List(); localConfig@265 = new Mirage.Domain.Config.LocalConfig(Mirage.Domain.Config.loadConfig("General"), Mirage.Domain.Config.loadConfig("Enemies"), Mirage.Domain.Config.loadConfig("Items")); syncedConfig@320 = null; } } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Setting { [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class SavedSettings : IEquatable, IStructuralEquatable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal float? localPlayerVolume@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool? neverDeleteRecordings@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool? allowRecordVoice@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool? muteVoiceMimic@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public float? localPlayerVolume { [CompilerGenerated] [DebuggerNonUserCode] get { return localPlayerVolume@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool? neverDeleteRecordings { [CompilerGenerated] [DebuggerNonUserCode] get { return neverDeleteRecordings@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool? allowRecordVoice { [CompilerGenerated] [DebuggerNonUserCode] get { return allowRecordVoice@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool? muteVoiceMimic { [CompilerGenerated] [DebuggerNonUserCode] get { return muteVoiceMimic@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(SavedSettings))] public SavedSettings(float? localPlayerVolume, bool? neverDeleteRecordings, bool? allowRecordVoice, bool? muteVoiceMimic) { localPlayerVolume@ = localPlayerVolume; neverDeleteRecordings@ = neverDeleteRecordings; allowRecordVoice@ = allowRecordVoice; muteVoiceMimic@ = muteVoiceMimic; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, SavedSettings>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, muteVoiceMimic@) + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, allowRecordVoice@) + ((num << 6) + (num >> 2))); num = -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, neverDeleteRecordings@) + ((num << 6) + (num >> 2))); return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, localPlayerVolume@) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(SavedSettings obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityWithComparerIntrinsic(comp, localPlayerVolume@, obj.localPlayerVolume@)) { if (HashCompare.GenericEqualityWithComparerIntrinsic(comp, neverDeleteRecordings@, obj.neverDeleteRecordings@)) { if (HashCompare.GenericEqualityWithComparerIntrinsic(comp, allowRecordVoice@, obj.allowRecordVoice@)) { return HashCompare.GenericEqualityWithComparerIntrinsic(comp, muteVoiceMimic@, obj.muteVoiceMimic@); } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is SavedSettings obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(SavedSettings obj) { if (this != null) { if (obj != null) { if (HashCompare.GenericEqualityERIntrinsic(localPlayerVolume@, obj.localPlayerVolume@)) { if (HashCompare.GenericEqualityERIntrinsic(neverDeleteRecordings@, obj.neverDeleteRecordings@)) { if (HashCompare.GenericEqualityERIntrinsic(allowRecordVoice@, obj.allowRecordVoice@)) { return HashCompare.GenericEqualityERIntrinsic(muteVoiceMimic@, obj.muteVoiceMimic@); } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is SavedSettings obj2) { return Equals(obj2); } return false; } } [Serializable] [CompilationMapping(/*Could not decode attribute arguments.*/)] public sealed class Settings : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal float localPlayerVolume@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool neverDeleteRecordings@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool allowRecordVoice@; [CompilerGenerated] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool muteVoiceMimic@; [CompilationMapping(/*Could not decode attribute arguments.*/)] public float localPlayerVolume { [CompilerGenerated] [DebuggerNonUserCode] get { return localPlayerVolume@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool neverDeleteRecordings { [CompilerGenerated] [DebuggerNonUserCode] get { return neverDeleteRecordings@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool allowRecordVoice { [CompilerGenerated] [DebuggerNonUserCode] get { return allowRecordVoice@; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] public bool muteVoiceMimic { [CompilerGenerated] [DebuggerNonUserCode] get { return muteVoiceMimic@; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(Settings))] public Settings(float localPlayerVolume, bool neverDeleteRecordings, bool allowRecordVoice, bool muteVoiceMimic) { localPlayerVolume@ = localPlayerVolume; neverDeleteRecordings@ = neverDeleteRecordings; allowRecordVoice@ = allowRecordVoice; muteVoiceMimic@ = muteVoiceMimic; } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, Settings>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(Settings obj) { if (this != null) { if (obj != null) { IComparer genericComparer = LanguagePrimitives.GenericComparer; float num = localPlayerVolume@; float num2 = obj.localPlayerVolume@; int num3 = ((num < num2) ? (-1) : ((num > num2) ? 1 : ((num != num2) ? HashCompare.GenericComparisonWithComparerIntrinsic(genericComparer, num, num2) : 0))); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } genericComparer = LanguagePrimitives.GenericComparer; bool flag = neverDeleteRecordings@; bool flag2 = obj.neverDeleteRecordings@; int num4 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } genericComparer = LanguagePrimitives.GenericComparer; flag = allowRecordVoice@; flag2 = obj.allowRecordVoice@; int num5 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } genericComparer = LanguagePrimitives.GenericComparer; flag = muteVoiceMimic@; flag2 = obj.muteVoiceMimic@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } return 1; } if (obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((Settings)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { Settings settings = (Settings)obj; if (this != null) { if ((Settings)obj != null) { float num = localPlayerVolume@; float num2 = settings.localPlayerVolume@; int num3 = ((num < num2) ? (-1) : ((num > num2) ? 1 : ((num != num2) ? HashCompare.GenericComparisonWithComparerIntrinsic(comp, num, num2) : 0))); if (num3 < 0) { return num3; } if (num3 > 0) { return num3; } bool flag = neverDeleteRecordings@; bool flag2 = settings.neverDeleteRecordings@; int num4 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num4 < 0) { return num4; } if (num4 > 0) { return num4; } flag = allowRecordVoice@; flag2 = settings.allowRecordVoice@; int num5 = (flag ? 1 : 0) - (flag2 ? 1 : 0); if (num5 < 0) { return num5; } if (num5 > 0) { return num5; } flag = muteVoiceMimic@; flag2 = settings.muteVoiceMimic@; return (flag ? 1 : 0) - (flag2 ? 1 : 0); } return 1; } if ((Settings)obj != null) { return -1; } return 0; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { if (this != null) { int num = 0; num = -1640531527 + ((muteVoiceMimic@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((allowRecordVoice@ ? 1 : 0) + ((num << 6) + (num >> 2))); num = -1640531527 + ((neverDeleteRecordings@ ? 1 : 0) + ((num << 6) + (num >> 2))); return -1640531527 + (HashCompare.GenericHashWithComparerIntrinsic(comp, localPlayerVolume@) + ((num << 6) + (num >> 2))); } return 0; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] public bool Equals(Settings obj, IEqualityComparer comp) { if (this != null) { if (obj != null) { if (localPlayerVolume@ == obj.localPlayerVolume@) { if (neverDeleteRecordings@ == obj.neverDeleteRecordings@) { if (allowRecordVoice@ == obj.allowRecordVoice@) { return muteVoiceMimic@ == obj.muteVoiceMimic@; } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is Settings obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(Settings obj) { if (this != null) { if (obj != null) { float num = localPlayerVolume@; float num2 = obj.localPlayerVolume@; if (num == num2 || (num != num && num2 != num2)) { if (neverDeleteRecordings@ == obj.neverDeleteRecordings@) { if (allowRecordVoice@ == obj.allowRecordVoice@) { return muteVoiceMimic@ == obj.muteVoiceMimic@; } return false; } return false; } return false; } return false; } return obj == null; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is Settings obj2) { return Equals(obj2); } return false; } } [Serializable] internal sealed class fromSavedSettings@45 : FSharpFunc { internal static readonly fromSavedSettings@45 @_instance = new fromSavedSettings@45(); [CompilerGenerated] [DebuggerNonUserCode] internal fromSavedSettings@45() { } public override float? Invoke(SavedSettings _arg1) { return _arg1.localPlayerVolume@; } } [Serializable] internal sealed class fromSavedSettings@46-1 : FSharpFunc { internal static readonly fromSavedSettings@46-1 @_instance = new fromSavedSettings@46-1(); [CompilerGenerated] [DebuggerNonUserCode] internal fromSavedSettings@46-1() { } public override bool? Invoke(SavedSettings _arg2) { return _arg2.neverDeleteRecordings@; } } [Serializable] internal sealed class fromSavedSettings@47-2 : FSharpFunc { internal static readonly fromSavedSettings@47-2 @_instance = new fromSavedSettings@47-2(); [CompilerGenerated] [DebuggerNonUserCode] internal fromSavedSettings@47-2() { } public override bool? Invoke(SavedSettings _arg3) { return _arg3.allowRecordVoice@; } } [Serializable] internal sealed class fromSavedSettings@48-3 : FSharpFunc { internal static readonly fromSavedSettings@48-3 @_instance = new fromSavedSettings@48-3(); [CompilerGenerated] [DebuggerNonUserCode] internal fromSavedSettings@48-3() { } public override bool? Invoke(SavedSettings _arg4) { return _arg4.muteVoiceMimic@; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@58-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string filePath; public Channel channel; public ValueTaskAwaiter awaiter; public TaskAwaiter awaiter0; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; int num4; int num2; int num3; bool flag2; ICriticalNotifyCompletion criticalNotifyCompletion; bool flag3; switch (resumptionPoint) { default: awaiter = channel.reader.ReadAsync(channel.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { goto IL_0091; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0087; case 1: num = 1; goto IL_0087; case 2: { num4 = 1; goto IL_00fd; } IL_0107: if (flag2) { awaiter0.GetResult(); _ = null; num2 = 1; } else { criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter0; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { TaskAwaiter taskAwaiter = default(TaskAwaiter); awaiter0 = taskAwaiter; num3 = 1; break; } goto end_IL_0020; IL_0087: flag2 = (byte)num != 0; flag = flag2; goto IL_0091; IL_0091: if (flag) { Settings result = awaiter.GetResult(); Settings settings = result; string contents = JsonConvert.SerializeObject((object)settings); CancellationToken cancellationToken = default(CancellationToken); FSharpAsync val = FSharpAsync.AwaitTask(File.WriteAllTextAsync(filePath, contents, cancellationToken)); awaiter0 = FSharpAsync.StartImmediateAsTask(val, (FSharpOption)null).GetAwaiter(); flag2 = true; if (awaiter0.IsCompleted) { goto IL_0107; } if (false) { goto case 2; } ResumptionPoint = 2; num4 = 0; goto IL_00fd; } criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num3 = 0; break; IL_00fd: flag3 = (byte)num4 != 0; flag2 = flag3; goto IL_0107; } if (num3 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } end_IL_0020:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct consumer@58-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string filePath; public Channel channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00db; case 1: { num = 1; goto IL_0075; } IL_00db: if (flag) { awaiter = program@1-1(filePath, channel, null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_007f; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0075; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_0075: flag3 = (byte)num != 0; flag2 = flag3; goto IL_007f; IL_007f: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00db; } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class consumer@58 : FSharpFunc> { public string filePath; public Channel channel; [CompilerGenerated] [DebuggerNonUserCode] internal consumer@58(string filePath, Channel channel) { this.filePath = filePath; this.channel = channel; } public override ValueTask Invoke(Unit unitVar0) { consumer@58-2 stateMachine = default(consumer@58-2); stateMachine.filePath = filePath; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initSettings@63-2 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class initSettings@63-3 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public initSettings@63-3(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1-1(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initSettings@63-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new initSettings@63-3(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class initSettings@63-4 : FSharpFunc>, Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public CancellationToken cancellationToken; [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@63-4(CancellationToken cancellationToken) { this.cancellationToken = cancellationToken; } public override Unit Invoke(FSharpFunc> x) { ValueTask valueTask = func1@1-1(cancellationToken, x); return null; } } [Serializable] internal sealed class initSettings@63 : FSharpFunc>, Unit>> { internal static readonly initSettings@63 @_instance = new initSettings@63(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@63() { } public override FSharpFunc>, Unit> Invoke(CancellationToken cancellationToken) { return new initSettings@63-4(cancellationToken); } } [Serializable] internal sealed class initSettings@77-6 : FSharpFunc { internal static readonly initSettings@77-6 @_instance = new initSettings@77-6(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@77-6() { } public override SavedSettings Invoke(string value) { return JsonConvert.DeserializeObject(value); } } [Serializable] internal sealed class initSettings@79-7 : FSharpFunc>, FSharpFunc>> { internal static readonly initSettings@79-7 @_instance = new initSettings@79-7(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@79-7() { } public override FSharpFunc> Invoke(Tuple> tupledArg) { return Return.Return(tupledArg.Item2, tupledArg.Item1); } } [Serializable] internal sealed class initSettings@89-8 : FSharpFunc { internal static readonly initSettings@89-8 @_instance = new initSettings@89-8(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@89-8() { } public override float Invoke(Unit unitVar0) { return settings.localPlayerVolume@ * 100f; } } [Serializable] internal sealed class initSettings@90-9 : FSharpFunc { public Channel channel; [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@90-9(Channel channel) { this.channel = channel; } public override Unit Invoke(float value) { Channel obj = channel; Settings settings = Setting.settings; saveSettings@65(obj, new Settings(value / 100f, settings.neverDeleteRecordings@, settings.allowRecordVoice@, settings.muteVoiceMimic@)); return null; } } [Serializable] internal sealed class initSettings@91-10 : FSharpFunc { internal static readonly initSettings@91-10 @_instance = new initSettings@91-10(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@91-10() { } public override bool Invoke(Unit unitVar0) { return settings.neverDeleteRecordings@; } } [Serializable] internal sealed class initSettings@92-11 : FSharpFunc { public Channel channel; [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@92-11(Channel channel) { this.channel = channel; } public override Unit Invoke(bool value) { Channel obj = channel; Settings settings = Setting.settings; saveSettings@65(obj, new Settings(settings.localPlayerVolume@, value, settings.allowRecordVoice@, settings.muteVoiceMimic@)); return null; } } [Serializable] internal sealed class initSettings@93-12 : FSharpFunc { internal static readonly initSettings@93-12 @_instance = new initSettings@93-12(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@93-12() { } public override bool Invoke(Unit unitVar0) { return settings.allowRecordVoice@; } } [Serializable] internal sealed class initSettings@94-13 : FSharpFunc { public Channel channel; [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@94-13(Channel channel) { this.channel = channel; } public override Unit Invoke(bool value) { Channel obj = channel; Settings settings = Setting.settings; saveSettings@65(obj, new Settings(settings.localPlayerVolume@, settings.neverDeleteRecordings@, value, settings.muteVoiceMimic@)); return null; } } [Serializable] internal sealed class initSettings@95-14 : FSharpFunc { internal static readonly initSettings@95-14 @_instance = new initSettings@95-14(); [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@95-14() { } public override bool Invoke(Unit unitVar0) { return settings.muteVoiceMimic@; } } [Serializable] internal sealed class initSettings@96-15 : FSharpFunc { public Channel channel; [CompilerGenerated] [DebuggerNonUserCode] internal initSettings@96-15(Channel channel) { this.channel = channel; } public override Unit Invoke(bool value) { Channel obj = channel; Settings settings = Setting.settings; saveSettings@65(obj, new Settings(settings.localPlayerVolume@, settings.neverDeleteRecordings@, settings.allowRecordVoice@, value)); return null; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initSettings@69-5 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public string filePath; public string pluginId; public string pluginName; public string pluginVersion; public Channel channel; public EventWaitHandle resource; public EventWaitHandle handle; public bool fileExists; public TaskAwaiter awaiter; public unsafe override void MoveNext() { //IL_02bd: Expected O, but got Ref //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Expected O, but got Unknown //IL_02f4: Expected O, but got Ref int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; switch (resumptionPoint) { default: resource = new EventWaitHandle(initialState: true, EventResetMode.AutoReset, pluginId); flag = false; flag = flag || flag; break; case 1: break; } try { bool flag2; switch (resumptionPoint) { default: handle = resource; flag2 = false; flag2 = flag2 || flag2; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: { flag3 = handle.WaitOne(); fileExists = File.Exists(filePath); Task task2; if (fileExists) { FSharpFunc @_instance; @_instance = initSettings@77-6.@_instance; CancellationToken cancellationToken = default(CancellationToken); Task item = File.ReadAllTextAsync(filePath, cancellationToken); Map val = null; Task task = null; task2 = Map.Map(new Tuple, FSharpFunc>(item, @_instance), val); } else { task2 = FSharpFunc>, SavedSettings>.InvokeFast>((FSharpFunc>, FSharpFunc>>)initSettings@79-7.@_instance, new Tuple>(null, null), defaultSettings); } awaiter = task2.GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_0128; } case 1: { num = 1; goto IL_0128; } IL_0128: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { SavedSettings result = awaiter.GetResult(); SavedSettings savedSettings = result; Setting.settings = fromSavedSettings(savedSettings); if (fileExists) { goto IL_01a0; } saveSettings@65(channel, Setting.settings); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { goto IL_01a0; } goto IL_01bb; IL_01bd: int num3; bool flag5 = (byte)num3 != 0; flag2 = flag5; goto end_IL_0078; IL_01bb: num3 = 0; goto IL_01bd; IL_01a0: TaskAwaiter taskAwaiter = default(TaskAwaiter); awaiter = taskAwaiter; if (1 == 0) { goto IL_01bb; } fileExists = false; num3 = 1; goto IL_01bd; end_IL_0078:; } catch (object obj) { ex = (Exception)obj; bool flag3 = handle.Set(); bool flag5 = true; throw; } if (flag2) { bool flag3 = handle.Set(); bool flag5 = true; } int num4; if (flag2) { Main.initLethalSettings(new LethalSettingsArgs(pluginName, pluginId, pluginVersion, (FSharpFunc)initSettings@89-8.@_instance, (FSharpFunc)new initSettings@90-9(channel), (FSharpFunc)initSettings@91-10.@_instance, (FSharpFunc)new initSettings@92-11(channel), (FSharpFunc)initSettings@93-12.@_instance, (FSharpFunc)new initSettings@94-13(channel), (FSharpFunc)initSettings@95-14.@_instance, (FSharpFunc)new initSettings@96-15(channel))); Settings settings = Setting.settings; Data.Result = settings; if (true) { handle = null; num4 = 1; goto IL_028d; } } num4 = 0; goto IL_028d; IL_028d: bool flag6 = (byte)num4 != 0; flag = flag6; } catch (object obj2) { ex = (Exception)obj2; if (resource != null) { EventWaitHandle eventWaitHandle = resource; ((IDisposable)(EventWaitHandle)(&eventWaitHandle)).Dispose(); } bool flag6 = true; throw; } if (flag) { if (resource != null) { EventWaitHandle eventWaitHandle2 = resource; ((IDisposable)(EventWaitHandle)(&eventWaitHandle2)).Dispose(); } bool flag6 = true; } if (flag) { resource = null; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj3) { ex = (Exception)obj3; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static SavedSettings defaultSettings => .$Mirage.Domain.Setting.defaultSettings@24; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static Settings settings { get { return .$Mirage.Domain.Setting.settings@51; } set { .$Mirage.Domain.Setting.settings@51 = value; } } internal static A getValue@43(SavedSettings savedSettings, FSharpFunc getField) where A : struct { A value = getField.Invoke(defaultSettings).Value; A? val = getField.Invoke(savedSettings); return ((!val.HasValue) ? null : FSharpOption.Some(val.GetValueOrDefault()))?.Value ?? value; } internal static Settings fromSavedSettings(SavedSettings savedSettings) { return new Settings(getValue@43(savedSettings, fromSavedSettings@45.@_instance), getValue@43(savedSettings, fromSavedSettings@46-1.@_instance), getValue@43(savedSettings, fromSavedSettings@47-2.@_instance), getValue@43(savedSettings, fromSavedSettings@48-3.@_instance)); } public static Settings getSettings() { return settings; } [CompilerGenerated] internal static ValueTask program@1-1(string filePath, Channel channel, Unit unitVar0) { consumer@58-1 stateMachine = default(consumer@58-1); stateMachine.filePath = filePath; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask thread@1-1(FSharpFunc> program, Channel> channel, Unit unitVar0) { initSettings@63-2 stateMachine = default(initSettings@63-2); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1-1(CancellationToken cancellationToken, FSharpFunc> program) { initSettings@63-1 stateMachine = default(initSettings@63-1); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } internal static void saveSettings@65(Channel channel, Settings updatedSettings) { settings = updatedSettings; ValueTask valueTask = channel.writer.WriteAsync(updatedSettings, channel.cancellationToken); } [CompilationArgumentCounts(new int[] { 1, 1, 1, 1 })] internal static ValueTask initSettings(string filePath, string pluginId, string pluginName, string pluginVersion) { Channel channel = Channel.Channel(CancellationToken.None); FSharpFunc> val = new consumer@58(filePath, channel); FSharpFunc>>.InvokeFast((FSharpFunc>, Unit>>)initSettings@63.@_instance, CancellationToken.None, val); initSettings@69-5 stateMachine = default(initSettings@69-5); stateMachine.filePath = filePath; stateMachine.pluginId = pluginId; stateMachine.pluginName = pluginName; stateMachine.pluginVersion = pluginVersion; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } } namespace .$Mirage.Domain { internal static class Setting { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly Mirage.Domain.Setting.SavedSettings defaultSettings@24; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static Mirage.Domain.Setting.Settings settings@51; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Setting() { defaultSettings@24 = new Mirage.Domain.Setting.SavedSettings(0.5f, false, true, false); settings@51 = Mirage.Domain.Setting.fromSavedSettings(Mirage.Domain.Setting.defaultSettings); } } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Directory { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static string baseDirectory => .$Mirage.Domain.Directory.baseDirectory@6; [CompilationMapping(/*Could not decode attribute arguments.*/)] public static string mirageDirectory => .$Mirage.Domain.Directory.mirageDirectory@7; [CompilationMapping(/*Could not decode attribute arguments.*/)] public static string recordingDirectory => .$Mirage.Domain.Directory.recordingDirectory@8; } } namespace .$Mirage.Domain { internal static class Directory { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly string baseDirectory@6; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly string mirageDirectory@7; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly string recordingDirectory@8; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Directory() { baseDirectory@6 = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); mirageDirectory@7 = Path.Join((ReadOnlySpan)Mirage.Domain.Directory.baseDirectory, (ReadOnlySpan)"Mirage"); recordingDirectory@8 = Path.Join((ReadOnlySpan)Mirage.Domain.Directory.mirageDirectory, (ReadOnlySpan)"Recording"); } } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Logger { [Serializable] [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto, Size = 1)] [Struct] [DebuggerDisplay("{__DebugDisplay(),nq}")] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct LogType : IEquatable, IStructuralEquatable, IComparable, IComparable, IStructuralComparable { internal static class Tags { public const int LogInfo = 0; public const int LogDebug = 1; public const int LogWarning = 2; public const int LogError = 3; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] [field: DebuggerNonUserCode] internal int Tag { [DebuggerNonUserCode] get; } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static LogType LogInfo { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] get { return new LogType(0); } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsLogInfo { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 0; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static LogType LogDebug { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] get { return new LogType(1); } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsLogDebug { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 1; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static LogType LogWarning { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] get { return new LogType(2); } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsLogWarning { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 2; } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static LogType LogError { [CompilationMapping(/*Could not decode attribute arguments.*/)] [CompilerGenerated] [DebuggerNonUserCode] get { return new LogType(3); } } [CompilerGenerated] [DebuggerNonUserCode] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal bool IsLogError { [CompilerGenerated] [DebuggerNonUserCode] get { return Tag == 3; } } [DynamicDependency(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.NonPublicFields | DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties, typeof(LogType))] [CompilerGenerated] [DebuggerNonUserCode] internal LogType(int _tag) { this._tag = _tag; } [SpecialName] [CompilerGenerated] [DebuggerNonUserCode] internal object __DebugDisplay() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, string>("%+0.8A")).Invoke(this); } [CompilerGenerated] public override string ToString() { return ExtraTopLevelOperators.PrintFormatToString>((PrintfFormat, Unit, string, string>)(object)new PrintfFormat, Unit, string, string, LogType>("%+A")).Invoke(this); } [CompilerGenerated] public sealed int CompareTo(LogType obj) { int tag = _tag; int tag2 = obj._tag; if (tag == tag2) { return 0; } return tag - tag2; } [CompilerGenerated] public sealed int CompareTo(object obj) { return CompareTo((LogType)obj); } [CompilerGenerated] public sealed int CompareTo(object obj, IComparer comp) { LogType logType = (LogType)obj; int tag = _tag; int tag2 = logType._tag; if (tag == tag2) { return 0; } return tag - tag2; } [CompilerGenerated] public sealed int GetHashCode(IEqualityComparer comp) { return _tag; } [CompilerGenerated] public sealed override int GetHashCode() { return GetHashCode(LanguagePrimitives.GenericEqualityComparer); } [CompilerGenerated] internal bool Equals(LogType obj, IEqualityComparer comp) { int tag = _tag; int tag2 = obj._tag; return tag == tag2; } [CompilerGenerated] public sealed bool Equals(object obj, IEqualityComparer comp) { if (obj is LogType obj2) { return Equals(obj2, comp); } return false; } [CompilerGenerated] public sealed bool Equals(LogType obj) { int tag = _tag; int tag2 = obj._tag; return tag == tag2; } [CompilerGenerated] public sealed override bool Equals(object obj) { if (obj is LogType) { return Equals((LogType)obj); } return false; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initLogger@17-1 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public FSharpFunc> program; public Channel> channel; public ValueTaskAwaiter awaiter; public override void MoveNext() { //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex3 = default(Exception); Exception ex = default(Exception); try { bool flag2 = default(bool); bool flag = default(bool); switch (resumptionPoint) { default: flag = false; flag2 = false; ex = null; flag = flag || flag; break; case 1: break; } try { bool flag3; int num; bool flag4; switch (resumptionPoint) { default: awaiter = program.Invoke((Unit)null).GetAwaiter(); flag3 = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_008c; case 1: { num = 1; goto IL_008c; } IL_008c: flag4 = (byte)num != 0; flag3 = flag4; break; } int num2; if (flag3) { awaiter.GetResult(); _ = null; FSharpResult item = FSharpResult.NewOk((Unit)null); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } int num3; if (num2 != 0) { ValueTaskAwaiter valueTaskAwaiter = default(ValueTaskAwaiter); awaiter = valueTaskAwaiter; num3 = 1; } else { num3 = 0; } bool flag5 = (byte)num3 != 0; flag = flag5; } catch (object obj) { Exception ex2 = (Exception)obj; flag2 = true; ex = ex2; } int num4; if (flag2) { Exception ex2 = ex; FSharpResult item = FSharpResult.NewError(ex2); ValueTask valueTask = channel.writer.WriteAsync(item, channel.cancellationToken); num4 = 1; } else { num4 = (flag ? 1 : 0); } if (num4 != 0) { Data.MethodBuilder.SetResult(Data.Result); } } catch (object obj2) { ex = (Exception)obj2; ex3 = ex; } ex = ex3; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal sealed class initLogger@17-2 { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public FSharpFunc> program; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel> channel; public initLogger@17-2(FSharpFunc> program, Channel> channel) { this.program = program; this.channel = channel; base..ctor(); } internal ValueTask Invoke() { return thread@1(program, channel, null); } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initLogger@17 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public CancellationToken cancellationToken; public FSharpFunc> program; public ValueTaskAwaiter> awaiter; public override void MoveNext() { //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel> val = Channel.Channel>(cancellationToken); Task> task = Task.Run((Func>)new initLogger@17-2(program, val).Invoke, cancellationToken); awaiter = val.reader.ReadAsync(val.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_009d; } case 1: { num = 1; goto IL_009d; } IL_009d: flag2 = (byte)num != 0; flag = flag2; break; } int num2; if (flag) { FSharpResult result = awaiter.GetResult(); FSharpResult val2 = result; if (val2.Tag != 0) { throw val2.ErrorValue; } _ = val2.ResultValue; Data.Result = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { ValueTaskAwaiter> valueTaskAwaiter = default(ValueTaskAwaiter>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initLogger@19-4 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public ManualLogSource logger; public ValueTaskAwaiter<(LogType, string)> awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; switch (resumptionPoint) { default: { Channel<(LogType, string)> value = channel.Value; awaiter = value.reader.ReadAsync(value.cancellationToken).GetAwaiter(); flag = true; if (awaiter.IsCompleted) { break; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_007a; } case 1: { num = 1; goto IL_007a; } IL_007a: flag2 = (byte)num != 0; flag = flag2; break; } if (flag) { (LogType, string) result = awaiter.GetResult(); (LogType, string) tuple = result; string item = tuple.Item2; var (logType, _) = tuple; switch (logType.Tag) { default: { string text = item; logger.LogInfo((object)text); break; } case 1: { string text = item; logger.LogDebug((object)text); break; } case 2: { string text = item; logger.LogWarning((object)text); break; } case 3: { string text = item; logger.LogError((object)text); break; } } goto IL_0147; } ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); if (false) { goto IL_0147; } goto end_IL_0019; IL_0147: ValueTaskAwaiter<(LogType, string)> valueTaskAwaiter = default(ValueTaskAwaiter<(LogType, string)>); awaiter = valueTaskAwaiter; if (true) { Data.MethodBuilder.SetResult(Data.Result); } end_IL_0019:; } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [SpecialName] [StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)] [CompilerGenerated] [CompilationMapping(/*Could not decode attribute arguments.*/)] internal struct initLogger@19-5 : IAsyncStateMachine, IResumableStateMachine>> { public TaskBaseStateMachineData> Data; public int ResumptionPoint; public ManualLogSource logger; public ValueTaskAwaiter awaiter; public override void MoveNext() { int resumptionPoint = ResumptionPoint; switch (resumptionPoint) { } Exception ex2 = default(Exception); Exception ex; try { bool flag; int num; bool flag2; bool flag3; int num2; int num3; bool flag4; switch (resumptionPoint) { default: flag = true; goto IL_00d5; case 1: { num = 1; goto IL_006f; } IL_00d5: if (flag) { awaiter = program@1(logger, null).GetAwaiter(); flag2 = true; if (awaiter.IsCompleted) { goto IL_0079; } if (false) { goto case 1; } ResumptionPoint = 1; num = 0; goto IL_006f; } if (flag) { Data.MethodBuilder.SetResult(Data.Result); } break; IL_006f: flag3 = (byte)num != 0; flag2 = flag3; goto IL_0079; IL_0079: if (flag2) { awaiter.GetResult(); _ = null; num2 = 1; } else { ICriticalNotifyCompletion criticalNotifyCompletion = (ICriticalNotifyCompletion)(object)awaiter; Data.MethodBuilder.AwaitUnsafeOnCompleted(ref criticalNotifyCompletion, ref this); num2 = 0; } if (num2 != 0) { awaiter = default(ValueTaskAwaiter); num3 = 1; } else { num3 = 0; } flag4 = (byte)num3 != 0; flag = flag4; resumptionPoint = 0; goto IL_00d5; } } catch (object obj) { ex = (Exception)obj; ex2 = ex; } ex = ex2; if (ex != null) { Data.MethodBuilder.SetException(ex); } } void IAsyncStateMachine.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext this.MoveNext(); } public override void SetStateMachine(IAsyncStateMachine state) { Data.MethodBuilder.SetStateMachine(state); } void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine state) { //ILSpy generated this explicit interface implementation from .override directive in SetStateMachine this.SetStateMachine(state); } public override int get_ResumptionPoint() { return ResumptionPoint; } public override TaskBaseStateMachineData> get_Data() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) return Data; } public override void set_Data(TaskBaseStateMachineData> value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) Data = value; } } [Serializable] internal sealed class initLogger@17-3 : FSharpFunc> { public string pluginId; [CompilerGenerated] [DebuggerNonUserCode] internal initLogger@17-3(string pluginId) { this.pluginId = pluginId; } public override ValueTask Invoke(Unit unitVar0) { ManualLogSource logger = Logger.CreateLogSource(pluginId); initLogger@19-5 stateMachine = default(initLogger@19-5); stateMachine.logger = logger; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } } [Serializable] internal sealed class logMessage@31 : FSharpFunc<(LogType, string), Unit> { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public Channel<(LogType, string)> channel; [CompilerGenerated] [DebuggerNonUserCode] internal logMessage@31(Channel<(LogType, string)> channel) { this.channel = channel; } public override Unit Invoke((LogType, string) element) { ValueTask valueTask = channel.writer.WriteAsync(element, channel.cancellationToken); return null; } } [Serializable] internal sealed class logInfo@33 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public LogType logType; [CompilerGenerated] [DebuggerNonUserCode] internal logInfo@33(LogType logType) { this.logType = logType; } public override Unit Invoke(string message) { logMessage(logType, message); return null; } } [Serializable] internal sealed class logDebug@34 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public LogType logType; [CompilerGenerated] [DebuggerNonUserCode] internal logDebug@34(LogType logType) { this.logType = logType; } public override Unit Invoke(string message) { logMessage(logType, message); return null; } } [Serializable] internal sealed class logWarning@35 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public LogType logType; [CompilerGenerated] [DebuggerNonUserCode] internal logWarning@35(LogType logType) { this.logType = logType; } public override Unit Invoke(string message) { logMessage(logType, message); return null; } } [Serializable] internal sealed class logError@36 : FSharpFunc { [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] public LogType logType; [CompilerGenerated] [DebuggerNonUserCode] internal logError@36(LogType logType) { this.logType = logType; } public override Unit Invoke(string message) { logMessage(logType, message); return null; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpOption> channel { get { return .$Mirage.Domain.Logger.channel@13; } set { .$Mirage.Domain.Logger.channel@13 = value; } } [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpFunc logInfo => .$Mirage.Domain.Logger.logInfo@33; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpFunc logDebug => .$Mirage.Domain.Logger.logDebug@34; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpFunc logWarning => .$Mirage.Domain.Logger.logWarning@35; [CompilationMapping(/*Could not decode attribute arguments.*/)] internal static FSharpFunc logError => .$Mirage.Domain.Logger.logError@36; [CompilerGenerated] internal static ValueTask thread@1(FSharpFunc> program, Channel> channel, Unit unitVar0) { initLogger@17-1 stateMachine = default(initLogger@17-1); stateMachine.program = program; stateMachine.channel = channel; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask func1@1(CancellationToken cancellationToken, FSharpFunc> program) { initLogger@17 stateMachine = default(initLogger@17); stateMachine.cancellationToken = cancellationToken; stateMachine.program = program; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } [CompilerGenerated] internal static ValueTask program@1(ManualLogSource logger, Unit unitVar0) { initLogger@19-4 stateMachine = default(initLogger@19-4); stateMachine.logger = logger; stateMachine.Data.MethodBuilder = AsyncValueTaskMethodBuilder.Create(); stateMachine.Data.MethodBuilder.Start(ref stateMachine); return stateMachine.Data.MethodBuilder.Task; } public static void initLogger(string pluginId) { channel = FSharpOption>.Some(Channel.Channel<(LogType, string)>(CancellationToken.None)); CancellationToken none = CancellationToken.None; FSharpFunc> program = new initLogger@17-3(pluginId); ValueTask valueTask = func1@1(none, program); } [CompilationArgumentCounts(new int[] { 1, 1 })] internal static void logMessage(LogType logType, string message) { Channel<(LogType, string)> value = channel.Value; FSharpFunc<(LogType, string), Unit> val = new logMessage@31(value); (LogType, string) tuple = (logType, message); val.Invoke(tuple); } } } namespace .$Mirage.Domain { internal static class Logger { [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static FSharpOption> channel@13; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc logInfo@33; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc logDebug@34; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc logWarning@35; [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal static readonly FSharpFunc logError@36; [DebuggerBrowsable(DebuggerBrowsableState.Never)] [CompilerGenerated] [DebuggerNonUserCode] internal static int init@; static Logger() { channel@13 = null; Mirage.Domain.Logger.LogType logInfo = Mirage.Domain.Logger.LogType.LogInfo; logInfo@33 = new Mirage.Domain.Logger.logInfo@33(logInfo); logInfo = Mirage.Domain.Logger.LogType.LogDebug; logDebug@34 = new Mirage.Domain.Logger.logDebug@34(logInfo); logInfo = Mirage.Domain.Logger.LogType.LogWarning; logWarning@35 = new Mirage.Domain.Logger.logWarning@35(logInfo); logInfo = Mirage.Domain.Logger.LogType.LogError; logError@36 = new Mirage.Domain.Logger.logError@36(logInfo); } } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Netcode { [Serializable] internal sealed class initNetcodePatcher@43 : FSharpFunc { internal static readonly initNetcodePatcher@43 @_instance = new initNetcodePatcher@43(); [CompilerGenerated] [DebuggerNonUserCode] internal initNetcodePatcher@43() { } public override MethodInfo[] Invoke(Type _arg1) { return _arg1.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); } } [Serializable] internal sealed class initNetcodePatcher@44-1 : FSharpFunc { internal static readonly initNetcodePatcher@44-1 @_instance = new initNetcodePatcher@44-1(); [CompilerGenerated] [DebuggerNonUserCode] internal initNetcodePatcher@44-1() { } public override Unit Invoke(MethodInfo method) { invokeMethod(method); return null; } } [Literal] [DebuggerBrowsable(DebuggerBrowsableState.Never)] internal const BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic; internal static void invokeMethod(MethodInfo method) { object[] customAttributes = method.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length > 0) { object obj = method.Invoke(null, null); } } public static void initNetcodePatcher(Assembly assembly) { Type[] types = assembly.GetTypes(); FSharpFunc @_instance; @_instance = initNetcodePatcher@43.@_instance; Bind val = null; MethodInfo[] array = null; MethodInfo[] array2 = ArrayModule.Collect(@_instance, types); Iterate val2 = null; Iterate.Iterate(array2, (FSharpFunc)initNetcodePatcher@44-1.@_instance); } } } namespace .$Mirage.Domain { internal static class Netcode { } } namespace Mirage.Domain { [CompilationMapping(/*Could not decode attribute arguments.*/)] public static class Null { public static bool isNotNull(object o) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown if (o != null) { if (o is Object) { Object val = (Object)o; return Object.op_Implicit(val); } return true; } return false; } public static bool isNull(object o) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown return o == null || (o is Object && !Object.op_Implicit((Object)o)); } } } namespace .$Mirage.Domain { internal static class Null { } } namespace .$.NETStandard,Version=v2.1 { internal static class AssemblyAttributes { } } namespace .$Mirage { internal static class AssemblyInfo { } } namespace System.Diagnostics.CodeAnalysis { [Serializable] [Flags] [CompilerGenerated] [DebuggerNonUserCode] internal enum DynamicallyAccessedMemberTypes { All = -1, None = 0, PublicParameterlessConstructor = 1, PublicConstructors = 3, NonPublicConstructors = 4, PublicMethods = 8, NonPublicMethods = 0x10, PublicFields = 0x20, NonPublicFields = 0x40, PublicNestedTypes = 0x80, NonPublicNestedTypes = 0x100, PublicProperties = 0x200, NonPublicProperties = 0x400, PublicEvents = 0x800, NonPublicEvents = 0x1000, Interfaces = 0x2000 } [CompilerGenerated] internal class DynamicDependencyAttribute : Attribute { [CompilerGenerated] [DebuggerNonUserCode] private DynamicallyAccessedMemberTypes MemberType@; [CompilerGenerated] [DebuggerNonUserCode] private Type Type@; [CompilerGenerated] [DebuggerNonUserCode] public DynamicallyAccessedMemberTypes MemberType { [CompilerGenerated] [DebuggerNonUserCode] get { return MemberType@; } } [CompilerGenerated] [DebuggerNonUserCode] public Type Type { [CompilerGenerated] [DebuggerNonUserCode] get { return Type@; } } [CompilerGenerated] [DebuggerNonUserCode] public DynamicDependencyAttribute(DynamicallyAccessedMemberTypes MemberType, Type Type) { MemberType@ = MemberType; Type@ = Type; } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace Mirage.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }