uint64_t SWAPPY_CHAIN = 18F290A0;
uint64_t CUM_QUEUE = 0x18F23D28;
uint64_t REFDEF = 0x174DEAB0;
uint64_t CAMERA_POINTER = 0x146DAF80;
uint64_t CAMERA_OFFSET = 0x1D8;
namespace player
{
uint64_t SIZE = 0x3A50;
uint64_t VALID = 0x23C;
uint64_t POS = 0x2838;
uint64_t TEAM = 0x254;
uint64_t STANCE = 0x31B4;
uint64_t DEAD = 0x2BA0;
};
namespace offsets {
constexpr auto refdef = 0x1750E120;
constexpr auto name_array = 0x17519238;
constexpr auto name_array_pos = 0x4C70;
constexpr auto camera_base = 0x14764660;
constexpr auto camera_pos = 0x1D8;
constexpr auto local_index = 0x7C728;
constexpr auto local_index_pos = 0x1FC;
// could not find any signature matches with 4C 8D A7 ? ? ? ? 49 81 C5 ? ? ? ? 4C 89 A5 ? ? ? ? for no_recoil offset
constexpr auto no_recoil = 0x0;
constexpr auto game_mode = 0x1718EBDC;
constexpr auto weapon_definitions = 0x148379C0;
namespace player {
constexpr auto size = 0x3A90;
constexpr auto valid = 0x390;
constexpr auto pos = 0x2808;
constexpr auto team = 0x138;
constexpr auto stance = 0x2D24;
constexpr auto dead_1 = 0x12E;
constexpr auto dead_2 = 0xF9BC;
}
namespace bone {
constexpr auto base_pos = 0x53F4800000000;
constexpr auto index_struct_size = 0x150;
}
namespace directx {
constexpr auto command_queue = 0x18F4FD28;
constexpr auto swap_chain = 0x18F550A0;
}
}
uint64_t GetClientInfo(uint64_t peb, uint64_t moduleBase) {
uint64_t rax = 0, rbx = 0, rdx = 0, rdi = 0, rsi = 0, r8 = 0, r9 = 0, r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0, rbp = 0,
ULONG64 rcx = peb;
rcx = ~(rcx);
rbx = *(ULONG64*)(moduleBase + 0x174dc118);
r8 = moduleBase;
rdx = (moduleBase + 0x72B);
rax -= rdx;
rdx = 0x1B293DF6AEC6945;
rax = 0; // bruh
rax = _rotl64(rax, 0x10);
rax ^= *(ULONG64*)(moduleBase + 0x68C511F);
rax = _byteswap_uint64(rax);
rbx *= *(ULONG64*)(rax + 0xd);
rax = rbx;
rax >>= 0x1F;
rbx ^= rax;
rax = rbx;
rax >>= 0x3E;
rbx ^= rax;
rax = 0x7E7EEBBFB8AA0B5E;
rbx *= rdx;
rbx ^= rax;
rax = (moduleBase + 0x4185BFF7);
rcx ^= rax;
rbx += rcx;
rbx -= r8;
return rbx;
}
ULONG64 GetClientBase(ULONG64 Peb, ULONG64 moduleBase, ULONG64 clientInfo)
{
ULONG64 rax = moduleBase, rcx = moduleBase, rdx = moduleBase, r8 = moduleBase, r9 = moduleBase, r10 = moduleBase, r12 = moduleBase, r13 = moduleBase, r14 = moduleBase, r15 = moduleBase, rsi = moduleBase, rdi = moduleBase; // hardcoded lol
ULONG64 r11 = Peb;
rax = *(ULONG64*)(clientInfo + 0x9dbc8);
if (!rax)
return 0;
rcx = r11;
rcx = _rotl64(rcx, 0x21);
rcx &= 0xf;
switch (rcx)
{
case 0:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rdx ^= r10;
rcx = moduleBase;
rax += rcx;
rcx = rax;
rcx >>= 0x1F;
rax ^= rcx;
rcx = rax;
rdx = _byteswap_uint64(rdx);
rcx >>= 0x3E;
rcx ^= rax;
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
rcx = 0x9BFF0D89E8E6E6B9;
rax *= rcx;
rax ^= r11;
rcx = 0x39AEFA4481B21CB8;
rax ^= rcx;
rcx = rax;
rcx >>= 0x18;
rax ^= rcx;
rcx = rax;
rcx >>= 0x30;
rax ^= rcx;
rcx = 0x72EB68FFA9D0CAED;
rax -= rcx;
return rax;
}
case 1:
{ r15 = (moduleBase + 0x5BD49B2D);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = r11;
rcx *= r15;
rax += rcx;
rcx = rax;
rcx >>= 0x19;
rax ^= rcx;
rcx = rax;
rcx >>= 0x32;
rax ^= rcx;
rcx = (moduleBase + 0x4A532CBC);
rcx -= r11;
rax += rcx;
rcx = rax;
rcx >>= 0x18;
rax ^= rcx;
rcx = rax;
rcx >>= 0x30;
rax ^= rcx;
rcx = 0x4E656D8A69B81DB3;
rax *= rcx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r10;
rcx = _byteswap_uint64(rcx);
rcx = *(ULONG64*)(rcx + 0x15);
rcx *= 0xD4F1D65ACB958B91;
rax *= rcx;
rcx = 0x45811532029096D;
rax *= rcx;
return rax;
}
case 2:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r10;
rcx = _byteswap_uint64(rcx);
rax *= *(ULONG64*)(rcx + 0x15);
rcx = rax;
rcx >>= 0x11;
rax ^= rcx;
rcx = rax;
rcx >>= 0x22;
rax ^= rcx;
rcx = moduleBase;
rcx += 0x500D14F6;
rcx += r11;
rax += rcx;
rcx = 0x79EAE6C7004760FD;
rax *= rcx;
rcx = 0x6EDD1E7329A3847A;
rax += rcx;
rcx = rax;
rcx >>= 0x1E;
rax ^= rcx;
rcx = rax;
rcx >>= 0x3C;
rax ^= rcx;
rcx = 0x9455734CEDB2BFBD;
rax *= rcx;
rcx = rax;
rcx >>= 0x8;
rax ^= rcx;
rcx = rax;
rcx >>= 0x10;
rax ^= rcx;
rcx = rax;
rcx >>= 0x20;
rax ^= rcx;
return rax;
}
case 3:
{ r15 = (moduleBase + 0x19CD);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = 0x68A5E3410F40AA5E;
rax -= rcx;
rcx = 0x8970B69548F1DB3B;
rax *= rcx;
rcx = r11;
rcx *= r15;
rax += rcx;
rcx = rax;
rcx >>= 0x15;
rax ^= rcx;
rcx = rax;
rcx >>= 0x2A;
rax ^= rcx;
rcx = 0xFCE1BE0DDF74033D;
rax ^= rcx;
rcx = moduleBase;
rcx += 0x2362;
rcx += r11;
rax ^= rcx;
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rdx ^= r10;
rdx = _byteswap_uint64(rdx);
rdx = *(ULONG64*)(rdx + 0x15);
rdx *= rax;
rax = (moduleBase + 0x1E5E54D0);
rax *= r11;
rax += rdx;
return rax;
}
case 4:
{ rsi = (moduleBase + 0x2EF8);
r9 = *(ULONG64*)(moduleBase + 0x68C5158);
rax ^= r11;
rcx = rax;
rcx >>= 0x27;
rax ^= rcx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r9;
rcx = _byteswap_uint64(rcx);
rax *= *(ULONG64*)(rcx + 0x15);
rcx = 0xEB73CAE299A2C6E1;
rax ^= rcx;
rcx = rax;
rcx >>= 0x9;
rax ^= rcx;
rcx = rax;
rcx >>= 0x12;
rax ^= rcx;
rcx = rax;
rcx >>= 0x24;
rax ^= rcx;
rcx = 0x4B6CE8F220CA1F19;
rax *= rcx;
rcx = rax;
rcx >>= 0x21;
rax ^= rcx;
rcx = rsi;
rcx = (~rcx);
rcx *= r11;
rax ^= rcx;
return rax;
}
case 5:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
r15 = (moduleBase + 0x3D7BE931);
rax += r11;
rcx = rax;
rcx >>= 0x22;
rax ^= rcx;
rcx = moduleBase;
rax += rcx;
rcx = r11;
rcx *= r15;
rax ^= rcx;
rcx = 0x680F67BA1D2B1F4B;
rax *= rcx;
rcx = rax;
rcx >>= 0x6;
rax ^= rcx;
rcx = rax;
rcx >>= 0xC;
rax ^= rcx;
rcx = rax;
rcx >>= 0x18;
rax ^= rcx;
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rcx = rax;
rdx ^= r10;
rcx >>= 0x30;
rcx ^= rax;
rax = 0x7118F9D22BF5B54C;
rcx ^= rax;
rdx = _byteswap_uint64(rdx);
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
return rax;
}
case 6:
{ r14 = (moduleBase + 0x7B5A);
rdx = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = rax;
rcx >>= 0x20;
rax ^= rcx;
rcx = moduleBase;
rax -= rcx;
rax ^= r11;
rcx = r11;
rcx = (~rcx);
rcx *= r14;
rax ^= rcx;
rcx = 0x67445F8AF9AA4C4D;
rax *= rcx;
rax -= r11;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= rdx;
rcx = _byteswap_uint64(rcx);
rax *= *(ULONG64*)(rcx + 0x15);
rcx = r11;
rcx -= 0x5CBB1AF7;
rax ^= rcx;
return rax;
}
case 7:
{ r9 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = moduleBase;
rax -= rcx;
rcx = 0xB7017D509A5FB733;
rax *= rcx;
rax -= r11;
rcx = rax;
rcx >>= 0x5;
rax ^= rcx;
rcx = rax;
rcx >>= 0xA;
rax ^= rcx;
rcx = rax;
rcx >>= 0x14;
rax ^= rcx;
rcx = rax;
rcx >>= 0x28;
rax ^= rcx;
rcx = rax;
rcx >>= 0x21;
rax ^= rcx;
rcx = 0xBE3166A584379D57;
rax *= rcx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r9;
rcx = _byteswap_uint64(rcx);
rax *= *(ULONG64*)(rcx + 0x15);
return rax;
}
case 8:
{ r15 = (moduleBase + 0x849D);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rax -= r11;
rcx = r11;
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rdx ^= r10;
rdx = _byteswap_uint64(rdx);
rdx = *(ULONG64*)(rdx + 0x15);
rdx *= rax;
rax = (moduleBase + 0x54F70539);
rcx ^= rax;
rax = rdx;
rax -= rcx;
rcx = r11;
rcx *= r15;
rax += rcx;
rcx = rax;
rcx >>= 0x7;
rax ^= rcx;
rcx = rax;
rcx >>= 0xE;
rax ^= rcx;
rcx = rax;
rcx >>= 0x1C;
rax ^= rcx;
rcx = rax;
rcx >>= 0x38;
rax ^= rcx;
rcx = 0x9DD57BEBC377661D;
rax ^= rcx;
rcx = 0x50B6BFF843373AD7;
rax *= rcx;
rcx = 0x11E964DF213CB5C6;
rax += rcx;
return rax;
}
case 9:
{ r14 = (moduleBase + 0x2DC27903);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = r14;
rcx -= r11;
rax += rcx;
rcx = rax;
rcx >>= 0x2;
rax ^= rcx;
rcx = rax;
rcx >>= 0x4;
rax ^= rcx;
rcx = rax;
rcx >>= 0x8;
rax ^= rcx;
rcx = rax;
rcx >>= 0x10;
rax ^= rcx;
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rcx = rax;
rdx ^= r10;
rcx >>= 0x20;
rcx ^= rax;
rdx = _byteswap_uint64(rdx);
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
rcx = (moduleBase + 0x8C51);
rax -= r11;
rax += rcx;
rcx = 0x65DAA3235BEFAC6B;
rax += rcx;
rcx = 0x1A2AE6A9866730C3;
rax *= rcx;
rcx = 0xF2274FBB223F4B6F;
rax *= rcx;
rcx = rax;
rcx >>= 0x1C;
rax ^= rcx;
rcx = rax;
rcx >>= 0x38;
rax ^= rcx;
return rax;
}
case 10:
{ r14 = (moduleBase + 0x4EBF75DD);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = r14;
rcx = (~rcx);
rcx -= r11;
rax += rcx;
rcx = 0x9572DBE59902E843;
rax *= rcx;
rcx = moduleBase;
rax -= rcx;
rcx = 0xB93756FBFB4B819C;
rax += rcx;
rax += r11;
rcx = rax;
rcx >>= 0x25;
rax ^= rcx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r10;
rcx = _byteswap_uint64(rcx);
rax *= *(ULONG64*)(rcx + 0x15);
return rax;
}
case 11:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = rax;
rcx >>= 0xC;
rax ^= rcx;
rcx = rax;
rcx >>= 0x18;
rax ^= rcx;
rcx = rax;
rcx >>= 0x30;
rax ^= rcx;
rcx = rax;
rcx >>= 0x1;
rax ^= rcx;
rcx = rax;
rcx >>= 0x2;
rax ^= rcx;
rcx = rax;
rcx >>= 0x4;
rax ^= rcx;
rcx = rax;
rcx >>= 0x8;
rax ^= rcx;
rcx = rax;
rcx >>= 0x10;
rax ^= rcx;
rcx = rax;
rcx >>= 0x20;
rax ^= rcx;
rcx = 0x98AA22A5C0CF7378;
rax ^= rcx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r10;
rcx = _byteswap_uint64(rcx);
rcx = *(ULONG64*)(rcx + 0x15);
rax *= rcx;
rcx = (moduleBase + 0x7F62E0EA);
rax += r11;
rax += rcx;
rcx = moduleBase;
rax ^= rcx;
rcx = 0xA2FE0F41F9DB29E1;
rax *= rcx;
rcx = 0x1A88B7AA4AD896FB;
rax *= rcx;
return rax;
}
case 12:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = moduleBase;
rax += rcx;
rcx = 0xE236951EEA5F1B19;
rax *= rcx;
rcx = 0x58B799B5B1943F27;
rax *= rcx;
rdx = 0; // bruh
rcx = rax;
rdx = _rotl64(rdx, 0x10);
rcx >>= 0x21;
rdx ^= r10;
rcx ^= rax;
rdx = _byteswap_uint64(rdx);
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
rcx = moduleBase;
rax -= rcx;
rcx = rax;
rcx >>= 0x9;
rax ^= rcx;
rcx = rax;
rcx >>= 0x12;
rax ^= rcx;
rcx = rax;
rcx >>= 0x24;
rax ^= rcx;
rax += r11;
return rax;
}
case 13:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
r14 = (moduleBase + 0x2268);
rcx = rax;
rcx >>= 0x3;
rax ^= rcx;
rcx = rax;
rcx >>= 0x6;
rax ^= rcx;
rcx = rax;
rcx >>= 0xC;
rax ^= rcx;
rcx = rax;
rcx >>= 0x18;
rax ^= rcx;
rcx = rax;
rcx >>= 0x30;
rax ^= rcx;
rcx = 0xCDF2A6D72C212CC1;
rax *= rcx;
rax -= r11;
rcx = rax;
rdx = 0; // bruh
rcx -= r11;
rdx = _rotl64(rdx, 0x10);
rdx ^= r10;
rdx = _byteswap_uint64(rdx);
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
rcx = moduleBase;
rcx += 0x1193;
rcx += r11;
rax ^= rcx;
rcx = 0x3A44B6D1E1A5BB83;
rax *= rcx;
rax ^= r11;
rax ^= r14;
return rax;
}
case 14:
{ r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = moduleBase;
rcx += r11;
rax += rcx;
rcx = moduleBase;
rax -= rcx;
rdx = rax;
rdx >>= 0x23;
rdx ^= rax;
rax = (moduleBase + 0x8C8F);
rcx = r11;
rcx = (~rcx);
rax *= rcx;
rax += rdx;
rcx = 0; // bruh
rcx = _rotl64(rcx, 0x10);
rcx ^= r10;
rcx = _byteswap_uint64(rcx);
rcx = *(ULONG64*)(rcx + 0x15);
rax *= rcx;
rcx = 0x6DEBF32CA4F25659;
rax *= rcx;
rax += r11;
return rax;
}
case 15:
{ r14 = (moduleBase + 0x27D081E9);
r10 = *(ULONG64*)(moduleBase + 0x68C5158);
rcx = r11 + 0x1;
rcx *= r14;
rax += rcx;
rcx = rax;
rcx >>= 0x8;
rax ^= rcx;
rcx = rax;
rcx >>= 0x10;
rax ^= rcx;
rcx = rax;
rcx >>= 0x20;
rax ^= rcx;
rcx = 0x24A892930ADE7F59;
rax += rcx;
rcx = 0xA9172C2E53861665;
rax *= rcx;
rdx = 0; // bruh
rdx = _rotl64(rdx, 0x10);
rcx = 0x153A97981194506F;
rax *= rcx;
rdx ^= r10;
rcx = moduleBase;
rax -= rcx;
rcx = rax;
rdx = _byteswap_uint64(rdx);
rcx >>= 0x26;
rcx ^= rax;
rax = *(ULONG64*)(rdx + 0x15);
rax *= rcx;
return rax;
}
default:
return 0;
}
}