namespace offsets
{
constexpr auto camera_base = 0x1416B000;
constexpr auto camera_pos = 0x1D8;
constexpr auto game_mode = 0x16BE0BE8;
constexpr auto local_index = 0x501C0;
constexpr auto name_array = 0x16F79F58;
constexpr auto name_array_padding = 0x4C70;
constexpr auto ref_def = 0x16F6ECB0;
constexpr auto weapon_definition = 0x1423E380;
namespace bones
{
constexpr auto bone_base = 0x57CB4;
constexpr auto distribute = 0x195DA9E8;
constexpr auto size = 0x150;
constexpr auto visible = 0x5342240;
}
namespace directx
{
constexpr auto command_queue = 0x189B3D28;
constexpr auto swap_chain = 0x189B90A0;
}
namespace engine
{
constexpr auto get_string = 0x2BD11B0;
constexpr auto begin_event = 0x2AE0DD0;
constexpr auto add_param_string = 0x2AE0DB0;
constexpr auto finish_event = 0x2AE0E60;
constexpr auto get_asset = 0x2D50420;
constexpr auto move_response_to_inventory = 0x54C9C00;
constexpr auto loot_base = 0x9E2EF00;
constexpr auto get_column_value_for_row = 0x2D50460;
}
namespace unlocker
{
constexpr auto entity_list = 0x137B72E0;
constexpr auto sub_entity = 0x150;
constexpr auto entity_size = 0x5A8;
}
namespace other
{
constexpr auto recoil = 0x23824;
}
namespace player
{
constexpr auto dead_1 = 0x14F4;
constexpr auto dead_2 = 0x430;
constexpr auto pos_info = 0x12D0;
constexpr auto size = 0x3AC0;
constexpr auto stance = 0x6A8;
constexpr auto team_id = 0x4B8;
constexpr auto valid = 0x614;
constexpr auto weapon_index = 0xF5A;
}
}
namespace decryption
{
auto get_client_info() -> uint64_t
{
uint64_t RAX = 0, RBX = 0, RCX = 0, RDX = 0, R8 = 0, RDI = 0, R9 = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, RSI = 0, RSP = 0, RBP = 0;
RBX = *(uint64_t*)(global::module_base + 0x16F6C318);
if (!RBX)
return 0;
R8 = global::module_base;
// je short 0000000001A83E9Ch
RCX = global::module_base;
RAX = 0xB1368AA21CC89905;
RBX *= RAX;
RDX = 0xE33EDD45F165A542;
RBX += R8;
RAX = RBX;
RAX >>= 0x18;
RBX ^= RAX;
RAX = global::module_base + 0x988;
RCX -= RAX;
RAX = RBX;
RCX = 0; // Special case
RAX >>= 0x30;
RCX = _rotl64(RCX, 0x10);
RAX ^= RBX;
RCX ^= *(uint64_t*)(global::module_base + 0x6358106);
RAX += RDX;
RCX = (~RCX);
R8 += RAX;
if (is_bad_ptr((void*)(RCX + 0xF))) return 0xFFFFFFFFFFFFFFFF; RBX = *(uint64_t*)(RCX + 0xF);
RBX *= R8;
return RBX;
}
auto get_client_info_base(uint64_t client_info) -> uint64_t
{
uint64_t RAX = global::module_base, RBX = global::module_base, RCX = global::module_base, RDX = global::module_base, R8 = global::module_base, RDI = global::module_base, R9 = global::module_base, R10 = global::module_base, R11 = global::module_base, R12 = global::module_base, R13 = global::module_base, R14 = global::module_base, R15 = global::module_base, RSI = global::module_base, RSP = global::module_base, RBP = global::module_base;
RAX = *(uint64_t*)(client_info + 0x9DC48);
if (!RAX)
return 0;
RBX = global::peb;
// test rax,rax
// je near ptr 0000000001A88BB1h
RCX = RBX;
RCX = _rotr64(RCX, 0xE);
RCX &= 0xF;
switch (RCX)
{
case 0:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = 0x2C4DD10573E87BDF;
RAX -= RCX;
RCX = RAX;
RCX >>= 0xF;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x1E;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x3C;
RAX ^= RCX;
RCX = 0x2A7E13A63C0DC12;
RAX += RCX;
RCX = 0x6EA8692AFBE9951D;
RAX *= RCX;
RCX = global::module_base + 0x7B15C6EB;
RCX -= RBX;
RAX += RCX;
RDX = 0; // Special case
RCX = RAX;
RDX = _rotl64(RDX, 0x10);
RAX = global::module_base;
RCX -= RAX;
RDX ^= R10;
RDX = (~RDX);
if (is_bad_ptr((void*)(RDX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(RDX + 0x9);
RAX *= RCX;
RCX = global::module_base;
RAX += RCX;
return RAX;
}
case 1:
{
R9 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = global::module_base + 0x7A646912;
RCX = (~RCX);
RCX -= RBX;
RAX += RCX;
RCX = RAX;
RCX >>= 0x22;
RAX ^= RCX;
RCX = 0x7D67E1E97C6B2C96;
RAX -= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R9;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RCX = *(uint64_t*)(RCX + 0x9);
RCX *= RAX;
RAX = global::module_base;
RCX -= RAX;
RAX = RBX + 0xFFFFFFFFFFFFF016;
RAX += RCX;
RAX -= RBX;
RCX = global::module_base + 0x2FF05259;
RAX += RCX;
RCX = 0x9A1F338590121263;
RAX *= RCX;
RCX = 0x52BE01F8D7308C;
RAX += RCX;
return RAX;
}
case 2:
{
R14 = global::module_base + 0xABC7;
R15 = global::module_base + 0x329;
R9 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = 0x428FFCC799FD807;
RAX *= RCX;
RCX = global::module_base;
RAX += RCX;
RCX = RBX;
RCX = (~RCX);
RCX += R15;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x22;
RAX ^= RCX;
RCX = 0x6D47E789FB157961;
RAX *= RCX;
RCX = 0x51EE1309C70ABD7;
RAX *= RCX;
RCX = R14;
RCX = (~RCX);
RCX ^= RBX;
RAX ^= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R9;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
return RAX;
}
case 3:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
R15 = global::module_base + 0x4154CA52;
R14 = global::module_base + 0x6B1288FF;
RCX = 0x9AA73C5A44CEFEB;
RAX *= RCX;
RCX = R14;
RCX = (~RCX);
RCX ^= RBX;
RAX -= RCX;
RDX = 0; // Special case
RDX = _rotl64(RDX, 0x10);
RCX = RBX;
RDX ^= R10;
RDX = (~RDX);
RCX *= R15;
if (is_bad_ptr((void*)(RDX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RDX = *(uint64_t*)(RDX + 0x9);
RAX *= RDX;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x23;
RAX ^= RCX;
RCX = 0x49E1C5A42D1EBB58;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x15;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x2A;
RAX ^= RCX;
RCX = 0x3736A546ED043ACA;
RAX += RCX;
return RAX;
}
case 4:
{
R11 = *(uint64_t*)(global::module_base + 0x6358146);
RDX = global::module_base + 0xE83F;
RCX = RAX;
RCX >>= 0x1B;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x36;
RAX ^= RCX;
RCX = RBX;
RCX *= RDX;
RAX -= RCX;
RCX = 0x310451BB37ED62A0;
RAX ^= RCX;
R8 = 0; // Special case
R8 = _rotl64(R8, 0x10);
RCX = global::module_base + 0x7E687D0C;
R8 ^= R11;
RDX = RBX;
RDX = (~RDX);
RCX = (~RCX);
RDX *= RCX;
R8 = (~R8);
RDX += RAX;
if (is_bad_ptr((void*)(R8 + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(R8 + 0x9);
RAX *= RDX;
R8 = global::module_base + 0xE166;
RBP = 0xB1660B2EB3DEF8A3;
RAX *= RBP;
RCX = RBX;
RCX *= R8;
RAX -= RCX;
RCX = 0x2D4951DFC2EC76;
RAX ^= RCX;
return RAX;
}
case 5:
{
R14 = global::module_base + 0xCE23;
R9 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R9;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
RAX += RBX;
RCX = RBX;
RCX ^= R14;
RAX -= RCX;
RAX -= RBX;
RAX -= RBX;
RCX = RAX;
RCX >>= 0xE;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x1C;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x38;
RAX ^= RCX;
RCX = 0x722B82C72992DE8D;
RAX += RCX;
RCX = 0x15F1C700407765FB;
RAX *= RCX;
return RAX;
}
case 6:
{
R14 = global::module_base + 0x34DF;
R11 = global::module_base + 0x1C28A0E6;
R9 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = RBX;
RCX *= R14;
RAX += RCX;
RCX = R11;
RCX = (~RCX);
RCX ^= RBX;
RAX += RCX;
RCX = RAX;
RCX >>= 0xC;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x18;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x30;
RAX ^= RCX;
RCX = 0xDE4968A1A719FFCB;
RAX *= RCX;
RCX = RBX;
RCX = (~RCX);
RCX -= global::module_base;
RAX += RCX;
RCX = 0xB556BEEBB66DDC7F;
RAX *= RCX;
RCX = 0x4D76CF5D1934D528;
RAX -= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R9;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RCX = *(uint64_t*)(RCX + 0x9);
RAX *= RCX;
RCX = 0x56851AD3B48647AD;
RAX -= RCX;
return RAX;
}
case 7:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
R15 = global::module_base + 0x39C4;
RCX = RAX;
RCX >>= 0x16;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x2C;
RAX ^= RCX;
RCX = global::module_base;
RAX -= RCX;
RCX = RAX;
RCX >>= 0xF;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x1E;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x3C;
RAX ^= RCX;
RCX = 0x21FED6E262CAF0A5;
RAX += RBX;
RAX *= RCX;
RCX = 0xC7C713F9414B5D6F;
RAX *= RCX;
RCX = RBX;
RCX *= R15;
RAX -= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
return RAX;
}
case 8:
{
R11 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = RAX;
RCX >>= 0x1E;
RAX ^= RCX;
RDX = RAX;
RDX >>= 0x3C;
RDX ^= RAX;
RCX = global::module_base + 0x4761EFFA;
RAX = RBX;
RAX = (~RAX);
RAX += RDX;
RAX += RCX;
RDX = global::module_base + 0x4D99E6C7;
RCX = 0x146DB59CC1529DFB;
RAX *= RCX;
R8 = 0; // Special case
RCX = 0x6560D27261FEC3CD;
RAX -= RCX;
R8 = _rotl64(R8, 0x10);
R8 ^= R11;
RCX = RBX;
RCX *= RDX;
RDX = RAX;
R8 = (~R8);
RDX ^= RCX;
if (is_bad_ptr((void*)(R8 + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(R8 + 0x9);
RAX *= RDX;
RCX = global::module_base;
RAX ^= RCX;
RCX = 0x88F7E80C1A3D810D;
RAX ^= RCX;
return RAX;
}
case 9:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
R14 = global::module_base + 0x2B3B97D6;
RCX = R14;
RCX = (~RCX);
RCX ^= RBX;
RAX -= RCX;
RCX = RAX;
RCX >>= 0x26;
RAX ^= RCX;
RCX = global::module_base;
RCX += 0x768D9C44;
RCX += RBX;
RAX += RCX;
RCX = global::module_base;
RAX ^= RCX;
RDX = 0; // Special case
RCX = 0xB806EA076004BA03;
RCX += RAX;
RDX = _rotl64(RDX, 0x10);
RDX ^= R10;
RDX = (~RDX);
if (is_bad_ptr((void*)(RDX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(RDX + 0x9);
RAX *= RCX;
RCX = 0xEDE8FF8B79B50DB9;
RAX ^= RCX;
RCX = 0x6FB6C9522E542E57;
RAX *= RCX;
return RAX;
}
case 10:
{
R14 = global::module_base + 0x30AA903C;
R10 = *(uint64_t*)(global::module_base + 0x6358146);
RDX = 0; // Special case
RCX = global::module_base + 0x94AF;
RDX = _rotl64(RDX, 0x10);
RDX ^= R10;
RDX = (~RDX);
if (is_bad_ptr((void*)(RDX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RDX = *(uint64_t*)(RDX + 0x9);
RDX *= RAX;
RAX = RBX;
RAX = (~RAX);
RAX += RDX;
RAX += RCX;
RCX = RAX;
RCX >>= 0xC;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x18;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x30;
RAX ^= RCX;
RCX = 0xACC4BF01026ACA41;
RAX *= RCX;
RCX = 0x7B0FC59EF989D401;
RAX *= RCX;
RCX = RBX;
RCX = (~RCX);
RCX *= R14;
RAX ^= RCX;
RAX += RBX;
RCX = 0xA7FA6EC3B6BE6B3;
RAX *= RCX;
return RAX;
}
case 11:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
R15 = global::module_base + 0x83A5;
RAX ^= RBX;
RCX = 0x40C12A8DB56F3975;
RAX ^= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
RCX = global::module_base + 0x4D9F690F;
RCX = (~RCX);
RCX *= RBX;
RAX += RCX;
RDX = RBX;
RDX = (~RDX);
RCX = global::module_base + 0x209B04FB;
RCX = (~RCX);
RDX *= RCX;
RAX += RDX;
RCX = RAX;
RCX >>= 0x26;
RAX ^= RCX;
RCX = 0xFE5C09AC750B9363;
RAX *= RCX;
RCX = RBX;
RCX *= R15;
RAX -= RCX;
return RAX;
}
case 12:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
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;
RDX = RBX;
RDX = (~RDX);
RCX = global::module_base + 0x5871BC1F;
RCX = (~RCX);
RDX += RCX;
RCX = 0x3D71B39825780613;
RAX ^= RDX;
RAX *= RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
RCX = global::module_base + 0x620C;
RCX = (~RCX);
RCX -= RBX;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x1F;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x3E;
RAX ^= RCX;
RCX = 0x94CCAF9E67675B86;
RAX ^= RCX;
RCX = 0xEEDDDC399380CB03;
RAX *= RCX;
return RAX;
}
case 13:
{
R10 = *(uint64_t*)(global::module_base + 0x6358146);
R15 = global::module_base + 0x24DDB6C6;
R14 = global::module_base + 0x44386CDB;
RDX = RBX;
RDX = (~RDX);
RCX = R15;
RCX = (~RCX);
RDX += RCX;
RAX ^= RDX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
RCX = RAX;
RCX >>= 0x1D;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x3A;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0xA;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x14;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x28;
RAX ^= RCX;
RCX = R14;
RCX = (~RCX);
RCX ^= RBX;
RAX -= RCX;
RCX = 0xA425934513878AA5;
RAX ^= RCX;
RCX = 0xEBB297007E6A6869;
RAX *= RCX;
RCX = 0x71D340402BC33382;
RAX += RCX;
return RAX;
}
case 14:
{
R9 = *(uint64_t*)(global::module_base + 0x6358146);
RCX = global::module_base;
RAX += RCX;
RCX = global::module_base;
RAX ^= RCX;
RCX = 0x5B3DE4A99B478B9C;
RAX -= RCX;
RCX = RBX;
RSP = global::module_base + 0x2F3E;
RCX *= RSP;
RAX += RCX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R9;
RCX = (~RCX);
if (is_bad_ptr((void*)(RCX + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX *= *(uint64_t*)(RCX + 0x9);
RCX = 0xC04FC33339F325BD;
RAX *= RCX;
RCX = RAX;
RCX >>= 0x22;
RAX ^= RCX;
RCX = global::module_base;
RAX ^= RCX;
return RAX;
}
case 15:
{
R11 = *(uint64_t*)(global::module_base + 0x6358146);
R15 = global::module_base + 0x5FEE;
RCX = RBX;
RCX = (~RCX);
RCX ^= R15;
RAX += RCX;
RCX = RAX;
RCX >>= 0x22;
RAX ^= RCX;
RCX = RAX;
RCX >>= 0x26;
RAX ^= RCX;
R8 = 0; // Special case
R8 = _rotl64(R8, 0x10);
RCX = global::module_base;
RAX -= RCX;
R8 ^= R11;
R8 = (~R8);
RDX = 0xD2E4E9A984CB1482;
RDX += RAX;
RDX += RBX;
if (is_bad_ptr((void*)(R8 + 0x9))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(R8 + 0x9);
RAX *= RDX;
RCX = 0x668190FC03DA69F9;
RAX *= RCX;
RCX = 0x7DCF9F0915447B5B;
RAX -= RCX;
return RAX;
}
default:
return 0;
}
}
auto get_bone() -> uint64_t
{
uint64_t RAX = global::module_base, RBX = global::module_base, RCX = global::module_base, RDX = global::module_base, R8 = global::module_base, RDI = global::module_base, R9 = global::module_base, R10 = global::module_base, R11 = global::module_base, R12 = global::module_base, R13 = global::module_base, R14 = global::module_base, R15 = global::module_base, RSI = global::module_base, RSP = global::module_base, RBP = global::module_base;
R8 = *(uint64_t*)(global::module_base + 0x152FB068);
if (!R8)
return 0;
RBX = global::peb;
// test r8,r8
// je near ptr 0000000001BCDD14h
RAX = RBX;
RAX >>= 0x1F;
RAX &= 0xF;
switch (RAX)
{
case 0:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = global::module_base;
R8 -= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R10;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = R8;
RAX >>= 0x1E;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x3C;
R8 ^= RAX;
RSP = 0x6E33B4D07235DCE1;
R8 *= RSP;
RAX = RBX;
RBP = global::module_base + 0xA176;
RAX *= RBP;
R8 -= RAX;
RAX = 0x1588F6554284D28E;
R8 -= RAX;
RCX = global::module_base;
RAX = 0x4F8498C6B1335BDA;
RAX -= RCX;
R8 += RAX;
return R8;
}
case 1:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = R8;
RAX >>= 0x5;
R8 ^= RAX;
RAX = R8;
RAX >>= 0xA;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x14;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x28;
R8 ^= RAX;
RAX = 0x2A67EE5D220D754A;
R8 -= RAX;
RAX = global::module_base + 0x6B86;
RCX = RBX;
RCX = (~RCX);
RCX *= RAX;
RAX = RBX;
RCX += R8;
R8 = global::module_base;
RAX -= R8;
R8 = RCX;
RAX -= 0x42B8;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x7;
R8 ^= RAX;
RAX = R8;
RAX >>= 0xE;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x1C;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x38;
R8 ^= RAX;
RAX = 0x239437FC18D83A9E;
R8 ^= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R10;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(RAX + 0x11);
RSP = 0x4CB24DAE2BD35C1F;
RAX *= RSP;
R8 *= RAX;
return R8;
}
case 2:
{
R11 = global::module_base + 0x65E6;
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = RBX;
RAX ^= R11;
R8 += RAX;
RAX = 0xA04060743EEEC81;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x20;
R8 ^= RAX;
R8 -= RBX;
RAX = global::module_base;
R8 ^= RAX;
RAX = 0xCAA0FFD0709BBB87;
R8 *= RAX;
RAX = 0x3C1E90309C0BE784;
R8 ^= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
return R8;
}
case 3:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = 0x540D0AF5F4CDB74B;
RAX *= R8;
R8 = global::module_base;
RAX ^= R8;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = _byteswap_uint64(RCX);
if (is_bad_ptr((void*)(RCX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 = *(uint64_t*)(RCX + 0x11);
R8 *= RAX;
RAX = global::module_base;
RAX += 0x770D;
RAX += RBX;
R8 ^= RAX;
RAX = global::module_base;
R8 ^= RAX;
RAX = RBX + 0x1;
RSP = global::module_base + 0xEB6C;
RAX *= RSP;
R8 += RAX;
RAX = R8;
RAX >>= 0x5;
R8 ^= RAX;
RAX = R8;
RAX >>= 0xA;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x14;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x28;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x27;
R8 ^= RAX;
return R8;
}
case 4:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = global::module_base;
RAX += R8;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = _byteswap_uint64(RCX);
if (is_bad_ptr((void*)(RCX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 = *(uint64_t*)(RCX + 0x11);
R8 *= RAX;
RCX = global::module_base + 0xAD05;
RAX = R8;
RAX >>= 0x1A;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x34;
R8 ^= RAX;
RAX = global::module_base + 0x316BDF41;
RAX -= RBX;
R8 += RAX;
RAX = 0x86DB83FC703A9029;
R8 *= RAX;
R8 ^= RBX;
R8 ^= RCX;
RAX = 0xFAA4F606C5BA248C;
R8 ^= RAX;
RAX = 0x28AE5E481A72B2B3;
R8 *= RAX;
return R8;
}
case 5:
{
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = R8 + RBX;
R8 = 0x1395E21D03239025;
RAX += R8;
R8 = global::module_base;
R8 += RAX;
RAX = global::module_base;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x21;
R8 ^= RAX;
RAX = global::module_base + 0x8A9B;
R8 += RBX;
R8 += RAX;
R8 ^= RBX;
RAX = 0xDFB38FA8F07B7E79;
R8 *= RAX;
return R8;
}
case 6:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = R8;
RAX >>= 0xF;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x1E;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x3C;
R8 ^= RAX;
RAX = global::module_base;
R8 ^= RAX;
RAX = 0x19B16A317394149D;
R8 ^= RAX;
RAX = 0x6E8320546EF271ED;
R8 *= RAX;
RAX = 0x27C46D7702E18107;
R8 *= RAX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RCX ^= R10;
RCX = _byteswap_uint64(RCX);
if (is_bad_ptr((void*)(RCX + 0x11))) return 0xFFFFFFFFFFFFFFFF; RCX = *(uint64_t*)(RCX + 0x11);
RCX *= R8;
R8 = global::module_base + 0xDA3A;
R8 *= RBX;
R8 += RCX;
RAX = global::module_base + 0x1463840C;
RAX -= RBX;
R8 += RAX;
return R8;
}
case 7:
{
R11 = global::module_base + 0x1F57940D;
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = R8;
RAX >>= 0x17;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x2E;
R8 ^= RAX;
RAX = R11;
RAX = (~RAX);
RAX += RBX;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x1C;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x38;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x17;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x2E;
R8 ^= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = 0xC6F4A95E4EEDD47F;
R8 *= RAX;
RAX = global::module_base;
R8 -= RAX;
RAX = 0xAB801A1C78E324AD;
R8 ^= RAX;
return R8;
}
case 8:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RCX = global::module_base + 0x3C70771D;
RAX = global::module_base + 0x3548;
RAX = (~RAX);
RAX ^= RBX;
R8 ^= RAX;
R8 += RBX;
R8 ^= RBX;
RAX = 0xBD25B6162FFC4A37;
R8 ^= RCX;
R8 *= RAX;
RAX = R8;
RAX >>= 0x8;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x10;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x20;
R8 ^= RAX;
RCX = 0; // Special case
RCX = _rotl64(RCX, 0x10);
RAX = R8;
RCX ^= R10;
RAX -= RBX;
RCX = _byteswap_uint64(RCX);
if (is_bad_ptr((void*)(RCX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 = *(uint64_t*)(RCX + 0x11);
RCX = global::module_base + 0x573BDED9;
R8 *= RAX;
RAX = RBX;
RAX *= RCX;
R8 ^= RAX;
return R8;
}
case 9:
{
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = R8;
RAX >>= 0xC;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x18;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x30;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x12;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x24;
R8 ^= RAX;
R8 += RBX;
RAX = R8;
RAX >>= 0x23;
R8 ^= RAX;
RAX = 0x7E3E416EF7F1D741;
R8 *= RAX;
RAX = 0xF617ED5B72E590DE;
R8 ^= RAX;
RAX = 0x818141D2E8EA7F6F;
R8 *= RAX;
return R8;
}
case 10:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = global::module_base;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x28;
R8 ^= RAX;
RAX = global::module_base;
R8 -= RAX;
RCX = 0; // Special case
RAX = R8;
RCX = _rotl64(RCX, 0x10);
RAX >>= 0x20;
RCX ^= R10;
RAX ^= R8;
RCX = _byteswap_uint64(RCX);
if (is_bad_ptr((void*)(RCX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 = *(uint64_t*)(RCX + 0x11);
R8 *= RAX;
RAX = 0xF37BC628D4B58CF3;
R8 *= RAX;
RAX = 0x2A8C713B6A73DA4D;
R8 += RAX;
RAX = 0x7122022471FD76A7;
R8 ^= RAX;
return R8;
}
case 11:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
R11 = global::module_base + 0x2E006611;
RAX = 0xC7B1BEFAE1F9E327;
R8 *= RAX;
R8 += R11;
RCX = RBX;
RCX = (~RCX);
R8 += RCX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R10;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
R8 -= global::module_base;
RAX = global::module_base;
RAX += 0xEEE7;
RAX += RBX;
RAX ^= R8;
R8 = RAX;
RAX >>= 0x1A;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x34;
R8 ^= RAX;
R8 += RBX;
RAX = global::module_base + 0x1E776935;
RAX -= RBX;
R8 ^= RAX;
return R8;
}
case 12:
{
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = R8;
RAX >>= 0x11;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x22;
R8 ^= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = R8;
RAX >>= 0x8;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x10;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x20;
R8 ^= RAX;
RAX = 0xD3A76E77D0439A87;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x17;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x2E;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x27;
R8 ^= RAX;
RAX = 0xE7C759589C81E2D1;
R8 *= RAX;
RAX = 0x92D8F3E599FB6C55;
R8 *= RAX;
return R8;
}
case 13:
{
R10 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = 0xEDE0ED52BA16A73B;
R8 *= RAX;
RAX = R8;
RAX >>= 0x1C;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x38;
R8 ^= RAX;
R8 += RBX;
RAX = 0x40F028F390F9B4DB;
R8 *= RAX;
R8 ^= RBX;
RAX = global::module_base;
R8 -= RAX;
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R10;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; RAX = *(uint64_t*)(RAX + 0x11);
R8 *= RAX;
RAX = global::module_base;
R8 ^= RAX;
return R8;
}
case 14:
{
R9 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = 0; // Special case
RAX = _rotl64(RAX, 0x10);
RAX ^= R9;
RAX = _byteswap_uint64(RAX);
if (is_bad_ptr((void*)(RAX + 0x11))) return 0xFFFFFFFFFFFFFFFF; R8 *= *(uint64_t*)(RAX + 0x11);
RAX = RBX;
RBP = global::module_base + 0xA494;
RAX ^= RBP;
R8 += RAX;
R8 ^= RBX;
RAX = 0x44F06411130D8786;
R8 -= RAX;
RAX = RBX;
RAX = (~RAX);
RBP = global::module_base + 0x1F68E2F6;
RAX ^= RBP;
R8 -= RAX;
RAX = 0x72F146FB8657DB4D;
R8 *= RAX;
RAX = R8;
RAX >>= 0x15;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x2A;
R8 ^= RAX;
RAX = 0x25EA3844D16C50F1;
R8 += RAX;
return R8;
}
case 15:
{
R12 = global::module_base + 0x6ED429A4;
R11 = *(uint64_t*)(global::module_base + 0x6358219);
RAX = RBX;
RAX *= R12;
R8 -= RAX;
RAX = 0x16E71D0785BF5E85;
R8 *= RAX;
RAX = 0x164272E1C98C0650;
R8 -= RAX;
RAX = R8;
RAX >>= 0x26;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x12;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x24;
RAX ^= R8;
RDX = 0; // Special case
RDX = _rotl64(RDX, 0x10);
R8 = global::module_base + 0x253C;
RDX ^= R11;
RCX = RBX;
RDX = _byteswap_uint64(RDX);
RCX = (~RCX);
if (is_bad_ptr((void*)(RDX + 0x11))) return 0xFFFFFFFFFFFFFFFF; RDX = *(uint64_t*)(RDX + 0x11);
RDX *= RAX;
R8 += RDX;
R8 += RCX;
RAX = R8;
RAX >>= 0x13;
R8 ^= RAX;
RAX = R8;
RAX >>= 0x26;
R8 ^= RAX;
return R8;
}
default:
return 0;
}
}
auto get_bone_index(uint32_t index) -> uint64_t
{
uint64_t RAX = 0, RBX = 0, RCX = 0, RDX = 0, R8 = 0, RDI = 0, R9 = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, RSI = 0, RSP = 0, RBP = 0;
RBX = index;
RCX = RBX * 0x13C8;
RAX = 0x4F23479A4BA8FAB5;
R11 = global::module_base;
RAX = _umul128(RAX, RCX, &RDX);
R10 = 0x33B1DA233CBB3105;
RDX >>= 0xB;
RAX = RDX * 0x19E1;
RCX -= RAX;
RAX = 0xF598CEFB88707C3D;
R8 = RCX * 0x19E1;
RAX = _umul128(RAX, R8, &RDX);
RDX >>= 0xD;
RAX = RDX * 0x215B;
R8 -= RAX;
RAX = 0xEA0EA0EA0EA0EA0F;
RAX = _umul128(RAX, R8, &RDX);
RAX = 0x948B0FCD6E9E0653;
RDX >>= 0x5;
RCX = RDX * 0x23;
RAX = _umul128(RAX, R8, &RDX);
RAX = R8;
RAX -= RDX;
RAX >>= 0x1;
RAX += RDX;
RAX >>= 0x8;
RCX += RAX;
RAX = RCX * 0x288;
RCX = R8 * 0x28A;
RCX -= RAX;
RAX = *(uint16_t*)(RCX + R11 + 0x6362050);
R8 = RAX * 0x13C8;
RAX = R10;
RAX = _umul128(RAX, R8, &RDX);
RAX = R10;
RDX >>= 0xA;
RCX = RDX * 0x13CF;
R8 -= RCX;
R9 = R8 * 0x164B;
RAX = _umul128(RAX, R9, &RDX);
RDX >>= 0xA;
RAX = RDX * 0x13CF;
R9 -= RAX;
RAX = 0x97B425ED097B425F;
RAX = _umul128(RAX, R9, &RDX);
RAX = 0x83C977AB2BEDD28F;
RDX >>= 0x5;
RCX = RDX * 0x36;
RAX = _umul128(RAX, R9, &RDX);
RAX = R9;
RAX -= RDX;
RAX >>= 0x1;
RAX += RDX;
RAX >>= 0x7;
RCX += RAX;
RAX = RCX * 0x152;
RCX = R9 * 0x154;
RCX -= RAX;
RSI = *(uint16_t*)(RCX + R11 + 0x63678F0);
return RSI;
}
}