Some mods target the Mono version of the game, which is available by opting into the Steam beta branch "alternate"
Decompiled source of SIAK Imperium v3.0.2
SIAKImperium.dll
Decompiled 17 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml.Linq; using HarmonyLib; using Il2CppFishNet; using Il2CppFishNet.Managing; using Il2CppFishNet.Managing.Object; using Il2CppFishNet.Object; using Il2CppInterop.Runtime; using Il2CppInterop.Runtime.Attributes; using Il2CppInterop.Runtime.Injection; using Il2CppInterop.Runtime.InteropTypes; using Il2CppInterop.Runtime.InteropTypes.Arrays; using Il2CppScheduleOne; using Il2CppScheduleOne.Combat; using Il2CppScheduleOne.Core.Items.Framework; using Il2CppScheduleOne.DevUtilities; using Il2CppScheduleOne.Dragging; using Il2CppScheduleOne.Economy; using Il2CppScheduleOne.EntityFramework; using Il2CppScheduleOne.Equipping; using Il2CppScheduleOne.ItemFramework; using Il2CppScheduleOne.Law; using Il2CppScheduleOne.Management; using Il2CppScheduleOne.Management.UI; using Il2CppScheduleOne.Messaging; using Il2CppScheduleOne.Money; using Il2CppScheduleOne.NPCs; using Il2CppScheduleOne.NPCs.Framework; using Il2CppScheduleOne.NPCs.Relation; using Il2CppScheduleOne.NPCs.Responses; using Il2CppScheduleOne.ObjectScripts; using Il2CppScheduleOne.PlayerScripts; using Il2CppScheduleOne.Police; using Il2CppScheduleOne.Product; using Il2CppScheduleOne.Property; using Il2CppScheduleOne.Storage; using Il2CppScheduleOne.UI; using Il2CppScheduleOne.UI.Management; using Il2CppScheduleOne.UI.Phone; using Il2CppScheduleOne.UI.Phone.Messages; using Il2CppScheduleOne.Vehicles; using Il2CppScheduleOne.Vision; using Il2CppSteamworks; using Il2CppSystem; using Il2CppSystem.Collections.Generic; using Il2CppSystem.Reflection; using Il2CppTMPro; using Jint; using MelonLoader; using MelonLoader.Preferences; using MelonLoader.Utils; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using S1API.Console; using S1API.Entities; using S1API.GameTime; using S1API.Input; using S1API.Items; using S1API.Law; using S1API.Leveling; using S1API.Lifecycle; using S1API.Money; using S1API.PhoneApp; using S1API.Products; using S1API.Property; using S1API.Storage; using S1API.Storages; using S1API.UI; using S1API.Utils; using SIAKImperium; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; using UnityEngine.Yoga; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(/*Could not decode attribute arguments.*/)] [assembly: MelonInfo(typeof(SIAKImperiumMod), "[S.I.A.K] Imperium", "3.0.1", "Eternidox", null)] [assembly: MelonColor(255, 255, 80, 80)] [assembly: MelonAuthorColor(255, 80, 160, 255)] [assembly: MelonGame("TVGS", "Schedule I")] [assembly: AssemblyVersion("0.0.0.0")] [module: RefSafetyRules(11)] internal class <Module> { static <Module>() { ImperiumEmbeddedDependencyLoader.InitializeModule(); } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : System.Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(/*Could not decode attribute arguments.*/)] internal sealed class NullableAttribute : System.Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(/*Could not decode attribute arguments.*/)] internal sealed class NullableContextAttribute : System.Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(/*Could not decode attribute arguments.*/)] internal sealed class RefSafetyRulesAttribute : System.Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SIAKImperium { public sealed class ImperiumAntivirusApp : PhoneApp { private static ImperiumAntivirusApp? _instance; private static GameObject? _iconRoot; private static readonly Action OpenFromLauncherAction = new Action(OpenFromLauncher); protected override string AppName => "SIAKAntivirusApp"; protected override string AppTitle => "Advanced Anti Virus"; protected override string IconLabel => "Antivirus"; protected override string IconFileName => string.Empty; protected override Sprite? IconSprite => ImperiumAssets.LoadAntivirusAppIconSprite(); protected override EOrientation Orientation => (EOrientation)0; protected override void OnCreatedUI(GameObject container) { //IL_0095: 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) _instance = this; if (ImperiumWebUiRuntime.Available) { GameObject val = UIFactory.Panel("AntivirusHtmlRoot", container.transform, Color.clear, (Vector2?)null, (Vector2?)null, true); ImperiumAntivirusWebController imperiumAntivirusWebController = val.AddComponent<ImperiumAntivirusWebController>(); if (imperiumAntivirusWebController.Initialize(val, container)) { RefreshAvailability(SIAKImperiumMod.Service.GetSnapshot().Antivirus); return; } val.SetActive(false); Object.Destroy((Object)(object)val); } GameObject val2 = UIFactory.Panel("AntivirusRoot", container.transform, new Color(0.035f, 0.06f, 0.05f), (Vector2?)null, (Vector2?)null, true); ImperiumAntivirusAppController imperiumAntivirusAppController = val2.AddComponent<ImperiumAntivirusAppController>(); imperiumAntivirusAppController.Initialize(val2, container); RefreshAvailability(SIAKImperiumMod.Service.GetSnapshot().Antivirus); } internal static bool TryOpenInstalled() { ImperiumAntivirusStatus antivirus = SIAKImperiumMod.Service.GetSnapshot().Antivirus; if (_instance == null || !antivirus.Enabled || !antivirus.Installed) { return false; } ((PhoneApp)_instance).OpenApp(); return true; } internal static void RefreshAvailability(ImperiumAntivirusStatus antivirus) { if (_instance != null) { _iconRoot = ImperiumPhoneLauncherRecovery.Ensure(_iconRoot, "SIAKAntivirusApp", "Antivirus", ImperiumAssets.LoadAntivirusAppIconSprite(), OpenFromLauncherAction); if ((Object)(object)_iconRoot != (Object)null) { _iconRoot.SetActive(antivirus.Enabled && antivirus.Installed); } } } internal static void RefreshAvailabilityFromService() { ImperiumService service = SIAKImperiumMod.Service; if (service != null) { RefreshAvailability(service.GetSnapshot().Antivirus); } } private static void OpenFromLauncher() { TryOpenInstalled(); } } internal sealed class ImperiumAntivirusAppController : MonoBehaviour { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action <>9__37_0; public static Action <>9__37_1; internal void <Initialize>b__37_0() { SIAKImperiumMod.Service.SubscribeAntivirus("basic"); } internal void <Initialize>b__37_1() { SIAKImperiumMod.Service.SubscribeAntivirus("premium"); } } private static readonly Color Accent = new Color(0.32f, 0.86f, 0.57f); private static readonly Color Muted = new Color(0.65f, 0.75f, 0.7f); private static readonly Color Panel = new Color(0.06f, 0.12f, 0.1f); private GameObject? _loginRoot; private GameObject? _mainRoot; private RectTransform? _portraitContainer; private RectTransform? _portraitRoot; private Vector2 _lastPortraitContainerSize; private InputField? _playerNameInput; private Button? _fingerprintButton; private Image? _fingerprintScannerBackground; private Image? _fingerprintArtwork; private Text? _loginHint; private Text? _statusText; private Text? _planText; private Text? _scanText; private Text? _malwareText; private Text? _spywareText; private Text? _ransomwareText; private Button? _basicButton; private Text? _basicLabel; private Button? _premiumButton; private Text? _premiumLabel; private Button? _scanButton; private Text? _scanLabel; private Button? _resultsButton; private Text? _resultsLabel; private GameObject? _resultsButtonRoot; private Button? _unsubscribeButton; private Text? _unsubscribeLabel; private string _verifiedPlayerName = string.Empty; private int _lastStateVersion = -1; private float _fingerprintHeldSeconds; private float _scanAnimationStartedAt = -1f; private bool _wasScanning; private bool _resultsVisible; public ImperiumAntivirusAppController(System.IntPtr pointer) : base(pointer) { } public void Initialize(GameObject root, GameObject container) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: 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_00e5: 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_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0124: 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_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0247: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0320: Unknown result type (might be due to invalid IL or missing references) //IL_0325: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03db: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_0416: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_04a8: Unknown result type (might be due to invalid IL or missing references) //IL_04bf: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Unknown result type (might be due to invalid IL or missing references) //IL_053d: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_05d0: Unknown result type (might be due to invalid IL or missing references) //IL_05e7: Unknown result type (might be due to invalid IL or missing references) //IL_05fe: Unknown result type (might be due to invalid IL or missing references) //IL_0615: Unknown result type (might be due to invalid IL or missing references) //IL_062c: Unknown result type (might be due to invalid IL or missing references) //IL_066c: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_069b: Unknown result type (might be due to invalid IL or missing references) //IL_06a0: Unknown result type (might be due to invalid IL or missing references) //IL_06a5: Unknown result type (might be due to invalid IL or missing references) //IL_06bc: Unknown result type (might be due to invalid IL or missing references) //IL_06f0: Unknown result type (might be due to invalid IL or missing references) //IL_0722: Unknown result type (might be due to invalid IL or missing references) //IL_0731: Unknown result type (might be due to invalid IL or missing references) //IL_0736: Unknown result type (might be due to invalid IL or missing references) //IL_073b: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_078c: Unknown result type (might be due to invalid IL or missing references) //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_07a0: Unknown result type (might be due to invalid IL or missing references) //IL_07a5: Unknown result type (might be due to invalid IL or missing references) //IL_07d6: Unknown result type (might be due to invalid IL or missing references) //IL_07f6: Unknown result type (might be due to invalid IL or missing references) //IL_0805: Unknown result type (might be due to invalid IL or missing references) //IL_080a: Unknown result type (might be due to invalid IL or missing references) //IL_080f: Unknown result type (might be due to invalid IL or missing references) //IL_0835: Unknown result type (might be due to invalid IL or missing references) //IL_0867: Unknown result type (might be due to invalid IL or missing references) //IL_0876: Unknown result type (might be due to invalid IL or missing references) //IL_087b: Unknown result type (might be due to invalid IL or missing references) //IL_0880: Unknown result type (might be due to invalid IL or missing references) //IL_08b1: Unknown result type (might be due to invalid IL or missing references) //IL_08d1: Unknown result type (might be due to invalid IL or missing references) //IL_08e0: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Unknown result type (might be due to invalid IL or missing references) //IL_08ea: Unknown result type (might be due to invalid IL or missing references) //IL_0969: Unknown result type (might be due to invalid IL or missing references) //IL_097a: Unknown result type (might be due to invalid IL or missing references) //IL_097f: Unknown result type (might be due to invalid IL or missing references) //IL_0984: Unknown result type (might be due to invalid IL or missing references) //IL_098c: Unknown result type (might be due to invalid IL or missing references) //IL_09bc: Unknown result type (might be due to invalid IL or missing references) //IL_09cb: Unknown result type (might be due to invalid IL or missing references) //IL_09d0: Unknown result type (might be due to invalid IL or missing references) //IL_09d5: Unknown result type (might be due to invalid IL or missing references) //IL_0a00: Unknown result type (might be due to invalid IL or missing references) //IL_0a11: Unknown result type (might be due to invalid IL or missing references) //IL_0a16: Unknown result type (might be due to invalid IL or missing references) //IL_0a1b: Unknown result type (might be due to invalid IL or missing references) //IL_0a23: Unknown result type (might be due to invalid IL or missing references) //IL_0a53: Unknown result type (might be due to invalid IL or missing references) //IL_0a62: Unknown result type (might be due to invalid IL or missing references) //IL_0a67: Unknown result type (might be due to invalid IL or missing references) //IL_0a6c: Unknown result type (might be due to invalid IL or missing references) //IL_0a97: Unknown result type (might be due to invalid IL or missing references) //IL_0aa8: Unknown result type (might be due to invalid IL or missing references) //IL_0aad: Unknown result type (might be due to invalid IL or missing references) //IL_0ab2: Unknown result type (might be due to invalid IL or missing references) //IL_0aba: Unknown result type (might be due to invalid IL or missing references) //IL_0aea: Unknown result type (might be due to invalid IL or missing references) //IL_0af9: Unknown result type (might be due to invalid IL or missing references) //IL_0afe: Unknown result type (might be due to invalid IL or missing references) //IL_0b03: Unknown result type (might be due to invalid IL or missing references) //IL_0b2e: Unknown result type (might be due to invalid IL or missing references) //IL_0b3f: Unknown result type (might be due to invalid IL or missing references) //IL_0b44: Unknown result type (might be due to invalid IL or missing references) //IL_0b49: Unknown result type (might be due to invalid IL or missing references) //IL_0b51: Unknown result type (might be due to invalid IL or missing references) //IL_0b89: Unknown result type (might be due to invalid IL or missing references) //IL_0b98: Unknown result type (might be due to invalid IL or missing references) //IL_0b9d: Unknown result type (might be due to invalid IL or missing references) //IL_0ba2: Unknown result type (might be due to invalid IL or missing references) //IL_0bcd: Unknown result type (might be due to invalid IL or missing references) //IL_0bde: Unknown result type (might be due to invalid IL or missing references) //IL_0be3: Unknown result type (might be due to invalid IL or missing references) //IL_0be8: Unknown result type (might be due to invalid IL or missing references) //IL_0bf0: Unknown result type (might be due to invalid IL or missing references) //IL_0c20: Unknown result type (might be due to invalid IL or missing references) //IL_0c2f: Unknown result type (might be due to invalid IL or missing references) //IL_0c34: Unknown result type (might be due to invalid IL or missing references) //IL_0c39: Unknown result type (might be due to invalid IL or missing references) //IL_0c5a: Unknown result type (might be due to invalid IL or missing references) //IL_0c5f: Unknown result type (might be due to invalid IL or missing references) //IL_0c65: Expected O, but got Unknown //IL_0c9b: Unknown result type (might be due to invalid IL or missing references) //IL_0ca5: Expected O, but got Unknown //IL_0caf: Unknown result type (might be due to invalid IL or missing references) //IL_0cb9: Expected O, but got Unknown //IL_0cc7: Unknown result type (might be due to invalid IL or missing references) //IL_0cd1: Expected O, but got Unknown //IL_0c81: Unknown result type (might be due to invalid IL or missing references) //IL_0c86: Unknown result type (might be due to invalid IL or missing references) //IL_0c8c: Expected O, but got Unknown _portraitRoot = root.GetComponent<RectTransform>(); _portraitContainer = container.GetComponent<RectTransform>(); ApplyPortraitCanvasLayout(force: true); GameObject val = UIFactory.Panel("AntivirusBrandLogo", root.transform, Color.clear, (Vector2?)null, (Vector2?)null, false); Image component = val.GetComponent<Image>(); component.sprite = ImperiumAssets.LoadAntivirusLogoSprite(); ((Graphic)component).color = Color.white; component.preserveAspect = true; ((Graphic)component).raycastTarget = false; Stretch(val.GetComponent<RectTransform>(), new Vector2(0.38f, 0.918f), new Vector2(0.62f, 0.992f), Vector2.zero, Vector2.zero); Text val2 = UIFactory.Text("AntivirusHeader", "Advanced Anti Virus", root.transform, 30, (TextAnchor)4, (FontStyle)1); ((Graphic)val2).color = Accent; Stretch(((Component)val2).GetComponent<RectTransform>(), new Vector2(0.08f, 0.865f), new Vector2(0.92f, 0.918f), Vector2.zero, Vector2.zero); Text val3 = UIFactory.Text("AntivirusSubheader", "Made by Imperium", root.transform, 18, (TextAnchor)4, (FontStyle)2); ((Graphic)val3).color = Muted; Stretch(((Component)val3).GetComponent<RectTransform>(), new Vector2(0.08f, 0.822f), new Vector2(0.92f, 0.865f), Vector2.zero, Vector2.zero); _loginRoot = UIFactory.Panel("AntivirusLogin", root.transform, Color.clear, (Vector2?)null, (Vector2?)null, true); GameObject val4 = UIFactory.Panel("AntivirusLoginPanel", _loginRoot.transform, Panel, (Vector2?)null, (Vector2?)null, false); Stretch(val4.GetComponent<RectTransform>(), new Vector2(0.08f, 0.11f), new Vector2(0.92f, 0.8f), Vector2.zero, Vector2.zero); Text val5 = UIFactory.Text("AntivirusLoginTitle", "Secure User Verification", val4.transform, 24, (TextAnchor)4, (FontStyle)1); ((Graphic)val5).color = Color.white; Stretch(((Component)val5).GetComponent<RectTransform>(), new Vector2(0.08f, 0.83f), new Vector2(0.92f, 0.94f), Vector2.zero, Vector2.zero); Text val6 = UIFactory.Text("AntivirusLoginBody", "Enter your current Imperium player name, then hold the fingerprint scanner until it turns green.", val4.transform, 18, (TextAnchor)1, (FontStyle)0); ((Graphic)val6).color = Muted; val6.horizontalOverflow = (HorizontalWrapMode)0; Stretch(((Component)val6).GetComponent<RectTransform>(), new Vector2(0.08f, 0.65f), new Vector2(0.92f, 0.81f), Vector2.zero, Vector2.zero); _playerNameInput = CreateInputField("AntivirusPlayerName", val4.transform, "Your Imperium player name", 20); _playerNameInput.lineType = (LineType)0; _playerNameInput.characterLimit = 48; Stretch(((Component)_playerNameInput).GetComponent<RectTransform>(), new Vector2(0.1f, 0.5f), new Vector2(0.9f, 0.6f), Vector2.zero, Vector2.zero); GameObject val7 = UIFactory.Panel("AntivirusFingerprintRing", val4.transform, Color.white, (Vector2?)null, (Vector2?)null, false); Image component2 = val7.GetComponent<Image>(); component2.sprite = ImperiumAntivirusUiSprites.Ring; component2.type = (Type)0; component2.preserveAspect = true; ((Graphic)component2).raycastTarget = false; ((Graphic)component2).color = new Color(0.2f, 0.78f, 0.54f, 0.95f); RectTransform component3 = val7.GetComponent<RectTransform>(); component3.anchorMin = new Vector2(0.5f, 0.31f); component3.anchorMax = new Vector2(0.5f, 0.31f); component3.pivot = new Vector2(0.5f, 0.5f); component3.sizeDelta = new Vector2(170f, 170f); component3.anchoredPosition = Vector2.zero; GameObject val8 = UIFactory.Panel("AntivirusFingerprintScanner", val7.transform, Color.white, (Vector2?)null, (Vector2?)null, false); _fingerprintScannerBackground = val8.GetComponent<Image>(); _fingerprintScannerBackground.sprite = ImperiumAntivirusUiSprites.Disc; _fingerprintScannerBackground.type = (Type)0; _fingerprintScannerBackground.preserveAspect = true; ((Graphic)_fingerprintScannerBackground).raycastTarget = true; RectTransform component4 = val8.GetComponent<RectTransform>(); component4.anchorMin = new Vector2(0.5f, 0.5f); component4.anchorMax = new Vector2(0.5f, 0.5f); component4.pivot = new Vector2(0.5f, 0.5f); component4.sizeDelta = new Vector2(144f, 144f); component4.anchoredPosition = Vector2.zero; _fingerprintButton = val8.AddComponent<Button>(); ((Selectable)_fingerprintButton).targetGraphic = (Graphic)(object)_fingerprintScannerBackground; ((Selectable)_fingerprintButton).transition = (Transition)0; GameObject val9 = UIFactory.Panel("AntivirusFingerprint", val8.transform, Color.clear, (Vector2?)null, (Vector2?)null, false); _fingerprintArtwork = val9.GetComponent<Image>(); _fingerprintArtwork.sprite = ImperiumAssets.LoadFingerprintSprite(); ((Graphic)_fingerprintArtwork).color = new Color(0.58f, 0.69f, 0.64f, 1f); _fingerprintArtwork.preserveAspect = true; ((Graphic)_fingerprintArtwork).raycastTarget = false; RectTransform component5 = val9.GetComponent<RectTransform>(); component5.anchorMin = new Vector2(0.5f, 0.5f); component5.anchorMax = new Vector2(0.5f, 0.5f); component5.pivot = new Vector2(0.5f, 0.5f); component5.sizeDelta = new Vector2(132f, 132f); component5.anchoredPosition = new Vector2(0f, -1f); _loginHint = UIFactory.Text("AntivirusLoginHint", string.Empty, val4.transform, 17, (TextAnchor)4, (FontStyle)2); ((Graphic)_loginHint).color = new Color(0.9f, 0.7f, 0.35f); Stretch(((Component)_loginHint).GetComponent<RectTransform>(), new Vector2(0.08f, 0.08f), new Vector2(0.92f, 0.16f), Vector2.zero, Vector2.zero); _mainRoot = UIFactory.Panel("AntivirusMain", root.transform, Color.clear, (Vector2?)null, (Vector2?)null, true); GameObject val10 = UIFactory.Panel("AntivirusMainPanel", _mainRoot.transform, Panel, (Vector2?)null, (Vector2?)null, false); Stretch(val10.GetComponent<RectTransform>(), new Vector2(0.05f, 0.07f), new Vector2(0.95f, 0.82f), Vector2.zero, Vector2.zero); _statusText = UIFactory.Text("AntivirusStatus", string.Empty, val10.transform, 20, (TextAnchor)0, (FontStyle)1); ((Graphic)_statusText).color = Color.white; Stretch(((Component)_statusText).GetComponent<RectTransform>(), new Vector2(0.06f, 0.78f), new Vector2(0.94f, 0.95f), Vector2.zero, Vector2.zero); _planText = UIFactory.Text("AntivirusPlan", string.Empty, val10.transform, 18, (TextAnchor)0, (FontStyle)0); ((Graphic)_planText).color = Muted; Stretch(((Component)_planText).GetComponent<RectTransform>(), new Vector2(0.06f, 0.63f), new Vector2(0.94f, 0.77f), Vector2.zero, Vector2.zero); GameObject val11 = UIFactory.Panel("AntivirusScanTerminal", val10.transform, new Color(0.008f, 0.012f, 0.016f), (Vector2?)null, (Vector2?)null, false); Stretch(val11.GetComponent<RectTransform>(), new Vector2(0.06f, 0.23f), new Vector2(0.94f, 0.61f), Vector2.zero, Vector2.zero); _scanText = UIFactory.Text("AntivirusScan", string.Empty, val11.transform, 18, (TextAnchor)0, (FontStyle)0); ((Graphic)_scanText).color = Muted; Stretch(((Component)_scanText).GetComponent<RectTransform>(), new Vector2(0.07f, 0.58f), new Vector2(0.93f, 0.93f), Vector2.zero, Vector2.zero); _malwareText = CreateInfectionText("Malware", val11.transform, 0.37f); _spywareText = CreateInfectionText("Spyware", val11.transform, 0.22f); _ransomwareText = CreateInfectionText("Ransomware", val11.transform, 0.07f); ValueTuple<GameObject, Button, Text> val12 = UIFactory.RoundedButtonWithLabel("AntivirusBasic", "Antivirus Basic", val10.transform, new Color(0.16f, 0.34f, 0.24f), 240f, 42f, 18, Color.white); GameObject item = val12.Item1; Button item2 = val12.Item2; Text item3 = val12.Item3; _basicButton = item2; _basicLabel = item3; Stretch(item.GetComponent<RectTransform>(), new Vector2(0.06f, 0.14f), new Vector2(0.48f, 0.21f), Vector2.zero, Vector2.zero); ValueTuple<GameObject, Button, Text> val13 = UIFactory.RoundedButtonWithLabel("AntivirusPremium", "Antivirus Premium", val10.transform, new Color(0.17f, 0.24f, 0.42f), 240f, 42f, 18, Color.white); GameObject item4 = val13.Item1; Button item5 = val13.Item2; Text item6 = val13.Item3; _premiumButton = item5; _premiumLabel = item6; Stretch(item4.GetComponent<RectTransform>(), new Vector2(0.52f, 0.14f), new Vector2(0.94f, 0.21f), Vector2.zero, Vector2.zero); ValueTuple<GameObject, Button, Text> val14 = UIFactory.RoundedButtonWithLabel("AntivirusScanButton", "Scan Device", val10.transform, new Color(0.2f, 0.45f, 0.32f), 220f, 42f, 18, Color.white); GameObject item7 = val14.Item1; Button item8 = val14.Item2; Text item9 = val14.Item3; _scanButton = item8; _scanLabel = item9; Stretch(item7.GetComponent<RectTransform>(), new Vector2(0.06f, 0.055f), new Vector2(0.34f, 0.12f), Vector2.zero, Vector2.zero); ValueTuple<GameObject, Button, Text> val15 = UIFactory.RoundedButtonWithLabel("AntivirusResultsButton", "Scanned Results", val10.transform, new Color(0.18f, 0.31f, 0.47f), 220f, 42f, 16, Color.white); GameObject item10 = val15.Item1; Button item11 = val15.Item2; Text item12 = val15.Item3; _resultsButton = item11; _resultsLabel = item12; _resultsButtonRoot = item10; Stretch(item10.GetComponent<RectTransform>(), new Vector2(0.37f, 0.055f), new Vector2(0.65f, 0.12f), Vector2.zero, Vector2.zero); ValueTuple<GameObject, Button, Text> val16 = UIFactory.RoundedButtonWithLabel("AntivirusUnsubscribe", "Unsubscribe", val10.transform, new Color(0.42f, 0.2f, 0.18f), 220f, 42f, 18, Color.white); GameObject item13 = val16.Item1; Button item14 = val16.Item2; Text item15 = val16.Item3; _unsubscribeButton = item14; _unsubscribeLabel = item15; Stretch(item13.GetComponent<RectTransform>(), new Vector2(0.68f, 0.055f), new Vector2(0.94f, 0.12f), Vector2.zero, Vector2.zero); object obj = <>c.<>9__37_0; if (obj == null) { Action val17 = delegate { SIAKImperiumMod.Service.SubscribeAntivirus("basic"); }; <>c.<>9__37_0 = val17; obj = (object)val17; } ButtonUtils.AddListener(item2, (Action)obj); object obj2 = <>c.<>9__37_1; if (obj2 == null) { Action val18 = delegate { SIAKImperiumMod.Service.SubscribeAntivirus("premium"); }; <>c.<>9__37_1 = val18; obj2 = (object)val18; } ButtonUtils.AddListener(item5, (Action)obj2); ButtonUtils.AddListener(item8, (Action)([CompilerGenerated] () => { _resultsVisible = false; SIAKImperiumMod.Service.ScanWithAntivirus(); })); ButtonUtils.AddListener(item11, (Action)([CompilerGenerated] () => { _resultsVisible = true; RefreshNow(); })); ButtonUtils.AddListener(item14, new Action(SIAKImperiumMod.Service.UnsubscribeAntivirus)); RefreshNow(); } public void RefreshNow() { //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) ImperiumStatusSnapshot snapshot = SIAKImperiumMod.Service.GetSnapshot(); _lastStateVersion = SIAKImperiumMod.Service.StateVersion; ImperiumAntivirusStatus imperiumAntivirusStatus = snapshot.Antivirus ?? new ImperiumAntivirusStatus(); ImperiumAntivirusApp.RefreshAvailability(imperiumAntivirusStatus); if (!imperiumAntivirusStatus.ScanResultsAvailable) { _resultsVisible = false; } string text = snapshot.PlayerName?.Trim() ?? string.Empty; bool flag = !string.IsNullOrWhiteSpace(_verifiedPlayerName); if ((Object)(object)_loginRoot != (Object)null) { _loginRoot.SetActive(!flag); } if ((Object)(object)_mainRoot != (Object)null) { _mainRoot.SetActive(flag); } if (!flag) { if ((Object)(object)_loginHint != (Object)null) { _loginHint.text = (string.IsNullOrWhiteSpace(text) ? "Imperium identity is not ready yet." : "Verification protects this device from unauthorised antivirus changes."); } return; } if ((Object)(object)_statusText != (Object)null) { _statusText.text = ((!imperiumAntivirusStatus.Enabled) ? "APPLICATION UNAVAILABLE\nImperium Architects have temporarily recalled this application." : (imperiumAntivirusStatus.RansomwareLocked ? "DEVICE ENCRYPTED\nResolve the active ransom through the stock Messages app." : (imperiumAntivirusStatus.SpywareExtortionActive ? "HOSTILE ACTOR ACTIVE\nA Spyware source remains active even if a scan lowers the device risk." : (imperiumAntivirusStatus.SubscriptionActive ? "Device protection is active for this player." : "Your device is unprotected. We recommend protection immediately.")))); ((Graphic)_statusText).color = (Color)((!imperiumAntivirusStatus.Enabled || imperiumAntivirusStatus.RansomwareLocked) ? new Color(1f, 0.35f, 0.32f) : Color.white); } if ((Object)(object)_planText != (Object)null) { string text2 = (imperiumAntivirusStatus.SubscriptionActive ? (CultureInfo.InvariantCulture.TextInfo.ToTitleCase(imperiumAntivirusStatus.SubscriptionTier) + " subscription active") : "No active subscription"); string text3 = (imperiumAntivirusStatus.SubscriptionCancelled ? "\nRenewal cancelled after this game day." : string.Empty); _planText.text = $"{text2}\nBasic: ${imperiumAntivirusStatus.BasicDailyCost:N0}/game day | Premium: ${imperiumAntivirusStatus.PremiumDailyCost:N0}/game day{text3}"; } if (imperiumAntivirusStatus.ScanInProgress && !_wasScanning) { _scanAnimationStartedAt = Time.unscaledTime; } _wasScanning = imperiumAntivirusStatus.ScanInProgress; if ((Object)(object)_scanText != (Object)null) { _scanText.text = BuildScanStatus(imperiumAntivirusStatus); } bool flag2 = _resultsVisible && imperiumAntivirusStatus.ScanResultsAvailable && !imperiumAntivirusStatus.ScanInProgress; SetInfectionText(_malwareText, "Malware", imperiumAntivirusStatus.MalwarePercent, flag2); SetInfectionText(_spywareText, "Spyware", imperiumAntivirusStatus.SpywarePercent, flag2); SetInfectionText(_ransomwareText, "Ransomware", imperiumAntivirusStatus.RansomwarePercent, flag2); string text4 = imperiumAntivirusStatus.SubscriptionTier?.Trim().ToLowerInvariant() ?? string.Empty; if ((Object)(object)_basicLabel != (Object)null) { _basicLabel.text = ((text4 == "basic") ? "Basic Active" : $"Basic - ${imperiumAntivirusStatus.BasicDailyCost:N0}/day"); } if ((Object)(object)_premiumLabel != (Object)null) { _premiumLabel.text = ((text4 == "premium") ? "Premium Active" : $"Premium - ${imperiumAntivirusStatus.PremiumDailyCost:N0}/day"); } if ((Object)(object)_basicButton != (Object)null) { ((Selectable)_basicButton).interactable = imperiumAntivirusStatus.Enabled && !imperiumAntivirusStatus.SubscriptionActive && text4 != "premium"; } if ((Object)(object)_premiumButton != (Object)null) { ((Selectable)_premiumButton).interactable = imperiumAntivirusStatus.Enabled && text4 != "premium"; } if ((Object)(object)_scanButton != (Object)null) { ((Selectable)_scanButton).interactable = imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.SubscriptionActive && !imperiumAntivirusStatus.ScanInProgress; } if ((Object)(object)_scanLabel != (Object)null) { _scanLabel.text = (imperiumAntivirusStatus.ScanInProgress ? "Scanning..." : "Scan Device"); } if ((Object)(object)_resultsButtonRoot != (Object)null) { _resultsButtonRoot.SetActive(imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.ScanResultsAvailable); } if ((Object)(object)_resultsButton != (Object)null) { ((Selectable)_resultsButton).interactable = imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.ScanResultsAvailable && !imperiumAntivirusStatus.ScanInProgress; } if ((Object)(object)_resultsLabel != (Object)null) { _resultsLabel.text = (flag2 ? "Results Open" : "Scanned Results"); } if ((Object)(object)_unsubscribeButton != (Object)null) { ((Selectable)_unsubscribeButton).interactable = imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.SubscriptionActive && !imperiumAntivirusStatus.SubscriptionCancelled; } if ((Object)(object)_unsubscribeLabel != (Object)null) { _unsubscribeLabel.text = (imperiumAntivirusStatus.SubscriptionCancelled ? "Renewal Cancelled" : "Unsubscribe"); } } private void Update() { ApplyPortraitCanvasLayout(force: false); UpdateFingerprintVerification(); if (_wasScanning && (Object)(object)_scanText != (Object)null) { _scanText.text = BuildScanStatus(SIAKImperiumMod.Service.GetSnapshot().Antivirus ?? new ImperiumAntivirusStatus()); } if (_lastStateVersion != SIAKImperiumMod.Service.StateVersion && !ImperiumAppController.IsImperiumTextInputFocused()) { RefreshNow(); } } private void OnDisable() { _verifiedPlayerName = string.Empty; _resultsVisible = false; _fingerprintHeldSeconds = 0f; _scanAnimationStartedAt = -1f; } private void UpdateFingerprintVerification() { //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) if ((Object)(object)_loginRoot == (Object)null || !_loginRoot.activeInHierarchy || (Object)(object)_fingerprintButton == (Object)null) { return; } GameObject val = (((Object)(object)EventSystem.current != (Object)null) ? EventSystem.current.currentSelectedGameObject : null); RectTransform component = ((Component)_fingerprintButton).GetComponent<RectTransform>(); bool flag = (Object)(object)component != (Object)null && RectTransformUtility.RectangleContainsScreenPoint(component, Vector2.op_Implicit(Input.mousePosition), (Camera)null); if (!Input.GetMouseButton(0) || (!flag && (!((Object)(object)val != (Object)null) || (!((Object)(object)val == (Object)(object)((Component)_fingerprintButton).gameObject) && !val.transform.IsChildOf(((Component)_fingerprintButton).transform))))) { _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(0f); return; } ImperiumStatusSnapshot snapshot = SIAKImperiumMod.Service.GetSnapshot(); string text = snapshot.PlayerName?.Trim() ?? string.Empty; InputField? playerNameInput = _playerNameInput; string text2 = ((playerNameInput == null) ? null : playerNameInput.text?.Trim()) ?? string.Empty; if (string.IsNullOrWhiteSpace(text) || !string.Equals(text2, text, (StringComparison)5)) { _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(0f); if ((Object)(object)_loginHint != (Object)null) { _loginHint.text = "Enter your exact current Imperium player name first."; } return; } _fingerprintHeldSeconds += Time.unscaledDeltaTime; SetFingerprintScanProgress(Mathf.Clamp01(_fingerprintHeldSeconds / 1.25f)); if (!(_fingerprintHeldSeconds < 1.25f)) { _verifiedPlayerName = text; _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(1f); RefreshNow(); } } private void ApplyPortraitCanvasLayout(bool force) { //IL_002d: 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_0035: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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) if (!((Object)(object)_portraitContainer == (Object)null) && !((Object)(object)_portraitRoot == (Object)null)) { Rect rect = _portraitContainer.rect; Vector2 size = ((Rect)(ref rect)).size; if (!(size.x < 1f) && !(size.y < 1f) && (force || !(Vector2.SqrMagnitude(size - _lastPortraitContainerSize) < 0.25f))) { _portraitRoot.anchorMin = Vector2.zero; _portraitRoot.anchorMax = Vector2.one; _portraitRoot.pivot = new Vector2(0.5f, 0.5f); _portraitRoot.sizeDelta = Vector2.zero; _portraitRoot.anchoredPosition = Vector2.zero; ((Transform)_portraitRoot).localRotation = Quaternion.identity; ((Transform)_portraitRoot).localScale = Vector3.one; _lastPortraitContainerSize = size; } } } private void SetFingerprintScanProgress(float progress) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_0094: 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) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_fingerprintScannerBackground == (Object)null)) { float num = Mathf.Clamp01(progress); Color val = default(Color); ((Color)(ref val))..ctor(0.025f, 0.105f, 0.078f, 1f); Color val2 = default(Color); ((Color)(ref val2))..ctor(0.02f, 0.3f, 0.66f, 1f); ((Graphic)_fingerprintScannerBackground).color = Color.Lerp(val, val2, num); if ((Object)(object)_fingerprintArtwork != (Object)null) { ((Graphic)_fingerprintArtwork).color = Color.Lerp(new Color(0.58f, 0.69f, 0.64f, 1f), new Color(0.16f, 0.67f, 1f, 1f), num); } } } private static Text CreateInfectionText(string name, Transform parent, float anchorY) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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) Text val = UIFactory.Text(name, string.Empty, parent, 19, (TextAnchor)3, (FontStyle)1); Stretch(((Component)val).GetComponent<RectTransform>(), new Vector2(0.08f, anchorY), new Vector2(0.92f, anchorY + 0.08f), Vector2.zero, Vector2.zero); return val; } private static void SetInfectionText(Text? text, string label, float value, bool visible) { //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)text == (Object)null)) { ((Component)text).gameObject.SetActive(visible); if (visible) { float num = Mathf.Clamp(value, 0f, 100f); text.text = label + ": " + num.ToString("0.##", (IFormatProvider)(object)CultureInfo.InvariantCulture) + "%"; ((Graphic)text).color = ((num <= 0.01f) ? new Color(0.32f, 0.9f, 0.52f) : ((num >= 80f) ? new Color(1f, 0.32f, 0.28f) : new Color(1f, 0.78f, 0.24f))); } } } [HideFromIl2Cpp] private string BuildScanStatus(ImperiumAntivirusStatus antivirus) { if (antivirus.ScanInProgress) { if (_scanAnimationStartedAt < 0f) { _scanAnimationStartedAt = Time.unscaledTime; } float num = Mathf.Max(0f, Time.unscaledTime - _scanAnimationStartedAt); return "> IMPERIUM AAV TERMINAL\n> " + (Mathf.FloorToInt(num * 1.7f) % 5) switch { 0 => "[NET] secure scanner handshake ........ ACTIVE", 1 => "[SYS] verifying application signatures .. ACTIVE", 2 => "[MEM] tracing hostile process markers ... ACTIVE", 3 => "[FS ] mapping encrypted device sectors .. ACTIVE", _ => "[KEY] sealing authenticated report ...... ACTIVE", } + "\n> SCAN RUNNING IN BACKGROUND\n> REPORT DUE " + FormatLocalTime(antivirus.ScanCompleteAt); } _scanAnimationStartedAt = -1f; if (antivirus.ScanResultsAvailable) { return _resultsVisible ? ("> VERIFIED REPORT DECRYPTED\n> SCAN COMPLETED " + FormatLocalTime(antivirus.LastScanCompletedAt) + "\n> THREAT STATUS DISPLAYED BELOW") : "> VERIFIED REPORT SEALED\n> SELECT SCANNED RESULTS TO DECRYPT CURRENT THREAT STATUS"; } return antivirus.SubscriptionActive ? "> TERMINAL READY\n> NO AUTHENTICATED SCAN REPORT IS STORED FOR THIS DEVICE\n> RUN SCAN DEVICE TO GENERATE A CURRENT REPORT" : "> TERMINAL LOCKED\n> A BASIC OR PREMIUM SUBSCRIPTION IS REQUIRED FOR DEVICE SCANS"; } private static string FormatLocalTime(string rawTimestamp) { System.DateTime dateTime = default(System.DateTime); return System.DateTime.TryParse(rawTimestamp, (IFormatProvider)(object)CultureInfo.InvariantCulture, (DateTimeStyles)128, ref dateTime) ? dateTime.ToLocalTime().ToString("HH:mm:ss", (IFormatProvider)(object)CultureInfo.InvariantCulture) : "soon"; } private static InputField CreateInputField(string name, Transform parent, string placeholderText, int fontSize) { //IL_0012: 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) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_0106: 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) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) GameObject val = UIFactory.Panel(name, parent, new Color(0.04f, 0.08f, 0.07f), (Vector2?)null, (Vector2?)null, false); InputField val2 = val.AddComponent<InputField>(); ((Selectable)val2).targetGraphic = (Graphic)(object)val.GetComponent<Image>(); ((Selectable)val2).interactable = true; val2.readOnly = false; val2.customCaretColor = true; val2.caretColor = Color.white; val2.caretWidth = 2; Text val3 = UIFactory.Text("Text", string.Empty, val.transform, fontSize, (TextAnchor)3, (FontStyle)0); val3.font = Resources.GetBuiltinResource<Font>("Arial.ttf"); ((Graphic)val3).raycastTarget = false; Stretch(((Component)val3).GetComponent<RectTransform>(), Vector2.zero, Vector2.one, new Vector2(10f, 0f), new Vector2(-10f, 0f)); Text val4 = UIFactory.Text("Placeholder", placeholderText, val.transform, Math.Max(14, fontSize - 1), (TextAnchor)3, (FontStyle)2); ((Graphic)val4).color = new Color(0.54f, 0.65f, 0.6f); ((Graphic)val4).raycastTarget = false; Stretch(((Component)val4).GetComponent<RectTransform>(), Vector2.zero, Vector2.one, new Vector2(10f, 0f), new Vector2(-10f, 0f)); val2.textComponent = val3; val2.placeholder = (Graphic)(object)val4; ImperiumAppController.RegisterImperiumInput(val2); return val2; } private static void Stretch(RectTransform rect, Vector2 anchorMin, Vector2 anchorMax, Vector2 offsetMin, Vector2 offsetMax) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0012: 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) rect.anchorMin = anchorMin; rect.anchorMax = anchorMax; rect.offsetMin = offsetMin; rect.offsetMax = offsetMax; } } internal static class ImperiumAntivirusUiSprites { private static Sprite? _ring; private static Sprite? _disc; internal static Sprite Ring => _ring ?? (_ring = CreateCircleSprite(ring: true)); internal static Sprite Disc => _disc ?? (_disc = CreateCircleSprite(ring: false)); private static Sprite CreateCircleSprite(bool ring) { //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: 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_012e: 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_0141: Expected O, but got Unknown //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) Color32[] array = (Color32[])(object)new Color32[262144]; float num = 255.5f; float num2 = num - 2f; float num3 = num2 - 13f; for (int i = 0; i < 512; i++) { float num4 = (float)i - num; for (int j = 0; j < 512; j++) { float num5 = (float)j - num; float num6 = Mathf.Sqrt(num5 * num5 + num4 * num4); float num7 = Mathf.Clamp01((num2 - num6 + 1.75f) / 1.75f); float num8 = num7; if (ring) { float num9 = Mathf.Clamp01((num6 - num3 + 1.75f) / 1.75f); num8 = Mathf.Min(num7, num9); } array[i * 512 + j] = new Color32((byte)255, (byte)255, (byte)255, (byte)Mathf.RoundToInt(num8 * 255f)); } } Texture2D val = new Texture2D(512, 512, (TextureFormat)4, false) { name = (ring ? "ImperiumAntivirusRing" : "ImperiumAntivirusDisc"), filterMode = (FilterMode)1, wrapMode = (TextureWrapMode)1, hideFlags = (HideFlags)61 }; val.SetPixels32(Il2CppStructArray<Color32>.op_Implicit(array)); val.Apply(false, true); Sprite val2 = Sprite.Create(val, new Rect(0f, 0f, 512f, 512f), new Vector2(0.5f, 0.5f), 100f); ((Object)val2).name = ((Object)val).name + "Sprite"; ((Object)val2).hideFlags = (HideFlags)61; return val2; } } internal sealed class ImperiumAntivirusWebController : MonoBehaviour { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action <>9__18_0; public static Action <>9__18_1; public static Action <>9__18_2; internal void <Initialize>b__18_0() { SIAKImperiumMod.Service.SubscribeAntivirus("basic"); } internal void <Initialize>b__18_1() { SIAKImperiumMod.Service.SubscribeAntivirus("premium"); } internal void <Initialize>b__18_2() { SIAKImperiumMod.Service.UnsubscribeAntivirus(); } } private ImperiumHtmlDocument? _document; private RectTransform? _canvasContainer; private RectTransform? _canvasRoot; private Vector2 _lastCanvasContainerSize; private Button? _fingerprintButton; private Image? _fingerprintOuterRing; private Image? _fingerprintScannerBackground; private Image? _fingerprintArtwork; private string _verifiedPlayerName = string.Empty; private int _lastStateVersion = -1; private float _fingerprintHeldSeconds; private float _scanAnimationStartedAt = -1f; private bool _wasScanning; private bool _resultsVisible; private bool _showingPlans; private bool _cleanCompletionRefreshQueued; private bool _layoutTraceWritten; public ImperiumAntivirusWebController(System.IntPtr pointer) : base(pointer) { } public bool Initialize(GameObject root, GameObject container) { //IL_0046: 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_0051: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Expected O, but got Unknown //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_007c: 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_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Expected O, but got Unknown //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Expected O, but got Unknown //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) try { _canvasRoot = root.GetComponent<RectTransform>(); _canvasContainer = container.GetComponent<RectTransform>(); ApplyCanvasLayout(force: true); Dictionary<string, Action> obj = new Dictionary<string, Action>((IEqualityComparer<string>)(object)StringComparer.Ordinal); object obj2 = <>c.<>9__18_0; if (obj2 == null) { Action val = delegate { SIAKImperiumMod.Service.SubscribeAntivirus("basic"); }; <>c.<>9__18_0 = val; obj2 = (object)val; } obj["antivirus.basic"] = (Action)obj2; object obj3 = <>c.<>9__18_1; if (obj3 == null) { Action val2 = delegate { SIAKImperiumMod.Service.SubscribeAntivirus("premium"); }; <>c.<>9__18_1 = val2; obj3 = (object)val2; } obj["antivirus.premium"] = (Action)obj3; obj["antivirus.scan"] = new Action(StartScan); obj["antivirus.results"] = new Action(ShowResults); object obj4 = <>c.<>9__18_2; if (obj4 == null) { Action val3 = delegate { SIAKImperiumMod.Service.UnsubscribeAntivirus(); }; <>c.<>9__18_2 = val3; obj4 = (object)val3; } obj["antivirus.unsubscribe"] = (Action)obj4; obj["antivirus.plans"] = new Action(ShowPlans); obj["antivirus.back"] = new Action(ShowDashboard); obj["antivirus.clean"] = new Action(StartDeepClean); Dictionary<string, Action> actions = obj; string html = ImperiumAssets.LoadEmbeddedText("interface/antivirus/index.html"); string css = ImperiumAssets.LoadEmbeddedText("interface/antivirus/styles.css"); string script = ImperiumAssets.LoadEmbeddedText("interface/antivirus/app.js"); _document = ImperiumWebUiRuntime.TryRender(root.transform, html, css, script, (IReadOnlyDictionary<string, Action>?)(object)actions, out string error, ImperiumInterfaceSurface.Landscape); if (_document == null) { throw new InvalidOperationException("Antivirus HTML renderer unavailable: " + error); } ApplyCanvasLayout(force: true); _document.RefreshLayout(); _fingerprintButton = _document.GetButton("fingerprint-scan"); _fingerprintOuterRing = _document.GetSurface("fingerprint-ring"); _fingerprintScannerBackground = _document.GetSurface("fingerprint-scan"); _fingerprintArtwork = _document.GetArtwork("fingerprint-art"); if ((Object)(object)_fingerprintButton == (Object)null || (Object)(object)_fingerprintOuterRing == (Object)null || (Object)(object)_fingerprintScannerBackground == (Object)null || (Object)(object)_fingerprintArtwork == (Object)null) { throw new InvalidOperationException("Antivirus HTML page is missing a required verification control."); } ConfigureFingerprintScanner(); RefreshNow(); return true; } catch (System.Exception ex) { _document?.Dispose(); _document = null; Instance? modLogger = SIAKImperiumMod.ModLogger; if (modLogger != null) { modLogger.Warning("[Imperium UI] Antivirus HTML renderer failed; using legacy UI instead: " + ex.Message); } return false; } } public void RefreshNow() { //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) if (_document == null) { return; } ImperiumService service = SIAKImperiumMod.Service; ImperiumStatusSnapshot snapshot = service.GetSnapshot(); _lastStateVersion = service.StateVersion; ImperiumAntivirusStatus imperiumAntivirusStatus = snapshot.Antivirus ?? new ImperiumAntivirusStatus(); ImperiumAntivirusApp.RefreshAvailability(imperiumAntivirusStatus); if (!imperiumAntivirusStatus.ScanResultsAvailable) { _resultsVisible = false; } string text = snapshot.PlayerName?.Trim() ?? string.Empty; bool flag = !string.IsNullOrWhiteSpace(_verifiedPlayerName); _document.SetText("verified-identity", string.IsNullOrWhiteSpace(text) ? "Identity synchronizing..." : text); _document.SetVisible("login-view", !flag); _document.SetVisible("main-view", flag && !_showingPlans); _document.SetVisible("plans-view", flag && _showingPlans); if (!flag) { _document.SetText("login-hint", string.IsNullOrWhiteSpace(text) ? "Imperium identity is not ready yet." : "Verification protects this device from unauthorised antivirus changes."); return; } string value = ((!imperiumAntivirusStatus.Enabled) ? "APPLICATION UNAVAILABLE\nImperium Architects have temporarily recalled this application." : (imperiumAntivirusStatus.RansomwareLocked ? "DEVICE ENCRYPTED\nResolve the active ransom through the stock Messages app." : (imperiumAntivirusStatus.SpywareExtortionActive ? "HOSTILE ACTOR ACTIVE\nA Spyware source remains active even if a scan lowers the device risk." : (imperiumAntivirusStatus.SubscriptionActive ? "Device protection is active for this user." : "Your device is unprotected. We recommend protection immediately.")))); _document.SetText("antivirus-status", value); TMP_Text text2 = _document.GetText("antivirus-status"); if ((Object)(object)text2 != (Object)null) { ((Graphic)text2).color = (Color)((!imperiumAntivirusStatus.Enabled || imperiumAntivirusStatus.RansomwareLocked) ? new Color(1f, 0.35f, 0.32f) : Color.white); } if (imperiumAntivirusStatus.ScanInProgress && !_wasScanning) { _scanAnimationStartedAt = Time.unscaledTime; } _wasScanning = imperiumAntivirusStatus.ScanInProgress; _document.SetText("scan-log", BuildScanStatus(imperiumAntivirusStatus)); _document.SetVisible("scan-progress", imperiumAntivirusStatus.ScanInProgress); _document.SetVisible("scan-sweep", imperiumAntivirusStatus.ScanInProgress); if (imperiumAntivirusStatus.ScanInProgress) { AnimateScan(imperiumAntivirusStatus); } bool flag2 = _resultsVisible && imperiumAntivirusStatus.ScanResultsAvailable && !imperiumAntivirusStatus.ScanInProgress; SetInfectionText("malware-value", "Malware", imperiumAntivirusStatus.MalwarePercent, flag2); SetInfectionText("spyware-value", "Spyware", imperiumAntivirusStatus.SpywarePercent, flag2); SetInfectionText("ransomware-value", "Ransomware", imperiumAntivirusStatus.RansomwarePercent, flag2); _document.SetVisible("threat-results", flag2); string text3 = imperiumAntivirusStatus.SubscriptionTier?.Trim().ToLowerInvariant() ?? string.Empty; _document.SetText("basic-action", (text3 == "basic") ? "Basic Active" : $"Basic - ${imperiumAntivirusStatus.BasicDailyCost:N0}/day"); _document.SetText("premium-action", (text3 == "premium") ? "Premium Active" : $"Premium - ${imperiumAntivirusStatus.PremiumDailyCost:N0}/day"); _document.SetText("basic-plan-price", $"Basic / ${imperiumAntivirusStatus.BasicDailyCost:N0} per game day"); _document.SetText("premium-plan-price", $"Premium / ${imperiumAntivirusStatus.PremiumDailyCost:N0} per game day"); _document.SetText("scan-action", imperiumAntivirusStatus.ScanInProgress ? "Scanning..." : "Scan Device"); _document.SetText("results-action", flag2 ? "Results Open" : "Scanned Results"); _document.SetText("unsubscribe-action", imperiumAntivirusStatus.SubscriptionCancelled ? "Renewal Cancelled" : "Unsubscribe"); int num = Math.Max(0, imperiumAntivirusStatus.Settings?.FullCleanCost ?? 3000); int seconds = Math.Max(1, imperiumAntivirusStatus.Settings?.FullCleanSeconds ?? 240); float num2 = CalculateTimedProgress(imperiumAntivirusStatus.CleanStartedAt, imperiumAntivirusStatus.CleanCompleteAt); _document.SetText("clean-price", $"Deep Clean / ${num:N0}"); _document.SetText("clean-description", imperiumAntivirusStatus.CleanInProgress ? ("Recovery is running in the background. Completion: " + FormatLocalTime(imperiumAntivirusStatus.CleanCompleteAt)) : ("Removes all tracked infection through a " + FormatDuration(seconds) + " secure recovery cycle.")); _document.SetText("clean-action", imperiumAntivirusStatus.CleanInProgress ? $"Cleaning {Mathf.Clamp(Mathf.FloorToInt(num2 * 100f), 1, 99)}%" : $"Start / ${num:N0}"); _document.SetVisible("clean-progress", imperiumAntivirusStatus.CleanInProgress); _document.SetProgress("clean-progress", num2); _document.SetInteractable("basic-action", imperiumAntivirusStatus.Enabled && !imperiumAntivirusStatus.SubscriptionActive && text3 != "premium"); _document.SetInteractable("premium-action", imperiumAntivirusStatus.Enabled && text3 != "premium"); _document.SetInteractable("scan-action", imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.SubscriptionActive && !imperiumAntivirusStatus.ScanInProgress); _document.SetVisible("results-action", imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.ScanResultsAvailable); _document.SetInteractable("results-action", imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.ScanResultsAvailable && !imperiumAntivirusStatus.ScanInProgress); _document.SetInteractable("unsubscribe-action", imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.SubscriptionActive && !imperiumAntivirusStatus.SubscriptionCancelled); _document.SetInteractable("clean-action", imperiumAntivirusStatus.Enabled && imperiumAntivirusStatus.Installed && !imperiumAntivirusStatus.CleanInProgress); } private void StartScan() { _resultsVisible = false; SIAKImperiumMod.Service.ScanWithAntivirus(); RefreshNow(); } private void ShowResults() { _resultsVisible = true; RefreshNow(); } private void ShowPlans() { _showingPlans = true; RefreshNow(); } private void ShowDashboard() { _showingPlans = false; RefreshNow(); } private void StartDeepClean() { SIAKImperiumMod.Service.DeepCleanWithAntivirus(); RefreshNow(); } private void Update() { if (ApplyCanvasLayout(force: false)) { _document?.RefreshLayout(); ConfigureFingerprintScanner(); } else { ImperiumHtmlDocument? document = _document; if (document != null && document.RefreshViewport()) { _document.RefreshLayout(); ConfigureFingerprintScanner(); } } WriteLayoutTraceOnce(); UpdateFingerprintVerification(); if (_document == null) { return; } if (_wasScanning) { ImperiumAntivirusStatus antivirus = SIAKImperiumMod.Service.GetSnapshot().Antivirus ?? new ImperiumAntivirusStatus(); _document.SetText("scan-log", BuildScanStatus(antivirus)); AnimateScan(antivirus); } ImperiumAntivirusStatus imperiumAntivirusStatus = SIAKImperiumMod.Service.GetSnapshot().Antivirus ?? new ImperiumAntivirusStatus(); if (imperiumAntivirusStatus.CleanInProgress) { float num = CalculateTimedProgress(imperiumAntivirusStatus.CleanStartedAt, imperiumAntivirusStatus.CleanCompleteAt); _document.SetProgress("clean-progress", num); _document.SetText("clean-action", $"Cleaning {Mathf.Clamp(Mathf.FloorToInt(num * 100f), 1, 99)}%"); if (num >= 0.999f && !_cleanCompletionRefreshQueued) { _cleanCompletionRefreshQueued = true; SIAKImperiumMod.Service.QueueImmediateRefresh(); } } else { _cleanCompletionRefreshQueued = false; } if (_lastStateVersion != SIAKImperiumMod.Service.StateVersion && !ImperiumAppController.IsImperiumTextInputFocused()) { RefreshNow(); } } private void OnEnable() { if (_document != null) { _layoutTraceWritten = false; ApplyCanvasLayout(force: true); _document.RefreshLayout(); ConfigureFingerprintScanner(); RefreshNow(); } } private void OnDisable() { _verifiedPlayerName = string.Empty; _resultsVisible = false; _showingPlans = false; _cleanCompletionRefreshQueued = false; _fingerprintHeldSeconds = 0f; _scanAnimationStartedAt = -1f; _lastStateVersion = -1; _layoutTraceWritten = false; } private void OnDestroy() { _document?.Dispose(); _document = null; } private void WriteLayoutTraceOnce() { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008a: 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_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_016a: 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_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_032e: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_03c6: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_0414: Unknown result type (might be due to invalid IL or missing references) //IL_0419: Unknown result type (might be due to invalid IL or missing references) if (_layoutTraceWritten || _document == null || (Object)(object)_canvasRoot == (Object)null || (Object)(object)_canvasContainer == (Object)null) { return; } Canvas.ForceUpdateCanvases(); RectTransform rect = _document.GetRect("antivirus-page"); RectTransform rect2 = _document.GetRect("login-view"); if ((Object)(object)rect == (Object)null || (Object)(object)rect2 == (Object)null) { return; } Rect rect3 = rect.rect; if (((Rect)(ref rect3)).width < 1f) { return; } rect3 = rect.rect; if (((Rect)(ref rect3)).height < 1f) { return; } List<string> val = new List<string>(); Transform val2 = ((Component)_canvasRoot).transform; int num = 0; while ((Object)(object)val2 != (Object)null && num < 7) { RectTransform val3 = (RectTransform)(object)((val2 is RectTransform) ? val2 : null); if (val3 != null) { System.Runtime.CompilerServices.DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new System.Runtime.CompilerServices.DefaultInterpolatedStringHandler(19, 5); defaultInterpolatedStringHandler.AppendFormatted(((Object)val2).name); defaultInterpolatedStringHandler.AppendLiteral("["); rect3 = val3.rect; defaultInterpolatedStringHandler.AppendFormatted<float>(((Rect)(ref rect3)).width, "0.#"); defaultInterpolatedStringHandler.AppendLiteral("x"); rect3 = val3.rect; defaultInterpolatedStringHandler.AppendFormatted<float>(((Rect)(ref rect3)).height, "0.#"); defaultInterpolatedStringHandler.AppendLiteral(";"); defaultInterpolatedStringHandler.AppendLiteral("localZ="); defaultInterpolatedStringHandler.AppendFormatted<float>(((Transform)val3).localEulerAngles.z, "0.#"); defaultInterpolatedStringHandler.AppendLiteral(";worldZ="); defaultInterpolatedStringHandler.AppendFormatted<float>(((Transform)val3).eulerAngles.z, "0.#"); defaultInterpolatedStringHandler.AppendLiteral("]"); val.Add(defaultInterpolatedStringHandler.ToStringAndClear()); } else { val.Add($"{((Object)val2).name}[localZ={val2.localEulerAngles.z:0.#};worldZ={val2.eulerAngles.z:0.#}]"); } num++; val2 = val2.parent; } Instance? modLogger = SIAKImperiumMod.ModLogger; if (modLogger != null) { string[] obj = new string[6] { "[Imperium UI] Antivirus layout trace: ", null, null, null, null, null }; System.Runtime.CompilerServices.DefaultInterpolatedStringHandler defaultInterpolatedStringHandler2 = new System.Runtime.CompilerServices.DefaultInterpolatedStringHandler(13, 2); defaultInterpolatedStringHandler2.AppendLiteral("container="); rect3 = _canvasContainer.rect; defaultInterpolatedStringHandler2.AppendFormatted<float>(((Rect)(ref rect3)).width, "0.#"); defaultInterpolatedStringHandler2.AppendLiteral("x"); rect3 = _canvasContainer.rect; defaultInterpolatedStringHandler2.AppendFormatted<float>(((Rect)(ref rect3)).height, "0.#"); defaultInterpolatedStringHandler2.AppendLiteral("; "); obj[1] = defaultInterpolatedStringHandler2.ToStringAndClear(); System.Runtime.CompilerServices.DefaultInterpolatedStringHandler defaultInterpolatedStringHandler3 = new System.Runtime.CompilerServices.DefaultInterpolatedStringHandler(15, 3); defaultInterpolatedStringHandler3.AppendLiteral("page="); rect3 = rect.rect; defaultInterpolatedStringHandler3.AppendFormatted<float>(((Rect)(ref rect3)).width, "0.#"); defaultInterpolatedStringHandler3.AppendLiteral("x"); rect3 = rect.rect; defaultInterpolatedStringHandler3.AppendFormatted<float>(((Rect)(ref rect3)).height, "0.#"); defaultInterpolatedStringHandler3.AppendLiteral(",localZ="); defaultInterpolatedStringHandler3.AppendFormatted<float>(((Transform)rect).localEulerAngles.z, "0.#"); defaultInterpolatedStringHandler3.AppendLiteral(","); obj[2] = defaultInterpolatedStringHandler3.ToStringAndClear(); System.Runtime.CompilerServices.DefaultInterpolatedStringHandler defaultInterpolatedStringHandler4 = new System.Runtime.CompilerServices.DefaultInterpolatedStringHandler(18, 3); defaultInterpolatedStringHandler4.AppendLiteral("worldZ="); defaultInterpolatedStringHandler4.AppendFormatted<float>(((Transform)rect).eulerAngles.z, "0.#"); defaultInterpolatedStringHandler4.AppendLiteral("; login="); rect3 = rect2.rect; defaultInterpolatedStringHandler4.AppendFormatted<float>(((Rect)(ref rect3)).width, "0.#"); defaultInterpolatedStringHandler4.AppendLiteral("x"); rect3 = rect2.rect; defaultInterpolatedStringHandler4.AppendFormatted<float>(((Rect)(ref rect3)).height, "0.#"); defaultInterpolatedStringHandler4.AppendLiteral("; "); obj[3] = defaultInterpolatedStringHandler4.ToStringAndClear(); obj[4] = "chain="; obj[5] = string.Join(" > ", (System.Collections.Generic.IEnumerable<string>)val); modLogger.Msg(string.Concat(obj)); } _layoutTraceWritten = true; } private void UpdateFingerprintVerification() { //IL_0078: 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) if (_document == null || (Object)(object)_fingerprintButton == (Object)null || (Object)(object)_fingerprintScannerBackground == (Object)null || !((Component)_fingerprintButton).gameObject.activeInHierarchy) { return; } GameObject val = (((Object)(object)EventSystem.current != (Object)null) ? EventSystem.current.currentSelectedGameObject : null); RectTransform component = ((Component)_fingerprintButton).GetComponent<RectTransform>(); bool flag = (Object)(object)component != (Object)null && RectTransformUtility.RectangleContainsScreenPoint(component, Vector2.op_Implicit(Input.mousePosition), (Camera)null); if (!Input.GetMouseButton(0) || (!flag && (!((Object)(object)val != (Object)null) || (!((Object)(object)val == (Object)(object)((Component)_fingerprintButton).gameObject) && !val.transform.IsChildOf(((Component)_fingerprintButton).transform))))) { _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(0f); return; } ImperiumStatusSnapshot snapshot = SIAKImperiumMod.Service.GetSnapshot(); string text = snapshot.PlayerName?.Trim() ?? string.Empty; if (string.IsNullOrWhiteSpace(text)) { _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(0f); _document.SetText("login-hint", "Imperium identity is still synchronizing. Try the scanner again in a moment."); return; } _fingerprintHeldSeconds += Time.unscaledDeltaTime; SetFingerprintScanProgress(Mathf.Clamp01(_fingerprintHeldSeconds / 1.25f)); if (!(_fingerprintHeldSeconds < 1.25f)) { _verifiedPlayerName = text; _fingerprintHeldSeconds = 0f; SetFingerprintScanProgress(1f); RefreshNow(); } } private bool ApplyCanvasLayout(bool force) { //IL_0035: 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_003d: 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_0043: 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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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) //IL_0067: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_canvasContainer == (Object)null || (Object)(object)_canvasRoot == (Object)null) { return false; } Canvas.ForceUpdateCanvases(); Rect rect = _canvasContainer.rect; Vector2 size = ((Rect)(ref rect)).size; if (size.x < 1f || size.y < 1f || (!force && Vector2.SqrMagnitude(size - _lastCanvasContainerSize) < 0.25f)) { return false; } _canvasRoot.anchorMin = Vector2.zero; _canvasRoot.anchorMax = Vector2.one; _canvasRoot.pivot = new Vector2(0.5f, 0.5f); _canvasRoot.sizeDelta = Vector2.zero; _canvasRoot.anchoredPosition = Vector2.zero; ((Transform)_canvasRoot).localRotation = Quaternion.identity; ((Transform)_canvasRoot).localScale = Vector3.one; _lastCanvasContainerSize = size; return true; } private void ConfigureFingerprintScanner() { //IL_0067: 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_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_0109: 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_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_fingerprintOuterRing != (Object)null) { _fingerprintOuterRing.sprite = ImperiumAntivirusUiSprites.Ring; _fingerprintOuterRing.type = (Type)0; _fingerprintOuterRing.preserveAspect = true; ((Graphic)_fingerprintOuterRing).raycastTarget = false; ((Graphic)_fingerprintOuterRing).color = new Color(0.2f, 0.78f, 0.54f, 0.95f); ((Transform)((Graphic)_fingerprintOuterRing).rectTransform).localRotation = Quaternion.identity; ((Transform)((Graphic)_fingerprintOuterRing).rectTransform).localScale = Vector3.one; } if ((Object)(object)_fingerprintScannerBackground != (Object)null) { _fingerprintScannerBackground.sprite = ImperiumAntivirusUiSprites.Disc; _fingerprintScannerBackground.type = (Type)0; _fingerprintScannerBackground.preserveAspect = true; ((Graphic)_fingerprintScannerBackground).raycastTarget = true; ((Transform)((Graphic)_fingerprintScannerBackground).rectTransform).localRotation = Quaternion.identity; ((Transform)((Graphic)_fingerprintScannerBackground).rectTransform).localScale = Vector3.one; } if ((Object)(object)_fingerprintButton != (Object)null && (Object)(object)_fingerprintScannerBackground != (Object)null) { ((Selectable)_fingerprintButton).targetGraphic = (Graphic)(object)_fingerprintScannerBackground; ((Selectable)_fingerprintButton).transition = (Transition)0; } if ((Object)(object)_fingerprintArtwork != (Object)null) { RectTransform rectTransform = ((Graphic)_fingerprintArtwork).rectTransform; rectTransform.anchorMin = new Vector2(0.5f, 0.5f); rectTransform.anchorMax = new Vector2(0.5f, 0.5f); rectTransform.pivot = new Vector2(0.5f, 0.5f); rectTransform.sizeDelta = new Vector2(264f, 264f); rectTransform.anchoredPosition = new Vector2(0f, -2f); ((Transform)rectTransform).localRotation = Quaternion.identity; ((Transform)rectTransform).localScale = Vector3.one; _fingerprintArtwork.preserveAspect = true; ((Graphic)_fingerprintArtwork).raycastTarget = false; } SetFingerprintScanProgress(Mathf.Clamp01(_fingerprintHeldSeconds / 1.25f)); } private void SetFingerprintScanProgress(float progress) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_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_00bb: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)_fingerprintScannerBackground == (Object)null)) { float num = Mathf.Clamp01(progress); Color val = default(Color); ((Color)(ref val))..ctor(0.025f, 0.105f, 0.078f, 1f); Color val2 = default(Color); ((Color)(ref val2))..ctor(0.02f, 0.3f, 0.66f, 1f); ((Graphic)_fingerprintScannerBackground).color = Color.Lerp(val, val2, num); if ((Object)(object)_fingerprintArtwork != (Object)null) { Color val3 = default(Color); ((Color)(ref val3))..ctor(0.58f, 0.69f, 0.64f, 1f); Color val4 = default(Color); ((Color)(ref val4))..ctor(0.16f, 0.67f, 1f, 1f); ((Graphic)_fingerprintArtwork).color = Color.Lerp(val3, val4, num); } } } [HideFromIl2Cpp] private void AnimateScan(ImperiumAntivirusStatus antivirus) { //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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) if (_document != null && antivirus.ScanInProgress) { float num = Mathf.Max(0f, Time.unscaledTime - Mathf.Max(0f, _scanAnimationStartedAt)); _document.SetProgress("scan-progress", CalculateScanProgress(antivirus)); RectTransform rect = _document.GetRect("scan-sweep"); RectTransform rect2 = _document.GetRect("scan-terminal"); Image surface = _document.GetSurface("scan-sweep"); if ((Object)(object)rect != (Object)null && (Object)(object)rect2 != (Object)null) { Rect rect3 = rect2.rect; float num2 = Mathf.Max(90f, ((Rect)(ref rect3)).height - 74f); float num3 = Mathf.PingPong(num * 0.55f, 1f); rect.anchoredPosition = new Vector2(rect.anchoredPosition.x, 0f - (46f + num2 * num3)); } if ((Object)(object)surface != (Object)null) { ((Graphic)surface).color = new Color(0.17f, 0.59f, 1f, 0.35f + Mathf.PingPong(num * 1.8f, 0.5f)); } } } [HideFromIl2Cpp] private static float CalculateScanProgress(ImperiumAntivirusStatus antivirus) { return CalculateTimedProgress(antivirus.ScanStartedAt, antivirus.ScanCompleteAt, 0.05f); } private static float CalculateTimedProgress(string startedAt, string completeAt, float fallback = 0f) { //IL_0046: 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_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) System.DateTime dateTime = default(System.DateTime); System.DateTime dateTime2 = default(System.DateTime); if (!System.DateTime.TryParse(startedAt, (IFormatProvider)(object)CultureInfo.InvariantCulture, (DateTimeStyles)128, ref dateTime) || !System.DateTime.TryParse(completeAt, (IFormatProvider)(object)CultureInfo.InvariantCulture, (DateTimeStyles)128, ref dateTime2)) { return fallback; } TimeSpan val = dateTime2.ToUniversalTime() - dateTime.ToUniversalTime(); double totalSeconds = ((TimeSpan)(ref val)).TotalSeconds; if (totalSeconds <= 0.1) { return 1f; } val = System.DateTime.UtcNow - dateTime.ToUniversalTime(); double totalSeconds2 = ((TimeSpan)(ref val)).TotalSeconds; return Mathf.Clamp01((float)(totalSeconds2 / totalSeconds)); } private void SetInfectionText(string id, string label, float value, bool visible) { //IL_00d6: 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_00aa: Unknown result type (might be due to invalid IL or missing references) if (_document == null) { return; } _document.SetVisible(id, visible); if (visible) { float num = Mathf.Clamp(value, 0f, 100f); _document.SetText(id, label + ": " + num.ToString("0.##", (IFormatProvider)(object)CultureInfo.InvariantCulture) + "%"); TMP_Text text = _document.GetText(id); if ((Object)(object)text != (Object)null) { ((Graphic)text).color = ((num <= 0.01f) ? new Color(0.32f, 0.9f, 0.52f) : ((num >= 80f) ? new Color(1f, 0.32f, 0.28f) : new Color(1f, 0.78f, 0.24f))); } } } [HideFromIl2Cpp] private string BuildScanStatus(ImperiumAntivirusStatus antivirus) { if (antivirus.ScanInProgress) { if (_scanAnimationStartedAt < 0f) { _scanAnimationStartedAt = Time.unscaledTime; } float num = Mathf.Max(0f, Time.unscaledTime - _scanAnimationStartedAt); int num2 = Mathf.FloorToInt(num * 2.2f) % 8; string text = num2 switch { 0 => "enumerating process table", 1 => "reading volatile memory", 2 => "mapping encrypted sectors", 3 => "validating message payloads", 4 => "tracing network sockets", 5 => "checking persistence keys", 6 => "comparing threat signatures", _ => "sealing diagnostic report", }; string text2 = (num2 % 3) switch { 0 => "[> ]", 1 => "[>> ]", _ => "[>>>]", }; int num3 = Mathf.FloorToInt(num * 3f); int num4 = 61 + PositiveModulo(num3 * 17, 38); int num5 = 18 + PositiveModulo(num3 * 23, 81); int num6 = 970 + PositiveModulo(num3 * 13, 30); int num7 = 640 + PositiveModulo(num3 * 211, 3456); int num8 = 72 + PositiveModulo(num3 * 19, 27); return string.Concat(new string[10] { "C:\\IMPERIUM\\AAV\\NODE-01\n|-- core\\\n| |-- kernel.sig .............. VERIFIED\n| |-- identity.key ............ SEALED\n| `-- scanner.engine .......... ONLINE\n|-- device\\\n| |-- memory\\heap ............. READ\n| |-- filesystem\\messages .... MAPPED\n| |-- filesystem\\applications MAPPED\n| `-- network\\active .......... INSPECT\n|-- live\\\n", $"| |-- {text2} {text}\n", $"| |-- entropy pool ............. {num4}%\n", $"| |-- memory sweep ............. {num5}%\n", $"| |-- signature blocks ......... {num7}/4096\n", $"| |-- packet integrity ......... {(float)num6 / 10f:0.0}%\n", $"| |-- heuristic confidence ..... {num8}%\n", "| `-- completion .............. ", FormatLocalTime(antivirus.ScanCompleteAt), "\n`-- report\\threat-matrix.tmp" }); } _scanAnimationStartedAt = -1f; if (antivirus.ScanResultsAvailable) { return _resultsVisible ? ("C:\\IMPERIUM\\AAV\\REPORT\n|-- manifest\\\n| |-- status ................. DECRYPTED\n| |-- completed .............. " + FormatLocalTime(antivirus.LastScanCompletedAt) + "\n| `-- integrity .............. VERIFIED\n`-- threat-matrix\\\n `-- DISPLAYED BELOW") : "C:\\IMPERIUM\\AAV\\REPORT\n|-- manifest\\\n| |-- status ................. SEALED\n| |-- integrity .............. VERIFIED\n| `-- encryption ............. IMPERIUM-AES\n`-- action\\\n `-- OPEN SCANNED RESULTS"; } return antivirus.SubscriptionActive ? "C:\\IMPERIUM\\AAV\n|-- services\\\n| |-- realtime.guard ......... ONLINE\n| |-- signature.monitor ...... ONLINE\n| `-- hostile.interceptor .... ARMED\n|-- reports\\\n| `-- no sealed report\n`-- action\\\n `-- RUN DEVICE SCAN" : "C:\\IMPERIUM\\AAV\n|-- services\\\n| |-- realtime.guard ......... STANDBY\n| |-- signature.monitor ...... LOCKED\n| `-- hostile.interceptor .... LOCKED\n`-- required\\\n `-- BASIC OR PREMIUM PLAN"; } private static int PositiveModulo(int value, int modulus) { int num = value % modulus; return (num < 0) ? (num + modulus) : num; } private static string FormatDuration(int seconds) { //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) TimeSpan val = TimeSpan.FromSeconds((double)Math.Max(1, seconds)); if (!(((TimeSpan)(ref val)).TotalMinutes >= 1.0)) { return $"{Math.Max(1, seconds)}-second"; } return $"{Math.Ceiling(((TimeSpan)(ref val)).TotalMinutes):0}-minute"; } private static string FormatLocalTime(string rawTimestamp) { System.DateTime dateTime = default(System.DateTime); return System.DateTime.TryParse(rawTimestamp, (IFormatProvider)(object)CultureInfo.InvariantCulture, (DateTimeStyles)128, ref dateTime) ? dateTime.ToLocalTime().ToString("HH:mm:ss", (IFormatProvider)(object)CultureInfo.InvariantCulture) : "soon"; } } public sealed class ImperiumApp : PhoneApp { private static ImperiumApp? _instance; private static GameObject? _iconRoot; private static readonly Action OpenFromLauncherAction = new Action(OpenFromLauncher); private static readonly Color BackgroundColor = new Color(0.08f, 0.09f, 0.11f); private static readonly Color SidebarColor = new Color(0.11f, 0.12f, 0.15f); private static readonly Color PanelColor = new Color(0.13f, 0.15f, 0.19f); private static readonly Color PanelAltColor = new Color(0.1f, 0.12f, 0.16f); private static readonly Color AccentColor = new Color(1f, 0.85f, 0.45f); private static Sprite? _notificationBadgeSprite; protected override string AppName => "SIAKImperiumApp"; protected override string AppTitle => "[S.I.A.K] Imperium"; protected override string IconLabel => "Imperium"; protected override string IconFileName => string.Empty; protected override Sprite? IconSprite => ImperiumAssets.LoadAppIconSprite(); protected override EOrientation Orientation => (EOrientation)0; protected override void OnCreatedUI(GameObject container) { //IL_0012: 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_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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) //IL_006a: Unknown result type (might be due to invalid IL or missing references) _instance = this; GameObject val = UIFactory.Panel("ImperiumWebRoot", container.transform, BackgroundColor, (Vector2?)null, (Vector2?)null, true); RectTransform component = val.GetComponent<RectTransform>(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.offsetMin = Vector2.zero; component.offsetMax = Vector2.zero; ((Transform)component).localScale = Vector3.one; RectMask2D val2 = val.AddComponent<RectMask2D>(); ((Behaviour)val2).enabled = true; ImperiumWebAppController imperiumWebAppController = val.AddComponent<ImperiumWebAppController>(); if (!imperiumWebAppController.Initialize(val)) { Object.DestroyImmediate((Object)(object)val); ShowRendererFailure(container, ImperiumWebUiRuntime.Failure); } } internal static void EnsureLauncherVisible() { if (_instance != null) { _iconRoot = ImperiumPhoneLauncherRecovery.Ensure(_iconRoot, "SIAKImperiumApp", "Imperium", ImperiumAssets.LoadAppIconSprite(), OpenFromLauncherAction); } } private static void OpenFromLauncher() { ImperiumApp? instance = _instance; if (instance != null) { ((PhoneApp)instance).OpenApp(); } } private static void ShowRendererFailure(GameObject container, string reason) { //IL_000c: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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) GameObject val = UIFactory.Panel("ImperiumRendererFailure", container.transform, BackgroundColor, (Vector2?)null, (Vector2?)null, true); Text val2 = UIFactory.Text("ImperiumRendererFailureTitle", "Imperium interface unavailable", val.transform, 26, (TextAnchor)4, (FontStyle)1); ((Graphic)val2).color = AccentColor; Stretch(((Component)val2).GetComponent<RectTransform>(), new Vector2(0.1f, 0.58f), new Vector2(0.9f, 0.72f), Vector2.zero, Vector2.zero); Text val3 = UIFactory.Text("ImperiumRendererFailureBody", "The embedded Imperium interface could not start. Reinstall the current S.I.A.K Imperium release and restart Schedule I.\n\n" + (string.IsNullOrWhiteSpace(reason) ? string.Empty : reason), val.transform, 15, (TextAnchor)4, (FontStyle)0); ((Graphic)val3).color = new Color(0.82f, 0.87f, 0.94f); Stretch(((Component)val3).GetComponent<RectTransform>(), new Vector2(0.12f, 0.24f), new Vector2(0.88f, 0.56f), Vector2.zero, Vector2.zero); } private void BuildRetiredLegacyUi(GameObject container) { //IL_000c: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_00a9: 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) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0116: 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_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0169: 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_0173: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_031e: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) //IL_03cd: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_0448: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0470: Unknown result type (might be due to invalid IL or missing references) //IL_047f: Unknown result type (might be due to invalid IL or missing references) //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_0489: Unknown result type (might be due to invalid IL or missing references) //IL_04c5: Unknown result type (might be due to invalid IL or missing references) //IL_04f2: Unknown result type (might be due to invalid IL or missing references) //IL_0534: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Unknown result type (might be due to invalid IL or missing references) //IL_0569: Unknown result type (might be due to invalid IL or missing references) //IL_0592: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05bd: Unknown result type (might be due to invalid IL or missing references) //IL_05c2: Unknown result type (might be due to invalid IL or missing references) //IL_05c7: Unknown result type (might be due to invalid IL or missing references) //IL_05f1: Unknown result type (might be due to invalid IL or missing references) //IL_0600: Unknown result type (might be due to invalid IL or missing references) //IL_0605: Unknown result type (might be due to invalid IL or missing references) //IL_060a: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_06c5: Unknown result type (might be due to invalid IL or missing references) //IL_075e: Unknown result type (might be due to invalid IL or missing references) //IL_07ea: Unknown result type (might be due to invalid IL or missing references) //IL_07fb: Unknown result type (might be due to invalid IL or missing references) //IL_0800: Unknown result type (might be due to invalid IL or missing references) //IL_0805: Unknown result type (might be due to invalid IL or missing references) //IL_080d: Unknown result type (might be due to invalid IL or missing references) //IL_082d: Unknown result type (might be due to invalid IL or missing references) //IL_083c: Unknown result type (might be due to invalid IL or missing references) //IL_0841: Unknown result type (might be