fix(anticheat): fix anticheat bypass (#1019)

This commit is contained in:
Mr-X-GTA
2026-07-18 16:45:14 +02:00
committed by GitHub
parent 5d9ab8d6fb
commit a9e9e0a419
20 changed files with 288 additions and 38 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ Experimental menu for GTA 5: Enhanced
## How to use ## 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) 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) 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 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
@@ -17,7 +17,7 @@ namespace YimMenu
ImGui::SetNextWindowSize(windowSize, ImGuiCond_FirstUseEver); ImGui::SetNextWindowSize(windowSize, ImGuiCond_FirstUseEver);
ImGui::SetNextWindowPos(ImVec2(centerX, centerY), 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(); auto pos = ImGui::GetCursorPos();
if(ImGui::Begin("##ClassicInputWindow", nullptr, flags)) if(ImGui::Begin("##ClassicInputWindow", nullptr, flags))
{ {
@@ -42,7 +42,7 @@ namespace YimMenu
pos.y -= 28; pos.y -= 28;
ImGui::SetCursorPos(ImVec2(pos.x + 130, pos.y)); 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(); auto activeSubmenu = YimMenu::UIManager::GetActiveSubmenu();
if (activeSubmenu) if (activeSubmenu)
+19 -3
View File
@@ -2,10 +2,26 @@
namespace YimMenu 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); uint8_t* base = static_cast<uint8_t*>(static_cast<void*>(GetModuleHandle(0)));
m_Offset = 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<void*>(), static_cast<void*>(base));
break;
}
}
if (!m_Memory)
{
LOG(FATAL) << "Failed to allocate call hook memory!";
}
} }
void* CallHookMemory::AllocateJumpSequenceImpl(void* func) void* CallHookMemory::AllocateJumpSequenceImpl(void* func)
+8
View File
@@ -65,6 +65,8 @@ namespace YimMenu
return false; return false;
} }
m_Enabled = true;
return true; return true;
} }
@@ -80,6 +82,8 @@ namespace YimMenu
return false; return false;
} }
m_Enabled = false;
return true; return true;
} }
@@ -95,6 +99,8 @@ namespace YimMenu
return false; return false;
} }
m_Enabled = true;
return true; return true;
} }
@@ -110,6 +116,8 @@ namespace YimMenu
return false; return false;
} }
m_Enabled = false;
return true; return true;
} }
+2 -2
View File
@@ -93,8 +93,8 @@ namespace YimMenu
if (opcode.opcode == 0x8B && opcode.modrm_mod != 3) if (opcode.opcode == 0x8B && opcode.modrm_mod != 3)
{ {
uint8_t regId = opcode.rex_r | opcode.modrm_reg; uint8_t regIdx = opcode.rex_r << 3 | opcode.modrm_reg;
switch (regId) switch (regIdx)
{ {
case 0: exception_info->ContextRecord->Rax = 0; break; case 0: exception_info->ContextRecord->Rax = 0; break;
case 1: exception_info->ContextRecord->Rcx = 0; break; case 1: exception_info->ContextRecord->Rcx = 0; break;
+237 -1
View File
@@ -11,8 +11,236 @@ using FnGetVersion = int (*)();
using FnLocalSaves = bool (*)(); using FnLocalSaves = bool (*)();
using FnBattlEyeBypass = bool (*)(); using FnBattlEyeBypass = bool (*)();
#define RESTORE_DESTROYED_FUNCTIONS true
namespace YimMenu namespace YimMenu
{ {
static void ApplyPatch(uintptr_t base, uintptr_t offset, std::span<std::uint8_t const> const values)
{
memcpy(reinterpret_cast<void*>(base + offset), values.data(), values.size());
}
static void PatchEncryptedFunctions(uintptr_t base)
{
ApplyPatch(base, 0x14F20B0, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x89, 0x43, 0x8, 0x89, 0xC7, 0xE9, 0x3E, 0x43, 0x38, 0x1}));
ApplyPatch(base, 0x1095A5, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x21, 0x36, 0x32, 0x1}));
ApplyPatch(base, 0x10EC63, std::to_array<uint8_t>({0x53, 0x48, 0x8D, 0x1D, 0x60, 0xE5, 0x31, 0x1, 0x48, 0x87, 0x1C, 0x24, 0xC3}));
ApplyPatch(base, 0x2A5689, std::to_array<uint8_t>({0x31, 0xFF, 0xE9, 0x3B, 0x7B, 0x18, 0x1}));
ApplyPatch(base, 0x2B43A2, std::to_array<uint8_t>({0x83, 0xF8, 0x3, 0xF, 0x85, 0x2A, 0x33, 0x1D, 0x1, 0xE9, 0x65, 0xA2, 0xAB, 0x1}));
ApplyPatch(base, 0x426835, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x4, 0x67, 0x0, 0x1}));
ApplyPatch(base, 0x5102C5, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x86, 0xCC, 0xF1, 0x0}));
ApplyPatch(base, 0x586874, std::to_array<uint8_t>({0x48, 0x8B, 0x8E, 0x38, 0xAA, 0x0, 0x0, 0xE9, 0x27, 0xF, 0xF0, 0x0}));
ApplyPatch(base, 0x61AF85, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x47, 0x20, 0xE1, 0x0}));
ApplyPatch(base, 0x6E8F75, std::to_array<uint8_t>({0x45, 0x89, 0xC4, 0x44, 0x89, 0xCE, 0xE9, 0x1B, 0x3F, 0xD4, 0x0}));
ApplyPatch(base, 0x6E9043, std::to_array<uint8_t>({0x85, 0xC0, 0xF, 0x85, 0xC7, 0x3C, 0xD4, 0x0, 0xE9, 0x55, 0x5, 0xA2, 0xFF}));
ApplyPatch(base, 0x736C92, std::to_array<uint8_t>({0xFF, 0xC3, 0x48, 0x8B, 0x45, 0x0, 0x48, 0x89, 0xE9, 0xE9, 0x2A, 0x63, 0xCF, 0x0}));
ApplyPatch(base, 0x9A61E6, std::to_array<uint8_t>({0x89, 0xC6, 0x48, 0x89, 0xF9, 0xE9, 0x11, 0x6C, 0xA8, 0x0}));
ApplyPatch(base, 0xB20B15, std::to_array<uint8_t>({0xFF, 0x83, 0x68, 0x3, 0x0, 0x0, 0xE9, 0x2D, 0xC2, 0x90, 0x0}));
ApplyPatch(base, 0xB9FDE5, std::to_array<uint8_t>({0xFF, 0x80, 0x68, 0x3, 0x0, 0x0, 0xE9, 0x17, 0xD4, 0x88, 0x0}));
ApplyPatch(base, 0xC1A441, std::to_array<uint8_t>({0x4D, 0x8B, 0xA6, 0x88, 0x7B, 0x0, 0x0, 0x48, 0x89, 0xF9, 0xE9, 0xA7, 0x29, 0x81, 0x0}));
ApplyPatch(base, 0xD910E5, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x9F, 0xBA, 0x69, 0x0}));
ApplyPatch(base, 0xF78005, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0xC0, 0x4C, 0x4B, 0x0}));
ApplyPatch(base, 0x11C0385, std::to_array<uint8_t>({0x48, 0x8B, 0x6, 0x48, 0x89, 0xF1, 0xE9, 0x60, 0xCF, 0x26, 0x0}));
ApplyPatch(base, 0x123C559, std::to_array<uint8_t>({0x41, 0x54, 0x4C, 0x8D, 0x25, 0x50, 0x7, 0x1F, 0x0, 0x4C, 0x87, 0x24, 0x24, 0xC3}));
ApplyPatch(base, 0x1257F13, std::to_array<uint8_t>({0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x42, 0x4D, 0x1D, 0x0}));
ApplyPatch(base, 0x125BC41, std::to_array<uint8_t>({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<uint8_t>({0x48, 0x8B, 0x1, 0xE9, 0x30, 0xE5, 0x1A, 0x0}));
ApplyPatch(base, 0x142CB30, std::to_array<uint8_t>({0xE9, 0x89, 0x1, 0xE7, 0x3}));
ApplyPatch(base, 0x142CB3E, std::to_array<uint8_t>({0xE9, 0x45, 0x18, 0xE0, 0x0}));
ApplyPatch(base, 0x142CB62, std::to_array<uint8_t>({0xFF, 0x90, 0x68, 0x1, 0x0, 0x0, 0x90, 0xE9, 0x2B, 0x33, 0x55, 0x4}));
ApplyPatch(base, 0x142CB8F, std::to_array<uint8_t>({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xE9, 0xB5, 0x7F, 0x94, 0x0}));
ApplyPatch(base, 0x142CBB8, std::to_array<uint8_t>({0xFF, 0x50, 0x30, 0x90, 0xEB, 0x80, 0xE8, 0xCD, 0x3A, 0xCC, 0xFE, 0x90, 0xE9, 0x7A, 0xC4, 0x2B, 0xFF}));
ApplyPatch(base, 0x142CBD1, std::to_array<uint8_t>({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<uint8_t>({0xE9, 0x0, 0x80, 0xA, 0x4}));
ApplyPatch(base, 0x142CC1E, std::to_array<uint8_t>({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x98, 0x72, 0x54, 0x4}));
ApplyPatch(base, 0x142CC30, std::to_array<uint8_t>({0xFF, 0x52, 0x60, 0x90, 0xE9, 0xE2, 0x7C, 0x33, 0x4}));
ApplyPatch(base, 0x142CC3C, std::to_array<uint8_t>({0xFF, 0x90, 0xE0, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x6F, 0x1C, 0x15, 0x4}));
ApplyPatch(base, 0x142CC53, std::to_array<uint8_t>({0xE8, 0x58, 0xEA, 0xFF, 0xFF, 0xEB, 0x70, 0xE9, 0xB4, 0xB2, 0xE2, 0xFF}));
ApplyPatch(base, 0x142CC60, std::to_array<uint8_t>({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x30, 0x34, 0x8D, 0x0}));
ApplyPatch(base, 0x142CC74, std::to_array<uint8_t>({0xFF, 0x50, 0x48, 0x90, 0xE9, 0x6A, 0xF, 0x8D, 0x0}));
ApplyPatch(base, 0x142CC91, std::to_array<uint8_t>({0xFF, 0x55, 0x30, 0x90, 0xE9, 0xA0, 0x39, 0x3, 0x4}));
ApplyPatch(base, 0x142CCAF, std::to_array<uint8_t>({0xFF, 0x50, 0x30, 0x90, 0xE9, 0xB9, 0xCF, 0x3C, 0x4}));
ApplyPatch(base, 0x142CCC4, std::to_array<uint8_t>({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<uint8_t>({0xFF, 0x53, 0x8, 0x90, 0xE9, 0x59, 0x33, 0x62, 0x4}));
ApplyPatch(base, 0x142CD1C, std::to_array<uint8_t>({0xE8, 0x6F, 0x39, 0xCC, 0xFE, 0x90, 0xE9, 0xB7, 0x5F, 0xFC, 0x3}));
ApplyPatch(base, 0x142CD4D, std::to_array<uint8_t>({0xE9, 0xE0, 0x3E, 0x40, 0x4}));
ApplyPatch(base, 0x142CD60, std::to_array<uint8_t>({0xFF, 0x50, 0x8, 0x90, 0xE9, 0x1D, 0xE8, 0x3E, 0x4}));
ApplyPatch(base, 0x142CD7F, std::to_array<uint8_t>({0xFF, 0x50, 0x30, 0x90, 0xE9, 0x6, 0x6, 0x19, 0x4, 0xE9, 0x59, 0x94, 0x57, 0xFF}));
ApplyPatch(base, 0x142CDA7, std::to_array<uint8_t>({0xE9, 0xFD, 0x68, 0xC3, 0x0}));
ApplyPatch(base, 0x142CDED, std::to_array<uint8_t>({0xE9, 0x4F, 0xD6, 0x7E, 0xFF}));
ApplyPatch(base, 0x142CDF7, std::to_array<uint8_t>({0xE8, 0x94, 0x38, 0xCC, 0xFE, 0x90, 0xEB, 0x89}));
ApplyPatch(base, 0x142CE01, std::to_array<uint8_t>({0xE8, 0x9A, 0xA0, 0x67, 0xFF, 0x90, 0xE9, 0xF8, 0xD5, 0x1F, 0x4}));
ApplyPatch(base, 0x142CE25, std::to_array<uint8_t>({0xEB, 0x80, 0xE9, 0x15, 0xEE, 0xE2, 0xFF}));
ApplyPatch(base, 0x142CE69, std::to_array<uint8_t>({0xE9, 0xB8, 0xBC, 0xC7, 0xFE, 0xE9, 0x7E, 0x63, 0x55, 0x4}));
ApplyPatch(base, 0x142CE9B, std::to_array<uint8_t>({0xE8, 0xE0, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0x26, 0xAA, 0x26, 0x4}));
ApplyPatch(base, 0x142CEB9, std::to_array<uint8_t>({0xE9, 0x1C, 0x5F, 0xEA, 0x3}));
ApplyPatch(base, 0x142CED0, std::to_array<uint8_t>({0xE8, 0x2B, 0x22, 0x0, 0x0, 0x90, 0xE9, 0xDE, 0xCA, 0xFB, 0x3}));
ApplyPatch(base, 0x142CEFC, std::to_array<uint8_t>({0xE8, 0x7F, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0xD1, 0x83, 0x41, 0x4}));
ApplyPatch(base, 0x142CF0D, std::to_array<uint8_t>({0xE9, 0x7F, 0xA5, 0x57, 0x4}));
ApplyPatch(base, 0x142CF2E, std::to_array<uint8_t>({0xE9, 0x7F, 0xF2, 0x8E, 0x0}));
ApplyPatch(base, 0x142CF3E, std::to_array<uint8_t>({0xE9, 0xF2, 0x98, 0xFF, 0xFE}));
ApplyPatch(base, 0x142CF44, std::to_array<uint8_t>({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x6A, 0xBC, 0x5C, 0x4}));
ApplyPatch(base, 0x142CF50, std::to_array<uint8_t>({0xE9, 0x65, 0xEF, 0x4D, 0x4}));
ApplyPatch(base, 0x142CF56, std::to_array<uint8_t>({0xFF, 0x50, 0x50, 0x90, 0xE9, 0x3B, 0xCB, 0xFA, 0x3}));
ApplyPatch(base, 0x142CF87, std::to_array<uint8_t>({0xFF, 0x50, 0x20, 0x90, 0xEB, 0x80}));
ApplyPatch(base, 0x142CF90, std::to_array<uint8_t>({0xE9, 0x8C, 0x1, 0x7C, 0x0}));
ApplyPatch(base, 0x142CF9B, std::to_array<uint8_t>({0xE8, 0x20, 0xA7, 0xFE, 0xFF, 0x90, 0xE9, 0xD2, 0xAA, 0x5C, 0x4}));
ApplyPatch(base, 0x142CFA9, std::to_array<uint8_t>({0xFF, 0x50, 0x40, 0x90, 0xE9, 0x2B, 0xB, 0xF3, 0x3}));
ApplyPatch(base, 0x142CFBD, std::to_array<uint8_t>({0xFF, 0x54, 0xC6, 0x70, 0x90, 0xE9, 0xCB, 0x9C, 0x30, 0xFF}));
ApplyPatch(base, 0x142CFCA, std::to_array<uint8_t>({0xFF, 0x50, 0x20, 0x90, 0xEB, 0x80}));
ApplyPatch(base, 0x142CFD1, std::to_array<uint8_t>({0xE9, 0xAF, 0xDF, 0x1E, 0xFF}));
ApplyPatch(base, 0x142CFD7, std::to_array<uint8_t>({0xFF, 0x50, 0x60, 0x90, 0xE9, 0x85, 0xA6, 0x7B, 0x0}));
ApplyPatch(base, 0x142CFE8, std::to_array<uint8_t>({0xE8, 0x53, 0x0, 0x0, 0x0, 0x90, 0xE9, 0x53, 0xE4, 0x47, 0x4, 0xE9, 0x61, 0xF5, 0xE0, 0xFF}));
ApplyPatch(base, 0x142CFFE, std::to_array<uint8_t>({0xFF, 0x90, 0x38, 0x2, 0x0, 0x0, 0x90, 0xEB, 0xEC}));
ApplyPatch(base, 0x142D009, std::to_array<uint8_t>({0xE9, 0xA6, 0xB0, 0x24, 0x0}));
ApplyPatch(base, 0x142D010, std::to_array<uint8_t>({0xE8, 0xA7, 0xD5, 0xFE, 0x0, 0x90, 0xE9, 0xEC, 0x58, 0x29, 0x4, 0xE9, 0x1F, 0x32, 0x48, 0x4}));
ApplyPatch(base, 0x142D02F, std::to_array<uint8_t>({0xE8, 0xF0, 0xD5, 0xFE, 0x0, 0x90, 0xEB, 0xE4}));
ApplyPatch(base, 0x142D190, std::to_array<uint8_t>({0xE9, 0x87, 0x20, 0x61, 0x4, 0xE9, 0xEF, 0x84, 0xE7, 0xFE}));
ApplyPatch(base, 0x142D1BE, std::to_array<uint8_t>({0xE9, 0x50, 0x50, 0xE0, 0x0, 0xE9, 0x5A, 0xE8, 0x4E, 0x4}));
ApplyPatch(base, 0x142D1C9, std::to_array<uint8_t>({0xEB, 0xCA, 0xE9, 0xAC, 0x68, 0xE9, 0x0}));
ApplyPatch(base, 0x142D1DE, std::to_array<uint8_t>({0xE9, 0x9F, 0xE8, 0x69, 0x0}));
ApplyPatch(base, 0x142D1E4, std::to_array<uint8_t>({0xE9, 0x27, 0x62, 0x24, 0x4}));
ApplyPatch(base, 0x142D207, std::to_array<uint8_t>({0xE9, 0x65, 0xDE, 0x16, 0x4, 0xE9, 0x8F, 0x48, 0xFC, 0x3}));
ApplyPatch(base, 0x142D23A, std::to_array<uint8_t>({0xEB, 0x82}));
ApplyPatch(base, 0x142D23D, std::to_array<uint8_t>({0xE9, 0x70, 0x38, 0x18, 0x4}));
ApplyPatch(base, 0x142D25C, std::to_array<uint8_t>({0xE8, 0x6F, 0xA3, 0xFF, 0xFF, 0x90, 0xEB, 0x80}));
ApplyPatch(base, 0x142D272, std::to_array<uint8_t>({0xE8, 0x89, 0x1E, 0x0, 0x0, 0x90, 0xE9, 0x43, 0x9A, 0x8, 0x4, 0xE9, 0xE1, 0x19, 0xCE, 0xFE}));
ApplyPatch(base, 0x142D28E, std::to_array<uint8_t>({0xE8, 0x3D, 0xA3, 0xFF, 0xFF, 0x90, 0xE9, 0x3A, 0x14, 0xFB, 0x3}));
ApplyPatch(base, 0x142D2D5, std::to_array<uint8_t>({0xE9, 0xCE, 0xA1, 0x17, 0x4}));
ApplyPatch(base, 0x142D2F0, std::to_array<uint8_t>({0xFF, 0x90, 0x98, 0x0, 0x0, 0x0, 0x90, 0xEB, 0x84}));
ApplyPatch(base, 0x142FB71, std::to_array<uint8_t>({0xB8, 0x1, 0x0, 0x0, 0x0, 0xD3, 0xE0, 0x9, 0x46, 0x78, 0xE9, 0x55, 0xD7, 0xFF, 0xFF}));
ApplyPatch(base, 0x1487620, std::to_array<uint8_t>({0xE9, 0x34, 0x77, 0xF6, 0x3}));
ApplyPatch(base, 0x1487644, std::to_array<uint8_t>({0xE8, 0x57, 0xC4, 0x0, 0x0, 0x90, 0xE9, 0xC9, 0xF6, 0x1, 0x4}));
ApplyPatch(base, 0x1487664, std::to_array<uint8_t>({0xE8, 0xB7, 0xEE, 0xFF, 0xFF, 0x90, 0xE9, 0x5F, 0x87, 0xE4, 0x3}));
ApplyPatch(base, 0x1487675, std::to_array<uint8_t>({0xE9, 0xD8, 0x33, 0x4D, 0x4}));
ApplyPatch(base, 0x1487682, std::to_array<uint8_t>({0xE8, 0xF9, 0x51, 0xCA, 0xFE, 0x90, 0xE9, 0xFD, 0xE, 0x89, 0x0}));
ApplyPatch(base, 0x14876B4, std::to_array<uint8_t>({0xE8, 0x67, 0xEE, 0xFF, 0xFF, 0x90, 0xE9, 0xC0, 0x4A, 0xED, 0x3}));
ApplyPatch(base, 0x14876D5, std::to_array<uint8_t>({0xE9, 0x34, 0x51, 0x49, 0x4}));
ApplyPatch(base, 0x148770C, std::to_array<uint8_t>({0xE8, 0x9F, 0x30, 0x27, 0xFF, 0x90, 0xE9, 0x68, 0xAA, 0x49, 0x4}));
ApplyPatch(base, 0x148772F, std::to_array<uint8_t>({0xE9, 0x59, 0x4E, 0x41, 0x4}));
ApplyPatch(base, 0x1487738, std::to_array<uint8_t>({0xE9, 0x5E, 0x98, 0x4B, 0x4}));
ApplyPatch(base, 0x1487749, std::to_array<uint8_t>({0xE8, 0xD2, 0x94, 0x0, 0x0, 0xEB, 0x60, 0xE9, 0x64, 0xA5, 0x1A, 0x4}));
ApplyPatch(base, 0x148775B, std::to_array<uint8_t>({0xE9, 0xCA, 0x7, 0x75, 0x0}));
ApplyPatch(base, 0x1487762, std::to_array<uint8_t>({0xE8, 0x79, 0xF9, 0x7F, 0x0, 0x90, 0xE9, 0x85, 0xE0, 0x3B, 0x4}));
ApplyPatch(base, 0x148778E, std::to_array<uint8_t>({0xE8, 0xED, 0x50, 0xCA, 0xFE, 0x90, 0xE9, 0x23, 0xA7, 0x12, 0x4}));
ApplyPatch(base, 0x14877A7, std::to_array<uint8_t>({0xE8, 0x44, 0xAB, 0x7F, 0x0, 0x90, 0xEB, 0x80}));
ApplyPatch(base, 0x14877B0, std::to_array<uint8_t>({0xE9, 0x60, 0xCA, 0xB, 0x4}));
ApplyPatch(base, 0x14877B8, std::to_array<uint8_t>({0xE9, 0xFF, 0xB5, 0x40, 0x4}));
ApplyPatch(base, 0x14877C6, std::to_array<uint8_t>({0xE9, 0xAE, 0x7A, 0x15, 0x4}));
ApplyPatch(base, 0x14877D2, std::to_array<uint8_t>({0xE9, 0xD6, 0x2, 0x1E, 0x4}));
ApplyPatch(base, 0x14B6441, std::to_array<uint8_t>({0x23, 0x46, 0x74, 0xF, 0x85, 0x7F, 0x6D, 0xF7, 0xFF, 0xE9, 0x74, 0x6D, 0xF7, 0xFF}));
ApplyPatch(base, 0x16780B4, std::to_array<uint8_t>({0x48, 0x8D, 0xD, 0x3D, 0xE9, 0xE, 0x3, 0xE9, 0x50, 0x4F, 0xDB, 0xFF}));
ApplyPatch(base, 0x1ACBA82, std::to_array<uint8_t>({0x80, 0xF9, 0xFF, 0xF, 0x84, 0x7C, 0x17, 0x96, 0xFF, 0xE9, 0xF3, 0x87, 0xDC, 0x3}));
ApplyPatch(base, 0x1BD7F2A, std::to_array<uint8_t>({0x48, 0x8B, 0x8E, 0x38, 0xAA, 0x0, 0x0, 0xE9, 0x2C, 0xF8, 0x8A, 0xFF}));
ApplyPatch(base, 0x1BE7665, std::to_array<uint8_t>({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<uint8_t>({0x48, 0x89, 0xE9, 0x89, 0xDA, 0x41, 0x89, 0xF8, 0x41, 0xB1, 0x1, 0xE9, 0x6A, 0xFE, 0x83, 0xFF}));
ApplyPatch(base, 0x1BF26A5, std::to_array<uint8_t>({0x41, 0x80, 0x7D, 0x61, 0xFF, 0xF, 0x84, 0x2, 0xA6, 0x83, 0xFF, 0xE9, 0xF4, 0x1D, 0xD9, 0x3}));
ApplyPatch(base, 0x1CEF549, std::to_array<uint8_t>({0x31, 0xDB, 0xE9, 0x40, 0xDA, 0x73, 0xFF}));
ApplyPatch(base, 0x1CFDBE7, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x80, 0xF9, 0xFF, 0xF, 0x84, 0x83, 0xD, 0x71, 0xFF, 0xE9, 0x5B, 0xA6, 0x9E, 0x3}));
ApplyPatch(base, 0x1D6E615, std::to_array<uint8_t>({0x48, 0x89, 0xF1, 0xE9, 0x27, 0x90, 0x71, 0xFF}));
ApplyPatch(base, 0x1D74B50, std::to_array<uint8_t>({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<uint8_t>({0x41, 0x57, 0x4C, 0x8D, 0x3D, 0x45, 0x0, 0x4D, 0xFF, 0x4C, 0x87, 0x3C, 0x24, 0xC3}));
ApplyPatch(base, 0x20636A9, std::to_array<uint8_t>({0x31, 0xED, 0xE9, 0x77, 0x97, 0x3C, 0xFF}));
ApplyPatch(base, 0x222E388, std::to_array<uint8_t>({0x48, 0x89, 0xF9, 0xE9, 0x2E, 0xE8, 0x1F, 0xFF}));
ApplyPatch(base, 0x2232213, std::to_array<uint8_t>({0x45, 0x31, 0xE4, 0xE9, 0x22, 0xB0, 0x1F, 0xFF}));
ApplyPatch(base, 0x22C3A7C, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x89, 0x1D, 0xCE, 0xAC, 0x3D, 0xFF, 0x48, 0x8D, 0xD, 0xCB, 0xAC, 0x3D, 0xFF, 0xE9, 0xFD, 0x12, 0xA, 0xFC}));
ApplyPatch(base, 0x53D9A9A, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x80, 0xBE, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x84, 0x8B, 0xA, 0xFE, 0xFB, 0xE9, 0xEE, 0xE9, 0x32, 0x0}));
ApplyPatch(base, 0x54B6CC0, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0xBA, 0x1, 0x0, 0x0, 0x0, 0x41, 0x89, 0xF0, 0x4D, 0x89, 0xF9, 0xE9, 0xEC, 0x2B, 0xF4, 0xFB}));
ApplyPatch(base, 0x5544215, std::to_array<uint8_t>({0x48, 0x83, 0xC4, 0x30, 0x5B, 0x5F, 0x5E, 0x48, 0x8D, 0x64, 0x24, 0x8, 0xFF, 0x64, 0x24, 0xF8}));
ApplyPatch(base, 0x555DDC8, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x45, 0x84, 0xC9, 0xF, 0x84, 0x4F, 0x21, 0xE9, 0xFB, 0xE9, 0x8D, 0x21, 0xE9, 0xFB}));
ApplyPatch(base, 0x55A74A8, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x66, 0x41, 0x83, 0x7F, 0xA, 0x0, 0xF, 0x84, 0x18, 0xF9, 0xE6, 0xFB, 0xE9, 0x54, 0xD6, 0x43, 0x0}));
ApplyPatch(base, 0x55DF279, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x84, 0xC0, 0xF, 0x85, 0x7B, 0x9E, 0xDB, 0xFB, 0xE9, 0xDD, 0x48, 0x0, 0x0}));
ApplyPatch(base, 0x5677CFA, std::to_array<uint8_t>({0x4C, 0x8D, 0xAD, 0x50, 0xC1, 0x0, 0x0, 0x48, 0x89, 0xE9, 0x48, 0x89, 0xDA, 0xE9, 0x66, 0x55, 0xDB, 0xFB}));
ApplyPatch(base, 0x56978CC, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({0x83, 0x3D, 0xEA, 0x40, 0xA, 0xFF, 0xFF, 0xF, 0x85, 0xF1, 0xA2, 0xD6, 0xFB, 0xE9, 0x7, 0x94, 0xCC, 0xFF}));
ApplyPatch(base, 0x56C2926, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({0x41, 0x55, 0x4C, 0x8D, 0x2D, 0xA2, 0x23, 0xD6, 0xFB, 0x4C, 0x87, 0x2C, 0x24, 0xC3}));
ApplyPatch(base, 0x570681B, std::to_array<uint8_t>({0xB8, 0x1, 0x0, 0x0, 0x0, 0xD3, 0xE0, 0x41, 0x9, 0x47, 0x74, 0xE9, 0x13, 0x67, 0xD2, 0xFB}));
ApplyPatch(base, 0x576491B, std::to_array<uint8_t>({0x48, 0x89, 0xC3, 0x49, 0x8B, 0x7, 0x4C, 0x89, 0xF9, 0xE9, 0x13, 0x83, 0xCC, 0xFB}));
ApplyPatch(base, 0x57D5718, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x84, 0xC0, 0xF, 0x84, 0x3D, 0xB2, 0xBE, 0xFB, 0xE9, 0x16, 0xB2, 0xBE, 0xFB}));
ApplyPatch(base, 0x58AB446, std::to_array<uint8_t>({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<uint8_t>({0x51, 0x48, 0x8D, 0xD, 0xBE, 0xC9, 0xB7, 0xFB, 0x48, 0x87, 0xC, 0x24, 0xC3}));
ApplyPatch(base, 0x590BEBA, std::to_array<uint8_t>({0x39, 0xC3, 0xF, 0x82, 0xCE, 0x10, 0xB2, 0xFB, 0xE9, 0xA, 0x11, 0xB2, 0xFB}));
ApplyPatch(base, 0x591BA22, std::to_array<uint8_t>({0x80, 0x7E, 0x4A, 0xFF, 0xF, 0x84, 0xB2, 0x17, 0xB1, 0xFB, 0xE9, 0x98, 0x17, 0xB1, 0xFB}));
ApplyPatch(base, 0x591C80E, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x80, 0xBE, 0x5C, 0xB4, 0x0, 0x0, 0x0, 0xF, 0x84, 0xF1, 0xCC, 0xB2, 0xFB, 0xE9, 0x1E, 0xCC, 0xB2, 0xFB}));
ApplyPatch(base, 0x5973EBF, std::to_array<uint8_t>({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<uint8_t>({0x84, 0xC0, 0xF, 0x84, 0xB9, 0xCD, 0xAA, 0xFB, 0xE9, 0xFF, 0x27, 0x27, 0xFC}));
ApplyPatch(base, 0x59831F1, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({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<uint8_t>({0x85, 0xC0, 0xF, 0x84, 0x38, 0x5B, 0xA8, 0xFB, 0xE9, 0xAB, 0x80, 0x34, 0xFC}));
ApplyPatch(base, 0x59F7A78, std::to_array<uint8_t>({0x48, 0x8B, 0x45, 0x0, 0x48, 0x89, 0xE9, 0x89, 0xDA, 0xE9, 0x23, 0x55, 0xA3, 0xFB}));
ApplyPatch(base, 0x59F8BB7, std::to_array<uint8_t>({0x48, 0x85, 0xC0, 0xF, 0x84, 0x2D, 0x44, 0xA3, 0xFB, 0xE9, 0x0, 0x77, 0xB1, 0xFA}));
ApplyPatch(base, 0x59FA9F3, std::to_array<uint8_t>({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<uint8_t>({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<uint8_t>({0x39, 0xC7, 0xF, 0x84, 0x31, 0xE2, 0x9E, 0xFB, 0xE9, 0xCC, 0xBE, 0xC8, 0xFF}));
ApplyPatch(base, 0x5A3F21C, std::to_array<uint8_t>({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<uint8_t>({0x49, 0x8B, 0x9E, 0x90, 0x7B, 0x0, 0x0, 0x48, 0x89, 0xF9, 0xE9, 0x9C, 0xCC, 0x9D, 0xFB}));
}
static bool CheckForFSL() static bool CheckForFSL()
{ {
int num_versions = 0; int num_versions = 0;
@@ -95,16 +323,24 @@ namespace YimMenu
} }
else else
{ {
#if !RESTORE_DESTROYED_FUNCTIONS
LOGF(FATAL, "YimMenu requires FSL to be loaded. Please get it from UnknownCheats.me"); LOGF(FATAL, "YimMenu requires FSL to be loaded. Please get it from UnknownCheats.me");
#endif
} }
if (m_BattlEyeRunning) 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"); 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) if (!m_FSLProvidesBEBypass && !m_BattlEyeRunning)
{
Pointers.BattlEyeStatusUpdatePatch->Apply(); Pointers.BattlEyeStatusUpdatePatch->Apply();
#if RESTORE_DESTROYED_FUNCTIONS
uintptr_t base = ModuleMgr.Get("GTA5_Enhanced.exe"_J)->Base();
PatchEncryptedFunctions(base);
PatchDestroyedFunctions(base);
#endif #endif
}
while (true) while (true)
{ {
@@ -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"};
} }
+1 -1
View File
@@ -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"};
}; };
+2 -2
View File
@@ -8,7 +8,7 @@ namespace YimMenu::Features
{0, "Infinite"}, {0, "Infinite"},
{1, "Instant recharge"}}; {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 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"};
}; };
+1 -1
View File
@@ -25,7 +25,7 @@ namespace YimMenu::Features
}; };
static IPLSelectorHelper g_IPLSelectorHelper{}; 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 class IPLLoader : public Command
{ {
+3 -3
View File
@@ -6,9 +6,9 @@
namespace YimMenu 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_Name(name),
m_ItemsPerRow(items_per_row) m_ItemsPerColumn(items_per_column)
{ {
} }
@@ -34,7 +34,7 @@ namespace YimMenu
item->Draw(); item->Draw();
item_count++; item_count++;
if (m_ItemsPerRow != -1 && item_count % m_ItemsPerRow == 0) if (m_ItemsPerColumn != -1 && item_count % m_ItemsPerColumn == 0)
{ {
ImGui::EndGroup(); ImGui::EndGroup();
ImGui::SameLine(); ImGui::SameLine();
+1 -1
View File
@@ -160,7 +160,7 @@ namespace YimMenu
private: private:
std::string m_Name; std::string m_Name;
int m_ItemsPerRow; int m_ItemsPerColumn;
std::vector<std::shared_ptr<UIItem>> m_Items; std::vector<std::shared_ptr<UIItem>> m_Items;
}; };
+1 -1
View File
@@ -83,7 +83,7 @@ namespace YimMenu::Submenus
toxicGroup->AddItem(std::make_shared<CommandItem>("killexploitall"_J, "Permadeath All")); toxicGroup->AddItem(std::make_shared<CommandItem>("killexploitall"_J, "Permadeath All"));
toxicGroup->AddItem(std::make_shared<CommandItem>("explodeall"_J, "Explode All")); toxicGroup->AddItem(std::make_shared<CommandItem>("explodeall"_J, "Explode All"));
toxicGroup->AddItem(std::make_shared<CommandItem>("ceokickall"_J, "CEO Kick All")); toxicGroup->AddItem(std::make_shared<CommandItem>("ceokickall"_J, "CEO Kick All"));
toxicGroup->AddItem(std::make_shared<CommandItem>("hkickall"_J, "hostkick for all player")); toxicGroup->AddItem(std::make_shared<CommandItem>("hkickall"_J, "Host Kick All"));
miscGroup->AddItem(std::make_shared<BoolCommandItem>("forcethunder"_J)); miscGroup->AddItem(std::make_shared<BoolCommandItem>("forcethunder"_J));
@@ -144,6 +144,7 @@ namespace YimMenu::Submenus
{ {
for (int event = DRUG_VEHICLE; event < MAX_EVENTS; event++) 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})); sendUpdateRECoordsTSECooldownPatches.push_back(ScriptPatches::AddPatch(randomEventScripts[event], ScriptPointer("SendUpdateRECoordsTSECooldownPatch", "43 88 13 2E 00 01"), {0x71, 0x00, 0x00}));
} }
} }
+1 -1
View File
@@ -13,7 +13,7 @@ namespace YimMenu::Submenus
general->AddItem(std::make_shared<PlayerCommandItem>("sendsext"_J)); general->AddItem(std::make_shared<PlayerCommandItem>("sendsext"_J));
general->AddItem(std::make_shared<PlayerCommandItem>("sendphantomcar"_J)); general->AddItem(std::make_shared<PlayerCommandItem>("sendphantomcar"_J));
general->AddItem(std::make_shared<PlayerCommandItem>("sendgooch"_J)); general->AddItem(std::make_shared<PlayerCommandItem>("sendgooch"_J));
general->AddItem(std::make_shared<PlayerCommandItem>("giveplayerallweapon"_J)); general->AddItem(std::make_shared<PlayerCommandItem>("giveweapons"_J));
bounty->AddItem(std::make_shared<IntCommandItem>("bountyamount"_J, "Amount")); bounty->AddItem(std::make_shared<IntCommandItem>("bountyamount"_J, "Amount"));
bounty->AddItem(std::make_shared<BoolCommandItem>("anonymousbounty"_J, "Anonymous")); bounty->AddItem(std::make_shared<BoolCommandItem>("anonymousbounty"_J, "Anonymous"));
+1 -1
View File
@@ -99,7 +99,7 @@ namespace YimMenu::Submenus
overlay->AddItem(std::make_shared<BoolCommandItem>("overlay"_J)); overlay->AddItem(std::make_shared<BoolCommandItem>("overlay"_J));
overlay->AddItem(std::make_shared<ConditionalItem>("overlay"_J, std::make_shared<BoolCommandItem>("overlayfps"_J))); overlay->AddItem(std::make_shared<ConditionalItem>("overlay"_J, std::make_shared<BoolCommandItem>("overlayfps"_J)));
chat->AddItem(std::make_shared<BoolCommandItem>("clearchat"_J)); chat->AddItem(std::make_shared<CommandItem>("clearchat"_J));
game->AddItem(playerEsp); game->AddItem(playerEsp);
game->AddItem(pedEsp); game->AddItem(pedEsp);
+2 -2
View File
@@ -49,10 +49,10 @@ namespace YimMenu::Submenus
InputTextWithHint("Category", "Category", &category).Draw(); InputTextWithHint("Category", "Category", &category).Draw();
ImGui::PushItemWidth(200); ImGui::PushItemWidth(200);
InputTextWithHint("Location name", "New location", &newLocationName).Draw(); InputTextWithHint("Location Name", "New location", &newLocationName).Draw();
ImGui::PopItemWidth(); ImGui::PopItemWidth();
if (ImGui::Button("Save current location")) // Button widget still crashes if (ImGui::Button("Save Current Location")) // Button widget still crashes
{ {
FiberPool::Push([=] { FiberPool::Push([=] {
if (newLocationName.empty()) if (newLocationName.empty())
@@ -3,7 +3,7 @@
namespace YimMenu::Hooks 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 return false; // don't send any telemetry
} }
+1 -1
View File
@@ -46,7 +46,7 @@ namespace YimMenu::Hooks
{ {
extern void QueueDependency(__int64 a1); extern void QueueDependency(__int64 a1);
extern void GameSkeletonUpdate(rage::gameSkeleton* skeleton, int type); 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 BOOL GetThreadContext(HANDLE hThread, LPCONTEXT lpContext);
extern void HttpStartRequest(void* request); extern void HttpStartRequest(void* request);
extern bool BattlEyeServerProcessPlayerJoin(CBattlEyePlayerModifyInterface* server_iface, CBattlEyePlayerModifyContext* context); extern bool BattlEyeServerProcessPlayerJoin(CBattlEyePlayerModifyInterface* server_iface, CBattlEyePlayerModifyContext* context);
+2 -13
View File
@@ -228,21 +228,10 @@ namespace YimMenu
IsBEBanned = ptr.Add(3).Rip().Add(8).Add(4).Add(8).Add(4).As<bool*>(); IsBEBanned = ptr.Add(3).Rip().Add(8).Add(4).Add(8).Add(4).As<bool*>();
}); });
#if 0 constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"C6 05 ? ? ? ? 00 84 C0 0F 84 ? ? ? ? E9">("BattlEyeStatusUpdatePatch");
constexpr auto battlEyeStatusUpdatePatchPtrn = Pattern<"80 B9 92 0A 00 00 01 48 81 D1 90 0A 00 00">("BattlEyeStatusUpdatePatch");
scanner.Add(battlEyeStatusUpdatePatchPtrn, [this](PointerCalculator ptr) { scanner.Add(battlEyeStatusUpdatePatchPtrn, [this](PointerCalculator ptr) {
BattlEyeStatusUpdatePatch = BytePatches::Add(ptr.As<void*>(), BattlEyeStatusUpdatePatch = BytePatches::Add(ptr.Add(11).Rip().Add(1).Rip().As<void*>(), std::to_array<std::uint8_t>({0xC3}));
// since arxan obfuscated this subroutine, return mid-function instead
// TODO: this might break in a later update
std::to_array<std::uint8_t>({
0x48, 0x83, 0xC4, 0x38, // add rsp, 38h
0x5F, // pop rdi
0x5E, // pop rsi
0xC3 // ret
})
);
}); });
#endif
constexpr auto writeNetArrayDataPtrn = Pattern<"0F 84 06 03 00 00 0F B6 83">("WriteNetArrayData"); constexpr auto writeNetArrayDataPtrn = Pattern<"0F 84 06 03 00 00 0F B6 83">("WriteNetArrayData");
scanner.Add(writeNetArrayDataPtrn, [this](PointerCalculator ptr) { scanner.Add(writeNetArrayDataPtrn, [this](PointerCalculator ptr) {