Guest User

Untitled

a guest
Jul 7th, 2023
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 94.68 KB | None | 0 0
  1. uintptr_t decrypt_client_info(const Driver& driver)
  2. {
  3. auto mb = g_data::base;
  4. auto Peb = __readgsqword(0x60);
  5. 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;
  6. rbx = *(uintptr_t*)(mb + 0x12ACBFD8);
  7. if(!rbx)
  8. return rbx;
  9. rcx= ~Peb; //mov rcx, gs:[rax]
  10. rax = mb + 0x7A98; //lea rax, [0xFFFFFFFFFDD825A5]
  11. rcx -= rax; //sub rcx, rax
  12. rbx += rcx; //add rbx, rcx
  13. rax = rbx; //mov rax, rbx
  14. rax >>= 0x3; //shr rax, 0x03
  15. rbx ^= rax; //xor rbx, rax
  16. rax = rbx; //mov rax, rbx
  17. rax >>= 0x6; //shr rax, 0x06
  18. rbx ^= rax; //xor rbx, rax
  19. rax = rbx; //mov rax, rbx
  20. rax >>= 0xC; //shr rax, 0x0C
  21. rbx ^= rax; //xor rbx, rax
  22. rax = rbx; //mov rax, rbx
  23. rax >>= 0x18; //shr rax, 0x18
  24. rbx ^= rax; //xor rbx, rax
  25. rax = 0x87EB48CBA4287557; //mov rax, 0x87EB48CBA4287557
  26. rcx = rbx; //mov rcx, rbx
  27. rcx >>= 0x30; //shr rcx, 0x30
  28. rcx ^= rbx; //xor rcx, rbx
  29. rcx *= rax; //imul rcx, rax
  30. rax = 0xD579FA0DAE99EEE; //mov rax, 0xD579FA0DAE99EEE
  31. rcx += rax; //add rcx, rax
  32. rax = rcx; //mov rax, rcx
  33. rax >>= 0xF; //shr rax, 0x0F
  34. rcx ^= rax; //xor rcx, rax
  35. rax = rcx; //mov rax, rcx
  36. rax >>= 0x1E; //shr rax, 0x1E
  37. rcx ^= rax; //xor rcx, rax
  38. rbx = rcx; //mov rbx, rcx
  39. rax = 0; //and rax, 0xFFFFFFFFC0000000
  40. rbx >>= 0x3C; //shr rbx, 0x3C
  41. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  42. rbx ^= rcx; //xor rbx, rcx
  43. rax ^= *(uintptr_t*)(mb + 0xA4CA0DD); //xor rax, [0x0000000008244B57]
  44. rax = _byteswap_uint64(rax); //bswap rax
  45. rbx *= *(uintptr_t*)(rax + 0x7); //imul rbx, [rax+0x07]
  46. return rbx;
  47. }
  48. uint64_t get_client_info_base()
  49. {
  50. auto mb = g_data::base;
  51. auto Peb = __readgsqword(0x60);
  52. 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;
  53. r8 = *(uintptr_t*)(get_client_info() + 0x160980);
  54. if(!r8)
  55. return r8;
  56. rbx= ~Peb; //mov rbx, gs:[rax]
  57. rax = rbx; //mov rax, rbx
  58. rax = _rotr64(rax, 0xD); //ror rax, 0x0D
  59. rax &= 0xF;
  60. switch(rax) {
  61. case 0:
  62. {
  63. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0EA2F]
  64. rax = r8; //mov rax, r8
  65. rax >>= 0x16; //shr rax, 0x16
  66. r8 ^= rax; //xor r8, rax
  67. rax = r8; //mov rax, r8
  68. rax >>= 0x2C; //shr rax, 0x2C
  69. r8 ^= rax; //xor r8, rax
  70. r8 -= rbx; //sub r8, rbx
  71. rax = 0xC35A4D5374479F2; //mov rax, 0xC35A4D5374479F2
  72. r8 += rax; //add r8, rax
  73. rax = r8; //mov rax, r8
  74. rax >>= 0x20; //shr rax, 0x20
  75. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  76. r8 ^= rax; //xor r8, rax
  77. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  78. rcx ^= r10; //xor rcx, r10
  79. rcx = _byteswap_uint64(rcx); //bswap rcx
  80. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  81. rax = r8; //mov rax, r8
  82. rax >>= 0x4; //shr rax, 0x04
  83. r8 ^= rax; //xor r8, rax
  84. rax = r8; //mov rax, r8
  85. rax >>= 0x8; //shr rax, 0x08
  86. r8 ^= rax; //xor r8, rax
  87. rax = r8; //mov rax, r8
  88. rax >>= 0x10; //shr rax, 0x10
  89. r8 ^= rax; //xor r8, rax
  90. rax = r8; //mov rax, r8
  91. rax >>= 0x20; //shr rax, 0x20
  92. r8 ^= rax; //xor r8, rax
  93. rax = 0x24EA08DF117330C7; //mov rax, 0x24EA08DF117330C7
  94. r8 ^= rax; //xor r8, rax
  95. rax = 0x2D90FA064AD9F971; //mov rax, 0x2D90FA064AD9F971
  96. r8 *= rax; //imul r8, rax
  97. return r8;
  98. }
  99. case 1:
  100. {
  101. r11 = mb; //lea r11, [0xFFFFFFFFF8A4446B]
  102. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0E517]
  103. rax = r8; //mov rax, r8
  104. rax >>= 0x15; //shr rax, 0x15
  105. r8 ^= rax; //xor r8, rax
  106. rax = r8; //mov rax, r8
  107. rax >>= 0x2A; //shr rax, 0x2A
  108. r8 ^= rax; //xor r8, rax
  109. rax = 0x2DBBDA8DE6FFC239; //mov rax, 0x2DBBDA8DE6FFC239
  110. r8 *= rax; //imul r8, rax
  111. r8 -= r11; //sub r8, r11
  112. rax = 0x569D26880A4322EB; //mov rax, 0x569D26880A4322EB
  113. r8 *= rax; //imul r8, rax
  114. rax = mb + 0x52C7; //lea rax, [0xFFFFFFFFF8A49373]
  115. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  116. rax = ~rax; //not rax
  117. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  118. rax ^= rbx; //xor rax, rbx
  119. rcx ^= r10; //xor rcx, r10
  120. r8 += rax; //add r8, rax
  121. rcx = _byteswap_uint64(rcx); //bswap rcx
  122. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  123. r8 += r11; //add r8, r11
  124. rax = 0x52640EFEA7727BD5; //mov rax, 0x52640EFEA7727BD5
  125. r8 -= rax; //sub r8, rax
  126. return r8;
  127. }
  128. case 2:
  129. {
  130. r11 = mb; //lea r11, [0xFFFFFFFFF8A44032]
  131. rcx = mb + 0x5A2CDFA5; //lea rcx, [0x0000000052D11FCB]
  132. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0E0F2]
  133. rax = 0; //and rax, 0xFFFFFFFFC0000000
  134. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  135. rax ^= r10; //xor rax, r10
  136. rax = _byteswap_uint64(rax); //bswap rax
  137. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  138. rax = r8; //mov rax, r8
  139. rax >>= 0xB; //shr rax, 0x0B
  140. r8 ^= rax; //xor r8, rax
  141. rax = r8; //mov rax, r8
  142. rax >>= 0x16; //shr rax, 0x16
  143. r8 ^= rax; //xor r8, rax
  144. rax = r8; //mov rax, r8
  145. rax >>= 0x2C; //shr rax, 0x2C
  146. r8 ^= rax; //xor r8, rax
  147. rax = r11 + 0xe31b; //lea rax, [r11+0xE31B]
  148. rax += rbx; //add rax, rbx
  149. r8 += rax; //add r8, rax
  150. rax = rbx; //mov rax, rbx
  151. uintptr_t RSP_0x70;
  152. RSP_0x70 = mb + 0x5DF61987; //lea rax, [0x00000000569A5983] : RSP+0x70
  153. rax ^= RSP_0x70; //xor rax, [rsp+0x70]
  154. r8 -= rax; //sub r8, rax
  155. rax = rbx; //mov rax, rbx
  156. rax = ~rax; //not rax
  157. rax ^= rcx; //xor rax, rcx
  158. r8 -= rax; //sub r8, rax
  159. rax = 0xFA7D43A4072DDDF3; //mov rax, 0xFA7D43A4072DDDF3
  160. r8 ^= rax; //xor r8, rax
  161. rax = 0x1BEF6CDBCB4BF6E1; //mov rax, 0x1BEF6CDBCB4BF6E1
  162. r8 *= rax; //imul r8, rax
  163. rax = 0x706FFD36014803E0; //mov rax, 0x706FFD36014803E0
  164. r8 ^= rax; //xor r8, rax
  165. return r8;
  166. }
  167. case 3:
  168. {
  169. r11 = mb; //lea r11, [0xFFFFFFFFF8A43C47]
  170. r10 = mb + 0x75EAD525; //lea r10, [0x000000006E8F115B]
  171. r9 = *(uintptr_t*)(mb + 0xA4CA102); //mov r9, [0x0000000002F0DCFB]
  172. rax = r8; //mov rax, r8
  173. rax >>= 0x12; //shr rax, 0x12
  174. r8 ^= rax; //xor r8, rax
  175. rax = r8; //mov rax, r8
  176. rax >>= 0x24; //shr rax, 0x24
  177. r8 ^= rax; //xor r8, rax
  178. uintptr_t RSP_0x48;
  179. RSP_0x48 = 0xD891FBA7C28BF266; //mov rax, 0xD891FBA7C28BF266 : RSP+0x48
  180. r8 ^= RSP_0x48; //xor r8, [rsp+0x48]
  181. rax = rbx; //mov rax, rbx
  182. rax ^= r10; //xor rax, r10
  183. r8 -= rax; //sub r8, rax
  184. rax = 0x7306CD487DB9D041; //mov rax, 0x7306CD487DB9D041
  185. r8 ^= rax; //xor r8, rax
  186. r8 += rbx; //add r8, rbx
  187. rax = 0; //and rax, 0xFFFFFFFFC0000000
  188. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  189. rax ^= r9; //xor rax, r9
  190. rax = _byteswap_uint64(rax); //bswap rax
  191. rax = *(uintptr_t*)(rax + 0x9); //mov rax, [rax+0x09]
  192. uintptr_t RSP_0x50;
  193. RSP_0x50 = 0xA2CEB44D9FB8DC1D; //mov rax, 0xA2CEB44D9FB8DC1D : RSP+0x50
  194. rax *= RSP_0x50; //imul rax, [rsp+0x50]
  195. r8 *= rax; //imul r8, rax
  196. r8 -= r11; //sub r8, r11
  197. return r8;
  198. }
  199. case 4:
  200. {
  201. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0D9C1]
  202. r8 += rbx; //add r8, rbx
  203. r8 += rbx; //add r8, rbx
  204. rax = 0x3162847D68C255B8; //mov rax, 0x3162847D68C255B8
  205. r8 -= rax; //sub r8, rax
  206. rax = r8; //mov rax, r8
  207. rax >>= 0x19; //shr rax, 0x19
  208. r8 ^= rax; //xor r8, rax
  209. rax = r8; //mov rax, r8
  210. rax >>= 0x32; //shr rax, 0x32
  211. r8 ^= rax; //xor r8, rax
  212. rax = 0x2116B7CA87F505BB; //mov rax, 0x2116B7CA87F505BB
  213. r8 *= rax; //imul r8, rax
  214. rax = 0xEA83BBA5541DCB75; //mov rax, 0xEA83BBA5541DCB75
  215. r8 ^= rax; //xor r8, rax
  216. rax = r8; //mov rax, r8
  217. rax >>= 0x12; //shr rax, 0x12
  218. r8 ^= rax; //xor r8, rax
  219. rax = r8; //mov rax, r8
  220. rax >>= 0x24; //shr rax, 0x24
  221. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  222. r8 ^= rax; //xor r8, rax
  223. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  224. rcx ^= r10; //xor rcx, r10
  225. rcx = _byteswap_uint64(rcx); //bswap rcx
  226. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  227. return r8;
  228. }
  229. case 5:
  230. {
  231. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0D4FF]
  232. r11 = mb; //lea r11, [0xFFFFFFFFF8A433EA]
  233. r8 ^= r11; //xor r8, r11
  234. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  235. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  236. rcx ^= r10; //xor rcx, r10
  237. rax = rbx; //mov rax, rbx
  238. rax = ~rax; //not rax
  239. rax -= r11; //sub rax, r11
  240. rax += 0xFFFFFFFFC2139BB3; //add rax, 0xFFFFFFFFC2139BB3
  241. rcx = _byteswap_uint64(rcx); //bswap rcx
  242. r8 += rax; //add r8, rax
  243. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  244. rax = r8; //mov rax, r8
  245. rax >>= 0xC; //shr rax, 0x0C
  246. r8 ^= rax; //xor r8, rax
  247. rax = r8; //mov rax, r8
  248. rax >>= 0x18; //shr rax, 0x18
  249. r8 ^= rax; //xor r8, rax
  250. rax = r8; //mov rax, r8
  251. rax >>= 0x30; //shr rax, 0x30
  252. r8 ^= rax; //xor r8, rax
  253. rax = mb + 0x1374C560; //lea rax, [0x000000000C18F6E1]
  254. rax = ~rax; //not rax
  255. rax += rbx; //add rax, rbx
  256. r8 += rax; //add r8, rax
  257. rax = 0x9BBE6AE7ED4BB59; //mov rax, 0x9BBE6AE7ED4BB59
  258. r8 *= rax; //imul r8, rax
  259. rax = 0x71CE8E54E752FAE6; //mov rax, 0x71CE8E54E752FAE6
  260. r8 -= rax; //sub r8, rax
  261. rax = r11 + 0x67d; //lea rax, [r11+0x67D]
  262. rax += rbx; //add rax, rbx
  263. r8 ^= rax; //xor r8, rax
  264. return r8;
  265. }
  266. case 6:
  267. {
  268. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0CF5A]
  269. r11 = mb; //lea r11, [0xFFFFFFFFF8A42E45]
  270. rax = mb + 0x380D91B1; //lea rax, [0x0000000030B1BE80]
  271. rax = ~rax; //not rax
  272. rax ^= rbx; //xor rax, rbx
  273. r8 ^= rax; //xor r8, rax
  274. rax = 0x7E108AAB571C84CF; //mov rax, 0x7E108AAB571C84CF
  275. r8 += rax; //add r8, rax
  276. rax = 0x67A35786E93EEF30; //mov rax, 0x67A35786E93EEF30
  277. r8 ^= rax; //xor r8, rax
  278. rax = r8; //mov rax, r8
  279. rax >>= 0x10; //shr rax, 0x10
  280. r8 ^= rax; //xor r8, rax
  281. rax = r8; //mov rax, r8
  282. rax >>= 0x20; //shr rax, 0x20
  283. r8 ^= rax; //xor r8, rax
  284. rax = 0x4EFC42E1340DF84F; //mov rax, 0x4EFC42E1340DF84F
  285. r8 *= rax; //imul r8, rax
  286. rax = 0; //and rax, 0xFFFFFFFFC0000000
  287. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  288. rax ^= r10; //xor rax, r10
  289. rax = _byteswap_uint64(rax); //bswap rax
  290. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  291. rax = rbx; //mov rax, rbx
  292. uintptr_t RSP_0x70;
  293. RSP_0x70 = mb + 0x322A437D; //lea rax, [0x000000002ACE718E] : RSP+0x70
  294. rax ^= RSP_0x70; //xor rax, [rsp+0x70]
  295. r8 += rax; //add r8, rax
  296. r8 ^= r11; //xor r8, r11
  297. return r8;
  298. }
  299. case 7:
  300. {
  301. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0C9BE]
  302. r11 = mb; //lea r11, [0xFFFFFFFFF8A428A9]
  303. r8 += rbx; //add r8, rbx
  304. r8 ^= rbx; //xor r8, rbx
  305. rax = r11 + 0x673cd4f3; //lea rax, [r11+0x673CD4F3]
  306. rax += rbx; //add rax, rbx
  307. r8 ^= rax; //xor r8, rax
  308. rax = r8; //mov rax, r8
  309. rax >>= 0x1F; //shr rax, 0x1F
  310. r8 ^= rax; //xor r8, rax
  311. rax = r8; //mov rax, r8
  312. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  313. rax >>= 0x3E; //shr rax, 0x3E
  314. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  315. r8 ^= rax; //xor r8, rax
  316. rcx ^= r10; //xor rcx, r10
  317. rax = 0x7678D1A47475A5D7; //mov rax, 0x7678D1A47475A5D7
  318. rcx = _byteswap_uint64(rcx); //bswap rcx
  319. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  320. r8 ^= rax; //xor r8, rax
  321. rax = 0x58593DC333358A6F; //mov rax, 0x58593DC333358A6F
  322. r8 ^= rax; //xor r8, rax
  323. rax = 0x984B8FADB19C1B8B; //mov rax, 0x984B8FADB19C1B8B
  324. r8 *= rax; //imul r8, rax
  325. return r8;
  326. }
  327. case 8:
  328. {
  329. r11 = mb; //lea r11, [0xFFFFFFFFF8A4241E]
  330. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0C4F3]
  331. rax = r8; //mov rax, r8
  332. rax >>= 0x2; //shr rax, 0x02
  333. r8 ^= rax; //xor r8, rax
  334. rax = r8; //mov rax, r8
  335. rax >>= 0x4; //shr rax, 0x04
  336. r8 ^= rax; //xor r8, rax
  337. rax = r8; //mov rax, r8
  338. rax >>= 0x8; //shr rax, 0x08
  339. r8 ^= rax; //xor r8, rax
  340. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  341. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  342. rcx ^= r10; //xor rcx, r10
  343. rax = r8; //mov rax, r8
  344. rax >>= 0x10; //shr rax, 0x10
  345. r8 ^= rax; //xor r8, rax
  346. rax = r8; //mov rax, r8
  347. rax >>= 0x20; //shr rax, 0x20
  348. rax ^= rbx; //xor rax, rbx
  349. r8 ^= rax; //xor r8, rax
  350. rax = mb + 0xCAAE; //lea rax, [0xFFFFFFFFF8A4EABF]
  351. r8 ^= rax; //xor r8, rax
  352. rcx = _byteswap_uint64(rcx); //bswap rcx
  353. r8 *= *(uintptr_t*)(rcx + 0x9); //imul r8, [rcx+0x09]
  354. rax = 0xF7BF19C3A8AAF99D; //mov rax, 0xF7BF19C3A8AAF99D
  355. r8 *= rax; //imul r8, rax
  356. rax = 0x684A1F193BE23CB8; //mov rax, 0x684A1F193BE23CB8
  357. r8 += rax; //add r8, rax
  358. r8 += r11; //add r8, r11
  359. rax = r8; //mov rax, r8
  360. rax >>= 0xD; //shr rax, 0x0D
  361. r8 ^= rax; //xor r8, rax
  362. rax = r8; //mov rax, r8
  363. rax >>= 0x1A; //shr rax, 0x1A
  364. r8 ^= rax; //xor r8, rax
  365. rax = r8; //mov rax, r8
  366. rax >>= 0x34; //shr rax, 0x34
  367. r8 ^= rax; //xor r8, rax
  368. rax = 0x235ADD1BCD0E993D; //mov rax, 0x235ADD1BCD0E993D
  369. r8 *= rax; //imul r8, rax
  370. return r8;
  371. }
  372. case 9:
  373. {
  374. r11 = mb; //lea r11, [0xFFFFFFFFF8A41FD8]
  375. r9 = *(uintptr_t*)(mb + 0xA4CA102); //mov r9, [0x0000000002F0C07A]
  376. r8 ^= r11; //xor r8, r11
  377. rax = 0; //and rax, 0xFFFFFFFFC0000000
  378. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  379. rax ^= r9; //xor rax, r9
  380. rax = _byteswap_uint64(rax); //bswap rax
  381. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  382. rax = 0x3FD06965B4FA068B; //mov rax, 0x3FD06965B4FA068B
  383. r8 ^= rax; //xor r8, rax
  384. rax = 0x99F0BBCA7948EFEB; //mov rax, 0x99F0BBCA7948EFEB
  385. r8 *= rax; //imul r8, rax
  386. r8 ^= r11; //xor r8, r11
  387. rax = r8; //mov rax, r8
  388. rax >>= 0xC; //shr rax, 0x0C
  389. r8 ^= rax; //xor r8, rax
  390. rax = r8; //mov rax, r8
  391. rax >>= 0x18; //shr rax, 0x18
  392. r8 ^= rax; //xor r8, rax
  393. rax = r8; //mov rax, r8
  394. rax >>= 0x30; //shr rax, 0x30
  395. r8 ^= rax; //xor r8, rax
  396. r8 -= r11; //sub r8, r11
  397. return r8;
  398. }
  399. case 10:
  400. {
  401. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0BC92]
  402. r11 = mb; //lea r11, [0xFFFFFFFFF8A41B7D]
  403. rax = r8; //mov rax, r8
  404. rax >>= 0x1A; //shr rax, 0x1A
  405. r8 ^= rax; //xor r8, rax
  406. rax = r8; //mov rax, r8
  407. rax >>= 0x34; //shr rax, 0x34
  408. r8 ^= rax; //xor r8, rax
  409. uintptr_t RSP_0x58;
  410. RSP_0x58 = 0x3637CB8D962E9E56; //mov rax, 0x3637CB8D962E9E56 : RSP+0x58
  411. r8 ^= RSP_0x58; //xor r8, [rsp+0x58]
  412. rax = 0; //and rax, 0xFFFFFFFFC0000000
  413. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  414. rax ^= r10; //xor rax, r10
  415. rax = _byteswap_uint64(rax); //bswap rax
  416. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  417. r8 ^= r11; //xor r8, r11
  418. r8 += r11; //add r8, r11
  419. rax = r8; //mov rax, r8
  420. rax >>= 0xE; //shr rax, 0x0E
  421. r8 ^= rax; //xor r8, rax
  422. rax = r8; //mov rax, r8
  423. rax >>= 0x1C; //shr rax, 0x1C
  424. r8 ^= rax; //xor r8, rax
  425. rax = r8; //mov rax, r8
  426. rax >>= 0x38; //shr rax, 0x38
  427. r8 ^= rax; //xor r8, rax
  428. rax = 0x1FFC253876B4F69B; //mov rax, 0x1FFC253876B4F69B
  429. r8 *= rax; //imul r8, rax
  430. rax = 0x219ADEEB19368361; //mov rax, 0x219ADEEB19368361
  431. r8 -= rax; //sub r8, rax
  432. return r8;
  433. }
  434. case 11:
  435. {
  436. r11 = mb; //lea r11, [0xFFFFFFFFF8A4173D]
  437. r9 = *(uintptr_t*)(mb + 0xA4CA102); //mov r9, [0x0000000002F0B7CE]
  438. rax = 0x428EA31D565843D4; //mov rax, 0x428EA31D565843D4
  439. r8 -= rax; //sub r8, rax
  440. rax = r11 + 0xc2b8; //lea rax, [r11+0xC2B8]
  441. rax += rbx; //add rax, rbx
  442. r8 += rax; //add r8, rax
  443. rax = r8; //mov rax, r8
  444. rax >>= 0x11; //shr rax, 0x11
  445. r8 ^= rax; //xor r8, rax
  446. rax = r8; //mov rax, r8
  447. rax >>= 0x22; //shr rax, 0x22
  448. r8 ^= rax; //xor r8, rax
  449. r8 += rbx; //add r8, rbx
  450. rax = mb + 0x4F7FC7FB; //lea rax, [0x000000004823DC7E]
  451. rax -= rbx; //sub rax, rbx
  452. r8 += rax; //add r8, rax
  453. rax = 0x519A51F23EC7C265; //mov rax, 0x519A51F23EC7C265
  454. r8 *= rax; //imul r8, rax
  455. rax = 0; //and rax, 0xFFFFFFFFC0000000
  456. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  457. rax ^= r9; //xor rax, r9
  458. rax = _byteswap_uint64(rax); //bswap rax
  459. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  460. rax = rbx; //mov rax, rbx
  461. uintptr_t RSP_0x70;
  462. RSP_0x70 = mb + 0x557E1EBE; //lea rax, [0x000000004E2235BE] : RSP+0x70
  463. rax ^= RSP_0x70; //xor rax, [rsp+0x70]
  464. r8 -= rax; //sub r8, rax
  465. return r8;
  466. }
  467. case 12:
  468. {
  469. r11 = mb; //lea r11, [0xFFFFFFFFF8A4121C]
  470. r9 = *(uintptr_t*)(mb + 0xA4CA102); //mov r9, [0x0000000002F0B2AF]
  471. rax = 0; //and rax, 0xFFFFFFFFC0000000
  472. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  473. rax ^= r9; //xor rax, r9
  474. rax = _byteswap_uint64(rax); //bswap rax
  475. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  476. r8 ^= r11; //xor r8, r11
  477. rax = rbx; //mov rax, rbx
  478. rax -= r11; //sub rax, r11
  479. rax += 0xFFFFFFFFFFFF60B8; //add rax, 0xFFFFFFFFFFFF60B8
  480. r8 += rax; //add r8, rax
  481. rax = 0x1C5BFEEDDBF5EB53; //mov rax, 0x1C5BFEEDDBF5EB53
  482. r8 *= rax; //imul r8, rax
  483. rax = 0x130EFD65B51B3F18; //mov rax, 0x130EFD65B51B3F18
  484. r8 += rax; //add r8, rax
  485. rax = r8; //mov rax, r8
  486. rax >>= 0xF; //shr rax, 0x0F
  487. r8 ^= rax; //xor r8, rax
  488. rax = r8; //mov rax, r8
  489. rax >>= 0x1E; //shr rax, 0x1E
  490. r8 ^= rax; //xor r8, rax
  491. rax = r8; //mov rax, r8
  492. rax >>= 0x3C; //shr rax, 0x3C
  493. r8 ^= rax; //xor r8, rax
  494. rax = 0xF2D0C564E6EAF071; //mov rax, 0xF2D0C564E6EAF071
  495. r8 *= rax; //imul r8, rax
  496. rax = r8; //mov rax, r8
  497. rax >>= 0x26; //shr rax, 0x26
  498. r8 ^= rax; //xor r8, rax
  499. return r8;
  500. }
  501. case 13:
  502. {
  503. r11 = mb; //lea r11, [0xFFFFFFFFF8A40C67]
  504. r9 = *(uintptr_t*)(mb + 0xA4CA102); //mov r9, [0x0000000002F0ACC1]
  505. rax = r8; //mov rax, r8
  506. rax >>= 0x26; //shr rax, 0x26
  507. r8 ^= rax; //xor r8, rax
  508. r8 ^= r11; //xor r8, r11
  509. rax = 0x4D78A95661567729; //mov rax, 0x4D78A95661567729
  510. r8 *= rax; //imul r8, rax
  511. rax = 0x9105F0D673BF690D; //mov rax, 0x9105F0D673BF690D
  512. r8 ^= rax; //xor r8, rax
  513. rax = r11 + 0x6332c5b8; //lea rax, [r11+0x6332C5B8]
  514. rax += rbx; //add rax, rbx
  515. r8 += rax; //add r8, rax
  516. r8 ^= rbx; //xor r8, rbx
  517. rax = mb + 0x65F4D3CE; //lea rax, [0x000000005E98DD6B]
  518. r8 ^= rax; //xor r8, rax
  519. rax = 0x8C2C5299E9CEEB07; //mov rax, 0x8C2C5299E9CEEB07
  520. r8 ^= rax; //xor r8, rax
  521. rax = 0; //and rax, 0xFFFFFFFFC0000000
  522. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  523. rax ^= r9; //xor rax, r9
  524. rax = _byteswap_uint64(rax); //bswap rax
  525. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  526. return r8;
  527. }
  528. case 14:
  529. {
  530. r11 = mb; //lea r11, [0xFFFFFFFFF8A4070B]
  531. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0A788]
  532. r8 ^= r11; //xor r8, r11
  533. rax = 0xB2CB08F70F17ECB9; //mov rax, 0xB2CB08F70F17ECB9
  534. r8 *= rax; //imul r8, rax
  535. rax = r8; //mov rax, r8
  536. rax >>= 0x20; //shr rax, 0x20
  537. r8 ^= rax; //xor r8, rax
  538. r8 ^= rbx; //xor r8, rbx
  539. rax = 0x5194F48F99B25BB7; //mov rax, 0x5194F48F99B25BB7
  540. r8 += rax; //add r8, rax
  541. rax = 0x9406961BF3A0B6DB; //mov rax, 0x9406961BF3A0B6DB
  542. r8 *= rax; //imul r8, rax
  543. rax = rbx; //mov rax, rbx
  544. rax = ~rax; //not rax
  545. uintptr_t RSP_0x68;
  546. RSP_0x68 = mb + 0x1FFCB725; //lea rax, [0x0000000018A0BE29] : RSP+0x68
  547. rax *= RSP_0x68; //imul rax, [rsp+0x68]
  548. r8 ^= rax; //xor r8, rax
  549. rax = 0; //and rax, 0xFFFFFFFFC0000000
  550. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  551. rax ^= r10; //xor rax, r10
  552. rax = _byteswap_uint64(rax); //bswap rax
  553. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  554. return r8;
  555. }
  556. case 15:
  557. {
  558. r10 = *(uintptr_t*)(mb + 0xA4CA102); //mov r10, [0x0000000002F0A2EE]
  559. rcx = mb + 0xF5C3; //lea rcx, [0xFFFFFFFFF8A4F715]
  560. rax = rcx; //mov rax, rcx
  561. rax = ~rax; //not rax
  562. rax -= rbx; //sub rax, rbx
  563. r8 += rax; //add r8, rax
  564. rax = r8; //mov rax, r8
  565. rax >>= 0x7; //shr rax, 0x07
  566. r8 ^= rax; //xor r8, rax
  567. rax = r8; //mov rax, r8
  568. rax >>= 0xE; //shr rax, 0x0E
  569. r8 ^= rax; //xor r8, rax
  570. rax = r8; //mov rax, r8
  571. rax >>= 0x1C; //shr rax, 0x1C
  572. r8 ^= rax; //xor r8, rax
  573. rax = r8; //mov rax, r8
  574. rax >>= 0x38; //shr rax, 0x38
  575. r8 ^= rax; //xor r8, rax
  576. rax = r8; //mov rax, r8
  577. rax >>= 0x12; //shr rax, 0x12
  578. r8 ^= rax; //xor r8, rax
  579. rax = r8; //mov rax, r8
  580. rax >>= 0x24; //shr rax, 0x24
  581. r8 ^= rax; //xor r8, rax
  582. rax = 0; //and rax, 0xFFFFFFFFC0000000
  583. rax = _rotl64(rax, 0x10); //rol rax, 0x10
  584. rax ^= r10; //xor rax, r10
  585. rax = _byteswap_uint64(rax); //bswap rax
  586. r8 *= *(uintptr_t*)(rax + 0x9); //imul r8, [rax+0x09]
  587. rax = r8; //mov rax, r8
  588. rax >>= 0x18; //shr rax, 0x18
  589. r8 ^= rax; //xor r8, rax
  590. rax = r8; //mov rax, r8
  591. rax >>= 0x30; //shr rax, 0x30
  592. r8 ^= rax; //xor r8, rax
  593. rax = 0x575A9D2C3873BDEC; //mov rax, 0x575A9D2C3873BDEC
  594. r8 ^= rax; //xor r8, rax
  595. rax = 0xAE0D90C9AC20C2A5; //mov rax, 0xAE0D90C9AC20C2A5
  596. r8 *= rax; //imul r8, rax
  597. rax = 0xEB1F765CE2645B5; //mov rax, 0xEB1F765CE2645B5
  598. r8 += rax; //add r8, rax
  599. return r8;
  600. }
  601. }
  602. }
  603. uint64_t get_cbuf()
  604. {
  605. auto mb = g_data::base;
  606. auto Peb = __readgsqword(0x60);
  607. 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;
  608. rcx = *(uintptr_t*)(mb + 0xDCB50A0);
  609. if(!rcx)
  610. return rcx;
  611. rbx = Peb; //mov rbx, gs:[rdx]
  612. rdx = rbx; //mov rdx, rbx
  613. rdx = _rotr64(rdx, 0x11); //ror rdx, 0x11
  614. rdx &= 0xF;
  615. switch(rdx) {
  616. case 0:
  617. {
  618. r11 = mb; //lea r11, [0xFFFFFFFFFC8F4544]
  619. r14 = mb + 0x354E5E87; //lea r14, [0x0000000031DDA3BC]
  620. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBE5E7]
  621. rax = 0xE72F135C691F6457; //mov rax, 0xE72F135C691F6457
  622. rcx *= rax; //imul rcx, rax
  623. rax = rcx; //mov rax, rcx
  624. rax >>= 0x16; //shr rax, 0x16
  625. rcx ^= rax; //xor rcx, rax
  626. rax = rcx; //mov rax, rcx
  627. rax >>= 0x2C; //shr rax, 0x2C
  628. rcx ^= rax; //xor rcx, rax
  629. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  630. rdx = rbx; //mov rdx, rbx
  631. rdx = ~rdx; //not rdx
  632. rdx *= r14; //imul rdx, r14
  633. rax = 0x70F40A95F4672FE0; //mov rax, 0x70F40A95F4672FE0
  634. rcx += rax; //add rcx, rax
  635. rcx += rdx; //add rcx, rdx
  636. rcx ^= r11; //xor rcx, r11
  637. rcx -= r11; //sub rcx, r11
  638. rcx ^= rbx; //xor rcx, rbx
  639. return rcx;
  640. }
  641. case 1:
  642. {
  643. r11 = mb; //lea r11, [0xFFFFFFFFFC8F40D6]
  644. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBE176]
  645. rax = 0x1668C6FF51EAF4ED; //mov rax, 0x1668C6FF51EAF4ED
  646. rcx ^= rax; //xor rcx, rax
  647. rax = 0xCBAB21349DCAE5FD; //mov rax, 0xCBAB21349DCAE5FD
  648. rcx *= rax; //imul rcx, rax
  649. rax = mb + 0x75D8D7AF; //lea rax, [0x000000007268139B]
  650. rcx -= rbx; //sub rcx, rbx
  651. rcx += rax; //add rcx, rax
  652. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  653. rax = rcx; //mov rax, rcx
  654. rax >>= 0x13; //shr rax, 0x13
  655. rcx ^= rax; //xor rcx, rax
  656. rax = rcx; //mov rax, rcx
  657. rax >>= 0x26; //shr rax, 0x26
  658. rcx ^= rax; //xor rcx, rax
  659. rcx += 0xFFFFFFFFFFFF50E3; //add rcx, 0xFFFFFFFFFFFF50E3
  660. rax = rbx; //mov rax, rbx
  661. rax -= r11; //sub rax, r11
  662. rcx += rax; //add rcx, rax
  663. rax = 0xFFFFFFFFEFE8B772; //mov rax, 0xFFFFFFFFEFE8B772
  664. rax -= rbx; //sub rax, rbx
  665. rax -= r11; //sub rax, r11
  666. rcx += rax; //add rcx, rax
  667. rax = r11 + 0xa832; //lea rax, [r11+0xA832]
  668. rax += rbx; //add rax, rbx
  669. rcx ^= rax; //xor rcx, rax
  670. return rcx;
  671. }
  672. case 2:
  673. {
  674. r14 = mb + 0x53BD; //lea r14, [0xFFFFFFFFFC8F8F91]
  675. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBDCBD]
  676. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  677. rax = rcx; //mov rax, rcx
  678. rax >>= 0xF; //shr rax, 0x0F
  679. rcx ^= rax; //xor rcx, rax
  680. rax = rcx; //mov rax, rcx
  681. rax >>= 0x1E; //shr rax, 0x1E
  682. rcx ^= rax; //xor rcx, rax
  683. rax = rcx; //mov rax, rcx
  684. rax >>= 0x3C; //shr rax, 0x3C
  685. rcx ^= rax; //xor rcx, rax
  686. rcx ^= rbx; //xor rcx, rbx
  687. rax = 0x1D05435B84E25A51; //mov rax, 0x1D05435B84E25A51
  688. rcx *= rax; //imul rcx, rax
  689. rax = 0xF4AF956830B15CEB; //mov rax, 0xF4AF956830B15CEB
  690. rcx *= rax; //imul rcx, rax
  691. rcx ^= rbx; //xor rcx, rbx
  692. rdx = r14; //mov rdx, r14
  693. rdx = ~rdx; //not rdx
  694. rdx *= rbx; //imul rdx, rbx
  695. rcx += rdx; //add rcx, rdx
  696. rax = 0x735996108078DA8A; //mov rax, 0x735996108078DA8A
  697. rcx ^= rax; //xor rcx, rax
  698. return rcx;
  699. }
  700. case 3:
  701. {
  702. r11 = mb; //lea r11, [0xFFFFFFFFFC8F374D]
  703. r14 = mb + 0x1CCA166F; //lea r14, [0x0000000019594DAD]
  704. rdi = mb + 0x4EED12A6; //lea rdi, [0x000000004B7C49D5]
  705. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBD7F1]
  706. rcx ^= rbx; //xor rcx, rbx
  707. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  708. rax = rcx; //mov rax, rcx
  709. rax >>= 0x18; //shr rax, 0x18
  710. rcx ^= rax; //xor rcx, rax
  711. rax = rcx; //mov rax, rcx
  712. rax >>= 0x30; //shr rax, 0x30
  713. rcx ^= rax; //xor rcx, rax
  714. rax = rdi; //mov rax, rdi
  715. rax = ~rax; //not rax
  716. rax += rbx; //add rax, rbx
  717. rcx ^= rax; //xor rcx, rax
  718. rax = 0x7810FF41FFDDD3A7; //mov rax, 0x7810FF41FFDDD3A7
  719. rcx *= rax; //imul rcx, rax
  720. rax = r14; //mov rax, r14
  721. rcx -= rbx; //sub rcx, rbx
  722. rax = ~rax; //not rax
  723. rcx += rax; //add rcx, rax
  724. rax = rcx; //mov rax, rcx
  725. rax >>= 0xF; //shr rax, 0x0F
  726. rcx ^= rax; //xor rcx, rax
  727. rax = rcx; //mov rax, rcx
  728. rax >>= 0x1E; //shr rax, 0x1E
  729. rcx ^= rax; //xor rcx, rax
  730. rax = rcx; //mov rax, rcx
  731. rax >>= 0x3C; //shr rax, 0x3C
  732. rcx ^= rax; //xor rcx, rax
  733. rcx += r11; //add rcx, r11
  734. return rcx;
  735. }
  736. case 4:
  737. {
  738. r11 = mb; //lea r11, [0xFFFFFFFFFC8F32DB]
  739. rdi = mb + 0x1626BF57; //lea rdi, [0x0000000012B5F223]
  740. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBD389]
  741. rax = 0xFFFFFFFF882A8DC3; //mov rax, 0xFFFFFFFF882A8DC3
  742. rax -= rbx; //sub rax, rbx
  743. rax -= r11; //sub rax, r11
  744. rcx += rax; //add rcx, rax
  745. rax = rbx; //mov rax, rbx
  746. rax ^= rdi; //xor rax, rdi
  747. rcx -= rax; //sub rcx, rax
  748. rax = mb + 0x4BC19201; //lea rax, [0x000000004850C0B6]
  749. rax = ~rax; //not rax
  750. rax *= rbx; //imul rax, rbx
  751. rcx ^= rax; //xor rcx, rax
  752. rax = 0x2C74441176B5ADA9; //mov rax, 0x2C74441176B5ADA9
  753. rcx *= rax; //imul rcx, rax
  754. rax = 0x3DE195FBD6C9A34F; //mov rax, 0x3DE195FBD6C9A34F
  755. rcx -= rax; //sub rcx, rax
  756. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  757. rax = rcx; //mov rax, rcx
  758. rax >>= 0x1F; //shr rax, 0x1F
  759. rcx ^= rax; //xor rcx, rax
  760. rax = rcx; //mov rax, rcx
  761. rax >>= 0x3E; //shr rax, 0x3E
  762. rcx ^= rax; //xor rcx, rax
  763. rax = 0x2C73B29314C69FA8; //mov rax, 0x2C73B29314C69FA8
  764. rcx -= rax; //sub rcx, rax
  765. return rcx;
  766. }
  767. case 5:
  768. {
  769. r11 = mb; //lea r11, [0xFFFFFFFFFC8F2E91]
  770. r13 = mb + 0x73D80157; //lea r13, [0x0000000070672FD9]
  771. r12 = mb + 0x5D6C5F40; //lea r12, [0x0000000059FB8DB3]
  772. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBCF7B]
  773. rdx = mb + 0x57036ABA; //lea rdx, [0x00000000539298AD]
  774. rax = rbx; //mov rax, rbx
  775. rax ^= r13; //xor rax, r13
  776. rcx -= rax; //sub rcx, rax
  777. rcx ^= rbx; //xor rcx, rbx
  778. rcx ^= rdx; //xor rcx, rdx
  779. rax = 0x28E1BFE2485F389; //mov rax, 0x28E1BFE2485F389
  780. rcx *= rax; //imul rcx, rax
  781. rcx -= r11; //sub rcx, r11
  782. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  783. rax = rcx; //mov rax, rcx
  784. rax >>= 0x9; //shr rax, 0x09
  785. rcx ^= rax; //xor rcx, rax
  786. rax = rcx; //mov rax, rcx
  787. rax >>= 0x12; //shr rax, 0x12
  788. rcx ^= rax; //xor rcx, rax
  789. rax = rcx; //mov rax, rcx
  790. rax >>= 0x24; //shr rax, 0x24
  791. rcx ^= rax; //xor rcx, rax
  792. rax = r12; //mov rax, r12
  793. rax -= rbx; //sub rax, rbx
  794. rcx += rax; //add rcx, rax
  795. return rcx;
  796. }
  797. case 6:
  798. {
  799. r11 = mb; //lea r11, [0xFFFFFFFFFC8F2A39]
  800. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBCADB]
  801. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  802. rcx += rbx; //add rcx, rbx
  803. rax = 0x1DD936FEDD6097DF; //mov rax, 0x1DD936FEDD6097DF
  804. rcx *= rax; //imul rcx, rax
  805. rax = rcx; //mov rax, rcx
  806. rax >>= 0xB; //shr rax, 0x0B
  807. rcx ^= rax; //xor rcx, rax
  808. rax = rcx; //mov rax, rcx
  809. rax >>= 0x16; //shr rax, 0x16
  810. rcx ^= rax; //xor rcx, rax
  811. rax = rcx; //mov rax, rcx
  812. rax >>= 0x2C; //shr rax, 0x2C
  813. rcx ^= rax; //xor rcx, rax
  814. rcx -= r11; //sub rcx, r11
  815. rax = 0x34560D367AE64895; //mov rax, 0x34560D367AE64895
  816. rcx ^= rax; //xor rcx, rax
  817. rax = rbx; //mov rax, rbx
  818. rax -= r11; //sub rax, r11
  819. rax += 0xFFFFFFFFFFFF2611; //add rax, 0xFFFFFFFFFFFF2611
  820. rcx += rax; //add rcx, rax
  821. rax = r11 + 0xbb8d; //lea rax, [r11+0xBB8D]
  822. rax += rbx; //add rax, rbx
  823. rcx ^= rax; //xor rcx, rax
  824. return rcx;
  825. }
  826. case 7:
  827. {
  828. r11 = mb; //lea r11, [0xFFFFFFFFFC8F252E]
  829. r14 = mb + 0x58CC7A9E; //lea r14, [0x00000000555B9FBD]
  830. rdx = *(uintptr_t*)(mb + 0xA4CA154); //mov rdx, [0x0000000006DBC616]
  831. rcx *= *(uintptr_t*)(rdx + 0x15); //imul rcx, [rdx+0x15]
  832. rax = rcx; //mov rax, rcx
  833. rax >>= 0xD; //shr rax, 0x0D
  834. rcx ^= rax; //xor rcx, rax
  835. rax = rcx; //mov rax, rcx
  836. rax >>= 0x1A; //shr rax, 0x1A
  837. rcx ^= rax; //xor rcx, rax
  838. rax = rcx; //mov rax, rcx
  839. rax >>= 0x34; //shr rax, 0x34
  840. rcx ^= rax; //xor rcx, rax
  841. rax = 0x179786D7FD3E3AA7; //mov rax, 0x179786D7FD3E3AA7
  842. rcx -= rax; //sub rcx, rax
  843. rcx += r11; //add rcx, r11
  844. rax = 0xB0661A2AD1145245; //mov rax, 0xB0661A2AD1145245
  845. rcx *= rax; //imul rcx, rax
  846. rax = rcx; //mov rax, rcx
  847. rax >>= 0x1F; //shr rax, 0x1F
  848. rcx ^= rax; //xor rcx, rax
  849. rax = rcx; //mov rax, rcx
  850. rax >>= 0x3E; //shr rax, 0x3E
  851. rcx ^= rax; //xor rcx, rax
  852. rax = 0xE58ACD988211E53C; //mov rax, 0xE58ACD988211E53C
  853. rcx ^= rax; //xor rcx, rax
  854. rcx ^= rbx; //xor rcx, rbx
  855. rcx ^= r14; //xor rcx, r14
  856. return rcx;
  857. }
  858. case 8:
  859. {
  860. r11 = mb; //lea r11, [0xFFFFFFFFFC8F20C4]
  861. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBC1AD]
  862. rdx = rbx; //mov rdx, rbx
  863. rdx = ~rdx; //not rdx
  864. rax = rcx; //mov rax, rcx
  865. rdx -= r11; //sub rdx, r11
  866. rax *= *(uintptr_t*)(r10 + 0x15); //imul rax, [r10+0x15]
  867. rcx = rdx + 0xffffffffffffff1e; //lea rcx, [rdx-0xE2]
  868. rcx ^= rax; //xor rcx, rax
  869. rax = rbx + 0x1; //lea rax, [rbx+0x01]
  870. uintptr_t RSP_0x70;
  871. RSP_0x70 = mb + 0x3541; //lea rax, [0xFFFFFFFFFC8F5550] : RSP+0x70
  872. rax *= RSP_0x70; //imul rax, [rsp+0x70]
  873. rax += rbx; //add rax, rbx
  874. rcx += rax; //add rcx, rax
  875. rax = 0x1734D2140DB802AB; //mov rax, 0x1734D2140DB802AB
  876. rcx ^= rax; //xor rcx, rax
  877. rax = 0x517DAA2368CED562; //mov rax, 0x517DAA2368CED562
  878. rcx += rax; //add rcx, rax
  879. rax = rcx; //mov rax, rcx
  880. rax >>= 0x22; //shr rax, 0x22
  881. rcx ^= rax; //xor rcx, rax
  882. rax = 0xAD6A2DA132AB35B5; //mov rax, 0xAD6A2DA132AB35B5
  883. rcx *= rax; //imul rcx, rax
  884. return rcx;
  885. }
  886. case 9:
  887. {
  888. r11 = mb; //lea r11, [0xFFFFFFFFFC8F1BE3]
  889. r14 = mb + 0x31738B1E; //lea r14, [0x000000002E02A6F2]
  890. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBBC4A]
  891. rax = 0xFFFFFFFFFFFF51A4; //mov rax, 0xFFFFFFFFFFFF51A4
  892. rax -= rbx; //sub rax, rbx
  893. rax -= r11; //sub rax, r11
  894. rcx += rax; //add rcx, rax
  895. uintptr_t RSP_0x28;
  896. RSP_0x28 = 0xD3E0A58FC8956403; //mov rax, 0xD3E0A58FC8956403 : RSP+0x28
  897. rcx *= RSP_0x28; //imul rcx, [rsp+0x28]
  898. rax = r14; //mov rax, r14
  899. rax ^= rbx; //xor rax, rbx
  900. rcx -= rax; //sub rcx, rax
  901. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  902. rcx ^= rbx; //xor rcx, rbx
  903. rax = rbx + r11 * 1; //lea rax, [rbx+r11*1]
  904. rcx -= rax; //sub rcx, rax
  905. rax = rcx; //mov rax, rcx
  906. rax >>= 0xB; //shr rax, 0x0B
  907. rcx ^= rax; //xor rcx, rax
  908. rax = rcx; //mov rax, rcx
  909. rax >>= 0x16; //shr rax, 0x16
  910. rcx ^= rax; //xor rcx, rax
  911. rax = rcx; //mov rax, rcx
  912. rax >>= 0x2C; //shr rax, 0x2C
  913. rcx ^= rax; //xor rcx, rax
  914. return rcx;
  915. }
  916. case 10:
  917. {
  918. r14 = mb + 0xA0C9; //lea r14, [0xFFFFFFFFFC8FB784]
  919. rdi = mb + 0x2276; //lea rdi, [0xFFFFFFFFFC8F3922]
  920. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBB775]
  921. rax = rcx; //mov rax, rcx
  922. rax >>= 0x23; //shr rax, 0x23
  923. rax ^= rcx; //xor rax, rcx
  924. rcx = r14; //mov rcx, r14
  925. rax += rbx; //add rax, rbx
  926. rcx ^= rbx; //xor rcx, rbx
  927. rcx += rax; //add rcx, rax
  928. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  929. rax = 0x381651707B692F41; //mov rax, 0x381651707B692F41
  930. rcx *= rax; //imul rcx, rax
  931. rax = rdi; //mov rax, rdi
  932. rax ^= rbx; //xor rax, rbx
  933. rcx ^= rax; //xor rcx, rax
  934. rax = 0x56D35D82031EEB97; //mov rax, 0x56D35D82031EEB97
  935. rcx -= rax; //sub rcx, rax
  936. return rcx;
  937. }
  938. case 11:
  939. {
  940. rdi = mb + 0xEEB; //lea rdi, [0xFFFFFFFFFC8F2122]
  941. r14 = mb + 0x47696E13; //lea r14, [0x0000000043F8803B]
  942. r12 = mb + 0xE292; //lea r12, [0xFFFFFFFFFC8FF4AB]
  943. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBB2F0]
  944. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  945. rax = rcx; //mov rax, rcx
  946. rax >>= 0x12; //shr rax, 0x12
  947. rcx ^= rax; //xor rcx, rax
  948. rdx = mb + 0x2C830BF4; //lea rdx, [0x0000000029121AF5]
  949. rdx += rbx; //add rdx, rbx
  950. rax = rcx; //mov rax, rcx
  951. rax >>= 0x24; //shr rax, 0x24
  952. rdx ^= rax; //xor rdx, rax
  953. rax = 0x292F3B40A9250B2; //mov rax, 0x292F3B40A9250B2
  954. rdx ^= r12; //xor rdx, r12
  955. rdx ^= rbx; //xor rdx, rbx
  956. rcx ^= rdx; //xor rcx, rdx
  957. rcx ^= rax; //xor rcx, rax
  958. rax = 0xC5930A29A7EFC49F; //mov rax, 0xC5930A29A7EFC49F
  959. rcx *= rax; //imul rcx, rax
  960. rax = rbx + rdi * 1; //lea rax, [rbx+rdi*1]
  961. rcx ^= rax; //xor rcx, rax
  962. rax = rbx + r14 * 1; //lea rax, [rbx+r14*1]
  963. rcx += rax; //add rcx, rax
  964. return rcx;
  965. }
  966. case 12:
  967. {
  968. r11 = mb; //lea r11, [0xFFFFFFFFFC8F0D9D]
  969. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBAE87]
  970. r14 = mb + 0x66E3EE74; //lea r14, [0x000000006372FB8C]
  971. rcx ^= r11; //xor rcx, r11
  972. rax = 0x6ACDE02D21D7B604; //mov rax, 0x6ACDE02D21D7B604
  973. rcx += rax; //add rcx, rax
  974. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  975. rax = 0x3EF7958FDF3B3A5A; //mov rax, 0x3EF7958FDF3B3A5A
  976. rcx ^= rax; //xor rcx, rax
  977. rdx = rbx + r14 * 1; //lea rdx, [rbx+r14*1]
  978. rax = rcx; //mov rax, rcx
  979. rcx = 0x97808A3F49B790F; //mov rcx, 0x97808A3F49B790F
  980. rax *= rcx; //imul rax, rcx
  981. rcx = rdx; //mov rcx, rdx
  982. rcx ^= rax; //xor rcx, rax
  983. rax = rcx; //mov rax, rcx
  984. rax >>= 0x18; //shr rax, 0x18
  985. rcx ^= rax; //xor rcx, rax
  986. rax = rcx; //mov rax, rcx
  987. rax >>= 0x30; //shr rax, 0x30
  988. rcx ^= rax; //xor rcx, rax
  989. rax = mb + 0xCE5F; //lea rax, [0xFFFFFFFFFC8FD976]
  990. rax = ~rax; //not rax
  991. rax *= rbx; //imul rax, rbx
  992. rcx ^= rax; //xor rcx, rax
  993. return rcx;
  994. }
  995. case 13:
  996. {
  997. r14 = mb + 0x73A4C4D0; //lea r14, [0x000000007033CE4A]
  998. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBAA29]
  999. rax = rbx; //mov rax, rbx
  1000. rax = ~rax; //not rax
  1001. uintptr_t RSP_0x28;
  1002. RSP_0x28 = mb + 0x4EC2; //lea rax, [0xFFFFFFFFFC8F585A] : RSP+0x28
  1003. rax += RSP_0x28; //add rax, [rsp+0x28]
  1004. rcx ^= rax; //xor rcx, rax
  1005. rax = 0x472D432331AB59D7; //mov rax, 0x472D432331AB59D7
  1006. rcx *= rax; //imul rcx, rax
  1007. rax = r14; //mov rax, r14
  1008. rax ^= rbx; //xor rax, rbx
  1009. rcx -= rax; //sub rcx, rax
  1010. rax = rcx; //mov rax, rcx
  1011. rax >>= 0x22; //shr rax, 0x22
  1012. rcx ^= rax; //xor rcx, rax
  1013. rax = 0x48263A1870305F6A; //mov rax, 0x48263A1870305F6A
  1014. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  1015. rcx += rax; //add rcx, rax
  1016. rax = 0x2305A6BE0DD19F9; //mov rax, 0x2305A6BE0DD19F9
  1017. rcx += rax; //add rcx, rax
  1018. rcx -= rbx; //sub rcx, rbx
  1019. return rcx;
  1020. }
  1021. case 14:
  1022. {
  1023. r11 = mb; //lea r11, [0xFFFFFFFFFC8F04A2]
  1024. r14 = mb + 0xE1DC; //lea r14, [0xFFFFFFFFFC8FE66F]
  1025. r9 = *(uintptr_t*)(mb + 0xA4CA154); //mov r9, [0x0000000006DBA54D]
  1026. rax = r14; //mov rax, r14
  1027. rax ^= rbx; //xor rax, rbx
  1028. rcx -= rax; //sub rcx, rax
  1029. rax = rcx; //mov rax, rcx
  1030. rax >>= 0x14; //shr rax, 0x14
  1031. rcx ^= rax; //xor rcx, rax
  1032. rax = rcx; //mov rax, rcx
  1033. rax >>= 0x28; //shr rax, 0x28
  1034. rcx ^= rax; //xor rcx, rax
  1035. rax = 0xB12797F751D3F65; //mov rax, 0xB12797F751D3F65
  1036. rcx *= rax; //imul rcx, rax
  1037. rcx -= rbx; //sub rcx, rbx
  1038. rax = 0x118F69A46AC5FA46; //mov rax, 0x118F69A46AC5FA46
  1039. rcx += rax; //add rcx, rax
  1040. rcx += r11; //add rcx, r11
  1041. rax = 0x355CC9B2B3A45275; //mov rax, 0x355CC9B2B3A45275
  1042. rcx *= rax; //imul rcx, rax
  1043. rcx *= *(uintptr_t*)(r9 + 0x15); //imul rcx, [r9+0x15]
  1044. return rcx;
  1045. }
  1046. case 15:
  1047. {
  1048. rdi = mb + 0xD541; //lea rdi, [0xFFFFFFFFFC8FD5BA]
  1049. r10 = *(uintptr_t*)(mb + 0xA4CA154); //mov r10, [0x0000000006DBA104]
  1050. rax = rcx; //mov rax, rcx
  1051. rax >>= 0x1E; //shr rax, 0x1E
  1052. rcx ^= rax; //xor rcx, rax
  1053. rax = rcx; //mov rax, rcx
  1054. rax >>= 0x3C; //shr rax, 0x3C
  1055. rcx ^= rax; //xor rcx, rax
  1056. rcx += rbx; //add rcx, rbx
  1057. rax = 0xAD2409B78F36A2DB; //mov rax, 0xAD2409B78F36A2DB
  1058. rcx *= rax; //imul rcx, rax
  1059. rax = 0x447D3D2BAC938F13; //mov rax, 0x447D3D2BAC938F13
  1060. rcx += rax; //add rcx, rax
  1061. rax = rdi; //mov rax, rdi
  1062. rax ^= rbx; //xor rax, rbx
  1063. rcx ^= rax; //xor rcx, rax
  1064. rax = rcx; //mov rax, rcx
  1065. rax >>= 0x4; //shr rax, 0x04
  1066. rcx ^= rax; //xor rcx, rax
  1067. rax = rcx; //mov rax, rcx
  1068. rax >>= 0x8; //shr rax, 0x08
  1069. rcx ^= rax; //xor rcx, rax
  1070. rax = rcx; //mov rax, rcx
  1071. rax >>= 0x10; //shr rax, 0x10
  1072. rcx ^= rax; //xor rcx, rax
  1073. rax = rcx; //mov rax, rcx
  1074. rax >>= 0x20; //shr rax, 0x20
  1075. rcx ^= rax; //xor rcx, rax
  1076. rcx *= *(uintptr_t*)(r10 + 0x15); //imul rcx, [r10+0x15]
  1077. rax = 0x1B76B4458D25A156; //mov rax, 0x1B76B4458D25A156
  1078. rcx += rax; //add rcx, rax
  1079. return rcx;
  1080. }
  1081. }
  1082. }
  1083. uint64_t get_bone_ptr()
  1084. {
  1085. auto mb = g_data::base;
  1086. auto Peb = __readgsqword(0x60);
  1087. 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;
  1088. rax = *(uintptr_t*)(mb + 0xDE0EC68);
  1089. if(!rax)
  1090. return rax;
  1091. r10 = Peb; //mov r10, gs:[rcx]
  1092. rcx = r10; //mov rcx, r10
  1093. rcx = _rotr64(rcx, 0x16); //ror rcx, 0x16
  1094. rcx &= 0xF;
  1095. switch(rcx) {
  1096. case 0:
  1097. {
  1098. rbx = mb; //lea rbx, [0xFFFFFFFFFD342025]
  1099. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x000000000780C164]
  1100. rcx = 0xACB419C98FC6FF1B; //mov rcx, 0xACB419C98FC6FF1B
  1101. rax ^= rcx; //xor rax, rcx
  1102. rcx = 0xE876F381616C467B; //mov rcx, 0xE876F381616C467B
  1103. rax *= rcx; //imul rax, rcx
  1104. rax += rbx; //add rax, rbx
  1105. rax ^= rbx; //xor rax, rbx
  1106. rcx = rax; //mov rcx, rax
  1107. rcx >>= 0x1A; //shr rcx, 0x1A
  1108. rax ^= rcx; //xor rax, rcx
  1109. rcx = rax; //mov rcx, rax
  1110. rcx >>= 0x34; //shr rcx, 0x34
  1111. rax ^= rcx; //xor rax, rcx
  1112. rcx = 0x8A50BAFD723F8FC; //mov rcx, 0x8A50BAFD723F8FC
  1113. rax += r10; //add rax, r10
  1114. rax ^= rcx; //xor rax, rcx
  1115. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1116. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1117. rcx ^= r9; //xor rcx, r9
  1118. rcx = ~rcx; //not rcx
  1119. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1120. return rax;
  1121. }
  1122. case 1:
  1123. {
  1124. rbx = mb; //lea rbx, [0xFFFFFFFFFD341B6A]
  1125. r12 = mb + 0x3CC42EFF; //lea r12, [0x0000000039F84A5A]
  1126. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x000000000780BCF4]
  1127. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1128. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1129. rcx ^= r11; //xor rcx, r11
  1130. rcx = ~rcx; //not rcx
  1131. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1132. rcx = 0xD5776FB87F169C72; //mov rcx, 0xD5776FB87F169C72
  1133. rax ^= rcx; //xor rax, rcx
  1134. rcx = r10 + 0x1; //lea rcx, [r10+0x01]
  1135. rcx *= r12; //imul rcx, r12
  1136. rcx += r10; //add rcx, r10
  1137. rax += rcx; //add rax, rcx
  1138. rcx = 0xFFFFFFFFCEE5B08A; //mov rcx, 0xFFFFFFFFCEE5B08A
  1139. rcx -= r10; //sub rcx, r10
  1140. rcx -= rbx; //sub rcx, rbx
  1141. rax += rcx; //add rax, rcx
  1142. rcx = 0x1C3EA404CD52078F; //mov rcx, 0x1C3EA404CD52078F
  1143. rax *= rcx; //imul rax, rcx
  1144. rcx = rax; //mov rcx, rax
  1145. rcx >>= 0x1C; //shr rcx, 0x1C
  1146. rax ^= rcx; //xor rax, rcx
  1147. rcx = rax; //mov rcx, rax
  1148. rcx >>= 0x38; //shr rcx, 0x38
  1149. rax ^= rcx; //xor rax, rcx
  1150. rcx = rax; //mov rcx, rax
  1151. rcx >>= 0x9; //shr rcx, 0x09
  1152. rax ^= rcx; //xor rax, rcx
  1153. rcx = rax; //mov rcx, rax
  1154. rcx >>= 0x12; //shr rcx, 0x12
  1155. rax ^= rcx; //xor rax, rcx
  1156. rcx = rax; //mov rcx, rax
  1157. rcx >>= 0x24; //shr rcx, 0x24
  1158. rax ^= rcx; //xor rax, rcx
  1159. return rax;
  1160. }
  1161. case 2:
  1162. {
  1163. r15 = mb + 0x45F68597; //lea r15, [0x00000000432A9C0B]
  1164. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x000000000780B7FF]
  1165. rax -= r10; //sub rax, r10
  1166. rcx = rax; //mov rcx, rax
  1167. rdx = r15; //mov rdx, r15
  1168. rcx >>= 0x1F; //shr rcx, 0x1F
  1169. rdx = ~rdx; //not rdx
  1170. rax ^= rcx; //xor rax, rcx
  1171. rdx ^= r10; //xor rdx, r10
  1172. rcx = rax; //mov rcx, rax
  1173. rcx >>= 0x3E; //shr rcx, 0x3E
  1174. rax ^= rcx; //xor rax, rcx
  1175. rax -= rdx; //sub rax, rdx
  1176. rcx = mb + 0x7F9A0137; //lea rcx, [0x000000007CCE1501]
  1177. rcx = ~rcx; //not rcx
  1178. rcx *= r10; //imul rcx, r10
  1179. rax += rcx; //add rax, rcx
  1180. rcx = 0xACD30D0E0CB3B609; //mov rcx, 0xACD30D0E0CB3B609
  1181. rax *= rcx; //imul rax, rcx
  1182. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1183. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1184. rcx ^= r11; //xor rcx, r11
  1185. rcx = ~rcx; //not rcx
  1186. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1187. rcx = 0xED4CD6EB4902A2CF; //mov rcx, 0xED4CD6EB4902A2CF
  1188. rax *= rcx; //imul rax, rcx
  1189. rcx = 0x58222EBCB451547; //mov rcx, 0x58222EBCB451547
  1190. rax -= rcx; //sub rax, rcx
  1191. return rax;
  1192. }
  1193. case 3:
  1194. {
  1195. rbx = mb; //lea rbx, [0xFFFFFFFFFD3411A1]
  1196. r15 = mb + 0x3B5B4CE9; //lea r15, [0x00000000388F5E7B]
  1197. r12 = mb + 0x6136; //lea r12, [0xFFFFFFFFFD3472B9]
  1198. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x000000000780B329]
  1199. uintptr_t RSP_0x70;
  1200. RSP_0x70 = 0x48710BD74BE7A67; //mov rcx, 0x48710BD74BE7A67 : RSP+0x70
  1201. rax *= RSP_0x70; //imul rax, [rsp+0x70]
  1202. rcx = r12; //mov rcx, r12
  1203. rcx = ~rcx; //not rcx
  1204. rcx ^= r10; //xor rcx, r10
  1205. rax -= rcx; //sub rax, rcx
  1206. rax -= rbx; //sub rax, rbx
  1207. rcx = r10; //mov rcx, r10
  1208. rcx ^= r15; //xor rcx, r15
  1209. rax += rcx; //add rax, rcx
  1210. rcx = rax; //mov rcx, rax
  1211. rcx >>= 0x28; //shr rcx, 0x28
  1212. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1213. rax ^= rcx; //xor rax, rcx
  1214. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1215. rdx ^= r11; //xor rdx, r11
  1216. rdx = ~rdx; //not rdx
  1217. rax *= *(uintptr_t*)(rdx + 0x13); //imul rax, [rdx+0x13]
  1218. rcx = 0xF1760FA9D50E29D9; //mov rcx, 0xF1760FA9D50E29D9
  1219. rax *= rcx; //imul rax, rcx
  1220. rcx = rax; //mov rcx, rax
  1221. rcx >>= 0x26; //shr rcx, 0x26
  1222. rax ^= rcx; //xor rax, rcx
  1223. return rax;
  1224. }
  1225. case 4:
  1226. {
  1227. rbx = mb; //lea rbx, [0xFFFFFFFFFD340CDC]
  1228. r15 = mb + 0x1159; //lea r15, [0xFFFFFFFFFD341E26]
  1229. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x000000000780AE00]
  1230. rax ^= r15; //xor rax, r15
  1231. rcx = 0x46C79791C061B179; //mov rcx, 0x46C79791C061B179
  1232. rax *= rcx; //imul rax, rcx
  1233. rax -= rbx; //sub rax, rbx
  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 *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1239. rcx = 0x7E856C7DFAD163F2; //mov rcx, 0x7E856C7DFAD163F2
  1240. rax ^= rcx; //xor rax, rcx
  1241. rcx = rax; //mov rcx, rax
  1242. rcx >>= 0x21; //shr rcx, 0x21
  1243. rax ^= rcx; //xor rax, rcx
  1244. rcx = 0xE2741BA015D87134; //mov rcx, 0xE2741BA015D87134
  1245. rax ^= rcx; //xor rax, rcx
  1246. return rax;
  1247. }
  1248. case 5:
  1249. {
  1250. r14 = mb + 0x5C092D57; //lea r14, [0x00000000593D3572]
  1251. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x000000000780A92F]
  1252. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1253. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1254. rcx ^= r9; //xor rcx, r9
  1255. rcx = ~rcx; //not rcx
  1256. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1257. rax -= r10; //sub rax, r10
  1258. rcx = r10 + 0x1; //lea rcx, [r10+0x01]
  1259. rcx *= r14; //imul rcx, r14
  1260. rax += rcx; //add rax, rcx
  1261. rcx = 0xD25A6F4DBF815BDB; //mov rcx, 0xD25A6F4DBF815BDB
  1262. rax *= rcx; //imul rax, rcx
  1263. rcx = 0x8F98A261B2CD12C1; //mov rcx, 0x8F98A261B2CD12C1
  1264. rax *= rcx; //imul rax, rcx
  1265. rcx = 0xB4F7E2E4B937DB54; //mov rcx, 0xB4F7E2E4B937DB54
  1266. rax ^= rcx; //xor rax, rcx
  1267. rcx = rax; //mov rcx, rax
  1268. rcx >>= 0x25; //shr rcx, 0x25
  1269. rax ^= rcx; //xor rax, rcx
  1270. rcx = rax; //mov rcx, rax
  1271. rcx >>= 0x22; //shr rcx, 0x22
  1272. rax ^= rcx; //xor rax, rcx
  1273. return rax;
  1274. }
  1275. case 6:
  1276. {
  1277. rbx = mb; //lea rbx, [0xFFFFFFFFFD3402A6]
  1278. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x000000000780A3E7]
  1279. rax -= rbx; //sub rax, rbx
  1280. rcx = 0x168B437727824717; //mov rcx, 0x168B437727824717
  1281. rax *= rcx; //imul rax, rcx
  1282. rcx = 0x45308B9197D0FD0C; //mov rcx, 0x45308B9197D0FD0C
  1283. rax += rcx; //add rax, rcx
  1284. rax += rbx; //add rax, rbx
  1285. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1286. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1287. rcx ^= r9; //xor rcx, r9
  1288. rcx = ~rcx; //not rcx
  1289. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1290. rcx = rax; //mov rcx, rax
  1291. rcx >>= 0x15; //shr rcx, 0x15
  1292. rax ^= rcx; //xor rax, rcx
  1293. rcx = rax; //mov rcx, rax
  1294. rcx >>= 0x2A; //shr rcx, 0x2A
  1295. rcx ^= r10; //xor rcx, r10
  1296. rax ^= rcx; //xor rax, rcx
  1297. rcx = 0x106DBB44164D7574; //mov rcx, 0x106DBB44164D7574
  1298. rax ^= rcx; //xor rax, rcx
  1299. return rax;
  1300. }
  1301. case 7:
  1302. {
  1303. r15 = mb + 0x654; //lea r15, [0xFFFFFFFFFD340416]
  1304. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x0000000007809EF8]
  1305. rcx = 0x4B726662F15631D3; //mov rcx, 0x4B726662F15631D3
  1306. rax += rcx; //add rax, rcx
  1307. rcx = rax; //mov rcx, rax
  1308. rcx >>= 0x25; //shr rcx, 0x25
  1309. rax ^= rcx; //xor rax, rcx
  1310. rcx = 0xC19C0C0BD182C55F; //mov rcx, 0xC19C0C0BD182C55F
  1311. rax *= rcx; //imul rax, rcx
  1312. rcx = rax; //mov rcx, rax
  1313. rcx >>= 0x1C; //shr rcx, 0x1C
  1314. rax ^= rcx; //xor rax, rcx
  1315. rcx = rax; //mov rcx, rax
  1316. rcx >>= 0x38; //shr rcx, 0x38
  1317. rax ^= rcx; //xor rax, rcx
  1318. rcx = rax; //mov rcx, rax
  1319. rcx >>= 0x13; //shr rcx, 0x13
  1320. rax ^= rcx; //xor rax, rcx
  1321. rcx = rax; //mov rcx, rax
  1322. rcx >>= 0x26; //shr rcx, 0x26
  1323. rax ^= rcx; //xor rax, rcx
  1324. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1325. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1326. rcx ^= r11; //xor rcx, r11
  1327. rcx = ~rcx; //not rcx
  1328. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1329. rcx = r10; //mov rcx, r10
  1330. rcx ^= r15; //xor rcx, r15
  1331. rax -= rcx; //sub rax, rcx
  1332. rcx = 0x365856E75B6B102E; //mov rcx, 0x365856E75B6B102E
  1333. rax ^= rcx; //xor rax, rcx
  1334. return rax;
  1335. }
  1336. case 8:
  1337. {
  1338. rbx = mb; //lea rbx, [0xFFFFFFFFFD33F84C]
  1339. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x00000000078099CA]
  1340. rcx = rax; //mov rcx, rax
  1341. rcx >>= 0x26; //shr rcx, 0x26
  1342. rax ^= rcx; //xor rax, rcx
  1343. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1344. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1345. rdx ^= r11; //xor rdx, r11
  1346. rdx = ~rdx; //not rdx
  1347. rax *= *(uintptr_t*)(rdx + 0x13); //imul rax, [rdx+0x13]
  1348. rdx = mb + 0x60E4CDB9; //lea rdx, [0x000000005E18C21E]
  1349. rcx = r10; //mov rcx, r10
  1350. rcx *= rdx; //imul rcx, rdx
  1351. rcx -= rbx; //sub rcx, rbx
  1352. rax += rcx; //add rax, rcx
  1353. rax ^= r10; //xor rax, r10
  1354. rcx = 0x103F869F108D72E7; //mov rcx, 0x103F869F108D72E7
  1355. rax *= rcx; //imul rax, rcx
  1356. rcx = 0xF8293C9CC997C23B; //mov rcx, 0xF8293C9CC997C23B
  1357. rax ^= rcx; //xor rax, rcx
  1358. rcx = 0x237485300E1BA9B4; //mov rcx, 0x237485300E1BA9B4
  1359. rax += rcx; //add rax, rcx
  1360. return rax;
  1361. }
  1362. case 9:
  1363. {
  1364. rbx = mb; //lea rbx, [0xFFFFFFFFFD33F412]
  1365. r13 = mb + 0x294BAA8A; //lea r13, [0x00000000267F9E8D]
  1366. r12 = mb + 0x524F4E33; //lea r12, [0x000000004F834227]
  1367. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x000000000780952A]
  1368. rcx = r12; //mov rcx, r12
  1369. rcx = ~rcx; //not rcx
  1370. rcx += r10; //add rcx, r10
  1371. rax += rcx; //add rax, rcx
  1372. rax += rbx; //add rax, rbx
  1373. rcx = rbx + 0xef67; //lea rcx, [rbx+0xEF67]
  1374. rcx += r10; //add rcx, r10
  1375. rax ^= rcx; //xor rax, rcx
  1376. rcx = 0xE634D55B1A06EEB9; //mov rcx, 0xE634D55B1A06EEB9
  1377. rax *= rcx; //imul rax, rcx
  1378. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1379. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1380. rcx ^= r9; //xor rcx, r9
  1381. rcx = ~rcx; //not rcx
  1382. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1383. rcx = rax; //mov rcx, rax
  1384. rcx >>= 0x26; //shr rcx, 0x26
  1385. rax ^= rcx; //xor rax, rcx
  1386. rcx = r10; //mov rcx, r10
  1387. rcx = ~rcx; //not rcx
  1388. rcx *= r13; //imul rcx, r13
  1389. rax ^= rcx; //xor rax, rcx
  1390. rcx = rax; //mov rcx, rax
  1391. rcx >>= 0xF; //shr rcx, 0x0F
  1392. rax ^= rcx; //xor rax, rcx
  1393. rcx = rax; //mov rcx, rax
  1394. rcx >>= 0x1E; //shr rcx, 0x1E
  1395. rax ^= rcx; //xor rax, rcx
  1396. rcx = rax; //mov rcx, rax
  1397. rcx >>= 0x3C; //shr rcx, 0x3C
  1398. rax ^= rcx; //xor rax, rcx
  1399. return rax;
  1400. }
  1401. case 10:
  1402. {
  1403. rbx = mb; //lea rbx, [0xFFFFFFFFFD33ED4E]
  1404. r12 = mb + 0x3AB5494F; //lea r12, [0x0000000037E9368E]
  1405. r15 = mb + 0x2BA88ECC; //lea r15, [0x0000000028DC7BFC]
  1406. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x0000000007808E8C]
  1407. rcx = rax; //mov rcx, rax
  1408. rcx >>= 0x5; //shr rcx, 0x05
  1409. rax ^= rcx; //xor rax, rcx
  1410. rcx = rax; //mov rcx, rax
  1411. rcx >>= 0xA; //shr rcx, 0x0A
  1412. rax ^= rcx; //xor rax, rcx
  1413. rcx = rax; //mov rcx, rax
  1414. rcx >>= 0x14; //shr rcx, 0x14
  1415. rax ^= rcx; //xor rax, rcx
  1416. rcx = rax; //mov rcx, rax
  1417. rcx >>= 0x28; //shr rcx, 0x28
  1418. rax ^= rcx; //xor rax, rcx
  1419. rcx = r12; //mov rcx, r12
  1420. rcx = ~rcx; //not rcx
  1421. rcx *= r10; //imul rcx, r10
  1422. rax += rcx; //add rax, rcx
  1423. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1424. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1425. rcx ^= r11; //xor rcx, r11
  1426. rcx = ~rcx; //not rcx
  1427. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1428. rcx = r10; //mov rcx, r10
  1429. rcx *= r15; //imul rcx, r15
  1430. rax ^= rcx; //xor rax, rcx
  1431. rcx = 0xB0032DEADD62D54C; //mov rcx, 0xB0032DEADD62D54C
  1432. rax += rcx; //add rax, rcx
  1433. rax += rbx; //add rax, rbx
  1434. rcx = 0x94972D923648A93D; //mov rcx, 0x94972D923648A93D
  1435. rax *= rcx; //imul rax, rcx
  1436. return rax;
  1437. }
  1438. case 11:
  1439. {
  1440. rbx = mb; //lea rbx, [0xFFFFFFFFFD33E820]
  1441. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x00000000078089A5]
  1442. rcx = r10; //mov rcx, r10
  1443. rcx = ~rcx; //not rcx
  1444. rcx -= rbx; //sub rcx, rbx
  1445. rcx -= 0x8735; //sub rcx, 0x8735
  1446. rax ^= rcx; //xor rax, rcx
  1447. uintptr_t RSP_0x48;
  1448. RSP_0x48 = 0x4A4BD6BF0A661C25; //mov rcx, 0x4A4BD6BF0A661C25 : RSP+0x48
  1449. rax *= RSP_0x48; //imul rax, [rsp+0x48]
  1450. uintptr_t RSP_0xFFFFFFFFFFFFFF98;
  1451. RSP_0xFFFFFFFFFFFFFF98 = 0x63F84D36C7104CA2; //mov rcx, 0x63F84D36C7104CA2 : RBP+0xFFFFFFFFFFFFFF98
  1452. rax += RSP_0xFFFFFFFFFFFFFF98; //add rax, [rbp-0x68]
  1453. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1454. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1455. rcx ^= r11; //xor rcx, r11
  1456. rcx = ~rcx; //not rcx
  1457. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1458. rcx = rax; //mov rcx, rax
  1459. rcx >>= 0x9; //shr rcx, 0x09
  1460. rax ^= rcx; //xor rax, rcx
  1461. rcx = rax; //mov rcx, rax
  1462. rcx >>= 0x12; //shr rcx, 0x12
  1463. rax ^= rcx; //xor rax, rcx
  1464. rcx = rax; //mov rcx, rax
  1465. rcx >>= 0x24; //shr rcx, 0x24
  1466. rax ^= rcx; //xor rax, rcx
  1467. rcx = mb + 0xF43B; //lea rcx, [0xFFFFFFFFFD34DA87]
  1468. rax -= rcx; //sub rax, rcx
  1469. rax += r10; //add rax, r10
  1470. rcx = 0x25F4D7E70862F64; //mov rcx, 0x25F4D7E70862F64
  1471. rcx -= r10; //sub rcx, r10
  1472. rax += rcx; //add rax, rcx
  1473. return rax;
  1474. }
  1475. case 12:
  1476. {
  1477. r14 = mb + 0x5C6EDFEB; //lea r14, [0x0000000059A2C347]
  1478. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x00000000078084E3]
  1479. rcx = 0x60E7602E2CBBF58F; //mov rcx, 0x60E7602E2CBBF58F
  1480. rax *= rcx; //imul rax, rcx
  1481. rax -= r10; //sub rax, r10
  1482. rcx = rax; //mov rcx, rax
  1483. rcx >>= 0x13; //shr rcx, 0x13
  1484. rax ^= rcx; //xor rax, rcx
  1485. rcx = rax; //mov rcx, rax
  1486. rcx >>= 0x26; //shr rcx, 0x26
  1487. rax ^= rcx; //xor rax, rcx
  1488. rcx = 0x5BECE811E5282A13; //mov rcx, 0x5BECE811E5282A13
  1489. rax *= rcx; //imul rax, rcx
  1490. rax ^= r10; //xor rax, r10
  1491. rax ^= r14; //xor rax, r14
  1492. rcx = 0x36AAED9D7BDACA91; //mov rcx, 0x36AAED9D7BDACA91
  1493. rax -= rcx; //sub rax, rcx
  1494. rcx = rax; //mov rcx, rax
  1495. rcx >>= 0x4; //shr rcx, 0x04
  1496. rax ^= rcx; //xor rax, rcx
  1497. rcx = rax; //mov rcx, rax
  1498. rcx >>= 0x8; //shr rcx, 0x08
  1499. rax ^= rcx; //xor rax, rcx
  1500. rcx = rax; //mov rcx, rax
  1501. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1502. rcx >>= 0x10; //shr rcx, 0x10
  1503. rax ^= rcx; //xor rax, rcx
  1504. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1505. rcx = rax; //mov rcx, rax
  1506. rdx ^= r11; //xor rdx, r11
  1507. rcx >>= 0x20; //shr rcx, 0x20
  1508. rdx = ~rdx; //not rdx
  1509. rax ^= rcx; //xor rax, rcx
  1510. rax *= *(uintptr_t*)(rdx + 0x13); //imul rax, [rdx+0x13]
  1511. return rax;
  1512. }
  1513. case 13:
  1514. {
  1515. rbx = mb; //lea rbx, [0xFFFFFFFFFD33DE21]
  1516. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x0000000007807F4B]
  1517. rcx = 0x2682F4D689B5671D; //mov rcx, 0x2682F4D689B5671D
  1518. rax *= rcx; //imul rax, rcx
  1519. rcx = mb + 0x5C70; //lea rcx, [0xFFFFFFFFFD3437BE]
  1520. rax -= r10; //sub rax, r10
  1521. rax += rcx; //add rax, rcx
  1522. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1523. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1524. rcx ^= r9; //xor rcx, r9
  1525. rcx = ~rcx; //not rcx
  1526. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1527. rax -= r10; //sub rax, r10
  1528. rax -= rbx; //sub rax, rbx
  1529. rcx = 0xC9C580B162511036; //mov rcx, 0xC9C580B162511036
  1530. rax ^= rcx; //xor rax, rcx
  1531. rax += r10; //add rax, r10
  1532. rcx = rax; //mov rcx, rax
  1533. rcx >>= 0xB; //shr rcx, 0x0B
  1534. rax ^= rcx; //xor rax, rcx
  1535. rcx = rax; //mov rcx, rax
  1536. rcx >>= 0x16; //shr rcx, 0x16
  1537. rax ^= rcx; //xor rax, rcx
  1538. rcx = rax; //mov rcx, rax
  1539. rcx >>= 0x2C; //shr rcx, 0x2C
  1540. rax ^= rcx; //xor rax, rcx
  1541. return rax;
  1542. }
  1543. case 14:
  1544. {
  1545. rbx = mb; //lea rbx, [0xFFFFFFFFFD33D8B2]
  1546. r11 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r11, [0x0000000007807A38]
  1547. rcx = rax; //mov rcx, rax
  1548. rcx >>= 0x3; //shr rcx, 0x03
  1549. rax ^= rcx; //xor rax, rcx
  1550. rcx = rax; //mov rcx, rax
  1551. rcx >>= 0x6; //shr rcx, 0x06
  1552. rax ^= rcx; //xor rax, rcx
  1553. rcx = rax; //mov rcx, rax
  1554. rcx >>= 0xC; //shr rcx, 0x0C
  1555. rax ^= rcx; //xor rax, rcx
  1556. rcx = rax; //mov rcx, rax
  1557. rcx >>= 0x18; //shr rcx, 0x18
  1558. rax ^= rcx; //xor rax, rcx
  1559. rcx = rax; //mov rcx, rax
  1560. rcx >>= 0x30; //shr rcx, 0x30
  1561. rax ^= rcx; //xor rax, rcx
  1562. rcx = rax; //mov rcx, rax
  1563. rcx >>= 0x1E; //shr rcx, 0x1E
  1564. rax ^= rcx; //xor rax, rcx
  1565. rdx = 0; //and rdx, 0xFFFFFFFFC0000000
  1566. rcx = rax; //mov rcx, rax
  1567. rdx = _rotl64(rdx, 0x10); //rol rdx, 0x10
  1568. rcx >>= 0x3C; //shr rcx, 0x3C
  1569. rdx ^= r11; //xor rdx, r11
  1570. rax ^= rcx; //xor rax, rcx
  1571. rdx = ~rdx; //not rdx
  1572. rax -= rbx; //sub rax, rbx
  1573. rax *= *(uintptr_t*)(rdx + 0x13); //imul rax, [rdx+0x13]
  1574. rcx = 0x78B39385B5F074F2; //mov rcx, 0x78B39385B5F074F2
  1575. rax ^= rcx; //xor rax, rcx
  1576. rax -= r10; //sub rax, r10
  1577. rcx = 0x3849D20FD1391A9C; //mov rcx, 0x3849D20FD1391A9C
  1578. rax ^= rcx; //xor rax, rcx
  1579. rcx = 0xC00D39A041991E8D; //mov rcx, 0xC00D39A041991E8D
  1580. rax *= rcx; //imul rax, rcx
  1581. return rax;
  1582. }
  1583. case 15:
  1584. {
  1585. rbx = mb; //lea rbx, [0xFFFFFFFFFD33D39D]
  1586. r15 = mb + 0x2C05B53A; //lea r15, [0x00000000293988C8]
  1587. r9 = *(uintptr_t*)(mb + 0xA4CA1E4); //mov r9, [0x00000000078074E9]
  1588. rcx = 0; //and rcx, 0xFFFFFFFFC0000000
  1589. rcx = _rotl64(rcx, 0x10); //rol rcx, 0x10
  1590. rcx ^= r9; //xor rcx, r9
  1591. rcx = ~rcx; //not rcx
  1592. rax *= *(uintptr_t*)(rcx + 0x13); //imul rax, [rcx+0x13]
  1593. rax -= r10; //sub rax, r10
  1594. rax -= rbx; //sub rax, rbx
  1595. rcx = r10; //mov rcx, r10
  1596. rcx = ~rcx; //not rcx
  1597. rcx ^= r15; //xor rcx, r15
  1598. rax -= rcx; //sub rax, rcx
  1599. rcx = rax; //mov rcx, rax
  1600. rcx >>= 0xD; //shr rcx, 0x0D
  1601. rax ^= rcx; //xor rax, rcx
  1602. rcx = rax; //mov rcx, rax
  1603. rcx >>= 0x1A; //shr rcx, 0x1A
  1604. rax ^= rcx; //xor rax, rcx
  1605. rcx = rax; //mov rcx, rax
  1606. rcx >>= 0x34; //shr rcx, 0x34
  1607. rax ^= rcx; //xor rax, rcx
  1608. rcx = 0x6C177C995AED1613; //mov rcx, 0x6C177C995AED1613
  1609. rax *= rcx; //imul rax, rcx
  1610. rcx = 0xC5F26860B9637B27; //mov rcx, 0xC5F26860B9637B27
  1611. rax ^= rcx; //xor rax, rcx
  1612. rcx = 0x563DC016F252B280; //mov rcx, 0x563DC016F252B280
  1613. rax += rcx; //add rax, rcx
  1614. return rax;
  1615. }
  1616. }
  1617. }
  1618. uintptr_t get_bone_index(uint32_t bone_index)
  1619. {
  1620. auto mb = g_data::base;
  1621. auto Peb = __readgsqword(0x60);
  1622. 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;
  1623. rdi = bone_index;
  1624. rcx = rdi * 0x13C8;
  1625. rax = 0x47B14E60F79042A7; //mov rax, 0x47B14E60F79042A7
  1626. rax = _umul128(rax, rcx, (uintptr_t*)&rdx); //mul rcx
  1627. r11 = mb; //lea r11, [0xFFFFFFFFFD4974B8]
  1628. r10 = 0x9C9EEA3E2C95BCEF; //mov r10, 0x9C9EEA3E2C95BCEF
  1629. rdx >>= 0xB; //shr rdx, 0x0B
  1630. rax = rdx * 0x1C91; //imul rax, rdx, 0x1C91
  1631. rcx -= rax; //sub rcx, rax
  1632. rax = 0x27856C2E77E032A3; //mov rax, 0x27856C2E77E032A3
  1633. r8 = rcx * 0x1C91; //imul r8, rcx, 0x1C91
  1634. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  1635. rdx >>= 0xB; //shr rdx, 0x0B
  1636. rax = rdx * 0x33D2; //imul rax, rdx, 0x33D2
  1637. r8 -= rax; //sub r8, rax
  1638. rax = 0xE76C3265CFF9AC0B; //mov rax, 0xE76C3265CFF9AC0B
  1639. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  1640. rax = 0xCCCCCCCCCCCCCCCD; //mov rax, 0xCCCCCCCCCCCCCCCD
  1641. rdx >>= 0xC; //shr rdx, 0x0C
  1642. rcx = rdx * 0x11B3; //imul rcx, rdx, 0x11B3
  1643. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  1644. rdx >>= 0x2; //shr rdx, 0x02
  1645. rcx += rdx; //add rcx, rdx
  1646. rax = rcx + rcx * 4; //lea rax, [rcx+rcx*4]
  1647. rax += rax; //add rax, rax
  1648. rcx = r8 + r8 * 2; //lea rcx, [r8+r8*2]
  1649. rcx <<= 0x2; //shl rcx, 0x02
  1650. rcx -= rax; //sub rcx, rax
  1651. rax = *(uint16_t*)(rcx + r11 * 1 + 0xA59EF50); //movzx eax, word ptr [rcx+r11*1+0xA59EF50]
  1652. r8 = rax * 0x13C8; //imul r8, rax, 0x13C8
  1653. rax = r10; //mov rax, r10
  1654. rax = _umul128(rax, r8, (uintptr_t*)&rdx); //mul r8
  1655. rax = r10; //mov rax, r10
  1656. rdx >>= 0xC; //shr rdx, 0x0C
  1657. rcx = rdx * 0x1A27; //imul rcx, rdx, 0x1A27
  1658. r8 -= rcx; //sub r8, rcx
  1659. r9 = r8 * 0x1C3B; //imul r9, r8, 0x1C3B
  1660. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  1661. rdx >>= 0xC; //shr rdx, 0x0C
  1662. rax = rdx * 0x1A27; //imul rax, rdx, 0x1A27
  1663. r9 -= rax; //sub r9, rax
  1664. rax = 0x27DFA38A1CE4D6F9; //mov rax, 0x27DFA38A1CE4D6F9
  1665. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  1666. rax = r9; //mov rax, r9
  1667. rax -= rdx; //sub rax, rdx
  1668. rax >>= 0x1; //shr rax, 0x01
  1669. rax += rdx; //add rax, rdx
  1670. rax >>= 0x9; //shr rax, 0x09
  1671. rcx = rax * 0x376; //imul rcx, rax, 0x376
  1672. rax = 0x2E8BA2E8BA2E8BA3; //mov rax, 0x2E8BA2E8BA2E8BA3
  1673. rax = _umul128(rax, r9, (uintptr_t*)&rdx); //mul r9
  1674. rdx >>= 0x1; //shr rdx, 0x01
  1675. rcx += rdx; //add rcx, rdx
  1676. rax = rcx * 0x16; //imul rax, rcx, 0x16
  1677. rcx = r9 + r9 * 2; //lea rcx, [r9+r9*2]
  1678. rcx <<= 0x3; //shl rcx, 0x03
  1679. rcx -= rax; //sub rcx, rax
  1680. r15 = *(uint16_t*)(rcx + r11 * 1 + 0xA5AA050); //movsx r15d, word ptr [rcx+r11*1+0xA5AA050]
  1681. return r15;
  1682. }
Advertisement
Add Comment
Please, Sign In to add comment