1. uint64_t SWAPPY_CHAIN = 18F290A0;
    2. uint64_t CUM_QUEUE = 0x18F23D28;
    3. uint64_t REFDEF = 0x174DEAB0;
    4. uint64_t CAMERA_POINTER = 0x146DAF80;
    5. uint64_t CAMERA_OFFSET = 0x1D8;
    6. namespace player
    7. {
    8. uint64_t SIZE = 0x3A50;
    9. uint64_t VALID = 0x23C;
    10. uint64_t POS = 0x2838;
    11. uint64_t TEAM = 0x254;
    12. uint64_t STANCE = 0x31B4;
    13. uint64_t DEAD = 0x2BA0;
    14. };
    15. namespace offsets {
    16. constexpr auto refdef = 0x1750E120;
    17. constexpr auto name_array = 0x17519238;
    18. constexpr auto name_array_pos = 0x4C70;
    19. constexpr auto camera_base = 0x14764660;
    20. constexpr auto camera_pos = 0x1D8;
    21. constexpr auto local_index = 0x7C728;
    22. constexpr auto local_index_pos = 0x1FC;
    23. // could not find any signature matches with 4C 8D A7 ? ? ? ? 49 81 C5 ? ? ? ? 4C 89 A5 ? ? ? ? for no_recoil offset
    24. constexpr auto no_recoil = 0x0;
    25. constexpr auto game_mode = 0x1718EBDC;
    26. constexpr auto weapon_definitions = 0x148379C0;
    27. namespace player {
    28. constexpr auto size = 0x3A90;
    29. constexpr auto valid = 0x390;
    30. constexpr auto pos = 0x2808;
    31. constexpr auto team = 0x138;
    32. constexpr auto stance = 0x2D24;
    33. constexpr auto dead_1 = 0x12E;
    34. constexpr auto dead_2 = 0xF9BC;
    35. }
    36. namespace bone {
    37. constexpr auto base_pos = 0x53F4800000000;
    38. constexpr auto index_struct_size = 0x150;
    39. }
    40. namespace directx {
    41. constexpr auto command_queue = 0x18F4FD28;
    42. constexpr auto swap_chain = 0x18F550A0;
    43. }
    44. }
    1. uint64_t GetClientInfo(uint64_t peb, uint64_t moduleBase) {
    2. 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,
    3. ULONG64 rcx = peb;
    4. rcx = ~(rcx);
    5. rbx = *(ULONG64*)(moduleBase + 0x174dc118);
    6. r8 = moduleBase;
    7. rdx = (moduleBase + 0x72B);
    8. rax -= rdx;
    9. rdx = 0x1B293DF6AEC6945;
    10. rax = 0; // bruh
    11. rax = _rotl64(rax, 0x10);
    12. rax ^= *(ULONG64*)(moduleBase + 0x68C511F);
    13. rax = _byteswap_uint64(rax);
    14. rbx *= *(ULONG64*)(rax + 0xd);
    15. rax = rbx;
    16. rax >>= 0x1F;
    17. rbx ^= rax;
    18. rax = rbx;
    19. rax >>= 0x3E;
    20. rbx ^= rax;
    21. rax = 0x7E7EEBBFB8AA0B5E;
    22. rbx *= rdx;
    23. rbx ^= rax;
    24. rax = (moduleBase + 0x4185BFF7);
    25. rcx ^= rax;
    26. rbx += rcx;
    27. rbx -= r8;
    28. return rbx;
    29. }
    1. ULONG64 GetClientBase(ULONG64 Peb, ULONG64 moduleBase, ULONG64 clientInfo)
    2. {
    3. 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
    4. ULONG64 r11 = Peb;
    5. rax = *(ULONG64*)(clientInfo + 0x9dbc8);
    6. if (!rax)
    7. return 0;
    8. rcx = r11;
    9. rcx = _rotl64(rcx, 0x21);
    10. rcx &= 0xf;
    11. switch (rcx)
    12. {
    13. case 0:
    14. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    15. rdx = 0; // bruh
    16. rdx = _rotl64(rdx, 0x10);
    17. rdx ^= r10;
    18. rcx = moduleBase;
    19. rax += rcx;
    20. rcx = rax;
    21. rcx >>= 0x1F;
    22. rax ^= rcx;
    23. rcx = rax;
    24. rdx = _byteswap_uint64(rdx);
    25. rcx >>= 0x3E;
    26. rcx ^= rax;
    27. rax = *(ULONG64*)(rdx + 0x15);
    28. rax *= rcx;
    29. rcx = 0x9BFF0D89E8E6E6B9;
    30. rax *= rcx;
    31. rax ^= r11;
    32. rcx = 0x39AEFA4481B21CB8;
    33. rax ^= rcx;
    34. rcx = rax;
    35. rcx >>= 0x18;
    36. rax ^= rcx;
    37. rcx = rax;
    38. rcx >>= 0x30;
    39. rax ^= rcx;
    40. rcx = 0x72EB68FFA9D0CAED;
    41. rax -= rcx;
    42. return rax;
    43. }
    44. case 1:
    45. { r15 = (moduleBase + 0x5BD49B2D);
    46. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    47. rcx = r11;
    48. rcx *= r15;
    49. rax += rcx;
    50. rcx = rax;
    51. rcx >>= 0x19;
    52. rax ^= rcx;
    53. rcx = rax;
    54. rcx >>= 0x32;
    55. rax ^= rcx;
    56. rcx = (moduleBase + 0x4A532CBC);
    57. rcx -= r11;
    58. rax += rcx;
    59. rcx = rax;
    60. rcx >>= 0x18;
    61. rax ^= rcx;
    62. rcx = rax;
    63. rcx >>= 0x30;
    64. rax ^= rcx;
    65. rcx = 0x4E656D8A69B81DB3;
    66. rax *= rcx;
    67. rcx = 0; // bruh
    68. rcx = _rotl64(rcx, 0x10);
    69. rcx ^= r10;
    70. rcx = _byteswap_uint64(rcx);
    71. rcx = *(ULONG64*)(rcx + 0x15);
    72. rcx *= 0xD4F1D65ACB958B91;
    73. rax *= rcx;
    74. rcx = 0x45811532029096D;
    75. rax *= rcx;
    76. return rax;
    77. }
    78. case 2:
    79. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    80. rcx = 0; // bruh
    81. rcx = _rotl64(rcx, 0x10);
    82. rcx ^= r10;
    83. rcx = _byteswap_uint64(rcx);
    84. rax *= *(ULONG64*)(rcx + 0x15);
    85. rcx = rax;
    86. rcx >>= 0x11;
    87. rax ^= rcx;
    88. rcx = rax;
    89. rcx >>= 0x22;
    90. rax ^= rcx;
    91. rcx = moduleBase;
    92. rcx += 0x500D14F6;
    93. rcx += r11;
    94. rax += rcx;
    95. rcx = 0x79EAE6C7004760FD;
    96. rax *= rcx;
    97. rcx = 0x6EDD1E7329A3847A;
    98. rax += rcx;
    99. rcx = rax;
    100. rcx >>= 0x1E;
    101. rax ^= rcx;
    102. rcx = rax;
    103. rcx >>= 0x3C;
    104. rax ^= rcx;
    105. rcx = 0x9455734CEDB2BFBD;
    106. rax *= rcx;
    107. rcx = rax;
    108. rcx >>= 0x8;
    109. rax ^= rcx;
    110. rcx = rax;
    111. rcx >>= 0x10;
    112. rax ^= rcx;
    113. rcx = rax;
    114. rcx >>= 0x20;
    115. rax ^= rcx;
    116. return rax;
    117. }
    118. case 3:
    119. { r15 = (moduleBase + 0x19CD);
    120. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    121. rcx = 0x68A5E3410F40AA5E;
    122. rax -= rcx;
    123. rcx = 0x8970B69548F1DB3B;
    124. rax *= rcx;
    125. rcx = r11;
    126. rcx *= r15;
    127. rax += rcx;
    128. rcx = rax;
    129. rcx >>= 0x15;
    130. rax ^= rcx;
    131. rcx = rax;
    132. rcx >>= 0x2A;
    133. rax ^= rcx;
    134. rcx = 0xFCE1BE0DDF74033D;
    135. rax ^= rcx;
    136. rcx = moduleBase;
    137. rcx += 0x2362;
    138. rcx += r11;
    139. rax ^= rcx;
    140. rdx = 0; // bruh
    141. rdx = _rotl64(rdx, 0x10);
    142. rdx ^= r10;
    143. rdx = _byteswap_uint64(rdx);
    144. rdx = *(ULONG64*)(rdx + 0x15);
    145. rdx *= rax;
    146. rax = (moduleBase + 0x1E5E54D0);
    147. rax *= r11;
    148. rax += rdx;
    149. return rax;
    150. }
    151. case 4:
    152. { rsi = (moduleBase + 0x2EF8);
    153. r9 = *(ULONG64*)(moduleBase + 0x68C5158);
    154. rax ^= r11;
    155. rcx = rax;
    156. rcx >>= 0x27;
    157. rax ^= rcx;
    158. rcx = 0; // bruh
    159. rcx = _rotl64(rcx, 0x10);
    160. rcx ^= r9;
    161. rcx = _byteswap_uint64(rcx);
    162. rax *= *(ULONG64*)(rcx + 0x15);
    163. rcx = 0xEB73CAE299A2C6E1;
    164. rax ^= rcx;
    165. rcx = rax;
    166. rcx >>= 0x9;
    167. rax ^= rcx;
    168. rcx = rax;
    169. rcx >>= 0x12;
    170. rax ^= rcx;
    171. rcx = rax;
    172. rcx >>= 0x24;
    173. rax ^= rcx;
    174. rcx = 0x4B6CE8F220CA1F19;
    175. rax *= rcx;
    176. rcx = rax;
    177. rcx >>= 0x21;
    178. rax ^= rcx;
    179. rcx = rsi;
    180. rcx = (~rcx);
    181. rcx *= r11;
    182. rax ^= rcx;
    183. return rax;
    184. }
    185. case 5:
    186. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    187. r15 = (moduleBase + 0x3D7BE931);
    188. rax += r11;
    189. rcx = rax;
    190. rcx >>= 0x22;
    191. rax ^= rcx;
    192. rcx = moduleBase;
    193. rax += rcx;
    194. rcx = r11;
    195. rcx *= r15;
    196. rax ^= rcx;
    197. rcx = 0x680F67BA1D2B1F4B;
    198. rax *= rcx;
    199. rcx = rax;
    200. rcx >>= 0x6;
    201. rax ^= rcx;
    202. rcx = rax;
    203. rcx >>= 0xC;
    204. rax ^= rcx;
    205. rcx = rax;
    206. rcx >>= 0x18;
    207. rax ^= rcx;
    208. rdx = 0; // bruh
    209. rdx = _rotl64(rdx, 0x10);
    210. rcx = rax;
    211. rdx ^= r10;
    212. rcx >>= 0x30;
    213. rcx ^= rax;
    214. rax = 0x7118F9D22BF5B54C;
    215. rcx ^= rax;
    216. rdx = _byteswap_uint64(rdx);
    217. rax = *(ULONG64*)(rdx + 0x15);
    218. rax *= rcx;
    219. return rax;
    220. }
    221. case 6:
    222. { r14 = (moduleBase + 0x7B5A);
    223. rdx = *(ULONG64*)(moduleBase + 0x68C5158);
    224. rcx = rax;
    225. rcx >>= 0x20;
    226. rax ^= rcx;
    227. rcx = moduleBase;
    228. rax -= rcx;
    229. rax ^= r11;
    230. rcx = r11;
    231. rcx = (~rcx);
    232. rcx *= r14;
    233. rax ^= rcx;
    234. rcx = 0x67445F8AF9AA4C4D;
    235. rax *= rcx;
    236. rax -= r11;
    237. rcx = 0; // bruh
    238. rcx = _rotl64(rcx, 0x10);
    239. rcx ^= rdx;
    240. rcx = _byteswap_uint64(rcx);
    241. rax *= *(ULONG64*)(rcx + 0x15);
    242. rcx = r11;
    243. rcx -= 0x5CBB1AF7;
    244. rax ^= rcx;
    245. return rax;
    246. }
    247. case 7:
    248. { r9 = *(ULONG64*)(moduleBase + 0x68C5158);
    249. rcx = moduleBase;
    250. rax -= rcx;
    251. rcx = 0xB7017D509A5FB733;
    252. rax *= rcx;
    253. rax -= r11;
    254. rcx = rax;
    255. rcx >>= 0x5;
    256. rax ^= rcx;
    257. rcx = rax;
    258. rcx >>= 0xA;
    259. rax ^= rcx;
    260. rcx = rax;
    261. rcx >>= 0x14;
    262. rax ^= rcx;
    263. rcx = rax;
    264. rcx >>= 0x28;
    265. rax ^= rcx;
    266. rcx = rax;
    267. rcx >>= 0x21;
    268. rax ^= rcx;
    269. rcx = 0xBE3166A584379D57;
    270. rax *= rcx;
    271. rcx = 0; // bruh
    272. rcx = _rotl64(rcx, 0x10);
    273. rcx ^= r9;
    274. rcx = _byteswap_uint64(rcx);
    275. rax *= *(ULONG64*)(rcx + 0x15);
    276. return rax;
    277. }
    278. case 8:
    279. { r15 = (moduleBase + 0x849D);
    280. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    281. rax -= r11;
    282. rcx = r11;
    283. rdx = 0; // bruh
    284. rdx = _rotl64(rdx, 0x10);
    285. rdx ^= r10;
    286. rdx = _byteswap_uint64(rdx);
    287. rdx = *(ULONG64*)(rdx + 0x15);
    288. rdx *= rax;
    289. rax = (moduleBase + 0x54F70539);
    290. rcx ^= rax;
    291. rax = rdx;
    292. rax -= rcx;
    293. rcx = r11;
    294. rcx *= r15;
    295. rax += rcx;
    296. rcx = rax;
    297. rcx >>= 0x7;
    298. rax ^= rcx;
    299. rcx = rax;
    300. rcx >>= 0xE;
    301. rax ^= rcx;
    302. rcx = rax;
    303. rcx >>= 0x1C;
    304. rax ^= rcx;
    305. rcx = rax;
    306. rcx >>= 0x38;
    307. rax ^= rcx;
    308. rcx = 0x9DD57BEBC377661D;
    309. rax ^= rcx;
    310. rcx = 0x50B6BFF843373AD7;
    311. rax *= rcx;
    312. rcx = 0x11E964DF213CB5C6;
    313. rax += rcx;
    314. return rax;
    315. }
    316. case 9:
    317. { r14 = (moduleBase + 0x2DC27903);
    318. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    319. rcx = r14;
    320. rcx -= r11;
    321. rax += rcx;
    322. rcx = rax;
    323. rcx >>= 0x2;
    324. rax ^= rcx;
    325. rcx = rax;
    326. rcx >>= 0x4;
    327. rax ^= rcx;
    328. rcx = rax;
    329. rcx >>= 0x8;
    330. rax ^= rcx;
    331. rcx = rax;
    332. rcx >>= 0x10;
    333. rax ^= rcx;
    334. rdx = 0; // bruh
    335. rdx = _rotl64(rdx, 0x10);
    336. rcx = rax;
    337. rdx ^= r10;
    338. rcx >>= 0x20;
    339. rcx ^= rax;
    340. rdx = _byteswap_uint64(rdx);
    341. rax = *(ULONG64*)(rdx + 0x15);
    342. rax *= rcx;
    343. rcx = (moduleBase + 0x8C51);
    344. rax -= r11;
    345. rax += rcx;
    346. rcx = 0x65DAA3235BEFAC6B;
    347. rax += rcx;
    348. rcx = 0x1A2AE6A9866730C3;
    349. rax *= rcx;
    350. rcx = 0xF2274FBB223F4B6F;
    351. rax *= rcx;
    352. rcx = rax;
    353. rcx >>= 0x1C;
    354. rax ^= rcx;
    355. rcx = rax;
    356. rcx >>= 0x38;
    357. rax ^= rcx;
    358. return rax;
    359. }
    360. case 10:
    361. { r14 = (moduleBase + 0x4EBF75DD);
    362. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    363. rcx = r14;
    364. rcx = (~rcx);
    365. rcx -= r11;
    366. rax += rcx;
    367. rcx = 0x9572DBE59902E843;
    368. rax *= rcx;
    369. rcx = moduleBase;
    370. rax -= rcx;
    371. rcx = 0xB93756FBFB4B819C;
    372. rax += rcx;
    373. rax += r11;
    374. rcx = rax;
    375. rcx >>= 0x25;
    376. rax ^= rcx;
    377. rcx = 0; // bruh
    378. rcx = _rotl64(rcx, 0x10);
    379. rcx ^= r10;
    380. rcx = _byteswap_uint64(rcx);
    381. rax *= *(ULONG64*)(rcx + 0x15);
    382. return rax;
    383. }
    384. case 11:
    385. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    386. rcx = rax;
    387. rcx >>= 0xC;
    388. rax ^= rcx;
    389. rcx = rax;
    390. rcx >>= 0x18;
    391. rax ^= rcx;
    392. rcx = rax;
    393. rcx >>= 0x30;
    394. rax ^= rcx;
    395. rcx = rax;
    396. rcx >>= 0x1;
    397. rax ^= rcx;
    398. rcx = rax;
    399. rcx >>= 0x2;
    400. rax ^= rcx;
    401. rcx = rax;
    402. rcx >>= 0x4;
    403. rax ^= rcx;
    404. rcx = rax;
    405. rcx >>= 0x8;
    406. rax ^= rcx;
    407. rcx = rax;
    408. rcx >>= 0x10;
    409. rax ^= rcx;
    410. rcx = rax;
    411. rcx >>= 0x20;
    412. rax ^= rcx;
    413. rcx = 0x98AA22A5C0CF7378;
    414. rax ^= rcx;
    415. rcx = 0; // bruh
    416. rcx = _rotl64(rcx, 0x10);
    417. rcx ^= r10;
    418. rcx = _byteswap_uint64(rcx);
    419. rcx = *(ULONG64*)(rcx + 0x15);
    420. rax *= rcx;
    421. rcx = (moduleBase + 0x7F62E0EA);
    422. rax += r11;
    423. rax += rcx;
    424. rcx = moduleBase;
    425. rax ^= rcx;
    426. rcx = 0xA2FE0F41F9DB29E1;
    427. rax *= rcx;
    428. rcx = 0x1A88B7AA4AD896FB;
    429. rax *= rcx;
    430. return rax;
    431. }
    432. case 12:
    433. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    434. rcx = moduleBase;
    435. rax += rcx;
    436. rcx = 0xE236951EEA5F1B19;
    437. rax *= rcx;
    438. rcx = 0x58B799B5B1943F27;
    439. rax *= rcx;
    440. rdx = 0; // bruh
    441. rcx = rax;
    442. rdx = _rotl64(rdx, 0x10);
    443. rcx >>= 0x21;
    444. rdx ^= r10;
    445. rcx ^= rax;
    446. rdx = _byteswap_uint64(rdx);
    447. rax = *(ULONG64*)(rdx + 0x15);
    448. rax *= rcx;
    449. rcx = moduleBase;
    450. rax -= rcx;
    451. rcx = rax;
    452. rcx >>= 0x9;
    453. rax ^= rcx;
    454. rcx = rax;
    455. rcx >>= 0x12;
    456. rax ^= rcx;
    457. rcx = rax;
    458. rcx >>= 0x24;
    459. rax ^= rcx;
    460. rax += r11;
    461. return rax;
    462. }
    463. case 13:
    464. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    465. r14 = (moduleBase + 0x2268);
    466. rcx = rax;
    467. rcx >>= 0x3;
    468. rax ^= rcx;
    469. rcx = rax;
    470. rcx >>= 0x6;
    471. rax ^= rcx;
    472. rcx = rax;
    473. rcx >>= 0xC;
    474. rax ^= rcx;
    475. rcx = rax;
    476. rcx >>= 0x18;
    477. rax ^= rcx;
    478. rcx = rax;
    479. rcx >>= 0x30;
    480. rax ^= rcx;
    481. rcx = 0xCDF2A6D72C212CC1;
    482. rax *= rcx;
    483. rax -= r11;
    484. rcx = rax;
    485. rdx = 0; // bruh
    486. rcx -= r11;
    487. rdx = _rotl64(rdx, 0x10);
    488. rdx ^= r10;
    489. rdx = _byteswap_uint64(rdx);
    490. rax = *(ULONG64*)(rdx + 0x15);
    491. rax *= rcx;
    492. rcx = moduleBase;
    493. rcx += 0x1193;
    494. rcx += r11;
    495. rax ^= rcx;
    496. rcx = 0x3A44B6D1E1A5BB83;
    497. rax *= rcx;
    498. rax ^= r11;
    499. rax ^= r14;
    500. return rax;
    501. }
    502. case 14:
    503. { r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    504. rcx = moduleBase;
    505. rcx += r11;
    506. rax += rcx;
    507. rcx = moduleBase;
    508. rax -= rcx;
    509. rdx = rax;
    510. rdx >>= 0x23;
    511. rdx ^= rax;
    512. rax = (moduleBase + 0x8C8F);
    513. rcx = r11;
    514. rcx = (~rcx);
    515. rax *= rcx;
    516. rax += rdx;
    517. rcx = 0; // bruh
    518. rcx = _rotl64(rcx, 0x10);
    519. rcx ^= r10;
    520. rcx = _byteswap_uint64(rcx);
    521. rcx = *(ULONG64*)(rcx + 0x15);
    522. rax *= rcx;
    523. rcx = 0x6DEBF32CA4F25659;
    524. rax *= rcx;
    525. rax += r11;
    526. return rax;
    527. }
    528. case 15:
    529. { r14 = (moduleBase + 0x27D081E9);
    530. r10 = *(ULONG64*)(moduleBase + 0x68C5158);
    531. rcx = r11 + 0x1;
    532. rcx *= r14;
    533. rax += rcx;
    534. rcx = rax;
    535. rcx >>= 0x8;
    536. rax ^= rcx;
    537. rcx = rax;
    538. rcx >>= 0x10;
    539. rax ^= rcx;
    540. rcx = rax;
    541. rcx >>= 0x20;
    542. rax ^= rcx;
    543. rcx = 0x24A892930ADE7F59;
    544. rax += rcx;
    545. rcx = 0xA9172C2E53861665;
    546. rax *= rcx;
    547. rdx = 0; // bruh
    548. rdx = _rotl64(rdx, 0x10);
    549. rcx = 0x153A97981194506F;
    550. rax *= rcx;
    551. rdx ^= r10;
    552. rcx = moduleBase;
    553. rax -= rcx;
    554. rcx = rax;
    555. rdx = _byteswap_uint64(rdx);
    556. rcx >>= 0x26;
    557. rcx ^= rax;
    558. rax = *(ULONG64*)(rdx + 0x15);
    559. rax *= rcx;
    560. return rax;
    561. }
    562. default:
    563. return 0;
    564. }
    565. }