Guest User

XBOX BO7 10/02/25

a guest
Oct 2nd, 2025
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 131.26 KB | None | 0 0
  1. uintptr_t decrypt_client_info(const Driver& driver)
  2. {
  3. const uint64_t mb = globals::base;
  4. 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;
  5.  
  6. r8 = mem.Read<uintptr_t>(globals::base + 0xCE18C98);
  7. if(!r8)
  8. return r8;
  9. rdx= ~globals::vaPeb; //mov rdx, gs:[rax]
  10. rax = r8; //mov rax, r8
  11. rax >>= 0x18; //shr rax, 0x18
  12. r8 ^= rax; //xor r8, rax
  13. rax = r8; //mov rax, r8
  14. rax >>= 0x30; //shr rax, 0x30
  15. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  16. r8 ^= rax; //xor r8, rax
  17. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  18. rcx ^= mem.Read<uintptr_t>(globals::base + 0xB838A29); //xor rcx, [0x000000000535B12E]
  19. rax = 0x233F5F4AE79533B1; //mov rax, 0x233F5F4AE79533B1
  20. r8 *= rax; //imul r8, rax
  21. rax = 0x4FF2ED27F19D575D; //mov rax, 0x4FF2ED27F19D575D
  22. rcx = ~rcx; //not rcx
  23. r8 -= rdx; //sub r8, rdx
  24. r8 += rax; //add r8, rax
  25. rax = globals::base; //lea rax, [0xFFFFFFFFF9B226DD]
  26. r8 ^= rax; //xor r8, rax
  27. r8 *= mem.Read<uintptr_t>(rcx + 0x19); //imul r8, [rcx+0x19]
  28. return r8;
  29. }
  30. uintptr_t decrypt_client_base(const Driver& driver, uintptr_t client_info)
  31. {
  32. const uint64_t mb = globals::base;
  33. 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;
  34. r8 = mem.Read<uintptr_t>(client_info + 0x1cac88);
  35. if(!r8)
  36. return r8;
  37. rbx = globals::vaPeb; //mov rbx, gs:[rax]
  38. rax = rbx; //mov rax, rbx
  39. rax <<= 0x23; //shl rax, 0x23
  40. rax = _byteswap_uint64(rax); //bswap rax
  41. rax &= 0xF;
  42. switch(rax) {
  43. case 0:
  44. {
  45. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B7BED]
  46. rax = globals::base; //lea rax, [0xFFFFFFFFFD17EFE3]
  47. r8 -= rax; //sub r8, rax
  48. rax = r8; //mov rax, r8
  49. rax >>= 0x1E; //shr rax, 0x1E
  50. r8 ^= rax; //xor r8, rax
  51. rax = r8; //mov rax, r8
  52. rax >>= 0x3C; //shr rax, 0x3C
  53. r8 ^= rax; //xor r8, rax
  54. rax = globals::base; //lea rax, [0xFFFFFFFFFD17EDCE]
  55. r8 -= rax; //sub r8, rax
  56. rax = r8; //mov rax, r8
  57. rax >>= 0x28; //shr rax, 0x28
  58. r8 ^= rax; //xor r8, rax
  59. rax = 0; //and rax, 0xFFFFFFFFC0000000
  60. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  61. rax ^= r10; //xor rax, r10
  62. rax = ~rax; //not rax
  63. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  64. rax = 0x9CC8E0420ADA280D; //mov rax, 0x9CC8E0420ADA280D
  65. r8 *= rax; //imul r8, rax
  66. r8 += rbx; //add r8, rbx
  67. rax = r8; //mov rax, r8
  68. rax >>= 0x11; //shr rax, 0x11
  69. r8 ^= rax; //xor r8, rax
  70. rax = r8; //mov rax, r8
  71. rax >>= 0x22; //shr rax, 0x22
  72. r8 ^= rax; //xor r8, rax
  73. return r8;
  74. }
  75. case 1:
  76. {
  77. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B775D]
  78. r15 = globals::base + 0x755F7BDD; //lea r15, [0x00000000727768C8]
  79. rax = r8; //mov rax, r8
  80. rax >>= 0x9; //shr rax, 0x09
  81. r8 ^= rax; //xor r8, rax
  82. rax = r8; //mov rax, r8
  83. rax >>= 0x12; //shr rax, 0x12
  84. r8 ^= rax; //xor r8, rax
  85. rax = r8; //mov rax, r8
  86. rax >>= 0x24; //shr rax, 0x24
  87. r8 ^= rax; //xor r8, rax
  88. r8 ^= rbx; //xor r8, rbx
  89. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  90. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  91. rcx ^= r10; //xor rcx, r10
  92. rcx = ~rcx; //not rcx
  93. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  94. rcx = globals::base; //lea rcx, [0xFFFFFFFFFD17E951]
  95. rax = rbx; //mov rax, rbx
  96. rax -= rcx; //sub rax, rcx
  97. rax += 0xFFFFFFFF9F0CFAED; //add rax, 0xFFFFFFFF9F0CFAED
  98. r8 += rax; //add r8, rax
  99. rax = 0x40ED86BABDEA8F5B; //mov rax, 0x40ED86BABDEA8F5B
  100. r8 *= rax; //imul r8, rax
  101. rax = 0xA7798517B7F399EA; //mov rax, 0xA7798517B7F399EA
  102. r8 ^= rax; //xor r8, rax
  103. rax = r15; //mov rax, r15
  104. rax = ~rax; //not rax
  105. rax ^= rbx; //xor rax, rbx
  106. r8 += rax; //add r8, rax
  107. rax = 0x459093E765583ADB; //mov rax, 0x459093E765583ADB
  108. r8 *= rax; //imul r8, rax
  109. return r8;
  110. }
  111. case 2:
  112. {
  113. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B730F]
  114. r14 = globals::base + 0xAC81; //lea r14, [0xFFFFFFFFFD189523]
  115. rax = 0xE03443781C6DB26D; //mov rax, 0xE03443781C6DB26D
  116. r8 *= rax; //imul r8, rax
  117. rax = 0x26676A6627BAC50C; //mov rax, 0x26676A6627BAC50C
  118. r8 -= rax; //sub r8, rax
  119. rax = 0x541ECC7788F37ADE; //mov rax, 0x541ECC7788F37ADE
  120. r8 += rax; //add r8, rax
  121. r8 += r14; //add r8, r14
  122. rax = globals::base + 0x142; //lea rax, [0xFFFFFFFFFD17E5A2]
  123. rax = ~rax; //not rax
  124. rcx = rbx; //mov rcx, rbx
  125. rcx = ~rcx; //not rcx
  126. rcx -= rbx; //sub rcx, rbx
  127. rcx += rax; //add rcx, rax
  128. r8 += rcx; //add r8, rcx
  129. rax = r8; //mov rax, r8
  130. rax >>= 0x15; //shr rax, 0x15
  131. r8 ^= rax; //xor r8, rax
  132. rax = r8; //mov rax, r8
  133. rax >>= 0x2A; //shr rax, 0x2A
  134. r8 ^= rax; //xor r8, rax
  135. rax = globals::base; //lea rax, [0xFFFFFFFFFD17E401]
  136. r8 -= rax; //sub r8, rax
  137. rax = 0; //and rax, 0xFFFFFFFFC0000000
  138. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  139. rax ^= r10; //xor rax, r10
  140. rax = ~rax; //not rax
  141. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  142. return r8;
  143. }
  144. case 3:
  145. {
  146. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B6E32]
  147. r13 = globals::base + 0xF26D; //lea r13, [0xFFFFFFFFFD18D632]
  148. r8 ^= rbx; //xor r8, rbx
  149. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  150. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  151. rcx ^= r10; //xor rcx, r10
  152. rcx = ~rcx; //not rcx
  153. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  154. rax = 0x6C5618A3BE4C414; //mov rax, 0x6C5618A3BE4C414
  155. r8 -= rax; //sub r8, rax
  156. rax = 0xE98709096AD185CC; //mov rax, 0xE98709096AD185CC
  157. r8 ^= rax; //xor r8, rax
  158. rax = r8; //mov rax, r8
  159. rcx = globals::base + 0x5ED318FB; //lea rcx, [0x000000005BEAFBA2]
  160. rax >>= 0xB; //shr rax, 0x0B
  161. rcx = ~rcx; //not rcx
  162. r8 ^= rax; //xor r8, rax
  163. rcx *= rbx; //imul rcx, rbx
  164. rax = r8; //mov rax, r8
  165. rax >>= 0x16; //shr rax, 0x16
  166. r8 ^= rax; //xor r8, rax
  167. rax = r8; //mov rax, r8
  168. rax >>= 0x2C; //shr rax, 0x2C
  169. rcx ^= rax; //xor rcx, rax
  170. r8 ^= rcx; //xor r8, rcx
  171. rax = 0x22A1571E2E749CB; //mov rax, 0x22A1571E2E749CB
  172. r8 *= rax; //imul r8, rax
  173. rax = rbx; //mov rax, rbx
  174. rax *= r13; //imul rax, r13
  175. r8 += rax; //add r8, rax
  176. return r8;
  177. }
  178. case 4:
  179. {
  180. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B69B4]
  181. r15 = globals::base + 0x72D0A311; //lea r15, [0x000000006FE88253]
  182. rax = 0x54EE9012A77B3C0E; //mov rax, 0x54EE9012A77B3C0E
  183. r8 ^= rax; //xor r8, rax
  184. rax = globals::base; //lea rax, [0xFFFFFFFFFD17DAF0]
  185. rax += 0x432D; //add rax, 0x432D
  186. rax += rbx; //add rax, rbx
  187. r8 += rax; //add r8, rax
  188. rax = 0xBE6A84FFF3304C3D; //mov rax, 0xBE6A84FFF3304C3D
  189. r8 *= rax; //imul r8, rax
  190. rax = r8; //mov rax, r8
  191. rax >>= 0x12; //shr rax, 0x12
  192. r8 ^= rax; //xor r8, rax
  193. rax = r8; //mov rax, r8
  194. rax >>= 0x24; //shr rax, 0x24
  195. r8 ^= rax; //xor r8, rax
  196. rax = r8; //mov rax, r8
  197. rax >>= 0x7; //shr rax, 0x07
  198. r8 ^= rax; //xor r8, rax
  199. rax = r8; //mov rax, r8
  200. rax >>= 0xE; //shr rax, 0x0E
  201. r8 ^= rax; //xor r8, rax
  202. rax = r8; //mov rax, r8
  203. rax >>= 0x1C; //shr rax, 0x1C
  204. r8 ^= rax; //xor r8, rax
  205. rax = r8; //mov rax, r8
  206. rax >>= 0x38; //shr rax, 0x38
  207. r8 ^= rax; //xor r8, rax
  208. rax = 0; //and rax, 0xFFFFFFFFC0000000
  209. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  210. rax ^= r10; //xor rax, r10
  211. rax = ~rax; //not rax
  212. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  213. rax = rbx; //mov rax, rbx
  214. rax *= r15; //imul rax, r15
  215. r8 -= rax; //sub r8, rax
  216. rax = 0x598660DAA37ACC99; //mov rax, 0x598660DAA37ACC99
  217. r8 ^= rax; //xor r8, rax
  218. return r8;
  219. }
  220. case 5:
  221. {
  222. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B6518]
  223. rcx = 0xC088FB236BE68165; //mov rcx, 0xC088FB236BE68165
  224. rax = 0; //and rax, 0xFFFFFFFFC0000000
  225. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  226. rax ^= r10; //xor rax, r10
  227. rax = ~rax; //not rax
  228. rax = mem.Read<uintptr_t>(rax + 0x9); //mov rax, [rax+0x09]
  229. rax *= rcx; //imul rax, rcx
  230. r8 *= rax; //imul r8, rax
  231. rax = r8; //mov rax, r8
  232. rax >>= 0x5; //shr rax, 0x05
  233. r8 ^= rax; //xor r8, rax
  234. rax = r8; //mov rax, r8
  235. rax >>= 0xA; //shr rax, 0x0A
  236. r8 ^= rax; //xor r8, rax
  237. rax = r8; //mov rax, r8
  238. rax >>= 0x14; //shr rax, 0x14
  239. r8 ^= rax; //xor r8, rax
  240. rax = r8; //mov rax, r8
  241. rax >>= 0x28; //shr rax, 0x28
  242. r8 ^= rax; //xor r8, rax
  243. rax = r8; //mov rax, r8
  244. rax >>= 0xB; //shr rax, 0x0B
  245. r8 ^= rax; //xor r8, rax
  246. rax = r8; //mov rax, r8
  247. rax >>= 0x16; //shr rax, 0x16
  248. r8 ^= rax; //xor r8, rax
  249. rax = r8; //mov rax, r8
  250. rax >>= 0x2C; //shr rax, 0x2C
  251. r8 ^= rax; //xor r8, rax
  252. rax = 0xF87FD44152069748; //mov rax, 0xF87FD44152069748
  253. r8 ^= rax; //xor r8, rax
  254. rax = globals::base; //lea rax, [0xFFFFFFFFFD17D782]
  255. rax += 0x1079; //add rax, 0x1079
  256. rax += rbx; //add rax, rbx
  257. r8 ^= rax; //xor r8, rax
  258. rcx = globals::base; //lea rcx, [0xFFFFFFFFFD17D966]
  259. rax = rbx; //mov rax, rbx
  260. rax = ~rax; //not rax
  261. rax -= rcx; //sub rax, rcx
  262. rax += 0xFFFFFFFF968271AB; //add rax, 0xFFFFFFFF968271AB
  263. r8 += rax; //add r8, rax
  264. return r8;
  265. }
  266. case 6:
  267. {
  268. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B6097]
  269. r15 = globals::base + 0x1EE2; //lea r15, [0xFFFFFFFFFD17F50C]
  270. rax = 0; //and rax, 0xFFFFFFFFC0000000
  271. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  272. rax ^= r10; //xor rax, r10
  273. rax = ~rax; //not rax
  274. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  275. rcx = 0x30DABF93D6E4FB5; //mov rcx, 0x30DABF93D6E4FB5
  276. r8 ^= rcx; //xor r8, rcx
  277. rax = rbx; //mov rax, rbx
  278. rax ^= r15; //xor rax, r15
  279. r8 -= rax; //sub r8, rax
  280. rax = 0xDB8B0AAFA542904; //mov rax, 0xDB8B0AAFA542904
  281. r8 -= rbx; //sub r8, rbx
  282. r8 -= rax; //sub r8, rax
  283. rax = r8; //mov rax, r8
  284. rax >>= 0x22; //shr rax, 0x22
  285. r8 ^= rax; //xor r8, rax
  286. rax = 0xDF170407BBE28DB5; //mov rax, 0xDF170407BBE28DB5
  287. r8 *= rax; //imul r8, rax
  288. rax = r8; //mov rax, r8
  289. rax >>= 0x8; //shr rax, 0x08
  290. r8 ^= rax; //xor r8, rax
  291. rax = r8; //mov rax, r8
  292. rax >>= 0x10; //shr rax, 0x10
  293. r8 ^= rax; //xor r8, rax
  294. rax = r8; //mov rax, r8
  295. rax >>= 0x20; //shr rax, 0x20
  296. r8 ^= rax; //xor r8, rax
  297. return r8;
  298. }
  299. case 7:
  300. {
  301. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r9, [0x00000000089B5C59]
  302. r14 = globals::base + 0xC177; //lea r14, [0xFFFFFFFFFD189363]
  303. rax = 0; //and rax, 0xFFFFFFFFC0000000
  304. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  305. rax ^= r9; //xor rax, r9
  306. rax = ~rax; //not rax
  307. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  308. rax = 0x378CE09B287B2D41; //mov rax, 0x378CE09B287B2D41
  309. r8 ^= rax; //xor r8, rax
  310. rax = 0x1C4A7DE2E2F8F68F; //mov rax, 0x1C4A7DE2E2F8F68F
  311. r8 += rax; //add r8, rax
  312. rax = r8; //mov rax, r8
  313. rax >>= 0x23; //shr rax, 0x23
  314. rax ^= r8; //xor rax, r8
  315. r8 = rbx + 0x1; //lea r8, [rbx+0x01]
  316. rax += rbx; //add rax, rbx
  317. r8 *= r14; //imul r8, r14
  318. r8 += rax; //add r8, rax
  319. rax = 0xEBEA9B8B5714671D; //mov rax, 0xEBEA9B8B5714671D
  320. r8 *= rax; //imul r8, rax
  321. rax = r8; //mov rax, r8
  322. rax >>= 0xE; //shr rax, 0x0E
  323. r8 ^= rax; //xor r8, rax
  324. rax = r8; //mov rax, r8
  325. rax >>= 0x1C; //shr rax, 0x1C
  326. r8 ^= rax; //xor r8, rax
  327. rax = r8; //mov rax, r8
  328. rax >>= 0x38; //shr rax, 0x38
  329. r8 ^= rax; //xor r8, rax
  330. return r8;
  331. }
  332. case 8:
  333. {
  334. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B5719]
  335. r13 = globals::base + 0x553; //lea r13, [0xFFFFFFFFFD17D1FA]
  336. r15 = globals::base + 0x88B9; //lea r15, [0xFFFFFFFFFD18554F]
  337. rax = globals::base; //lea rax, [0xFFFFFFFFFD17CAC0]
  338. r8 ^= rax; //xor r8, rax
  339. rax = 0x3169FBDB3B875224; //mov rax, 0x3169FBDB3B875224
  340. r8 += rax; //add r8, rax
  341. rax = r15; //mov rax, r15
  342. rax = ~rax; //not rax
  343. rax *= rbx; //imul rax, rbx
  344. r8 ^= rax; //xor r8, rax
  345. r8 ^= rbx; //xor r8, rbx
  346. r8 ^= r13; //xor r8, r13
  347. rax = r8; //mov rax, r8
  348. rax >>= 0x13; //shr rax, 0x13
  349. r8 ^= rax; //xor r8, rax
  350. rax = r8; //mov rax, r8
  351. rax >>= 0x26; //shr rax, 0x26
  352. r8 ^= rax; //xor r8, rax
  353. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  354. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  355. rax = 0x49665D7F2AFA3F6B; //mov rax, 0x49665D7F2AFA3F6B
  356. r8 *= rax; //imul r8, rax
  357. rcx ^= r10; //xor rcx, r10
  358. rax = globals::base + 0x11D125F7; //lea rax, [0x000000000EE8EFF0]
  359. rax = ~rax; //not rax
  360. rcx = ~rcx; //not rcx
  361. rax *= rbx; //imul rax, rbx
  362. r8 += rax; //add r8, rax
  363. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  364. return r8;
  365. }
  366. case 9:
  367. {
  368. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r9, [0x00000000089B52DC]
  369. r11 = globals::base + 0x7C81; //lea r11, [0xFFFFFFFFFD1844F0]
  370. rax = rbx; //mov rax, rbx
  371. rax *= r11; //imul rax, r11
  372. r8 -= rax; //sub r8, rax
  373. rax = globals::base; //lea rax, [0xFFFFFFFFFD17C595]
  374. r8 -= rax; //sub r8, rax
  375. rax = rbx; //mov rax, rbx
  376. rax -= globals::base; //sub rax, [rsp+0x70] -- didn't find trace -> use base
  377. rax += 0xFFFFFFFFFFFF4D38; //add rax, 0xFFFFFFFFFFFF4D38
  378. r8 += rax; //add r8, rax
  379. rax = 0xB294869EA09D48AA; //mov rax, 0xB294869EA09D48AA
  380. r8 ^= rax; //xor r8, rax
  381. rax = 0xDA6A9700AB4D27FD; //mov rax, 0xDA6A9700AB4D27FD
  382. r8 *= rax; //imul r8, rax
  383. rax = 0; //and rax, 0xFFFFFFFFC0000000
  384. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  385. rax ^= r9; //xor rax, r9
  386. rax = ~rax; //not rax
  387. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  388. rax = 0x38632CDC13FD78A5; //mov rax, 0x38632CDC13FD78A5
  389. r8 += rax; //add r8, rax
  390. rax = r8; //mov rax, r8
  391. rax >>= 0x1D; //shr rax, 0x1D
  392. r8 ^= rax; //xor r8, rax
  393. rax = r8; //mov rax, r8
  394. rax >>= 0x3A; //shr rax, 0x3A
  395. r8 ^= rax; //xor r8, rax
  396. return r8;
  397. }
  398. case 10:
  399. {
  400. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B4DC1]
  401. r8 += rbx; //add r8, rbx
  402. rax = 0x36164EFD786890C1; //mov rax, 0x36164EFD786890C1
  403. r8 *= rax; //imul r8, rax
  404. rax = 0x6F993F33D7A49418; //mov rax, 0x6F993F33D7A49418
  405. r8 += rax; //add r8, rax
  406. rax = r8; //mov rax, r8
  407. rax >>= 0x8; //shr rax, 0x08
  408. r8 ^= rax; //xor r8, rax
  409. rax = r8; //mov rax, r8
  410. rax >>= 0x10; //shr rax, 0x10
  411. r8 ^= rax; //xor r8, rax
  412. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  413. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  414. rax = r8; //mov rax, r8
  415. rcx ^= r10; //xor rcx, r10
  416. rax >>= 0x20; //shr rax, 0x20
  417. r8 ^= rax; //xor r8, rax
  418. rcx = ~rcx; //not rcx
  419. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  420. rax = 0xE88B55E25B8B057C; //mov rax, 0xE88B55E25B8B057C
  421. r8 ^= rax; //xor r8, rax
  422. rax = r8; //mov rax, r8
  423. rax >>= 0x1A; //shr rax, 0x1A
  424. r8 ^= rax; //xor r8, rax
  425. rax = r8; //mov rax, r8
  426. rax >>= 0x34; //shr rax, 0x34
  427. r8 ^= rax; //xor r8, rax
  428. rax = r8; //mov rax, r8
  429. rax >>= 0x4; //shr rax, 0x04
  430. r8 ^= rax; //xor r8, rax
  431. rax = r8; //mov rax, r8
  432. rax >>= 0x8; //shr rax, 0x08
  433. r8 ^= rax; //xor r8, rax
  434. rax = r8; //mov rax, r8
  435. rax >>= 0x10; //shr rax, 0x10
  436. r8 ^= rax; //xor r8, rax
  437. rax = r8; //mov rax, r8
  438. rax >>= 0x20; //shr rax, 0x20
  439. r8 ^= rax; //xor r8, rax
  440. return r8;
  441. }
  442. case 11:
  443. {
  444. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B4993]
  445. rax = 0; //and rax, 0xFFFFFFFFC0000000
  446. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  447. rax ^= r10; //xor rax, r10
  448. rax = ~rax; //not rax
  449. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  450. rax = rbx; //mov rax, rbx
  451. uintptr_t RSP_0xFFFFFFFFFFFFFFB8;
  452. RSP_0xFFFFFFFFFFFFFFB8 = globals::base + 0xA1FD; //lea rax, [0xFFFFFFFFFD18612F] : RBP+0xFFFFFFFFFFFFFFB8
  453. rax *= RSP_0xFFFFFFFFFFFFFFB8; //imul rax, [rbp-0x48]
  454. r8 += rax; //add r8, rax
  455. rax = r8; //mov rax, r8
  456. rax >>= 0x26; //shr rax, 0x26
  457. r8 ^= rax; //xor r8, rax
  458. rax = r8; //mov rax, r8
  459. rax >>= 0xA; //shr rax, 0x0A
  460. r8 ^= rax; //xor r8, rax
  461. rax = r8; //mov rax, r8
  462. rax >>= 0x14; //shr rax, 0x14
  463. r8 ^= rax; //xor r8, rax
  464. rax = r8; //mov rax, r8
  465. rax >>= 0x28; //shr rax, 0x28
  466. r8 ^= rax; //xor r8, rax
  467. rax = 0xC6A8E21F37CF3675; //mov rax, 0xC6A8E21F37CF3675
  468. r8 *= rax; //imul r8, rax
  469. rax = globals::base; //lea rax, [0xFFFFFFFFFD17BA25]
  470. rax += rbx; //add rax, rbx
  471. r8 -= rax; //sub r8, rax
  472. rax = globals::base; //lea rax, [0xFFFFFFFFFD17BB52]
  473. r8 ^= rax; //xor r8, rax
  474. return r8;
  475. }
  476. case 12:
  477. {
  478. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B445E]
  479. rax = 0x5D2901AC55739352; //mov rax, 0x5D2901AC55739352
  480. r8 -= rax; //sub r8, rax
  481. rax = 0; //and rax, 0xFFFFFFFFC0000000
  482. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  483. rax ^= r10; //xor rax, r10
  484. rax = ~rax; //not rax
  485. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  486. rax = globals::base; //lea rax, [0xFFFFFFFFFD17B550]
  487. r8 += rax; //add r8, rax
  488. rax = 0x156D71AB28FBFAFF; //mov rax, 0x156D71AB28FBFAFF
  489. r8 *= rax; //imul r8, rax
  490. rax = r8; //mov rax, r8
  491. rax >>= 0x27; //shr rax, 0x27
  492. r8 ^= rax; //xor r8, rax
  493. r8 -= rbx; //sub r8, rbx
  494. rax = r8; //mov rax, r8
  495. rax >>= 0x17; //shr rax, 0x17
  496. r8 ^= rax; //xor r8, rax
  497. rax = r8; //mov rax, r8
  498. rax >>= 0x2E; //shr rax, 0x2E
  499. r8 ^= rax; //xor r8, rax
  500. rax = globals::base; //lea rax, [0xFFFFFFFFFD17B5D2]
  501. r8 ^= rax; //xor r8, rax
  502. return r8;
  503. }
  504. case 13:
  505. {
  506. r11 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r11, [0x00000000089B3F15]
  507. rax = r8; //mov rax, r8
  508. rax >>= 0x1F; //shr rax, 0x1F
  509. r8 ^= rax; //xor r8, rax
  510. rcx = r8; //mov rcx, r8
  511. rax = globals::base; //lea rax, [0xFFFFFFFFFD17B0BE]
  512. rcx >>= 0x3E; //shr rcx, 0x3E
  513. rcx ^= r8; //xor rcx, r8
  514. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  515. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  516. r8 = rbx; //mov r8, rbx
  517. r8 = ~r8; //not r8
  518. rdx ^= r11; //xor rdx, r11
  519. r8 += rcx; //add r8, rcx
  520. rdx = ~rdx; //not rdx
  521. r8 -= rax; //sub r8, rax
  522. r8 -= 0x6929AFAC; //sub r8, 0x6929AFAC
  523. r8 *= mem.Read<uintptr_t>(rdx + 0x9); //imul r8, [rdx+0x09]
  524. rax = r8; //mov rax, r8
  525. rax >>= 0x18; //shr rax, 0x18
  526. r8 ^= rax; //xor r8, rax
  527. rax = r8; //mov rax, r8
  528. rax >>= 0x30; //shr rax, 0x30
  529. r8 ^= rax; //xor r8, rax
  530. rax = 0x69651B1AF033619B; //mov rax, 0x69651B1AF033619B
  531. r8 += rbx; //add r8, rbx
  532. r8 *= rax; //imul r8, rax
  533. rax = 0x29BBD1B30DFD9417; //mov rax, 0x29BBD1B30DFD9417
  534. r8 *= rax; //imul r8, rax
  535. rax = 0xA7B8F15C4FABBB6C; //mov rax, 0xA7B8F15C4FABBB6C
  536. r8 ^= rax; //xor r8, rax
  537. return r8;
  538. }
  539. case 14:
  540. {
  541. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r9, [0x00000000089B3A99]
  542. r13 = globals::base + 0x8D0; //lea r13, [0xFFFFFFFFFD17B8F7]
  543. r8 += rbx; //add r8, rbx
  544. rax = r13; //mov rax, r13
  545. rax -= rbx; //sub rax, rbx
  546. r8 += rax; //add r8, rax
  547. rax = 0xBC0AAA7E98B1663A; //mov rax, 0xBC0AAA7E98B1663A
  548. r8 ^= rax; //xor r8, rax
  549. rax = 0x54D1F9305B205B45; //mov rax, 0x54D1F9305B205B45
  550. r8 *= rax; //imul r8, rax
  551. rax = r8; //mov rax, r8
  552. rax >>= 0xA; //shr rax, 0x0A
  553. r8 ^= rax; //xor r8, rax
  554. rax = r8; //mov rax, r8
  555. rax >>= 0x14; //shr rax, 0x14
  556. r8 ^= rax; //xor r8, rax
  557. rax = r8; //mov rax, r8
  558. rax >>= 0x28; //shr rax, 0x28
  559. r8 ^= rax; //xor r8, rax
  560. rax = r8; //mov rax, r8
  561. rax >>= 0x12; //shr rax, 0x12
  562. r8 ^= rax; //xor r8, rax
  563. rax = r8; //mov rax, r8
  564. rax >>= 0x24; //shr rax, 0x24
  565. r8 ^= rax; //xor r8, rax
  566. rax = 0xFFFFFFFFDE23E20A; //mov rax, 0xFFFFFFFFDE23E20A
  567. rax -= rbx; //sub rax, rbx
  568. rax -= globals::base; //sub rax, [rsp+0x70] -- didn't find trace -> use base
  569. r8 += rax; //add r8, rax
  570. rax = 0; //and rax, 0xFFFFFFFFC0000000
  571. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  572. rax ^= r9; //xor rax, r9
  573. rax = ~rax; //not rax
  574. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  575. return r8;
  576. }
  577. case 15:
  578. {
  579. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A5A); //mov r10, [0x00000000089B360D]
  580. r15 = globals::base + 0x76BB; //lea r15, [0xFFFFFFFFFD18225B]
  581. rax = 0; //and rax, 0xFFFFFFFFC0000000
  582. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  583. rax ^= r10; //xor rax, r10
  584. rax = ~rax; //not rax
  585. rax = mem.Read<uintptr_t>(rax + 0x9); //mov rax, [rax+0x09]
  586. uintptr_t RSP_0xFFFFFFFFFFFFFFB0;
  587. RSP_0xFFFFFFFFFFFFFFB0 = 0x3A27415DA31CA989; //mov rax, 0x3A27415DA31CA989 : RBP+0xFFFFFFFFFFFFFFB0
  588. rax *= RSP_0xFFFFFFFFFFFFFFB0; //imul rax, [rbp-0x50]
  589. r8 *= rax; //imul r8, rax
  590. rax = 0x6F6A3BE0CADE4A54; //mov rax, 0x6F6A3BE0CADE4A54
  591. r8 -= rax; //sub r8, rax
  592. r8 -= rbx; //sub r8, rbx
  593. rax = r8; //mov rax, r8
  594. rax >>= 0x13; //shr rax, 0x13
  595. rcx = rbx; //mov rcx, rbx
  596. r8 ^= rax; //xor r8, rax
  597. rcx = ~rcx; //not rcx
  598. rax = r15; //mov rax, r15
  599. rax = ~rax; //not rax
  600. rcx *= rax; //imul rcx, rax
  601. rax = r8; //mov rax, r8
  602. rax >>= 0x26; //shr rax, 0x26
  603. r8 ^= rax; //xor r8, rax
  604. r8 += rcx; //add r8, rcx
  605. rax = r8; //mov rax, r8
  606. rax >>= 0x28; //shr rax, 0x28
  607. r8 ^= rax; //xor r8, rax
  608. rax = 0x3224CE0A9BEB6A6E; //mov rax, 0x3224CE0A9BEB6A6E
  609. r8 -= rax; //sub r8, rax
  610. return r8;
  611. }
  612. }
  613. }
  614. uintptr_t GetCmdTextArray()
  615. {
  616. const uint64_t mb = globals::base;
  617. 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;
  618. rcx = mem.Read<uintptr_t>(globals::base + 0x117633D0);
  619. if(!rcx)
  620. return rcx;
  621. r11 = globals::vaPeb; //mov r11, gs:[rdx]
  622. rdx = r11; //mov rdx, r11
  623. //failed to translate: mov [rsp+0xE0], r12
  624. rdx = _rotl64(rdx, 0x22); //rol rdx, 0x22
  625. rdx &= 0xF;
  626. switch(rdx) {
  627. case 0:
  628. {
  629. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x000000000528C48B]
  630. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A539AB]
  631. r15 = globals::base + 0x5E33; //lea r15, [0xFFFFFFFFF9A597D2]
  632. rax = rcx; //mov rax, rcx
  633. rax >>= 0x1B; //shr rax, 0x1B
  634. rcx ^= rax; //xor rcx, rax
  635. rax = rcx; //mov rax, rcx
  636. rax >>= 0x36; //shr rax, 0x36
  637. rcx ^= rax; //xor rcx, rax
  638. rax = 0xB5E3A5C14A756615; //mov rax, 0xB5E3A5C14A756615
  639. rcx ^= rax; //xor rcx, rax
  640. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  641. rax = r11; //mov rax, r11
  642. rax *= r15; //imul rax, r15
  643. rcx += rax; //add rcx, rax
  644. rax = rcx; //mov rax, rcx
  645. rax >>= 0x17; //shr rax, 0x17
  646. rcx ^= rax; //xor rcx, rax
  647. rax = rcx; //mov rax, rcx
  648. rax >>= 0x2E; //shr rax, 0x2E
  649. rcx ^= rax; //xor rcx, rax
  650. rcx += rbx; //add rcx, rbx
  651. rax = 0x451CDD50ED47051D; //mov rax, 0x451CDD50ED47051D
  652. rcx *= rax; //imul rcx, rax
  653. rax = rcx; //mov rax, rcx
  654. rax >>= 0x27; //shr rax, 0x27
  655. rcx ^= rax; //xor rcx, rax
  656. return rcx;
  657. }
  658. case 1:
  659. {
  660. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x000000000528BF98]
  661. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A534B8]
  662. rcx ^= rbx; //xor rcx, rbx
  663. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  664. rax = 0x3F5FF8759C0450AD; //mov rax, 0x3F5FF8759C0450AD
  665. rcx *= rax; //imul rcx, rax
  666. rax = 0x49224897BA23AD81; //mov rax, 0x49224897BA23AD81
  667. rcx *= rax; //imul rcx, rax
  668. rax = rcx; //mov rax, rcx
  669. rax >>= 0x26; //shr rax, 0x26
  670. rcx ^= rax; //xor rcx, rax
  671. rax = 0x9308B88C835A243; //mov rax, 0x9308B88C835A243
  672. rcx -= rax; //sub rcx, rax
  673. return rcx;
  674. }
  675. case 2:
  676. {
  677. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x000000000528BB70]
  678. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A53090]
  679. r12 = globals::base + 0xC499; //lea r12, [0xFFFFFFFFF9A5F518]
  680. rcx ^= r11; //xor rcx, r11
  681. rcx ^= r12; //xor rcx, r12
  682. rcx += r11; //add rcx, r11
  683. rax = 0xDD209D02F3077017; //mov rax, 0xDD209D02F3077017
  684. rcx *= rax; //imul rcx, rax
  685. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  686. rax = rcx; //mov rax, rcx
  687. rax >>= 0x12; //shr rax, 0x12
  688. rcx ^= rax; //xor rcx, rax
  689. rax = rcx; //mov rax, rcx
  690. rax >>= 0x24; //shr rax, 0x24
  691. rcx ^= rax; //xor rcx, rax
  692. rax = 0x7B3DE336F351C129; //mov rax, 0x7B3DE336F351C129
  693. rcx -= rax; //sub rcx, rax
  694. rcx ^= rbx; //xor rcx, rbx
  695. return rcx;
  696. }
  697. case 3:
  698. {
  699. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x000000000528B7D1]
  700. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A52CE6]
  701. rax = 0x292A737D3A8A003D; //mov rax, 0x292A737D3A8A003D
  702. rcx *= rax; //imul rcx, rax
  703. rcx ^= r11; //xor rcx, r11
  704. rcx ^= r11; //xor rcx, r11
  705. rcx -= rbx; //sub rcx, rbx
  706. rax = rcx; //mov rax, rcx
  707. rax >>= 0x19; //shr rax, 0x19
  708. rcx ^= rax; //xor rcx, rax
  709. rax = rcx; //mov rax, rcx
  710. rax >>= 0x32; //shr rax, 0x32
  711. rcx ^= rax; //xor rcx, rax
  712. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  713. rdx = r11; //mov rdx, r11
  714. rdx = ~rdx; //not rdx
  715. rax = globals::base + 0x4F2A; //lea rax, [0xFFFFFFFFF9A57850]
  716. rcx += rax; //add rcx, rax
  717. rcx += rdx; //add rcx, rdx
  718. rax = 0x1D53DC9394D6C68A; //mov rax, 0x1D53DC9394D6C68A
  719. rcx += rax; //add rcx, rax
  720. return rcx;
  721. }
  722. case 4:
  723. {
  724. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x000000000528B39B]
  725. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A528BB]
  726. rdi = globals::base + 0x46C0CD17; //lea rdi, [0x000000004065F5C6]
  727. rax = rcx; //mov rax, rcx
  728. rax >>= 0x10; //shr rax, 0x10
  729. rcx ^= rax; //xor rcx, rax
  730. rax = rcx; //mov rax, rcx
  731. rax >>= 0x20; //shr rax, 0x20
  732. rcx ^= rax; //xor rcx, rax
  733. rcx ^= r11; //xor rcx, r11
  734. rcx ^= rdi; //xor rcx, rdi
  735. rax = rcx; //mov rax, rcx
  736. rax >>= 0x17; //shr rax, 0x17
  737. rcx ^= rax; //xor rcx, rax
  738. rax = rcx; //mov rax, rcx
  739. rax >>= 0x2E; //shr rax, 0x2E
  740. rcx ^= rax; //xor rcx, rax
  741. rax = 0x2A27FA74C256E0E7; //mov rax, 0x2A27FA74C256E0E7
  742. rcx *= rax; //imul rcx, rax
  743. rcx += rbx; //add rcx, rbx
  744. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  745. rax = 0xE889A0595E16BFDB; //mov rax, 0xE889A0595E16BFDB
  746. rcx *= rax; //imul rcx, rax
  747. return rcx;
  748. }
  749. case 5:
  750. {
  751. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x000000000528AE82]
  752. rdi = globals::base + 0x6CA3; //lea rdi, [0xFFFFFFFFF9A59045]
  753. rax = 0x4694415E362AF97D; //mov rax, 0x4694415E362AF97D
  754. rcx *= rax; //imul rcx, rax
  755. rax = rcx; //mov rax, rcx
  756. rax >>= 0xE; //shr rax, 0x0E
  757. rcx ^= rax; //xor rcx, rax
  758. rax = rcx; //mov rax, rcx
  759. rax >>= 0x1C; //shr rax, 0x1C
  760. rcx ^= rax; //xor rcx, rax
  761. rax = rcx; //mov rax, rcx
  762. rax >>= 0x38; //shr rax, 0x38
  763. rcx ^= rax; //xor rcx, rax
  764. rax = 0x2A796B075D8038A1; //mov rax, 0x2A796B075D8038A1
  765. rcx ^= rax; //xor rcx, rax
  766. rcx += r11; //add rcx, r11
  767. rax = 0x3212ABD7EB1A3183; //mov rax, 0x3212ABD7EB1A3183
  768. rcx += rax; //add rcx, rax
  769. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  770. rax = r11; //mov rax, r11
  771. rax *= rdi; //imul rax, rdi
  772. rcx -= rax; //sub rcx, rax
  773. rax = rcx; //mov rax, rcx
  774. rax >>= 0x18; //shr rax, 0x18
  775. rcx ^= rax; //xor rcx, rax
  776. rax = rcx; //mov rax, rcx
  777. rax >>= 0x30; //shr rax, 0x30
  778. rcx ^= rax; //xor rcx, rax
  779. return rcx;
  780. }
  781. case 6:
  782. {
  783. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x000000000528A9B3]
  784. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A51ED3]
  785. r12 = globals::base + 0x2407; //lea r12, [0xFFFFFFFFF9A542CE]
  786. r13 = globals::base + 0xD54B; //lea r13, [0xFFFFFFFFF9A5F407]
  787. rax = rcx; //mov rax, rcx
  788. rax >>= 0x8; //shr rax, 0x08
  789. rcx ^= rax; //xor rcx, rax
  790. rax = rcx; //mov rax, rcx
  791. rax >>= 0x10; //shr rax, 0x10
  792. rcx ^= rax; //xor rcx, rax
  793. rax = rcx; //mov rax, rcx
  794. rax >>= 0x20; //shr rax, 0x20
  795. rcx ^= rax; //xor rcx, rax
  796. rax = rcx; //mov rax, rcx
  797. rax >>= 0xF; //shr rax, 0x0F
  798. rcx ^= rax; //xor rcx, rax
  799. rax = rcx; //mov rax, rcx
  800. rax >>= 0x1E; //shr rax, 0x1E
  801. rcx ^= rax; //xor rcx, rax
  802. rdx = rcx; //mov rdx, rcx
  803. rdx >>= 0x3C; //shr rdx, 0x3C
  804. rax = r12; //mov rax, r12
  805. rax = ~rax; //not rax
  806. rdx ^= rax; //xor rdx, rax
  807. rdx ^= r11; //xor rdx, r11
  808. rcx ^= rdx; //xor rcx, rdx
  809. rax = rbx + 0x86d9; //lea rax, [rbx+0x86D9]
  810. rax += r11; //add rax, r11
  811. rcx ^= rax; //xor rcx, rax
  812. rax = 0x394D31FBFC54D5C7; //mov rax, 0x394D31FBFC54D5C7
  813. rcx *= rax; //imul rcx, rax
  814. rax = r13; //mov rax, r13
  815. rax = ~rax; //not rax
  816. rax *= r11; //imul rax, r11
  817. rcx ^= rax; //xor rcx, rax
  818. rax = 0xF248AD144683687F; //mov rax, 0xF248AD144683687F
  819. rcx *= rax; //imul rcx, rax
  820. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  821. return rcx;
  822. }
  823. case 7:
  824. {
  825. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x000000000528A4FF]
  826. r15 = globals::base + 0xF2B7; //lea r15, [0xFFFFFFFFF9A60CD6]
  827. rdi = globals::base + 0x727BCC8E; //lea rdi, [0x000000006C20E6A1]
  828. rcx += rdi; //add rcx, rdi
  829. rdx = r11; //mov rdx, r11
  830. rdx = ~rdx; //not rdx
  831. rax = rdx; //mov rax, rdx
  832. rax ^= r15; //xor rax, r15
  833. rdx -= rax; //sub rdx, rax
  834. rcx += rdx; //add rcx, rdx
  835. rax = rcx; //mov rax, rcx
  836. rax >>= 0x18; //shr rax, 0x18
  837. rcx ^= rax; //xor rcx, rax
  838. rax = rcx; //mov rax, rcx
  839. rax >>= 0x30; //shr rax, 0x30
  840. rcx ^= rax; //xor rcx, rax
  841. rax = 0x2B8B78BC1D92212A; //mov rax, 0x2B8B78BC1D92212A
  842. rcx -= rax; //sub rcx, rax
  843. rax = rcx; //mov rax, rcx
  844. rax >>= 0x17; //shr rax, 0x17
  845. rcx ^= rax; //xor rcx, rax
  846. rax = rcx; //mov rax, rcx
  847. rax >>= 0x2E; //shr rax, 0x2E
  848. rcx ^= rax; //xor rcx, rax
  849. rax = 0x49781D9754795626; //mov rax, 0x49781D9754795626
  850. rcx ^= rax; //xor rcx, rax
  851. rax = 0xE1A998C5EA9145DD; //mov rax, 0xE1A998C5EA9145DD
  852. rcx *= rax; //imul rcx, rax
  853. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  854. return rcx;
  855. }
  856. case 8:
  857. {
  858. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x000000000528A0E0]
  859. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A51600]
  860. rcx ^= r11; //xor rcx, r11
  861. rax = 0xD0FA4725C1F6A4DB; //mov rax, 0xD0FA4725C1F6A4DB
  862. rcx *= rax; //imul rcx, rax
  863. rcx += rbx; //add rcx, rbx
  864. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  865. rax = 0x2280D092AFB637A3; //mov rax, 0x2280D092AFB637A3
  866. rcx ^= rax; //xor rcx, rax
  867. rax = rcx; //mov rax, rcx
  868. rax >>= 0x21; //shr rax, 0x21
  869. rcx ^= rax; //xor rcx, rax
  870. rax = rcx; //mov rax, rcx
  871. rax >>= 0x1D; //shr rax, 0x1D
  872. rcx ^= rax; //xor rcx, rax
  873. rax = rcx; //mov rax, rcx
  874. rax >>= 0x3A; //shr rax, 0x3A
  875. rcx ^= rax; //xor rcx, rax
  876. return rcx;
  877. }
  878. case 9:
  879. {
  880. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x0000000005289CB0]
  881. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A511D0]
  882. rdi = globals::base + 0xF805; //lea rdi, [0xFFFFFFFFF9A609C4]
  883. rax = r11; //mov rax, r11
  884. rax *= rdi; //imul rax, rdi
  885. rcx -= rax; //sub rcx, rax
  886. rcx += r11; //add rcx, r11
  887. rax = globals::base + 0x34E2; //lea rax, [0xFFFFFFFFF9A54623]
  888. rcx += rax; //add rcx, rax
  889. rax = 0xD670AE07CD87C44B; //mov rax, 0xD670AE07CD87C44B
  890. rcx *= rax; //imul rcx, rax
  891. rax = rcx; //mov rax, rcx
  892. rax >>= 0x11; //shr rax, 0x11
  893. rcx ^= rax; //xor rcx, rax
  894. rax = rcx; //mov rax, rcx
  895. rax >>= 0x22; //shr rax, 0x22
  896. rcx ^= rax; //xor rcx, rax
  897. rax = mem.Read<uintptr_t>(r10 + 0x15); //mov rax, [r10+0x15]
  898. rdx = 0x7DF246B4B47C04D; //mov rdx, 0x7DF246B4B47C04D
  899. rax *= rdx; //imul rax, rdx
  900. rcx *= rax; //imul rcx, rax
  901. rax = r11; //mov rax, r11
  902. rax -= rbx; //sub rax, rbx
  903. rax -= 0x3EA4E863; //sub rax, 0x3EA4E863
  904. rcx ^= rax; //xor rcx, rax
  905. rax = 0x6EAEB149F1BB523E; //mov rax, 0x6EAEB149F1BB523E
  906. rcx ^= rax; //xor rcx, rax
  907. return rcx;
  908. }
  909. case 10:
  910. {
  911. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x0000000005289960]
  912. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A50E80]
  913. rcx += r11; //add rcx, r11
  914. rcx ^= rbx; //xor rcx, rbx
  915. rcx -= rbx; //sub rcx, rbx
  916. rax = 0xC2C77ADBEA06CC71; //mov rax, 0xC2C77ADBEA06CC71
  917. rcx *= rax; //imul rcx, rax
  918. rax = rcx; //mov rax, rcx
  919. rax >>= 0x20; //shr rax, 0x20
  920. rcx ^= rax; //xor rcx, rax
  921. rax = 0x6ABDE99A4C942C1D; //mov rax, 0x6ABDE99A4C942C1D
  922. rcx -= rax; //sub rcx, rax
  923. rax = rcx; //mov rax, rcx
  924. rax >>= 0xB; //shr rax, 0x0B
  925. rcx ^= rax; //xor rcx, rax
  926. rax = rcx; //mov rax, rcx
  927. rax >>= 0x16; //shr rax, 0x16
  928. rcx ^= rax; //xor rcx, rax
  929. rax = rcx; //mov rax, rcx
  930. rax >>= 0x2C; //shr rax, 0x2C
  931. rcx ^= rax; //xor rcx, rax
  932. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  933. return rcx;
  934. }
  935. case 11:
  936. {
  937. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x0000000005289574]
  938. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A50A94]
  939. rax = rcx; //mov rax, rcx
  940. rax >>= 0xA; //shr rax, 0x0A
  941. rcx ^= rax; //xor rcx, rax
  942. rax = rcx; //mov rax, rcx
  943. rax >>= 0x14; //shr rax, 0x14
  944. rcx ^= rax; //xor rcx, rax
  945. rax = rcx; //mov rax, rcx
  946. rax >>= 0x28; //shr rax, 0x28
  947. rcx ^= rax; //xor rcx, rax
  948. rcx -= r11; //sub rcx, r11
  949. rax = rbx + 0x723d2a5a; //lea rax, [rbx+0x723D2A5A]
  950. rax += r11; //add rax, r11
  951. rcx ^= rax; //xor rcx, rax
  952. rax = 0x405646879A90A4B1; //mov rax, 0x405646879A90A4B1
  953. rcx *= rax; //imul rcx, rax
  954. rax = 0x7E1BE77430218FC2; //mov rax, 0x7E1BE77430218FC2
  955. rcx += rax; //add rcx, rax
  956. rax = 0xF28B8C5F9F41196A; //mov rax, 0xF28B8C5F9F41196A
  957. rcx ^= rax; //xor rcx, rax
  958. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  959. rax = rcx; //mov rax, rcx
  960. rax >>= 0xF; //shr rax, 0x0F
  961. rcx ^= rax; //xor rcx, rax
  962. rax = rcx; //mov rax, rcx
  963. rax >>= 0x1E; //shr rax, 0x1E
  964. rcx ^= rax; //xor rcx, rax
  965. rax = rcx; //mov rax, rcx
  966. rax >>= 0x3C; //shr rax, 0x3C
  967. rcx ^= rax; //xor rcx, rax
  968. return rcx;
  969. }
  970. case 12:
  971. {
  972. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x00000000052890BE]
  973. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A505DE]
  974. r15 = globals::base + 0x339332F9; //lea r15, [0x000000002D3838C6]
  975. rax = r11; //mov rax, r11
  976. rax *= r15; //imul rax, r15
  977. rcx -= rax; //sub rcx, rax
  978. rax = 0x3038E6AB6FEAABA9; //mov rax, 0x3038E6AB6FEAABA9
  979. rcx *= rax; //imul rcx, rax
  980. rcx ^= r11; //xor rcx, r11
  981. rcx += r11; //add rcx, r11
  982. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  983. rcx -= rbx; //sub rcx, rbx
  984. rax = rcx; //mov rax, rcx
  985. rax >>= 0x25; //shr rax, 0x25
  986. rcx ^= rax; //xor rcx, rax
  987. rcx += r11; //add rcx, r11
  988. return rcx;
  989. }
  990. case 13:
  991. {
  992. r10 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r10, [0x0000000005288D1C]
  993. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A5023C]
  994. rax = globals::base + 0x45FE7DB0; //lea rax, [0x000000003FA37EB6]
  995. rax -= r11; //sub rax, r11
  996. rcx ^= rax; //xor rcx, rax
  997. rax = rbx + 0x44c85679; //lea rax, [rbx+0x44C85679]
  998. rax += r11; //add rax, r11
  999. rcx += rax; //add rcx, rax
  1000. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  1001. rax = rcx; //mov rax, rcx
  1002. rax >>= 0x1B; //shr rax, 0x1B
  1003. rcx ^= rax; //xor rcx, rax
  1004. rax = rcx; //mov rax, rcx
  1005. rax >>= 0x36; //shr rax, 0x36
  1006. rcx ^= rax; //xor rcx, rax
  1007. rax = 0xDC51C6CA5ECBE269; //mov rax, 0xDC51C6CA5ECBE269
  1008. rcx *= rax; //imul rcx, rax
  1009. rax = rbx * 0xFFFFFFFFFFFFFFFE; //imul rax, rbx, 0xFFFFFFFFFFFFFFFE
  1010. rcx += rax; //add rcx, rax
  1011. rax = 0xA8C2E47322E167D3; //mov rax, 0xA8C2E47322E167D3
  1012. rcx -= r11; //sub rcx, r11
  1013. rcx -= 0x6842; //sub rcx, 0x6842
  1014. rcx ^= rax; //xor rcx, rax
  1015. return rcx;
  1016. }
  1017. case 14:
  1018. {
  1019. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x0000000005288916]
  1020. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A4FE36]
  1021. rcx ^= rbx; //xor rcx, rbx
  1022. rax = 0xC2092D064BD7621B; //mov rax, 0xC2092D064BD7621B
  1023. rcx *= rax; //imul rcx, rax
  1024. rax = rcx; //mov rax, rcx
  1025. rax >>= 0xA; //shr rax, 0x0A
  1026. rcx ^= rax; //xor rcx, rax
  1027. rax = rcx; //mov rax, rcx
  1028. rax >>= 0x14; //shr rax, 0x14
  1029. rcx ^= rax; //xor rcx, rax
  1030. rax = rcx; //mov rax, rcx
  1031. rax >>= 0x28; //shr rax, 0x28
  1032. rcx ^= rax; //xor rcx, rax
  1033. rax = globals::base + 0xB084; //lea rax, [0xFFFFFFFFF9A5AB63]
  1034. rcx += r11; //add rcx, r11
  1035. rcx += rax; //add rcx, rax
  1036. rax = r11; //mov rax, r11
  1037. rax -= rbx; //sub rax, rbx
  1038. rax -= 0xB9AC; //sub rax, 0xB9AC
  1039. rcx ^= rax; //xor rcx, rax
  1040. rax = 0x9883AEFFA28B11D0; //mov rax, 0x9883AEFFA28B11D0
  1041. rcx ^= rax; //xor rcx, rax
  1042. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  1043. rax = rcx; //mov rax, rcx
  1044. rax >>= 0x1D; //shr rax, 0x1D
  1045. rcx ^= rax; //xor rcx, rax
  1046. rax = rcx; //mov rax, rcx
  1047. rax >>= 0x3A; //shr rax, 0x3A
  1048. rcx ^= rax; //xor rcx, rax
  1049. return rcx;
  1050. }
  1051. case 15:
  1052. {
  1053. r9 = mem.Read<uintptr_t>(globals::base + 0xB838AD9); //mov r9, [0x000000000528844E]
  1054. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9A4F96E]
  1055. rcx ^= rbx; //xor rcx, rbx
  1056. rax = 0x62EE0D555FE38340; //mov rax, 0x62EE0D555FE38340
  1057. rcx -= rax; //sub rcx, rax
  1058. rax = rcx; //mov rax, rcx
  1059. rax >>= 0x24; //shr rax, 0x24
  1060. rcx ^= rax; //xor rcx, rax
  1061. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  1062. rax = 0x8821DA37E07E4065; //mov rax, 0x8821DA37E07E4065
  1063. rcx *= rax; //imul rcx, rax
  1064. rcx += rbx; //add rcx, rbx
  1065. rax = rcx; //mov rax, rcx
  1066. rax >>= 0x14; //shr rax, 0x14
  1067. rcx ^= rax; //xor rcx, rax
  1068. rax = rcx; //mov rax, rcx
  1069. rax >>= 0x28; //shr rax, 0x28
  1070. rcx ^= rax; //xor rcx, rax
  1071. rax = 0x6535948A0956C067; //mov rax, 0x6535948A0956C067
  1072. rcx *= rax; //imul rcx, rax
  1073. return rcx;
  1074. }
  1075. }
  1076. }
  1077. uintptr_t decrypt_client_active()
  1078. {
  1079. const uint64_t mb = globals::base;
  1080. 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;
  1081. rax = mem.Read<uintptr_t>(rdx + 0xbe5bee0);
  1082. if(!rax)
  1083. return rax;
  1084. rbx = globals::vaPeb; //mov rbx, gs:[rcx]
  1085. //failed to translate: mov [rsp+0x68], rdi
  1086. rcx = rbx; //mov rcx, rbx
  1087. //failed to translate: mov [rsp+0x60], r12
  1088. rcx = _rotr64(rcx, 0x1D); //ror rcx, 0x1D
  1089. //failed to translate: mov [rsp+0x58], r13
  1090. rcx &= 0xF;
  1091. switch(rcx) {
  1092. case 0:
  1093. {
  1094. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097ED9B6]
  1095. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB4F31]
  1096. rcx = 0x75A35BF5EC482D53; //mov rcx, 0x75A35BF5EC482D53
  1097. rax -= rcx; //sub rax, rcx
  1098. rcx = r11 + 0x39674f96; //lea rcx, [r11+0x39674F96]
  1099. rcx += rbx; //add rcx, rbx
  1100. rax ^= rcx; //xor rax, rcx
  1101. rcx = rax; //mov rcx, rax
  1102. rcx >>= 0x7; //shr rcx, 0x07
  1103. rax ^= rcx; //xor rax, rcx
  1104. rcx = rax; //mov rcx, rax
  1105. rcx >>= 0xE; //shr rcx, 0x0E
  1106. rax ^= rcx; //xor rax, rcx
  1107. rcx = rax; //mov rcx, rax
  1108. rcx >>= 0x1C; //shr rcx, 0x1C
  1109. rax ^= rcx; //xor rax, rcx
  1110. rcx = rax; //mov rcx, rax
  1111. rcx >>= 0x38; //shr rcx, 0x38
  1112. rax ^= rcx; //xor rax, rcx
  1113. rcx = 0x7ED1321242287D37; //mov rcx, 0x7ED1321242287D37
  1114. rax *= rcx; //imul rax, rcx
  1115. rcx = rax; //mov rcx, rax
  1116. rcx >>= 0x2; //shr rcx, 0x02
  1117. rax ^= rcx; //xor rax, rcx
  1118. rcx = rax; //mov rcx, rax
  1119. rcx >>= 0x4; //shr rcx, 0x04
  1120. rax ^= rcx; //xor rax, rcx
  1121. rcx = rax; //mov rcx, rax
  1122. rcx >>= 0x8; //shr rcx, 0x08
  1123. rax ^= rcx; //xor rax, rcx
  1124. rcx = rax; //mov rcx, rax
  1125. rcx >>= 0x10; //shr rcx, 0x10
  1126. rax ^= rcx; //xor rax, rcx
  1127. rcx = rax; //mov rcx, rax
  1128. rcx >>= 0x20; //shr rcx, 0x20
  1129. rax ^= rcx; //xor rax, rcx
  1130. rcx = rax; //mov rcx, rax
  1131. rcx >>= 0x22; //shr rcx, 0x22
  1132. rax ^= rcx; //xor rax, rcx
  1133. rax += r11; //add rax, r11
  1134. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1135. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1136. rcx ^= r10; //xor rcx, r10
  1137. rcx = ~rcx; //not rcx
  1138. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1139. return rax;
  1140. }
  1141. case 1:
  1142. {
  1143. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097ED4AB]
  1144. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB4A26]
  1145. r12 = globals::base + 0x2B0E; //lea r12, [0xFFFFFFFFFDFB751D]
  1146. r13 = globals::base + 0x2982AAEB; //lea r13, [0x00000000277DF4EE]
  1147. rdx = rbx; //mov rdx, rbx
  1148. rdx = ~rdx; //not rdx
  1149. rdx ^= r12; //xor rdx, r12
  1150. rcx = r11; //mov rcx, r11
  1151. rcx -= rdx; //sub rcx, rdx
  1152. rax += rcx; //add rax, rcx
  1153. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1154. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1155. rcx ^= r10; //xor rcx, r10
  1156. rcx = ~rcx; //not rcx
  1157. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1158. rcx = rbx; //mov rcx, rbx
  1159. rcx ^= r13; //xor rcx, r13
  1160. rax -= rcx; //sub rax, rcx
  1161. rcx = rax; //mov rcx, rax
  1162. rcx >>= 0x5; //shr rcx, 0x05
  1163. rax ^= rcx; //xor rax, rcx
  1164. rcx = rax; //mov rcx, rax
  1165. rcx >>= 0xA; //shr rcx, 0x0A
  1166. rax ^= rcx; //xor rax, rcx
  1167. rcx = rax; //mov rcx, rax
  1168. rcx >>= 0x14; //shr rcx, 0x14
  1169. rax ^= rcx; //xor rax, rcx
  1170. rcx = rax; //mov rcx, rax
  1171. rcx >>= 0x28; //shr rcx, 0x28
  1172. rax ^= rcx; //xor rax, rcx
  1173. rcx = rax; //mov rcx, rax
  1174. rcx >>= 0x10; //shr rcx, 0x10
  1175. rax ^= rcx; //xor rax, rcx
  1176. rcx = rax; //mov rcx, rax
  1177. rcx >>= 0x20; //shr rcx, 0x20
  1178. rax ^= rcx; //xor rax, rcx
  1179. rcx = 0x395F229C1F64329; //mov rcx, 0x395F229C1F64329
  1180. rax *= rcx; //imul rax, rcx
  1181. rcx = 0x90CE9B89EFABB41; //mov rcx, 0x90CE9B89EFABB41
  1182. rax -= rcx; //sub rax, rcx
  1183. return rax;
  1184. }
  1185. case 2:
  1186. {
  1187. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097ECF33]
  1188. r14 = globals::base + 0x30F0A65E; //lea r14, [0x000000002EEBEB00]
  1189. r15 = globals::base + 0x8EAC; //lea r15, [0xFFFFFFFFFDFBD343]
  1190. rdx = rbx; //mov rdx, rbx
  1191. rdx = ~rdx; //not rdx
  1192. rax += r15; //add rax, r15
  1193. rcx = rbx; //mov rcx, rbx
  1194. rcx *= r14; //imul rcx, r14
  1195. rdx -= rcx; //sub rdx, rcx
  1196. rax += rdx; //add rax, rdx
  1197. rcx = 0xF7070315E5585D71; //mov rcx, 0xF7070315E5585D71
  1198. rax ^= rcx; //xor rax, rcx
  1199. rcx = 0x5C10EC95D52AE35C; //mov rcx, 0x5C10EC95D52AE35C
  1200. rax += rcx; //add rax, rcx
  1201. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1202. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1203. rcx ^= r10; //xor rcx, r10
  1204. rcx = ~rcx; //not rcx
  1205. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1206. rcx = rax; //mov rcx, rax
  1207. rcx >>= 0x9; //shr rcx, 0x09
  1208. rax ^= rcx; //xor rax, rcx
  1209. rcx = rax; //mov rcx, rax
  1210. rcx >>= 0x12; //shr rcx, 0x12
  1211. rax ^= rcx; //xor rax, rcx
  1212. rcx = rax; //mov rcx, rax
  1213. rcx >>= 0x24; //shr rcx, 0x24
  1214. rax ^= rcx; //xor rax, rcx
  1215. rcx = 0xEAF8DD4E7DAEE839; //mov rcx, 0xEAF8DD4E7DAEE839
  1216. rax *= rcx; //imul rax, rcx
  1217. rax -= rbx; //sub rax, rbx
  1218. return rax;
  1219. }
  1220. case 3:
  1221. {
  1222. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r9, [0x00000000097ECA9F]
  1223. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB401A]
  1224. rcx = rax; //mov rcx, rax
  1225. rcx >>= 0x20; //shr rcx, 0x20
  1226. rax ^= rcx; //xor rax, rcx
  1227. rcx = 0x5EF0345657B7395; //mov rcx, 0x5EF0345657B7395
  1228. rax *= rcx; //imul rax, rcx
  1229. rcx = 0xACDBE6CC0EC7F1D6; //mov rcx, 0xACDBE6CC0EC7F1D6
  1230. rax ^= rcx; //xor rax, rcx
  1231. rax += rbx; //add rax, rbx
  1232. rcx = rax; //mov rcx, rax
  1233. rcx >>= 0x28; //shr rcx, 0x28
  1234. rax ^= rcx; //xor rax, rcx
  1235. rax ^= r11; //xor rax, r11
  1236. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1237. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1238. rcx ^= r9; //xor rcx, r9
  1239. rcx = ~rcx; //not rcx
  1240. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1241. rax += r11; //add rax, r11
  1242. return rax;
  1243. }
  1244. case 4:
  1245. {
  1246. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EC633]
  1247. r15 = globals::base + 0xA062; //lea r15, [0xFFFFFFFFFDFBDC04]
  1248. r12 = globals::base + 0x29D008DE; //lea r12, [0x0000000027CB4475]
  1249. rcx = 0x61F81B41A154355F; //mov rcx, 0x61F81B41A154355F
  1250. rax += rcx; //add rax, rcx
  1251. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1252. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1253. rcx ^= r10; //xor rcx, r10
  1254. rcx = ~rcx; //not rcx
  1255. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1256. rcx = 0x60C7116DFD4132B; //mov rcx, 0x60C7116DFD4132B
  1257. rax *= rcx; //imul rax, rcx
  1258. rcx = rax; //mov rcx, rax
  1259. rcx >>= 0x3; //shr rcx, 0x03
  1260. rax ^= rcx; //xor rax, rcx
  1261. rcx = rax; //mov rcx, rax
  1262. rcx >>= 0x6; //shr rcx, 0x06
  1263. rax ^= rcx; //xor rax, rcx
  1264. rcx = rax; //mov rcx, rax
  1265. rcx >>= 0xC; //shr rcx, 0x0C
  1266. rax ^= rcx; //xor rax, rcx
  1267. rcx = rax; //mov rcx, rax
  1268. rcx >>= 0x18; //shr rcx, 0x18
  1269. rax ^= rcx; //xor rax, rcx
  1270. rdx = rax; //mov rdx, rax
  1271. rdx >>= 0x30; //shr rdx, 0x30
  1272. rdx ^= rax; //xor rdx, rax
  1273. rax = rbx; //mov rax, rbx
  1274. rax *= r12; //imul rax, r12
  1275. rax += rdx; //add rax, rdx
  1276. rcx = rbx; //mov rcx, rbx
  1277. rcx *= r15; //imul rcx, r15
  1278. rax ^= rcx; //xor rax, rcx
  1279. rcx = rax; //mov rcx, rax
  1280. rcx >>= 0x6; //shr rcx, 0x06
  1281. rax ^= rcx; //xor rax, rcx
  1282. rcx = rax; //mov rcx, rax
  1283. rcx >>= 0xC; //shr rcx, 0x0C
  1284. rax ^= rcx; //xor rax, rcx
  1285. rcx = rax; //mov rcx, rax
  1286. rcx >>= 0x18; //shr rcx, 0x18
  1287. rax ^= rcx; //xor rax, rcx
  1288. rcx = rax; //mov rcx, rax
  1289. rcx >>= 0x30; //shr rcx, 0x30
  1290. rax ^= rcx; //xor rax, rcx
  1291. rcx = 0x7383B429035656CC; //mov rcx, 0x7383B429035656CC
  1292. rax -= rcx; //sub rax, rcx
  1293. return rax;
  1294. }
  1295. case 5:
  1296. {
  1297. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EC0FD]
  1298. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB3678]
  1299. rcx = rax; //mov rcx, rax
  1300. rcx >>= 0x1C; //shr rcx, 0x1C
  1301. rax ^= rcx; //xor rax, rcx
  1302. rcx = rax; //mov rcx, rax
  1303. rcx >>= 0x38; //shr rcx, 0x38
  1304. rax ^= rcx; //xor rax, rcx
  1305. rcx = rax; //mov rcx, rax
  1306. rcx >>= 0xD; //shr rcx, 0x0D
  1307. rax ^= rcx; //xor rax, rcx
  1308. rcx = rax; //mov rcx, rax
  1309. rcx >>= 0x1A; //shr rcx, 0x1A
  1310. rax ^= rcx; //xor rax, rcx
  1311. rcx = rax; //mov rcx, rax
  1312. rcx >>= 0x34; //shr rcx, 0x34
  1313. rax ^= rcx; //xor rax, rcx
  1314. rcx = 0xFA0DDD2C604B9D1F; //mov rcx, 0xFA0DDD2C604B9D1F
  1315. rax *= rcx; //imul rax, rcx
  1316. rcx = globals::base + 0x46B0; //lea rcx, [0xFFFFFFFFFDFB7B3A]
  1317. rax -= rcx; //sub rax, rcx
  1318. rax += rbx; //add rax, rbx
  1319. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1320. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1321. rcx ^= r10; //xor rcx, r10
  1322. rcx = ~rcx; //not rcx
  1323. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1324. rcx = 0x64F0F35E29D4C7B9; //mov rcx, 0x64F0F35E29D4C7B9
  1325. rax *= rcx; //imul rax, rcx
  1326. rax -= r11; //sub rax, r11
  1327. rax += 0xFFFFFFFFFFFF24CA; //add rax, 0xFFFFFFFFFFFF24CA
  1328. rax += rbx; //add rax, rbx
  1329. rcx = 0x249EDB181C0475B9; //mov rcx, 0x249EDB181C0475B9
  1330. rax ^= rcx; //xor rax, rcx
  1331. return rax;
  1332. }
  1333. case 6:
  1334. {
  1335. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EBCD1]
  1336. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB3241]
  1337. rcx = rax; //mov rcx, rax
  1338. rcx >>= 0x10; //shr rcx, 0x10
  1339. rax ^= rcx; //xor rax, rcx
  1340. rcx = rax; //mov rcx, rax
  1341. rcx >>= 0x20; //shr rcx, 0x20
  1342. rax ^= rcx; //xor rax, rcx
  1343. rax += rbx; //add rax, rbx
  1344. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1345. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1346. rdx ^= r10; //xor rdx, r10
  1347. rcx = rbx; //mov rcx, rbx
  1348. rcx -= r11; //sub rcx, r11
  1349. r15 = 0xD29D6FF40A4A734D; //mov r15, 0xD29D6FF40A4A734D
  1350. rcx += r15; //add rcx, r15
  1351. rdx = ~rdx; //not rdx
  1352. rax += rcx; //add rax, rcx
  1353. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1354. rcx = rbx; //mov rcx, rbx
  1355. rcx -= r11; //sub rcx, r11
  1356. rcx -= 0x160C0564; //sub rcx, 0x160C0564
  1357. rax ^= rcx; //xor rax, rcx
  1358. rcx = rbx; //mov rcx, rbx
  1359. rcx = ~rcx; //not rcx
  1360. rcx -= r11; //sub rcx, r11
  1361. rcx -= 0x473E; //sub rcx, 0x473E
  1362. rax ^= rcx; //xor rax, rcx
  1363. rcx = 0xA4D2A49AD11FF335; //mov rcx, 0xA4D2A49AD11FF335
  1364. rax *= rcx; //imul rax, rcx
  1365. return rax;
  1366. }
  1367. case 7:
  1368. {
  1369. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EB833]
  1370. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB2DAE]
  1371. rcx = 0x8A9DA3385FC38B18; //mov rcx, 0x8A9DA3385FC38B18
  1372. rax ^= rcx; //xor rax, rcx
  1373. rax ^= rbx; //xor rax, rbx
  1374. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1375. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1376. rdx ^= r10; //xor rdx, r10
  1377. rdx = ~rdx; //not rdx
  1378. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1379. rdx = rbx; //mov rdx, rbx
  1380. rcx = globals::base + 0x49AEB26D; //lea rcx, [0x0000000047A9DF41]
  1381. rdx = ~rdx; //not rdx
  1382. rcx = ~rcx; //not rcx
  1383. rdx *= rcx; //imul rdx, rcx
  1384. rax ^= rdx; //xor rax, rdx
  1385. rcx = rax; //mov rcx, rax
  1386. rcx >>= 0xF; //shr rcx, 0x0F
  1387. rax ^= rcx; //xor rax, rcx
  1388. rcx = rax; //mov rcx, rax
  1389. rcx >>= 0x1E; //shr rcx, 0x1E
  1390. rax ^= rcx; //xor rax, rcx
  1391. rcx = rax; //mov rcx, rax
  1392. rcx >>= 0x3C; //shr rcx, 0x3C
  1393. rax ^= rcx; //xor rax, rcx
  1394. rcx = 0xF4D742FA3C9800A5; //mov rcx, 0xF4D742FA3C9800A5
  1395. rax *= rcx; //imul rax, rcx
  1396. rcx = 0x10F2E1DC08054DCE; //mov rcx, 0x10F2E1DC08054DCE
  1397. rax ^= r11; //xor rax, r11
  1398. rax -= rcx; //sub rax, rcx
  1399. return rax;
  1400. }
  1401. case 8:
  1402. {
  1403. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EB3DD]
  1404. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB2958]
  1405. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1406. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1407. rcx ^= r10; //xor rcx, r10
  1408. rcx = ~rcx; //not rcx
  1409. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1410. rcx = rax; //mov rcx, rax
  1411. rcx >>= 0x7; //shr rcx, 0x07
  1412. rax ^= rcx; //xor rax, rcx
  1413. rcx = rax; //mov rcx, rax
  1414. rcx >>= 0xE; //shr rcx, 0x0E
  1415. rax ^= rcx; //xor rax, rcx
  1416. rcx = rax; //mov rcx, rax
  1417. rcx >>= 0x1C; //shr rcx, 0x1C
  1418. rax ^= rcx; //xor rax, rcx
  1419. rcx = rax; //mov rcx, rax
  1420. rcx >>= 0x38; //shr rcx, 0x38
  1421. rax ^= rcx; //xor rax, rcx
  1422. rcx = 0x95279C81D5942D9; //mov rcx, 0x95279C81D5942D9
  1423. rax *= rcx; //imul rax, rcx
  1424. rcx = 0x43F7B4F4DCCCEAA1; //mov rcx, 0x43F7B4F4DCCCEAA1
  1425. rax -= r11; //sub rax, r11
  1426. rax -= rcx; //sub rax, rcx
  1427. rax ^= rbx; //xor rax, rbx
  1428. rax ^= r11; //xor rax, r11
  1429. rcx = 0x41A42223B53D6ABF; //mov rcx, 0x41A42223B53D6ABF
  1430. rax *= rcx; //imul rax, rcx
  1431. return rax;
  1432. }
  1433. case 9:
  1434. {
  1435. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r9, [0x00000000097EAFC9]
  1436. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB2544]
  1437. rax ^= r11; //xor rax, r11
  1438. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1439. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1440. rcx ^= r9; //xor rcx, r9
  1441. rcx = ~rcx; //not rcx
  1442. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1443. rax += rbx; //add rax, rbx
  1444. rax ^= rbx; //xor rax, rbx
  1445. rax -= r11; //sub rax, r11
  1446. rcx = 0x4B6230D25E9BA161; //mov rcx, 0x4B6230D25E9BA161
  1447. rax *= rcx; //imul rax, rcx
  1448. rax += rbx; //add rax, rbx
  1449. rcx = rax; //mov rcx, rax
  1450. rcx >>= 0xE; //shr rcx, 0x0E
  1451. rax ^= rcx; //xor rax, rcx
  1452. rcx = rax; //mov rcx, rax
  1453. rcx >>= 0x1C; //shr rcx, 0x1C
  1454. rax ^= rcx; //xor rax, rcx
  1455. rcx = rax; //mov rcx, rax
  1456. rcx >>= 0x38; //shr rcx, 0x38
  1457. rax ^= rcx; //xor rax, rcx
  1458. return rax;
  1459. }
  1460. case 10:
  1461. {
  1462. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EAB1A]
  1463. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB208A]
  1464. r15 = globals::base + 0x2BB81C0C; //lea r15, [0x0000000029B33C7F]
  1465. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1466. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1467. rcx ^= r10; //xor rcx, r10
  1468. rcx = ~rcx; //not rcx
  1469. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1470. rcx = rbx; //mov rcx, rbx
  1471. rcx -= r11; //sub rcx, r11
  1472. rcx += 0xFFFFFFFFFFFFCAD7; //add rcx, 0xFFFFFFFFFFFFCAD7
  1473. rax += rcx; //add rax, rcx
  1474. rcx = rbx; //mov rcx, rbx
  1475. rcx = ~rcx; //not rcx
  1476. rcx += r15; //add rcx, r15
  1477. rax ^= rcx; //xor rax, rcx
  1478. rcx = rax; //mov rcx, rax
  1479. rcx >>= 0x12; //shr rcx, 0x12
  1480. rax ^= rcx; //xor rax, rcx
  1481. rcx = rax; //mov rcx, rax
  1482. rcx >>= 0x24; //shr rcx, 0x24
  1483. rax ^= rcx; //xor rax, rcx
  1484. rdx = rbx; //mov rdx, rbx
  1485. rcx = globals::base + 0xEF52; //lea rcx, [0xFFFFFFFFFDFC0E61]
  1486. rdx = ~rdx; //not rdx
  1487. rax += rcx; //add rax, rcx
  1488. rax += rdx; //add rax, rdx
  1489. rcx = 0x6763BC8B6D17752D; //mov rcx, 0x6763BC8B6D17752D
  1490. rax *= rcx; //imul rax, rcx
  1491. rcx = 0x8BEF7389669EF866; //mov rcx, 0x8BEF7389669EF866
  1492. rax ^= rcx; //xor rax, rcx
  1493. return rax;
  1494. }
  1495. case 11:
  1496. {
  1497. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EA607]
  1498. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1499. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1500. rcx ^= r10; //xor rcx, r10
  1501. rcx = ~rcx; //not rcx
  1502. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1503. rax ^= rbx; //xor rax, rbx
  1504. rcx = rax; //mov rcx, rax
  1505. rcx >>= 0x1F; //shr rcx, 0x1F
  1506. rax ^= rcx; //xor rax, rcx
  1507. rcx = rax; //mov rcx, rax
  1508. rcx >>= 0x3E; //shr rcx, 0x3E
  1509. rax ^= rcx; //xor rax, rcx
  1510. rdx = rbx; //mov rdx, rbx
  1511. rdx = ~rdx; //not rdx
  1512. rcx = globals::base + 0x923A; //lea rcx, [0xFFFFFFFFFDFBAB9E]
  1513. rcx = ~rcx; //not rcx
  1514. rdx += rcx; //add rdx, rcx
  1515. rax ^= rdx; //xor rax, rdx
  1516. rax += rbx; //add rax, rbx
  1517. rcx = 0x9FC5A5033F4BA222; //mov rcx, 0x9FC5A5033F4BA222
  1518. rax ^= rcx; //xor rax, rcx
  1519. rcx = 0xEE85007B158F0715; //mov rcx, 0xEE85007B158F0715
  1520. rax *= rcx; //imul rax, rcx
  1521. rcx = 0x237F4FB43D19B0AB; //mov rcx, 0x237F4FB43D19B0AB
  1522. rax ^= rcx; //xor rax, rcx
  1523. return rax;
  1524. }
  1525. case 12:
  1526. {
  1527. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097EA137]
  1528. r11 = globals::base + 0x12A67ACE; //lea r11, [0x0000000010A19174]
  1529. rcx = 0x1A8D56D056CAA6AD; //mov rcx, 0x1A8D56D056CAA6AD
  1530. rax *= rcx; //imul rax, rcx
  1531. rcx = r11; //mov rcx, r11
  1532. rcx = ~rcx; //not rcx
  1533. rcx -= rbx; //sub rcx, rbx
  1534. rax ^= rcx; //xor rax, rcx
  1535. rax ^= rbx; //xor rax, rbx
  1536. rcx = 0xCF3780F20368ADFF; //mov rcx, 0xCF3780F20368ADFF
  1537. rax *= rcx; //imul rax, rcx
  1538. rcx = rax; //mov rcx, rax
  1539. rcx >>= 0x15; //shr rcx, 0x15
  1540. rax ^= rcx; //xor rax, rcx
  1541. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1542. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1543. rcx = rax; //mov rcx, rax
  1544. rdx ^= r10; //xor rdx, r10
  1545. rcx >>= 0x2A; //shr rcx, 0x2A
  1546. rax ^= rcx; //xor rax, rcx
  1547. rdx = ~rdx; //not rdx
  1548. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1549. rcx = 0x620FE8A3984FA9A2; //mov rcx, 0x620FE8A3984FA9A2
  1550. rax ^= rcx; //xor rax, rcx
  1551. rax += rbx; //add rax, rbx
  1552. return rax;
  1553. }
  1554. case 13:
  1555. {
  1556. r9 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r9, [0x00000000097E9DAB]
  1557. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB1326]
  1558. rax += r11; //add rax, r11
  1559. rcx = rax; //mov rcx, rax
  1560. rcx >>= 0x10; //shr rcx, 0x10
  1561. rax ^= rcx; //xor rax, rcx
  1562. rcx = rax; //mov rcx, rax
  1563. rcx >>= 0x20; //shr rcx, 0x20
  1564. rax ^= rcx; //xor rax, rcx
  1565. rcx = 0x153249CC4096DEBB; //mov rcx, 0x153249CC4096DEBB
  1566. rax += rcx; //add rax, rcx
  1567. rax += rbx; //add rax, rbx
  1568. rax ^= r11; //xor rax, r11
  1569. rcx = 0x3FEF9376461CD77C; //mov rcx, 0x3FEF9376461CD77C
  1570. rax += rcx; //add rax, rcx
  1571. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1572. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1573. rcx ^= r9; //xor rcx, r9
  1574. rcx = ~rcx; //not rcx
  1575. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1576. rcx = 0xCD5C890FC6052E0B; //mov rcx, 0xCD5C890FC6052E0B
  1577. rax *= rcx; //imul rax, rcx
  1578. return rax;
  1579. }
  1580. case 14:
  1581. {
  1582. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097E98B0]
  1583. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB0E2B]
  1584. r12 = globals::base + 0x2858; //lea r12, [0xFFFFFFFFFDFB3661]
  1585. r13 = globals::base + 0xB818; //lea r13, [0xFFFFFFFFFDFBC614]
  1586. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1587. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1588. rcx ^= r10; //xor rcx, r10
  1589. rcx = ~rcx; //not rcx
  1590. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1591. rax -= r11; //sub rax, r11
  1592. rcx = rax; //mov rcx, rax
  1593. rdx = rbx; //mov rdx, rbx
  1594. rdx *= r13; //imul rdx, r13
  1595. rcx >>= 0x28; //shr rcx, 0x28
  1596. rdx ^= rcx; //xor rdx, rcx
  1597. rax ^= rdx; //xor rax, rdx
  1598. rcx = 0x51E63BDB2878DA3D; //mov rcx, 0x51E63BDB2878DA3D
  1599. rax *= rcx; //imul rax, rcx
  1600. rcx = rax; //mov rcx, rax
  1601. rcx >>= 0x17; //shr rcx, 0x17
  1602. rax ^= rcx; //xor rax, rcx
  1603. rcx = globals::base + 0x54FCAA3A; //lea rcx, [0x0000000052F7B54A]
  1604. rdx = rax; //mov rdx, rax
  1605. rcx = ~rcx; //not rcx
  1606. rdx >>= 0x2E; //shr rdx, 0x2E
  1607. rcx ^= rbx; //xor rcx, rbx
  1608. rax ^= rdx; //xor rax, rdx
  1609. rax -= rcx; //sub rax, rcx
  1610. rcx = rbx; //mov rcx, rbx
  1611. rcx ^= r12; //xor rcx, r12
  1612. rax -= rcx; //sub rax, rcx
  1613. return rax;
  1614. }
  1615. case 15:
  1616. {
  1617. r10 = mem.Read<uintptr_t>(globals::base + 0xB838A7E); //mov r10, [0x00000000097E9485]
  1618. r11 = globals::base; //lea r11, [0xFFFFFFFFFDFB0A00]
  1619. r12 = globals::base + 0x6D7996B9; //lea r12, [0x000000006B74A097]
  1620. rax += r11; //add rax, r11
  1621. rcx = rax; //mov rcx, rax
  1622. rcx >>= 0x16; //shr rcx, 0x16
  1623. rax ^= rcx; //xor rax, rcx
  1624. rcx = rax; //mov rcx, rax
  1625. rcx >>= 0x2C; //shr rcx, 0x2C
  1626. rax ^= rcx; //xor rax, rcx
  1627. rcx = r12; //mov rcx, r12
  1628. rcx = ~rcx; //not rcx
  1629. rcx *= rbx; //imul rcx, rbx
  1630. rax += rcx; //add rax, rcx
  1631. rdx = 0xEEC920FB0911427A; //mov rdx, 0xEEC920FB0911427A
  1632. rax += rdx; //add rax, rdx
  1633. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1634. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1635. rcx ^= r10; //xor rcx, r10
  1636. rcx = ~rcx; //not rcx
  1637. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1638. rcx = globals::base + 0x9A06; //lea rcx, [0xFFFFFFFFFDFBA01D]
  1639. rcx = ~rcx; //not rcx
  1640. rax += rcx; //add rax, rcx
  1641. rcx = 0xC2732136FBDEB5CD; //mov rcx, 0xC2732136FBDEB5CD
  1642. rax -= rbx; //sub rax, rbx
  1643. rax ^= rcx; //xor rax, rcx
  1644. rcx = 0x8A516BBDDE1E408F; //mov rcx, 0x8A516BBDDE1E408F
  1645. rax *= rcx; //imul rax, rcx
  1646. return rax;
  1647. }
  1648. }
  1649. }
  1650. uintptr_t decrypt_bone_base()
  1651. {
  1652. uint64_t mb = base_address;
  1653. 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;
  1654.  
  1655. rdx = mem.Read<uintptr_t>(globals::base + 0x11AC91B8);
  1656. if(!rdx)
  1657. return rdx;
  1658.  
  1659. r11 = globals::vaPeb; //mov r11, gs:[rax]
  1660. rax = r11; //mov rax, r11
  1661. rax >>= 0x13; //shr rax, 0x13
  1662. rax &= 0xF;
  1663.  
  1664. switch(rax)
  1665. {
  1666. case 0:
  1667. {
  1668. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5DFB2]
  1669. r15 = globals::base + 0x8C93; //lea r15, [0xFFFFFFFFFC42E0F1]
  1670. rax = r15; //mov rax, r15
  1671. rax -= r11; //sub rax, r11
  1672. rdx ^= rax; //xor rdx, rax
  1673. rax = rdx; //mov rax, rdx
  1674. rax >>= 0x15; //shr rax, 0x15
  1675. rdx ^= rax; //xor rdx, rax
  1676. rax = rdx; //mov rax, rdx
  1677. rax >>= 0x2A; //shr rax, 0x2A
  1678. rdx ^= rax; //xor rdx, rax
  1679. rdx += r11; //add rdx, r11
  1680. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1681. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1682. rax ^= r10; //xor rax, r10
  1683. rax = ~rax; //not rax
  1684. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1685. rax = globals::base; //lea rax, [0xFFFFFFFFFC4250B1]
  1686. rdx ^= rax; //xor rdx, rax
  1687. rax = 0x860534C8C01FEA7B; //mov rax, 0x860534C8C01FEA7B
  1688. rdx *= rax; //imul rdx, rax
  1689. rax = 0xEE334BF3EC572D68; //mov rax, 0xEE334BF3EC572D68
  1690. rdx ^= rax; //xor rdx, rax
  1691. return rdx;
  1692. }
  1693. case 1:
  1694. {
  1695. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5DB63]
  1696. r15 = globals::base + 0xDF5D; //lea r15, [0xFFFFFFFFFC432F60]
  1697. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1698. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1699. rax ^= r10; //xor rax, r10
  1700. rax = ~rax; //not rax
  1701. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1702. rax = 0x8A4B98169395E686; //mov rax, 0x8A4B98169395E686
  1703. rdx ^= rax; //xor rdx, rax
  1704. rax = 0xC3957EB9F84EC5AF; //mov rax, 0xC3957EB9F84EC5AF
  1705. rdx *= rax; //imul rdx, rax
  1706. rax = rdx; //mov rax, rdx
  1707. rax >>= 0xE; //shr rax, 0x0E
  1708. rdx ^= rax; //xor rdx, rax
  1709. rax = rdx; //mov rax, rdx
  1710. rax >>= 0x1C; //shr rax, 0x1C
  1711. rdx ^= rax; //xor rdx, rax
  1712. rax = rdx; //mov rax, rdx
  1713. rax >>= 0x38; //shr rax, 0x38
  1714. rdx ^= rax; //xor rdx, rax
  1715. rax = globals::base + 0x31CB; //lea rax, [0xFFFFFFFFFC427DA8]
  1716. rax -= r11; //sub rax, r11
  1717. rdx += rax; //add rdx, rax
  1718. rax = rdx; //mov rax, rdx
  1719. rax >>= 0xD; //shr rax, 0x0D
  1720. rdx ^= rax; //xor rdx, rax
  1721. rax = rdx; //mov rax, rdx
  1722. rax >>= 0x1A; //shr rax, 0x1A
  1723. rdx ^= rax; //xor rdx, rax
  1724. rax = rdx; //mov rax, rdx
  1725. rax >>= 0x34; //shr rax, 0x34
  1726. rdx ^= rax; //xor rdx, rax
  1727. rax = r15; //mov rax, r15
  1728. rax = ~rax; //not rax
  1729. rax ^= r11; //xor rax, r11
  1730. rdx ^= rax; //xor rdx, rax
  1731. return rdx;
  1732. }
  1733. case 2:
  1734. {
  1735. r9 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r9, [0x0000000007C5D667]
  1736. r15 = globals::base + 0x47C2AE1B; //lea r15, [0x000000004404F91D]
  1737. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1738. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1739. rax ^= r9; //xor rax, r9
  1740. rax = ~rax; //not rax
  1741. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1742. rax = r15; //mov rax, r15
  1743. rax = ~rax; //not rax
  1744. rax ^= r11; //xor rax, r11
  1745. rax += r11; //add rax, r11
  1746. rdx += rax; //add rdx, rax
  1747. rax = 0x94073D91C803188D; //mov rax, 0x94073D91C803188D
  1748. rdx ^= rax; //xor rdx, rax
  1749. rax = 0x2EEA8A0831CE333B; //mov rax, 0x2EEA8A0831CE333B
  1750. rdx *= rax; //imul rdx, rax
  1751. rdx += r11; //add rdx, r11
  1752. rax = rdx; //mov rax, rdx
  1753. rax >>= 0x13; //shr rax, 0x13
  1754. rdx ^= rax; //xor rdx, rax
  1755. rax = rdx; //mov rax, rdx
  1756. rax >>= 0x26; //shr rax, 0x26
  1757. rdx ^= rax; //xor rdx, rax
  1758. rax = 0xD4E2CCE5B7959CA0; //mov rax, 0xD4E2CCE5B7959CA0
  1759. rdx ^= rax; //xor rdx, rax
  1760. return rdx;
  1761. }
  1762. case 3:
  1763. {
  1764. r9 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r9, [0x0000000007C5D29A]
  1765. r15 = globals::base + 0x114B; //lea r15, [0xFFFFFFFFFC425885]
  1766. rax = rdx; //mov rax, rdx
  1767. rax >>= 0x13; //shr rax, 0x13
  1768. rdx ^= rax; //xor rdx, rax
  1769. rax = rdx; //mov rax, rdx
  1770. rax >>= 0x26; //shr rax, 0x26
  1771. rdx ^= rax; //xor rdx, rax
  1772. rax = rdx; //mov rax, rdx
  1773. rax >>= 0x24; //shr rax, 0x24
  1774. rdx ^= rax; //xor rdx, rax
  1775. rax = 0x764F15DD269101D3; //mov rax, 0x764F15DD269101D3
  1776. rdx *= rax; //imul rdx, rax
  1777. rax = 0x34E81942B113C230; //mov rax, 0x34E81942B113C230
  1778. rdx -= rax; //sub rdx, rax
  1779. rax = 0x13805FC46F4FC36A; //mov rax, 0x13805FC46F4FC36A
  1780. rdx += rax; //add rdx, rax
  1781. rax = r11; //mov rax, r11
  1782. rax -= globals::base; //sub rax, [rbp-0x68] -- didn't find trace -> use base
  1783. rax += 0xFFFFFFFFFFFF85F3; //add rax, 0xFFFFFFFFFFFF85F3
  1784. rdx += rax; //add rdx, rax
  1785. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1786. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1787. rax ^= r9; //xor rax, r9
  1788. rax = ~rax; //not rax
  1789. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1790. rax = r15; //mov rax, r15
  1791. rax ^= r11; //xor rax, r11
  1792. rdx ^= rax; //xor rdx, rax
  1793. return rdx;
  1794. }
  1795. case 4:
  1796. {
  1797. r9 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r9, [0x0000000007C5CD36]
  1798. rax = rdx; //mov rax, rdx
  1799. rax >>= 0x11; //shr rax, 0x11
  1800. rdx ^= rax; //xor rdx, rax
  1801. rax = rdx; //mov rax, rdx
  1802. rax >>= 0x22; //shr rax, 0x22
  1803. rdx ^= rax; //xor rdx, rax
  1804. rax = 0x2CFB6FB2F3BAD3C; //mov rax, 0x2CFB6FB2F3BAD3C
  1805. rdx -= rax; //sub rdx, rax
  1806. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1807. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1808. rax ^= r9; //xor rax, r9
  1809. rax = ~rax; //not rax
  1810. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1811. rax = 0xEED0F28134CE8447; //mov rax, 0xEED0F28134CE8447
  1812. rdx *= rax; //imul rdx, rax
  1813. rax = 0x52D4170A67BFFCB2; //mov rax, 0x52D4170A67BFFCB2
  1814. rdx ^= rax; //xor rdx, rax
  1815. rdx += r11; //add rdx, r11
  1816. rax = rdx; //mov rax, rdx
  1817. rax >>= 0x16; //shr rax, 0x16
  1818. rdx ^= rax; //xor rdx, rax
  1819. rax = rdx; //mov rax, rdx
  1820. rax >>= 0x2C; //shr rax, 0x2C
  1821. rdx ^= rax; //xor rdx, rax
  1822. rdx ^= r11; //xor rdx, r11
  1823. return rdx;
  1824. }
  1825. case 5:
  1826. {
  1827. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5C7A0]
  1828. r15 = globals::base + 0x19B7DBCB; //lea r15, [0x0000000015FA180B]
  1829. r12 = globals::base + 0x654BDD13; //lea r12, [0x00000000618E1947]
  1830. rax = r12; //mov rax, r12
  1831. rax = ~rax; //not rax
  1832. rax += 1; //inc rax
  1833. rax += r11; //add rax, r11
  1834. rdx += rax; //add rdx, rax
  1835. rax = 0x4A2AFA53025C5181; //mov rax, 0x4A2AFA53025C5181
  1836. rdx *= rax; //imul rdx, rax
  1837. rax = rdx; //mov rax, rdx
  1838. rax >>= 0x28; //shr rax, 0x28
  1839. rdx ^= rax; //xor rdx, rax
  1840. rcx = globals::base + 0xA045; //lea rcx, [0xFFFFFFFFFC42D948]
  1841. rcx += r11; //add rcx, r11
  1842. rax = r11 + r15 * 1; //lea rax, [r11+r15*1]
  1843. rcx ^= rax; //xor rcx, rax
  1844. rdx ^= rcx; //xor rdx, rcx
  1845. rax = 0x574A3A5B7408079B; //mov rax, 0x574A3A5B7408079B
  1846. rdx *= rax; //imul rdx, rax
  1847. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1848. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1849. rax ^= r10; //xor rax, r10
  1850. rax = ~rax; //not rax
  1851. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1852. return rdx;
  1853. }
  1854. case 6:
  1855. {
  1856. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5C3BA]
  1857. r15 = globals::base + 0x4951; //lea r15, [0xFFFFFFFFFC4281AB]
  1858. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1859. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1860. rax ^= r10; //xor rax, r10
  1861. rax = ~rax; //not rax
  1862. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1863. rdx += r11; //add rdx, r11
  1864. rax = r15; //mov rax, r15
  1865. rax *= r11; //imul rax, r11
  1866. rdx += rax; //add rdx, rax
  1867. rax = globals::base + 0x1D37B933; //lea rax, [0x000000001979EFC4]
  1868. rax += r11; //add rax, r11
  1869. rdx += rax; //add rdx, rax
  1870. rax = rdx; //mov rax, rdx
  1871. rax >>= 0x9; //shr rax, 0x09
  1872. rdx ^= rax; //xor rdx, rax
  1873. rax = rdx; //mov rax, rdx
  1874. rax >>= 0x12; //shr rax, 0x12
  1875. rdx ^= rax; //xor rdx, rax
  1876. rax = rdx; //mov rax, rdx
  1877. rax >>= 0x24; //shr rax, 0x24
  1878. rdx ^= rax; //xor rdx, rax
  1879. rax = 0x6C2A29044A40E4C7; //mov rax, 0x6C2A29044A40E4C7
  1880. rdx *= rax; //imul rdx, rax
  1881. rax = globals::base; //lea rax, [0xFFFFFFFFFC423634]
  1882. rdx ^= rax; //xor rdx, rax
  1883. rax = rdx; //mov rax, rdx
  1884. rax >>= 0x3; //shr rax, 0x03
  1885. rdx ^= rax; //xor rdx, rax
  1886. rax = rdx; //mov rax, rdx
  1887. rax >>= 0x6; //shr rax, 0x06
  1888. rdx ^= rax; //xor rdx, rax
  1889. rax = rdx; //mov rax, rdx
  1890. rax >>= 0xC; //shr rax, 0x0C
  1891. rdx ^= rax; //xor rdx, rax
  1892. rax = rdx; //mov rax, rdx
  1893. rax >>= 0x18; //shr rax, 0x18
  1894. rdx ^= rax; //xor rdx, rax
  1895. rax = rdx; //mov rax, rdx
  1896. rax >>= 0x30; //shr rax, 0x30
  1897. rdx ^= rax; //xor rdx, rax
  1898. return rdx;
  1899. }
  1900. case 7:
  1901. {
  1902. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5BFC3]
  1903. r12 = globals::base + 0xCEFB; //lea r12, [0xFFFFFFFFFC43035E]
  1904. rax = globals::base; //lea rax, [0xFFFFFFFFFC4232EA]
  1905. rdx += rax; //add rdx, rax
  1906. rax = 0x5F80490A38DB3901; //mov rax, 0x5F80490A38DB3901
  1907. rdx ^= rax; //xor rdx, rax
  1908. rax = 0x4EC9DC6A5902297D; //mov rax, 0x4EC9DC6A5902297D
  1909. rdx -= rax; //sub rdx, rax
  1910. rax = rdx; //mov rax, rdx
  1911. rax >>= 0x25; //shr rax, 0x25
  1912. rdx ^= rax; //xor rdx, rax
  1913. rax = r12; //mov rax, r12
  1914. rax ^= r11; //xor rax, r11
  1915. rdx += rax; //add rdx, rax
  1916. rax = 0x92B34BC27C367071; //mov rax, 0x92B34BC27C367071
  1917. rdx *= rax; //imul rdx, rax
  1918. rdx -= r11; //sub rdx, r11
  1919. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1920. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1921. rax ^= r10; //xor rax, r10
  1922. rax = ~rax; //not rax
  1923. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1924. return rdx;
  1925. }
  1926. case 8:
  1927. {
  1928. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5BB69]
  1929. r12 = globals::base + 0x5723; //lea r12, [0xFFFFFFFFFC42872C]
  1930. r13 = globals::base + 0xFAB2; //lea r13, [0xFFFFFFFFFC432AAF]
  1931. rax = 0xE62DA6375F493113; //mov rax, 0xE62DA6375F493113
  1932. rdx *= rax; //imul rdx, rax
  1933. rax = globals::base; //lea rax, [0xFFFFFFFFFC422D93]
  1934. rdx -= rax; //sub rdx, rax
  1935. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1936. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1937. rax ^= r10; //xor rax, r10
  1938. rax = ~rax; //not rax
  1939. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1940. rdx -= r11; //sub rdx, r11
  1941. rax = rdx; //mov rax, rdx
  1942. rax >>= 0xF; //shr rax, 0x0F
  1943. rdx ^= rax; //xor rdx, rax
  1944. rax = rdx; //mov rax, rdx
  1945. rax >>= 0x1E; //shr rax, 0x1E
  1946. rdx ^= rax; //xor rdx, rax
  1947. rax = rdx; //mov rax, rdx
  1948. rax >>= 0x3C; //shr rax, 0x3C
  1949. rdx ^= rax; //xor rdx, rax
  1950. rax = rdx; //mov rax, rdx
  1951. rax >>= 0x3; //shr rax, 0x03
  1952. rdx ^= rax; //xor rdx, rax
  1953. rax = rdx; //mov rax, rdx
  1954. rax >>= 0x6; //shr rax, 0x06
  1955. rdx ^= rax; //xor rdx, rax
  1956. rax = rdx; //mov rax, rdx
  1957. rax >>= 0xC; //shr rax, 0x0C
  1958. rdx ^= rax; //xor rdx, rax
  1959. rax = rdx; //mov rax, rdx
  1960. rax >>= 0x18; //shr rax, 0x18
  1961. rdx ^= rax; //xor rdx, rax
  1962. rax = rdx; //mov rax, rdx
  1963. rax >>= 0x30; //shr rax, 0x30
  1964. rdx ^= rax; //xor rdx, rax
  1965. rax = r11 + r13 * 1; //lea rax, [r11+r13*1]
  1966. rdx ^= rax; //xor rdx, rax
  1967. rax = r12; //mov rax, r12
  1968. rax ^= r11; //xor rax, r11
  1969. rdx ^= rax; //xor rdx, rax
  1970. return rdx;
  1971. }
  1972. case 9:
  1973. {
  1974. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5B651]
  1975. r12 = globals::base + 0xF1EC; //lea r12, [0xFFFFFFFFFC431CDD]
  1976. r13 = globals::base + 0x5304B0E6; //lea r13, [0x000000004F46DBCB]
  1977. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1978. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1979. rax ^= r10; //xor rax, r10
  1980. rax = ~rax; //not rax
  1981. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1982. rcx = globals::base + 0x429D; //lea rcx, [0xFFFFFFFFFC426CA1]
  1983. rcx += r11; //add rcx, r11
  1984. rdx += rcx; //add rdx, rcx
  1985. rax = r11 + r12 * 1; //lea rax, [r11+r12*1]
  1986. rdx ^= rax; //xor rdx, rax
  1987. rdx ^= r13; //xor rdx, r13
  1988. rdx ^= r11; //xor rdx, r11
  1989. rax = rdx; //mov rax, rdx
  1990. rax >>= 0x22; //shr rax, 0x22
  1991. rdx ^= rax; //xor rdx, rax
  1992. rax = 0xEE899EDDAF56550; //mov rax, 0xEE899EDDAF56550
  1993. rdx ^= rax; //xor rdx, rax
  1994. rax = rdx; //mov rax, rdx
  1995. rax >>= 0xE; //shr rax, 0x0E
  1996. rdx ^= rax; //xor rdx, rax
  1997. rax = rdx; //mov rax, rdx
  1998. rax >>= 0x1C; //shr rax, 0x1C
  1999. rdx ^= rax; //xor rdx, rax
  2000. rax = rdx; //mov rax, rdx
  2001. rax >>= 0x38; //shr rax, 0x38
  2002. rdx ^= rax; //xor rdx, rax
  2003. rax = 0x39D515C223A57391; //mov rax, 0x39D515C223A57391
  2004. rdx *= rax; //imul rdx, rax
  2005. return rdx;
  2006. }
  2007. case 10:
  2008. {
  2009. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5B1DF]
  2010. r12 = globals::base + 0x1A3D; //lea r12, [0xFFFFFFFFFC4240BC]
  2011. rax = rdx; //mov rax, rdx
  2012. rax >>= 0xF; //shr rax, 0x0F
  2013. rdx ^= rax; //xor rdx, rax
  2014. rax = rdx; //mov rax, rdx
  2015. rax >>= 0x1E; //shr rax, 0x1E
  2016. rdx ^= rax; //xor rdx, rax
  2017. rax = rdx; //mov rax, rdx
  2018. rax >>= 0x3C; //shr rax, 0x3C
  2019. rdx ^= rax; //xor rdx, rax
  2020. rax = rdx; //mov rax, rdx
  2021. rax >>= 0x13; //shr rax, 0x13
  2022. rdx ^= rax; //xor rdx, rax
  2023. rax = rdx; //mov rax, rdx
  2024. rax >>= 0x26; //shr rax, 0x26
  2025. rdx ^= rax; //xor rdx, rax
  2026. rax = r11; //mov rax, r11
  2027. rax = ~rax; //not rax
  2028. rax *= r12; //imul rax, r12
  2029. rdx ^= rax; //xor rdx, rax
  2030. rax = 0x8330B389343DA675; //mov rax, 0x8330B389343DA675
  2031. rdx *= rax; //imul rdx, rax
  2032. rax = 0x5A325A7184C15E55; //mov rax, 0x5A325A7184C15E55
  2033. rdx -= rax; //sub rdx, rax
  2034. rax = 0xE28957C95B7E497; //mov rax, 0xE28957C95B7E497
  2035. rdx += rax; //add rdx, rax
  2036. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2037. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2038. rax ^= r10; //xor rax, r10
  2039. rax = ~rax; //not rax
  2040. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2041. rdx -= r11; //sub rdx, r11
  2042. return rdx;
  2043. }
  2044. case 11:
  2045. {
  2046. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5AD36]
  2047. r14 = globals::base + 0x67B591A2; //lea r14, [0x0000000063F7B373]
  2048. rax = rdx; //mov rax, rdx
  2049. rax >>= 0x22; //shr rax, 0x22
  2050. rdx ^= rax; //xor rdx, rax
  2051. rax = r14; //mov rax, r14
  2052. rax = ~rax; //not rax
  2053. rax ^= r11; //xor rax, r11
  2054. rax += r11; //add rax, r11
  2055. rdx -= rax; //sub rdx, rax
  2056. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2057. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2058. rax ^= r10; //xor rax, r10
  2059. rax = ~rax; //not rax
  2060. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2061. rdx ^= r11; //xor rdx, r11
  2062. rax = 0x112AEF7CBA9BEDF1; //mov rax, 0x112AEF7CBA9BEDF1
  2063. rdx *= rax; //imul rdx, rax
  2064. rax = 0x792205E77EAA6797; //mov rax, 0x792205E77EAA6797
  2065. rdx ^= rax; //xor rdx, rax
  2066. return rdx;
  2067. }
  2068. case 12:
  2069. {
  2070. r9 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r9, [0x0000000007C5A9A1]
  2071. r14 = globals::base + 0x70E4B3E1; //lea r14, [0x000000006D26D222]
  2072. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2073. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2074. rax ^= r9; //xor rax, r9
  2075. rax = ~rax; //not rax
  2076. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2077. rax = 0x33BF00DD8A073650; //mov rax, 0x33BF00DD8A073650
  2078. rdx -= rax; //sub rdx, rax
  2079. rax = rdx; //mov rax, rdx
  2080. rax >>= 0xA; //shr rax, 0x0A
  2081. rdx ^= rax; //xor rdx, rax
  2082. rax = rdx; //mov rax, rdx
  2083. rax >>= 0x14; //shr rax, 0x14
  2084. rdx ^= rax; //xor rdx, rax
  2085. rax = rdx; //mov rax, rdx
  2086. rax >>= 0x28; //shr rax, 0x28
  2087. rdx ^= rax; //xor rdx, rax
  2088. rax = globals::base; //lea rax, [0xFFFFFFFFFC421BC9]
  2089. rdx ^= rax; //xor rdx, rax
  2090. rax = r14; //mov rax, r14
  2091. rax = ~rax; //not rax
  2092. rdx += rax; //add rdx, rax
  2093. rax = 0x37300D9E69A77B2F; //mov rax, 0x37300D9E69A77B2F
  2094. rdx *= rax; //imul rdx, rax
  2095. rdx -= r11; //sub rdx, r11
  2096. return rdx;
  2097. }
  2098. case 13:
  2099. {
  2100. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5A5CA]
  2101. r14 = globals::base + 0x666C9DA0; //lea r14, [0x0000000062AEB80A]
  2102. rax = r14; //mov rax, r14
  2103. rax ^= r11; //xor rax, r11
  2104. rdx -= rax; //sub rdx, rax
  2105. rax = 0x124569EA4125D98; //mov rax, 0x124569EA4125D98
  2106. rdx ^= rax; //xor rdx, rax
  2107. rax = rdx; //mov rax, rdx
  2108. rax >>= 0x5; //shr rax, 0x05
  2109. rdx ^= rax; //xor rdx, rax
  2110. rax = rdx; //mov rax, rdx
  2111. rax >>= 0xA; //shr rax, 0x0A
  2112. rdx ^= rax; //xor rdx, rax
  2113. rax = rdx; //mov rax, rdx
  2114. rax >>= 0x14; //shr rax, 0x14
  2115. rdx ^= rax; //xor rdx, rax
  2116. rax = rdx; //mov rax, rdx
  2117. rax >>= 0x28; //shr rax, 0x28
  2118. rdx ^= rax; //xor rdx, rax
  2119. rax = rdx; //mov rax, rdx
  2120. rax >>= 0x1A; //shr rax, 0x1A
  2121. rdx ^= rax; //xor rdx, rax
  2122. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  2123. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  2124. rax = rdx; //mov rax, rdx
  2125. rcx ^= r10; //xor rcx, r10
  2126. rax >>= 0x34; //shr rax, 0x34
  2127. rcx = ~rcx; //not rcx
  2128. rdx ^= rax; //xor rdx, rax
  2129. rdx *= mem.Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
  2130. rdx ^= r11; //xor rdx, r11
  2131. rax = 0xD83F30F92C64DF4F; //mov rax, 0xD83F30F92C64DF4F
  2132. rdx ^= rax; //xor rdx, rax
  2133. rax = 0xB69AFD2628432A9D; //mov rax, 0xB69AFD2628432A9D
  2134. rdx *= rax; //imul rdx, rax
  2135. return rdx;
  2136. }
  2137. case 14:
  2138. {
  2139. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C5A1AA]
  2140. r15 = globals::base + 0x5113; //lea r15, [0xFFFFFFFFFC42675D]
  2141. rax = rdx; //mov rax, rdx
  2142. rax >>= 0x1B; //shr rax, 0x1B
  2143. rdx ^= rax; //xor rdx, rax
  2144. rax = rdx; //mov rax, rdx
  2145. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  2146. rax >>= 0x36; //shr rax, 0x36
  2147. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  2148. rdx ^= rax; //xor rdx, rax
  2149. rcx ^= r10; //xor rcx, r10
  2150. rcx = ~rcx; //not rcx
  2151. rdx *= mem.Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
  2152. rax = 0xDC4274449EFE767B; //mov rax, 0xDC4274449EFE767B
  2153. rdx ^= rax; //xor rdx, rax
  2154. rax = rdx; //mov rax, rdx
  2155. rax >>= 0x6; //shr rax, 0x06
  2156. rdx ^= rax; //xor rdx, rax
  2157. rax = rdx; //mov rax, rdx
  2158. rax >>= 0xC; //shr rax, 0x0C
  2159. rdx ^= rax; //xor rdx, rax
  2160. rax = rdx; //mov rax, rdx
  2161. rax >>= 0x18; //shr rax, 0x18
  2162. rdx ^= rax; //xor rdx, rax
  2163. rax = rdx; //mov rax, rdx
  2164. rax >>= 0x30; //shr rax, 0x30
  2165. rdx ^= rax; //xor rdx, rax
  2166. rax = r15; //mov rax, r15
  2167. rax ^= r11; //xor rax, r11
  2168. rdx -= rax; //sub rdx, rax
  2169. rax = 0x4480AA60A21867F9; //mov rax, 0x4480AA60A21867F9
  2170. rdx *= rax; //imul rdx, rax
  2171. rax = globals::base + 0xD03A; //lea rax, [0xFFFFFFFFFC42E33F]
  2172. rax += r11; //add rax, r11
  2173. rdx += rax; //add rdx, rax
  2174. return rdx;
  2175. }
  2176. case 15:
  2177. {
  2178. r10 = mem.Read<uintptr_t>(globals::base + 0xB838B4D); //mov r10, [0x0000000007C59D0A]
  2179. r13 = globals::base + 0x642A39AC; //lea r13, [0x00000000606C4B56]
  2180. r12 = globals::base + 0x6744783A; //lea r12, [0x00000000638689D8]
  2181. rdx += r11; //add rdx, r11
  2182. rax = r11; //mov rax, r11
  2183. rax = ~rax; //not rax
  2184. rax ^= r13; //xor rax, r13
  2185. rdx -= rax; //sub rdx, rax
  2186. rdx ^= r12; //xor rdx, r12
  2187. rdx ^= r11; //xor rdx, r11
  2188. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2189. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2190. rax ^= r10; //xor rax, r10
  2191. rax = ~rax; //not rax
  2192. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2193. rax = 0x54750E0E4638841A; //mov rax, 0x54750E0E4638841A
  2194. rdx += rax; //add rdx, rax
  2195. rax = 0x17257FE07A931EB4; //mov rax, 0x17257FE07A931EB4
  2196. rdx ^= rax; //xor rdx, rax
  2197. rax = rdx; //mov rax, rdx
  2198. rax >>= 0x4; //shr rax, 0x04
  2199. rdx ^= rax; //xor rdx, rax
  2200. rax = rdx; //mov rax, rdx
  2201. rax >>= 0x8; //shr rax, 0x08
  2202. rdx ^= rax; //xor rdx, rax
  2203. rax = rdx; //mov rax, rdx
  2204. rax >>= 0x10; //shr rax, 0x10
  2205. rdx ^= rax; //xor rdx, rax
  2206. rax = rdx; //mov rax, rdx
  2207. rax >>= 0x20; //shr rax, 0x20
  2208. rdx ^= rax; //xor rdx, rax
  2209. rax = 0x7493CCED6314B08B; //mov rax, 0x7493CCED6314B08B
  2210. rdx *= rax; //imul rdx, rax
  2211. return rdx;
  2212. }
  2213. }
  2214. };
  2215.  
  2216. uint16_t get_bone_index(const Driver& driver, uint32_t bone_index)
  2217. {
  2218. const uint64_t mb = globals::base;
  2219. 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;
  2220. rbx = bone_index;
  2221. rcx = rbx * 0x13C8;
  2222. rax = 0xCB182C584BD5193; //mov rax, 0xCB182C584BD5193
  2223. r11 = globals::base; //lea r11, [0xFFFFFFFFFD1A41FE]
  2224. rax = _umul128(rax, rcx, (uintptr_t*)&rdx); //mul rcx
  2225. rax = rcx; //mov rax, rcx
  2226. r10 = 0xD6FB75C08B670E5B; //mov r10, 0xD6FB75C08B670E5B
  2227. rax -= rdx; //sub rax, rdx
  2228. rax >>= 0x1; //shr rax, 0x01
  2229. rax += rdx; //add rax, rdx
  2230. rax >>= 0xC; //shr rax, 0x0C
  2231. rax = rax * 0x1E7D; //imul rax, rax, 0x1E7D
  2232. rcx -= rax; //sub rcx, rax
  2233. rax = 0x4078E2A8FCDA18EF; //mov rax, 0x4078E2A8FCDA18EF
  2234. r8 = rcx * 0x1E7D; //imul r8, rcx, 0x1E7D
  2235. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2236. rdx >>= 0xB; //shr rdx, 0x0B
  2237. rax = rdx * 0x1FC4; //imul rax, rdx, 0x1FC4
  2238. r8 -= rax; //sub r8, rax
  2239. rax = 0xF0F0F0F0F0F0F0F1; //mov rax, 0xF0F0F0F0F0F0F0F1
  2240. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2241. rax = 0x624DD2F1A9FBE77; //mov rax, 0x624DD2F1A9FBE77
  2242. rdx >>= 0x6; //shr rdx, 0x06
  2243. rcx = rdx * 0x44; //imul rcx, rdx, 0x44
  2244. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2245. rax = r8; //mov rax, r8
  2246. rax -= rdx; //sub rax, rdx
  2247. rax >>= 0x1; //shr rax, 0x01
  2248. rax += rdx; //add rax, rdx
  2249. rax >>= 0x6; //shr rax, 0x06
  2250. rcx += rax; //add rcx, rax
  2251. rax = rcx * 0xFA; //imul rax, rcx, 0xFA
  2252. rcx = r8 * 0xFC; //imul rcx, r8, 0xFC
  2253. rcx -= rax; //sub rcx, rax
  2254. rax = mem.Read<uint16_t>(rcx + r11 * 1 + 0xAA7BA50); //movzx eax, word ptr [rcx+r11*1+0xAA7BA50]
  2255. r8 = rax * 0x13C8; //imul r8, rax, 0x13C8
  2256. rax = r10; //mov rax, r10
  2257. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2258. rax = r10; //mov rax, r10
  2259. rdx >>= 0xD; //shr rdx, 0x0D
  2260. rcx = rdx * 0x261B; //imul rcx, rdx, 0x261B
  2261. r8 -= rcx; //sub r8, rcx
  2262. r9 = r8 * 0x2F75; //imul r9, r8, 0x2F75
  2263. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2264. rdx >>= 0xD; //shr rdx, 0x0D
  2265. rax = rdx * 0x261B; //imul rax, rdx, 0x261B
  2266. r9 -= rax; //sub r9, rax
  2267. rax = 0x8FB823EE08FB823F; //mov rax, 0x8FB823EE08FB823F
  2268. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2269. rax = 0x579D6EE340579D6F; //mov rax, 0x579D6EE340579D6F
  2270. rdx >>= 0x5; //shr rdx, 0x05
  2271. rcx = rdx * 0x39; //imul rcx, rdx, 0x39
  2272. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2273. rdx >>= 0x6; //shr rdx, 0x06
  2274. rcx += rdx; //add rcx, rdx
  2275. rax = rcx * 0x176; //imul rax, rcx, 0x176
  2276. rcx = r9 * 0x178; //imul rcx, r9, 0x178
  2277. rcx -= rax; //sub rcx, rax
  2278. rsi = mem.Read<uint16_t>(rcx + r11 * 1 + 0xAA7FCC0); //movsx esi, word ptr [rcx+r11*1+0xAA7FCC0]
  2279. return rsi;
  2280. }
  2281. constexpr auto timestamp = 0x68CDBD77;
  2282. constexpr auto ref_def_ptr = 0xCE22958;
  2283. constexpr auto name_array = 0xCF94F68;
  2284. constexpr auto name_array_pos = 0x3038; // 0x4C70 for MW1(2019)
  2285. constexpr auto name_array_size = 0xC8;
  2286. constexpr auto loot_ptr = 0xE76CDF0;
  2287. constexpr auto camera_base = 0xCAA1A10;
  2288. constexpr auto camera_pos = 0x1E4;
  2289. constexpr auto local_index = 0xC7828;
  2290. constexpr auto local_index_pos = 0x390;
  2291. constexpr auto recoil = 0x1B87B0;
  2292. constexpr auto game_mode = 0xBE66F38;
  2293. constexpr auto weapon_definitions = 0xCCAB1C0;
  2294. constexpr auto distribute = 0x995CD00;
  2295. uint32_t o_visible_bit = 0xC89D0;
  2296. uint32_t o_no_recoil = 0x1B87B0;
  2297. uint32_t Player_client_state_enum = 0x100DA0;
  2298. constexpr auto scoreboard = 0x43C8;
  2299. constexpr auto scoreboardsize = 0x78;
  2300.  
  2301.  
  2302. namespace bone {
  2303. constexpr auto bone_base = 0x75DD8;
  2304. constexpr auto size = 0x1B8;
  2305. constexpr auto offset = 0xD8;
  2306. };
  2307.  
  2308. namespace player {
  2309. constexpr auto size = 0x22C8;
  2310. constexpr auto valid = 0x1BB4;
  2311. constexpr auto pos = 0x2200;
  2312. constexpr auto team = 0x21D3;
  2313. constexpr auto stance = 0xB10;
  2314. constexpr auto weapon_index = 0x1AE8;
  2315. constexpr auto dead_1 = 0x1436D;
  2316. constexpr auto dead_2 = 0x13D4C;
  2317. constexpr auto dead_3 = 0x13E84;
  2318. };
  2319.  
  2320.  
Advertisement
Add Comment
Please, Sign In to add comment