Decompiled source of WindowsXP Repo Edition v1.0.0

EmpressOmniXP.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.Video;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("Omniscye")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("EmpressOmniXP")]
[assembly: AssemblyTitle("EmpressOmniXP")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : 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]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace OmniOS
{
	[BepInPlugin("com.omni.xp", "OmniXP", "5.8.0")]
	public class OmniXPPlugin : BaseUnityPlugin
	{
		public class PhotoFile
		{
			public string Name;

			public Texture2D Texture;
		}

		private enum OSState
		{
			Boot_BIOS,
			Boot_Splash,
			Setup_Welcome,
			Setup_TOS,
			Setup_Login,
			Desktop,
			BSOD,
			RSOD,
			RunningGame
		}

		private enum MSNState
		{
			Login,
			ContactList,
			Chat
		}

		private class MsnContact
		{
			public string Name;

			public string Status;

			public Color StatusColor;

			public string PersonalMessage;

			public List<ChatMessage> History = new List<ChatMessage>();
		}

		private class WireFile
		{
			public string Name;

			public string Author;

			public float SizeMB;

			public float Progress;

			public float TotalTime;

			public float ElapsedTime;

			public bool IsComplete;

			public string Status;

			public int Quality;
		}

		private class Card
		{
			public int Suit;

			public int Rank;

			public bool FaceUp;

			public string GetDisplay()
			{
				string text = ((Rank == 1) ? "A" : ((Rank == 11) ? "J" : ((Rank == 12) ? "Q" : ((Rank == 13) ? "K" : Rank.ToString()))));
				string text2 = ((Suit == 0) ? "♥" : ((Suit == 1) ? "♦" : ((Suit == 2) ? "♣" : "♠")));
				return text + text2;
			}

			public Color GetColor()
			{
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				return (Suit == 0 || Suit == 1) ? Color.red : Color.black;
			}
		}

		private ConfigEntry<bool> _isSetupComplete;

		private ConfigEntry<string> _usernameConfig;

		private ConfigEntry<double> _soulCount;

		private ConfigEntry<string> _limewireDownloads;

		private ConfigEntry<bool> _repoInstalledConfig;

		private ConfigEntry<float> _boconHungerConfig;

		private ConfigEntry<float> _boconHappyConfig;

		private ConfigEntry<float> _boconEnergyConfig;

		private OSState _currentState;

		private bool _showClicker = false;

		private bool _showTerminal = false;

		private bool _showSolitaire = false;

		private bool _showBrowser = false;

		private bool _showFlappy = false;

		private bool _showPhotos = false;

		private bool _showRepo = false;

		private bool _showTetris = false;

		private bool _showNorton = false;

		private bool _showLimewire = false;

		private bool _showMediaPlayer = false;

		private bool _showBocon = false;

		private bool _showSkript = false;

		private bool _showInstaller = false;

		private bool _showMinesweeper = false;

		private bool _showPaint = false;

		private bool _showMSN = false;

		private bool _showGame1 = false;

		private bool _showGame2 = false;

		private List<string> _windowZOrder = new List<string>();

		private bool _startMenuOpen = false;

		private bool _hasDownloadedLinkinPark = false;

		private bool _hasDownloadedBBD = false;

		private bool _hasDownloadedSkript = false;

		private bool _virusActive = false;

		private bool _hasGame1 = false;

		private bool _hasGame2 = false;

		private bool _videoIsReady = false;

		private string _videoError = "";

		private Texture2D _texBliss;

		private Texture2D _texLake;

		private Texture2D _texXPBlue;

		private Texture2D _texXPBlueGrad;

		private Texture2D _texXPGreen;

		private Texture2D _texXPCream;

		private Texture2D _texXPRed;

		private Texture2D _texWhite;

		private Texture2D _texBlack;

		private Texture2D _texBSOD;

		private Texture2D _texRSOD;

		private Texture2D _texIconGeneric;

		private Texture2D _texIconTrash;

		private Texture2D _texIconSolitaire;

		private Texture2D _texIconBrowser;

		private Texture2D _texIconFlappy;

		private Texture2D _texIconPhotos;

		private Texture2D _texIconRepo;

		private Texture2D _texIconTetris;

		private Texture2D _texIconFolder;

		private Texture2D _texIconNorton;

		private Texture2D _texIconLimewire;

		private Texture2D _texIconHDD;

		private Texture2D _texIconLinkinPark;

		private Texture2D _texIconSouls;

		private Texture2D _texIconCMD;

		private Texture2D _texIconBBD;

		private Texture2D _texIconSkript;

		private Texture2D _texIconFitGirl;

		private Texture2D _texFitGirlFace;

		private Texture2D _texIconMine;

		private Texture2D _texIconPaint;

		private Texture2D _texIconMSN;

		private Texture2D _texIconGame1;

		private Texture2D _texIconGame2;

		private AudioSource _audioSource;

		private AudioClip _startupClip;

		private AudioClip _sfxTMove;

		private AudioClip _sfxTRotate;

		private AudioClip _sfxTLine;

		private AudioClip _sfxTDrop;

		private AudioClip _sfxTOver;

		private AudioClip _installerSong;

		private bool _hasPlayedStartup = false;

		private VideoPlayer _videoPlayer;

		private RenderTexture _videoTexture;

		private float _bootTimer = 0f;

		private string _bootLog = "";

		private float _lastClickTime = 0f;

		private string _inputUsername = "Admin";

		private Vector2 _scrollPos;

		private double _currentSouls = 0.0;

		private double _clickPower = 1.0;

		private string _termInput = "";

		private string _termLog = "Microsoft Windows XP [Version 5.1.2600]\n(C) Copyright 1985-2001 Microsoft Corp.\n";

		private List<PhotoFile> _photoFiles = new List<PhotoFile>();

		private PhotoFile _openedPhoto = null;

		private Vector2 _photoScroll = Vector2.zero;

		private string _browserUrl = "[https://www.google.com](https://www.google.com)";

		private string _browserInput = "";

		private WWW _browserWWW;

		private Texture2D _browserTex;

		private RenderTexture _repoTex;

		private Rect _repoRect = new Rect(100f, 50f, 660f, 525f);

		private GUIStyle _styleDesktopIcon;

		private GUIStyle _styleWindowHeader;

		private GUIStyle _styleStartBtn;

		private GUIStyle _styleCard;

		private GUIStyle _styleTaskbarClock;

		private GUIStyle _styleFolderIcon;

		private Vector2 _windowPosOffset;

		private string _draggedWindowKey = null;

		private Rect _clickerRect = new Rect(100f, 50f, 350f, 400f);

		private Rect _terminalRect = new Rect(400f, 100f, 500f, 350f);

		private Rect _solitaireRect = new Rect(150f, 80f, 700f, 500f);

		private Rect _browserRect = new Rect(200f, 100f, 800f, 600f);

		private Rect _flappyRect = new Rect(300f, 150f, 400f, 600f);

		private Rect _photosRect = new Rect(250f, 100f, 600f, 500f);

		private Rect _tetrisRect = new Rect(400f, 100f, 350f, 600f);

		private Rect _nortonRect = new Rect(200f, 200f, 500f, 400f);

		private Rect _limewireRect = new Rect(150f, 100f, 800f, 550f);

		private Rect _mediaPlayerRect = new Rect(150f, 100f, 640f, 540f);

		private Rect _boconRect = new Rect(250f, 150f, 300f, 400f);

		private Rect _skriptRect = new Rect(100f, 50f, 800f, 600f);

		private Rect _installerRect = new Rect(200f, 150f, 600f, 400f);

		private Rect _mineRect = new Rect(300f, 200f, 300f, 400f);

		private Rect _paintRect = new Rect(150f, 100f, 600f, 500f);

		private Rect _msnRect = new Rect(200f, 100f, 300f, 500f);

		private Rect _game1Rect = new Rect(300f, 200f, 300f, 200f);

		private Rect _game2Rect = new Rect(300f, 200f, 300f, 300f);

		private float _installTimer = 0f;

		private bool _installerMusicEnabled = true;

		private Dictionary<string, byte[]> _assetCache = new Dictionary<string, byte[]>();

		private float _boconHunger;

		private float _boconHappy;

		private float _boconEnergy;

		private float _boconSaveTimer = 0f;

		private bool _flappyGameActive = false;

		private bool _flappyWaitingForSpace = false;

		private float _flappyY = 300f;

		private float _flappyVel = 0f;

		private float _pipeX = Screen.width;

		private float _pipeGapY = 200f;

		private bool _flappyDead = false;

		private int[,] _mineGrid;

		private bool[,] _mineRevealed;

		private bool[,] _mineFlagged;

		private bool _mineGameOver;

		private bool _mineWin;

		private int _mineRows = 9;

		private int _mineCols = 9;

		private int _totalMines = 10;

		private Texture2D _texMineFlag;

		private Texture2D _texMineBomb;

		private Texture2D _paintTexture;

		private Color _paintColor = Color.black;

		private float _paintBrushSize = 1f;

		private Vector2 _lastPaintPos;

		private bool _isPainting = false;

		private int _g1Target = 0;

		private string _g1Input = "";

		private string _g1Msg = "I'm thinking of a number 1-100.";

		private string[] _g2Board = new string[9];

		private bool _g2XTurn = true;

		private string _g2Winner = "";

		private MSNState _msnState = MSNState.Login;

		private string _msnEmail = "";

		private string _msnPassword = "";

		private string _msnTitle = "MSN Messenger";

		private Vector2 _msnScrollPos;

		private List<MsnContact> _msnContacts = new List<MsnContact>();

		private MsnContact _currentChatContact;

		private string _msnChatInput = "";

		private ChatEngine _chatEngine;

		private bool _installerMusicStarted = false;

		private bool _nortonScanning = false;

		private float _nortonProgress = 0f;

		private string _nortonCurrentFile = "";

		private float _nortonFileTimer = 0f;

		private string[] _nortonFakePaths = new string[6] { "C:\\Windows\\System32\\drivers\\", "C:\\Program Files\\OmniScythe\\", "C:\\Users\\Admin\\AppData\\Local\\", "HKLM\\SOFTWARE\\Microsoft\\", "C:\\Windows\\Fonts\\", "D:\\Backups\\Souls\\" };

		private string[] _nortonFakeFiles = new string[12]
		{
			"kernel32.dll", "user32.dll", "soul_driver.sys", "doom_tracker.log", "winlogon.exe", "svchost.exe", "explorer.exe", "not_a_virus.vbs", "hal.dll", "ntoskrnl.exe",
			"registry_hive.dat", "memory_dump.bin"
		};

		private List<string> _nortonLog = new List<string>();

		private Vector2 _nortonScroll;

		private List<WireFile> _wireFiles = new List<WireFile>();

		private Vector2 _wireScroll;

		private bool _wireInitialized = false;

		private RenderTexture _skriptRT;

		private GameObject _skriptRoot;

		private Camera _skriptCam;

		private List<GameObject> _skriptEnemies = new List<GameObject>();

		private float _skriptSpawnTimer = 0f;

		private int _skriptScore = 0;

		private bool _skriptInMenu = true;

		private bool _skriptGameOver = false;

		private List<Card> _deck = new List<Card>();

		private List<Card>[] _tableau = new List<Card>[7];

		private List<Card>[] _foundations = new List<Card>[4];

		private List<Card> _waste = new List<Card>();

		private Card _selectedCard = null;

		private int _selectedSourceType = -1;

		private int _selectedSourceIndex = -1;

		private int[,] _tGrid = new int[10, 20];

		private bool _tPlaying = false;

		private bool _tGameOver = false;

		private int _tScore = 0;

		private float _tTimer = 0f;

		private float _tStep = 0.5f;

		private int _tPX;

		private int _tPY;

		private int _tPT;

		private int _tPR;

		private Color[] _tColors = (Color[])(object)new Color[8]
		{
			Color.clear,
			Color.cyan,
			Color.yellow,
			new Color(0.5f, 0f, 0.5f),
			Color.green,
			Color.red,
			Color.blue,
			new Color(1f, 0.5f, 0f)
		};

		private readonly int[][][,] _tShapes = new int[8][][,]
		{
			null,
			new int[2][,]
			{
				new int[4, 4]
				{
					{ 0, 0, 0, 0 },
					{ 1, 1, 1, 1 },
					{ 0, 0, 0, 0 },
					{ 0, 0, 0, 0 }
				},
				new int[4, 4]
				{
					{ 0, 0, 1, 0 },
					{ 0, 0, 1, 0 },
					{ 0, 0, 1, 0 },
					{ 0, 0, 1, 0 }
				}
			},
			new int[1][,] { new int[2, 2]
			{
				{ 1, 1 },
				{ 1, 1 }
			} },
			new int[4][,]
			{
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 1, 1, 1 },
					{ 0, 0, 0 }
				},
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 0, 1, 1 },
					{ 0, 1, 0 }
				},
				new int[3, 3]
				{
					{ 0, 0, 0 },
					{ 1, 1, 1 },
					{ 0, 1, 0 }
				},
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 1, 1, 0 },
					{ 0, 1, 0 }
				}
			},
			new int[2][,]
			{
				new int[3, 3]
				{
					{ 0, 1, 1 },
					{ 1, 1, 0 },
					{ 0, 0, 0 }
				},
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 0, 1, 1 },
					{ 0, 0, 1 }
				}
			},
			new int[2][,]
			{
				new int[3, 3]
				{
					{ 1, 1, 0 },
					{ 0, 1, 1 },
					{ 0, 0, 0 }
				},
				new int[3, 3]
				{
					{ 0, 0, 1 },
					{ 0, 1, 1 },
					{ 0, 1, 0 }
				}
			},
			new int[4][,]
			{
				new int[3, 3]
				{
					{ 1, 0, 0 },
					{ 1, 1, 1 },
					{ 0, 0, 0 }
				},
				new int[3, 3]
				{
					{ 0, 1, 1 },
					{ 0, 1, 0 },
					{ 0, 1, 0 }
				},
				new int[3, 3]
				{
					{ 0, 0, 0 },
					{ 1, 1, 1 },
					{ 0, 0, 1 }
				},
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 0, 1, 0 },
					{ 1, 1, 0 }
				}
			},
			new int[4][,]
			{
				new int[3, 3]
				{
					{ 0, 0, 1 },
					{ 1, 1, 1 },
					{ 0, 0, 0 }
				},
				new int[3, 3]
				{
					{ 0, 1, 0 },
					{ 0, 1, 0 },
					{ 0, 1, 1 }
				},
				new int[3, 3]
				{
					{ 0, 0, 0 },
					{ 1, 1, 1 },
					{ 1, 0, 0 }
				},
				new int[3, 3]
				{
					{ 1, 1, 0 },
					{ 0, 1, 0 },
					{ 0, 1, 0 }
				}
			}
		};

		private void Awake()
		{
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Expected O, but got Unknown
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			Time.timeScale = 0f;
			_isSetupComplete = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "SetupComplete", false, (ConfigDescription)null);
			_usernameConfig = ((BaseUnityPlugin)this).Config.Bind<string>("General", "Username", "Admin", (ConfigDescription)null);
			_soulCount = ((BaseUnityPlugin)this).Config.Bind<double>("GameData", "SoulsHarvested", 0.0, (ConfigDescription)null);
			_limewireDownloads = ((BaseUnityPlugin)this).Config.Bind<string>("GameData", "LimewireDownloads", "", (ConfigDescription)null);
			_repoInstalledConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("GameData", "RepoInstalled", false, (ConfigDescription)null);
			_boconHungerConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Bocon", "Hunger", 100f, (ConfigDescription)null);
			_boconHappyConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Bocon", "Happy", 100f, (ConfigDescription)null);
			_boconEnergyConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Bocon", "Energy", 100f, (ConfigDescription)null);
			_currentSouls = _soulCount.Value;
			_audioSource = ((Component)this).gameObject.AddComponent<AudioSource>();
			_audioSource.playOnAwake = false;
			_videoTexture = new RenderTexture(640, 480, 16, (RenderTextureFormat)0);
			_videoTexture.Create();
			RenderTexture.active = _videoTexture;
			GL.Clear(true, true, Color.black);
			RenderTexture.active = null;
			SetupVideoPlayer();
			GenerateProceduralAssets();
			((MonoBehaviour)this).StartCoroutine(LoadExternalAssets());
			InitSolitaire();
			InitLimewire();
			LoadPhotos();
			InitBocon();
			InitMinesweeper();
			InitPaint();
			InitMSN();
			if (_isSetupComplete.Value)
			{
				_currentState = OSState.Boot_BIOS;
				_bootLog = "Memory Test: 640K OK\nPrimary Master: OMNI-HD 666GB\n";
			}
			else
			{
				_currentState = OSState.Boot_BIOS;
				_bootLog = "BIOS DATE 06/06/06 18:00:00 VER 1.0\n";
			}
		}

		public void ActivateVirus()
		{
			_virusActive = true;
		}

		public void ActivateGame1()
		{
			_hasGame1 = true;
		}

		public void ActivateGame2()
		{
			_hasGame2 = true;
		}

		private void SetupVideoPlayer()
		{
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Expected O, but got Unknown
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			_videoPlayer = ((Component)this).gameObject.AddComponent<VideoPlayer>();
			_videoPlayer.playOnAwake = false;
			_videoPlayer.isLooping = true;
			_videoPlayer.renderMode = (VideoRenderMode)2;
			_videoPlayer.targetTexture = _videoTexture;
			_videoPlayer.audioOutputMode = (VideoAudioOutputMode)1;
			_videoPlayer.SetTargetAudioSource((ushort)0, _audioSource);
			_videoPlayer.skipOnDrop = true;
			_videoPlayer.waitForFirstFrame = true;
			_videoPlayer.errorReceived += (ErrorEventHandler)delegate(VideoPlayer vp, string msg)
			{
				_videoError = msg;
				Debug.LogError((object)("OmniXP Video Error: " + msg));
			};
			_videoPlayer.prepareCompleted += (EventHandler)delegate
			{
				_videoIsReady = true;
			};
		}

		private void OpenWindow(string key)
		{
			if (!_windowZOrder.Contains(key))
			{
				_windowZOrder.Add(key);
			}
			else
			{
				_windowZOrder.Remove(key);
				_windowZOrder.Add(key);
			}
			switch (key)
			{
			case "SoulHarvester":
				_showClicker = true;
				break;
			case "CMD":
				_showTerminal = true;
				break;
			case "Solitaire":
				_showSolitaire = true;
				break;
			case "Browser":
				_showBrowser = true;
				break;
			case "Flappy":
				_showFlappy = true;
				break;
			case "Photos":
				_showPhotos = true;
				break;
			case "Tetris":
				_showTetris = true;
				break;
			case "Norton":
				_showNorton = true;
				break;
			case "Limewire":
				_showLimewire = true;
				break;
			case "Media":
				_showMediaPlayer = true;
				break;
			case "Bocon":
				_showBocon = true;
				break;
			case "Skript":
				_showSkript = true;
				break;
			case "Installer":
				_showInstaller = true;
				break;
			case "Minesweeper":
				_showMinesweeper = true;
				break;
			case "Paint":
				_showPaint = true;
				break;
			case "MSN":
				_showMSN = true;
				break;
			case "Game1":
				_showGame1 = true;
				InitGame1();
				break;
			case "Game2":
				_showGame2 = true;
				InitGame2();
				break;
			}
		}

		private void BringToFront(string key)
		{
			if (_windowZOrder.Contains(key))
			{
				_windowZOrder.Remove(key);
				_windowZOrder.Add(key);
			}
		}

		private void Update()
		{
			if (_currentState == OSState.RunningGame)
			{
				if (Time.timeScale == 0f)
				{
					Time.timeScale = 1f;
				}
				return;
			}
			Time.timeScale = 0f;
			Cursor.visible = true;
			Cursor.lockState = (CursorLockMode)0;
			if (_currentState == OSState.BSOD || _currentState == OSState.RSOD)
			{
				return;
			}
			if (_showInstaller)
			{
				UpdateInstaller();
			}
			if (_currentState == OSState.Boot_BIOS)
			{
				_bootTimer += Time.unscaledDeltaTime;
				if (Random.value > 0.92f)
				{
					_bootLog = _bootLog + "\nLoading Driver: " + Guid.NewGuid().ToString().Substring(0, 8) + ".sys ... OK";
				}
				if (_bootTimer > 3f)
				{
					_bootTimer = 0f;
					_currentState = OSState.Boot_Splash;
				}
			}
			else if (_currentState == OSState.Boot_Splash)
			{
				_bootTimer += Time.unscaledDeltaTime;
				if (_bootTimer > 3f)
				{
					_currentState = (_isSetupComplete.Value ? OSState.Desktop : OSState.Setup_Welcome);
				}
			}
			if (_currentState == OSState.Desktop && !_hasPlayedStartup)
			{
				_hasPlayedStartup = true;
				if ((Object)(object)_startupClip != (Object)null)
				{
					_audioSource.PlayOneShot(_startupClip);
				}
			}
			if (_flappyGameActive && !_flappyDead)
			{
				_flappyVel += 0.25f;
				_flappyY += _flappyVel;
				_pipeX -= 2f;
				if (_pipeX < -100f)
				{
					_pipeX = 400f;
					_pipeGapY = Random.Range(100, 400);
				}
				if ((_pipeX < 100f && _pipeX > 20f && (_flappyY < _pipeGapY - 80f || _flappyY > _pipeGapY + 80f)) || _flappyY > 520f || _flappyY < 0f)
				{
					_flappyDead = true;
				}
			}
			if (_tPlaying && !_tGameOver)
			{
				UpdateTetrisLogic();
			}
			UpdateNorton();
			UpdateLimewire();
			UpdateBocon();
			UpdateSkript();
		}

		private void OnGUI()
		{
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: 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_00cf: 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_00e5: Expected O, but got Unknown
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_0218: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0612: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0819: Unknown result type (might be due to invalid IL or missing references)
			//IL_081e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0981: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0654: Unknown result type (might be due to invalid IL or missing references)
			//IL_0678: Unknown result type (might be due to invalid IL or missing references)
			//IL_067d: Unknown result type (might be due to invalid IL or missing references)
			//IL_071a: Unknown result type (might be due to invalid IL or missing references)
			//IL_073e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0743: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a84: 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_08bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_08df: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_075c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0795: Unknown result type (might be due to invalid IL or missing references)
			//IL_079a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0696: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0921: Unknown result type (might be due to invalid IL or missing references)
			//IL_0926: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0701: Unknown result type (might be due to invalid IL or missing references)
			//IL_093f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0963: Unknown result type (might be due to invalid IL or missing references)
			//IL_0968: Unknown result type (might be due to invalid IL or missing references)
			//IL_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_085b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0860: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a45: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a69: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a6e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a05: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a2f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0879: Unknown result type (might be due to invalid IL or missing references)
			//IL_089d: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_07dc: Unknown result type (might be due to invalid IL or missing references)
			if (_currentState == OSState.RunningGame)
			{
				return;
			}
			if (_styleDesktopIcon == null || _styleFolderIcon == null)
			{
				SetupStyles();
			}
			if (_currentState == OSState.BSOD)
			{
				DrawBSOD();
				return;
			}
			if (_currentState == OSState.RSOD)
			{
				DrawRSOD();
				return;
			}
			if (_currentState == OSState.Boot_BIOS)
			{
				GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), (Texture)(object)_texBlack);
				Rect val = new Rect(20f, 20f, (float)Screen.width, (float)Screen.height);
				string bootLog = _bootLog;
				GUIStyle val2 = new GUIStyle(GUI.skin.label);
				val2.normal.textColor = Color.white;
				GUI.Label(val, bootLog, val2);
				return;
			}
			if (_currentState == OSState.Boot_Splash)
			{
				GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), (Texture)(object)_texBlack);
				DrawCenteredText(Screen.width / 2, Screen.height / 2 - 20, "Windows", 40, Color.white, bold: true);
				DrawCenteredText(Screen.width / 2 + 70, Screen.height / 2 - 35, "XP", 20, new Color(1f, 0.5f, 0f), bold: true);
				float num = _bootTimer / 3f * 200f;
				GUI.DrawTexture(new Rect((float)(Screen.width / 2 - 100), (float)(Screen.height / 2 + 50), 200f, 15f), (Texture)(object)_texWhite);
				GUI.DrawTexture(new Rect((float)(Screen.width / 2 - 98), (float)(Screen.height / 2 + 52), 196f, 11f), (Texture)(object)_texBlack);
				GUI.DrawTexture(new Rect((float)(Screen.width / 2 - 98), (float)(Screen.height / 2 + 52), num, 11f), (Texture)(object)_texXPBlue);
				return;
			}
			Texture2D val3 = (_virusActive ? _texLake : _texBliss);
			GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), (Texture)(object)val3, (ScaleMode)1);
			if (_currentState == OSState.Setup_Welcome || _currentState == OSState.Setup_TOS || _currentState == OSState.Setup_Login)
			{
				DrawXPWindow(new Rect((float)(Screen.width / 2 - 250), (float)(Screen.height / 2 - 200), 500f, 400f), "Windows Setup", DrawSetupContent);
			}
			else
			{
				if (_currentState != OSState.Desktop)
				{
					return;
				}
				DrawDesktopIcons();
				List<string> list = new List<string>(_windowZOrder);
				foreach (string item in list)
				{
					switch (item)
					{
					case "SoulHarvester":
						if (_showClicker)
						{
							_clickerRect = DrawDraggableXPWindow(_clickerRect, "SoulHarvester.exe", item, DrawClickerContent, delegate
							{
								_showClicker = false;
							});
						}
						break;
					case "CMD":
						if (_showTerminal)
						{
							_terminalRect = DrawDraggableXPWindow(_terminalRect, "Command Prompt", item, DrawTerminalContent, delegate
							{
								_showTerminal = false;
							});
						}
						break;
					case "Solitaire":
						if (_showSolitaire)
						{
							_solitaireRect = DrawDraggableXPWindow(_solitaireRect, "Solitaire", item, DrawSolitaireContent, delegate
							{
								_showSolitaire = false;
							});
						}
						break;
					case "Browser":
						if (_showBrowser)
						{
							_browserRect = DrawDraggableXPWindow(_browserRect, "OmniExplorer", item, DrawBrowserContent, delegate
							{
								_showBrowser = false;
							});
						}
						break;
					case "Flappy":
						if (_showFlappy)
						{
							_flappyRect = DrawDraggableXPWindow(_flappyRect, "Flappy Bird", item, DrawFlappyContent, delegate
							{
								_showFlappy = false;
								_flappyGameActive = false;
								_flappyWaitingForSpace = false;
							});
						}
						break;
					case "Photos":
						if (_showPhotos)
						{
							_photosRect = DrawDraggableXPWindow(_photosRect, "C:\\Users\\" + _usernameConfig.Value + "\\My Photos", item, DrawPhotosContent, delegate
							{
								_showPhotos = false;
								_openedPhoto = null;
							});
						}
						break;
					case "Tetris":
						if (_showTetris)
						{
							_tetrisRect = DrawDraggableXPWindow(_tetrisRect, "Oetris", item, DrawTetrisContent, delegate
							{
								_showTetris = false;
								_tPlaying = false;
							});
						}
						break;
					case "Norton":
						if (_showNorton)
						{
							_nortonRect = DrawDraggableXPWindow(_nortonRect, "Norton Antivirus 2003", item, DrawNortonContent, delegate
							{
								_showNorton = false;
							});
						}
						break;
					case "Limewire":
						if (_showLimewire)
						{
							_limewireRect = DrawDraggableXPWindow(_limewireRect, "Limewire PRO", item, DrawLimewireContent, delegate
							{
								_showLimewire = false;
							});
						}
						break;
					case "Media":
						if (_showMediaPlayer)
						{
							_mediaPlayerRect = DrawDraggableXPWindow(_mediaPlayerRect, "Windows Media Player", item, DrawMediaPlayerContent, delegate
							{
								_showMediaPlayer = false;
								_videoPlayer.Stop();
							});
						}
						break;
					case "Bocon":
						if (_showBocon)
						{
							_boconRect = DrawDraggableXPWindow(_boconRect, "Bocon's Barbie DreamHouse", item, DrawBoconContent, delegate
							{
								_showBocon = false;
							});
						}
						break;
					case "Skript":
						if (_showSkript)
						{
							_skriptRect = DrawDraggableXPWindow(_skriptRect, "Skript: AiA", item, DrawSkriptContent, delegate
							{
								CloseSkript();
							});
						}
						break;
					case "Installer":
						if (!_showInstaller)
						{
							break;
						}
						_installerRect = DrawDraggableXPWindow(_installerRect, "R.E.P.O. Installer", item, DrawInstallerContent, delegate
						{
							_showInstaller = false;
							if ((Object)(object)_audioSource.clip == (Object)(object)_installerSong)
							{
								_audioSource.Stop();
							}
						});
						break;
					case "Minesweeper":
						if (_showMinesweeper)
						{
							_mineRect = DrawDraggableXPWindow(_mineRect, "Minesweeper", item, DrawMinesweeperContent, delegate
							{
								_showMinesweeper = false;
							});
						}
						break;
					case "Paint":
						if (_showPaint)
						{
							_paintRect = DrawDraggableXPWindow(_paintRect, "MS Paint", item, DrawPaintContent, delegate
							{
								_showPaint = false;
							});
						}
						break;
					case "MSN":
						if (_showMSN)
						{
							_msnRect = DrawDraggableXPWindow(_msnRect, _msnTitle, item, DrawMSNContent, delegate
							{
								_showMSN = false;
							});
						}
						break;
					case "Game1":
						if (_showGame1)
						{
							_game1Rect = DrawDraggableXPWindow(_game1Rect, "Number Guess", item, DrawGame1Content, delegate
							{
								_showGame1 = false;
							});
						}
						break;
					case "Game2":
						if (_showGame2)
						{
							_game2Rect = DrawDraggableXPWindow(_game2Rect, "TicTacToe", item, DrawGame2Content, delegate
							{
								_showGame2 = false;
							});
						}
						break;
					}
				}
				DrawTaskBar();
			}
		}

		private void OnDestroy()
		{
			Time.timeScale = 1f;
			if ((Object)(object)_skriptRoot != (Object)null)
			{
				Object.Destroy((Object)(object)_skriptRoot);
			}
			if ((Object)(object)_paintTexture != (Object)null)
			{
				Object.Destroy((Object)(object)_paintTexture);
			}
		}

		private void DrawBrowserContent()
		{
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label("Address:", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) });
			_browserInput = GUILayout.TextField(_browserUrl, Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Go", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) }))
			{
				_browserUrl = _browserInput;
				((MonoBehaviour)this).StartCoroutine(LoadWebPage(_browserUrl));
			}
			GUILayout.EndHorizontal();
			if ((Object)(object)_browserTex != (Object)null)
			{
				GUI.DrawTexture(GUILayoutUtility.GetRect(780f, 500f), (Texture)(object)_browserTex, (ScaleMode)2);
			}
			else
			{
				GUILayout.Label("Loading or unsupported (Unity WWW)...", Array.Empty<GUILayoutOption>());
			}
		}

		private IEnumerator LoadWebPage(string url)
		{
			if (!url.StartsWith("http"))
			{
				url = "https://" + url;
			}
			_browserWWW = new WWW(url);
			yield return _browserWWW;
			if (_browserWWW.isDone && string.IsNullOrEmpty(_browserWWW.error) && (Object)(object)_browserWWW.texture != (Object)null)
			{
				_browserTex = _browserWWW.texture;
			}
		}

		private void DrawPhotosContent()
		{
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: Expected O, but got Unknown
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01db: 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_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//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_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			if (_openedPhoto != null)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				if (GUILayout.Button("Back to Folder", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(100f) }))
				{
					_openedPhoto = null;
				}
				GUILayout.FlexibleSpace();
				string name = _openedPhoto.Name;
				GUIStyle val = new GUIStyle(GUI.skin.label)
				{
					fontStyle = (FontStyle)1
				};
				val.normal.textColor = Color.black;
				GUILayout.Label(name, val, Array.Empty<GUILayoutOption>());
				GUILayout.FlexibleSpace();
				GUILayout.EndHorizontal();
				Rect rect = GUILayoutUtility.GetRect(500f, 400f);
				if ((Object)(object)_openedPhoto.Texture != (Object)null)
				{
					float num = (float)((Texture)_openedPhoto.Texture).width / (float)((Texture)_openedPhoto.Texture).height;
					float num2 = ((Rect)(ref rect)).width / num;
					if (num2 > ((Rect)(ref rect)).height)
					{
						num2 = ((Rect)(ref rect)).height;
					}
					float num3 = num2 * num;
					GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + (((Rect)(ref rect)).width - num3) / 2f, ((Rect)(ref rect)).y + (((Rect)(ref rect)).height - num2) / 2f, num3, num2), (Texture)(object)_openedPhoto.Texture);
				}
				return;
			}
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUIStyle val2 = new GUIStyle(GUI.skin.label);
			val2.normal.textColor = Color.black;
			GUILayout.Label("File Edit View Favorites Tools Help", val2, Array.Empty<GUILayoutOption>());
			GUILayout.EndHorizontal();
			GUILayout.Box("", (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.Height(2f),
				GUILayout.ExpandWidth(true)
			});
			_photoScroll = GUILayout.BeginScrollView(_photoScroll, Array.Empty<GUILayoutOption>());
			int num4 = 4;
			int num5 = Mathf.CeilToInt((float)_photoFiles.Count / (float)num4);
			for (int i = 0; i < num5; i++)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				for (int j = 0; j < num4; j++)
				{
					int num6 = i * num4 + j;
					if (num6 >= _photoFiles.Count)
					{
						continue;
					}
					PhotoFile photoFile = _photoFiles[num6];
					GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[2]
					{
						GUILayout.Width(100f),
						GUILayout.Height(100f)
					});
					if (GUILayout.Button("", GUIStyle.none, (GUILayoutOption[])(object)new GUILayoutOption[2]
					{
						GUILayout.Width(80f),
						GUILayout.Height(70f)
					}))
					{
						if (Time.unscaledTime - _lastClickTime < 0.5f)
						{
							_openedPhoto = photoFile;
						}
						_lastClickTime = Time.unscaledTime;
					}
					Rect lastRect = GUILayoutUtility.GetLastRect();
					if ((Object)(object)photoFile.Texture != (Object)null)
					{
						GUI.DrawTexture(lastRect, (Texture)(object)photoFile.Texture, (ScaleMode)2);
					}
					GUILayout.Label(photoFile.Name, _styleFolderIcon ?? GUI.skin.label, Array.Empty<GUILayoutOption>());
					GUILayout.EndVertical();
				}
				GUILayout.EndHorizontal();
			}
			GUILayout.EndScrollView();
		}

		private void DrawRepoContent()
		{
		}

		private void CloseRepo()
		{
		}

		private void DrawClickerContent()
		{
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: 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_0049: Expected O, but got Unknown
			string text = $"Souls: {_currentSouls:F0}";
			GUIStyle val = new GUIStyle(GUI.skin.label)
			{
				fontSize = 18
			};
			val.normal.textColor = Color.black;
			GUILayout.Label(text, val, Array.Empty<GUILayoutOption>());
			GUILayout.Space(10f);
			if (GUILayout.Button("Harvest Soul", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(50f) }))
			{
				_currentSouls += _clickPower;
				_soulCount.Value = _currentSouls;
			}
			GUILayout.Space(10f);
			if (GUILayout.Button($"Install Adware (Upgrade) Cost: {10.0 * _clickPower:F0}", Array.Empty<GUILayoutOption>()) && _currentSouls >= 10.0 * _clickPower)
			{
				_currentSouls -= 10.0 * _clickPower;
				_clickPower *= 2.0;
			}
		}

		private void DrawTerminalContent()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Expected O, but got Unknown
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Invalid comparison between Unknown and I4
			GUI.backgroundColor = Color.black;
			string termLog = _termLog;
			GUIStyle val = new GUIStyle(GUI.skin.textArea);
			val.normal.textColor = Color.white;
			GUILayout.TextArea(termLog, val, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.ExpandHeight(true) });
			GUI.backgroundColor = Color.white;
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label("C:\\Users\\" + _usernameConfig.Value + ">", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(120f) });
			_termInput = GUILayout.TextField(_termInput, Array.Empty<GUILayoutOption>());
			if (Event.current.isKey && (int)Event.current.keyCode == 13 && _termInput.Length > 0)
			{
				string text = _termInput.ToUpper().Trim();
				_termLog = _termLog + "\nC:\\Users\\" + _usernameConfig.Value + "> " + _termInput;
				switch (text)
				{
				case "HELP":
					_termLog += "\nCOMMANDS: HELP, CLS, SOULS, EXIT, REPO";
					break;
				case "CLS":
					_termLog = "";
					break;
				case "SOULS":
					_termLog += $"\nTotal Souls: {_currentSouls}";
					break;
				case "EXIT":
					_showTerminal = false;
					break;
				case "REPO":
					LaunchGame();
					break;
				default:
					_termLog = _termLog + "\n'" + text + "' is not recognized.";
					break;
				}
				_termInput = "";
				Event.current.Use();
			}
			GUILayout.EndHorizontal();
		}

		private void DrawMediaPlayerContent()
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: Expected O, but got Unknown
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: 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_00df: 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_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: 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_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0183: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a1: Expected O, but got Unknown
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Expected O, but got Unknown
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUIStyle val = new GUIStyle(GUI.skin.label);
			val.normal.textColor = Color.black;
			GUILayout.Label("File View Play Tools Help", val, Array.Empty<GUILayoutOption>());
			GUILayout.EndHorizontal();
			GUILayout.Box("", (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.Height(2f),
				GUILayout.ExpandWidth(true)
			});
			Rect rect = GUILayoutUtility.GetRect(640f, 400f);
			GUI.DrawTexture(rect, (Texture)(object)_texBlack);
			if ((Object)(object)_videoTexture != (Object)null)
			{
				GUI.DrawTexture(rect, (Texture)(object)_videoTexture, (ScaleMode)2);
				if (!string.IsNullOrEmpty(_videoError))
				{
					Rect val2 = new Rect(((Rect)(ref rect)).x + 20f, ((Rect)(ref rect)).y + 100f, 600f, 100f);
					string text = "MEDIA ERROR:\n" + _videoError;
					GUIStyle val3 = new GUIStyle(GUI.skin.label)
					{
						alignment = (TextAnchor)4
					};
					val3.normal.textColor = Color.red;
					val3.fontSize = 16;
					GUI.Label(val2, text, val3);
				}
				else if (!_videoIsReady)
				{
					Rect val4 = new Rect(((Rect)(ref rect)).center.x - 50f, ((Rect)(ref rect)).center.y - 10f, 100f, 20f);
					GUIStyle val5 = new GUIStyle(GUI.skin.label)
					{
						alignment = (TextAnchor)4
					};
					val5.normal.textColor = Color.white;
					GUI.Label(val4, "Buffering...", val5);
				}
			}
			GUILayout.Space(5f);
			GUILayout.Box("", (GUILayoutOption[])(object)new GUILayoutOption[2]
			{
				GUILayout.Height(2f),
				GUILayout.ExpandWidth(true)
			});
			GUILayout.Space(5f);
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("||", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) }))
			{
				_videoPlayer.Pause();
			}
			if (GUILayout.Button(">", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) }) && _videoIsReady)
			{
				_videoPlayer.Play();
			}
			if (GUILayout.Button("[]", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(40f) }))
			{
				_videoPlayer.Stop();
			}
			GUILayout.FlexibleSpace();
			GUIStyle val6 = new GUIStyle(GUI.skin.label);
			val6.normal.textColor = Color.black;
			GUILayout.Label("Now Playing: LinkinPark", val6, Array.Empty<GUILayoutOption>());
			GUILayout.EndHorizontal();
		}

		private void LaunchGame()
		{
			((BaseUnityPlugin)this).Config.Save();
			_currentState = OSState.RunningGame;
			Time.timeScale = 1f;
		}

		private void LoadAssetsFromBin()
		{
			_assetCache.Clear();
			string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			string path = Path.Combine(directoryName, "omnixp.bin");
			if (!File.Exists(path))
			{
				return;
			}
			try
			{
				using FileStream fileStream = File.OpenRead(path);
				using BinaryReader binaryReader = new BinaryReader(fileStream);
				string @string = Encoding.ASCII.GetString(binaryReader.ReadBytes(4));
				if (@string != "XORB")
				{
					return;
				}
				binaryReader.ReadInt32();
				string s = "e1911";
				byte[] bytes = Encoding.UTF8.GetBytes(s);
				while (fileStream.Position < fileStream.Length)
				{
					int count = binaryReader.ReadInt32();
					string string2 = Encoding.UTF8.GetString(binaryReader.ReadBytes(count));
					long num = binaryReader.ReadInt64();
					byte[] array = binaryReader.ReadBytes((int)num);
					for (int i = 0; i < array.Length; i++)
					{
						array[i] ^= bytes[i % bytes.Length];
					}
					if (!_assetCache.ContainsKey(string2))
					{
						_assetCache.Add(string2, array);
					}
				}
			}
			catch (Exception ex)
			{
				Debug.LogError((object)("OmniXP: Bin Load Error: " + ex.Message));
			}
		}

		private byte[] GetBytesFromCache(string targetFilename)
		{
			if (_assetCache.ContainsKey(targetFilename))
			{
				return _assetCache[targetFilename];
			}
			foreach (KeyValuePair<string, byte[]> item in _assetCache)
			{
				string fileName = Path.GetFileName(item.Key);
				if (string.Equals(fileName, targetFilename, StringComparison.OrdinalIgnoreCase))
				{
					return item.Value;
				}
			}
			return null;
		}

		private Texture2D LoadCustomImage(string filename)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Expected O, but got Unknown
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			byte[] bytesFromCache = GetBytesFromCache(filename);
			if (bytesFromCache != null)
			{
				Texture2D val = new Texture2D(2, 2);
				if (ImageConversion.LoadImage(val, bytesFromCache))
				{
					return val;
				}
			}
			string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			string path = Path.Combine(directoryName, filename);
			if (File.Exists(path))
			{
				byte[] array = File.ReadAllBytes(path);
				Texture2D val2 = new Texture2D(2, 2);
				if (ImageConversion.LoadImage(val2, array))
				{
					return val2;
				}
			}
			return null;
		}

		private string ExtractToTempFile(string filename)
		{
			byte[] bytesFromCache = GetBytesFromCache(filename);
			string path = filename;
			if (bytesFromCache == null)
			{
				string[] array = new string[3] { ".mp4", ".webm", ".ogg" };
				string[] array2 = array;
				foreach (string text in array2)
				{
					bytesFromCache = GetBytesFromCache(filename + text);
					if (bytesFromCache != null)
					{
						path = filename + text;
						break;
					}
				}
			}
			if (bytesFromCache != null)
			{
				string text2 = Path.Combine(Application.temporaryCachePath, Path.GetFileName(path));
				File.WriteAllBytes(text2, bytesFromCache);
				return text2;
			}
			string directoryName = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			string text3 = Path.Combine(directoryName, filename);
			if (File.Exists(text3))
			{
				return text3;
			}
			return null;
		}

		private IEnumerator LoadExternalAssets()
		{
			LoadAssetsFromBin();
			_texBliss = LoadCustomImage("wallpaper.png");
			_texLake = LoadCustomImage("lake.png");
			_texIconFlappy = LoadCustomImage("flappy.png");
			_texIconTrash = LoadCustomImage("bin.png");
			_texIconSolitaire = LoadCustomImage("cards.png");
			_texIconBrowser = LoadCustomImage("internet.png");
			_texIconRepo = LoadCustomImage("Repo.png");
			_texIconTetris = LoadCustomImage("tetris.png");
			_texIconFolder = LoadCustomImage("folder.png");
			_texIconNorton = LoadCustomImage("NortonAV.png");
			_texIconLimewire = LoadCustomImage("Limewire.png");
			_texIconHDD = LoadCustomImage("hdd.png");
			_texIconLinkinPark = LoadCustomImage("LinkinPark.png");
			_texIconSouls = LoadCustomImage("Souls.png");
			_texIconCMD = LoadCustomImage("CMD.png");
			_texIconBBD = LoadCustomImage("BBD.png");
			_texIconSkript = LoadCustomImage("Skript.png");
			_texIconFitGirl = LoadCustomImage("fitgirl.png");
			_texFitGirlFace = LoadCustomImage("face.png");
			_texIconMine = LoadCustomImage("mine.png");
			_texIconPaint = LoadCustomImage("paint.png");
			_texIconMSN = LoadCustomImage("msn.png");
			_texIconGame1 = LoadCustomImage("game1.png");
			_texIconGame2 = LoadCustomImage("game2.png");
			string audioPath = ExtractToTempFile("startup.ogg");
			if (audioPath != null)
			{
				UnityWebRequest uwr2 = UnityWebRequestMultimedia.GetAudioClip("file://" + audioPath, (AudioType)14);
				try
				{
					yield return uwr2.SendWebRequest();
					if ((int)uwr2.result == 1)
					{
						_startupClip = DownloadHandlerAudioClip.GetContent(uwr2);
					}
				}
				finally
				{
					((IDisposable)uwr2)?.Dispose();
				}
			}
			string songPath = ExtractToTempFile("song.ogg");
			if (songPath != null)
			{
				UnityWebRequest uwr = UnityWebRequestMultimedia.GetAudioClip("file://" + songPath, (AudioType)14);
				try
				{
					yield return uwr.SendWebRequest();
					if ((int)uwr.result == 1)
					{
						_installerSong = DownloadHandlerAudioClip.GetContent(uwr);
					}
					else
					{
						Debug.LogError((object)("OmniXP: Failed to load song.ogg: " + uwr.error));
					}
				}
				finally
				{
					((IDisposable)uwr)?.Dispose();
				}
			}
			string videoPath = ExtractToTempFile("LinkinPark");
			if (videoPath != null)
			{
				_videoPlayer.source = (VideoSource)1;
				_videoPlayer.url = "file://" + videoPath;
				_videoPlayer.Prepare();
			}
		}

		private void LoadPhotos()
		{
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Expected O, but got Unknown
			_photoFiles.Clear();
			List<string> list = (from k in _assetCache.Keys
				where k.EndsWith(".png", StringComparison.OrdinalIgnoreCase)
				where char.IsDigit(Path.GetFileName(k)[0])
				orderby k
				select k).ToList();
			foreach (string item in list)
			{
				byte[] array = _assetCache[item];
				Texture2D val = new Texture2D(2, 2);
				if (ImageConversion.LoadImage(val, array))
				{
					_photoFiles.Add(new PhotoFile
					{
						Name = Path.GetFileName(item),
						Texture = val
					});
				}
			}
		}

		private AudioClip MakeTone(string name, float freq, float dur, float vol = 0.5f)
		{
			int num = (int)(44100f * dur);
			float[] array = new float[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = Mathf.Sin(MathF.PI * 2f * freq * (float)i / 44100f) * vol;
			}
			AudioClip val = AudioClip.Create(name, num, 1, 44100, false);
			val.SetData(array, 0);
			return val;
		}

		private void GenerateProceduralAssets()
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Expected O, but got Unknown
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Expected O, but got Unknown
			//IL_0032: 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_0050: Expected O, but got Unknown
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Expected O, but got Unknown
			//IL_007e: 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_009c: Expected O, but got Unknown
			//IL_00a4: 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_00c2: Expected O, but got Unknown
			//IL_00ca: 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_00e8: Expected O, but got Unknown
			//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Expected O, but got Unknown
			//IL_0146: 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_0160: 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_019a: Expected O, but got Unknown
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Expected O, but got Unknown
			//IL_01c1: 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_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_0384: 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_03e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0404: Unknown result type (might be due to invalid IL or missing references)
			//IL_0415: Unknown result type (might be due to invalid IL or missing references)
			//IL_0426: Unknown result type (might be due to invalid IL or missing references)
			//IL_0446: Unknown result type (might be due to invalid IL or missing references)
			//IL_0466: Unknown result type (might be due to invalid IL or missing references)
			//IL_0486: Unknown result type (might be due to invalid IL or missing references)
			//IL_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02af: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: 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_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0301: Unknown result type (might be due to invalid IL or missing references)
			_texWhite = TexExt.WithColor(new Texture2D(1, 1), Color.white);
			_texBlack = TexExt.WithColor(new Texture2D(1, 1), Color.black);
			_texBSOD = TexExt.WithColor(new Texture2D(1, 1), new Color(0f, 0f, 0.5f));
			_texRSOD = TexExt.WithColor(new Texture2D(1, 1), new Color(0.6f, 0f, 0f));
			_texXPBlue = TexExt.WithColor(new Texture2D(1, 1), new Color(0.14f, 0.35f, 0.86f));
			_texXPGreen = TexExt.WithColor(new Texture2D(1, 1), new Color(0.23f, 0.72f, 0.28f));
			_texXPCream = TexExt.WithColor(new Texture2D(1, 1), new Color(0.92f, 0.91f, 0.84f));
			_texXPRed = TexExt.WithColor(new Texture2D(1, 1), new Color(0.9f, 0.2f, 0.2f));
			_texXPBlueGrad = new Texture2D(1, 32);
			for (int i = 0; i < 32; i++)
			{
				float num = (float)i / 31f;
				_texXPBlueGrad.SetPixel(0, i, Color.Lerp(new Color(0f, 0.2f, 0.8f), new Color(0.3f, 0.6f, 1f), num));
			}
			_texXPBlueGrad.Apply();
			_texBliss = new Texture2D(256, 256);
			for (int j = 0; j < 256; j++)
			{
				for (int k = 0; k < 256; k++)
				{
					float num2 = (float)j / 256f;
					Color val = Color.Lerp(new Color(0.4f, 0.7f, 1f), new Color(0f, 0.3f, 0.8f), num2);
					if (j > 150)
					{
						((Color)(ref val))..ctor(0.1f, 0.6f, 0.1f);
					}
					_texBliss.SetPixel(k, j, val);
				}
			}
			_texBliss.Apply();
			_texLake = new Texture2D(256, 256);
			for (int l = 0; l < 256; l++)
			{
				for (int m = 0; m < 256; m++)
				{
					float num3 = (float)l / 256f;
					Color val2 = Color.Lerp(new Color(0.2f, 0f, 0f), new Color(0.5f, 0f, 0f), num3);
					if (l > 160)
					{
						val2 = Color.Lerp(new Color(0.6f, 0f, 0f), new Color(0.1f, 0f, 0f), (float)(l - 160) / 96f);
					}
					_texLake.SetPixel(m, l, val2);
				}
			}
			_texLake.Apply();
			_texIconGeneric = MakeIcon(new Color(1f, 0.8f, 0f));
			_texIconTrash = MakeIcon(new Color(0.7f, 0.7f, 0.7f));
			_texIconSolitaire = MakeIcon(new Color(0f, 0.6f, 0f));
			_texIconBrowser = MakeIcon(new Color(0f, 0.6f, 1f));
			_texIconFlappy = MakeIcon(new Color(1f, 0.8f, 0f));
			_texIconPhotos = MakeIcon(new Color(1f, 0.4f, 0.8f));
			_texIconRepo = MakeIcon(Color.red);
			_texIconTetris = MakeIcon(Color.cyan);
			_texIconFolder = MakeIcon(new Color(0.95f, 0.85f, 0.3f));
			_texIconGame1 = MakeIcon(new Color(0.5f, 0f, 0.5f));
			_texIconGame2 = MakeIcon(new Color(0f, 0.5f, 0.5f));
			_sfxTMove = MakeTone("t_move", 400f, 0.05f);
			_sfxTRotate = MakeTone("t_rot", 600f, 0.05f);
			_sfxTDrop = MakeTone("t_drop", 150f, 0.1f);
			_sfxTLine = MakeTone("t_line", 900f, 0.2f);
			_sfxTOver = MakeTone("t_over", 100f, 0.5f);
		}

		private Texture2D MakeIcon(Color c)
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = new Texture2D(48, 48);
			for (int i = 0; i < 2304; i++)
			{
				val.SetPixel(i % 48, i / 48, Color.clear);
			}
			for (int j = 6; j < 42; j++)
			{
				for (int k = 6; k < 42; k++)
				{
					val.SetPixel(k, j, c);
				}
			}
			val.Apply();
			return val;
		}

		private void InitBocon()
		{
			_boconHunger = _boconHungerConfig.Value;
			_boconHappy = _boconHappyConfig.Value;
			_boconEnergy = _boconEnergyConfig.Value;
		}

		private void UpdateBocon()
		{
			if (_hasDownloadedBBD)
			{
				float num = Time.unscaledDeltaTime * 0.5f;
				_boconHunger = Mathf.Max(0f, _boconHunger - num);
				_boconHappy = Mathf.Max(0f, _boconHappy - num * 0.8f);
				_boconEnergy = Mathf.Max(0f, _boconEnergy - num * 0.3f);
				_boconSaveTimer += Time.unscaledDeltaTime;
				if (_boconSaveTimer > 10f)
				{
					_boconSaveTimer = 0f;
					SaveBocon();
				}
			}
		}

		private void SaveBocon()
		{
			_boconHungerConfig.Value = _boconHunger;
			_boconHappyConfig.Value = _boconHappy;
			_boconEnergyConfig.Value = _boconEnergy;
			((BaseUnityPlugin)this).Config.Save();
		}

		private void DrawBoconContent()
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: 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_005f: 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_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: 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)
			GUILayout.BeginVertical(Array.Empty<GUILayoutOption>());
			Rect rect = GUILayoutUtility.GetRect(200f, 200f);
			GUI.DrawTexture(rect, (Texture)(object)_texWhite);
			Color color = (Color)((_boconHunger < 30f || _boconHappy < 30f) ? Color.gray : new Color(1f, 0.6f, 0.8f));
			GUI.color = color;
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + 50f, ((Rect)(ref rect)).y + 50f, 180f, 150f), (Texture)(object)(_texIconBBD ?? _texIconGeneric), (ScaleMode)2);
			GUI.color = Color.white;
			GUILayout.Space(10f);
			DrawStatBar("Hunger", _boconHunger, Color.red);
			DrawStatBar("Happiness", _boconHappy, Color.green);
			DrawStatBar("Energy", _boconEnergy, Color.yellow);
			GUILayout.Space(10f);
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Feed", Array.Empty<GUILayoutOption>()))
			{
				_boconHunger = Mathf.Min(100f, _boconHunger + 15f);
				_boconEnergy -= 2f;
			}
			if (GUILayout.Button("Play", Array.Empty<GUILayoutOption>()))
			{
				_boconHappy = Mathf.Min(100f, _boconHappy + 15f);
				_boconEnergy -= 5f;
				_boconHunger -= 5f;
			}
			if (GUILayout.Button("Sleep", Array.Empty<GUILayoutOption>()))
			{
				_boconEnergy = Mathf.Min(100f, _boconEnergy + 20f);
				_boconHunger -= 2f;
			}
			GUILayout.EndHorizontal();
			GUILayout.EndVertical();
		}

		private void DrawStatBar(string label, float value, Color c)
		{
			//IL_0030: 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_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.Label(label, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(70f) });
			Rect rect = GUILayoutUtility.GetRect(150f, 20f);
			GUI.DrawTexture(rect, (Texture)(object)_texBlack);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + 1f, ((Rect)(ref rect)).y + 1f, ((Rect)(ref rect)).width - 2f, ((Rect)(ref rect)).height - 2f), (Texture)(object)_texWhite);
			GUI.color = c;
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + 1f, ((Rect)(ref rect)).y + 1f, (((Rect)(ref rect)).width - 2f) * (value / 100f), ((Rect)(ref rect)).height - 2f), (Texture)(object)_texWhite);
			GUI.color = Color.white;
			GUILayout.EndHorizontal();
		}

		private void DrawFlappyContent()
		{
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0165: Unknown result type (might be due to invalid IL or missing references)
			//IL_0179: 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_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Expected O, but got Unknown
			//IL_0251: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Invalid comparison between Unknown and I4
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: 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_01fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_020b: Expected O, but got Unknown
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Invalid comparison between Unknown and I4
			if (!_flappyGameActive && !_flappyWaitingForSpace)
			{
				GUILayout.FlexibleSpace();
				if (GUILayout.Button("Start Game", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Height(50f) }))
				{
					_flappyWaitingForSpace = true;
					_flappyY = 300f;
					_flappyVel = 0f;
					_pipeX = 400f;
					_flappyDead = false;
				}
				GUILayout.FlexibleSpace();
				return;
			}
			Rect rect = GUILayoutUtility.GetRect(380f, 550f);
			GUI.BeginGroup(rect);
			GUI.DrawTexture(new Rect(0f, 0f, 400f, 600f), (Texture)(object)_texXPBlue);
			GUI.DrawTexture(new Rect(80f, _flappyY, 30f, 30f), (Texture)(object)_texIconFlappy);
			GUI.DrawTexture(new Rect(_pipeX, 0f, 60f, _pipeGapY - 80f), (Texture)(object)_texXPGreen);
			GUI.DrawTexture(new Rect(_pipeX, _pipeGapY + 80f, 60f, 600f - _pipeGapY - 80f), (Texture)(object)_texXPGreen);
			if (_flappyWaitingForSpace)
			{
				Rect val = new Rect(50f, 200f, 300f, 50f);
				GUIStyle val2 = new GUIStyle(GUI.skin.label)
				{
					fontSize = 24,
					fontStyle = (FontStyle)1
				};
				val2.normal.textColor = Color.yellow;
				val2.alignment = (TextAnchor)4;
				GUI.Label(val, "PRESS SPACE TO START", val2);
			}
			if (_flappyDead)
			{
				Rect val3 = new Rect(100f, 250f, 200f, 50f);
				GUIStyle val4 = new GUIStyle(GUI.skin.label)
				{
					fontSize = 30
				};
				val4.normal.textColor = Color.red;
				GUI.Label(val3, "Game Over", val4);
				if (GUI.Button(new Rect(120f, 300f, 140f, 40f), "Retry"))
				{
					_flappyGameActive = false;
					_flappyWaitingForSpace = false;
				}
			}
			GUI.EndGroup();
			if ((int)Event.current.type == 4 && (int)Event.current.keyCode == 32)
			{
				if (_flappyWaitingForSpace)
				{
					_flappyWaitingForSpace = false;
					_flappyGameActive = true;
					_flappyVel = -8f;
				}
				else if (_flappyGameActive && !_flappyDead)
				{
					_flappyVel = -8f;
				}
			}
		}

		private void InitMinesweeper()
		{
			//IL_0056: 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)
			_mineGrid = new int[_mineRows, _mineCols];
			_mineRevealed = new bool[_mineRows, _mineCols];
			_mineFlagged = new bool[_mineRows, _mineCols];
			_mineGameOver = false;
			_mineWin = false;
			_texMineFlag = MakeIcon(Color.red);
			_texMineBomb = MakeIcon(Color.black);
			int num = 0;
			while (num < _totalMines)
			{
				int num2 = Random.Range(0, _mineRows);
				int num3 = Random.Range(0, _mineCols);
				if (_mineGrid[num2, num3] != 9)
				{
					_mineGrid[num2, num3] = 9;
					num++;
				}
			}
			for (int i = 0; i < _mineRows; i++)
			{
				for (int j = 0; j < _mineCols; j++)
				{
					if (_mineGrid[i, j] == 9)
					{
						continue;
					}
					int num4 = 0;
					for (int k = -1; k <= 1; k++)
					{
						for (int l = -1; l <= 1; l++)
						{
							if (i + k >= 0 && i + k < _mineRows && j + l >= 0 && j + l < _mineCols && _mineGrid[i + k, j + l] == 9)
							{
								num4++;
							}
						}
					}
					_mineGrid[i, j] = num4;
				}
			}
		}

		private void RevealMine(int r, int c)
		{
			if (r < 0 || r >= _mineRows || c < 0 || c >= _mineCols || _mineRevealed[r, c] || _mineFlagged[r, c])
			{
				return;
			}
			_mineRevealed[r, c] = true;
			if (_mineGrid[r, c] == 9)
			{
				_mineGameOver = true;
			}
			else if (_mineGrid[r, c] == 0)
			{
				for (int i = -1; i <= 1; i++)
				{
					for (int j = -1; j <= 1; j++)
					{
						RevealMine(r + i, c + j);
					}
				}
			}
			CheckMineWin();
		}

		private void CheckMineWin()
		{
			if (_mineGameOver)
			{
				return;
			}
			int num = 0;
			for (int i = 0; i < _mineRows; i++)
			{
				for (int j = 0; j < _mineCols; j++)
				{
					if (!_mineRevealed[i, j])
					{
						num++;
					}
				}
			}
			if (num == _totalMines)
			{
				_mineWin = true;
			}
		}

		private void DrawMinesweeperContent()
		{
			//IL_0053: 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_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Expected O, but got Unknown
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Expected O, but got Unknown
			//IL_020e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: 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)
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("New Game", Array.Empty<GUILayoutOption>()))
			{
				InitMinesweeper();
			}
			string obj = (_mineGameOver ? "GAME OVER" : (_mineWin ? "WINNER!" : "Playing..."));
			GUIStyle val = new GUIStyle(GUI.skin.label);
			val.normal.textColor = Color.black;
			val.fontStyle = (FontStyle)1;
			GUILayout.Label(obj, val, Array.Empty<GUILayoutOption>());
			GUILayout.EndHorizontal();
			GUILayout.Space(5f);
			for (int i = 0; i < _mineRows; i++)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				for (int j = 0; j < _mineCols; j++)
				{
					string text = "";
					if (_mineRevealed[i, j])
					{
						if (_mineGrid[i, j] == 9)
						{
							text = "X";
						}
						else if (_mineGrid[i, j] > 0)
						{
							text = _mineGrid[i, j].ToString();
						}
					}
					else if (_mineFlagged[i, j])
					{
						text = "F";
					}
					GUIStyle val2 = new GUIStyle(GUI.skin.button);
					if (_mineRevealed[i, j])
					{
						val2.normal.background = _texWhite;
						if (_mineGrid[i, j] == 9)
						{
							val2.normal.textColor = Color.red;
						}
						else if (_mineGrid[i, j] == 1)
						{
							val2.normal.textColor = Color.blue;
						}
						else if (_mineGrid[i, j] == 2)
						{
							val2.normal.textColor = new Color(0f, 0.5f, 0f);
						}
						else
						{
							val2.normal.textColor = Color.black;
						}
					}
					else
					{
						val2.normal.textColor = Color.red;
					}
					if (GUILayout.Button(text, val2, (GUILayoutOption[])(object)new GUILayoutOption[2]
					{
						GUILayout.Width(25f),
						GUILayout.Height(25f)
					}) && !_mineGameOver && !_mineWin)
					{
						if (Event.current.button == 0)
						{
							RevealMine(i, j);
						}
						else if (Event.current.button == 1)
						{
							_mineFlagged[i, j] = !_mineFlagged[i, j];
						}
					}
				}
				GUILayout.EndHorizontal();
			}
		}

		private void InitPaint()
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Expected O, but got Unknown
			//IL_0038: 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)
			if ((Object)(object)_paintTexture == (Object)null)
			{
				_paintTexture = new Texture2D(400, 300);
				Color[] array = (Color[])(object)new Color[120000];
				for (int i = 0; i < array.Length; i++)
				{
					array[i] = Color.white;
				}
				_paintTexture.SetPixels(array);
				_paintTexture.Apply();
			}
		}

		private void DrawPaintContent()
		{
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: 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_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: 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_0115: 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_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: 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)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Unknown result type (might be due to invalid IL or missing references)
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0241: 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_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Invalid comparison between Unknown and I4
			//IL_02ac: 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_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bd: 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_02c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Invalid comparison between Unknown and I4
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_0326: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: 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_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_0367: Unknown result type (might be due to invalid IL or missing references)
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.BeginVertical((GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) });
			if (GUILayout.Button("Clr", Array.Empty<GUILayoutOption>()))
			{
				Color[] array = (Color[])(object)new Color[120000];
				for (int i = 0; i < array.Length; i++)
				{
					array[i] = Color.white;
				}
				_paintTexture.SetPixels(array);
				_paintTexture.Apply();
			}
			GUILayout.Space(5f);
			GUI.backgroundColor = ((_paintColor == Color.black) ? Color.gray : Color.white);
			if (GUILayout.Button("Blk", Array.Empty<GUILayoutOption>()))
			{
				_paintColor = Color.black;
			}
			GUI.backgroundColor = ((_paintColor == Color.red) ? Color.gray : Color.white);
			if (GUILayout.Button("Red", Array.Empty<GUILayoutOption>()))
			{
				_paintColor = Color.red;
			}
			GUI.backgroundColor = ((_paintColor == Color.blue) ? Color.gray : Color.white);
			if (GUILayout.Button("Blu", Array.Empty<GUILayoutOption>()))
			{
				_paintColor = Color.blue;
			}
			GUI.backgroundColor = ((_paintColor == Color.green) ? Color.gray : Color.white);
			if (GUILayout.Button("Grn", Array.Empty<GUILayoutOption>()))
			{
				_paintColor = Color.green;
			}
			GUI.backgroundColor = ((_paintColor == Color.white) ? Color.gray : Color.white);
			if (GUILayout.Button("Ers", Array.Empty<GUILayoutOption>()))
			{
				_paintColor = Color.white;
			}
			GUI.backgroundColor = Color.white;
			GUILayout.Space(5f);
			GUILayout.Label("Size", Array.Empty<GUILayoutOption>());
			_paintBrushSize = GUILayout.HorizontalSlider(_paintBrushSize, 1f, 10f, Array.Empty<GUILayoutOption>());
			GUILayout.EndVertical();
			Rect rect = GUILayoutUtility.GetRect(400f, 300f);
			GUI.DrawTexture(rect, (Texture)(object)_paintTexture);
			float num = (float)((Texture)_paintTexture).width / ((Rect)(ref rect)).width;
			float num2 = (float)((Texture)_paintTexture).height / ((Rect)(ref rect)).height;
			if ((int)Event.current.type == 0 && ((Rect)(ref rect)).Contains(Event.current.mousePosition))
			{
				_isPainting = true;
				Vector2 val = Event.current.mousePosition - ((Rect)(ref rect)).position;
				_lastPaintPos = new Vector2(val.x * num, val.y * num2);
				PaintAt(_lastPaintPos);
			}
			else if ((int)Event.current.type == 3 && _isPainting)
			{
				Vector2 val2 = Event.current.mousePosition - ((Rect)(ref rect)).position;
				Vector2 val3 = default(Vector2);
				((Vector2)(ref val3))..ctor(val2.x * num, val2.y * num2);
				if (((Rect)(ref rect)).Contains(Event.current.mousePosition))
				{
					PaintLine(_lastPaintPos, val3);
					_lastPaintPos = val3;
				}
			}
			else if ((int)Event.current.type == 1)
			{
				_isPainting = false;
			}
			GUILayout.EndHorizontal();
		}

		private void PaintAt(Vector2 pos)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			int num = (int)pos.x;
			int num2 = ((Texture)_paintTexture).height - (int)pos.y;
			int num3 = (int)_paintBrushSize;
			for (int i = -num3; i <= num3; i++)
			{
				for (int j = -num3; j <= num3; j++)
				{
					if (num + i >= 0 && num + i < ((Texture)_paintTexture).width && num2 + j >= 0 && num2 + j < ((Texture)_paintTexture).height)
					{
						_paintTexture.SetPixel(num + i, num2 + j, _paintColor);
					}
				}
			}
			_paintTexture.Apply();
		}

		private void PaintLine(Vector2 from, Vector2 to)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			float num = Vector2.Distance(from, to);
			for (float num2 = 0f; num2 <= 1f; num2 += 1f / num)
			{
				PaintAt(Vector2.Lerp(from, to, num2));
			}
		}

		private void InitGame1()
		{
			_g1Target = Random.Range(1, 101);
			_g1Msg = "I'm thinking of a number 1-100.";
			_g1Input = "";
		}

		private void DrawGame1Content()
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			string g1Msg = _g1Msg;
			GUIStyle val = new GUIStyle(GUI.skin.label)
			{
				fontSize = 14,
				alignment = (TextAnchor)4
			};
			val.normal.textColor = Color.black;
			GUILayout.Label(g1Msg, val, Array.Empty<GUILayoutOption>());
			GUILayout.Space(20f);
			GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
			GUILayout.FlexibleSpace();
			_g1Input = GUILayout.TextField(_g1Input, 3, (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(50f) });
			if (GUILayout.Button("Guess", (GUILayoutOption[])(object)new GUILayoutOption[1] { GUILayout.Width(60f) }))
			{
				if (int.TryParse(_g1Input, out var result))
				{
					if (result < _g1Target)
					{
						_g1Msg = "Higher!";
					}
					else if (result > _g1Target)
					{
						_g1Msg = "Lower!";
					}
					else
					{
						_g1Msg = "Correct! You win!";
					}
				}
				_g1Input = "";
			}
			GUILayout.FlexibleSpace();
			GUILayout.EndHorizontal();
			GUILayout.Space(20f);
			if (GUILayout.Button("Reset", Array.Empty<GUILayoutOption>()))
			{
				InitGame1();
			}
		}

		private void InitGame2()
		{
			for (int i = 0; i < 9; i++)
			{
				_g2Board[i] = "";
			}
			_g2XTurn = true;
			_g2Winner = "";
		}

		private void DrawGame2Content()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Expected O, but got Unknown
			if (!string.IsNullOrEmpty(_g2Winner))
			{
				string text = "Winner: " + _g2Winner;
				GUIStyle val = new GUIStyle(GUI.skin.label)
				{
					fontSize = 20,
					alignment = (TextAnchor)4
				};
				val.normal.textColor = Color.red;
				GUILayout.Label(text, val, Array.Empty<GUILayoutOption>());
				if (GUILayout.Button("Play Again", Array.Empty<GUILayoutOption>()))
				{
					InitGame2();
				}
				return;
			}
			string text2 = "Turn: " + (_g2XTurn ? "X" : "O");
			GUIStyle val2 = new GUIStyle(GUI.skin.label)
			{
				alignment = (TextAnchor)4
			};
			val2.normal.textColor = Color.black;
			GUILayout.Label(text2, val2, Array.Empty<GUILayoutOption>());
			for (int i = 0; i < 3; i++)
			{
				GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
				GUILayout.FlexibleSpace();
				for (int j = 0; j < 3; j++)
				{
					int num = i * 3 + j;
					if (GUILayout.Button(_g2Board[num], (GUILayoutOption[])(object)new GUILayoutOption[2]
					{
						GUILayout.Width(50f),
						GUILayout.Height(50f)
					}) && string.IsNullOrEmpty(_g2Board[num]))
					{
						_g2Board[num] = (_g2XTurn ? "X" : "O");
						CheckG2Win();
						_g2XTurn = !_g2XTurn;
					}
				}
				GUILayout.FlexibleSpace();
				GUILayout.EndHorizontal();
			}
		}

		private void CheckG2Win()
		{
			int[][] array = new int[8][]
			{
				new int[3] { 0, 1, 2 },
				new int[3] { 3, 4, 5 },
				new int[3] { 6, 7, 8 },
				new int[3] { 0, 3, 6 },
				new int[3] { 1, 4, 7 },
				new int[3] { 2, 5, 8 },
				new int[3] { 0, 4, 8 },
				new int[3] { 2, 4, 6 }
			};
			int[][] array2 = array;
			foreach (int[] array3 in array2)
			{
				if (!string.IsNullOrEmpty(_g2Board[array3[0]]) && _g2Board[array3[0]] == _g2Board[array3[1]] && _g2Board[array3[1]] == _g2Board[array3[2]])
				{
					_g2Winner = _g2Board[array3[0]];
					return;
				}
			}
			bool flag = true;
			string[] g2Board = _g2Board;
			foreach (string value in g2Board)
			{
				if (string.IsNullOrEmpty(value))
				{
					flag = false;
				}
			}
			if (flag && string.IsNullOrEmpty(_g2Winner))
			{
				_g2Winner = "Draw";
			}
		}

		private Rect DrawDraggableXPWindow(Rect rect, string title, string key, Action content, Action close)
		{
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: 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_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: 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_00c4: Invalid comparison between Unknown and I4
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Invalid comparison between Unknown and I4
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02da: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Expected O, but got Unknown
			//IL_0301: Unknown result type (might be due to invalid IL or missing references)
			//IL_0359: Unknown result type (might be due to invalid IL or missing references)
			//IL_0372: Unknown result type (might be due to invalid IL or missing references)
			//IL_0373: Unknown result type (might be due to invalid IL or missing references)
			//IL_0377: Unknown result type (might be due to invalid IL or missing references)
			Rect val = default(Rect);
			((Rect)(ref val))..ctor(((Rect)(ref rect)).x + 3f, ((Rect)(ref rect)).y + 3f, ((Rect)(ref rect)).width - 6f, 25f);
			if ((int)Event.current.type == 0 && ((Rect)(ref rect)).Contains(Event.current.mousePosition))
			{
				BringToFront(key);
			}
			if ((int)Event.current.type == 0 && ((Rect)(ref val)).Contains(Event.current.mousePosition))
			{
				_draggedWindowKey = key;
				_windowPosOffset = Event.current.mousePosition - ((Rect)(ref rect)).position;
			}
			if (_draggedWindowKey == key && (int)Event.current.type == 3)
			{
				((Rect)(ref rect)).position = Event.current.mousePosition - _windowPosOffset;
			}
			if ((int)Event.current.type == 1)
			{
				_draggedWindowKey = null;
			}
			GUI.color = new Color(0f, 0f, 0f, 0.3f);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + 4f, ((Rect)(ref rect)).y + 4f, ((Rect)(ref rect)).width, ((Rect)(ref rect)).height), (Texture)(object)_texWhite);
			GUI.color = Color.white;
			GUI.DrawTexture(rect, (Texture)(object)_texXPCream);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).y, ((Rect)(ref rect)).width, 3f), (Texture)(object)_texXPBlue);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).y + ((Rect)(ref rect)).height - 3f, ((Rect)(ref rect)).width, 3f), (Texture)(object)_texXPBlue);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x, ((Rect)(ref rect)).y, 3f, ((Rect)(ref rect)).height), (Texture)(object)_texXPBlue);
			GUI.DrawTexture(new Rect(((Rect)(ref rect)).x + ((Rect)(ref rect)).width - 3f, ((Rect)(ref rect)).y, 3f, ((Rect)(ref rect)).height), (Texture)(object)_texXPBlue);
			GUI.DrawTexture(val, (Texture)(object)_texXPBlueGrad);
			GUI.Label(new Rect(((Rect)(ref rect)).x + 10f, ((Rect)(ref rect)).y + 4f, ((Rect)(ref rect)).width, 25f), title, _styleWindowHeader);
			Rect val2 = default(Rect);
			((Rect)(ref val2))..ctor(((Rect)(ref rect)).x + ((Rect)(ref rect)).width - 25f, ((Rect)(ref rect)).y + 5f, 20f, 20f);
			GUI.DrawTexture(val2, (Texture)(object)_texXPRed);
			Rect val3 = val2;
			GUIStyle val4 = new GUIStyle(GUI.skin.label)
			{
				alignment = (TextAnchor)4
			};
			val4.normal.textColor = Color.white;
			val4.fontStyle = (FontStyle)1;
			GUI.Label(val3, "X", val4);
			if (GUI.Button(val2, "", GUIStyle.none))
			{
				close?.Invoke();
			}
			GUILayout.BeginArea(new Rect(((Rect)(ref rect)).x + 10f, ((Rect)(ref rect)).y + 35f, ((Rect)(ref rect)).width - 20f, ((Rect)(ref rect)).height - 45f));
			content();
			GUILayout.EndArea();
			return rect;
		}

		private void DrawXPWindow(Rect rect, string title, Action content)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			DrawDraggableXPWindow(rect, title, "", content, null);
		}

		private void DrawDesktopIcons()
		{
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: 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_0239: Unknown result type (might be due to invalid IL or missing references)
			//IL_0272: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_033b: Unknown result type (might be due to invalid IL or missing references)
			//IL_037e: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_041f: 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_04c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0567: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			float num = 20f;
			float num2 = 20f;
			float num3 = 90f;
			int num4 = 0;
			float num5 = 20f;
			if (_repoInstalledConfig.Value)
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "R.E.P.O.", _texIconRepo, delegate
				{
					LaunchGame();
				});
			}
			else
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Setup.exe", _texIconFitGirl ?? _texIconGeneric, delegate
				{
					OpenWindow("Installer");
				});
			}
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "My Souls", _texIconSouls ?? _texIconGeneric, delegate
			{
				OpenWindow("SoulHarvester");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "CMD", _texIconCMD ?? _texIconGeneric, delegate
			{
				OpenWindow("CMD");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Solitaire", _texIconSolitaire, delegate
			{
				OpenWindow("Solitaire");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "OmniExplorer", _texIconBrowser, delegate
			{
				OpenWindow("Browser");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Flappy Bird", _texIconFlappy, delegate
			{
				OpenWindow("Flappy");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "My Photos", _texIconFolder ?? _texIconPhotos, delegate
			{
				OpenWindow("Photos");
			});
			num2 += num3;
			num2 = num5;
			num4++;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Oetris", _texIconTetris, delegate
			{
				OpenWindow("Tetris");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Norton AV", _texIconNorton ?? _texIconGeneric, delegate
			{
				OpenWindow("Norton");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Limewire", _texIconLimewire ?? _texIconGeneric, delegate
			{
				OpenWindow("Limewire");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Minesweeper", _texIconMine ?? _texIconGeneric, delegate
			{
				OpenWindow("Minesweeper");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "Paint", _texIconPaint ?? _texIconGeneric, delegate
			{
				OpenWindow("Paint");
			});
			num2 += num3;
			DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "MSN", _texIconMSN ?? _texIconGeneric, delegate
			{
				OpenWindow("MSN");
			});
			num2 += num3;
			if (_hasDownloadedLinkinPark)
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "LinkinPark.exe", _texIconLinkinPark ?? _texIconGeneric, delegate
				{
					OpenWindow("Media");
					if (!_videoPlayer.isPlaying)
					{
						_videoPlayer.Play();
					}
				});
				num2 += num3;
			}
			if (_hasDownloadedBBD)
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "BBD.exe", _texIconBBD ?? _texIconGeneric, delegate
				{
					OpenWindow("Bocon");
				});
				num2 += num3;
			}
			if (_hasDownloadedSkript)
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "SAIA.exe", _texIconSkript ?? _texIconGeneric, delegate
				{
					OpenWindow("Skript");
					InitSkript();
				});
				num2 += num3;
			}
			num2 = num5;
			num4++;
			if (_hasGame1)
			{
				DrawIcon(new Rect(num + (float)(num4 * 80), num2, 64f, 80f), "NumberGuess", _texIconGame1 ?? _texIconGeneric, delegate
				{
					OpenWindow("Game1");
				});
				num2 += num3;
			}
			if (_hasGame2)
			{
				DrawIcon(new Rect(num + (float)(num4 *