From a9e9e0a4195cc931fab429970fa5e434b134c069 Mon Sep 17 00:00:00 2001 From: Mr-X-GTA <110748953+Mr-X-GTA@users.noreply.github.com> Date: Sat, 18 Jul 2026 16:45:14 +0200 Subject: [PATCH] fix(anticheat): fix anticheat bypass (#1019) --- README.md | 2 +- .../manager/styles/Classic/Classic.cpp | 4 +- src/core/hooking/CallHook.cpp | 22 +- src/core/hooking/DetourHook.hpp | 8 + src/core/logger/ExceptionHandler.cpp | 4 +- src/game/backend/AnticheatBypass.cpp | 238 +++++++++++++++++- .../players/troll/GivePlayerAllWeapon.cpp | 2 +- src/game/features/vehicle/EnterLast.cpp | 2 +- src/game/features/vehicle/RocketBoost.cpp | 4 +- src/game/features/world/IPLManager.cpp | 2 +- src/game/frontend/items/Group.cpp | 6 +- src/game/frontend/items/Items.hpp | 2 +- src/game/frontend/submenus/Network.cpp | 2 +- .../submenus/Network/RandomEvents.cpp | 1 + src/game/frontend/submenus/Player/Troll.cpp | 2 +- src/game/frontend/submenus/Settings.cpp | 2 +- src/game/frontend/submenus/Teleport.cpp | 4 +- .../Anticheat/PrepareMetricForSending.cpp | 2 +- src/game/hooks/Hooks.hpp | 2 +- src/game/pointers/Pointers.cpp | 15 +- 20 files changed, 288 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 1029a5b..3529340 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Experimental menu for GTA 5: Enhanced ## How to use -1. Download the latest version of FSL from [here](https://www.unknowncheats.me/forum/grand-theft-auto-v/616977-fsl-local-gtao-saves.html) and place WINMM.dll in your GTA V directory +1. Download the latest version of FSL from [here](https://www.unknowncheats.me/forum/grand-theft-auto-v/616977-fsl-local-gtao-saves.html) and place WINMM.dll in your GTA V directory. Using FSL is now optional but highly recommended for account safety 2. Download YimMenuV2 from [GitHub Releases](https://github.com/YimMenu/YimMenuV2/releases/tag/nightly) 3. Download an injector, such as [Xenos](https://www.unknowncheats.me/forum/general-programming-and-reversing/124013-xenos-injector-v2-3-2-a.html) 4. Open Rockstar Launcher, select Grand Theft Auto V Enhanced, go to settings, and disable BattlEye. If you are using Steam or Epic Games, you may have to pass the -nobattleye command line parameter as well diff --git a/src/core/frontend/manager/styles/Classic/Classic.cpp b/src/core/frontend/manager/styles/Classic/Classic.cpp index 5cb48c7..17a2567 100644 --- a/src/core/frontend/manager/styles/Classic/Classic.cpp +++ b/src/core/frontend/manager/styles/Classic/Classic.cpp @@ -17,7 +17,7 @@ namespace YimMenu ImGui::SetNextWindowSize(windowSize, ImGuiCond_FirstUseEver); ImGui::SetNextWindowPos(ImVec2(centerX, centerY), ImGuiCond_FirstUseEver); - ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse; + ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoCollapse; auto pos = ImGui::GetCursorPos(); if(ImGui::Begin("##ClassicInputWindow", nullptr, flags)) { @@ -42,7 +42,7 @@ namespace YimMenu pos.y -= 28; ImGui::SetCursorPos(ImVec2(pos.x + 130, pos.y)); - if (ImGui::BeginChild("##minisubmenus", ImVec2(0, 50), true, ImGuiWindowFlags_NoScrollbar)) + if (ImGui::BeginChild("##minisubmenus", ImVec2(0, 50), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse)) { auto activeSubmenu = YimMenu::UIManager::GetActiveSubmenu(); if (activeSubmenu) diff --git a/src/core/hooking/CallHook.cpp b/src/core/hooking/CallHook.cpp index 6cb6230..7ea312b 100644 --- a/src/core/hooking/CallHook.cpp +++ b/src/core/hooking/CallHook.cpp @@ -2,10 +2,26 @@ namespace YimMenu { - CallHookMemory::CallHookMemory() + CallHookMemory::CallHookMemory() : + m_Memory(nullptr), + m_Offset(0) { - m_Memory = VirtualAlloc((void*)((uintptr_t)GetModuleHandle(0) + 0x40000000), 1024, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); - m_Offset = 0; + uint8_t* base = static_cast(static_cast(GetModuleHandle(0))); + uint8_t* limit = base + INT32_MAX - 1024; + + for (uint8_t* addr = base; addr < limit; addr += 0x10000) + { + if (m_Memory = VirtualAlloc(addr, 1024, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) + { + LOGF(VERBOSE, "Allocated call hook memory at {}. Base: {}.", m_Memory.As(), static_cast(base)); + break; + } + } + + if (!m_Memory) + { + LOG(FATAL) << "Failed to allocate call hook memory!"; + } } void* CallHookMemory::AllocateJumpSequenceImpl(void* func) diff --git a/src/core/hooking/DetourHook.hpp b/src/core/hooking/DetourHook.hpp index 178875a..cfb942d 100644 --- a/src/core/hooking/DetourHook.hpp +++ b/src/core/hooking/DetourHook.hpp @@ -65,6 +65,8 @@ namespace YimMenu return false; } + + m_Enabled = true; return true; } @@ -80,6 +82,8 @@ namespace YimMenu return false; } + + m_Enabled = false; return true; } @@ -95,6 +99,8 @@ namespace YimMenu return false; } + + m_Enabled = true; return true; } @@ -110,6 +116,8 @@ namespace YimMenu return false; } + + m_Enabled = false; return true; } diff --git a/src/core/logger/ExceptionHandler.cpp b/src/core/logger/ExceptionHandler.cpp index 2468538..99e9b12 100644 --- a/src/core/logger/ExceptionHandler.cpp +++ b/src/core/logger/ExceptionHandler.cpp @@ -93,8 +93,8 @@ namespace YimMenu if (opcode.opcode == 0x8B && opcode.modrm_mod != 3) { - uint8_t regId = opcode.rex_r | opcode.modrm_reg; - switch (regId) + uint8_t regIdx = opcode.rex_r << 3 | opcode.modrm_reg; + switch (regIdx) { case 0: exception_info->ContextRecord->Rax = 0; break; case 1: exception_info->ContextRecord->Rcx = 0; break; diff --git a/src/game/backend/AnticheatBypass.cpp b/src/game/backend/AnticheatBypass.cpp index 1cdc682..df78e2a 100644 --- a/src/game/backend/AnticheatBypass.cpp +++ b/src/game/backend/AnticheatBypass.cpp @@ -11,8 +11,236 @@ using FnGetVersion = int (*)(); using FnLocalSaves = bool (*)(); using FnBattlEyeBypass = bool (*)(); +#define RESTORE_DESTROYED_FUNCTIONS true + namespace YimMenu { + static void ApplyPatch(uintptr_t base, uintptr_t offset, std::span const values) + { + memcpy(reinterpret_cast(base + offset), values.data(), values.size()); + } + + static void PatchEncryptedFunctions(uintptr_t base) + { + ApplyPatch(base, 0x14F20B0, std::to_array({0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x56, 0x57, 0x55, 0x53, 0x48, 0x83, 0xEC, 0x38, 0x4C, 0x89, 0xC7, 0x49, 0x89, 0xCC, 0x48, 0x8B, 0x2, 0x48, 0x89, 0x54, 0x24, 0x30, 0x48, 0x89, 0xD1, 0xFF, 0x50, 0x68, 0x84, 0xC0, 0xF, 0x85, 0x19, 0x2, 0x0, 0x0, 0xF, 0xB7, 0x47, 0xA, 0xC1, 0xE0, 0x10, 0x3D, 0x0, 0x0, 0xFF, 0x0, 0xF, 0x85, 0x7, 0x2, 0x0, 0x0, 0xE8, 0x1D, 0xF3, 0xF1, 0xFF, 0x89, 0xC6, 0xE8, 0x76, 0xF3, 0xF1, 0xFF, 0x85, 0xF6, 0xF, 0x84, 0xF3, 0x1, 0x0, 0x0, 0x49, 0x89, 0xC7, 0x89, 0xF5, 0xB0, 0x1, 0x45, 0x31, 0xF6, 0xEB, 0x11})); + ApplyPatch(base, 0x14F2110, std::to_array({0x49, 0xFF, 0xC6, 0x49, 0x39, 0xEE, 0xF, 0x92, 0xC0, 0xF, 0x84, 0xD6, 0x1, 0x0, 0x0, 0x88, 0x44, 0x24, 0x2F, 0x4B, 0x8B, 0x4, 0xF7, 0xF, 0xB6, 0x40, 0x61, 0x48, 0xC1, 0xE0, 0x4, 0x4D, 0x8B, 0x6C, 0x4, 0x8, 0xEB, 0xE})); + ApplyPatch(base, 0x14F2140, std::to_array({0x4D, 0x8B, 0x6D, 0x10, 0x4D, 0x85, 0xED, 0x74, 0xC7, 0x49, 0x8B, 0x5D, 0x8, 0x48, 0x85, 0xDB, 0x74, 0xEE, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x50, 0x68, 0x84, 0xC0, 0x74, 0xE1, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0x31, 0xD2, 0xFF, 0x90, 0x68, 0x2, 0x0, 0x0, 0x84, 0xC0, 0x74, 0xCF, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x90, 0x0, 0x1, 0x0, 0x0, 0x48, 0x85, 0xC0, 0x74, 0xBE, 0x48, 0x89, 0xC6, 0x48, 0x8B, 0x0, 0x48, 0x89, 0xF1, 0x48, 0x89, 0xFA, 0xFF, 0x50, 0x20, 0x84, 0xC0, 0x74, 0xAB, 0xF, 0xB7, 0x46, 0xC, 0x66, 0x3B, 0x47, 0xC, 0x76, 0x33, 0xE8, 0x5C, 0x70, 0xB5, 0xFE, 0x48, 0x89, 0xC6, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x2E, 0x48, 0x8D, 0x15, 0x11, 0xE8, 0x31, 0x1, 0x4C, 0x8D, 0x5, 0x33, 0x9C, 0x33, 0x1, 0x48, 0x89, 0xF1, 0x49, 0x89, 0xC1, 0xFF, 0x55, 0x30, 0xE9, 0xE9, 0x0, 0x0, 0x0, 0x80, 0x7B, 0x4B, 0x0, 0xF, 0x85, 0x99, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0x31, 0xD2, 0xFF, 0x90, 0x88, 0x1, 0x0, 0x0, 0x84, 0xC0, 0xF, 0x84, 0x83, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x6, 0x48, 0x89, 0xF1, 0xFF, 0x50, 0x8, 0x48, 0x8B, 0x10, 0x48, 0x89, 0xC1, 0xFF, 0x52, 0x28, 0x48, 0x8B, 0x35, 0x45, 0xBE, 0x23, 0x3, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x2E, 0x48, 0x8D, 0x15, 0x66, 0x9F, 0x2F, 0x1, 0x48, 0x89, 0xF1, 0x49, 0x89, 0xC0, 0xFF, 0x55, 0x30, 0x48, 0x8B, 0x35, 0x1F, 0xBE, 0x23, 0x3, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0x48, 0x8B, 0x1, 0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x2E, 0x48, 0x8D, 0x15, 0xE9, 0x2E, 0x2E, 0x1, 0x48, 0x89, 0xF1, 0x49, 0x89, 0xC0, 0xFF, 0x55, 0x30, 0xE8, 0x19, 0xF9, 0xF1, 0xFF, 0x48, 0x8B, 0x28, 0xC6, 0x44, 0x24, 0x20, 0x1, 0x48, 0x89, 0xC1, 0x48, 0x89, 0xDA, 0x41, 0xB8, 0xB, 0x0, 0x0, 0x0, 0x45, 0x31, 0xC9, 0xFF, 0x55, 0x30, 0xB0, 0x1, 0xEB, 0x76, 0xE8, 0x86, 0x6F, 0xB5, 0xFE, 0x48, 0x89, 0xC6, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x2E, 0x48, 0x8D, 0x15, 0x3B, 0xE7, 0x31, 0x1, 0x4C, 0x8D, 0x5, 0x49, 0x9C, 0x33, 0x1, 0x48, 0x89, 0xF1, 0x49, 0x89, 0xC1, 0xFF, 0x55, 0x30, 0x48, 0x8B, 0x3, 0x48, 0x89, 0xD9, 0xFF, 0x90, 0xC0, 0x0, 0x0, 0x0, 0x48, 0x85, 0xC0, 0x74, 0x7, 0xC6, 0x83, 0xD0, 0x0, 0x0, 0x0, 0x3C, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x50, 0x8, 0x48, 0x89, 0xC1, 0xE8, 0xE4, 0x29, 0xC6, 0xFE, 0x48, 0x85, 0xC0, 0x74, 0x18, 0x48, 0x89, 0xC1, 0xE8, 0x7, 0x6D, 0xF2, 0xFF, 0x84, 0xC0, 0x74, 0xC, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0xB2, 0x1, 0xE8, 0x57, 0xF0, 0xE9, 0xFF, 0x31, 0xC0, 0xF, 0xB6, 0x4C, 0x24, 0x2F, 0xF6, 0xC1, 0x1, 0x75, 0x2, 0xB0, 0x1, 0x48, 0x83, 0xC4, 0x38, 0x5B, 0x5D, 0x5F, 0x5E, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0xC3})); + ApplyPatch(base, 0x14FC600, std::to_array({0x48, 0x8B, 0x5, 0xC1, 0x9, 0xF8, 0x0, 0x48, 0x8B, 0x80, 0xF0, 0x0, 0x0, 0x0, 0x8B, 0x80, 0xF8, 0x0, 0x0, 0x0, 0x83, 0xF8, 0x9, 0x77, 0x1D, 0x44, 0x8B, 0x8A, 0xF8, 0x0, 0x0, 0x0, 0x41, 0x83, 0xF9, 0x9, 0x77, 0x10, 0x41, 0x39, 0xC1, 0x75, 0xB, 0x80, 0x7A, 0x61, 0xFF, 0x74, 0x14, 0xE9, 0x2A, 0x85, 0xF2, 0xFF, 0x4D, 0x85, 0xC0, 0x74, 0x16, 0x41, 0xC7, 0x0, 0x5, 0x0, 0x0, 0x0, 0x31, 0xC0, 0xC3, 0x4D, 0x85, 0xC0, 0x74, 0x7, 0x41, 0xC7, 0x0, 0x6, 0x0, 0x0, 0x0, 0x31, 0xC0, 0xC3})); + ApplyPatch(base, 0x14FC660, std::to_array({0x41, 0x57, 0x41, 0x56, 0x41, 0x54, 0x56, 0x57, 0x53, 0x48, 0x83, 0xEC, 0x28, 0x4D, 0x89, 0xCE, 0x44, 0x89, 0xC3, 0x49, 0x89, 0xD7, 0x48, 0x89, 0xCF, 0x48, 0x8B, 0x1, 0xFF, 0x50, 0x68, 0x84, 0xC0, 0x75, 0x14, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x90, 0x98, 0x1, 0x0, 0x0, 0x84, 0xC0, 0xF, 0x84, 0xD6, 0x0, 0x0, 0x0, 0x48, 0x89, 0xF9, 0x4C, 0x89, 0xFA, 0x41, 0x89, 0xD8, 0x4D, 0x89, 0xF1, 0xE8, 0xA8, 0x7C, 0xF2, 0xFF, 0x84, 0xC0, 0xF, 0x84, 0xCA, 0x0, 0x0, 0x0, 0x83, 0xFB, 0x1, 0x7F, 0x3C, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x50, 0x48, 0x48, 0x85, 0xC0, 0x74, 0x2E, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x50, 0x48, 0x48, 0x8B, 0xD, 0xF5, 0x8, 0xF8, 0x0, 0x8B, 0x89, 0x98, 0x8, 0x0, 0x0, 0x85, 0x48, 0x10, 0x74, 0x13, 0xB8, 0x24, 0x0, 0x0, 0x0, 0x4D, 0x85, 0xF6, 0xF, 0x85, 0x8B, 0x0, 0x0, 0x0, 0xE9, 0x89, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x90, 0x0, 0x1, 0x0, 0x0, 0x48, 0x85, 0xC0, 0x74, 0x47, 0x48, 0x8B, 0x7, 0x48, 0x89, 0xF9, 0xFF, 0x90, 0x10, 0x1, 0x0, 0x0, 0x48, 0x85, 0xC0, 0x74, 0x36, 0x49, 0x89, 0xC4, 0x48, 0x8B, 0x0, 0x4C, 0x89, 0xE1, 0xFF, 0x50, 0x38, 0x48, 0x85, 0xC0, 0x74, 0x25, 0x48, 0x89, 0xC6, 0x48, 0x8B, 0x0, 0x48, 0x89, 0xF1, 0xFF, 0x50, 0x30, 0x84, 0xC0, 0x74, 0x15, 0x48, 0x89, 0xF1, 0x4C, 0x89, 0xE2, 0x4D, 0x89, 0xF8, 0x41, 0x89, 0xD9, 0xE8, 0x5B, 0x13, 0xEF, 0xFF, 0x84, 0xC0, 0x74, 0x43, 0x40, 0xB6, 0x1, 0x85, 0xDB, 0x75, 0x2C, 0x48, 0x89, 0xF9, 0xBA, 0x0, 0x80, 0x0, 0x0, 0xE8, 0x3, 0x71, 0xF2, 0xFF, 0x84, 0xC0, 0x74, 0x1B, 0xB8, 0x2F, 0x0, 0x0, 0x0, 0x4D, 0x85, 0xF6, 0x75, 0xC, 0xEB, 0xD, 0xB8, 0x9, 0x0, 0x0, 0x0, 0x4D, 0x85, 0xF6, 0x74, 0x3, 0x41, 0x89, 0x6, 0x31, 0xF6, 0x89, 0xF0, 0x48, 0x83, 0xC4, 0x28, 0x5B, 0x5F, 0x5E, 0x41, 0x5C, 0x41, 0x5E, 0x41, 0x5F, 0xC3, 0xB8, 0xB, 0x0, 0x0, 0x0, 0x4D, 0x85, 0xF6, 0x75, 0xE1, 0xEB, 0xE2})); + } + + static void PatchDestroyedFunctions(uintptr_t base) + { + ApplyPatch(base, 0xA8B26, std::to_array({0x89, 0x43, 0x8, 0x89, 0xC7, 0xE9, 0x3E, 0x43, 0x38, 0x1})); + ApplyPatch(base, 0x1095A5, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x21, 0x36, 0x32, 0x1})); + ApplyPatch(base, 0x10EC63, std::to_array({0x53, 0x48, 0x8D, 0x1D, 0x60, 0xE5, 0x31, 0x1, 0x48, 0x87, 0x1C, 0x24, 0xC3})); + ApplyPatch(base, 0x2A5689, std::to_array({0x31, 0xFF, 0xE9, 0x3B, 0x7B, 0x18, 0x1})); + ApplyPatch(base, 0x2B43A2, std::to_array({0x83, 0xF8, 0x3, 0xF, 0x85, 0x2A, 0x33, 0x1D, 0x1, 0xE9, 0x65, 0xA2, 0xAB, 0x1})); + ApplyPatch(base, 0x426835, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x4, 0x67, 0x0, 0x1})); + ApplyPatch(base, 0x5102C5, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x86, 0xCC, 0xF1, 0x0})); + ApplyPatch(base, 0x586874, std::to_array({0x48, 0x8B, 0x8E, 0x38, 0xAA, 0x0, 0x0, 0xE9, 0x27, 0xF, 0xF0, 0x0})); + ApplyPatch(base, 0x61AF85, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x47, 0x20, 0xE1, 0x0})); + ApplyPatch(base, 0x6E8F75, std::to_array({0x45, 0x89, 0xC4, 0x44, 0x89, 0xCE, 0xE9, 0x1B, 0x3F, 0xD4, 0x0})); + ApplyPatch(base, 0x6E9043, std::to_array({0x85, 0xC0, 0xF, 0x85, 0xC7, 0x3C, 0xD4, 0x0, 0xE9, 0x55, 0x5, 0xA2, 0xFF})); + ApplyPatch(base, 0x736C92, std::to_array({0xFF, 0xC3, 0x48, 0x8B, 0x45, 0x0, 0x48, 0x89, 0xE9, 0xE9, 0x2A, 0x63, 0xCF, 0x0})); + ApplyPatch(base, 0x9A61E6, std::to_array({0x89, 0xC6, 0x48, 0x89, 0xF9, 0xE9, 0x11, 0x6C, 0xA8, 0x0})); + ApplyPatch(base, 0xB20B15, std::to_array({0xFF, 0x83, 0x68, 0x3, 0x0, 0x0, 0xE9, 0x2D, 0xC2, 0x90, 0x0})); + ApplyPatch(base, 0xB9FDE5, std::to_array({0xFF, 0x80, 0x68, 0x3, 0x0, 0x0, 0xE9, 0x17, 0xD4, 0x88, 0x0})); + ApplyPatch(base, 0xC1A441, std::to_array({0x4D, 0x8B, 0xA6, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x89, 0xF9, 0xE9, 0xA7, 0x29, 0x81, 0x0})); + ApplyPatch(base, 0xD910E5, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x9F, 0xBA, 0x69, 0x0})); + ApplyPatch(base, 0xF78005, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0xC0, 0x4C, 0x4B, 0x0})); + ApplyPatch(base, 0x11C0385, std::to_array({0x48, 0x8B, 0x6, 0x48, 0x89, 0xF1, 0xE9, 0x60, 0xCF, 0x26, 0x0})); + ApplyPatch(base, 0x123C559, std::to_array({0x41, 0x54, 0x4C, 0x8D, 0x25, 0x50, 0x7, 0x1F, 0x0, 0x4C, 0x87, 0x24, 0x24, 0xC3})); + ApplyPatch(base, 0x1257F13, std::to_array({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x42, 0x4D, 0x1D, 0x0})); + ApplyPatch(base, 0x125BC41, std::to_array({0x41, 0xF, 0xB7, 0x4F, 0x4E, 0x41, 0x55, 0x4C, 0x8D, 0x2D, 0x63, 0x42, 0x74, 0x4, 0x4C, 0x87, 0x2C, 0x24, 0xC3})); + ApplyPatch(base, 0x127E828, std::to_array({0x48, 0x8B, 0x1, 0xE9, 0x30, 0xE5, 0x1A, 0x0})); + ApplyPatch(base, 0x142CB30, std::to_array({0xE9, 0x89, 0x1, 0xE7, 0x3})); + ApplyPatch(base, 0x142CB3E, std::to_array({0xE9, 0x45, 0x18, 0xE0, 0x0})); + ApplyPatch(base, 0x142CB62, std::to_array({0xFF, 0x90, 0x68, 0x1, 0x0, 0x0, 0x90, 0xE9, 0x2B, 0x33, 0x55, 0x4})); + ApplyPatch(base, 0x142CB8F, std::to_array({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xE9, 0xB5, 0x7F, 0x94, 0x0})); + ApplyPatch(base, 0x142CBB8, std::to_array({0xFF, 0x50, 0x30, 0x90, 0xEB, 0x80, 0xE8, 0xCD, 0x3A, 0xCC, 0xFE, 0x90, 0xE9, 0x7A, 0xC4, 0x2B, 0xFF})); + ApplyPatch(base, 0x142CBD1, std::to_array({0xFF, 0x90, 0xE0, 0x0, 0x0, 0x0, 0x89, 0xC6, 0xE8, 0xA2, 0xFC, 0xCF, 0xFE, 0x90, 0xE9, 0x65, 0xE8, 0x5C, 0x4})); + ApplyPatch(base, 0x142CC05, std::to_array({0xE9, 0x0, 0x80, 0xA, 0x4})); + ApplyPatch(base, 0x142CC1E, std::to_array({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x98, 0x72, 0x54, 0x4})); + ApplyPatch(base, 0x142CC30, std::to_array({0xFF, 0x52, 0x60, 0x90, 0xE9, 0xE2, 0x7C, 0x33, 0x4})); + ApplyPatch(base, 0x142CC3C, std::to_array({0xFF, 0x90, 0xE0, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x6F, 0x1C, 0x15, 0x4})); + ApplyPatch(base, 0x142CC53, std::to_array({0xE8, 0x58, 0xEA, 0xFF, 0xFF, 0xEB, 0x70, 0xE9, 0xB4, 0xB2, 0xE2, 0xFF})); + ApplyPatch(base, 0x142CC60, std::to_array({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x30, 0x34, 0x8D, 0x0})); + ApplyPatch(base, 0x142CC74, std::to_array({0xFF, 0x50, 0x48, 0x90, 0xE9, 0x6A, 0xF, 0x8D, 0x0})); + ApplyPatch(base, 0x142CC91, std::to_array({0xFF, 0x55, 0x30, 0x90, 0xE9, 0xA0, 0x39, 0x3, 0x4})); + ApplyPatch(base, 0x142CCAF, std::to_array({0xFF, 0x50, 0x30, 0x90, 0xE9, 0xB9, 0xCF, 0x3C, 0x4})); + ApplyPatch(base, 0x142CCC4, std::to_array({0xFF, 0x92, 0x58, 0x1, 0x0, 0x0, 0x90, 0xE9, 0x35, 0xB3, 0xB4, 0xFF, 0xFF, 0x50, 0x60, 0x90, 0xE9, 0xA4, 0x7E, 0x29, 0x4})); + ApplyPatch(base, 0x142CD0F, std::to_array({0xFF, 0x53, 0x8, 0x90, 0xE9, 0x59, 0x33, 0x62, 0x4})); + ApplyPatch(base, 0x142CD1C, std::to_array({0xE8, 0x6F, 0x39, 0xCC, 0xFE, 0x90, 0xE9, 0xB7, 0x5F, 0xFC, 0x3})); + ApplyPatch(base, 0x142CD4D, std::to_array({0xE9, 0xE0, 0x3E, 0x40, 0x4})); + ApplyPatch(base, 0x142CD60, std::to_array({0xFF, 0x50, 0x8, 0x90, 0xE9, 0x1D, 0xE8, 0x3E, 0x4})); + ApplyPatch(base, 0x142CD7F, std::to_array({0xFF, 0x50, 0x30, 0x90, 0xE9, 0x6, 0x6, 0x19, 0x4, 0xE9, 0x59, 0x94, 0x57, 0xFF})); + ApplyPatch(base, 0x142CDA7, std::to_array({0xE9, 0xFD, 0x68, 0xC3, 0x0})); + ApplyPatch(base, 0x142CDED, std::to_array({0xE9, 0x4F, 0xD6, 0x7E, 0xFF})); + ApplyPatch(base, 0x142CDF7, std::to_array({0xE8, 0x94, 0x38, 0xCC, 0xFE, 0x90, 0xEB, 0x89})); + ApplyPatch(base, 0x142CE01, std::to_array({0xE8, 0x9A, 0xA0, 0x67, 0xFF, 0x90, 0xE9, 0xF8, 0xD5, 0x1F, 0x4})); + ApplyPatch(base, 0x142CE25, std::to_array({0xEB, 0x80, 0xE9, 0x15, 0xEE, 0xE2, 0xFF})); + ApplyPatch(base, 0x142CE69, std::to_array({0xE9, 0xB8, 0xBC, 0xC7, 0xFE, 0xE9, 0x7E, 0x63, 0x55, 0x4})); + ApplyPatch(base, 0x142CE9B, std::to_array({0xE8, 0xE0, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0x26, 0xAA, 0x26, 0x4})); + ApplyPatch(base, 0x142CEB9, std::to_array({0xE9, 0x1C, 0x5F, 0xEA, 0x3})); + ApplyPatch(base, 0x142CED0, std::to_array({0xE8, 0x2B, 0x22, 0x0, 0x0, 0x90, 0xE9, 0xDE, 0xCA, 0xFB, 0x3})); + ApplyPatch(base, 0x142CEFC, std::to_array({0xE8, 0x7F, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0xD1, 0x83, 0x41, 0x4})); + ApplyPatch(base, 0x142CF0D, std::to_array({0xE9, 0x7F, 0xA5, 0x57, 0x4})); + ApplyPatch(base, 0x142CF2E, std::to_array({0xE9, 0x7F, 0xF2, 0x8E, 0x0})); + ApplyPatch(base, 0x142CF3E, std::to_array({0xE9, 0xF2, 0x98, 0xFF, 0xFE})); + ApplyPatch(base, 0x142CF44, std::to_array({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x6A, 0xBC, 0x5C, 0x4})); + ApplyPatch(base, 0x142CF50, std::to_array({0xE9, 0x65, 0xEF, 0x4D, 0x4})); + ApplyPatch(base, 0x142CF56, std::to_array({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x3B, 0xCB, 0xFA, 0x3})); + ApplyPatch(base, 0x142CF87, std::to_array({0xFF, 0x50, 0x20, 0x90, 0xEB, 0x80})); + ApplyPatch(base, 0x142CF90, std::to_array({0xE9, 0x8C, 0x1, 0x7C, 0x0})); + ApplyPatch(base, 0x142CF9B, std::to_array({0xE8, 0x20, 0xA7, 0xFE, 0xFF, 0x90, 0xE9, 0xD2, 0xAA, 0x5C, 0x4})); + ApplyPatch(base, 0x142CFA9, std::to_array({0xFF, 0x50, 0x40, 0x90, 0xE9, 0x2B, 0xB, 0xF3, 0x3})); + ApplyPatch(base, 0x142CFBD, std::to_array({0xFF, 0x54, 0xC6, 0x70, 0x90, 0xE9, 0xCB, 0x9C, 0x30, 0xFF})); + ApplyPatch(base, 0x142CFCA, std::to_array({0xFF, 0x50, 0x20, 0x90, 0xEB, 0x80})); + ApplyPatch(base, 0x142CFD1, std::to_array({0xE9, 0xAF, 0xDF, 0x1E, 0xFF})); + ApplyPatch(base, 0x142CFD7, std::to_array({0xFF, 0x50, 0x60, 0x90, 0xE9, 0x85, 0xA6, 0x7B, 0x0})); + ApplyPatch(base, 0x142CFE8, std::to_array({0xE8, 0x53, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x53, 0xE4, 0x47, 0x4, 0xE9, 0x61, 0xF5, 0xE0, 0xFF})); + ApplyPatch(base, 0x142CFFE, std::to_array({0xFF, 0x90, 0x38, 0x2, 0x0, 0x0, 0x90, 0xEB, 0xEC})); + ApplyPatch(base, 0x142D009, std::to_array({0xE9, 0xA6, 0xB0, 0x24, 0x0})); + ApplyPatch(base, 0x142D010, std::to_array({0xE8, 0xA7, 0xD5, 0xFE, 0x0, 0x90, 0xE9, 0xEC, 0x58, 0x29, 0x4, 0xE9, 0x1F, 0x32, 0x48, 0x4})); + ApplyPatch(base, 0x142D02F, std::to_array({0xE8, 0xF0, 0xD5, 0xFE, 0x0, 0x90, 0xEB, 0xE4})); + ApplyPatch(base, 0x142D190, std::to_array({0xE9, 0x87, 0x20, 0x61, 0x4, 0xE9, 0xEF, 0x84, 0xE7, 0xFE})); + ApplyPatch(base, 0x142D1BE, std::to_array({0xE9, 0x50, 0x50, 0xE0, 0x0, 0xE9, 0x5A, 0xE8, 0x4E, 0x4})); + ApplyPatch(base, 0x142D1C9, std::to_array({0xEB, 0xCA, 0xE9, 0xAC, 0x68, 0xE9, 0x0})); + ApplyPatch(base, 0x142D1DE, std::to_array({0xE9, 0x9F, 0xE8, 0x69, 0x0})); + ApplyPatch(base, 0x142D1E4, std::to_array({0xE9, 0x27, 0x62, 0x24, 0x4})); + ApplyPatch(base, 0x142D207, std::to_array({0xE9, 0x65, 0xDE, 0x16, 0x4, 0xE9, 0x8F, 0x48, 0xFC, 0x3})); + ApplyPatch(base, 0x142D23A, std::to_array({0xEB, 0x82})); + ApplyPatch(base, 0x142D23D, std::to_array({0xE9, 0x70, 0x38, 0x18, 0x4})); + ApplyPatch(base, 0x142D25C, std::to_array({0xE8, 0x6F, 0xA3, 0xFF, 0xFF, 0x90, 0xEB, 0x80})); + ApplyPatch(base, 0x142D272, std::to_array({0xE8, 0x89, 0x1E, 0x0, 0x0, 0x90, 0xE9, 0x43, 0x9A, 0x8, 0x4, 0xE9, 0xE1, 0x19, 0xCE, 0xFE})); + ApplyPatch(base, 0x142D28E, std::to_array({0xE8, 0x3D, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0x3A, 0x14, 0xFB, 0x3})); + ApplyPatch(base, 0x142D2D5, std::to_array({0xE9, 0xCE, 0xA1, 0x17, 0x4})); + ApplyPatch(base, 0x142D2F0, std::to_array({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xEB, 0x84})); + ApplyPatch(base, 0x142FB71, std::to_array({0xB8, 0x1, 0x0, 0x0, 0x0, 0xD3, 0xE0, 0x9, 0x46, 0x78, 0xE9, 0x55, 0xD7, 0xFF, 0xFF})); + ApplyPatch(base, 0x1487620, std::to_array({0xE9, 0x34, 0x77, 0xF6, 0x3})); + ApplyPatch(base, 0x1487644, std::to_array({0xE8, 0x57, 0xC4, 0x0, 0x0, 0x90, 0xE9, 0xC9, 0xF6, 0x1, 0x4})); + ApplyPatch(base, 0x1487664, std::to_array({0xE8, 0xB7, 0xEE, 0xFF, 0xFF, 0x90, 0xE9, 0x5F, 0x87, 0xE4, 0x3})); + ApplyPatch(base, 0x1487675, std::to_array({0xE9, 0xD8, 0x33, 0x4D, 0x4})); + ApplyPatch(base, 0x1487682, std::to_array({0xE8, 0xF9, 0x51, 0xCA, 0xFE, 0x90, 0xE9, 0xFD, 0xE, 0x89, 0x0})); + ApplyPatch(base, 0x14876B4, std::to_array({0xE8, 0x67, 0xEE, 0xFF, 0xFF, 0x90, 0xE9, 0xC0, 0x4A, 0xED, 0x3})); + ApplyPatch(base, 0x14876D5, std::to_array({0xE9, 0x34, 0x51, 0x49, 0x4})); + ApplyPatch(base, 0x148770C, std::to_array({0xE8, 0x9F, 0x30, 0x27, 0xFF, 0x90, 0xE9, 0x68, 0xAA, 0x49, 0x4})); + ApplyPatch(base, 0x148772F, std::to_array({0xE9, 0x59, 0x4E, 0x41, 0x4})); + ApplyPatch(base, 0x1487738, std::to_array({0xE9, 0x5E, 0x98, 0x4B, 0x4})); + ApplyPatch(base, 0x1487749, std::to_array({0xE8, 0xD2, 0x94, 0x0, 0x0, 0xEB, 0x60, 0xE9, 0x64, 0xA5, 0x1A, 0x4})); + ApplyPatch(base, 0x148775B, std::to_array({0xE9, 0xCA, 0x7, 0x75, 0x0})); + ApplyPatch(base, 0x1487762, std::to_array({0xE8, 0x79, 0xF9, 0x7F, 0x0, 0x90, 0xE9, 0x85, 0xE0, 0x3B, 0x4})); + ApplyPatch(base, 0x148778E, std::to_array({0xE8, 0xED, 0x50, 0xCA, 0xFE, 0x90, 0xE9, 0x23, 0xA7, 0x12, 0x4})); + ApplyPatch(base, 0x14877A7, std::to_array({0xE8, 0x44, 0xAB, 0x7F, 0x0, 0x90, 0xEB, 0x80})); + ApplyPatch(base, 0x14877B0, std::to_array({0xE9, 0x60, 0xCA, 0xB, 0x4})); + ApplyPatch(base, 0x14877B8, std::to_array({0xE9, 0xFF, 0xB5, 0x40, 0x4})); + ApplyPatch(base, 0x14877C6, std::to_array({0xE9, 0xAE, 0x7A, 0x15, 0x4})); + ApplyPatch(base, 0x14877D2, std::to_array({0xE9, 0xD6, 0x2, 0x1E, 0x4})); + ApplyPatch(base, 0x14B6441, std::to_array({0x23, 0x46, 0x74, 0xF, 0x85, 0x7F, 0x6D, 0xF7, 0xFF, 0xE9, 0x74, 0x6D, 0xF7, 0xFF})); + ApplyPatch(base, 0x16780B4, std::to_array({0x48, 0x8D, 0xD, 0x3D, 0xE9, 0xE, 0x3, 0xE9, 0x50, 0x4F, 0xDB, 0xFF})); + ApplyPatch(base, 0x1ACBA82, std::to_array({0x80, 0xF9, 0xFF, 0xF, 0x84, 0x7C, 0x17, 0x96, 0xFF, 0xE9, 0xF3, 0x87, 0xDC, 0x3})); + ApplyPatch(base, 0x1BD7F2A, std::to_array({0x48, 0x8B, 0x8E, 0x38, 0xAA, 0x0, 0x0, 0xE9, 0x2C, 0xF8, 0x8A, 0xFF})); + ApplyPatch(base, 0x1BE7665, std::to_array({0x45, 0xF, 0xB6, 0x45, 0x61, 0x48, 0x89, 0xC1, 0x4C, 0x89, 0xFA, 0x45, 0x31, 0xC9, 0xE9, 0x70, 0x59, 0x84, 0xFF})); + ApplyPatch(base, 0x1BED121, std::to_array({0x48, 0x89, 0xE9, 0x89, 0xDA, 0x41, 0x89, 0xF8, 0x41, 0xB1, 0x1, 0xE9, 0x6A, 0xFE, 0x83, 0xFF})); + ApplyPatch(base, 0x1BF26A5, std::to_array({0x41, 0x80, 0x7D, 0x61, 0xFF, 0xF, 0x84, 0x2, 0xA6, 0x83, 0xFF, 0xE9, 0xF4, 0x1D, 0xD9, 0x3})); + ApplyPatch(base, 0x1CEF549, std::to_array({0x31, 0xDB, 0xE9, 0x40, 0xDA, 0x73, 0xFF})); + ApplyPatch(base, 0x1CFDBE7, std::to_array({0x48, 0x8B, 0x2E, 0x48, 0x8D, 0x15, 0xB8, 0x23, 0xAE, 0x0, 0x48, 0x8D, 0x3D, 0xF, 0x8, 0xAE, 0x0, 0x48, 0x89, 0xF1, 0x49, 0x89, 0xF8, 0x49, 0x89, 0xC1, 0xE9, 0x8B, 0xF0, 0x72, 0xFF})); + ApplyPatch(base, 0x1D0009C, std::to_array({0x49, 0x8B, 0xB6, 0x10, 0x27, 0x0, 0x0, 0x49, 0x8B, 0x45, 0x0, 0x4C, 0x89, 0xE9, 0xE9, 0xC5, 0xCB, 0x72, 0xFF})); + ApplyPatch(base, 0x1D1858A, std::to_array({0x8B, 0x8E, 0x64, 0xB4, 0x0, 0x0, 0x85, 0xC9, 0xF, 0x84, 0xB8, 0xF1, 0x76, 0xFF, 0xE9, 0x71, 0x9C, 0x5C, 0x3})); + ApplyPatch(base, 0x1D1C1B2, std::to_array({0x80, 0xF9, 0xFF, 0xF, 0x84, 0x83, 0xD, 0x71, 0xFF, 0xE9, 0x5B, 0xA6, 0x9E, 0x3})); + ApplyPatch(base, 0x1D6E615, std::to_array({0x48, 0x89, 0xF1, 0xE9, 0x27, 0x90, 0x71, 0xFF})); + ApplyPatch(base, 0x1D74B50, std::to_array({0x49, 0x8B, 0x86, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x8B, 0x48, 0x8, 0x44, 0x8B, 0xD, 0x8E, 0x1E, 0x9F, 0x2, 0x48, 0x8B, 0x1, 0x48, 0x8D, 0x15, 0xEF, 0xE1, 0xA6, 0x0, 0x4C, 0x8D, 0x5, 0x92, 0x71, 0xA8, 0x0, 0xE9, 0x40, 0x80, 0x6B, 0xFF})); + ApplyPatch(base, 0x1FB7762, std::to_array({0x41, 0x57, 0x4C, 0x8D, 0x3D, 0x45, 0x0, 0x4D, 0xFF, 0x4C, 0x87, 0x3C, 0x24, 0xC3})); + ApplyPatch(base, 0x20636A9, std::to_array({0x31, 0xED, 0xE9, 0x77, 0x97, 0x3C, 0xFF})); + ApplyPatch(base, 0x222E388, std::to_array({0x48, 0x89, 0xF9, 0xE9, 0x2E, 0xE8, 0x1F, 0xFF})); + ApplyPatch(base, 0x2232213, std::to_array({0x45, 0x31, 0xE4, 0xE9, 0x22, 0xB0, 0x1F, 0xFF})); + ApplyPatch(base, 0x22C3A7C, std::to_array({0x89, 0xF8, 0x48, 0x83, 0xC4, 0x28, 0x5B, 0x5D, 0x5F, 0x5E, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0x48, 0x8D, 0x64, 0x24, 0x8, 0xFF, 0x64, 0x24, 0xF8})); + ApplyPatch(base, 0x22C7118, std::to_array({0xD3, 0xC0, 0x21, 0x46, 0x74, 0xF, 0xB6, 0x4B, 0x61, 0x81, 0xF9, 0xFF, 0x0, 0x0, 0x0, 0xF, 0x84, 0xA8, 0x61, 0x16, 0xFF, 0xE9, 0x3F, 0x8A, 0x16, 0xFF})); + ApplyPatch(base, 0x529CCBE, std::to_array({0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x56, 0x57, 0x55, 0x53, 0x48, 0x83, 0xEC, 0x68, 0x4C, 0x89, 0xCF, 0x4D, 0x89, 0xC5, 0x49, 0x89, 0xD7, 0x49, 0x89, 0xCE, 0xC7, 0x44, 0x24, 0x54, 0x0, 0x0, 0x0, 0x0, 0x48, 0x8B, 0x2, 0x4C, 0x8D, 0x44, 0x24, 0x54, 0x48, 0x89, 0xD1, 0x4C, 0x89, 0xEA, 0xE9, 0x6D, 0xFE, 0x18, 0xFC})); + ApplyPatch(base, 0x52C5875, std::to_array({0x48, 0x8D, 0xC, 0x49, 0x3, 0x84, 0x8B, 0x10, 0x1, 0x0, 0x0, 0x3B, 0x84, 0x8B, 0x14, 0x1, 0x0, 0x0, 0xF, 0x86, 0x60, 0x75, 0x16, 0xFC, 0xE9, 0x83, 0xB2, 0x85, 0xFB})); + ApplyPatch(base, 0x52CFDCE, std::to_array({0xC6, 0x86, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0x41, 0x54, 0x4C, 0x8D, 0x25, 0xD2, 0x79, 0x1B, 0xFC, 0x4C, 0x87, 0x24, 0x24, 0xC3})); + ApplyPatch(base, 0x52D2DDA, std::to_array({0x66, 0x44, 0x89, 0x44, 0x24, 0x4A, 0x66, 0x44, 0x89, 0x4C, 0x24, 0x4C, 0x89, 0xCE, 0x4C, 0x89, 0xE1, 0x49, 0x89, 0xD4, 0x4C, 0x89, 0xEA, 0xE9, 0xDA, 0xA0, 0x15, 0xFC})); + ApplyPatch(base, 0x52E220E, std::to_array({0x83, 0xC8, 0x1, 0x2B, 0x86, 0x60, 0xB4, 0x0, 0x0, 0x39, 0xC8, 0xF, 0x86, 0x31, 0x55, 0x1A, 0xFC, 0xE9, 0x6C, 0xE6, 0x3C, 0x0})); + ApplyPatch(base, 0x53302A7, std::to_array({0x0, 0xC3, 0x34, 0x1, 0x0, 0xC2, 0xC0, 0xE2, 0x4, 0x8, 0xDA, 0x41, 0x88, 0x94, 0xF, 0x8C, 0x0, 0x0, 0x0, 0x52, 0x48, 0x8D, 0x15, 0xF0, 0xC9, 0xF, 0xFC, 0x48, 0x87, 0x14, 0x24, 0xC3})); + ApplyPatch(base, 0x535C17F, std::to_array({0xC6, 0x86, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0x40, 0xB7, 0x1, 0x83, 0xBE, 0x4C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x85, 0xC5, 0xB5, 0x12, 0xFC, 0xE9, 0xC7, 0xB5, 0xC5, 0xFC})); + ApplyPatch(base, 0x535DADD, std::to_array({0x34, 0x1, 0xF, 0xB6, 0xC0, 0x48, 0x8B, 0x75, 0x0, 0x48, 0x89, 0xE9, 0x89, 0xFA, 0x41, 0x89, 0xD8, 0xE9, 0xCA, 0xF4, 0xC, 0xFC})); + ApplyPatch(base, 0x538BD20, std::to_array({0x89, 0x1D, 0xCE, 0xAC, 0x3D, 0xFF, 0x48, 0x8D, 0xD, 0xCB, 0xAC, 0x3D, 0xFF, 0xE9, 0xFD, 0x12, 0xA, 0xFC})); + ApplyPatch(base, 0x53D9A9A, std::to_array({0x41, 0xF, 0xB6, 0x7D, 0x61, 0xBA, 0xFE, 0xFF, 0xFF, 0xFF, 0x89, 0xF9, 0xD3, 0xC2, 0x48, 0x89, 0xC5, 0xF3, 0xF, 0x7E, 0x40, 0x8, 0x66, 0xF, 0x6E, 0xCA, 0x66, 0xF, 0x70, 0xC9, 0x50, 0x66, 0xF, 0xDB, 0xC8, 0x66, 0xF, 0xD6, 0x48, 0x8, 0x48, 0x8B, 0x0, 0x48, 0x89, 0xE9, 0xE9, 0xBA, 0x34, 0x5, 0xFC})); + ApplyPatch(base, 0x53DE6D3, std::to_array({0xF, 0xB6, 0x4B, 0x61, 0x81, 0xF9, 0xFF, 0x0, 0x0, 0x0, 0xF, 0x84, 0xF2, 0xEB, 0x4, 0xFC, 0xE9, 0x3E, 0x42, 0x2E, 0x0})); + ApplyPatch(base, 0x53E07A5, std::to_array({0x48, 0x8B, 0xD, 0x1C, 0x62, 0x38, 0xFF, 0x48, 0x8B, 0xAC, 0xC1, 0x88, 0x1, 0x0, 0x0, 0x57, 0x48, 0x8D, 0x3D, 0x6B, 0xC6, 0x4, 0xFC, 0x48, 0x87, 0x3C, 0x24, 0xC3})); + ApplyPatch(base, 0x53E99B9, std::to_array({0x89, 0x7B, 0x8, 0x8B, 0x44, 0x24, 0x50, 0x89, 0x44, 0x24, 0x30, 0x4C, 0x89, 0x64, 0x24, 0x28, 0x66, 0x89, 0x74, 0x24, 0x20, 0x48, 0x89, 0xD9, 0x48, 0x89, 0xEA, 0x44, 0xF, 0xB7, 0x44, 0x24, 0x4A, 0x44, 0xF, 0xB7, 0x4C, 0x24, 0x4C, 0xE9, 0x17, 0x35, 0x4, 0xFC})); + ApplyPatch(base, 0x53EED59, std::to_array({0x56, 0x57, 0x53, 0x48, 0x83, 0xEC, 0x30, 0x48, 0x89, 0xCE, 0x48, 0x8B, 0x81, 0x48, 0xAA, 0x0, 0x0, 0x8B, 0x0, 0x83, 0xF8, 0x1, 0xF, 0x84, 0x0, 0x89, 0x9, 0xFC, 0xE9, 0x28, 0x56, 0xEC, 0xFA})); + ApplyPatch(base, 0x53F1AA0, std::to_array({0x48, 0x8B, 0xAF, 0x88, 0x7B, 0x0, 0x0, 0x44, 0x8B, 0xB6, 0x88, 0x0, 0x0, 0x0, 0x44, 0xF, 0xB7, 0x7E, 0xA, 0xF, 0xB6, 0x46, 0x49, 0x48, 0x83, 0xF8, 0x1F, 0xF, 0x87, 0x79, 0xB7, 0x3, 0xFC, 0xE9, 0x22, 0x97, 0x40, 0x0})); + ApplyPatch(base, 0x53F2CDE, std::to_array({0x41, 0xF, 0xB6, 0x4D, 0x61, 0x48, 0x81, 0xF9, 0xFF, 0x0, 0x0, 0x0, 0xF, 0x84, 0x5D, 0xA0, 0x3, 0xFC, 0xE9, 0x80, 0x2B, 0xED, 0xFF})); + ApplyPatch(base, 0x53FB5A8, std::to_array({0x53, 0x48, 0x83, 0xEC, 0x28, 0x4C, 0x89, 0xC3, 0x48, 0x89, 0xD6, 0x48, 0x89, 0xCF, 0x41, 0xF, 0xB6, 0x48, 0x61, 0xB8, 0x1, 0x0, 0x0, 0x0, 0xD3, 0xE0, 0x48, 0x81, 0xF9, 0xFF, 0x0, 0x0, 0x0, 0xF, 0x84, 0xF4, 0x1B, 0x3, 0xFC, 0xE9, 0x6D, 0xAE, 0xB, 0xFC})); + ApplyPatch(base, 0x54327B6, std::to_array({0x41, 0xF, 0xB6, 0x45, 0x60, 0x48, 0x69, 0xC0, 0xF0, 0xE, 0x0, 0x0, 0x49, 0x8D, 0x1C, 0x4, 0x48, 0x81, 0xC3, 0x50, 0xC1, 0x0, 0x0, 0x41, 0x8B, 0xBC, 0x4, 0x58, 0xC1, 0x0, 0x0, 0x8B, 0x5, 0x15, 0x42, 0x33, 0xFF, 0x85, 0xFF, 0x89, 0x74, 0x24, 0x50, 0xF, 0x84, 0x82, 0xA6, 0xFF, 0xFB, 0xE9, 0x49, 0xC4, 0x60, 0x0})); + ApplyPatch(base, 0x546063A, std::to_array({0x49, 0x8B, 0x8E, 0x10, 0x27, 0x0, 0x0, 0x48, 0x8B, 0x1, 0x48, 0x8D, 0x15, 0x81, 0x3E, 0x38, 0xFD, 0x4C, 0x8D, 0xD, 0x4, 0xC0, 0x3C, 0xFD, 0x49, 0x89, 0xF8, 0xE9, 0x55, 0xC6, 0xFC, 0xFB})); + ApplyPatch(base, 0x54A6D18, std::to_array({0x80, 0xBE, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x84, 0x8B, 0xA, 0xFE, 0xFB, 0xE9, 0xEE, 0xE9, 0x32, 0x0})); + ApplyPatch(base, 0x54B6CC0, std::to_array({0xF, 0xB6, 0x43, 0x60, 0x48, 0x69, 0xC8, 0xF0, 0xE, 0x0, 0x0, 0x4C, 0x1, 0xE9, 0x4C, 0x89, 0xE2, 0x45, 0x89, 0xF8, 0x45, 0x89, 0xF1, 0xE9, 0xB2, 0x65, 0xF7, 0xFB})); + ApplyPatch(base, 0x54D4C0A, std::to_array({0x8B, 0x2D, 0xE4, 0x1D, 0x29, 0xFF, 0x89, 0xE8, 0xF7, 0xD8, 0x39, 0xEB, 0xF7, 0xD5, 0xF, 0x43, 0xE8, 0x1, 0xDD, 0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0xF6, 0x7F, 0xF5, 0xFB})); + ApplyPatch(base, 0x54DA064, std::to_array({0x48, 0x89, 0xC1, 0x48, 0xD1, 0xE9, 0x41, 0xF, 0xB6, 0x94, 0xF, 0x8C, 0x0, 0x0, 0x0, 0x89, 0xD3, 0x80, 0xE3, 0xF, 0xC0, 0xEA, 0x4, 0x31, 0xED, 0x80, 0xFB, 0xF, 0x40, 0xF, 0x95, 0xC5, 0x31, 0xFF, 0x80, 0xFA, 0xF, 0x40, 0xF, 0x95, 0xC7, 0x83, 0xE0, 0x1, 0xF, 0x44, 0xEF, 0x40, 0x80, 0xFD, 0x1, 0xF, 0x85, 0x15, 0x2C, 0xF5, 0xFB, 0xE9, 0x5, 0x62, 0xE5, 0xFF})); + ApplyPatch(base, 0x54EA113, std::to_array({0xBA, 0x1, 0x0, 0x0, 0x0, 0x41, 0x89, 0xF0, 0x4D, 0x89, 0xF9, 0xE9, 0xEC, 0x2B, 0xF4, 0xFB})); + ApplyPatch(base, 0x5544215, std::to_array({0x48, 0x83, 0xC4, 0x30, 0x5B, 0x5F, 0x5E, 0x48, 0x8D, 0x64, 0x24, 0x8, 0xFF, 0x64, 0x24, 0xF8})); + ApplyPatch(base, 0x555DDC8, std::to_array({0x8D, 0x51, 0x1, 0x89, 0x96, 0x28, 0xE6, 0x2, 0x0, 0x48, 0x89, 0x84, 0xCE, 0xD8, 0xE5, 0x2, 0x0, 0xE9, 0x5A, 0x99, 0xF2, 0xFB})); + ApplyPatch(base, 0x557E8B7, std::to_array({0xC6, 0x44, 0x24, 0x20, 0x1, 0x48, 0x89, 0xD9, 0x4C, 0x89, 0xFA, 0x41, 0x89, 0xC0, 0x41, 0x89, 0xE9, 0xE9, 0x86, 0xE3, 0xEA, 0xFB})); + ApplyPatch(base, 0x5589F12, std::to_array({0x8B, 0x8E, 0x28, 0xE6, 0x2, 0x0, 0x48, 0x83, 0xF9, 0xE, 0xF, 0x87, 0x16, 0xD8, 0xEF, 0xFB, 0xE9, 0xA1, 0x3E, 0xFD, 0xFF})); + ApplyPatch(base, 0x5598973, std::to_array({0x48, 0x8B, 0x52, 0x8, 0x48, 0x8B, 0x18, 0x88, 0x4C, 0x24, 0x38, 0x48, 0x89, 0x54, 0x24, 0x30, 0x89, 0x6C, 0x24, 0x28, 0x48, 0x89, 0x7C, 0x24, 0x20, 0x48, 0xC7, 0x44, 0x24, 0x40, 0x0, 0x0, 0x0, 0x0, 0x48, 0x89, 0xC1, 0x57, 0x48, 0x8D, 0x3D, 0x73, 0x17, 0xF5, 0xFF, 0x48, 0x87, 0x3C, 0x24, 0xC3})); + ApplyPatch(base, 0x559B071, std::to_array({0x45, 0x84, 0xC9, 0xF, 0x84, 0x4F, 0x21, 0xE9, 0xFB, 0xE9, 0x8D, 0x21, 0xE9, 0xFB})); + ApplyPatch(base, 0x55A74A8, std::to_array({0x48, 0x8B, 0x87, 0x88, 0x7B, 0x0, 0x0, 0x40, 0xB7, 0x1, 0x48, 0x83, 0x78, 0x8, 0x0, 0xF, 0x84, 0xE, 0x5D, 0xE8, 0xFB, 0xE9, 0xC3, 0x8E, 0xC1, 0xFB})); + ApplyPatch(base, 0x55B0AB2, std::to_array({0xF, 0xB6, 0x43, 0x60, 0x48, 0x69, 0xC0, 0xF0, 0xE, 0x0, 0x0, 0x48, 0x8D, 0xC, 0x28, 0x48, 0x81, 0xC1, 0x50, 0xC1, 0x0, 0x0, 0x4C, 0x89, 0xE2, 0x45, 0x89, 0xF8, 0x45, 0x89, 0xF1, 0xE9, 0x86, 0xC7, 0xE7, 0xFB})); + ApplyPatch(base, 0x55B1EBC, std::to_array({0x83, 0xC8, 0x1, 0x2B, 0x86, 0x54, 0xB4, 0x0, 0x0, 0x39, 0xD8, 0xF, 0x86, 0xE3, 0x58, 0xED, 0xFB, 0xE9, 0xA2, 0x49, 0xFD, 0xFA})); + ApplyPatch(base, 0x55BD38E, std::to_array({0x66, 0x41, 0x83, 0x7F, 0xA, 0x0, 0xF, 0x84, 0x18, 0xF9, 0xE6, 0xFB, 0xE9, 0x54, 0xD6, 0x43, 0x0})); + ApplyPatch(base, 0x55DF279, std::to_array({0x48, 0x83, 0xC4, 0x30, 0x5B, 0x5F, 0x5E, 0x56, 0x48, 0x8D, 0x35, 0x98, 0x72, 0xEA, 0xFB, 0x48, 0x87, 0x34, 0x24, 0xC3})); + ApplyPatch(base, 0x562A404, std::to_array({0x48, 0x89, 0xC2, 0x41, 0xF, 0xB6, 0x47, 0x49, 0x48, 0x83, 0xF8, 0x1F, 0xF, 0x87, 0xF, 0x2A, 0xE0, 0xFB, 0xE9, 0x8A, 0x63, 0xDB, 0xFF})); + ApplyPatch(base, 0x5631CB9, std::to_array({0x31, 0xFF, 0x83, 0xBE, 0x4C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x84, 0xE8, 0x5A, 0xE5, 0xFB, 0xE9, 0x8E, 0x5A, 0xE5, 0xFB})); + ApplyPatch(base, 0x5662C13, std::to_array({0x8B, 0x86, 0x5C, 0xB5, 0x2, 0x0, 0x48, 0x69, 0xC0, 0xD0, 0x4, 0x0, 0x0, 0x48, 0x8D, 0xC, 0x6, 0x48, 0x81, 0xC1, 0x38, 0xB6, 0x2, 0x0, 0x48, 0x8D, 0x54, 0x24, 0x28, 0xE9, 0xD7, 0x4A, 0xE2, 0xFB})); + ApplyPatch(base, 0x5667AAD, std::to_array({0x31, 0xC0, 0x80, 0xBE, 0xFC, 0xAC, 0x0, 0x0, 0x0, 0xF, 0x94, 0xC0, 0xB9, 0x0, 0x0, 0x50, 0x10, 0x41, 0xB8, 0x0, 0x50, 0x10, 0x10, 0x44, 0xF, 0x44, 0xC1, 0x8D, 0x14, 0xC5, 0x4, 0x0, 0x0, 0x0, 0x48, 0x89, 0xF1, 0x41, 0x52, 0x4C, 0x8D, 0x15, 0xEB, 0xFC, 0xE1, 0xFB, 0x4C, 0x87, 0x14, 0x24, 0xC3})); + ApplyPatch(base, 0x5673410, std::to_array({0x84, 0xC0, 0xF, 0x85, 0x7B, 0x9E, 0xDB, 0xFB, 0xE9, 0xDD, 0x48, 0x0, 0x0})); + ApplyPatch(base, 0x5677CFA, std::to_array({0x4C, 0x8D, 0xAD, 0x50, 0xC1, 0x0, 0x0, 0x48, 0x89, 0xE9, 0x48, 0x89, 0xDA, 0xE9, 0x66, 0x55, 0xDB, 0xFB})); + ApplyPatch(base, 0x56978CC, std::to_array({0xF, 0xB7, 0x4C, 0x24, 0x4E, 0x45, 0x89, 0xE0, 0x41, 0x89, 0xF1, 0x48, 0x8B, 0x54, 0x24, 0x58, 0x4C, 0x8B, 0x64, 0x24, 0x60, 0x84, 0xC0, 0xF, 0x85, 0x18, 0x56, 0xD9, 0xFB, 0xE9, 0xCB, 0x55, 0xD9, 0xFB})); + ApplyPatch(base, 0x56B0890, std::to_array({0x48, 0x89, 0xF1, 0xBA, 0x6, 0x0, 0x0, 0x0, 0x41, 0xB8, 0x0, 0x30, 0x50, 0x10, 0xE9, 0x11, 0x6E, 0xDD, 0xFB})); + ApplyPatch(base, 0x56C2907, std::to_array({0x83, 0x3D, 0xEA, 0x40, 0xA, 0xFF, 0xFF, 0xF, 0x85, 0xF1, 0xA2, 0xD6, 0xFB, 0xE9, 0x7, 0x94, 0xCC, 0xFF})); + ApplyPatch(base, 0x56C2926, std::to_array({0xB8, 0xFE, 0xFF, 0xFF, 0xFF, 0xD3, 0xC0, 0x21, 0x46, 0x70, 0xB8, 0xFE, 0xFF, 0xFF, 0xFF, 0xF, 0xB6, 0x4B, 0x61, 0x81, 0xF9, 0xFF, 0x0, 0x0, 0x0, 0xF, 0x84, 0x90, 0xA9, 0xD6, 0xFB, 0xE9, 0xCE, 0x47, 0xC0, 0xFC})); + ApplyPatch(base, 0x56C4B7D, std::to_array({0x41, 0xF, 0xB6, 0x4D, 0x61, 0x41, 0x54, 0x4C, 0x8D, 0x25, 0xB3, 0x45, 0x1D, 0x0, 0x4C, 0x87, 0x24, 0x24, 0xC3})); + ApplyPatch(base, 0x56CAB0E, std::to_array({0x41, 0x55, 0x4C, 0x8D, 0x2D, 0xA2, 0x23, 0xD6, 0xFB, 0x4C, 0x87, 0x2C, 0x24, 0xC3})); + ApplyPatch(base, 0x570681B, std::to_array({0xB8, 0x1, 0x0, 0x0, 0x0, 0xD3, 0xE0, 0x41, 0x9, 0x47, 0x74, 0xE9, 0x13, 0x67, 0xD2, 0xFB})); + ApplyPatch(base, 0x576491B, std::to_array({0x48, 0x89, 0xC3, 0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x13, 0x83, 0xCC, 0xFB})); + ApplyPatch(base, 0x57D5718, std::to_array({0x48, 0x89, 0xF1, 0xBA, 0x6, 0x0, 0x0, 0x0, 0x41, 0xB8, 0x0, 0x30, 0x50, 0x10, 0xE9, 0x39, 0x1F, 0xCB, 0xFB})); + ApplyPatch(base, 0x57F9C71, std::to_array({0x48, 0x83, 0xC4, 0x68, 0x5B, 0x5D, 0x5F, 0x5E, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, 0x5F, 0x48, 0x8D, 0x64, 0x24, 0x8, 0xFF, 0x64, 0x24, 0xF8})); + ApplyPatch(base, 0x57FB1E8, std::to_array({0x48, 0x8B, 0xD, 0xD9, 0xB7, 0xF6, 0xFE, 0x4C, 0x8B, 0xA4, 0xC1, 0x88, 0x1, 0x0, 0x0, 0x41, 0x54, 0x4C, 0x8D, 0x25, 0x3D, 0x20, 0xC3, 0xFB, 0x4C, 0x87, 0x24, 0x24, 0xC3})); + ApplyPatch(base, 0x581B586, std::to_array({0x49, 0x8B, 0x86, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x8B, 0x48, 0x8, 0x48, 0x8B, 0x1, 0x48, 0x8D, 0x15, 0x46, 0xF6, 0xFF, 0xFC, 0x4C, 0x8D, 0x5, 0x5D, 0x1, 0xFD, 0xFC, 0xE9, 0xD8, 0x17, 0xC1, 0xFB})); + ApplyPatch(base, 0x5830C32, std::to_array({0x49, 0x8B, 0x86, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x8B, 0x48, 0x8, 0x48, 0x85, 0xC9, 0xF, 0x84, 0x3C, 0xC1, 0xBF, 0xFB, 0xE9, 0xDD, 0xDB, 0xA4, 0xFB})); + ApplyPatch(base, 0x58452D8, std::to_array({0x41, 0xF, 0xB6, 0x4D, 0x61, 0x83, 0xF9, 0x1F, 0xF, 0x87, 0x48, 0x7C, 0xBE, 0xFB, 0xE9, 0x6F, 0xA9, 0x4, 0x0})); + ApplyPatch(base, 0x58457F2, std::to_array({0x8B, 0x8E, 0x4C, 0xB4, 0x0, 0x0, 0xF3, 0x48, 0xF, 0x2A, 0xC1, 0xF3, 0xF, 0x59, 0x86, 0x50, 0xB4, 0x0, 0x0, 0xF3, 0x48, 0xF, 0x2C, 0xD8, 0x84, 0xC0, 0xF, 0x44, 0xD9, 0x85, 0xDB, 0xF, 0x94, 0xC0, 0x40, 0x8, 0xC7, 0xF, 0x85, 0x93, 0x1F, 0xC4, 0xFB, 0xE9, 0x6C, 0x1F, 0xC4, 0xFB})); + ApplyPatch(base, 0x588FC5A, std::to_array({0x48, 0x89, 0xC8, 0x48, 0xD1, 0xE8, 0xF6, 0xC1, 0x1, 0xB9, 0xF, 0x0, 0x0, 0x0, 0xBA, 0xF0, 0x0, 0x0, 0x0, 0xF, 0x44, 0xD1, 0x41, 0x20, 0x94, 0x7, 0x8C, 0x0, 0x0, 0x0, 0x41, 0xF, 0xB6, 0x4D, 0x61, 0xE9, 0xAC, 0xD2, 0xB9, 0xFB})); + ApplyPatch(base, 0x5892DBC, std::to_array({0x48, 0x89, 0xF1, 0xBA, 0x6, 0x0, 0x0, 0x0, 0x41, 0xB8, 0x0, 0x0, 0x30, 0x10, 0xE9, 0xF7, 0x49, 0xBF, 0xFB})); + ApplyPatch(base, 0x5894283, std::to_array({0x48, 0x8B, 0x87, 0x90, 0x7B, 0x0, 0x0, 0x48, 0x8D, 0xC, 0x49, 0x8B, 0x94, 0x88, 0x10, 0x1, 0x0, 0x0, 0x83, 0xC2, 0x12, 0x3B, 0x94, 0x88, 0x14, 0x1, 0x0, 0x0, 0xF, 0x86, 0x67, 0x8F, 0xB9, 0xFB, 0xE9, 0x3B, 0xBB, 0x30, 0xFB})); + ApplyPatch(base, 0x589913E, std::to_array({0x49, 0x8B, 0x96, 0x88, 0x7B, 0x0, 0x0, 0x41, 0x54, 0x4C, 0x8D, 0x25, 0x25, 0xF8, 0xCF, 0xFF, 0x4C, 0x87, 0x24, 0x24, 0xC3})); + ApplyPatch(base, 0x589C58D, std::to_array({0x84, 0xC0, 0xF, 0x84, 0x3D, 0xB2, 0xBE, 0xFB, 0xE9, 0x16, 0xB2, 0xBE, 0xFB})); + ApplyPatch(base, 0x58AB446, std::to_array({0x49, 0x8B, 0x86, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x8B, 0x50, 0x8, 0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0xA2, 0x1B, 0xB8, 0xFB})); + ApplyPatch(base, 0x58B023F, std::to_array({0x51, 0x48, 0x8D, 0xD, 0xBE, 0xC9, 0xB7, 0xFB, 0x48, 0x87, 0xC, 0x24, 0xC3})); + ApplyPatch(base, 0x590BEBA, std::to_array({0x39, 0xC3, 0xF, 0x82, 0xCE, 0x10, 0xB2, 0xFB, 0xE9, 0xA, 0x11, 0xB2, 0xFB})); + ApplyPatch(base, 0x591BA22, std::to_array({0x80, 0x7E, 0x4A, 0xFF, 0xF, 0x84, 0xB2, 0x17, 0xB1, 0xFB, 0xE9, 0x98, 0x17, 0xB1, 0xFB})); + ApplyPatch(base, 0x591C80E, std::to_array({0xF, 0xB6, 0x86, 0xFC, 0xAC, 0x0, 0x0, 0x89, 0xC1, 0x80, 0xF1, 0x1, 0x88, 0x8E, 0x8C, 0xE8, 0x1, 0x0, 0x84, 0xC0, 0xF, 0x84, 0x90, 0xAF, 0xB6, 0xFB, 0xE9, 0xE6, 0x63, 0xD4, 0xFF})); + ApplyPatch(base, 0x592217F, std::to_array({0x48, 0x8B, 0x44, 0x24, 0x28, 0x48, 0x85, 0xC0, 0xF, 0x84, 0xAB, 0x55, 0xB6, 0xFB, 0xE9, 0x80, 0x7D, 0xC6, 0xFF})); + ApplyPatch(base, 0x5940F9B, std::to_array({0x8B, 0x96, 0x5C, 0xB5, 0x2, 0x0, 0xFF, 0xC2, 0x89, 0x96, 0x5C, 0xB5, 0x2, 0x0, 0x48, 0x89, 0xF1, 0xE9, 0x98, 0x67, 0xB4, 0xFB})); + ApplyPatch(base, 0x595AA52, std::to_array({0x80, 0xBE, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x84, 0xF1, 0xCC, 0xB2, 0xFB, 0xE9, 0x1E, 0xCC, 0xB2, 0xFB})); + ApplyPatch(base, 0x5973EBF, std::to_array({0x49, 0x8B, 0x17, 0x4C, 0x89, 0xF9, 0x48, 0x85, 0xC0, 0xF, 0x84, 0xF6, 0x8D, 0xAB, 0xFB, 0xE9, 0x5D, 0x8D, 0xAB, 0xFB})); + ApplyPatch(base, 0x597FE99, std::to_array({0x84, 0xC0, 0xF, 0x84, 0xB9, 0xCD, 0xAA, 0xFB, 0xE9, 0xFF, 0x27, 0x27, 0xFC})); + ApplyPatch(base, 0x59831F1, std::to_array({0x8B, 0x44, 0x24, 0x50, 0x89, 0x44, 0x24, 0x30, 0x48, 0x89, 0x54, 0x24, 0x28, 0x66, 0x89, 0x4C, 0x24, 0x20, 0x66, 0x89, 0x4C, 0x24, 0x4E, 0x48, 0x89, 0xD9, 0x4C, 0x89, 0x64, 0x24, 0x60, 0x48, 0x89, 0x54, 0x24, 0x58, 0x48, 0x89, 0xEA, 0x56, 0x48, 0x8D, 0x35, 0x55, 0x5D, 0xD6, 0xFA, 0x48, 0x87, 0x34, 0x24, 0xC3})); + ApplyPatch(base, 0x59844A9, std::to_array({0x49, 0x8B, 0x86, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x83, 0x78, 0x8, 0x0, 0xF, 0x84, 0x0, 0x87, 0xAA, 0xFB, 0xE9, 0x25, 0xCC, 0x40, 0xFB})); + ApplyPatch(base, 0x599FEB2, std::to_array({0x45, 0xF, 0xB7, 0x47, 0x8, 0x45, 0xF, 0xB7, 0x4F, 0xA, 0x41, 0x55, 0x4C, 0x8D, 0x2D, 0xF1, 0x28, 0xA9, 0xFF, 0x4C, 0x87, 0x2C, 0x24, 0xC3})); + ApplyPatch(base, 0x59A7491, std::to_array({0x85, 0xC0, 0xF, 0x84, 0x38, 0x5B, 0xA8, 0xFB, 0xE9, 0xAB, 0x80, 0x34, 0xFC})); + ApplyPatch(base, 0x59F7A78, std::to_array({0x48, 0x8B, 0x45, 0x0, 0x48, 0x89, 0xE9, 0x89, 0xDA, 0xE9, 0x23, 0x55, 0xA3, 0xFB})); + ApplyPatch(base, 0x59F8BB7, std::to_array({0x48, 0x85, 0xC0, 0xF, 0x84, 0x2D, 0x44, 0xA3, 0xFB, 0xE9, 0x0, 0x77, 0xB1, 0xFA})); + ApplyPatch(base, 0x59FA9F3, std::to_array({0x41, 0xF, 0xB6, 0x45, 0x61, 0x83, 0xF8, 0x1F, 0xF, 0x87, 0xB1, 0x22, 0xA3, 0xFB, 0xE9, 0x5E, 0xF6, 0xAD, 0xFF})); + ApplyPatch(base, 0x59FB449, std::to_array({0x89, 0xC3, 0x8B, 0x5, 0xA7, 0xB5, 0xD6, 0xFE, 0x8B, 0xD, 0xC1, 0xC0, 0x49, 0xFD, 0x65, 0x48, 0x8B, 0x14, 0x25, 0x58, 0x0, 0x0, 0x0, 0x48, 0x8B, 0xC, 0xCA, 0x3B, 0x81, 0x34, 0x6, 0x0, 0x0, 0xF, 0x8F, 0x99, 0x1B, 0xA3, 0xFB, 0xE9, 0x90, 0x17, 0xA3, 0xFB})); + ApplyPatch(base, 0x5A3EC35, std::to_array({0x39, 0xC7, 0xF, 0x84, 0x31, 0xE2, 0x9E, 0xFB, 0xE9, 0xCC, 0xBE, 0xC8, 0xFF})); + ApplyPatch(base, 0x5A3F21C, std::to_array({0x41, 0x57, 0x41, 0x56, 0x41, 0x55, 0x41, 0x54, 0x56, 0x57, 0x55, 0x41, 0x52, 0x4C, 0x8D, 0x15, 0x78, 0xC3, 0x9B, 0xFF, 0x4C, 0x87, 0x14, 0x24, 0xC3})); + ApplyPatch(base, 0x5A50071, std::to_array({0x49, 0x8B, 0x9E, 0x90, 0x7B, 0x0, 0x0, 0x48, 0x89, 0xF9, 0xE9, 0x9C, 0xCC, 0x9D, 0xFB})); + } + static bool CheckForFSL() { int num_versions = 0; @@ -95,16 +323,24 @@ namespace YimMenu } else { +#if !RESTORE_DESTROYED_FUNCTIONS LOGF(FATAL, "YimMenu requires FSL to be loaded. Please get it from UnknownCheats.me"); +#endif } if (m_BattlEyeRunning) LOGF(WARNING, "If you are not running an actual BattlEye bypass, exit the game immediately and ensure that BE is properly disabled"); -#if 0 if (!m_FSLProvidesBEBypass && !m_BattlEyeRunning) + { Pointers.BattlEyeStatusUpdatePatch->Apply(); + +#if RESTORE_DESTROYED_FUNCTIONS + uintptr_t base = ModuleMgr.Get("GTA5_Enhanced.exe"_J)->Base(); + PatchEncryptedFunctions(base); + PatchDestroyedFunctions(base); #endif + } while (true) { diff --git a/src/game/features/players/troll/GivePlayerAllWeapon.cpp b/src/game/features/players/troll/GivePlayerAllWeapon.cpp index cd90151..7452712 100644 --- a/src/game/features/players/troll/GivePlayerAllWeapon.cpp +++ b/src/game/features/players/troll/GivePlayerAllWeapon.cpp @@ -17,5 +17,5 @@ namespace YimMenu::Features } }; - static GivePlayerAllWeapon _GivePlayerAllWeapon{"giveplayerallweapon", "GivePlayerAllWeapon", "Give All Weapon the player"}; + static GivePlayerAllWeapon _GivePlayerAllWeapon{"giveweapons", "Give Weapons", "Gives all weapons to the player"}; } \ No newline at end of file diff --git a/src/game/features/vehicle/EnterLast.cpp b/src/game/features/vehicle/EnterLast.cpp index 5870969..46f88da 100644 --- a/src/game/features/vehicle/EnterLast.cpp +++ b/src/game/features/vehicle/EnterLast.cpp @@ -14,5 +14,5 @@ namespace YimMenu::Features } }; - static EnterLastVehicle _EnterLastVehicle{"enterlastvehicle", "Enter last vehicle", "Enters the last vehicle you were in"}; + static EnterLastVehicle _EnterLastVehicle{"enterlastvehicle", "Enter Last Vehicle", "Enters the last vehicle you were in"}; }; \ No newline at end of file diff --git a/src/game/features/vehicle/RocketBoost.cpp b/src/game/features/vehicle/RocketBoost.cpp index 657d649..6946682 100644 --- a/src/game/features/vehicle/RocketBoost.cpp +++ b/src/game/features/vehicle/RocketBoost.cpp @@ -8,7 +8,7 @@ namespace YimMenu::Features {0, "Infinite"}, {1, "Instant recharge"}}; - static ListCommand _BoostBehavior{"boostbehavior", "Boost behavior", "Desired rocket boost behavior", g_BoostBehavior, 0}; + static ListCommand _BoostBehavior{"boostbehavior", "Boost Behavior", "Desired rocket boost behavior", g_BoostBehavior, 0}; class ModifyRocketBoost : public LoopedCommand { @@ -35,5 +35,5 @@ namespace YimMenu::Features } }; - static ModifyRocketBoost _ModifyRocketBoost{"modifyboostbehavior", "Modify boost behavior", "Modify rocket boost behavior for vehicles that support it"}; + static ModifyRocketBoost _ModifyRocketBoost{"modifyboostbehavior", "Modify Boost Behavior", "Modify rocket boost behavior for vehicles that support it"}; }; \ No newline at end of file diff --git a/src/game/features/world/IPLManager.cpp b/src/game/features/world/IPLManager.cpp index 407df09..e1fcfc9 100644 --- a/src/game/features/world/IPLManager.cpp +++ b/src/game/features/world/IPLManager.cpp @@ -25,7 +25,7 @@ namespace YimMenu::Features }; static IPLSelectorHelper g_IPLSelectorHelper{}; - static ListCommand _IPLSelector{"iplselector", "IPL set to load", "IPL set to load", g_IPLSelectorHelper.availableIplNames, 0}; + static ListCommand _IPLSelector{"iplselector", "IPL", "The IPL to load", g_IPLSelectorHelper.availableIplNames, 0}; class IPLLoader : public Command { diff --git a/src/game/frontend/items/Group.cpp b/src/game/frontend/items/Group.cpp index dc83ff5..b56a218 100644 --- a/src/game/frontend/items/Group.cpp +++ b/src/game/frontend/items/Group.cpp @@ -6,9 +6,9 @@ namespace YimMenu { - Group::Group(const std::string& name, int items_per_row) : + Group::Group(const std::string& name, int items_per_column) : m_Name(name), - m_ItemsPerRow(items_per_row) + m_ItemsPerColumn(items_per_column) { } @@ -34,7 +34,7 @@ namespace YimMenu item->Draw(); item_count++; - if (m_ItemsPerRow != -1 && item_count % m_ItemsPerRow == 0) + if (m_ItemsPerColumn != -1 && item_count % m_ItemsPerColumn == 0) { ImGui::EndGroup(); ImGui::SameLine(); diff --git a/src/game/frontend/items/Items.hpp b/src/game/frontend/items/Items.hpp index 6e499d7..334a7bc 100644 --- a/src/game/frontend/items/Items.hpp +++ b/src/game/frontend/items/Items.hpp @@ -160,7 +160,7 @@ namespace YimMenu private: std::string m_Name; - int m_ItemsPerRow; + int m_ItemsPerColumn; std::vector> m_Items; }; diff --git a/src/game/frontend/submenus/Network.cpp b/src/game/frontend/submenus/Network.cpp index 57ff38b..88e85e4 100644 --- a/src/game/frontend/submenus/Network.cpp +++ b/src/game/frontend/submenus/Network.cpp @@ -83,7 +83,7 @@ namespace YimMenu::Submenus toxicGroup->AddItem(std::make_shared("killexploitall"_J, "Permadeath All")); toxicGroup->AddItem(std::make_shared("explodeall"_J, "Explode All")); toxicGroup->AddItem(std::make_shared("ceokickall"_J, "CEO Kick All")); - toxicGroup->AddItem(std::make_shared("hkickall"_J, "hostkick for all player")); + toxicGroup->AddItem(std::make_shared("hkickall"_J, "Host Kick All")); miscGroup->AddItem(std::make_shared("forcethunder"_J)); diff --git a/src/game/frontend/submenus/Network/RandomEvents.cpp b/src/game/frontend/submenus/Network/RandomEvents.cpp index 0ba7aac..3e98a82 100644 --- a/src/game/frontend/submenus/Network/RandomEvents.cpp +++ b/src/game/frontend/submenus/Network/RandomEvents.cpp @@ -144,6 +144,7 @@ namespace YimMenu::Submenus { for (int event = DRUG_VEHICLE; event < MAX_EVENTS; event++) { + // TODO: this can crash the game sendUpdateRECoordsTSECooldownPatches.push_back(ScriptPatches::AddPatch(randomEventScripts[event], ScriptPointer("SendUpdateRECoordsTSECooldownPatch", "43 88 13 2E 00 01"), {0x71, 0x00, 0x00})); } } diff --git a/src/game/frontend/submenus/Player/Troll.cpp b/src/game/frontend/submenus/Player/Troll.cpp index 28f9a44..f59aeb9 100644 --- a/src/game/frontend/submenus/Player/Troll.cpp +++ b/src/game/frontend/submenus/Player/Troll.cpp @@ -13,7 +13,7 @@ namespace YimMenu::Submenus general->AddItem(std::make_shared("sendsext"_J)); general->AddItem(std::make_shared("sendphantomcar"_J)); general->AddItem(std::make_shared("sendgooch"_J)); - general->AddItem(std::make_shared("giveplayerallweapon"_J)); + general->AddItem(std::make_shared("giveweapons"_J)); bounty->AddItem(std::make_shared("bountyamount"_J, "Amount")); bounty->AddItem(std::make_shared("anonymousbounty"_J, "Anonymous")); diff --git a/src/game/frontend/submenus/Settings.cpp b/src/game/frontend/submenus/Settings.cpp index 8121aa6..6de5c4f 100644 --- a/src/game/frontend/submenus/Settings.cpp +++ b/src/game/frontend/submenus/Settings.cpp @@ -99,7 +99,7 @@ namespace YimMenu::Submenus overlay->AddItem(std::make_shared("overlay"_J)); overlay->AddItem(std::make_shared("overlay"_J, std::make_shared("overlayfps"_J))); - chat->AddItem(std::make_shared("clearchat"_J)); + chat->AddItem(std::make_shared("clearchat"_J)); game->AddItem(playerEsp); game->AddItem(pedEsp); diff --git a/src/game/frontend/submenus/Teleport.cpp b/src/game/frontend/submenus/Teleport.cpp index c343964..4323f85 100644 --- a/src/game/frontend/submenus/Teleport.cpp +++ b/src/game/frontend/submenus/Teleport.cpp @@ -49,10 +49,10 @@ namespace YimMenu::Submenus InputTextWithHint("Category", "Category", &category).Draw(); ImGui::PushItemWidth(200); - InputTextWithHint("Location name", "New location", &newLocationName).Draw(); + InputTextWithHint("Location Name", "New location", &newLocationName).Draw(); ImGui::PopItemWidth(); - if (ImGui::Button("Save current location")) // Button widget still crashes + if (ImGui::Button("Save Current Location")) // Button widget still crashes { FiberPool::Push([=] { if (newLocationName.empty()) diff --git a/src/game/hooks/Anticheat/PrepareMetricForSending.cpp b/src/game/hooks/Anticheat/PrepareMetricForSending.cpp index 2e13d81..1cd2e32 100644 --- a/src/game/hooks/Anticheat/PrepareMetricForSending.cpp +++ b/src/game/hooks/Anticheat/PrepareMetricForSending.cpp @@ -3,7 +3,7 @@ namespace YimMenu::Hooks { - bool Anticheat::PrepareMetricForSending(rage::JsonSerializer* ser, void* a2, void* a3, rage::rlMetric* metric) + bool Anticheat::PrepareMetricForSending(rage::JsonSerializer* ser, bool* failed, char* a3, uint64_t time, rage::rlMetric* metric) { return false; // don't send any telemetry } diff --git a/src/game/hooks/Hooks.hpp b/src/game/hooks/Hooks.hpp index 00a3130..8b16bac 100644 --- a/src/game/hooks/Hooks.hpp +++ b/src/game/hooks/Hooks.hpp @@ -46,7 +46,7 @@ namespace YimMenu::Hooks { extern void QueueDependency(__int64 a1); extern void GameSkeletonUpdate(rage::gameSkeleton* skeleton, int type); - extern bool PrepareMetricForSending(rage::JsonSerializer* ser, void* a2, void* a3, rage::rlMetric* metric); + extern bool PrepareMetricForSending(rage::JsonSerializer* ser, bool* failed, char* a3, uint64_t time, rage::rlMetric* metric); extern BOOL GetThreadContext(HANDLE hThread, LPCONTEXT lpContext); extern void HttpStartRequest(void* request); extern bool BattlEyeServerProcessPlayerJoin(CBattlEyePlayerModifyInterface* server_iface, CBattlEyePlayerModifyContext* context); diff --git a/src/game/pointers/Pointers.cpp b/src/game/pointers/Pointers.cpp index 409193f..d58b5ec 100644 --- a/src/game/pointers/Pointers.cpp +++ b/src/game/pointers/Pointers.cpp @@ -228,21 +228,10 @@ namespace YimMenu IsBEBanned = ptr.Add(3).Rip().Add(8).Add(4).Add(8).Add(4).As(); }); -#if 0 - constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"80 B9 92 0A 00 00 01 48 81 D1 90 0A 00 00">("BattlEyeStatusUpdatePatch"); + constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"C6 05 ? ? ? ? 00 84 C0 0F 84 ? ? ? ? E9">("BattlEyeStatusUpdatePatch"); scanner.Add(battlEyeStatusUpdatePatchPtrn, [this](PointerCalculator ptr) { - BattlEyeStatusUpdatePatch = BytePatches::Add(ptr.As(), - // since arxan obfuscated this subroutine, return mid-function instead - // TODO: this might break in a later update - std::to_array({ - 0x48, 0x83, 0xC4, 0x38, // add rsp, 38h - 0x5F, // pop rdi - 0x5E, // pop rsi - 0xC3 // ret - }) - ); + BattlEyeStatusUpdatePatch = BytePatches::Add(ptr.Add(11).Rip().Add(1).Rip().As(), std::to_array({0xC3})); }); -#endif constexpr auto writeNetArrayDataPtrn = Pattern<"0F 84 06 03 00 00 0F B6 83">("WriteNetArrayData"); scanner.Add(writeNetArrayDataPtrn, [this](PointerCalculator ptr) {