public static bool ReplaceBenchmark(string basepath, BenchmarkOffset target, BenchmarkOffset source)
        {
            if (target == null || source == null)
            {
                Error.ErrorBox("Either target was null or source was null!");
                return(false);
            }

            string bigfileName = basepath + @"\Yeti.big";

            if (!File.Exists(bigfileName))
            {
                Error.ErrorBox("Bigfile could not be found!");
                return(false);
            }

            try
            {
                int targetOffset = Convert.ToInt32(target.Offset, 16);
                int targetKey    = Convert.ToInt32(target.Key, 16);
                int sourceOffset = Convert.ToInt32(source.Offset, 16);
                int sourceKey    = Convert.ToInt32(source.Key, 16);

                using (FileStream fs = File.Open(bigfileName, FileMode.Open, FileAccess.ReadWrite))
                {
                    fs.Seek(targetOffset, SeekOrigin.Begin);
                    if (targetOffset != sourceOffset)
                    {
                        fs.Write(Convert.ToInt32("0xFFFFFFFF", 16).ToBytes(), 0, 4);
                        fs.Seek(sourceOffset, SeekOrigin.Begin);
                        fs.Write(targetKey.ToBytes(), 0, 4);
                    }
                    else
                    {
                        fs.Write(sourceKey.ToBytes(), 0, 4);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                Error.ErrorBox(ex, "Error replacing benchmark!");
                return(false);
            }
        }
        public void LoadFile()
        {
            gamePaths        = new List <string>();
            customOffsets    = new List <string>();
            benchmarkOffsets = new List <BenchmarkOffset>();
            customArguments  = "";

            if (!File.Exists(FILE_NAME))
            {
                File.Create(FILE_NAME);
                return;
            }

            string[] lines = File.ReadAllLines(FILE_NAME);
            for (int i = 0; i < lines.Length; i++)
            {
                try
                {
                    string[] split = lines[i].Split('|');
                    if (split.Length != 2)
                    {
                        Error.ErrorBox("Config file is corrupt!", true);
                    }

                    if (split[0] == "executable")
                    {
                        executableName = split[1];
                    }
                    if (split[0] == "gamePaths")
                    {
                        gamePaths.Add(split[1]);
                    }
                    if (split[0] == "customOffsets")
                    {
                        customOffsets.Add(split[1]);
                    }
                    if (split[0] == "benchmarkOffset")
                    {
                        string[] benchOffsetSplit = split[1].Split(OFFSET_SEPARATOR);
                        benchmarkOffsets.Add(new BenchmarkOffset(benchOffsetSplit[0], benchOffsetSplit[1], benchOffsetSplit[2]));
                    }
                    if (split[0] == "args")
                    {
                        customArguments = split[1];
                    }
                    if (split[0] == "isUnlocked")
                    {
                        isUnlocked = split[1];
                    }
                }
                catch (Exception ex)
                {
                    Error.ErrorBox(ex, "Error loading config file!", true);
                }
            }

            if (!IsUnlocked)
            {
                lockedTargetOffset = benchmarkOffsets[0];
                benchmarkOffsets.RemoveAt(0);
            }
        }