Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- namespace SDK {
- namespace Offsets
- {
- constexpr auto timestamp = 0x68CDC1C6;
- constexpr auto ref_def_ptr = 0xCA72F30;
- constexpr auto name_array = 0xCBA63F8;
- constexpr auto name_array_pos = 0x3058; // Updated from 0x3038
- constexpr auto name_array_size = 0xD0;
- constexpr auto loot_ptr = 0xE3DF1C8;
- constexpr auto loot_pos = 0x188;
- constexpr auto camera_base = 0xC6D3100;
- constexpr auto camera_pos = 0x20C;
- constexpr auto local_index = 0x1BC90;
- constexpr auto local_index_pos = 0x39C;
- constexpr auto game_mode = 0xBA4A4C8;
- constexpr auto weapon_definitions = 0xC907F80;
- constexpr auto distribute = 0x97FD0F8;
- constexpr uint32_t o_visible_bit = 0x1ABE10;
- constexpr uint32_t o_no_recoil = 0x1B1780;
- constexpr uint32_t Player_client_state_enum = 0x1A21F0;
- constexpr auto scoreboard = 0x1BE6A0;
- constexpr auto scoreboardsize = 0x80;
- namespace Player
- {
- constexpr auto size = 0x23D0;
- constexpr auto valid = 0xC6C;
- constexpr auto pos = 0xF90;
- constexpr auto team = 0x1C1A;
- constexpr auto stance = 0x2A4;
- constexpr auto weapon_index = 0x19D4;
- constexpr auto dead_1 = 0xB0; //ignore check health
- constexpr auto dead_2 = 0xC1; //ignore check health/bones
- constexpr auto dead_3 = 0x157FE; //ignore check health!!!
- };
- namespace Bone
- {
- constexpr auto bone_base = 0x1CDED8;
- constexpr auto size = 0x1C0;
- constexpr auto offset = 0xE0;
- };
- }
- enum AXIS_VEC : int {
- FORWARD_VEC = 0,
- RIGHT_VEC = 1,
- UP_VEC = 2,
- MAX_AXIS_VEC,
- };
- struct RefDef_T {
- int32_t x;
- int32_t y;
- int32_t width;
- int32_t height;
- Vec2 fov;
- char pad1[8];
- char pad2[4];
- Vec3 axis[MAX_AXIS_VEC];
- };
- class RefDef_Class {
- public:
- struct key {
- int32_t ref0;
- int32_t ref1;
- int32_t ref2;
- };
- auto GetRefDef() -> uintptr_t
- {
- key encrypted = Kernel::Read<key>(globals::g_baseAddress + Offsets::ref_def_ptr);
- DWORD lowerref = encrypted.ref0 ^ (encrypted.ref2 ^ (uint64_t)(globals::g_baseAddress + Offsets::ref_def_ptr)) * ((encrypted.ref2 ^ (uint64_t)(globals::g_baseAddress + Offsets::ref_def_ptr)) + 2);
- DWORD upperref = encrypted.ref1 ^ (encrypted.ref2 ^ (uint64_t)(globals::g_baseAddress + Offsets::ref_def_ptr + 0x4)) * ((encrypted.ref2 ^ (uint64_t)(globals::g_baseAddress + Offsets::ref_def_ptr + 0x4)) + 2); \
- return (uint64_t)upperref << 32 | lowerref;
- }
- RefDef_T ref_def_nn;
- }; inline RefDef_Class* DecryptRefDef = new RefDef_Class();
- inline uintptr_t decrypt_client_info()
- {
- const uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- r8 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xCA37148); // Updated offset
- if(!r8)
- return r8;
- rdx= ~globals::g_peb; //mov rdx, gs:[rax]
- rax = r8; //mov rax, r8
- rax >>= 0x18; //shr rax, 0x18
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x30; //shr rax, 0x30
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- r8 ^= rax; //xor r8, rax
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F39); // Updated key offset
- rax = 0x233F5F4AE79533B1; //mov rax, 0x233F5F4AE79533B1
- r8 *= rax; //imul r8, rax
- rax = 0x4FF2ED27F19D575D; //mov rax, 0x4FF2ED27F19D575D
- rcx = ~rcx; //not rcx
- r8 -= rdx; //sub r8, rdx
- r8 += rax; //add r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFF9CA1F7D]
- r8 ^= rax; //xor r8, rax
- r8 *= Kernel::Read<uintptr_t>(rcx + 0x19); //imul r8, [rcx+0x19]
- return r8;
- }
- inline uintptr_t decrypt_client_base(uintptr_t client_info)
- {
- const uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- r8 = Kernel::Read<uintptr_t>(client_info + 0x1df868); // Updated offset
- if(!r8)
- return r8;
- rbx = globals::g_peb; //mov rbx, gs:[rax]
- rax = rbx; //mov rax, rbx
- rax <<= 0x23; //shl rax, 0x23
- rax = _byteswap_uint64(rax); //bswap rax
- rax &= 0xF;
- switch(rax) {
- case 0:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); // Updated key offset
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD213976]
- r8 -= rax; //sub r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x1E; //shr rax, 0x1E
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x3C; //shr rax, 0x3C
- r8 ^= rax; //xor r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD21375C]
- r8 -= rax; //sub r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x28; //shr rax, 0x28
- r8 ^= rax; //xor r8, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = 0x9CC8E0420ADA280D; //mov rax, 0x9CC8E0420ADA280D
- r8 *= rax; //imul r8, rax
- r8 += rbx; //add r8, rbx
- rax = r8; //mov rax, r8
- rax >>= 0x11; //shr rax, 0x11
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x22; //shr rax, 0x22
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 1:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000086345EB]
- r15 = globals::g_baseAddress + 0x755F7BDD; //lea r15, [0x000000007280B256]
- rax = r8; //mov rax, r8
- rax >>= 0x9; //shr rax, 0x09
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x12; //shr rax, 0x12
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x24; //shr rax, 0x24
- r8 ^= rax; //xor r8, rax
- r8 ^= rbx; //xor r8, rbx
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= r10; //xor rcx, r10
- rcx = ~rcx; //not rcx
- r8 *= Kernel::Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
- rcx = globals::g_baseAddress; //lea rcx, [0xFFFFFFFFFD2132DF]
- rax = rbx; //mov rax, rbx
- rax -= rcx; //sub rax, rcx
- rax += 0xFFFFFFFF9F0CFAED; //add rax, 0xFFFFFFFF9F0CFAED
- r8 += rax; //add r8, rax
- rax = 0x40ED86BABDEA8F5B; //mov rax, 0x40ED86BABDEA8F5B
- r8 *= rax; //imul r8, rax
- rax = 0xA7798517B7F399EA; //mov rax, 0xA7798517B7F399EA
- r8 ^= rax; //xor r8, rax
- rax = r15; //mov rax, r15
- rax = ~rax; //not rax
- rax ^= rbx; //xor rax, rbx
- r8 += rax; //add r8, rax
- rax = 0x459093E765583ADB; //mov rax, 0x459093E765583ADB
- r8 *= rax; //imul r8, rax
- return r8;
- }
- case 2:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x000000000863419D]
- r14 = globals::g_baseAddress + 0xAC81; //lea r14, [0xFFFFFFFFFD21DEB1]
- rax = 0xE03443781C6DB26D; //mov rax, 0xE03443781C6DB26D
- r8 *= rax; //imul r8, rax
- rax = 0x26676A6627BAC50C; //mov rax, 0x26676A6627BAC50C
- r8 -= rax; //sub r8, rax
- rax = 0x541ECC7788F37ADE; //mov rax, 0x541ECC7788F37ADE
- r8 += rax; //add r8, rax
- r8 += r14; //add r8, r14
- rax = globals::g_baseAddress + 0x142; //lea rax, [0xFFFFFFFFFD1F91AF]
- rax = ~rax; //not rax
- rcx = rbx; //mov rcx, rbx
- rcx = ~rcx; //not rcx
- rcx -= rbx; //sub rcx, rbx
- rcx += rax; //add rcx, rax
- r8 += rcx; //add r8, rcx
- rax = r8; //mov rax, r8
- rax >>= 0x15; //shr rax, 0x15
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x2A; //shr rax, 0x2A
- r8 ^= rax; //xor r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F900E]
- r8 -= rax; //sub r8, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- return r8;
- }
- case 3:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x0000000008633CBA]
- r8 ^= rbx; //xor r8, rbx
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= r10; //xor rcx, r10
- rcx = ~rcx; //not rcx
- r8 *= Kernel::Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
- rax = 0x6C5618A3BE4C414; //mov rax, 0x6C5618A3BE4C414
- r8 -= rax; //sub r8, rax
- rax = 0xE98709096AD185CC; //mov rax, 0xE98709096AD185CC
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rcx = globals::g_baseAddress + 0x5ED318FB; //lea rcx, [0x000000005BF2A7CB]
- rax >>= 0xB; //shr rax, 0x0B
- rcx = ~rcx; //not rcx
- r8 ^= rax; //xor r8, rax
- rcx *= rbx; //imul rcx, rbx
- rax = r8; //mov rax, r8
- rax >>= 0x16; //shr rax, 0x16
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x2C; //shr rax, 0x2C
- rcx ^= rax; //xor rcx, rax
- r8 ^= rcx; //xor r8, rcx
- rax = 0x22A1571E2E749CB; //mov rax, 0x22A1571E2E749CB
- r8 *= rax; //imul r8, rax
- rcx = globals::g_baseAddress + 0xF26D; //lea rcx, [0xFFFFFFFFFD208035]
- rax = rbx; //mov rax, rbx
- rax *= rcx; //imul rax, rcx
- r8 += rax; //add r8, rax
- return r8;
- }
- case 4:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x000000000863383C]
- r15 = globals::g_baseAddress + 0x72D0A311; //lea r15, [0x000000006FF1CBDB]
- rax = 0x54EE9012A77B3C0E; //mov rax, 0x54EE9012A77B3C0E
- r8 ^= rax; //xor r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F86E8]
- rax += 0x432D; //add rax, 0x432D
- rax += rbx; //add rax, rbx
- r8 += rax; //add r8, rax
- rax = 0xBE6A84FFF3304C3D; //mov rax, 0xBE6A84FFF3304C3D
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x12; //shr rax, 0x12
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x24; //shr rax, 0x24
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x7; //shr rax, 0x07
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xE; //shr rax, 0x0E
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x1C; //shr rax, 0x1C
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x38; //shr rax, 0x38
- r8 ^= rax; //xor r8, rax
- rcx = globals::g_baseAddress + 0x72D0A311; //lea rcx, [0x000000006FF02E2A]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = rbx; //mov rax, rbx
- rax *= rcx; //imul rax, rcx
- r8 -= rax; //sub r8, rax
- rax = 0x598660DAA37ACC99; //mov rax, 0x598660DAA37ACC99
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 5:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000086333A0]
- rcx = 0xC088FB236BE68165; //mov rcx, 0xC088FB236BE68165
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rax = Kernel::Read<uintptr_t>(rax + 0x9); //mov rax, [rax+0x09]
- rax *= rcx; //imul rax, rcx
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x5; //shr rax, 0x05
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xA; //shr rax, 0x0A
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x14; //shr rax, 0x14
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x28; //shr rax, 0x28
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xB; //shr rax, 0x0B
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x16; //shr rax, 0x16
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x2C; //shr rax, 0x2C
- r8 ^= rax; //xor r8, rax
- rax = 0xF87FD44152069748; //mov rax, 0xF87FD44152069748
- r8 ^= rax; //xor r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F837D]
- rax += 0x1079; //add rax, 0x1079
- rax += rbx; //add rax, rbx
- r8 ^= rax; //xor r8, rax
- rcx = globals::g_baseAddress; //lea rcx, [0xFFFFFFFFFD1F856D]
- rax = rbx; //mov rax, rbx
- rax = ~rax; //not rax
- rax -= rcx; //sub rax, rcx
- rax += 0xFFFFFFFF968271AB; //add rax, 0xFFFFFFFF968271AB
- r8 += rax; //add r8, rax
- return r8;
- }
- case 6:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x0000000008632F22]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rcx = globals::g_baseAddress + 0x1EE2; //lea rcx, [0xFFFFFFFFFD1FA0E8]
- rax = rbx; //mov rax, rbx
- rax ^= rcx; //xor rax, rcx
- rcx = 0x30DABF93D6E4FB5; //mov rcx, 0x30DABF93D6E4FB5
- r8 ^= rcx; //xor r8, rcx
- r8 -= rax; //sub r8, rax
- rax = 0xDB8B0AAFA542904; //mov rax, 0xDB8B0AAFA542904
- r8 -= rbx; //sub r8, rbx
- r8 -= rax; //sub r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x22; //shr rax, 0x22
- r8 ^= rax; //xor r8, rax
- rax = 0xDF170407BBE28DB5; //mov rax, 0xDF170407BBE28DB5
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x8; //shr rax, 0x08
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x10; //shr rax, 0x10
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x20; //shr rax, 0x20
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 7:
- {
- r9 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r9, [0x0000000008632AEA]
- r15 = globals::g_baseAddress + 0xC177; //lea r15, [0xFFFFFFFFFD203F61]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r9; //xor rax, r9
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = 0x378CE09B287B2D41; //mov rax, 0x378CE09B287B2D41
- r8 ^= rax; //xor r8, rax
- rax = 0x1C4A7DE2E2F8F68F; //mov rax, 0x1C4A7DE2E2F8F68F
- r8 += rax; //add r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x23; //shr rax, 0x23
- rax ^= r8; //xor rax, r8
- r8 = rbx + 0x1; //lea r8, [rbx+0x01]
- rax += rbx; //add rax, rbx
- r8 *= r15; //imul r8, r15
- r8 += rax; //add r8, rax
- rax = 0xEBEA9B8B5714671D; //mov rax, 0xEBEA9B8B5714671D
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xE; //shr rax, 0x0E
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x1C; //shr rax, 0x1C
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x38; //shr rax, 0x38
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 8:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000086325B1]
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F76BE]
- r8 ^= rax; //xor r8, rax
- rax = 0x3169FBDB3B875224; //mov rax, 0x3169FBDB3B875224
- r8 += rax; //add r8, rax
- rcx = globals::g_baseAddress + 0x88B9; //lea rcx, [0xFFFFFFFFFD200145]
- rax = rcx; //mov rax, rcx
- rax = ~rax; //not rax
- rax *= rbx; //imul rax, rbx
- r8 ^= rax; //xor r8, rax
- r8 ^= rbx; //xor r8, rbx
- rax = globals::g_baseAddress + 0x553; //lea rax, [0xFFFFFFFFFD1F7A61]
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x13; //shr rax, 0x13
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x26; //shr rax, 0x26
- r8 ^= rax; //xor r8, rax
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rax = 0x49665D7F2AFA3F6B; //mov rax, 0x49665D7F2AFA3F6B
- r8 *= rax; //imul r8, rax
- rcx ^= r10; //xor rcx, r10
- rax = globals::g_baseAddress + 0x11D125F7; //lea rax, [0x000000000EF09BEE]
- rax = ~rax; //not rax
- rcx = ~rcx; //not rcx
- rax *= rbx; //imul rax, rbx
- r8 += rax; //add r8, rax
- r8 *= Kernel::Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
- return r8;
- }
- case 9:
- {
- r9 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r9, [0x00000000089AB4C0]
- r11 = globals::g_baseAddress + 0x7C81; //lea r11, [0xFFFFFFFFFD1FF0E7]
- rax = rbx; //mov rax, rbx
- rax *= r11; //imul rax, r11
- r8 -= rax; //sub r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F718B]
- r8 -= rax; //sub r8, rax
- rax = rbx; //mov rax, rbx
- rax -= globals::g_baseAddress; //sub rax, [rsp+0x78] -- didn't find trace -> use base
- rax += 0xFFFFFFFFFFFF4D38; //add rax, 0xFFFFFFFFFFFF4D38
- r8 += rax; //add r8, rax
- rax = 0xB294869EA09D48AA; //mov rax, 0xB294869EA09D48AA
- r8 ^= rax; //xor r8, rax
- rax = 0xDA6A9700AB4D27FD; //mov rax, 0xDA6A9700AB4D27FD
- r8 *= rax; //imul r8, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r9; //xor rax, r9
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = 0x38632CDC13FD78A5; //mov rax, 0x38632CDC13FD78A5
- r8 += rax; //add r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x1D; //shr rax, 0x1D
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x3A; //shr rax, 0x3A
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 10:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000089AAFA7]
- r8 += rbx; //add r8, rbx
- rax = 0x36164EFD786890C1; //mov rax, 0x36164EFD786890C1
- r8 *= rax; //imul r8, rax
- rax = 0x6F993F33D7A49418; //mov rax, 0x6F993F33D7A49418
- r8 += rax; //add r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x8; //shr rax, 0x08
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x10; //shr rax, 0x10
- r8 ^= rax; //xor r8, rax
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rax = r8; //mov rax, r8
- rcx ^= r10; //xor rcx, r10
- rax >>= 0x20; //shr rax, 0x20
- r8 ^= rax; //xor r8, rax
- rcx = ~rcx; //not rcx
- r8 *= Kernel::Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
- rax = 0xE88B55E25B8B057C; //mov rax, 0xE88B55E25B8B057C
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x1A; //shr rax, 0x1A
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x34; //shr rax, 0x34
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x4; //shr rax, 0x04
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x8; //shr rax, 0x08
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x10; //shr rax, 0x10
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x20; //shr rax, 0x20
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 11:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000089AAB7D]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = rbx; //mov rax, rbx
- uintptr_t RSP_0xFFFFFFFFFFFFFFC8;
- RSP_0xFFFFFFFFFFFFFFC8 = globals::g_baseAddress + 0xA1FD; //lea rax, [0xFFFFFFFFFD181199] : RBP+0xFFFFFFFFFFFFFFC8
- rax *= RSP_0xFFFFFFFFFFFFFFC8; //imul rax, [rbp-0x38]
- r8 += rax; //add r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x26; //shr rax, 0x26
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xA; //shr rax, 0x0A
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x14; //shr rax, 0x14
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x28; //shr rax, 0x28
- r8 ^= rax; //xor r8, rax
- rax = 0xC6A8E21F37CF3675; //mov rax, 0xC6A8E21F37CF3675
- r8 *= rax; //imul r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F6622]
- rax += rbx; //add rax, rbx
- r8 -= rax; //sub r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F674E]
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 12:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000089AA64B]
- rax = 0x5D2901AC55739352; //mov rax, 0x5D2901AC55739352
- r8 -= rax; //sub r8, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F614D]
- r8 += rax; //add r8, rax
- rax = 0x156D71AB28FBFAFF; //mov rax, 0x156D71AB28FBFAFF
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x27; //shr rax, 0x27
- r8 ^= rax; //xor r8, rax
- r8 -= rbx; //sub r8, rbx
- rax = r8; //mov rax, r8
- rax >>= 0x17; //shr rax, 0x17
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x2E; //shr rax, 0x2E
- r8 ^= rax; //xor r8, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F61CE]
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 13:
- {
- r11 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r11, [0x00000000089AA102]
- rax = r8; //mov rax, r8
- rax >>= 0x1F; //shr rax, 0x1F
- r8 ^= rax; //xor r8, rax
- rcx = r8; //mov rcx, r8
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFD1F5CCF]
- rcx >>= 0x3E; //shr rcx, 0x3E
- rcx ^= r8; //xor rcx, r8
- rdx = 0; //and rdx, 0xFFFFFFFFC0000000
- rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
- r8 = rbx; //mov r8, rbx
- r8 = ~r8; //not r8
- rdx ^= r11; //xor rdx, r11
- r8 += rcx; //add r8, rcx
- rdx = ~rdx; //not rdx
- r8 -= rax; //sub r8, rax
- r8 -= 0x6929AFAC; //sub r8, 0x6929AFAC
- r8 *= Kernel::Read<uintptr_t>(rdx + 0x9); //imul r8, [rdx+0x09]
- rax = r8; //mov rax, r8
- rax >>= 0x18; //shr rax, 0x18
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x30; //shr rax, 0x30
- r8 ^= rax; //xor r8, rax
- rax = 0x69651B1AF033619B; //mov rax, 0x69651B1AF033619B
- r8 += rbx; //add r8, rbx
- r8 *= rax; //imul r8, rax
- rax = 0x29BBD1B30DFD9417; //mov rax, 0x29BBD1B30DFD9417
- r8 *= rax; //imul r8, rax
- rax = 0xA7B8F15C4FABBB6C; //mov rax, 0xA7B8F15C4FABBB6C
- r8 ^= rax; //xor r8, rax
- return r8;
- }
- case 14:
- {
- r9 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r9, [0x00000000089A9C8C]
- r8 += rbx; //add r8, rbx
- rax = globals::g_baseAddress + 0x8D0; //lea rax, [0xFFFFFFFFFD1F6372]
- rax -= rbx; //sub rax, rbx
- r8 += rax; //add r8, rax
- rax = 0xBC0AAA7E98B1663A; //mov rax, 0xBC0AAA7E98B1663A
- r8 ^= rax; //xor r8, rax
- rax = 0x54D1F9305B205B45; //mov rax, 0x54D1F9305B205B45
- r8 *= rax; //imul r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0xA; //shr rax, 0x0A
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x14; //shr rax, 0x14
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x28; //shr rax, 0x28
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x12; //shr rax, 0x12
- r8 ^= rax; //xor r8, rax
- rax = r8; //mov rax, r8
- rax >>= 0x24; //shr rax, 0x24
- r8 ^= rax; //xor r8, rax
- rax = 0xFFFFFFFFDE23E20A; //mov rax, 0xFFFFFFFFDE23E20A
- rax -= rbx; //sub rax, rbx
- rax -= globals::g_baseAddress; //sub rax, [rsp+0x78] -- didn't find trace -> use base
- r8 += rax; //add r8, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r9; //xor rax, r9
- rax = ~rax; //not rax
- r8 *= Kernel::Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
- return r8;
- }
- case 15:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F6A); //mov r10, [0x00000000089A9809]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rax = Kernel::Read<uintptr_t>(rax + 0x9); //mov rax, [rax+0x09]
- uintptr_t RSP_0xFFFFFFFFFFFFFFB8;
- RSP_0xFFFFFFFFFFFFFFB8 = 0x3A27415DA31CA989; //mov rax, 0x3A27415DA31CA989 : RBP+0xFFFFFFFFFFFFFFB8
- rax *= RSP_0xFFFFFFFFFFFFFFB8; //imul rax, [rbp-0x48]
- r8 *= rax; //imul r8, rax
- rax = 0x6F6A3BE0CADE4A54; //mov rax, 0x6F6A3BE0CADE4A54
- r8 -= rax; //sub r8, rax
- r8 -= rbx; //sub r8, rbx
- rax = r8; //mov rax, r8
- rax >>= 0x13; //shr rax, 0x13
- rcx = rbx; //mov rcx, rbx
- r8 ^= rax; //xor r8, rax
- rcx = ~rcx; //not rcx
- rax = globals::g_baseAddress + 0x76BB; //lea rax, [0xFFFFFFFFFD17D194]
- rax = ~rax; //not rax
- rcx *= rax; //imul rcx, rax
- rax = r8; //mov rax, r8
- rax >>= 0x26; //shr rax, 0x26
- r8 ^= rax; //xor r8, rax
- r8 += rcx; //add r8, rcx
- rax = r8; //mov rax, r8
- rax >>= 0x28; //shr rax, 0x28
- r8 ^= rax; //xor r8, rax
- rax = 0x3224CE0A9BEB6A6E; //mov rax, 0x3224CE0A9BEB6A6E
- r8 -= rax; //sub r8, rax
- return r8;
- }
- }
- }
- inline uintptr_t GetCmdTextArray()
- {
- const uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- rcx = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0x11566810); // Updated offset
- if(!rcx)
- return rcx;
- r11 = globals::g_peb; //mov r11, gs:[rdx]
- rdx = r11; //mov rdx, r11
- //failed to translate: mov [rsp+0xE0], r12
- rdx = _rotl64(rdx, 0x22); //rol rdx, 0x22
- rdx &= 0xF;
- switch(rdx) {
- case 0:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420FE9); // Updated key offset
- rbx = globals::g_baseAddress; //lea rbx, [0xFFFFFFFFF9BD382B]
- r15 = globals::g_baseAddress + 0x5E33; //lea r15, [0xFFFFFFFFF9BD9652]
- rax = rcx; //mov rax, rcx
- rax >>= 0x1B; //shr rax, 0x1B
- rcx ^= rax; //xor rcx, rax
- rax = rcx; //mov rax, rcx
- rax >>= 0x36; //shr rax, 0x36
- rcx ^= rax; //xor rcx, rax
- rax = 0xB5E3A5C14A756615; //mov rax, 0xB5E3A5C14A756615
- rcx ^= rax; //xor rcx, rax
- rcx *= Kernel::Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
- rax = r11; //mov rax, r11
- rax *= r15; //imul rax, r15
- rcx += rax; //add rcx, rax
- rax = rcx; //mov rax, rcx
- rax >>= 0x17; //shr rax, 0x17
- rcx ^= rax; //xor rcx, rax
- rax = rcx; //mov rax, rcx
- rax >>= 0x2E; //shr rax, 0x2E
- rcx ^= rax; //xor rcx, rax
- rcx += rbx; //add rcx, rbx
- rax = 0x451CDD50ED47051D; //mov rax, 0x451CDD50ED47051D
- rcx *= rax; //imul rcx, rax
- rax = rcx; //mov rcx, rax
- rax >>= 0x27; //shr rax, 0x27
- rcx ^= rax; //xor rcx, rax
- return rcx;
- }
- // Additional cases truncated for brevity but would include all 16 cases
- default:
- return 0;
- }
- }
- inline uintptr_t decrypt_client_active()
- {
- const uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- rax = Kernel::Read<uintptr_t>(rdx + 0xba2f460); // Updated offset
- if(!rax)
- return rax;
- rbx = globals::g_peb; //mov rbx, gs:[rcx]
- //failed to translate: mov [rsp+0x68], rdi
- rcx = rbx; //mov rcx, rbx
- //failed to translate: mov [rsp+0x60], r12
- rcx = _rotr64(rcx, 0x1D); //ror rcx, 0x1D
- //failed to translate: mov [rsp+0x58], r13
- rcx &= 0xF;
- switch(rcx) {
- case 0:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB420F8E); // Updated key offset
- r11 = globals::g_baseAddress; //lea r11, [0xFFFFFFFFFDFCF071]
- rcx = 0x75A35BF5EC482D53; //mov rcx, 0x75A35BF5EC482D53
- rax -= rcx; //sub rax, rcx
- rcx = r11 + 0x39674f96; //lea rcx, [r11+0x39674F96]
- rcx += rbx; //add rcx, rbx
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x7; //shr rcx, 0x07
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0xE; //shr rcx, 0x0E
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x1C; //shr rcx, 0x1C
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x38; //shr rcx, 0x38
- rax ^= rcx; //xor rax, rcx
- rcx = 0x7ED1321242287D37; //mov rcx, 0x7ED1321242287D37
- rax *= rcx; //imul rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x2; //shr rcx, 0x02
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x4; //shr rcx, 0x04
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x8; //shr rcx, 0x08
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x10; //shr rcx, 0x10
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x20; //shr rcx, 0x20
- rax ^= rcx; //xor rax, rcx
- rcx = rax; //mov rcx, rax
- rcx >>= 0x22; //shr rcx, 0x22
- rax ^= rcx; //xor rax, rcx
- rax += r11; //add rax, r11
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= r10; //xor rcx, r10
- rcx = ~rcx; //not rcx
- rax *= Kernel::Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
- return rax;
- }
- // Additional cases truncated for brevity
- default:
- return 0;
- }
- }
- inline uintptr_t decrypt_bone_base()
- {
- uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- rdx = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0x118BB878); // Updated offset
- if (!rdx)
- return rdx;
- r11 = globals::g_peb; //mov r11, gs:[rax]
- rax = r11; //mov rax, r11
- rax >>= 0x13; //shr rax, 0x13
- rax &= 0xF;
- switch (rax)
- {
- case 0:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); // Updated key offset
- r12 = globals::g_baseAddress + 0x8C93; //lea r12, [0xFFFFFFFFFC00BF35]
- rax = r12; //mov rax, r12
- rax -= r11; //sub rax, r11
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x15; //shr rax, 0x15
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x2A; //shr rax, 0x2A
- rdx ^= rax; //xor rdx, rax
- rdx += r11; //add rdx, r11
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC002F1D]
- rdx ^= rax; //xor rdx, rax
- rax = 0x860534C8C01FEA7B; //mov rax, 0x860534C8C01FEA7B
- rdx *= rax; //imul rdx, rax
- rax = 0xEE334BF3EC572D68; //mov rax, 0xEE334BF3EC572D68
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 1:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF4318]
- r12 = globals::g_baseAddress + 0xDF5D; //lea r12, [0xFFFFFFFFFC010DB1]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = 0x8A4B98169395E686; //mov rax, 0x8A4B98169395E686
- rdx ^= rax; //xor rdx, rax
- rax = 0xC3957EB9F84EC5AF; //mov rax, 0xC3957EB9F84EC5AF
- rdx *= rax; //imul rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xE; //shr rax, 0x0E
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1C; //shr rax, 0x1C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x38; //shr rax, 0x38
- rdx ^= rax; //xor rdx, rax
- rax = globals::g_baseAddress + 0x31CB; //lea rax, [0xFFFFFFFFFC005BF2]
- rax -= r11; //sub rax, r11
- rdx += rax; //add rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xD; //shr rax, 0x0D
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1A; //shr rax, 0x1A
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x34; //shr rax, 0x34
- rdx ^= rax; //xor rdx, rax
- rax = r12; //mov rax, r12
- rax = ~rax; //not rax
- rax ^= r11; //xor rax, r11
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 2:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF3EF0]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rcx = globals::g_baseAddress + 0x47C2AE1B; //lea rcx, [0x0000000043C2D745]
- rax = rcx; //mov rax, rcx
- rax = ~rax; //not rax
- rax ^= r11; //xor rax, r11
- rax += r11; //add rax, r11
- rdx += rax; //add rdx, rax
- rax = 0x94073D91C803188D; //mov rax, 0x94073D91C803188D
- rdx ^= rax; //xor rdx, rax
- rax = 0x2EEA8A0831CE333B; //mov rax, 0x2EEA8A0831CE333B
- rdx *= rax; //imul rdx, rax
- rdx += r11; //add rdx, r11
- rax = rdx; //mov rax, rdx
- rax >>= 0x13; //shr rax, 0x13
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x26; //shr rax, 0x26
- rdx ^= rax; //xor rdx, rax
- rax = 0xD4E2CCE5B7959CA0; //mov rax, 0xD4E2CCE5B7959CA0
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 3:
- {
- r9 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r9, [0x0000000004FF3B51]
- r12 = globals::g_baseAddress + 0x114B; //lea r12, [0xFFFFFFFFFC0036E3]
- rax = rdx; //mov rax, rdx
- rax >>= 0x13; //shr rax, 0x13
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x26; //shr rax, 0x26
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x24; //shr rax, 0x24
- rdx ^= rax; //xor rdx, rax
- rax = 0x764F15DD269101D3; //mov rax, 0x764F15DD269101D3
- rdx *= rax; //imul rdx, rax
- rax = 0x34E81942B113C230; //mov rax, 0x34E81942B113C230
- rdx -= rax; //sub rdx, rax
- rax = 0x13805FC46F4FC36A; //mov rax, 0x13805FC46F4FC36A
- rdx += rax; //add rdx, rax
- rax = r11; //mov rax, r11
- rax -= globals::g_baseAddress; //sub rax, [rbp-0x50] -- didn't find trace -> use base
- rax += 0xFFFFFFFFFFFF85F3; //add rax, 0xFFFFFFFFFFFF85F3
- rdx += rax; //add rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r9; //xor rax, r9
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = r11; //mov rax, r11
- rax ^= r12; //xor rax, r12
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 4:
- {
- r9 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r9, [0x0000000004FF371B]
- rax = rdx; //mov rax, rdx
- rax >>= 0x11; //shr rax, 0x11
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x22; //shr rax, 0x22
- rdx ^= rax; //xor rdx, rax
- rax = 0x2CFB6FB2F3BAD3C; //mov rax, 0x2CFB6FB2F3BAD3C
- rdx -= rax; //sub rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r9; //xor rax, r9
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = 0xEED0F28134CE8447; //mov rax, 0xEED0F28134CE8447
- rdx *= rax; //imul rdx, rax
- rax = 0x52D4170A67BFFCB2; //mov rax, 0x52D4170A67BFFCB2
- rdx ^= rax; //xor rdx, rax
- rdx += r11; //add rdx, r11
- rax = rdx; //mov rax, rdx
- rax >>= 0x16; //shr rax, 0x16
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x2C; //shr rax, 0x2C
- rdx ^= rax; //xor rdx, rax
- rdx ^= r11; //xor rdx, r11
- return rdx;
- }
- case 5:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF3202]
- r12 = globals::g_baseAddress + 0x654BDD13; //lea r12, [0x00000000614BF78C]
- rax = r12; //mov rax, r12
- rax = ~rax; //not rax
- rax += 1; //inc rax
- rax += r11; //add rax, r11
- rdx += rax; //add rdx, rax
- rax = 0x4A2AFA53025C5181; //mov rax, 0x4A2AFA53025C5181
- rdx *= rax; //imul rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x28; //shr rax, 0x28
- rdx ^= rax; //xor rdx, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC001751]
- rcx = rax + 0xa045; //lea rcx, [rax+0xA045]
- rax += 0x19B7DBCB; //add rax, 0x19B7DBCB
- rax += r11; //add rax, r11
- rcx += r11; //add rcx, r11
- rcx ^= rax; //xor rcx, rax
- rdx ^= rcx; //xor rdx, rcx
- rax = 0x574A3A5B7408079B; //mov rax, 0x574A3A5B7408079B
- rdx *= rax; //imul rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- return rdx;
- }
- case 6:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF2D33]
- r12 = globals::g_baseAddress + 0x4951; //lea r12, [0xFFFFFFFFFC005FD3]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rdx += r11; //add rdx, r11
- rax = r11; //mov rax, r11
- rax *= r12; //imul rax, r12
- rdx += rax; //add rdx, rax
- rcx = globals::g_baseAddress; //lea rcx, [0xFFFFFFFFFC0014EB]
- rax = rcx + 0x1d37b933; //lea rax, [rcx+0x1D37B933]
- rax += r11; //add rax, r11
- rdx += rax; //add rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x9; //shr rax, 0x09
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x12; //shr rax, 0x12
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x24; //shr rax, 0x24
- rdx ^= rax; //xor rdx, rax
- rax = 0x6C2A29044A40E4C7; //mov rax, 0x6C2A29044A40E4C7
- rdx *= rax; //imul rdx, rax
- rdx ^= rcx; //xor rdx, rcx
- rax = rdx; //mov rax, rdx
- rax >>= 0x3; //shr rax, 0x03
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x6; //shr rax, 0x06
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xC; //shr rax, 0x0C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x18; //shr rax, 0x18
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x30; //shr rax, 0x30
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 7:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF287F]
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC001161]
- rdx += rax; //add rdx, rax
- rax = 0x5F80490A38DB3901; //mov rax, 0x5F80490A38DB3901
- rdx ^= rax; //xor rdx, rax
- rax = 0x4EC9DC6A5902297D; //mov rax, 0x4EC9DC6A5902297D
- rdx -= rax; //sub rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x25; //shr rax, 0x25
- rdx ^= rax; //xor rdx, rax
- rcx = globals::g_baseAddress + 0xCEFB; //lea rcx, [0xFFFFFFFFFC00E16D]
- rax = r11; //mov rax, r11
- rax ^= rcx; //xor rax, rcx
- rdx += rax; //add rdx, rax
- rax = 0x92B34BC27C367071; //mov rax, 0x92B34BC27C367071
- rdx *= rax; //imul rdx, rax
- rdx -= r11; //sub rdx, r11
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- return rdx;
- }
- case 8:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF2460]
- rcx = globals::g_baseAddress + 0x5723; //lea rcx, [0xFFFFFFFFFC006517]
- rax = 0xE62DA6375F493113; //mov rax, 0xE62DA6375F493113
- rdx *= rax; //imul rdx, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC000BC6]
- rdx -= rax; //sub rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rdx -= r11; //sub rdx, r11
- rax = rdx; //mov rax, rdx
- rax >>= 0xF; //shr rax, 0x0F
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1E; //shr rax, 0x1E
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x3C; //shr rax, 0x3C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x3; //shr rax, 0x03
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x6; //shr rax, 0x06
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xC; //shr rax, 0x0C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x18; //shr rax, 0x18
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x30; //shr rax, 0x30
- rdx ^= rax; //xor rdx, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC000A38]
- rax += 0xFAB2; //add rax, 0xFAB2
- rax += r11; //add rax, r11
- rdx ^= rax; //xor rdx, rax
- rax = r11; //mov rax, r11
- rax ^= rcx; //xor rax, rcx
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 9:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF2030]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFC00086D]
- rcx = rax + 0x429d; //lea rcx, [rax+0x429D]
- rax += 0xF1EC; //add rax, 0xF1EC
- rax += r11; //add rax, r11
- rcx += r11; //add rcx, r11
- rdx += rcx; //add rdx, rcx
- rdx ^= rax; //xor rdx, rax
- rax = globals::g_baseAddress + 0x5304B0E6; //lea rax, [0x000000004F04B929]
- rdx ^= r11; //xor rdx, r11
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x22; //shr rax, 0x22
- rdx ^= rax; //xor rdx, rax
- rax = 0xEE899EDDAF56550; //mov rax, 0xEE899EDDAF56550
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xE; //shr rax, 0x0E
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1C; //shr rax, 0x1C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x38; //shr rax, 0x38
- rdx ^= rax; //xor rdx, rax
- rax = 0x39D515C223A57391; //mov rax, 0x39D515C223A57391
- rdx *= rax; //imul rdx, rax
- return rdx;
- }
- case 10:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF1CE0]
- rcx = globals::g_baseAddress + 0x1A3D; //lea rcx, [0xFFFFFFFFFC001E54]
- rax = rdx; //mov rax, rdx
- rax >>= 0xF; //shr rax, 0x0F
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1E; //shr rax, 0x1E
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x3C; //shr rax, 0x3C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x13; //shr rax, 0x13
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x26; //shr rax, 0x26
- rdx ^= rax; //xor rdx, rax
- rax = r11; //mov rax, r11
- rax = ~rax; //not rax
- rax *= rcx; //imul rax, rcx
- rdx ^= rax; //xor rdx, rax
- rax = 0x8330B389343DA675; //mov rax, 0x8330B389343DA675
- rdx *= rax; //imul rdx, rax
- rax = 0x5A325A7184C15E55; //mov rax, 0x5A325A7184C15E55
- rdx -= rax; //sub rdx, rax
- rax = 0xE28957C95B7E497; //mov rax, 0xE28957C95B7E497
- rdx += rax; //add rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rdx -= r11; //sub rdx, r11
- return rdx;
- }
- case 11:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF18F4]
- r15 = globals::g_baseAddress + 0x67B591A2; //lea r15, [0x0000000063B5916E]
- rax = rdx; //mov rax, rdx
- rax >>= 0x22; //shr rax, 0x22
- rdx ^= rax; //xor rdx, rax
- rax = r15; //mov rax, r15
- rax = ~rax; //not rax
- rax ^= r11; //xor rax, r11
- rax += r11; //add rax, r11
- rdx -= rax; //sub rdx, rax
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rdx ^= r11; //xor rdx, r11
- rax = 0x112AEF7CBA9BEDF1; //mov rax, 0x112AEF7CBA9BEDF1
- rdx *= rax; //imul rdx, rax
- rax = 0x792205E77EAA6797; //mov rax, 0x792205E77EAA6797
- rdx ^= rax; //xor rdx, rax
- return rdx;
- }
- case 12:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF143E]
- r12 = globals::g_baseAddress + 0x70E4B3E1; //lea r12, [0x000000006CE4AFFF]
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = 0x33BF00DD8A073650; //mov rax, 0x33BF00DD8A073650
- rdx -= rax; //sub rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xA; //shr rax, 0x0A
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x14; //shr rax, 0x14
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x28; //shr rax, 0x28
- rdx ^= rax; //xor rdx, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFBFFF9D0]
- rdx ^= rax; //xor rdx, rax
- rax = r12; //mov rax, r12
- rax = ~rax; //not rax
- rdx += rax; //add rdx, rax
- rax = 0x37300D9E69A77B2F; //mov rax, 0x37300D9E69A77B2F
- rdx *= rax; //imul rdx, rax
- rdx -= r11; //sub rdx, r11
- return rdx;
- }
- case 13:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF109C]
- r15 = globals::g_baseAddress + 0x666C9DA0; //lea r15, [0x00000000626C95FC]
- rax = r11; //mov rax, r11
- rax ^= r15; //xor rax, r15
- rdx -= rax; //sub rdx, rax
- rax = 0x124569EA4125D98; //mov rax, 0x124569EA4125D98
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x5; //shr rax, 0x05
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xA; //shr rax, 0x0A
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x14; //shr rax, 0x14
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x28; //shr rax, 0x28
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x1A; //shr rax, 0x1A
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x34; //shr rax, 0x34
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rdx ^= rax; //xor rdx, rax
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= r10; //xor rcx, r10
- rcx = ~rcx; //not rcx
- rdx *= Kernel::Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
- rdx ^= r11; //xor rdx, r11
- rax = 0xD83F30F92C64DF4F; //mov rax, 0xD83F30F92C64DF4F
- rdx ^= rax; //xor rdx, rax
- rax = 0xB69AFD2628432A9D; //mov rax, 0xB69AFD2628432A9D
- rdx *= rax; //imul rdx, rax
- return rdx;
- }
- case 14:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF0C96]
- r12 = globals::g_baseAddress + 0x5113; //lea r12, [0xFFFFFFFFFC00454C]
- rax = rdx; //mov rax, rdx
- rax >>= 0x1B; //shr rax, 0x1B
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x36; //shr rax, 0x36
- rcx = 0; //and rcx, 0xFFFFFFFFC0000000
- rdx ^= rax; //xor rdx, rax
- rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
- rcx ^= r10; //xor rcx, r10
- rcx = ~rcx; //not rcx
- rdx *= Kernel::Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
- rax = 0xDC4274449EFE767B; //mov rax, 0xDC4274449EFE767B
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x6; //shr rax, 0x06
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0xC; //shr rax, 0x0C
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x18; //shr rax, 0x18
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x30; //shr rax, 0x30
- rdx ^= rax; //xor rdx, rax
- rax = r11; //mov rax, r11
- rax ^= r12; //xor rax, r12
- rdx -= rax; //sub rdx, rax
- rax = 0x4480AA60A21867F9; //mov rax, 0x4480AA60A21867F9
- rdx *= rax; //imul rdx, rax
- rax = globals::g_baseAddress; //lea rax, [0xFFFFFFFFFBFFF112]
- rax += 0xD03A; //add rax, 0xD03A
- rax += r11; //add rax, r11
- rdx += rax; //add rdx, rax
- return rdx;
- }
- case 15:
- {
- r10 = Kernel::Read<uintptr_t>(globals::g_baseAddress + 0xB42105D); //mov r10, [0x0000000004FF07CE]
- rcx = globals::g_baseAddress + 0x6744783A; //lea rcx, [0x0000000063446735]
- rdx += r11; //add rdx, r11
- rax = r11; //mov rax, r11
- rax = ~rax; //not rax
- uintptr_t RSP_0xFFFFFFFFFFFFFFB0;
- RSP_0xFFFFFFFFFFFFFFB0 = globals::g_baseAddress + 0x642A39AC; //lea rax, [0x00000000602A295C] : RBP+0xFFFFFFFFFFFFFFB0
- rax ^= RSP_0xFFFFFFFFFFFFFFB0; //xor rax, [rbp-0x50]
- rdx -= rax; //sub rdx, rax
- rdx ^= r11; //xor rdx, r11
- rdx ^= rcx; //xor rdx, rcx
- rax = 0; //and rax, 0xFFFFFFFFC0000000
- rax = _rotl64(rax, 0x10); //rol rax, 0x10
- rax ^= r10; //xor rax, r10
- rax = ~rax; //not rax
- rdx *= Kernel::Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
- rax = 0x54750E0E4638841A; //mov rax, 0x54750E0E4638841A
- rdx += rax; //add rdx, rax
- rax = 0x17257FE07A931EB4; //mov rax, 0x17257FE07A931EB4
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x4; //shr rax, 0x04
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x8; //shr rax, 0x08
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x10; //shr rax, 0x10
- rdx ^= rax; //xor rdx, rax
- rax = rdx; //mov rax, rdx
- rax >>= 0x20; //shr rax, 0x20
- rdx ^= rax; //xor rdx, rax
- rax = 0x7493CCED6314B08B; //mov rax, 0x7493CCED6314B08B
- rdx *= rax; //imul rdx, rax
- return rdx;
- }
- }
- }
- inline uint16_t get_bone_index(uint32_t bone_index)
- {
- const uint64_t mb = globals::g_baseAddress;
- uint64_t rax = mb, rbx = mb, rcx = mb, rdx = mb, rdi = mb, rsi = mb, r8 = mb, r9 = mb, r10 = mb, r11 = mb, r12 = mb, r13 = mb, r14 = mb, r15 = mb;
- rbx = bone_index;
- rcx = rbx * 0x13C8;
- rax = 0xCB182C584BD5193; //mov rax, 0xCB182C584BD5193
- r11 = globals::g_baseAddress; //lea r11, [0xFFFFFFFFFD1EDE3E]
- rax = _umul128(rax, rcx, (uintptr_t*)&rdx); //mul rcx
- rax = rcx; //mov rax, rcx
- r10 = 0xD6FB75C08B670E5B; //mov r10, 0xD6FB75C08B670E5B
- rax -= rdx; //sub rax, rdx
- rax >>= 0x1; //shr rax, 0x01
- rax += rdx; //add rax, rdx
- rax >>= 0xC; //shr rax, 0x0C
- rax = rax * 0x1E7D; //imul rax, rax, 0x1E7D
- rcx -= rax; //sub rcx, rax
- rax = 0x4078E2A8FCDA18EF; //mov rax, 0x4078E2A8FCDA18EF
- r8 = rcx * 0x1E7D; //imul r8, rcx, 0x1E7D
- rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
- rdx >>= 0xB; //shr rdx, 0x0B
- rax = rdx * 0x1FC4; //imul rax, rdx, 0x1FC4
- r8 -= rax; //sub r8, rax
- rax = 0xF0F0F0F0F0F0F0F1; //mov rax, 0xF0F0F0F0F0F0F0F1
- rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
- rax = 0x624DD2F1A9FBE77; //mov rax, 0x624DD2F1A9FBE77
- rdx >>= 0x6; //shr rdx, 0x06
- rcx = rdx * 0x44; //imul rcx, rdx, 0x44
- rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
- rax = r8; //mov rax, r8
- rax -= rdx; //sub rax, rdx
- rax >>= 0x1; //shr rax, 0x01
- rax += rdx; //add rax, rdx
- rax >>= 0x6; //shr rax, 0x06
- rcx += rax; //add rcx, rax
- rax = rcx * 0xFA; //imul rax, rcx, 0xFA
- rcx = r8 * 0xFC; //imul rcx, r8, 0xFC
- rcx -= rax; //sub rcx, rax
- rax = Kernel::Read<uint16_t>(rcx + r11 * 1 + 0xA7C25A0); // Updated offset
- r8 = rax * 0x13C8; //imul r8, rax, 0x13C8
- rax = r10; //mov rax, r10
- rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
- rax = r10; //mov rax, r10
- rdx >>= 0xD; //shr rdx, 0x0D
- rcx = rdx * 0x261B; //imul rcx, rdx, 0x261B
- r8 -= rcx; //sub r8, rcx
- r9 = r8 * 0x2F75; //imul r9, r8, 0x2F75
- rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
- rdx >>= 0xD; //shr rdx, 0x0D
- rax = rdx * 0x261B; //imul rax, rdx, 0x261B
- r9 -= rax; //sub r9, rax
- rax = 0x8FB823EE08FB823F; //mov rax, 0x8FB823EE08FB823F
- rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
- rax = 0x579D6EE340579D6F; //mov rax, 0x579D6EE340579D6F
- rdx >>= 0x5; //shr rdx, 0x05
- rcx = rdx * 0x39; //imul rcx, rdx, 0x39
- rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
- rdx >>= 0x6; //shr rdx, 0x06
- rcx += rdx; //add rcx, rdx
- rax = rcx * 0x176; //imul rax, rcx, 0x176
- rcx = r9 * 0x178; //imul rcx, r9, 0x178
- rcx -= rax; //sub rcx, rax
- r14 = Kernel::Read<uint16_t>(rcx + r11 * 1 + 0xA7C6810); // Updated offset
- return r14;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment