Guest User

BNET B06 08/08/25

a guest
Aug 8th, 2025
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 131.40 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. current rip 00007FF7C55E3792
  6. r8 = mem.Read<uintptr_t>(globals::base + 0xCE64DB8);
  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 + 0xB7E6C09); //xor rcx, [0x000000000543341E]
  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, [0xFFFFFFFFF9C4C7ED]
  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 + 0x1defa8);
  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 + 0xB7E6C3A); //mov r10, [0x00000000089417C9]
  46. rax = globals::base; //lea rax, [0xFFFFFFFFFD15A9D7]
  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, [0xFFFFFFFFFD15A7B8]
  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 + 0xB7E6C3A); //mov r10, [0x0000000008941331]
  78. rax = r8; //mov rax, r8
  79. rax >>= 0x9; //shr rax, 0x09
  80. r8 ^= rax; //xor r8, rax
  81. rax = r8; //mov rax, r8
  82. rax >>= 0x12; //shr rax, 0x12
  83. r8 ^= rax; //xor r8, rax
  84. rax = r8; //mov rax, r8
  85. rax >>= 0x24; //shr rax, 0x24
  86. r8 ^= rax; //xor r8, rax
  87. r8 ^= rbx; //xor r8, rbx
  88. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  89. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  90. rcx ^= r10; //xor rcx, r10
  91. rcx = ~rcx; //not rcx
  92. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  93. rcx = globals::base; //lea rcx, [0xFFFFFFFFFD15A33C]
  94. rax = rbx; //mov rax, rbx
  95. rax -= rcx; //sub rax, rcx
  96. rax += 0xFFFFFFFF9F0CFAED; //add rax, 0xFFFFFFFF9F0CFAED
  97. r8 += rax; //add r8, rax
  98. rax = 0x40ED86BABDEA8F5B; //mov rax, 0x40ED86BABDEA8F5B
  99. r8 *= rax; //imul r8, rax
  100. rax = 0xA7798517B7F399EA; //mov rax, 0xA7798517B7F399EA
  101. r8 ^= rax; //xor r8, rax
  102. rcx = globals::base + 0x755F7BDD; //lea rcx, [0x000000007275228F]
  103. rax = rcx; //mov rax, rcx
  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 + 0xB7E6C3A); //mov r10, [0x0000000008940EDA]
  114. r15 = globals::base + 0xAC81; //lea r15, [0xFFFFFFFFFD164F0E]
  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 += r15; //add r8, r15
  122. rax = globals::base + 0x142; //lea rax, [0xFFFFFFFFFD159F8F]
  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, [0xFFFFFFFFFD159DEE]
  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 + 0xB7E6C3A); //mov r10, [0x00000000089409FF]
  147. r8 ^= rbx; //xor r8, rbx
  148. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  149. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  150. rcx ^= r10; //xor rcx, r10
  151. rcx = ~rcx; //not rcx
  152. r8 *= mem.Read<uintptr_t>(rcx + 0x9); //imul r8, [rcx+0x09]
  153. rax = 0x6C5618A3BE4C414; //mov rax, 0x6C5618A3BE4C414
  154. r8 -= rax; //sub r8, rax
  155. rax = 0xE98709096AD185CC; //mov rax, 0xE98709096AD185CC
  156. r8 ^= rax; //xor r8, rax
  157. rax = r8; //mov rax, r8
  158. rcx = globals::base + 0x5ED318FB; //lea rcx, [0x000000005BE8B5AB]
  159. rax >>= 0xB; //shr rax, 0x0B
  160. rcx = ~rcx; //not rcx
  161. r8 ^= rax; //xor r8, rax
  162. rcx *= rbx; //imul rcx, rbx
  163. rax = r8; //mov rax, r8
  164. rax >>= 0x16; //shr rax, 0x16
  165. r8 ^= rax; //xor r8, rax
  166. rax = r8; //mov rax, r8
  167. rax >>= 0x2C; //shr rax, 0x2C
  168. rcx ^= rax; //xor rcx, rax
  169. r8 ^= rcx; //xor r8, rcx
  170. rax = 0x22A1571E2E749CB; //mov rax, 0x22A1571E2E749CB
  171. r8 *= rax; //imul r8, rax
  172. rcx = globals::base + 0xF26D; //lea rcx, [0xFFFFFFFFFD168E15]
  173. rax = rbx; //mov rax, rbx
  174. rax *= rcx; //imul rax, rcx
  175. r8 += rax; //add r8, rax
  176. return r8;
  177. }
  178. case 4:
  179. {
  180. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C3A); //mov r10, [0x0000000008940581]
  181. rax = 0x54EE9012A77B3C0E; //mov rax, 0x54EE9012A77B3C0E
  182. r8 ^= rax; //xor r8, rax
  183. rax = globals::base; //lea rax, [0xFFFFFFFFFD1594C8]
  184. rax += 0x432D; //add rax, 0x432D
  185. rax += rbx; //add rax, rbx
  186. r8 += rax; //add r8, rax
  187. rax = 0xBE6A84FFF3304C3D; //mov rax, 0xBE6A84FFF3304C3D
  188. r8 *= rax; //imul r8, rax
  189. rax = r8; //mov rax, r8
  190. rax >>= 0x12; //shr rax, 0x12
  191. r8 ^= rax; //xor r8, rax
  192. rax = r8; //mov rax, r8
  193. rax >>= 0x24; //shr rax, 0x24
  194. r8 ^= rax; //xor r8, rax
  195. rax = r8; //mov rax, r8
  196. rax >>= 0x7; //shr rax, 0x07
  197. r8 ^= rax; //xor r8, rax
  198. rax = r8; //mov rax, r8
  199. rax >>= 0xE; //shr rax, 0x0E
  200. r8 ^= rax; //xor r8, rax
  201. rax = r8; //mov rax, r8
  202. rax >>= 0x1C; //shr rax, 0x1C
  203. r8 ^= rax; //xor r8, rax
  204. rax = r8; //mov rax, r8
  205. rax >>= 0x38; //shr rax, 0x38
  206. r8 ^= rax; //xor r8, rax
  207. rcx = globals::base + 0x72D0A311; //lea rcx, [0x000000006FE63C0A]
  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 *= rcx; //imul rax, rcx
  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 + 0xB7E6C3A); //mov r10, [0x00000000089400D0]
  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, [0xFFFFFFFFFD15915D]
  255. rax += 0x1079; //add rax, 0x1079
  256. rax += rbx; //add rax, rbx
  257. r8 ^= rax; //xor r8, rax
  258. rcx = globals::base; //lea rcx, [0xFFFFFFFFFD15934D]
  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 + 0xB7E6C3A); //mov r10, [0x000000000893FC52]
  269. rax = 0; //and rax, 0xFFFFFFFFC0000000
  270. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  271. rax ^= r10; //xor rax, r10
  272. rax = ~rax; //not rax
  273. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  274. rcx = globals::base + 0x1EE2; //lea rcx, [0xFFFFFFFFFD15AEC8]
  275. rax = rbx; //mov rax, rbx
  276. rax ^= rcx; //xor rax, rcx
  277. rcx = 0x30DABF93D6E4FB5; //mov rcx, 0x30DABF93D6E4FB5
  278. r8 ^= rcx; //xor r8, rcx
  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 + 0xB7E6C3A); //mov r9, [0x000000000893F817]
  302. r15 = globals::base + 0xC177; //lea r15, [0xFFFFFFFFFD164D41]
  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 *= r15; //imul r8, r15
  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 + 0xB7E6C3A); //mov r10, [0x000000000893F2E1]
  335. rax = globals::base; //lea rax, [0xFFFFFFFFFD15849E]
  336. r8 ^= rax; //xor r8, rax
  337. rax = 0x3169FBDB3B875224; //mov rax, 0x3169FBDB3B875224
  338. r8 += rax; //add r8, rax
  339. rcx = globals::base + 0x88B9; //lea rcx, [0xFFFFFFFFFD160F25]
  340. rax = rcx; //mov rax, rcx
  341. rax = ~rax; //not rax
  342. rax *= rbx; //imul rax, rbx
  343. r8 ^= rax; //xor r8, rax
  344. r8 ^= rbx; //xor r8, rbx
  345. rax = globals::base + 0x553; //lea rax, [0xFFFFFFFFFD158841]
  346. r8 ^= rax; //xor r8, rax
  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, [0x000000000EE6A9CE]
  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 + 0xB7E6C3A); //mov r9, [0x000000000893EE93]
  369. r11 = globals::base + 0x7C81; //lea r11, [0xFFFFFFFFFD15FEC7]
  370. rax = rbx; //mov rax, rbx
  371. rax *= r11; //imul rax, r11
  372. r8 -= rax; //sub r8, rax
  373. rax = globals::base; //lea rax, [0xFFFFFFFFFD157F6B]
  374. r8 -= rax; //sub r8, rax
  375. rax = rbx; //mov rax, rbx
  376. rax -= globals::base; //sub rax, [rsp+0x78] -- 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 + 0xB7E6C3A); //mov r10, [0x000000000893E977]
  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 + 0xB7E6C3A); //mov r10, [0x000000000893E54D]
  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_0xFFFFFFFFFFFFFFD0;
  452. RSP_0xFFFFFFFFFFFFFFD0 = globals::base + 0xA1FD; //lea rax, [0xFFFFFFFFFD161B09] : RBP+0xFFFFFFFFFFFFFFD0
  453. rax *= RSP_0xFFFFFFFFFFFFFFD0; //imul rax, [rbp-0x30]
  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, [0xFFFFFFFFFD157402]
  470. rax += rbx; //add rax, rbx
  471. r8 -= rax; //sub r8, rax
  472. rax = globals::base; //lea rax, [0xFFFFFFFFFD15752E]
  473. r8 ^= rax; //xor r8, rax
  474. return r8;
  475. }
  476. case 12:
  477. {
  478. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C3A); //mov r10, [0x000000000893E01B]
  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, [0xFFFFFFFFFD156F2D]
  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, [0xFFFFFFFFFD156FAE]
  501. r8 ^= rax; //xor r8, rax
  502. return r8;
  503. }
  504. case 13:
  505. {
  506. r11 = mem.Read<uintptr_t>(globals::base + 0xB7E6C3A); //mov r11, [0x000000000893DAD2]
  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, [0xFFFFFFFFFD156AAF]
  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 + 0xB7E6C3A); //mov r9, [0x000000000893D65C]
  542. r8 += rbx; //add r8, rbx
  543. rax = globals::base + 0x8D0; //lea rax, [0xFFFFFFFFFD157152]
  544. rax -= rbx; //sub rax, rbx
  545. r8 += rax; //add r8, rax
  546. rax = 0xBC0AAA7E98B1663A; //mov rax, 0xBC0AAA7E98B1663A
  547. r8 ^= rax; //xor r8, rax
  548. rax = 0x54D1F9305B205B45; //mov rax, 0x54D1F9305B205B45
  549. r8 *= rax; //imul r8, rax
  550. rax = r8; //mov rax, r8
  551. rax >>= 0xA; //shr rax, 0x0A
  552. r8 ^= rax; //xor r8, rax
  553. rax = r8; //mov rax, r8
  554. rax >>= 0x14; //shr rax, 0x14
  555. r8 ^= rax; //xor r8, rax
  556. rax = r8; //mov rax, r8
  557. rax >>= 0x28; //shr rax, 0x28
  558. r8 ^= rax; //xor r8, rax
  559. rax = r8; //mov rax, r8
  560. rax >>= 0x12; //shr rax, 0x12
  561. r8 ^= rax; //xor r8, rax
  562. rax = r8; //mov rax, r8
  563. rax >>= 0x24; //shr rax, 0x24
  564. r8 ^= rax; //xor r8, rax
  565. rax = 0xFFFFFFFFDE23E20A; //mov rax, 0xFFFFFFFFDE23E20A
  566. rax -= rbx; //sub rax, rbx
  567. rax -= globals::base; //sub rax, [rsp+0x78] -- didn't find trace -> use base
  568. r8 += rax; //add r8, rax
  569. rax = 0; //and rax, 0xFFFFFFFFC0000000
  570. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  571. rax ^= r9; //xor rax, r9
  572. rax = ~rax; //not rax
  573. r8 *= mem.Read<uintptr_t>(rax + 0x9); //imul r8, [rax+0x09]
  574. return r8;
  575. }
  576. case 15:
  577. {
  578. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C3A); //mov r10, [0x000000000893D1D9]
  579. rax = 0; //and rax, 0xFFFFFFFFC0000000
  580. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  581. rax ^= r10; //xor rax, r10
  582. rax = ~rax; //not rax
  583. rax = mem.Read<uintptr_t>(rax + 0x9); //mov rax, [rax+0x09]
  584. uintptr_t RSP_0xFFFFFFFFFFFFFFC0;
  585. RSP_0xFFFFFFFFFFFFFFC0 = 0x3A27415DA31CA989; //mov rax, 0x3A27415DA31CA989 : RBP+0xFFFFFFFFFFFFFFC0
  586. rax *= RSP_0xFFFFFFFFFFFFFFC0; //imul rax, [rbp-0x40]
  587. r8 *= rax; //imul r8, rax
  588. rax = 0x6F6A3BE0CADE4A54; //mov rax, 0x6F6A3BE0CADE4A54
  589. r8 -= rax; //sub r8, rax
  590. r8 -= rbx; //sub r8, rbx
  591. rax = r8; //mov rax, r8
  592. rax >>= 0x13; //shr rax, 0x13
  593. rcx = rbx; //mov rcx, rbx
  594. r8 ^= rax; //xor r8, rax
  595. rcx = ~rcx; //not rcx
  596. rax = globals::base + 0x76BB; //lea rax, [0xFFFFFFFFFD15DB04]
  597. rax = ~rax; //not rax
  598. rcx *= rax; //imul rcx, rax
  599. rax = r8; //mov rax, r8
  600. rax >>= 0x26; //shr rax, 0x26
  601. r8 ^= rax; //xor r8, rax
  602. r8 += rcx; //add r8, rcx
  603. rax = r8; //mov rax, r8
  604. rax >>= 0x28; //shr rax, 0x28
  605. r8 ^= rax; //xor r8, rax
  606. rax = 0x3224CE0A9BEB6A6E; //mov rax, 0x3224CE0A9BEB6A6E
  607. r8 -= rax; //sub r8, rax
  608. return r8;
  609. }
  610. }
  611. }
  612. uintptr_t GetCmdTextArray()
  613. {
  614. const uint64_t mb = globals::base;
  615. 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;
  616. rcx = mem.Read<uintptr_t>(globals::base + 0x1193D390);
  617. if(!rcx)
  618. return rcx;
  619. r11 = globals::vaPeb; //mov r11, gs:[rdx]
  620. rdx = r11; //mov rdx, r11
  621. //failed to translate: mov [rsp+0xE0], r12
  622. rdx = _rotl64(rdx, 0x22); //rol rdx, 0x22
  623. rdx &= 0xF;
  624. switch(rdx) {
  625. case 0:
  626. {
  627. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x000000000536491B]
  628. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7DC5B]
  629. r15 = globals::base + 0x5E33; //lea r15, [0xFFFFFFFFF9B83A82]
  630. rax = rcx; //mov rax, rcx
  631. rax >>= 0x1B; //shr rax, 0x1B
  632. rcx ^= rax; //xor rcx, rax
  633. rax = rcx; //mov rax, rcx
  634. rax >>= 0x36; //shr rax, 0x36
  635. rcx ^= rax; //xor rcx, rax
  636. rax = 0xB5E3A5C14A756615; //mov rax, 0xB5E3A5C14A756615
  637. rcx ^= rax; //xor rcx, rax
  638. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  639. rax = r11; //mov rax, r11
  640. rax *= r15; //imul rax, r15
  641. rcx += rax; //add rcx, rax
  642. rax = rcx; //mov rax, rcx
  643. rax >>= 0x17; //shr rax, 0x17
  644. rcx ^= rax; //xor rcx, rax
  645. rax = rcx; //mov rax, rcx
  646. rax >>= 0x2E; //shr rax, 0x2E
  647. rcx ^= rax; //xor rcx, rax
  648. rcx += rbx; //add rcx, rbx
  649. rax = 0x451CDD50ED47051D; //mov rax, 0x451CDD50ED47051D
  650. rcx *= rax; //imul rcx, rax
  651. rax = rcx; //mov rax, rcx
  652. rax >>= 0x27; //shr rax, 0x27
  653. rcx ^= rax; //xor rcx, rax
  654. return rcx;
  655. }
  656. case 1:
  657. {
  658. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x0000000005364428]
  659. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7D768]
  660. rcx ^= rbx; //xor rcx, rbx
  661. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  662. rax = 0x3F5FF8759C0450AD; //mov rax, 0x3F5FF8759C0450AD
  663. rcx *= rax; //imul rcx, rax
  664. rax = 0x49224897BA23AD81; //mov rax, 0x49224897BA23AD81
  665. rcx *= rax; //imul rcx, rax
  666. rax = rcx; //mov rax, rcx
  667. rax >>= 0x26; //shr rax, 0x26
  668. rcx ^= rax; //xor rcx, rax
  669. rax = 0x9308B88C835A243; //mov rax, 0x9308B88C835A243
  670. rcx -= rax; //sub rcx, rax
  671. return rcx;
  672. }
  673. case 2:
  674. {
  675. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x0000000005364000]
  676. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7D340]
  677. r12 = globals::base + 0xC499; //lea r12, [0xFFFFFFFFF9B897C8]
  678. rcx ^= r11; //xor rcx, r11
  679. rcx ^= r12; //xor rcx, r12
  680. rcx += r11; //add rcx, r11
  681. rax = 0xDD209D02F3077017; //mov rax, 0xDD209D02F3077017
  682. rcx *= rax; //imul rcx, rax
  683. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  684. rax = rcx; //mov rax, rcx
  685. rax >>= 0x12; //shr rax, 0x12
  686. rcx ^= rax; //xor rcx, rax
  687. rax = rcx; //mov rax, rcx
  688. rax >>= 0x24; //shr rax, 0x24
  689. rcx ^= rax; //xor rcx, rax
  690. rax = 0x7B3DE336F351C129; //mov rax, 0x7B3DE336F351C129
  691. rcx -= rax; //sub rcx, rax
  692. rcx ^= rbx; //xor rcx, rbx
  693. return rcx;
  694. }
  695. case 3:
  696. {
  697. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x0000000005363C61]
  698. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7CF96]
  699. rax = 0x292A737D3A8A003D; //mov rax, 0x292A737D3A8A003D
  700. rcx *= rax; //imul rcx, rax
  701. rcx ^= r11; //xor rcx, r11
  702. rcx ^= r11; //xor rcx, r11
  703. rcx -= rbx; //sub rcx, rbx
  704. rax = rcx; //mov rax, rcx
  705. rax >>= 0x19; //shr rax, 0x19
  706. rcx ^= rax; //xor rcx, rax
  707. rax = rcx; //mov rax, rcx
  708. rax >>= 0x32; //shr rax, 0x32
  709. rcx ^= rax; //xor rcx, rax
  710. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  711. rdx = r11; //mov rdx, r11
  712. rdx = ~rdx; //not rdx
  713. rax = globals::base + 0x4F2A; //lea rax, [0xFFFFFFFFF9B81B00]
  714. rcx += rax; //add rcx, rax
  715. rcx += rdx; //add rcx, rdx
  716. rax = 0x1D53DC9394D6C68A; //mov rax, 0x1D53DC9394D6C68A
  717. rcx += rax; //add rcx, rax
  718. return rcx;
  719. }
  720. case 4:
  721. {
  722. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x000000000536382B]
  723. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7CB6B]
  724. rdi = globals::base + 0x46C0CD17; //lea rdi, [0x0000000040789876]
  725. rax = rcx; //mov rax, rcx
  726. rax >>= 0x10; //shr rax, 0x10
  727. rcx ^= rax; //xor rcx, rax
  728. rax = rcx; //mov rax, rcx
  729. rax >>= 0x20; //shr rax, 0x20
  730. rcx ^= rax; //xor rcx, rax
  731. rcx ^= r11; //xor rcx, r11
  732. rcx ^= rdi; //xor rcx, rdi
  733. rax = rcx; //mov rax, rcx
  734. rax >>= 0x17; //shr rax, 0x17
  735. rcx ^= rax; //xor rcx, rax
  736. rax = rcx; //mov rax, rcx
  737. rax >>= 0x2E; //shr rax, 0x2E
  738. rcx ^= rax; //xor rcx, rax
  739. rax = 0x2A27FA74C256E0E7; //mov rax, 0x2A27FA74C256E0E7
  740. rcx *= rax; //imul rcx, rax
  741. rcx += rbx; //add rcx, rbx
  742. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  743. rax = 0xE889A0595E16BFDB; //mov rax, 0xE889A0595E16BFDB
  744. rcx *= rax; //imul rcx, rax
  745. return rcx;
  746. }
  747. case 5:
  748. {
  749. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x0000000005363312]
  750. rdi = globals::base + 0x6CA3; //lea rdi, [0xFFFFFFFFF9B832F5]
  751. rax = 0x4694415E362AF97D; //mov rax, 0x4694415E362AF97D
  752. rcx *= rax; //imul rcx, rax
  753. rax = rcx; //mov rax, rcx
  754. rax >>= 0xE; //shr rax, 0x0E
  755. rcx ^= rax; //xor rcx, rax
  756. rax = rcx; //mov rax, rcx
  757. rax >>= 0x1C; //shr rax, 0x1C
  758. rcx ^= rax; //xor rcx, rax
  759. rax = rcx; //mov rax, rcx
  760. rax >>= 0x38; //shr rax, 0x38
  761. rcx ^= rax; //xor rcx, rax
  762. rax = 0x2A796B075D8038A1; //mov rax, 0x2A796B075D8038A1
  763. rcx ^= rax; //xor rcx, rax
  764. rcx += r11; //add rcx, r11
  765. rax = 0x3212ABD7EB1A3183; //mov rax, 0x3212ABD7EB1A3183
  766. rcx += rax; //add rcx, rax
  767. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  768. rax = r11; //mov rax, r11
  769. rax *= rdi; //imul rax, rdi
  770. rcx -= rax; //sub rcx, rax
  771. rax = rcx; //mov rax, rcx
  772. rax >>= 0x18; //shr rax, 0x18
  773. rcx ^= rax; //xor rcx, rax
  774. rax = rcx; //mov rax, rcx
  775. rax >>= 0x30; //shr rax, 0x30
  776. rcx ^= rax; //xor rcx, rax
  777. return rcx;
  778. }
  779. case 6:
  780. {
  781. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x0000000005362E43]
  782. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7C183]
  783. r12 = globals::base + 0x2407; //lea r12, [0xFFFFFFFFF9B7E57E]
  784. r13 = globals::base + 0xD54B; //lea r13, [0xFFFFFFFFF9B896B7]
  785. rax = rcx; //mov rax, rcx
  786. rax >>= 0x8; //shr rax, 0x08
  787. rcx ^= rax; //xor rcx, rax
  788. rax = rcx; //mov rax, rcx
  789. rax >>= 0x10; //shr rax, 0x10
  790. rcx ^= rax; //xor rcx, rax
  791. rax = rcx; //mov rax, rcx
  792. rax >>= 0x20; //shr rax, 0x20
  793. rcx ^= rax; //xor rcx, rax
  794. rax = rcx; //mov rax, rcx
  795. rax >>= 0xF; //shr rax, 0x0F
  796. rcx ^= rax; //xor rcx, rax
  797. rax = rcx; //mov rax, rcx
  798. rax >>= 0x1E; //shr rax, 0x1E
  799. rcx ^= rax; //xor rcx, rax
  800. rdx = rcx; //mov rdx, rcx
  801. rdx >>= 0x3C; //shr rdx, 0x3C
  802. rax = r12; //mov rax, r12
  803. rax = ~rax; //not rax
  804. rdx ^= rax; //xor rdx, rax
  805. rdx ^= r11; //xor rdx, r11
  806. rcx ^= rdx; //xor rcx, rdx
  807. rax = rbx + 0x86d9; //lea rax, [rbx+0x86D9]
  808. rax += r11; //add rax, r11
  809. rcx ^= rax; //xor rcx, rax
  810. rax = 0x394D31FBFC54D5C7; //mov rax, 0x394D31FBFC54D5C7
  811. rcx *= rax; //imul rcx, rax
  812. rax = r13; //mov rax, r13
  813. rax = ~rax; //not rax
  814. rax *= r11; //imul rax, r11
  815. rcx ^= rax; //xor rcx, rax
  816. rax = 0xF248AD144683687F; //mov rax, 0xF248AD144683687F
  817. rcx *= rax; //imul rcx, rax
  818. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  819. return rcx;
  820. }
  821. case 7:
  822. {
  823. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x000000000536298F]
  824. r15 = globals::base + 0xF2B7; //lea r15, [0xFFFFFFFFF9B8AF86]
  825. rdi = globals::base + 0x727BCC8E; //lea rdi, [0x000000006C338951]
  826. rcx += rdi; //add rcx, rdi
  827. rdx = r11; //mov rdx, r11
  828. rdx = ~rdx; //not rdx
  829. rax = rdx; //mov rax, rdx
  830. rax ^= r15; //xor rax, r15
  831. rdx -= rax; //sub rdx, rax
  832. rcx += rdx; //add rcx, rdx
  833. rax = rcx; //mov rax, rcx
  834. rax >>= 0x18; //shr rax, 0x18
  835. rcx ^= rax; //xor rcx, rax
  836. rax = rcx; //mov rax, rcx
  837. rax >>= 0x30; //shr rax, 0x30
  838. rcx ^= rax; //xor rcx, rax
  839. rax = 0x2B8B78BC1D92212A; //mov rax, 0x2B8B78BC1D92212A
  840. rcx -= rax; //sub rcx, rax
  841. rax = rcx; //mov rax, rcx
  842. rax >>= 0x17; //shr rax, 0x17
  843. rcx ^= rax; //xor rcx, rax
  844. rax = rcx; //mov rax, rcx
  845. rax >>= 0x2E; //shr rax, 0x2E
  846. rcx ^= rax; //xor rcx, rax
  847. rax = 0x49781D9754795626; //mov rax, 0x49781D9754795626
  848. rcx ^= rax; //xor rcx, rax
  849. rax = 0xE1A998C5EA9145DD; //mov rax, 0xE1A998C5EA9145DD
  850. rcx *= rax; //imul rcx, rax
  851. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  852. return rcx;
  853. }
  854. case 8:
  855. {
  856. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x0000000005362570]
  857. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7B8B0]
  858. rcx ^= r11; //xor rcx, r11
  859. rax = 0xD0FA4725C1F6A4DB; //mov rax, 0xD0FA4725C1F6A4DB
  860. rcx *= rax; //imul rcx, rax
  861. rcx += rbx; //add rcx, rbx
  862. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  863. rax = 0x2280D092AFB637A3; //mov rax, 0x2280D092AFB637A3
  864. rcx ^= rax; //xor rcx, rax
  865. rax = rcx; //mov rax, rcx
  866. rax >>= 0x21; //shr rax, 0x21
  867. rcx ^= rax; //xor rcx, rax
  868. rax = rcx; //mov rax, rcx
  869. rax >>= 0x1D; //shr rax, 0x1D
  870. rcx ^= rax; //xor rcx, rax
  871. rax = rcx; //mov rax, rcx
  872. rax >>= 0x3A; //shr rax, 0x3A
  873. rcx ^= rax; //xor rcx, rax
  874. return rcx;
  875. }
  876. case 9:
  877. {
  878. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x0000000005362140]
  879. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7B480]
  880. rdi = globals::base + 0xF805; //lea rdi, [0xFFFFFFFFF9B8AC74]
  881. rax = r11; //mov rax, r11
  882. rax *= rdi; //imul rax, rdi
  883. rcx -= rax; //sub rcx, rax
  884. rcx += r11; //add rcx, r11
  885. rax = globals::base + 0x34E2; //lea rax, [0xFFFFFFFFF9B7E8D3]
  886. rcx += rax; //add rcx, rax
  887. rax = 0xD670AE07CD87C44B; //mov rax, 0xD670AE07CD87C44B
  888. rcx *= rax; //imul rcx, rax
  889. rax = rcx; //mov rax, rcx
  890. rax >>= 0x11; //shr rax, 0x11
  891. rcx ^= rax; //xor rcx, rax
  892. rax = rcx; //mov rax, rcx
  893. rax >>= 0x22; //shr rax, 0x22
  894. rcx ^= rax; //xor rcx, rax
  895. rax = mem.Read<uintptr_t>(r10 + 0x15); //mov rax, [r10+0x15]
  896. rdx = 0x7DF246B4B47C04D; //mov rdx, 0x7DF246B4B47C04D
  897. rax *= rdx; //imul rax, rdx
  898. rcx *= rax; //imul rcx, rax
  899. rax = r11; //mov rax, r11
  900. rax -= rbx; //sub rax, rbx
  901. rax -= 0x3EA4E863; //sub rax, 0x3EA4E863
  902. rcx ^= rax; //xor rcx, rax
  903. rax = 0x6EAEB149F1BB523E; //mov rax, 0x6EAEB149F1BB523E
  904. rcx ^= rax; //xor rcx, rax
  905. return rcx;
  906. }
  907. case 10:
  908. {
  909. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x0000000005361DF0]
  910. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7B130]
  911. rcx += r11; //add rcx, r11
  912. rcx ^= rbx; //xor rcx, rbx
  913. rcx -= rbx; //sub rcx, rbx
  914. rax = 0xC2C77ADBEA06CC71; //mov rax, 0xC2C77ADBEA06CC71
  915. rcx *= rax; //imul rcx, rax
  916. rax = rcx; //mov rax, rcx
  917. rax >>= 0x20; //shr rax, 0x20
  918. rcx ^= rax; //xor rcx, rax
  919. rax = 0x6ABDE99A4C942C1D; //mov rax, 0x6ABDE99A4C942C1D
  920. rcx -= rax; //sub rcx, rax
  921. rax = rcx; //mov rax, rcx
  922. rax >>= 0xB; //shr rax, 0x0B
  923. rcx ^= rax; //xor rcx, rax
  924. rax = rcx; //mov rax, rcx
  925. rax >>= 0x16; //shr rax, 0x16
  926. rcx ^= rax; //xor rcx, rax
  927. rax = rcx; //mov rax, rcx
  928. rax >>= 0x2C; //shr rax, 0x2C
  929. rcx ^= rax; //xor rcx, rax
  930. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  931. return rcx;
  932. }
  933. case 11:
  934. {
  935. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x0000000005361A04]
  936. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7AD44]
  937. rax = rcx; //mov rax, rcx
  938. rax >>= 0xA; //shr rax, 0x0A
  939. rcx ^= rax; //xor rcx, rax
  940. rax = rcx; //mov rax, rcx
  941. rax >>= 0x14; //shr rax, 0x14
  942. rcx ^= rax; //xor rcx, rax
  943. rax = rcx; //mov rax, rcx
  944. rax >>= 0x28; //shr rax, 0x28
  945. rcx ^= rax; //xor rcx, rax
  946. rcx -= r11; //sub rcx, r11
  947. rax = rbx + 0x723d2a5a; //lea rax, [rbx+0x723D2A5A]
  948. rax += r11; //add rax, r11
  949. rcx ^= rax; //xor rcx, rax
  950. rax = 0x405646879A90A4B1; //mov rax, 0x405646879A90A4B1
  951. rcx *= rax; //imul rcx, rax
  952. rax = 0x7E1BE77430218FC2; //mov rax, 0x7E1BE77430218FC2
  953. rcx += rax; //add rcx, rax
  954. rax = 0xF28B8C5F9F41196A; //mov rax, 0xF28B8C5F9F41196A
  955. rcx ^= rax; //xor rcx, rax
  956. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  957. rax = rcx; //mov rax, rcx
  958. rax >>= 0xF; //shr rax, 0x0F
  959. rcx ^= rax; //xor rcx, rax
  960. rax = rcx; //mov rax, rcx
  961. rax >>= 0x1E; //shr rax, 0x1E
  962. rcx ^= rax; //xor rcx, rax
  963. rax = rcx; //mov rax, rcx
  964. rax >>= 0x3C; //shr rax, 0x3C
  965. rcx ^= rax; //xor rcx, rax
  966. return rcx;
  967. }
  968. case 12:
  969. {
  970. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x000000000536154E]
  971. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7A88E]
  972. r15 = globals::base + 0x339332F9; //lea r15, [0x000000002D4ADB76]
  973. rax = r11; //mov rax, r11
  974. rax *= r15; //imul rax, r15
  975. rcx -= rax; //sub rcx, rax
  976. rax = 0x3038E6AB6FEAABA9; //mov rax, 0x3038E6AB6FEAABA9
  977. rcx *= rax; //imul rcx, rax
  978. rcx ^= r11; //xor rcx, r11
  979. rcx += r11; //add rcx, r11
  980. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  981. rcx -= rbx; //sub rcx, rbx
  982. rax = rcx; //mov rax, rcx
  983. rax >>= 0x25; //shr rax, 0x25
  984. rcx ^= rax; //xor rcx, rax
  985. rcx += r11; //add rcx, r11
  986. return rcx;
  987. }
  988. case 13:
  989. {
  990. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r10, [0x00000000053611AC]
  991. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7A4EC]
  992. rax = globals::base + 0x45FE7DB0; //lea rax, [0x000000003FB62166]
  993. rax -= r11; //sub rax, r11
  994. rcx ^= rax; //xor rcx, rax
  995. rax = rbx + 0x44c85679; //lea rax, [rbx+0x44C85679]
  996. rax += r11; //add rax, r11
  997. rcx += rax; //add rcx, rax
  998. rcx *= mem.Read<uintptr_t>(r10 + 0x15); //imul rcx, [r10+0x15]
  999. rax = rcx; //mov rax, rcx
  1000. rax >>= 0x1B; //shr rax, 0x1B
  1001. rcx ^= rax; //xor rcx, rax
  1002. rax = rcx; //mov rax, rcx
  1003. rax >>= 0x36; //shr rax, 0x36
  1004. rcx ^= rax; //xor rcx, rax
  1005. rax = 0xDC51C6CA5ECBE269; //mov rax, 0xDC51C6CA5ECBE269
  1006. rcx *= rax; //imul rcx, rax
  1007. rax = rbx * 0xFFFFFFFFFFFFFFFE; //imul rax, rbx, 0xFFFFFFFFFFFFFFFE
  1008. rcx += rax; //add rcx, rax
  1009. rax = 0xA8C2E47322E167D3; //mov rax, 0xA8C2E47322E167D3
  1010. rcx -= r11; //sub rcx, r11
  1011. rcx -= 0x6842; //sub rcx, 0x6842
  1012. rcx ^= rax; //xor rcx, rax
  1013. return rcx;
  1014. }
  1015. case 14:
  1016. {
  1017. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x0000000005360DA6]
  1018. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B7A0E6]
  1019. rcx ^= rbx; //xor rcx, rbx
  1020. rax = 0xC2092D064BD7621B; //mov rax, 0xC2092D064BD7621B
  1021. rcx *= rax; //imul rcx, rax
  1022. rax = rcx; //mov rax, rcx
  1023. rax >>= 0xA; //shr rax, 0x0A
  1024. rcx ^= rax; //xor rcx, rax
  1025. rax = rcx; //mov rax, rcx
  1026. rax >>= 0x14; //shr rax, 0x14
  1027. rcx ^= rax; //xor rcx, rax
  1028. rax = rcx; //mov rax, rcx
  1029. rax >>= 0x28; //shr rax, 0x28
  1030. rcx ^= rax; //xor rcx, rax
  1031. rax = globals::base + 0xB084; //lea rax, [0xFFFFFFFFF9B84E13]
  1032. rcx += r11; //add rcx, r11
  1033. rcx += rax; //add rcx, rax
  1034. rax = r11; //mov rax, r11
  1035. rax -= rbx; //sub rax, rbx
  1036. rax -= 0xB9AC; //sub rax, 0xB9AC
  1037. rcx ^= rax; //xor rcx, rax
  1038. rax = 0x9883AEFFA28B11D0; //mov rax, 0x9883AEFFA28B11D0
  1039. rcx ^= rax; //xor rcx, rax
  1040. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  1041. rax = rcx; //mov rax, rcx
  1042. rax >>= 0x1D; //shr rax, 0x1D
  1043. rcx ^= rax; //xor rcx, rax
  1044. rax = rcx; //mov rax, rcx
  1045. rax >>= 0x3A; //shr rax, 0x3A
  1046. rcx ^= rax; //xor rcx, rax
  1047. return rcx;
  1048. }
  1049. case 15:
  1050. {
  1051. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6CB9); //mov r9, [0x00000000053608DE]
  1052. rbx = globals::base; //lea rbx, [0xFFFFFFFFF9B79C1E]
  1053. rcx ^= rbx; //xor rcx, rbx
  1054. rax = 0x62EE0D555FE38340; //mov rax, 0x62EE0D555FE38340
  1055. rcx -= rax; //sub rcx, rax
  1056. rax = rcx; //mov rax, rcx
  1057. rax >>= 0x24; //shr rax, 0x24
  1058. rcx ^= rax; //xor rcx, rax
  1059. rcx *= mem.Read<uintptr_t>(r9 + 0x15); //imul rcx, [r9+0x15]
  1060. rax = 0x8821DA37E07E4065; //mov rax, 0x8821DA37E07E4065
  1061. rcx *= rax; //imul rcx, rax
  1062. rcx += rbx; //add rcx, rbx
  1063. rax = rcx; //mov rax, rcx
  1064. rax >>= 0x14; //shr rax, 0x14
  1065. rcx ^= rax; //xor rcx, rax
  1066. rax = rcx; //mov rax, rcx
  1067. rax >>= 0x28; //shr rax, 0x28
  1068. rcx ^= rax; //xor rcx, rax
  1069. rax = 0x6535948A0956C067; //mov rax, 0x6535948A0956C067
  1070. rcx *= rax; //imul rcx, rax
  1071. return rcx;
  1072. }
  1073. }
  1074. }
  1075. uintptr_t decrypt_client_active()
  1076. {
  1077. const uint64_t mb = globals::base;
  1078. 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;
  1079. rax = mem.Read<uintptr_t>(rdx + 0xba2ddd0);
  1080. if(!rax)
  1081. return rax;
  1082. rbx = globals::vaPeb; //mov rbx, gs:[rcx]
  1083. //failed to translate: mov [rsp+0x68], rdi
  1084. rcx = rbx; //mov rcx, rbx
  1085. //failed to translate: mov [rsp+0x60], r12
  1086. rcx = _rotr64(rcx, 0x1D); //ror rcx, 0x1D
  1087. //failed to translate: mov [rsp+0x58], r13
  1088. rcx &= 0xF;
  1089. switch(rcx) {
  1090. case 0:
  1091. {
  1092. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009723E76]
  1093. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3D211]
  1094. rcx = 0x75A35BF5EC482D53; //mov rcx, 0x75A35BF5EC482D53
  1095. rax -= rcx; //sub rax, rcx
  1096. rcx = r11 + 0x39674f96; //lea rcx, [r11+0x39674F96]
  1097. rcx += rbx; //add rcx, rbx
  1098. rax ^= rcx; //xor rax, rcx
  1099. rcx = rax; //mov rcx, rax
  1100. rcx >>= 0x7; //shr rcx, 0x07
  1101. rax ^= rcx; //xor rax, rcx
  1102. rcx = rax; //mov rcx, rax
  1103. rcx >>= 0xE; //shr rcx, 0x0E
  1104. rax ^= rcx; //xor rax, rcx
  1105. rcx = rax; //mov rcx, rax
  1106. rcx >>= 0x1C; //shr rcx, 0x1C
  1107. rax ^= rcx; //xor rax, rcx
  1108. rcx = rax; //mov rcx, rax
  1109. rcx >>= 0x38; //shr rcx, 0x38
  1110. rax ^= rcx; //xor rax, rcx
  1111. rcx = 0x7ED1321242287D37; //mov rcx, 0x7ED1321242287D37
  1112. rax *= rcx; //imul rax, rcx
  1113. rcx = rax; //mov rcx, rax
  1114. rcx >>= 0x2; //shr rcx, 0x02
  1115. rax ^= rcx; //xor rax, rcx
  1116. rcx = rax; //mov rcx, rax
  1117. rcx >>= 0x4; //shr rcx, 0x04
  1118. rax ^= rcx; //xor rax, rcx
  1119. rcx = rax; //mov rcx, rax
  1120. rcx >>= 0x8; //shr rcx, 0x08
  1121. rax ^= rcx; //xor rax, rcx
  1122. rcx = rax; //mov rcx, rax
  1123. rcx >>= 0x10; //shr rcx, 0x10
  1124. rax ^= rcx; //xor rax, rcx
  1125. rcx = rax; //mov rcx, rax
  1126. rcx >>= 0x20; //shr rcx, 0x20
  1127. rax ^= rcx; //xor rax, rcx
  1128. rcx = rax; //mov rcx, rax
  1129. rcx >>= 0x22; //shr rcx, 0x22
  1130. rax ^= rcx; //xor rax, rcx
  1131. rax += r11; //add rax, r11
  1132. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1133. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1134. rcx ^= r10; //xor rcx, r10
  1135. rcx = ~rcx; //not rcx
  1136. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1137. return rax;
  1138. }
  1139. case 1:
  1140. {
  1141. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x000000000972396B]
  1142. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3CD06]
  1143. r12 = globals::base + 0x2B0E; //lea r12, [0xFFFFFFFFFDF3F7FD]
  1144. r13 = globals::base + 0x2982AAEB; //lea r13, [0x00000000277677CE]
  1145. rdx = rbx; //mov rdx, rbx
  1146. rdx = ~rdx; //not rdx
  1147. rdx ^= r12; //xor rdx, r12
  1148. rcx = r11; //mov rcx, r11
  1149. rcx -= rdx; //sub rcx, rdx
  1150. rax += rcx; //add rax, rcx
  1151. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1152. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1153. rcx ^= r10; //xor rcx, r10
  1154. rcx = ~rcx; //not rcx
  1155. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1156. rcx = rbx; //mov rcx, rbx
  1157. rcx ^= r13; //xor rcx, r13
  1158. rax -= rcx; //sub rax, rcx
  1159. rcx = rax; //mov rcx, rax
  1160. rcx >>= 0x5; //shr rcx, 0x05
  1161. rax ^= rcx; //xor rax, rcx
  1162. rcx = rax; //mov rcx, rax
  1163. rcx >>= 0xA; //shr rcx, 0x0A
  1164. rax ^= rcx; //xor rax, rcx
  1165. rcx = rax; //mov rcx, rax
  1166. rcx >>= 0x14; //shr rcx, 0x14
  1167. rax ^= rcx; //xor rax, rcx
  1168. rcx = rax; //mov rcx, rax
  1169. rcx >>= 0x28; //shr rcx, 0x28
  1170. rax ^= rcx; //xor rax, rcx
  1171. rcx = rax; //mov rcx, rax
  1172. rcx >>= 0x10; //shr rcx, 0x10
  1173. rax ^= rcx; //xor rax, rcx
  1174. rcx = rax; //mov rcx, rax
  1175. rcx >>= 0x20; //shr rcx, 0x20
  1176. rax ^= rcx; //xor rax, rcx
  1177. rcx = 0x395F229C1F64329; //mov rcx, 0x395F229C1F64329
  1178. rax *= rcx; //imul rax, rcx
  1179. rcx = 0x90CE9B89EFABB41; //mov rcx, 0x90CE9B89EFABB41
  1180. rax -= rcx; //sub rax, rcx
  1181. return rax;
  1182. }
  1183. case 2:
  1184. {
  1185. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x00000000097233F3]
  1186. r14 = globals::base + 0x30F0A65E; //lea r14, [0x000000002EE46DE0]
  1187. r15 = globals::base + 0x8EAC; //lea r15, [0xFFFFFFFFFDF45623]
  1188. rdx = rbx; //mov rdx, rbx
  1189. rdx = ~rdx; //not rdx
  1190. rax += r15; //add rax, r15
  1191. rcx = rbx; //mov rcx, rbx
  1192. rcx *= r14; //imul rcx, r14
  1193. rdx -= rcx; //sub rdx, rcx
  1194. rax += rdx; //add rax, rdx
  1195. rcx = 0xF7070315E5585D71; //mov rcx, 0xF7070315E5585D71
  1196. rax ^= rcx; //xor rax, rcx
  1197. rcx = 0x5C10EC95D52AE35C; //mov rcx, 0x5C10EC95D52AE35C
  1198. rax += rcx; //add rax, rcx
  1199. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1200. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1201. rcx ^= r10; //xor rcx, r10
  1202. rcx = ~rcx; //not rcx
  1203. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1204. rcx = rax; //mov rcx, rax
  1205. rcx >>= 0x9; //shr rcx, 0x09
  1206. rax ^= rcx; //xor rax, rcx
  1207. rcx = rax; //mov rcx, rax
  1208. rcx >>= 0x12; //shr rcx, 0x12
  1209. rax ^= rcx; //xor rax, rcx
  1210. rcx = rax; //mov rcx, rax
  1211. rcx >>= 0x24; //shr rcx, 0x24
  1212. rax ^= rcx; //xor rax, rcx
  1213. rcx = 0xEAF8DD4E7DAEE839; //mov rcx, 0xEAF8DD4E7DAEE839
  1214. rax *= rcx; //imul rax, rcx
  1215. rax -= rbx; //sub rax, rbx
  1216. return rax;
  1217. }
  1218. case 3:
  1219. {
  1220. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r9, [0x0000000009722F5F]
  1221. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3C2FA]
  1222. rcx = rax; //mov rcx, rax
  1223. rcx >>= 0x20; //shr rcx, 0x20
  1224. rax ^= rcx; //xor rax, rcx
  1225. rcx = 0x5EF0345657B7395; //mov rcx, 0x5EF0345657B7395
  1226. rax *= rcx; //imul rax, rcx
  1227. rcx = 0xACDBE6CC0EC7F1D6; //mov rcx, 0xACDBE6CC0EC7F1D6
  1228. rax ^= rcx; //xor rax, rcx
  1229. rax += rbx; //add rax, rbx
  1230. rcx = rax; //mov rcx, rax
  1231. rcx >>= 0x28; //shr rcx, 0x28
  1232. rax ^= rcx; //xor rax, rcx
  1233. rax ^= r11; //xor rax, r11
  1234. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1235. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1236. rcx ^= r9; //xor rcx, r9
  1237. rcx = ~rcx; //not rcx
  1238. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1239. rax += r11; //add rax, r11
  1240. return rax;
  1241. }
  1242. case 4:
  1243. {
  1244. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009722AF3]
  1245. r15 = globals::base + 0xA062; //lea r15, [0xFFFFFFFFFDF45EE4]
  1246. r12 = globals::base + 0x29D008DE; //lea r12, [0x0000000027C3C755]
  1247. rcx = 0x61F81B41A154355F; //mov rcx, 0x61F81B41A154355F
  1248. rax += rcx; //add rax, rcx
  1249. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1250. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1251. rcx ^= r10; //xor rcx, r10
  1252. rcx = ~rcx; //not rcx
  1253. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1254. rcx = 0x60C7116DFD4132B; //mov rcx, 0x60C7116DFD4132B
  1255. rax *= rcx; //imul rax, rcx
  1256. rcx = rax; //mov rcx, rax
  1257. rcx >>= 0x3; //shr rcx, 0x03
  1258. rax ^= rcx; //xor rax, rcx
  1259. rcx = rax; //mov rcx, rax
  1260. rcx >>= 0x6; //shr rcx, 0x06
  1261. rax ^= rcx; //xor rax, rcx
  1262. rcx = rax; //mov rcx, rax
  1263. rcx >>= 0xC; //shr rcx, 0x0C
  1264. rax ^= rcx; //xor rax, rcx
  1265. rcx = rax; //mov rcx, rax
  1266. rcx >>= 0x18; //shr rcx, 0x18
  1267. rax ^= rcx; //xor rax, rcx
  1268. rdx = rax; //mov rdx, rax
  1269. rdx >>= 0x30; //shr rdx, 0x30
  1270. rdx ^= rax; //xor rdx, rax
  1271. rax = rbx; //mov rax, rbx
  1272. rax *= r12; //imul rax, r12
  1273. rax += rdx; //add rax, rdx
  1274. rcx = rbx; //mov rcx, rbx
  1275. rcx *= r15; //imul rcx, r15
  1276. rax ^= rcx; //xor rax, rcx
  1277. rcx = rax; //mov rcx, rax
  1278. rcx >>= 0x6; //shr rcx, 0x06
  1279. rax ^= rcx; //xor rax, rcx
  1280. rcx = rax; //mov rcx, rax
  1281. rcx >>= 0xC; //shr rcx, 0x0C
  1282. rax ^= rcx; //xor rax, rcx
  1283. rcx = rax; //mov rcx, rax
  1284. rcx >>= 0x18; //shr rcx, 0x18
  1285. rax ^= rcx; //xor rax, rcx
  1286. rcx = rax; //mov rcx, rax
  1287. rcx >>= 0x30; //shr rcx, 0x30
  1288. rax ^= rcx; //xor rax, rcx
  1289. rcx = 0x7383B429035656CC; //mov rcx, 0x7383B429035656CC
  1290. rax -= rcx; //sub rax, rcx
  1291. return rax;
  1292. }
  1293. case 5:
  1294. {
  1295. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x00000000097225BD]
  1296. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3B958]
  1297. rcx = rax; //mov rcx, rax
  1298. rcx >>= 0x1C; //shr rcx, 0x1C
  1299. rax ^= rcx; //xor rax, rcx
  1300. rcx = rax; //mov rcx, rax
  1301. rcx >>= 0x38; //shr rcx, 0x38
  1302. rax ^= rcx; //xor rax, rcx
  1303. rcx = rax; //mov rcx, rax
  1304. rcx >>= 0xD; //shr rcx, 0x0D
  1305. rax ^= rcx; //xor rax, rcx
  1306. rcx = rax; //mov rcx, rax
  1307. rcx >>= 0x1A; //shr rcx, 0x1A
  1308. rax ^= rcx; //xor rax, rcx
  1309. rcx = rax; //mov rcx, rax
  1310. rcx >>= 0x34; //shr rcx, 0x34
  1311. rax ^= rcx; //xor rax, rcx
  1312. rcx = 0xFA0DDD2C604B9D1F; //mov rcx, 0xFA0DDD2C604B9D1F
  1313. rax *= rcx; //imul rax, rcx
  1314. rcx = globals::base + 0x46B0; //lea rcx, [0xFFFFFFFFFDF3FE1A]
  1315. rax -= rcx; //sub rax, rcx
  1316. rax += rbx; //add rax, rbx
  1317. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1318. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1319. rcx ^= r10; //xor rcx, r10
  1320. rcx = ~rcx; //not rcx
  1321. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1322. rcx = 0x64F0F35E29D4C7B9; //mov rcx, 0x64F0F35E29D4C7B9
  1323. rax *= rcx; //imul rax, rcx
  1324. rax -= r11; //sub rax, r11
  1325. rax += 0xFFFFFFFFFFFF24CA; //add rax, 0xFFFFFFFFFFFF24CA
  1326. rax += rbx; //add rax, rbx
  1327. rcx = 0x249EDB181C0475B9; //mov rcx, 0x249EDB181C0475B9
  1328. rax ^= rcx; //xor rax, rcx
  1329. return rax;
  1330. }
  1331. case 6:
  1332. {
  1333. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009722191]
  1334. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3B521]
  1335. rcx = rax; //mov rcx, rax
  1336. rcx >>= 0x10; //shr rcx, 0x10
  1337. rax ^= rcx; //xor rax, rcx
  1338. rcx = rax; //mov rcx, rax
  1339. rcx >>= 0x20; //shr rcx, 0x20
  1340. rax ^= rcx; //xor rax, rcx
  1341. rax += rbx; //add rax, rbx
  1342. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1343. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1344. rdx ^= r10; //xor rdx, r10
  1345. rcx = rbx; //mov rcx, rbx
  1346. rcx -= r11; //sub rcx, r11
  1347. r15 = 0xD29D6FF40A4A734D; //mov r15, 0xD29D6FF40A4A734D
  1348. rcx += r15; //add rcx, r15
  1349. rdx = ~rdx; //not rdx
  1350. rax += rcx; //add rax, rcx
  1351. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1352. rcx = rbx; //mov rcx, rbx
  1353. rcx -= r11; //sub rcx, r11
  1354. rcx -= 0x160C0564; //sub rcx, 0x160C0564
  1355. rax ^= rcx; //xor rax, rcx
  1356. rcx = rbx; //mov rcx, rbx
  1357. rcx = ~rcx; //not rcx
  1358. rcx -= r11; //sub rcx, r11
  1359. rcx -= 0x473E; //sub rcx, 0x473E
  1360. rax ^= rcx; //xor rax, rcx
  1361. rcx = 0xA4D2A49AD11FF335; //mov rcx, 0xA4D2A49AD11FF335
  1362. rax *= rcx; //imul rax, rcx
  1363. return rax;
  1364. }
  1365. case 7:
  1366. {
  1367. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009721CF3]
  1368. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3B08E]
  1369. rcx = 0x8A9DA3385FC38B18; //mov rcx, 0x8A9DA3385FC38B18
  1370. rax ^= rcx; //xor rax, rcx
  1371. rax ^= rbx; //xor rax, rbx
  1372. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1373. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1374. rdx ^= r10; //xor rdx, r10
  1375. rdx = ~rdx; //not rdx
  1376. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1377. rdx = rbx; //mov rdx, rbx
  1378. rcx = globals::base + 0x49AEB26D; //lea rcx, [0x0000000047A26221]
  1379. rdx = ~rdx; //not rdx
  1380. rcx = ~rcx; //not rcx
  1381. rdx *= rcx; //imul rdx, rcx
  1382. rax ^= rdx; //xor rax, rdx
  1383. rcx = rax; //mov rcx, rax
  1384. rcx >>= 0xF; //shr rcx, 0x0F
  1385. rax ^= rcx; //xor rax, rcx
  1386. rcx = rax; //mov rcx, rax
  1387. rcx >>= 0x1E; //shr rcx, 0x1E
  1388. rax ^= rcx; //xor rax, rcx
  1389. rcx = rax; //mov rcx, rax
  1390. rcx >>= 0x3C; //shr rcx, 0x3C
  1391. rax ^= rcx; //xor rax, rcx
  1392. rcx = 0xF4D742FA3C9800A5; //mov rcx, 0xF4D742FA3C9800A5
  1393. rax *= rcx; //imul rax, rcx
  1394. rcx = 0x10F2E1DC08054DCE; //mov rcx, 0x10F2E1DC08054DCE
  1395. rax ^= r11; //xor rax, r11
  1396. rax -= rcx; //sub rax, rcx
  1397. return rax;
  1398. }
  1399. case 8:
  1400. {
  1401. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x000000000972189D]
  1402. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3AC38]
  1403. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1404. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1405. rcx ^= r10; //xor rcx, r10
  1406. rcx = ~rcx; //not rcx
  1407. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1408. rcx = rax; //mov rcx, rax
  1409. rcx >>= 0x7; //shr rcx, 0x07
  1410. rax ^= rcx; //xor rax, rcx
  1411. rcx = rax; //mov rcx, rax
  1412. rcx >>= 0xE; //shr rcx, 0x0E
  1413. rax ^= rcx; //xor rax, rcx
  1414. rcx = rax; //mov rcx, rax
  1415. rcx >>= 0x1C; //shr rcx, 0x1C
  1416. rax ^= rcx; //xor rax, rcx
  1417. rcx = rax; //mov rcx, rax
  1418. rcx >>= 0x38; //shr rcx, 0x38
  1419. rax ^= rcx; //xor rax, rcx
  1420. rcx = 0x95279C81D5942D9; //mov rcx, 0x95279C81D5942D9
  1421. rax *= rcx; //imul rax, rcx
  1422. rcx = 0x43F7B4F4DCCCEAA1; //mov rcx, 0x43F7B4F4DCCCEAA1
  1423. rax -= r11; //sub rax, r11
  1424. rax -= rcx; //sub rax, rcx
  1425. rax ^= rbx; //xor rax, rbx
  1426. rax ^= r11; //xor rax, r11
  1427. rcx = 0x41A42223B53D6ABF; //mov rcx, 0x41A42223B53D6ABF
  1428. rax *= rcx; //imul rax, rcx
  1429. return rax;
  1430. }
  1431. case 9:
  1432. {
  1433. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r9, [0x0000000009721489]
  1434. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3A824]
  1435. rax ^= r11; //xor rax, r11
  1436. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1437. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1438. rcx ^= r9; //xor rcx, r9
  1439. rcx = ~rcx; //not rcx
  1440. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1441. rax += rbx; //add rax, rbx
  1442. rax ^= rbx; //xor rax, rbx
  1443. rax -= r11; //sub rax, r11
  1444. rcx = 0x4B6230D25E9BA161; //mov rcx, 0x4B6230D25E9BA161
  1445. rax *= rcx; //imul rax, rcx
  1446. rax += rbx; //add rax, rbx
  1447. rcx = rax; //mov rcx, rax
  1448. rcx >>= 0xE; //shr rcx, 0x0E
  1449. rax ^= rcx; //xor rax, rcx
  1450. rcx = rax; //mov rcx, rax
  1451. rcx >>= 0x1C; //shr rcx, 0x1C
  1452. rax ^= rcx; //xor rax, rcx
  1453. rcx = rax; //mov rcx, rax
  1454. rcx >>= 0x38; //shr rcx, 0x38
  1455. rax ^= rcx; //xor rax, rcx
  1456. return rax;
  1457. }
  1458. case 10:
  1459. {
  1460. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009720FDA]
  1461. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3A36A]
  1462. r15 = globals::base + 0x2BB81C0C; //lea r15, [0x0000000029ABBF5F]
  1463. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1464. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1465. rcx ^= r10; //xor rcx, r10
  1466. rcx = ~rcx; //not rcx
  1467. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1468. rcx = rbx; //mov rcx, rbx
  1469. rcx -= r11; //sub rcx, r11
  1470. rcx += 0xFFFFFFFFFFFFCAD7; //add rcx, 0xFFFFFFFFFFFFCAD7
  1471. rax += rcx; //add rax, rcx
  1472. rcx = rbx; //mov rcx, rbx
  1473. rcx = ~rcx; //not rcx
  1474. rcx += r15; //add rcx, r15
  1475. rax ^= rcx; //xor rax, rcx
  1476. rcx = rax; //mov rcx, rax
  1477. rcx >>= 0x12; //shr rcx, 0x12
  1478. rax ^= rcx; //xor rax, rcx
  1479. rcx = rax; //mov rcx, rax
  1480. rcx >>= 0x24; //shr rcx, 0x24
  1481. rax ^= rcx; //xor rax, rcx
  1482. rdx = rbx; //mov rdx, rbx
  1483. rcx = globals::base + 0xEF52; //lea rcx, [0xFFFFFFFFFDF49141]
  1484. rdx = ~rdx; //not rdx
  1485. rax += rcx; //add rax, rcx
  1486. rax += rdx; //add rax, rdx
  1487. rcx = 0x6763BC8B6D17752D; //mov rcx, 0x6763BC8B6D17752D
  1488. rax *= rcx; //imul rax, rcx
  1489. rcx = 0x8BEF7389669EF866; //mov rcx, 0x8BEF7389669EF866
  1490. rax ^= rcx; //xor rax, rcx
  1491. return rax;
  1492. }
  1493. case 11:
  1494. {
  1495. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x0000000009720AC7]
  1496. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1497. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1498. rcx ^= r10; //xor rcx, r10
  1499. rcx = ~rcx; //not rcx
  1500. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1501. rax ^= rbx; //xor rax, rbx
  1502. rcx = rax; //mov rcx, rax
  1503. rcx >>= 0x1F; //shr rcx, 0x1F
  1504. rax ^= rcx; //xor rax, rcx
  1505. rcx = rax; //mov rcx, rax
  1506. rcx >>= 0x3E; //shr rcx, 0x3E
  1507. rax ^= rcx; //xor rax, rcx
  1508. rdx = rbx; //mov rdx, rbx
  1509. rdx = ~rdx; //not rdx
  1510. rcx = globals::base + 0x923A; //lea rcx, [0xFFFFFFFFFDF42E7E]
  1511. rcx = ~rcx; //not rcx
  1512. rdx += rcx; //add rdx, rcx
  1513. rax ^= rdx; //xor rax, rdx
  1514. rax += rbx; //add rax, rbx
  1515. rcx = 0x9FC5A5033F4BA222; //mov rcx, 0x9FC5A5033F4BA222
  1516. rax ^= rcx; //xor rax, rcx
  1517. rcx = 0xEE85007B158F0715; //mov rcx, 0xEE85007B158F0715
  1518. rax *= rcx; //imul rax, rcx
  1519. rcx = 0x237F4FB43D19B0AB; //mov rcx, 0x237F4FB43D19B0AB
  1520. rax ^= rcx; //xor rax, rcx
  1521. return rax;
  1522. }
  1523. case 12:
  1524. {
  1525. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x00000000097205F7]
  1526. r11 = globals::base + 0x12A67ACE; //lea r11, [0x00000000109A1454]
  1527. rcx = 0x1A8D56D056CAA6AD; //mov rcx, 0x1A8D56D056CAA6AD
  1528. rax *= rcx; //imul rax, rcx
  1529. rcx = r11; //mov rcx, r11
  1530. rcx = ~rcx; //not rcx
  1531. rcx -= rbx; //sub rcx, rbx
  1532. rax ^= rcx; //xor rax, rcx
  1533. rax ^= rbx; //xor rax, rbx
  1534. rcx = 0xCF3780F20368ADFF; //mov rcx, 0xCF3780F20368ADFF
  1535. rax *= rcx; //imul rax, rcx
  1536. rcx = rax; //mov rcx, rax
  1537. rcx >>= 0x15; //shr rcx, 0x15
  1538. rax ^= rcx; //xor rax, rcx
  1539. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1540. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1541. rcx = rax; //mov rcx, rax
  1542. rdx ^= r10; //xor rdx, r10
  1543. rcx >>= 0x2A; //shr rcx, 0x2A
  1544. rax ^= rcx; //xor rax, rcx
  1545. rdx = ~rdx; //not rdx
  1546. rax *= mem.Read<uintptr_t>(rdx + 0xf); //imul rax, [rdx+0x0F]
  1547. rcx = 0x620FE8A3984FA9A2; //mov rcx, 0x620FE8A3984FA9A2
  1548. rax ^= rcx; //xor rax, rcx
  1549. rax += rbx; //add rax, rbx
  1550. return rax;
  1551. }
  1552. case 13:
  1553. {
  1554. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r9, [0x000000000972026B]
  1555. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF39606]
  1556. rax += r11; //add rax, r11
  1557. rcx = rax; //mov rcx, rax
  1558. rcx >>= 0x10; //shr rcx, 0x10
  1559. rax ^= rcx; //xor rax, rcx
  1560. rcx = rax; //mov rcx, rax
  1561. rcx >>= 0x20; //shr rcx, 0x20
  1562. rax ^= rcx; //xor rax, rcx
  1563. rcx = 0x153249CC4096DEBB; //mov rcx, 0x153249CC4096DEBB
  1564. rax += rcx; //add rax, rcx
  1565. rax += rbx; //add rax, rbx
  1566. rax ^= r11; //xor rax, r11
  1567. rcx = 0x3FEF9376461CD77C; //mov rcx, 0x3FEF9376461CD77C
  1568. rax += rcx; //add rax, rcx
  1569. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1570. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1571. rcx ^= r9; //xor rcx, r9
  1572. rcx = ~rcx; //not rcx
  1573. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1574. rcx = 0xCD5C890FC6052E0B; //mov rcx, 0xCD5C890FC6052E0B
  1575. rax *= rcx; //imul rax, rcx
  1576. return rax;
  1577. }
  1578. case 14:
  1579. {
  1580. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x000000000971FD70]
  1581. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF3910B]
  1582. r12 = globals::base + 0x2858; //lea r12, [0xFFFFFFFFFDF3B941]
  1583. r13 = globals::base + 0xB818; //lea r13, [0xFFFFFFFFFDF448F4]
  1584. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1585. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1586. rcx ^= r10; //xor rcx, r10
  1587. rcx = ~rcx; //not rcx
  1588. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1589. rax -= r11; //sub rax, r11
  1590. rcx = rax; //mov rcx, rax
  1591. rdx = rbx; //mov rdx, rbx
  1592. rdx *= r13; //imul rdx, r13
  1593. rcx >>= 0x28; //shr rcx, 0x28
  1594. rdx ^= rcx; //xor rdx, rcx
  1595. rax ^= rdx; //xor rax, rdx
  1596. rcx = 0x51E63BDB2878DA3D; //mov rcx, 0x51E63BDB2878DA3D
  1597. rax *= rcx; //imul rax, rcx
  1598. rcx = rax; //mov rcx, rax
  1599. rcx >>= 0x17; //shr rcx, 0x17
  1600. rax ^= rcx; //xor rax, rcx
  1601. rcx = globals::base + 0x54FCAA3A; //lea rcx, [0x0000000052F0382A]
  1602. rdx = rax; //mov rdx, rax
  1603. rcx = ~rcx; //not rcx
  1604. rdx >>= 0x2E; //shr rdx, 0x2E
  1605. rcx ^= rbx; //xor rcx, rbx
  1606. rax ^= rdx; //xor rax, rdx
  1607. rax -= rcx; //sub rax, rcx
  1608. rcx = rbx; //mov rcx, rbx
  1609. rcx ^= r12; //xor rcx, r12
  1610. rax -= rcx; //sub rax, rcx
  1611. return rax;
  1612. }
  1613. case 15:
  1614. {
  1615. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6C5E); //mov r10, [0x000000000971F945]
  1616. r11 = globals::base; //lea r11, [0xFFFFFFFFFDF38CE0]
  1617. r12 = globals::base + 0x6D7996B9; //lea r12, [0x000000006B6D2377]
  1618. rax += r11; //add rax, r11
  1619. rcx = rax; //mov rcx, rax
  1620. rcx >>= 0x16; //shr rcx, 0x16
  1621. rax ^= rcx; //xor rax, rcx
  1622. rcx = rax; //mov rcx, rax
  1623. rcx >>= 0x2C; //shr rcx, 0x2C
  1624. rax ^= rcx; //xor rax, rcx
  1625. rcx = r12; //mov rcx, r12
  1626. rcx = ~rcx; //not rcx
  1627. rcx *= rbx; //imul rcx, rbx
  1628. rax += rcx; //add rax, rcx
  1629. rdx = 0xEEC920FB0911427A; //mov rdx, 0xEEC920FB0911427A
  1630. rax += rdx; //add rax, rdx
  1631. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1632. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1633. rcx ^= r10; //xor rcx, r10
  1634. rcx = ~rcx; //not rcx
  1635. rax *= mem.Read<uintptr_t>(rcx + 0xf); //imul rax, [rcx+0x0F]
  1636. rcx = globals::base + 0x9A06; //lea rcx, [0xFFFFFFFFFDF422FD]
  1637. rcx = ~rcx; //not rcx
  1638. rax += rcx; //add rax, rcx
  1639. rcx = 0xC2732136FBDEB5CD; //mov rcx, 0xC2732136FBDEB5CD
  1640. rax -= rbx; //sub rax, rbx
  1641. rax ^= rcx; //xor rax, rcx
  1642. rcx = 0x8A516BBDDE1E408F; //mov rcx, 0x8A516BBDDE1E408F
  1643. rax *= rcx; //imul rax, rcx
  1644. return rax;
  1645. }
  1646. }
  1647. }
  1648. uintptr_t decrypt_bone_base()
  1649. {
  1650. uint64_t mb = base_address;
  1651. 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;
  1652.  
  1653. rdx = mem.Read<uintptr_t>(globals::base + 0x11C5EA48);
  1654. if(!rdx)
  1655. return rdx;
  1656.  
  1657. r11 = globals::vaPeb; //mov r11, gs:[rax]
  1658. rax = r11; //mov rax, r11
  1659. rax >>= 0x13; //shr rax, 0x13
  1660. rax &= 0xF;
  1661.  
  1662. switch(rax)
  1663. {
  1664. case 0:
  1665. {
  1666. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x000000000774A756]
  1667. r12 = globals::base + 0x8C93; //lea r12, [0xFFFFFFFFFBF6C6B5]
  1668. rax = r12; //mov rax, r12
  1669. rax -= r11; //sub rax, r11
  1670. rdx ^= rax; //xor rdx, rax
  1671. rax = rdx; //mov rax, rdx
  1672. rax >>= 0x15; //shr rax, 0x15
  1673. rdx ^= rax; //xor rdx, rax
  1674. rax = rdx; //mov rax, rdx
  1675. rax >>= 0x2A; //shr rax, 0x2A
  1676. rdx ^= rax; //xor rdx, rax
  1677. rdx += r11; //add rdx, r11
  1678. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1679. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1680. rax ^= r10; //xor rax, r10
  1681. rax = ~rax; //not rax
  1682. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1683. rax = globals::base; //lea rax, [0xFFFFFFFFFBF6369D]
  1684. rdx ^= rax; //xor rdx, rax
  1685. rax = 0x860534C8C01FEA7B; //mov rax, 0x860534C8C01FEA7B
  1686. rdx *= rax; //imul rdx, rax
  1687. rax = 0xEE334BF3EC572D68; //mov rax, 0xEE334BF3EC572D68
  1688. rdx ^= rax; //xor rdx, rax
  1689. return rdx;
  1690. }
  1691. case 1:
  1692. {
  1693. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x000000000774A314]
  1694. r12 = globals::base + 0xDF5D; //lea r12, [0xFFFFFFFFFBF71531]
  1695. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1696. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1697. rax ^= r10; //xor rax, r10
  1698. rax = ~rax; //not rax
  1699. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1700. rax = 0x8A4B98169395E686; //mov rax, 0x8A4B98169395E686
  1701. rdx ^= rax; //xor rdx, rax
  1702. rax = 0xC3957EB9F84EC5AF; //mov rax, 0xC3957EB9F84EC5AF
  1703. rdx *= rax; //imul rdx, rax
  1704. rax = rdx; //mov rax, rdx
  1705. rax >>= 0xE; //shr rax, 0x0E
  1706. rdx ^= rax; //xor rdx, rax
  1707. rax = rdx; //mov rax, rdx
  1708. rax >>= 0x1C; //shr rax, 0x1C
  1709. rdx ^= rax; //xor rdx, rax
  1710. rax = rdx; //mov rax, rdx
  1711. rax >>= 0x38; //shr rax, 0x38
  1712. rdx ^= rax; //xor rdx, rax
  1713. rax = globals::base + 0x31CB; //lea rax, [0xFFFFFFFFFBF66372]
  1714. rax -= r11; //sub rax, r11
  1715. rdx += rax; //add rdx, rax
  1716. rax = rdx; //mov rax, rdx
  1717. rax >>= 0xD; //shr rax, 0x0D
  1718. rdx ^= rax; //xor rdx, rax
  1719. rax = rdx; //mov rax, rdx
  1720. rax >>= 0x1A; //shr rax, 0x1A
  1721. rdx ^= rax; //xor rdx, rax
  1722. rax = rdx; //mov rax, rdx
  1723. rax >>= 0x34; //shr rax, 0x34
  1724. rdx ^= rax; //xor rdx, rax
  1725. rax = r12; //mov rax, r12
  1726. rax = ~rax; //not rax
  1727. rax ^= r11; //xor rax, r11
  1728. rdx ^= rax; //xor rdx, rax
  1729. return rdx;
  1730. }
  1731. case 2:
  1732. {
  1733. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007749E09]
  1734. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1735. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1736. rax ^= r10; //xor rax, r10
  1737. rax = ~rax; //not rax
  1738. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1739. rcx = globals::base + 0x47C2AE1B; //lea rcx, [0x0000000043B8DEC5]
  1740. rax = rcx; //mov rax, rcx
  1741. rax = ~rax; //not rax
  1742. rax ^= r11; //xor rax, r11
  1743. rax += r11; //add rax, r11
  1744. rdx += rax; //add rdx, rax
  1745. rax = 0x94073D91C803188D; //mov rax, 0x94073D91C803188D
  1746. rdx ^= rax; //xor rdx, rax
  1747. rax = 0x2EEA8A0831CE333B; //mov rax, 0x2EEA8A0831CE333B
  1748. rdx *= rax; //imul rdx, rax
  1749. rdx += r11; //add rdx, r11
  1750. rax = rdx; //mov rax, rdx
  1751. rax >>= 0x13; //shr rax, 0x13
  1752. rdx ^= rax; //xor rdx, rax
  1753. rax = rdx; //mov rax, rdx
  1754. rax >>= 0x26; //shr rax, 0x26
  1755. rdx ^= rax; //xor rdx, rax
  1756. rax = 0xD4E2CCE5B7959CA0; //mov rax, 0xD4E2CCE5B7959CA0
  1757. rdx ^= rax; //xor rdx, rax
  1758. return rdx;
  1759. }
  1760. case 3:
  1761. {
  1762. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r9, [0x0000000007749A58]
  1763. r12 = globals::base + 0x114B; //lea r12, [0xFFFFFFFFFBF63E63]
  1764. rax = rdx; //mov rax, rdx
  1765. rax >>= 0x13; //shr rax, 0x13
  1766. rdx ^= rax; //xor rdx, rax
  1767. rax = rdx; //mov rax, rdx
  1768. rax >>= 0x26; //shr rax, 0x26
  1769. rdx ^= rax; //xor rdx, rax
  1770. rax = rdx; //mov rax, rdx
  1771. rax >>= 0x24; //shr rax, 0x24
  1772. rdx ^= rax; //xor rdx, rax
  1773. rax = 0x764F15DD269101D3; //mov rax, 0x764F15DD269101D3
  1774. rdx *= rax; //imul rdx, rax
  1775. rax = 0x34E81942B113C230; //mov rax, 0x34E81942B113C230
  1776. rdx -= rax; //sub rdx, rax
  1777. rax = 0x13805FC46F4FC36A; //mov rax, 0x13805FC46F4FC36A
  1778. rdx += rax; //add rdx, rax
  1779. rax = r11; //mov rax, r11
  1780. rax -= globals::base; //sub rax, [rbp-0x50] -- didn't find trace -> use base
  1781. rax += 0xFFFFFFFFFFFF85F3; //add rax, 0xFFFFFFFFFFFF85F3
  1782. rdx += rax; //add rdx, rax
  1783. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1784. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1785. rax ^= r9; //xor rax, r9
  1786. rax = ~rax; //not rax
  1787. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1788. rax = r11; //mov rax, r11
  1789. rax ^= r12; //xor rax, r12
  1790. rdx ^= rax; //xor rdx, rax
  1791. return rdx;
  1792. }
  1793. case 4:
  1794. {
  1795. r9 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r9, [0x00000000077494E1]
  1796. rax = rdx; //mov rax, rdx
  1797. rax >>= 0x11; //shr rax, 0x11
  1798. rdx ^= rax; //xor rdx, rax
  1799. rax = rdx; //mov rax, rdx
  1800. rax >>= 0x22; //shr rax, 0x22
  1801. rdx ^= rax; //xor rdx, rax
  1802. rax = 0x2CFB6FB2F3BAD3C; //mov rax, 0x2CFB6FB2F3BAD3C
  1803. rdx -= rax; //sub rdx, rax
  1804. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1805. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1806. rax ^= r9; //xor rax, r9
  1807. rax = ~rax; //not rax
  1808. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1809. rax = 0xEED0F28134CE8447; //mov rax, 0xEED0F28134CE8447
  1810. rdx *= rax; //imul rdx, rax
  1811. rax = 0x52D4170A67BFFCB2; //mov rax, 0x52D4170A67BFFCB2
  1812. rdx ^= rax; //xor rdx, rax
  1813. rdx += r11; //add rdx, r11
  1814. rax = rdx; //mov rax, rdx
  1815. rax >>= 0x16; //shr rax, 0x16
  1816. rdx ^= rax; //xor rdx, rax
  1817. rax = rdx; //mov rax, rdx
  1818. rax >>= 0x2C; //shr rax, 0x2C
  1819. rdx ^= rax; //xor rdx, rax
  1820. rdx ^= r11; //xor rdx, r11
  1821. return rdx;
  1822. }
  1823. case 5:
  1824. {
  1825. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007748F3E]
  1826. r12 = globals::base + 0x654BDD13; //lea r12, [0x000000006141FF0C]
  1827. rax = r12; //mov rax, r12
  1828. rax = ~rax; //not rax
  1829. rax += 1; //inc rax
  1830. rax += r11; //add rax, r11
  1831. rdx += rax; //add rdx, rax
  1832. rax = 0x4A2AFA53025C5181; //mov rax, 0x4A2AFA53025C5181
  1833. rdx *= rax; //imul rdx, rax
  1834. rax = rdx; //mov rax, rdx
  1835. rax >>= 0x28; //shr rax, 0x28
  1836. rdx ^= rax; //xor rdx, rax
  1837. rax = globals::base; //lea rax, [0xFFFFFFFFFBF61ED1]
  1838. rcx = rax + 0xa045; //lea rcx, [rax+0xA045]
  1839. rax += 0x19B7DBCB; //add rax, 0x19B7DBCB
  1840. rax += r11; //add rax, r11
  1841. rcx += r11; //add rcx, r11
  1842. rcx ^= rax; //xor rcx, rax
  1843. rdx ^= rcx; //xor rdx, rcx
  1844. rax = 0x574A3A5B7408079B; //mov rax, 0x574A3A5B7408079B
  1845. rdx *= rax; //imul rdx, rax
  1846. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1847. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1848. rax ^= r10; //xor rax, r10
  1849. rax = ~rax; //not rax
  1850. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1851. return rdx;
  1852. }
  1853. case 6:
  1854. {
  1855. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007748B47]
  1856. r12 = globals::base + 0x4951; //lea r12, [0xFFFFFFFFFBF66753]
  1857. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1858. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1859. rax ^= r10; //xor rax, r10
  1860. rax = ~rax; //not rax
  1861. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1862. rdx += r11; //add rdx, r11
  1863. rax = r11; //mov rax, r11
  1864. rax *= r12; //imul rax, r12
  1865. rdx += rax; //add rdx, rax
  1866. rcx = globals::base; //lea rcx, [0xFFFFFFFFFBF61C6B]
  1867. rax = rcx + 0x1d37b933; //lea rax, [rcx+0x1D37B933]
  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. rdx ^= rcx; //xor rdx, rcx
  1882. rax = rdx; //mov rax, rdx
  1883. rax >>= 0x3; //shr rax, 0x03
  1884. rdx ^= rax; //xor rdx, rax
  1885. rax = rdx; //mov rax, rdx
  1886. rax >>= 0x6; //shr rax, 0x06
  1887. rdx ^= rax; //xor rdx, rax
  1888. rax = rdx; //mov rax, rdx
  1889. rax >>= 0xC; //shr rax, 0x0C
  1890. rdx ^= rax; //xor rdx, rax
  1891. rax = rdx; //mov rax, rdx
  1892. rax >>= 0x18; //shr rax, 0x18
  1893. rdx ^= rax; //xor rdx, rax
  1894. rax = rdx; //mov rax, rdx
  1895. rax >>= 0x30; //shr rax, 0x30
  1896. rdx ^= rax; //xor rdx, rax
  1897. return rdx;
  1898. }
  1899. case 7:
  1900. {
  1901. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007748751]
  1902. rax = globals::base; //lea rax, [0xFFFFFFFFFBF618E1]
  1903. rdx += rax; //add rdx, rax
  1904. rax = 0x5F80490A38DB3901; //mov rax, 0x5F80490A38DB3901
  1905. rdx ^= rax; //xor rdx, rax
  1906. rax = 0x4EC9DC6A5902297D; //mov rax, 0x4EC9DC6A5902297D
  1907. rdx -= rax; //sub rdx, rax
  1908. rax = rdx; //mov rax, rdx
  1909. rax >>= 0x25; //shr rax, 0x25
  1910. rdx ^= rax; //xor rdx, rax
  1911. rcx = globals::base + 0xCEFB; //lea rcx, [0xFFFFFFFFFBF6E8ED]
  1912. rax = r11; //mov rax, r11
  1913. rax ^= rcx; //xor rax, rcx
  1914. rdx += rax; //add rdx, rax
  1915. rax = 0x92B34BC27C367071; //mov rax, 0x92B34BC27C367071
  1916. rdx *= rax; //imul rdx, rax
  1917. rdx -= r11; //sub rdx, r11
  1918. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1919. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1920. rax ^= r10; //xor rax, r10
  1921. rax = ~rax; //not rax
  1922. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1923. return rdx;
  1924. }
  1925. case 8:
  1926. {
  1927. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x000000000774831B]
  1928. rcx = globals::base + 0x5723; //lea rcx, [0xFFFFFFFFFBF66C97]
  1929. rax = 0xE62DA6375F493113; //mov rax, 0xE62DA6375F493113
  1930. rdx *= rax; //imul rdx, rax
  1931. rax = globals::base; //lea rax, [0xFFFFFFFFFBF61346]
  1932. rdx -= rax; //sub rdx, rax
  1933. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1934. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1935. rax ^= r10; //xor rax, r10
  1936. rax = ~rax; //not rax
  1937. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1938. rdx -= r11; //sub rdx, r11
  1939. rax = rdx; //mov rax, rdx
  1940. rax >>= 0xF; //shr rax, 0x0F
  1941. rdx ^= rax; //xor rdx, rax
  1942. rax = rdx; //mov rax, rdx
  1943. rax >>= 0x1E; //shr rax, 0x1E
  1944. rdx ^= rax; //xor rdx, rax
  1945. rax = rdx; //mov rax, rdx
  1946. rax >>= 0x3C; //shr rax, 0x3C
  1947. rdx ^= rax; //xor rdx, rax
  1948. rax = rdx; //mov rax, rdx
  1949. rax >>= 0x3; //shr rax, 0x03
  1950. rdx ^= rax; //xor rdx, rax
  1951. rax = rdx; //mov rax, rdx
  1952. rax >>= 0x6; //shr rax, 0x06
  1953. rdx ^= rax; //xor rdx, rax
  1954. rax = rdx; //mov rax, rdx
  1955. rax >>= 0xC; //shr rax, 0x0C
  1956. rdx ^= rax; //xor rdx, rax
  1957. rax = rdx; //mov rax, rdx
  1958. rax >>= 0x18; //shr rax, 0x18
  1959. rdx ^= rax; //xor rdx, rax
  1960. rax = rdx; //mov rax, rdx
  1961. rax >>= 0x30; //shr rax, 0x30
  1962. rdx ^= rax; //xor rdx, rax
  1963. rax = globals::base; //lea rax, [0xFFFFFFFFFBF611B8]
  1964. rax += 0xFAB2; //add rax, 0xFAB2
  1965. rax += r11; //add rax, r11
  1966. rdx ^= rax; //xor rdx, rax
  1967. rax = r11; //mov rax, r11
  1968. rax ^= rcx; //xor rax, rcx
  1969. rdx ^= rax; //xor rdx, rax
  1970. return rdx;
  1971. }
  1972. case 9:
  1973. {
  1974. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007747DD3]
  1975. rax = 0; //and rax, 0xFFFFFFFFC0000000
  1976. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  1977. rax ^= r10; //xor rax, r10
  1978. rax = ~rax; //not rax
  1979. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  1980. rax = globals::base; //lea rax, [0xFFFFFFFFFBF60FED]
  1981. rcx = rax + 0x429d; //lea rcx, [rax+0x429D]
  1982. rax += 0xF1EC; //add rax, 0xF1EC
  1983. rax += r11; //add rax, r11
  1984. rcx += r11; //add rcx, r11
  1985. rdx += rcx; //add rdx, rcx
  1986. rdx ^= rax; //xor rdx, rax
  1987. rax = globals::base + 0x5304B0E6; //lea rax, [0x000000004EFAC0A9]
  1988. rdx ^= r11; //xor rdx, r11
  1989. rdx ^= rax; //xor rdx, rax
  1990. rax = rdx; //mov rax, rdx
  1991. rax >>= 0x22; //shr rax, 0x22
  1992. rdx ^= rax; //xor rdx, rax
  1993. rax = 0xEE899EDDAF56550; //mov rax, 0xEE899EDDAF56550
  1994. rdx ^= rax; //xor rdx, rax
  1995. rax = rdx; //mov rax, rdx
  1996. rax >>= 0xE; //shr rax, 0x0E
  1997. rdx ^= rax; //xor rdx, rax
  1998. rax = rdx; //mov rax, rdx
  1999. rax >>= 0x1C; //shr rax, 0x1C
  2000. rdx ^= rax; //xor rdx, rax
  2001. rax = rdx; //mov rax, rdx
  2002. rax >>= 0x38; //shr rax, 0x38
  2003. rdx ^= rax; //xor rdx, rax
  2004. rax = 0x39D515C223A57391; //mov rax, 0x39D515C223A57391
  2005. rdx *= rax; //imul rdx, rax
  2006. return rdx;
  2007. }
  2008. case 10:
  2009. {
  2010. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007747957]
  2011. rcx = globals::base + 0x1A3D; //lea rcx, [0xFFFFFFFFFBF625D4]
  2012. rax = rdx; //mov rax, rdx
  2013. rax >>= 0xF; //shr rax, 0x0F
  2014. rdx ^= rax; //xor rdx, rax
  2015. rax = rdx; //mov rax, rdx
  2016. rax >>= 0x1E; //shr rax, 0x1E
  2017. rdx ^= rax; //xor rdx, rax
  2018. rax = rdx; //mov rax, rdx
  2019. rax >>= 0x3C; //shr rax, 0x3C
  2020. rdx ^= rax; //xor rdx, rax
  2021. rax = rdx; //mov rax, rdx
  2022. rax >>= 0x13; //shr rax, 0x13
  2023. rdx ^= rax; //xor rdx, rax
  2024. rax = rdx; //mov rax, rdx
  2025. rax >>= 0x26; //shr rax, 0x26
  2026. rdx ^= rax; //xor rdx, rax
  2027. rax = r11; //mov rax, r11
  2028. rax = ~rax; //not rax
  2029. rax *= rcx; //imul rax, rcx
  2030. rdx ^= rax; //xor rdx, rax
  2031. rax = 0x8330B389343DA675; //mov rax, 0x8330B389343DA675
  2032. rdx *= rax; //imul rdx, rax
  2033. rax = 0x5A325A7184C15E55; //mov rax, 0x5A325A7184C15E55
  2034. rdx -= rax; //sub rdx, rax
  2035. rax = 0xE28957C95B7E497; //mov rax, 0xE28957C95B7E497
  2036. rdx += rax; //add rdx, rax
  2037. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2038. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2039. rax ^= r10; //xor rax, r10
  2040. rax = ~rax; //not rax
  2041. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2042. rdx -= r11; //sub rdx, r11
  2043. return rdx;
  2044. }
  2045. case 11:
  2046. {
  2047. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x000000000774748C]
  2048. r15 = globals::base + 0x67B591A2; //lea r15, [0x0000000063AB98EE]
  2049. rax = rdx; //mov rax, rdx
  2050. rax >>= 0x22; //shr rax, 0x22
  2051. rdx ^= rax; //xor rdx, rax
  2052. rax = r15; //mov rax, r15
  2053. rax = ~rax; //not rax
  2054. rax ^= r11; //xor rax, r11
  2055. rax += r11; //add rax, r11
  2056. rdx -= rax; //sub rdx, rax
  2057. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2058. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2059. rax ^= r10; //xor rax, r10
  2060. rax = ~rax; //not rax
  2061. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2062. rdx ^= r11; //xor rdx, r11
  2063. rax = 0x112AEF7CBA9BEDF1; //mov rax, 0x112AEF7CBA9BEDF1
  2064. rdx *= rax; //imul rdx, rax
  2065. rax = 0x792205E77EAA6797; //mov rax, 0x792205E77EAA6797
  2066. rdx ^= rax; //xor rdx, rax
  2067. return rdx;
  2068. }
  2069. case 12:
  2070. {
  2071. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x00000000077470E3]
  2072. r12 = globals::base + 0x70E4B3E1; //lea r12, [0x000000006CDAB77F]
  2073. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2074. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2075. rax ^= r10; //xor rax, r10
  2076. rax = ~rax; //not rax
  2077. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2078. rax = 0x33BF00DD8A073650; //mov rax, 0x33BF00DD8A073650
  2079. rdx -= rax; //sub rdx, rax
  2080. rax = rdx; //mov rax, rdx
  2081. rax >>= 0xA; //shr rax, 0x0A
  2082. rdx ^= rax; //xor rdx, rax
  2083. rax = rdx; //mov rax, rdx
  2084. rax >>= 0x14; //shr rax, 0x14
  2085. rdx ^= rax; //xor rdx, rax
  2086. rax = rdx; //mov rax, rdx
  2087. rax >>= 0x28; //shr rax, 0x28
  2088. rdx ^= rax; //xor rdx, rax
  2089. rax = globals::base; //lea rax, [0xFFFFFFFFFBF60150]
  2090. rdx ^= rax; //xor rdx, rax
  2091. rax = r12; //mov rax, r12
  2092. rax = ~rax; //not rax
  2093. rdx += rax; //add rdx, rax
  2094. rax = 0x37300D9E69A77B2F; //mov rax, 0x37300D9E69A77B2F
  2095. rdx *= rax; //imul rdx, rax
  2096. rdx -= r11; //sub rdx, r11
  2097. return rdx;
  2098. }
  2099. case 13:
  2100. {
  2101. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007746D21]
  2102. r15 = globals::base + 0x666C9DA0; //lea r15, [0x0000000062629D7C]
  2103. rax = r11; //mov rax, r11
  2104. rax ^= r15; //xor rax, r15
  2105. rdx -= rax; //sub rdx, rax
  2106. rax = 0x124569EA4125D98; //mov rax, 0x124569EA4125D98
  2107. rdx ^= rax; //xor rdx, rax
  2108. rax = rdx; //mov rax, rdx
  2109. rax >>= 0x5; //shr rax, 0x05
  2110. rdx ^= rax; //xor rdx, rax
  2111. rax = rdx; //mov rax, rdx
  2112. rax >>= 0xA; //shr rax, 0x0A
  2113. rdx ^= rax; //xor rdx, rax
  2114. rax = rdx; //mov rax, rdx
  2115. rax >>= 0x14; //shr rax, 0x14
  2116. rdx ^= rax; //xor rdx, rax
  2117. rax = rdx; //mov rax, rdx
  2118. rax >>= 0x28; //shr rax, 0x28
  2119. rdx ^= rax; //xor rdx, rax
  2120. rax = rdx; //mov rax, rdx
  2121. rax >>= 0x1A; //shr rax, 0x1A
  2122. rdx ^= rax; //xor rdx, rax
  2123. rax = rdx; //mov rax, rdx
  2124. rax >>= 0x34; //shr rax, 0x34
  2125. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  2126. rdx ^= rax; //xor rdx, rax
  2127. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  2128. rcx ^= r10; //xor rcx, r10
  2129. rcx = ~rcx; //not rcx
  2130. rdx *= mem.Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
  2131. rdx ^= r11; //xor rdx, r11
  2132. rax = 0xD83F30F92C64DF4F; //mov rax, 0xD83F30F92C64DF4F
  2133. rdx ^= rax; //xor rdx, rax
  2134. rax = 0xB69AFD2628432A9D; //mov rax, 0xB69AFD2628432A9D
  2135. rdx *= rax; //imul rdx, rax
  2136. return rdx;
  2137. }
  2138. case 14:
  2139. {
  2140. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x00000000077468FE]
  2141. r12 = globals::base + 0x5113; //lea r12, [0xFFFFFFFFFBF64CCC]
  2142. rax = rdx; //mov rax, rdx
  2143. rax >>= 0x1B; //shr rax, 0x1B
  2144. rdx ^= rax; //xor rdx, rax
  2145. rax = rdx; //mov rax, rdx
  2146. rax >>= 0x36; //shr rax, 0x36
  2147. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  2148. rdx ^= rax; //xor rdx, rax
  2149. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  2150. rcx ^= r10; //xor rcx, r10
  2151. rcx = ~rcx; //not rcx
  2152. rdx *= mem.Read<uintptr_t>(rcx + 0x17); //imul rdx, [rcx+0x17]
  2153. rax = 0xDC4274449EFE767B; //mov rax, 0xDC4274449EFE767B
  2154. rdx ^= rax; //xor rdx, rax
  2155. rax = rdx; //mov rax, rdx
  2156. rax >>= 0x6; //shr rax, 0x06
  2157. rdx ^= rax; //xor rdx, rax
  2158. rax = rdx; //mov rax, rdx
  2159. rax >>= 0xC; //shr rax, 0x0C
  2160. rdx ^= rax; //xor rdx, rax
  2161. rax = rdx; //mov rax, rdx
  2162. rax >>= 0x18; //shr rax, 0x18
  2163. rdx ^= rax; //xor rdx, rax
  2164. rax = rdx; //mov rax, rdx
  2165. rax >>= 0x30; //shr rax, 0x30
  2166. rdx ^= rax; //xor rdx, rax
  2167. rax = r11; //mov rax, r11
  2168. rax ^= r12; //xor rax, r12
  2169. rdx -= rax; //sub rdx, rax
  2170. rax = 0x4480AA60A21867F9; //mov rax, 0x4480AA60A21867F9
  2171. rdx *= rax; //imul rdx, rax
  2172. rax = globals::base; //lea rax, [0xFFFFFFFFFBF5F892]
  2173. rax += 0xD03A; //add rax, 0xD03A
  2174. rax += r11; //add rax, r11
  2175. rdx += rax; //add rdx, rax
  2176. return rdx;
  2177. }
  2178. case 15:
  2179. {
  2180. r10 = mem.Read<uintptr_t>(globals::base + 0xB7E6D2D); //mov r10, [0x0000000007746464]
  2181. rcx = globals::base + 0x6744783A; //lea rcx, [0x00000000633A6EB5]
  2182. rdx += r11; //add rdx, r11
  2183. rax = r11; //mov rax, r11
  2184. rax = ~rax; //not rax
  2185. uintptr_t RSP_0xFFFFFFFFFFFFFFB0;
  2186. RSP_0xFFFFFFFFFFFFFFB0 = globals::base + 0x642A39AC; //lea rax, [0x00000000602030DC] : RBP+0xFFFFFFFFFFFFFFB0
  2187. rax ^= RSP_0xFFFFFFFFFFFFFFB0; //xor rax, [rbp-0x50]
  2188. rdx -= rax; //sub rdx, rax
  2189. rdx ^= r11; //xor rdx, r11
  2190. rdx ^= rcx; //xor rdx, rcx
  2191. rax = 0; //and rax, 0xFFFFFFFFC0000000
  2192. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  2193. rax ^= r10; //xor rax, r10
  2194. rax = ~rax; //not rax
  2195. rdx *= mem.Read<uintptr_t>(rax + 0x17); //imul rdx, [rax+0x17]
  2196. rax = 0x54750E0E4638841A; //mov rax, 0x54750E0E4638841A
  2197. rdx += rax; //add rdx, rax
  2198. rax = 0x17257FE07A931EB4; //mov rax, 0x17257FE07A931EB4
  2199. rdx ^= rax; //xor rdx, rax
  2200. rax = rdx; //mov rax, rdx
  2201. rax >>= 0x4; //shr rax, 0x04
  2202. rdx ^= rax; //xor rdx, rax
  2203. rax = rdx; //mov rax, rdx
  2204. rax >>= 0x8; //shr rax, 0x08
  2205. rdx ^= rax; //xor rdx, rax
  2206. rax = rdx; //mov rax, rdx
  2207. rax >>= 0x10; //shr rax, 0x10
  2208. rdx ^= rax; //xor rdx, rax
  2209. rax = rdx; //mov rax, rdx
  2210. rax >>= 0x20; //shr rax, 0x20
  2211. rdx ^= rax; //xor rdx, rax
  2212. rax = 0x7493CCED6314B08B; //mov rax, 0x7493CCED6314B08B
  2213. rdx *= rax; //imul rdx, rax
  2214. return rdx;
  2215. }
  2216. }
  2217. };
  2218.  
  2219. uint16_t get_bone_index(const Driver& driver, uint32_t bone_index)
  2220. {
  2221. const uint64_t mb = globals::base;
  2222. 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;
  2223. rbx = bone_index;
  2224. rcx = rbx * 0x13C8;
  2225. rax = 0xCB182C584BD5193; //mov rax, 0xCB182C584BD5193
  2226. r11 = globals::base; //lea r11, [0xFFFFFFFFFD14EC1E]
  2227. rax = _umul128(rax, rcx, (uintptr_t*)&rdx); //mul rcx
  2228. rax = rcx; //mov rax, rcx
  2229. r10 = 0xD6FB75C08B670E5B; //mov r10, 0xD6FB75C08B670E5B
  2230. rax -= rdx; //sub rax, rdx
  2231. rax >>= 0x1; //shr rax, 0x01
  2232. rax += rdx; //add rax, rdx
  2233. rax >>= 0xC; //shr rax, 0x0C
  2234. rax = rax * 0x1E7D; //imul rax, rax, 0x1E7D
  2235. rcx -= rax; //sub rcx, rax
  2236. rax = 0x4078E2A8FCDA18EF; //mov rax, 0x4078E2A8FCDA18EF
  2237. r8 = rcx * 0x1E7D; //imul r8, rcx, 0x1E7D
  2238. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2239. rdx >>= 0xB; //shr rdx, 0x0B
  2240. rax = rdx * 0x1FC4; //imul rax, rdx, 0x1FC4
  2241. r8 -= rax; //sub r8, rax
  2242. rax = 0xF0F0F0F0F0F0F0F1; //mov rax, 0xF0F0F0F0F0F0F0F1
  2243. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2244. rax = 0x624DD2F1A9FBE77; //mov rax, 0x624DD2F1A9FBE77
  2245. rdx >>= 0x6; //shr rdx, 0x06
  2246. rcx = rdx * 0x44; //imul rcx, rdx, 0x44
  2247. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2248. rax = r8; //mov rax, r8
  2249. rax -= rdx; //sub rax, rdx
  2250. rax >>= 0x1; //shr rax, 0x01
  2251. rax += rdx; //add rax, rdx
  2252. rax >>= 0x6; //shr rax, 0x06
  2253. rcx += rax; //add rcx, rax
  2254. rax = rcx * 0xFA; //imul rax, rcx, 0xFA
  2255. rcx = r8 * 0xFC; //imul rcx, r8, 0xFC
  2256. rcx -= rax; //sub rcx, rax
  2257. rax = mem.Read<uint16_t>(rcx + r11 * 1 + 0xAB663A0); //movzx eax, word ptr [rcx+r11*1+0xAB663A0]
  2258. r8 = rax * 0x13C8; //imul r8, rax, 0x13C8
  2259. rax = r10; //mov rax, r10
  2260. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  2261. rax = r10; //mov rax, r10
  2262. rdx >>= 0xD; //shr rdx, 0x0D
  2263. rcx = rdx * 0x261B; //imul rcx, rdx, 0x261B
  2264. r8 -= rcx; //sub r8, rcx
  2265. r9 = r8 * 0x2F75; //imul r9, r8, 0x2F75
  2266. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2267. rdx >>= 0xD; //shr rdx, 0x0D
  2268. rax = rdx * 0x261B; //imul rax, rdx, 0x261B
  2269. r9 -= rax; //sub r9, rax
  2270. rax = 0x8FB823EE08FB823F; //mov rax, 0x8FB823EE08FB823F
  2271. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2272. rax = 0x579D6EE340579D6F; //mov rax, 0x579D6EE340579D6F
  2273. rdx >>= 0x5; //shr rdx, 0x05
  2274. rcx = rdx * 0x39; //imul rcx, rdx, 0x39
  2275. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  2276. rdx >>= 0x6; //shr rdx, 0x06
  2277. rcx += rdx; //add rcx, rdx
  2278. rax = rcx * 0x176; //imul rax, rcx, 0x176
  2279. rcx = r9 * 0x178; //imul rcx, r9, 0x178
  2280. rcx -= rax; //sub rcx, rax
  2281. r14 = mem.Read<uint16_t>(rcx + r11 * 1 + 0xAB6A610); //movsx r14d, word ptr [rcx+r11*1+0xAB6A610]
  2282. return r14;
  2283. }
  2284. constexpr auto timestamp = 0x688B4CF1;
  2285. constexpr auto ref_def_ptr = 0xCE6E920;
  2286. constexpr auto name_array = 0xCFE1EF8;
  2287. constexpr auto name_array_pos = 0x3038; // 0x4C70 for MW1(2019)
  2288. constexpr auto name_array_size = 0xC8;
  2289. constexpr auto loot_ptr = 0xE827688;
  2290. constexpr auto loot_pos = 0x170;
  2291. constexpr auto camera_base = 0xCB0B610;
  2292. constexpr auto camera_pos = 0x204;
  2293. constexpr auto local_index = 0xC10E8;
  2294. constexpr auto local_index_pos = 0x394;
  2295. constexpr auto game_mode = 0xBA38B88;
  2296. constexpr auto weapon_definitions = 0xCD0DDC0;
  2297. constexpr auto distribute = 0x9ACC9A0;
  2298. uint32_t o_visible_bit = 0x1C8960;
  2299. uint32_t o_no_recoil = 0x159B48;
  2300. uint32_t Player_client_state_enum = 0xAA8;
  2301. constexpr auto scoreboard = 0xAFB58;
  2302. constexpr auto scoreboardsize = 0x78;
  2303.  
  2304.  
  2305. namespace bone {
  2306. constexpr auto bone_base = 0x199720;
  2307. constexpr auto size = 0x1B8;
  2308. constexpr auto offset = 0xD8;
  2309. };
  2310.  
  2311. namespace player {
  2312. constexpr auto size = 0x2538;
  2313. constexpr auto valid = 0x7D6;
  2314. constexpr auto pos = 0x4A8;
  2315. constexpr auto team = 0x148;
  2316. constexpr auto stance = 0x10C0;
  2317. constexpr auto weapon_index = 0x45A;
  2318. constexpr auto dead_1 = 0x17C;
  2319. constexpr auto dead_2 = 0x15715;
  2320. constexpr auto dead_3 = 0x1568C;
  2321. };
  2322.  
Advertisement
Add Comment
Please, Sign In to add comment