1. enum game_data : uint32_t
    2. {
    3. // 48 8B 1D ? ? ? ? C6 44 24 ? ? 0F B6 44 24 ?
    4. o_client_info = 0x174A9718, // +
    5. // 48 8B 83 ?? ?? ?? ?? C6 44 24 ?? ?? 0F B6
    6. o_client_base = 0x9DBF8, // +
    7. //48 83 BB ? ? ? ? ? 0F 84 ? ? ? ? 48 89 B4 24 ? ? ? ?
    8. o_local_index = 0x178, // +
    9. // 4C 8D 1D ? ? ? ? 44 8B 15 ? ? ? ? 48 8D 1D ? ? ? ? 4C 8B C9
    10. o_refdef = 0x174AC0C8, //+ ‬
    11. // 48 8B 05 ? ? ? ? 48 8B 7C 24 ? 48 05 ? ? ? ?
    12. o_camera_base = 0x145F67E0, // ‬+
    13. o_camera_pos = 0x1D8,
    14. // C7 83 ? ? ? ? ? ? ? ? C7 83 ? ? ? ? ? ? ? ? E8 ? ? ? ? 44 0F B6 C6 48 8B D5 48 8B CF E8 ? ? ? ?
    15. o_player_dead_1 = 0x3818, // +
    16. // 41 83 B8 ? ? ? ? ? 0F 85 ? ? ? ? 41 B8 ? ? ? ?
    17. o_player_dead_2 = 0xF40, // +
    18. // 49 8B D9 41 0F B6 F0 8B F9 48 8B EA
    19. o_player_pos = 0x468, // +
    20. // 48 69 D3 ?? ?? ?? ?? 48 03 96 ?? ?? ?? ??
    21. o_player_size = 0x3AD8, // +
    22. // 8B 87 ? ? ? ? 4C 8B BC 24 ? ? ? ? 4C 8B B4 24 ? ? ? ? 4C 8B AC 24 ? ? ? ? 4C 8B A4 24 ? ? ? ? 85 C0 74 16
    23. o_player_team = 0xF60, // +
    24. // C7 87 ?? ?? ?? ?? ?? ?? ?? ?? C7 87 ?? ?? ?? ?? ?? ?? ?? ?? 41
    25. o_player_valid = 0xF64, // +
    26. // 48 8D 0D ? ? ? ? 48 8B 0C C1 48 8B 01 FF 90 ? ? ? ?
    27. o_name_array = 0x174B76B8, // ‬+
    28. o_name_array_padding = 0x4C70,
    29. o_name_array_size = 0xD0,
    30. };
    1. ULONG64 GetClientInfo(ULONG64 peb, ULONG64 moduleBase) {
    2. ULONG64 rax = 0, rbx = 0, rcx = 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;
    3. r8 = peb;
    4. rbx = *(ULONG64*)(moduleBase + 0x174a9718);
    5. //r8 = *(ULONG64*)(moduleBase + 0x1c79082); // ? this is gay
    6. rax = moduleBase;
    7. rbx += rax;
    8. rax = rbx;
    9. rax >>= 0x10;
    10. rbx ^= rax;
    11. rax = (moduleBase + 0x134);
    12. rcx -= rax;
    13. rax = rbx;
    14. rcx = 0; // bruh
    15. rax >>= 0x20;
    16. rax ^= rbx;
    17. rcx = _rotl64(rcx, 0x10);
    18. rcx ^= *(ULONG64*)(moduleBase + 0x663C10A);
    19. rcx = _byteswap_uint64(rcx);
    20. rbx = *(ULONG64*)(rcx + 0x13);
    21. rbx *= rax;
    22. rax = 0x76D048452DCF6909;
    23. rbx -= r8;
    24. r8 = (~r8);
    25. rbx *= rax;
    26. rax = (moduleBase + 0x2C8CD073);
    27. r8 += rax;
    28. rbx ^= r8;
    29. return rbx;
    30. }
    1. ULONG64 GetClientBase(ULONG64 Peb, ULONG64 moduleBase, ULONG64 clientInfo)
    2. {
    3. ULONG64 rax = moduleBase, rcx = moduleBase, rdx = moduleBase, r8 = moduleBase, r9 = moduleBase, r10 = moduleBase, r11 = moduleBase, r12 = moduleBase, r13 = moduleBase, r14 = moduleBase, r15 = moduleBase, rsi = moduleBase, rdi = moduleBase; // hardcoded lol
    4. ULONG64 rbx = Peb;
    5. rax = *(ULONG64*)(clientInfo + 0x9dbf8);
    6. rcx = rbx;
    7. rcx <<= 0x21;
    8. rcx = _byteswap_uint64(rcx);
    9. rcx &= 0xf;
    10. switch (rcx)
    11. {
    12. case 0:
    13. { r9 = *(ULONG64*)(moduleBase + 0x663C140);
    14. rcx = 0; // bruh
    15. rcx = _rotl64(rcx, 0x10);
    16. rcx ^= r9;
    17. rcx = _byteswap_uint64(rcx);
    18. rax *= *(ULONG64*)(rcx + 0xb);
    19. rcx = rax;
    20. rcx >>= 0x18;
    21. rax ^= rcx;
    22. rcx = rax;
    23. rcx >>= 0x30;
    24. rax ^= rcx;
    25. rcx = moduleBase;
    26. rax ^= rcx;
    27. rcx = rax;
    28. rcx >>= 0x8;
    29. rax ^= rcx;
    30. rcx = rax;
    31. rcx >>= 0x10;
    32. rax ^= rcx;
    33. rcx = rax;
    34. rcx >>= 0x20;
    35. rax ^= rcx;
    36. rcx = 0x345963FE4F9F5BC7;
    37. rax *= rcx;
    38. rcx = 0x1BC0D0E9288C6DB3;
    39. rax += rcx;
    40. rax += rbx;
    41. rcx = moduleBase;
    42. rax -= rcx;
    43. return rax;
    44. }
    45. case 1:
    46. { r11 = (moduleBase + 0x6064722A);
    47. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    48. rcx = rbx;
    49. rcx ^= r11;
    50. rax -= rcx;
    51. rcx = rax;
    52. rcx >>= 0x11;
    53. rax ^= rcx;
    54. rcx = rax;
    55. rcx >>= 0x22;
    56. rax ^= rcx;
    57. rax ^= rbx;
    58. rcx = (moduleBase + 0x28AB);
    59. rcx = (~rcx);
    60. rcx -= rbx;
    61. rax += rcx;
    62. rcx = 0x16A1C31B3D93A83F;
    63. rax *= rcx;
    64. rcx = 0xD0C234BF8A55764B;
    65. rax *= rcx;
    66. rcx = 0; // bruh
    67. rcx = _rotl64(rcx, 0x10);
    68. rcx ^= r10;
    69. rcx = _byteswap_uint64(rcx);
    70. rax *= *(ULONG64*)(rcx + 0xb);
    71. rcx = 0xB75E6F62B4DBBCC1;
    72. rax *= rcx;
    73. return rax;
    74. }
    75. case 2:
    76. { r14 = (moduleBase + 0x30A5);
    77. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    78. rcx = rax;
    79. rcx >>= 0x15;
    80. rax ^= rcx;
    81. rcx = rax;
    82. rcx >>= 0x2A;
    83. rax ^= rcx;
    84. rcx = rbx;
    85. rcx = (~rcx);
    86. rcx ^= r14;
    87. rax -= rcx;
    88. rcx = 0; // bruh
    89. rcx = _rotl64(rcx, 0x10);
    90. rcx ^= r10;
    91. rcx = _byteswap_uint64(rcx);
    92. rax *= *(ULONG64*)(rcx + 0xb);
    93. rcx = 0x5D11A30DE94FFEDE;
    94. rax += rcx;
    95. rcx = rax;
    96. rcx >>= 0x1B;
    97. rax ^= rcx;
    98. rcx = rax;
    99. rcx >>= 0x36;
    100. rax ^= rcx;
    101. rax ^= rbx;
    102. rcx = 0x1D2CA89A1A1BE3D9;
    103. rax ^= rcx;
    104. rcx = 0xDD63D27B22050957;
    105. rax *= rcx;
    106. return rax;
    107. }
    108. case 3:
    109. { r14 = (moduleBase + 0x7B3CDBC1);
    110. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    111. rdx = rbx;
    112. rdx = (~rdx);
    113. rcx = r14;
    114. rcx = (~rcx);
    115. rdx *= rcx;
    116. rax += rdx;
    117. rcx = rax;
    118. rcx >>= 0x26;
    119. rcx ^= rax;
    120. rax = rcx + rbx * 2;
    121. rcx = moduleBase;
    122. rax -= rcx;
    123. rax -= 0x7736E4C5;
    124. rcx = 0xA4C7B3171334DA2E;
    125. rax ^= rcx;
    126. rcx = 0x667B75570F23711D;
    127. rax *= rcx;
    128. rcx = 0x7E05078E8B5B3EDA;
    129. rax -= rcx;
    130. rcx = 0; // bruh
    131. rcx = _rotl64(rcx, 0x10);
    132. rcx ^= r10;
    133. rcx = _byteswap_uint64(rcx);
    134. rax *= *(ULONG64*)(rcx + 0xb);
    135. return rax;
    136. }
    137. case 4:
    138. { r9 = *(ULONG64*)(moduleBase + 0x663C140);
    139. rax ^= rbx;
    140. rcx = 0; // bruh
    141. rcx = _rotl64(rcx, 0x10);
    142. rcx ^= r9;
    143. rcx = _byteswap_uint64(rcx);
    144. rcx = *(ULONG64*)(rcx + 0xb);
    145. rcx *= 0x64DE26759A457153;
    146. rax *= rcx;
    147. rcx = rax;
    148. rcx >>= 0x24;
    149. rax ^= rcx;
    150. rcx = 0x49AF5B2E74070925;
    151. rax *= rcx;
    152. rcx = 0xB5CC279242DD0301;
    153. rax *= rcx;
    154. return rax;
    155. }
    156. case 5:
    157. { r11 = *(ULONG64*)(moduleBase + 0x663C140);
    158. r15 = (moduleBase + 0x6BA9);
    159. rdx = (moduleBase + 0x5F9E55C9);
    160. rdx = (~rdx);
    161. rdx ^= rbx;
    162. rcx = rax;
    163. rax = 0xBF5978C960F6BB4B;
    164. rax ^= rcx;
    165. rax += rdx;
    166. rdx = (moduleBase + 0x28877536);
    167. rcx = rax;
    168. rcx >>= 0x18;
    169. rax ^= rcx;
    170. rcx = rax;
    171. rcx >>= 0x30;
    172. rax ^= rcx;
    173. rcx = rbx;
    174. rcx = (~rcx);
    175. rcx *= r15;
    176. rax ^= rcx;
    177. r8 = 0; // bruh
    178. r8 = _rotl64(r8, 0x10);
    179. r8 ^= r11;
    180. rcx = rbx;
    181. rcx *= rdx;
    182. rdx = rax;
    183. rdx -= rcx;
    184. rcx = 0x84229F2B4FE6843B;
    185. r8 = _byteswap_uint64(r8);
    186. rax = *(ULONG64*)(r8 + 0xb);
    187. rax *= rdx;
    188. rax *= rcx;
    189. rax ^= rbx;
    190. return rax;
    191. }
    192. case 6:
    193. { r15 = (moduleBase + 0xE397);
    194. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    195. rcx = moduleBase;
    196. rax += rcx;
    197. rcx = moduleBase;
    198. rax += rcx;
    199. rcx = 0x4030351D523D85BB;
    200. rax += rcx;
    201. rcx = rbx;
    202. rcx ^= r15;
    203. rax += rcx;
    204. rcx = 0x71A01F36E5BF55AF;
    205. rax *= rcx;
    206. rcx = rax;
    207. rcx >>= 0x10;
    208. rax ^= rcx;
    209. rcx = rax;
    210. rcx >>= 0x20;
    211. rcx ^= rax;
    212. rdx = 0; // bruh
    213. rdx = _rotl64(rdx, 0x10);
    214. rdx ^= r10;
    215. rdx = _byteswap_uint64(rdx);
    216. rax = *(ULONG64*)(rdx + 0xb);
    217. rdx = (moduleBase + 0x31AFF9CE);
    218. rax *= rcx;
    219. rcx = rbx;
    220. rcx *= rdx;
    221. rax -= rcx;
    222. return rax;
    223. }
    224. case 7:
    225. { r10 = *(ULONG64*)(moduleBase + 0x663C140);
    226. r15 = (moduleBase + 0x9CF0);
    227. rcx = rax;
    228. rcx >>= 0x19;
    229. rax ^= rcx;
    230. rcx = rax;
    231. rcx >>= 0x32;
    232. rax ^= rcx;
    233. rcx = moduleBase;
    234. rcx += 0x16E9;
    235. rcx += rbx;
    236. rax ^= rcx;
    237. rdx = 0; // bruh
    238. rdx = _rotl64(rdx, 0x10);
    239. rdx ^= r10;
    240. rcx = rbx;
    241. rdx = _byteswap_uint64(rdx);
    242. rcx ^= r15;
    243. rdx = *(ULONG64*)(rdx + 0xb);
    244. rax *= rdx;
    245. rax -= rcx;
    246. rcx = rax;
    247. rcx >>= 0xA;
    248. rax ^= rcx;
    249. rcx = rax;
    250. rcx >>= 0x14;
    251. rax ^= rcx;
    252. rcx = rax;
    253. rcx >>= 0x28;
    254. rax ^= rcx;
    255. rcx = 0x201300BD919020EB;
    256. rax *= rcx;
    257. rcx = 0x136871F8B2311042;
    258. rax += rcx;
    259. rcx = 0xE0229051A9F3C38B;
    260. rax ^= rcx;
    261. return rax;
    262. }
    263. case 8:
    264. { r15 = (moduleBase + 0x6C04);
    265. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    266. rcx = 0; // bruh
    267. rcx = _rotl64(rcx, 0x10);
    268. rcx ^= r10;
    269. rcx = _byteswap_uint64(rcx);
    270. rdx = *(ULONG64*)(rcx + 0xb);
    271. rcx = 0x866F75E98D0D53B1;
    272. rdx *= rax;
    273. rax = rbx;
    274. rax *= r15;
    275. rdx += rax;
    276. rax = 0x1671E2558441F0BB;
    277. rdx ^= rbx;
    278. rax = rdx;
    279. rax >>= 0x20;
    280. rax ^= rdx;
    281. rax ^= rcx;
    282. rcx = 0x9E0D951F0C28F90B;
    283. rax *= rcx;
    284. rcx = 0x78503CB374B04FAD;
    285. rax *= rcx;
    286. rcx = rax;
    287. rcx >>= 0x2;
    288. rax ^= rcx;
    289. rcx = rax;
    290. rcx >>= 0x4;
    291. rax ^= rcx;
    292. rcx = rax;
    293. rcx >>= 0x8;
    294. rax ^= rcx;
    295. rcx = rax;
    296. rcx >>= 0x10;
    297. rax ^= rcx;
    298. rcx = rax;
    299. rcx >>= 0x20;
    300. rax ^= rcx;
    301. return rax;
    302. }
    303. case 9:
    304. { r14 = (moduleBase + 0x6CFB74E0);
    305. r11 = (moduleBase + 0x7F309832);
    306. r9 = *(ULONG64*)(moduleBase + 0x663C140);
    307. rcx = 0; // bruh
    308. rcx = _rotl64(rcx, 0x10);
    309. rcx ^= r9;
    310. rcx = _byteswap_uint64(rcx);
    311. rax *= *(ULONG64*)(rcx + 0xb);
    312. rax ^= rbx;
    313. rax ^= r14;
    314. rcx = rax;
    315. rcx >>= 0x17;
    316. rax ^= rcx;
    317. rcx = rax;
    318. rcx >>= 0x2E;
    319. rax ^= rcx;
    320. rcx = 0xD7356E290A5B1FBA;
    321. rax += rcx;
    322. rcx = moduleBase;
    323. rax ^= rcx;
    324. rcx = 0xD80D8A31210F08D3;
    325. rax *= rcx;
    326. rcx = r11;
    327. rcx = (~rcx);
    328. rcx ^= rbx;
    329. rax -= rcx;
    330. rcx = rax;
    331. rcx >>= 0x9;
    332. rax ^= rcx;
    333. rcx = rax;
    334. rcx >>= 0x12;
    335. rax ^= rcx;
    336. rcx = rax;
    337. rcx >>= 0x24;
    338. rax ^= rcx;
    339. return rax;
    340. }
    341. case 10:
    342. { r9 = *(ULONG64*)(moduleBase + 0x663C140);
    343. r11 = (moduleBase + 0x6AD2A7C4);
    344. rax -= rbx;
    345. rax ^= rbx;
    346. rcx = 0x29222BE3E0E2FFB;
    347. rax ^= r11;
    348. r11 = moduleBase;
    349. rax *= rcx;
    350. rcx = 0x5BB04B85CD9365D;
    351. rax -= rbx;
    352. rax += rcx;
    353. rax += r11;
    354. rcx = 0; // bruh
    355. rcx = _rotl64(rcx, 0x10);
    356. rcx ^= r9;
    357. rcx = _byteswap_uint64(rcx);
    358. rax *= *(ULONG64*)(rcx + 0xb);
    359. rcx = 0x5FC588EC700475F3;
    360. rax *= rcx;
    361. rcx = rax;
    362. rcx >>= 0xC;
    363. rax ^= rcx;
    364. rcx = rax;
    365. rcx >>= 0x18;
    366. rax ^= rcx;
    367. rcx = rax;
    368. rcx >>= 0x30;
    369. rax ^= rcx;
    370. return rax;
    371. }
    372. case 11:
    373. { r10 = *(ULONG64*)(moduleBase + 0x663C140);
    374. r14 = (moduleBase + 0xCF97);
    375. rdx = r14;
    376. rdx = (~rdx);
    377. rdx += rbx;
    378. rax ^= rdx;
    379. rcx = (moduleBase + 0xCA22);
    380. rax += rbx;
    381. rdx = moduleBase;
    382. rax += rcx;
    383. rcx = rbx;
    384. rcx = (~rcx);
    385. rcx -= rdx;
    386. rcx -= 0x1236;
    387. rax ^= rcx;
    388. rcx = 0x48502E6384BA9941;
    389. rax *= rcx;
    390. rcx = 0x5EB925E16D423E1E;
    391. rax -= rcx;
    392. rcx = 0; // bruh
    393. rcx = _rotl64(rcx, 0x10);
    394. rcx ^= r10;
    395. rcx = _byteswap_uint64(rcx);
    396. rax *= *(ULONG64*)(rcx + 0xb);
    397. rcx = 0xE5AB625D3BB65BBF;
    398. rax *= rcx;
    399. rcx = rax;
    400. rcx >>= 0x1F;
    401. rax ^= rcx;
    402. rcx = rax;
    403. rcx >>= 0x3E;
    404. rax ^= rcx;
    405. return rax;
    406. }
    407. case 12:
    408. { r15 = (moduleBase + 0xEE34);
    409. r10 = *(ULONG64*)(moduleBase + 0x663C140);
    410. rcx = rbx + 0x1;
    411. rcx *= r15;
    412. rax += rcx;
    413. rax ^= rbx;
    414. rcx = 0xBF0F6EC504339C71;
    415. rax *= rcx;
    416. rcx = 0x62753D45ABF968CD;
    417. rax -= rcx;
    418. rcx = 0x28C82E52D21EB6AB;
    419. rax -= rcx;
    420. rcx = 0; // bruh
    421. rcx = _rotl64(rcx, 0x10);
    422. rcx ^= r10;
    423. rcx = _byteswap_uint64(rcx);
    424. rax *= *(ULONG64*)(rcx + 0xb);
    425. rcx = rax;
    426. rcx >>= 0xB;
    427. rax ^= rcx;
    428. rcx = rax;
    429. rcx >>= 0x16;
    430. rax ^= rcx;
    431. rcx = rax;
    432. rcx >>= 0x2C;
    433. rax ^= rcx;
    434. rcx = moduleBase;
    435. rax ^= rcx;
    436. return rax;
    437. }
    438. case 13:
    439. { r10 = *(ULONG64*)(moduleBase + 0x663C140);
    440. rcx = 0; // bruh
    441. rcx = _rotl64(rcx, 0x10);
    442. rcx ^= r10;
    443. rcx = _byteswap_uint64(rcx);
    444. rax *= *(ULONG64*)(rcx + 0xb);
    445. rcx = rax;
    446. rcx >>= 0x2;
    447. rax ^= rcx;
    448. rcx = rax;
    449. rcx >>= 0x4;
    450. rax ^= rcx;
    451. rcx = rax;
    452. rcx >>= 0x8;
    453. rax ^= rcx;
    454. rcx = rax;
    455. rcx >>= 0x10;
    456. rax ^= rcx;
    457. rcx = rax;
    458. rcx >>= 0x20;
    459. rax ^= rcx;
    460. rdx = rax;
    461. rdx >>= 0x22;
    462. rdx ^= rax;
    463. rcx = 0xAB96BD5255F50EEF;
    464. rax = (moduleBase + 0x4795B778);
    465. rax = (~rax);
    466. rax ^= rbx;
    467. rax += rdx;
    468. rax *= rcx;
    469. rax -= rbx;
    470. rcx = 0x697DECF064AB09C3;
    471. rax *= rcx;
    472. rcx = rbx;
    473. rcx *= 0x7FF6A2B4E842;
    474. rax += rcx;
    475. return rax;
    476. }
    477. case 14:
    478. { r9 = *(ULONG64*)(moduleBase + 0x663C140);
    479. rcx = rax;
    480. rcx >>= 0xB;
    481. rax ^= rcx;
    482. rcx = rax;
    483. rcx >>= 0x16;
    484. rax ^= rcx;
    485. rcx = rax;
    486. rcx >>= 0x2C;
    487. rax ^= rcx;
    488. rcx = 0; // bruh
    489. rcx = _rotl64(rcx, 0x10);
    490. rcx ^= r9;
    491. rcx = _byteswap_uint64(rcx);
    492. rcx = *(ULONG64*)(rcx + 0xb);
    493. rcx *= 0xF2B84228009F892B;
    494. rax *= rcx;
    495. r10 = 0x21D0F0E2660F5094;
    496. rcx = rbx;
    497. rcx = (~rcx);
    498. rcx *= 0x7FF6A2B42E00;
    499. rcx += r10;
    500. rax += rcx;
    501. rcx = rax;
    502. rcx >>= 0x10;
    503. rax ^= rcx;
    504. rcx = rax;
    505. rcx >>= 0x20;
    506. rax ^= rcx;
    507. rcx = 0x1E450D45A88B3DC9;
    508. rax *= rcx;
    509. rcx = rax;
    510. rcx >>= 0x17;
    511. rax ^= rcx;
    512. rcx = rax;
    513. rcx >>= 0x2E;
    514. rax ^= rcx;
    515. return rax;
    516. }
    517. case 15:
    518. { r9 = *(ULONG64*)(moduleBase + 0x663C140);
    519. rcx = moduleBase;
    520. rax ^= rcx;
    521. rcx = 0x104FF8B4C43406AD;
    522. rax += rcx;
    523. rcx = 0x16DB4431461A3E29;
    524. rax *= rcx;
    525. rcx = 0; // bruh
    526. rcx = _rotl64(rcx, 0x10);
    527. rcx ^= r9;
    528. rcx = _byteswap_uint64(rcx);
    529. rax *= *(ULONG64*)(rcx + 0xb);
    530. rcx = rax;
    531. rcx >>= 0x13;
    532. rax ^= rcx;
    533. rcx = rax;
    534. rcx >>= 0x26;
    535. rax ^= rcx;
    536. rcx = moduleBase;
    537. rax -= rcx;
    538. rax += 0xFFFFFFFFFFFF9A85;
    539. rax += rbx;
    540. rcx = 0x11B2D7215841BEB4;
    541. rax += rcx;
    542. return rax;
    543. }
    544. default:
    545. return 0;
    546. }
    547. }