Guest User

Untitled

a guest
Mar 28th, 2020
75
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. DWORD64 __fastcall get_entities()
  3. {
  4. unsigned __int64 v5; // rax
  5. __int64 v6; // r9
  6. int v7; // ecx
  7. __int64 v8; // r8
  8. unsigned __int64 v9; // rax
  9. unsigned __int64 v10; // rax
  10. unsigned __int64 v11; // rax
  11. unsigned __int64 v12; // rax
  12. unsigned __int64 v13; // rax
  13. int v14; // ecx
  14. unsigned __int64 v15; // rax
  15. unsigned __int64 v16; // rax
  16. unsigned __int64 v17; // rax
  17. unsigned __int64 v18; // rax
  18. unsigned __int64 v19; // rcx
  19. unsigned __int64 v20; // rax
  20. int v21; // ecx
  21. unsigned __int64 v22; // rax
  22. unsigned __int64 v23; // rax
  23. int v24; // ecx
  24. unsigned __int64 v25; // rax
  25. unsigned __int64 v26; // rax
  26. unsigned __int64 v27; // rax
  27. unsigned __int64 v28; // rax
  28. unsigned int v29; // edx
  29. int v30; // ecx
  30. unsigned __int64 v31; // rax
  31. unsigned __int64 v32; // rax
  32. unsigned __int64 v33; // rax
  33. unsigned __int64 v34; // rax
  34. unsigned __int64 v35; // rcx
  35. unsigned int v36; // edx
  36. int v37; // ecx
  37. unsigned __int64 v38; // rax
  38. unsigned __int64 v39; // rcx
  39. unsigned __int64 v40; // rax
  40. unsigned __int64 v41; // rax
  41. unsigned int v42; // edx
  42. int v43; // ecx
  43. unsigned __int64 v44; // rax
  44. unsigned int v45; // edx
  45. int v46; // ecx
  46. unsigned __int64 v47; // rcx
  47. unsigned __int64 v48; // rax
  48. unsigned __int64 v49; // rcx
  49. unsigned __int64 v50; // rax
  50. unsigned __int64 v51; // rax
  51. unsigned int v52; // edx
  52. int v53; // ecx
  53. unsigned __int64 v54; // rcx
  54. unsigned __int64 v55; // rax
  55. unsigned __int64 v56; // rcx
  56. unsigned __int64 v57; // rax
  57. int v58; // ecx
  58. unsigned __int64 v59; // rcx
  59. unsigned __int64 v60; // rax
  60. unsigned __int64 v61; // rax
  61. unsigned __int64 v62; // rax
  62. unsigned __int64 v63; // rax
  63. int v64; // ecx
  64. unsigned __int64 v65; // rax
  65. unsigned __int64 v66; // rax
  66. unsigned __int64 v67; // rax
  67. int v68; // ecx
  68. unsigned __int64 v69; // rcx
  69. unsigned __int64 v70; // rax
  70. unsigned __int64 v71; // rax
  71. unsigned __int64 v72; // rax
  72. int v73; // ecx
  73. unsigned __int64 v74; // rax
  74. unsigned __int64 v75; // rax
  75. unsigned __int64 v76; // rax
  76. unsigned int v77; // edx
  77. int v78; // ecx
  78. unsigned __int64 v79; // rcx
  79. unsigned __int64 v80; // rax
  80. unsigned __int64 v81; // rax
  81. unsigned __int64 v82; // rax
  82. int v83; // ecx
  83. unsigned __int64 v84; // rax
  84. unsigned __int64 v85; // rax
  85. unsigned __int64 v86; // rax
  86. unsigned __int64 v87; // rax
  87. int v88; // ecx
  88. unsigned __int64 v89; // rax
  89. unsigned __int64 v90; // rax
  90. unsigned __int64 v91; // rax
  91. unsigned __int64 v92; // rax
  92. unsigned __int64 v93; // rax
  93. __int64 v94; // rdx
  94.  
  95. const auto peb_address = reinterpret_cast<uint64_t>(GetPEB());
  96. if (!peb_address)
  97. return 0;
  98.  
  99. unsigned __int64 qword_7FF73F5E8275 = *(uintptr_t*)((uintptr_t)globals::mainModule + 0x37F8275);
  100. if (!qword_7FF73F5E8275)
  101. return 0;
  102.  
  103. v5 = *(uintptr_t*)((uintptr_t)globals::mainModule + 0x10764858);
  104. if (!v5)
  105. return 0;
  106.  
  107. v5 = *(uintptr_t*)(v5 + 0x10);
  108. if (!v5)
  109. return 0;
  110.  
  111. switch (__ROR8__((uint64_t)peb_address, 12) & 0xFi64)
  112. {
  113.  
  114. case 0i64:
  115. v6 = qword_7FF73F5E8275;
  116. v7 = -215334650;
  117. IDA_LODWORD(v8) = -637894527;
  118. do
  119. {
  120. if ((unsigned int)v8 > 0x2F1925D1)
  121. {
  122. switch ((DWORD)v8)
  123. {
  124. case 0x894199C9:
  125. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  126. 0,
  127. 16))
  128. + 9);
  129. v7 = -1656044642;
  130. break;
  131. case 0xD9FA8081:
  132. v13 = ((((279154826869148035i64 * v5) >> 11) ^ (279154826869148035i64 * v5)) >> 22) ^ ((279154826869148035i64 * v5) >> 11) ^ (279154826869148035i64 * v5);
  133. v5 = (v13 >> 44) ^ v13;
  134. v7 = 1354438984;
  135. break;
  136. case 0xE695FD56:
  137. v5 *= 1286231170876372887i64;
  138. v7 = -913516409;
  139. break;
  140. case 0xFD186B5D:
  141. v5 ^= v5 >> 32;
  142. v7 = 462263819;
  143. break;
  144. }
  145. }
  146. else
  147. {
  148. switch ((DWORD)v8)
  149. {
  150. case 0x2F1925D1:
  151. v5 ^= v5 >> 33;
  152. v7 = -1186633494;
  153. break;
  154. case 0x2B446A:
  155. v5 *= -7455582724775828167i64;
  156. v7 = 1000186924;
  157. break;
  158. case 0x2E52E7F:
  159. v9 = (((v5 >> 12) ^ v5) >> 24) ^ (v5 >> 12) ^ v5;
  160. v10 = ((-7978674832585199189i64 * ((v9 >> 48) ^ v9)) >> 11) ^ (-7978674832585199189i64 * ((v9 >> 48) ^ v9));
  161. v11 = (((v10 >> 22) ^ v10) >> 44) ^ (v10 >> 22) ^ v10;
  162. v12 = (((v11 >> 10) ^ v11) >> 20) ^ (v11 >> 10) ^ v11;
  163. v5 = (v12 >> 40) ^ v12;
  164. v7 = -1045507250;
  165. break;
  166. case 0x140B5A57:
  167. v5 ^= v5 >> 34;
  168. v7 = 1028675923;
  169. break;
  170. case 0x25252EAC:
  171. v7 = 859508772;
  172. v5 = -4326580056501010731i64
  173. * ((v5 >> 17) ^ v5 ^ (((v5 >> 17) ^ v5) >> 34))
  174. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  175. 0,
  176. 16))
  177. + 9));
  178. break;
  179. case 0x295B0304:
  180. v5 *= -4735444876904761375i64;
  181. v7 = -733779879;
  182. break;
  183. }
  184. }
  185. v8 = v7 ^ (unsigned int)v8;
  186. } while ((DWORD)v8 != -1772335813);
  187. break;
  188. case 1i64:
  189. v6 = qword_7FF73F5E8275;
  190. v14 = -1421739455;
  191. IDA_LODWORD(v8) = 1074241274;
  192. do
  193. {
  194. if ((unsigned int)v8 > 0x650270B6)
  195. {
  196. switch ((DWORD)v8)
  197. {
  198. case 0x7F5851F9:
  199. v5 ^= (((v5 >> 16) ^ v5) >> 32) ^ (v5 >> 16);
  200. v14 = -1732617670;
  201. break;
  202. case 0x819297F4:
  203. v19 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  204. 0,
  205. 16));
  206. v20 = ((*(uintptr_t*)(v19 + 13) * v5) >> 17) ^ (*(uintptr_t*)(v19 + 13) * v5);
  207. v5 = (v20 >> 34) ^ v20;
  208. v14 = -1182448197;
  209. break;
  210. case 0x854B90AA:
  211. v18 = (((v5 >> 14) ^ v5) >> 28) ^ (v5 >> 14) ^ v5;
  212. v14 = -1458132411;
  213. v5 = 3413544518411665113i64 * ((v18 >> 56) ^ v18);
  214. break;
  215. case 0xD1ABE8D6:
  216. v5 *= -6698299221468218401i64;
  217. v14 = -725603755;
  218. break;
  219. }
  220. }
  221. else
  222. {
  223. switch ((DWORD)v8)
  224. {
  225. case 0x650270B6:
  226. v17 = ((6217676989566351913i64 * v5) ^ ((6217676989566351913i64 * v5) >> 32))
  227. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  228. 0,
  229. 16))
  230. + 9));
  231. v5 = (v17 >> 33) ^ v17;
  232. v14 = 435067182;
  233. break;
  234. case 0x56BC283:
  235. v5 ^= v5 >> 34;
  236. v14 = 1617539637;
  237. break;
  238. case 0x40079EFA:
  239. v16 = ((((-8781049729379327165i64 * v5) >> 11) ^ (-8781049729379327165i64 * v5)) >> 22) ^ ((-8781049729379327165i64 * v5) >> 11) ^ (-8781049729379327165i64 * v5);
  240. v5 = (v16 >> 44) ^ v16;
  241. v14 = -1850968532;
  242. break;
  243. case 0x500684AC:
  244. v5 *= 6734988298214457105i64;
  245. v14 = 507389220;
  246. break;
  247. case 0x55061F6B:
  248. v15 = ((((9029082209774219265i64 * v5) >> 11) ^ (9029082209774219265i64 * v5)) >> 22) ^ ((9029082209774219265i64 * v5) >> 11) ^ (9029082209774219265i64 * v5);
  249. v5 = (v15 >> 44) ^ v15;
  250. v14 = 466402827;
  251. break;
  252. }
  253. }
  254. v8 = v14 ^ (unsigned int)v8;
  255. } while ((DWORD)v8 != 2095901080);
  256. break;
  257. case 2i64:
  258. v6 = qword_7FF73F5E8275;
  259. v21 = -1263544496;
  260. IDA_LODWORD(v8) = -510871146;
  261. do
  262. {
  263. if ((unsigned int)v8 > 0x6FE91FF7)
  264. {
  265. switch ((DWORD)v8)
  266. {
  267. case 0xA14914C5:
  268. v5 ^= v5 >> 37;
  269. v21 = -344456772;
  270. break;
  271. case 0xAA9CCAB9:
  272. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  273. 0,
  274. 16))
  275. + 7);
  276. v21 = 1458045148;
  277. break;
  278. case 0xBD3AE54B:
  279. v5 ^= v5 >> 40;
  280. v21 = -1406000299;
  281. break;
  282. case 0xE18CB996:
  283. v23 = ((((6657778913670413337i64 * v5) >> 11) ^ (6657778913670413337i64 * v5)) >> 22) ^ ((6657778913670413337i64 * v5) >> 11) ^ (6657778913670413337i64 * v5);
  284. v5 = (v23 ^ (v23 >> 44))
  285. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  286. 0,
  287. 16))
  288. + 9));
  289. v21 = -131551280;
  290. break;
  291. case 0xF2C4FD8C:
  292. v5 *= 5026977441755745957i64;
  293. v21 = -443969895;
  294. break;
  295. }
  296. }
  297. else
  298. {
  299. switch ((DWORD)v8)
  300. {
  301. case 0x6FE91FF7:
  302. v5 *= 7639646068965556851i64;
  303. v21 = 1230816256;
  304. break;
  305. case 0x19A41646:
  306. v21 = 1247323927;
  307. v5 = -6538909203353742063i64 * ((v5 >> 34) ^ v5);
  308. break;
  309. case 0x26B5DBF7:
  310. v5 ^= v5 >> 33;
  311. v21 = 721016676;
  312. break;
  313. case 0x2BC0CA87:
  314. v22 = (((v5 >> 10) ^ v5) >> 20) ^ (v5 >> 10) ^ v5;
  315. v21 = 88846004;
  316. v5 = 3798737981467209321i64 * ((v22 >> 40) ^ v22);
  317. break;
  318. case 0x4457C76F:
  319. v5 ^= (((v5 >> 19) ^ v5) >> 38) ^ (v5 >> 19);
  320. v21 = 22049745;
  321. break;
  322. case 0x53FCB151:
  323. v5 ^= v5 >> 32;
  324. v21 = 1008053926;
  325. break;
  326. }
  327. }
  328. v8 = v21 ^ (unsigned int)v8;
  329. } while ((DWORD)v8 != 206310547);
  330. break;
  331. case 3i64:
  332. v6 = qword_7FF73F5E8275;
  333. v24 = -1012227216;
  334. IDA_LODWORD(v8) = 1259926867;
  335. do
  336. {
  337. if ((unsigned int)v8 > 0x5DBF7315)
  338. {
  339. switch ((DWORD)v8)
  340. {
  341. case 0x6113B811:
  342. v5 *= -1099864626353076491i64;
  343. v24 = -393604902;
  344. break;
  345. case 0xAD3D4B9C:
  346. v5 = ((-254576267790735895i64 * ((v5 >> 34) ^ v5)) >> 32) ^ (-254576267790735895i64 * ((v5 >> 34) ^ v5));
  347. v24 = -1856987998;
  348. break;
  349. case 0xE483386C:
  350. v5 ^= v5 >> 33;
  351. v24 = -875455757;
  352. break;
  353. case 0xE9715D84:
  354. v26 = (((v5 >> 12) ^ v5) >> 24) ^ (v5 >> 12) ^ v5;
  355. v27 = (((v26 >> 48) ^ v26) >> 29) ^ (v26 >> 48) ^ v26;
  356. v28 = (v27 ^ (v27 >> 58))
  357. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  358. 0,
  359. 16))
  360. + 13));
  361. v5 = (v28 >> 38) ^ v28;
  362. v24 = -831476011;
  363. break;
  364. }
  365. }
  366. else
  367. {
  368. switch ((DWORD)v8)
  369. {
  370. case 0x5DBF7315:
  371. v5 ^= (((v5 >> 20) ^ v5) >> 40) ^ (v5 >> 20);
  372. v24 = 188899258;
  373. break;
  374. case 0x89747E:
  375. v25 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  376. v24 = -1380696094;
  377. v5 = 6984239020889517927i64 * ((v25 >> 44) ^ v25);
  378. break;
  379. case 0x269CF141:
  380. v5 *= 6513416010345991633i64;
  381. v24 = 1980514413;
  382. break;
  383. case 0x31D1EB9C:
  384. v5 *= 2169238420182610817i64;
  385. v24 = -243773301;
  386. break;
  387. case 0x3C6DD73E:
  388. v5 *= 399063102185793645i64;
  389. v24 = -655429806;
  390. break;
  391. case 0x4B18F553:
  392. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  393. 0,
  394. 16))
  395. + 9);
  396. v24 = 1267826989;
  397. break;
  398. }
  399. }
  400. v8 = v24 ^ (unsigned int)v8;
  401. } while ((DWORD)v8 != 793944735);
  402. break;
  403. case 4i64:
  404. v8 = qword_7FF73F5E8275;
  405. v29 = 1843169928;
  406. v30 = 367048649;
  407. v6 = 79076019554718377i64;
  408. do
  409. {
  410. if (v29 > 0x6DDC8A88)
  411. {
  412. switch (v29)
  413. {
  414. case 0x7EBCAB5Cu:
  415. v35 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  416. 0,
  417. 16));
  418. v5 = ((*(uintptr_t*)(v35 + 9) * v5) >> 33) ^ (*(uintptr_t*)(v35 + 9) * v5);
  419. v30 = -1501942179;
  420. break;
  421. case 0x8FD7DC78:
  422. v5 ^= (((v5 >> 23) ^ v5) >> 46) ^ (v5 >> 23);
  423. v30 = -1287851851;
  424. break;
  425. case 0xCDC439FE:
  426. v34 = (((v5 >> 10) ^ v5) >> 20) ^ (v5 >> 10) ^ v5;
  427. v30 = 1248252581;
  428. v5 = -4576440385940277195i64 * ((v34 >> 40) ^ v34);
  429. break;
  430. case 0xFF1C4D45:
  431. v33 = -7498697789385608467i64 * (((8246635407885866537i64 * v5) >> 34) ^ (8246635407885866537i64 * v5));
  432. v5 = (v33 >> 32) ^ v33;
  433. v30 = -2120161767;
  434. break;
  435. }
  436. }
  437. else
  438. {
  439. switch (v29)
  440. {
  441. case 0x6DDC8A88u:
  442. v5 *= 79076019554718377i64;
  443. v30 = 930613693;
  444. break;
  445. case 0x38268BBu:
  446. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  447. 0,
  448. 16))
  449. + 15);
  450. v30 = 1209109086;
  451. break;
  452. case 0x2B7692C0u:
  453. v30 = -1542376522;
  454. v5 = 7694257453969299829i64 * ((v5 >> 39) ^ v5);
  455. break;
  456. case 0x5AA48335u:
  457. v32 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  458. v5 = (v32 >> 44) ^ v32;
  459. v30 = -1514615184;
  460. break;
  461. case 0x68C99E17u:
  462. v31 = (((v5 >> 14) ^ v5) >> 28) ^ (v5 >> 14) ^ v5;
  463. v5 = (v31 >> 56) ^ v31;
  464. v30 = 745223281;
  465. break;
  466. }
  467. }
  468. v29 ^= v30;
  469. } while (v29 != -658078463);
  470. break;
  471. case 5i64:
  472. v8 = qword_7FF73F5E8275;
  473. v36 = 206908681;
  474. v37 = 1567126113;
  475. v6 = -1490051115850256833i64;
  476. do
  477. {
  478. if (v36 > 0x7DA47CBF)
  479. {
  480. switch (v36)
  481. {
  482. case 0x8C92F8BA:
  483. v5 = ((2642899125010789073i64 * ((v5 >> 34) ^ v5)) >> 32) ^ (2642899125010789073i64 * ((v5 >> 34) ^ v5));
  484. v37 = -1421377855;
  485. break;
  486. case 0xB421D91D:
  487. v5 ^= v5 >> 33;
  488. v37 = -382859363;
  489. break;
  490. case 0xBC48D4DF:
  491. v41 = (((v5 >> 22) ^ v5) >> 44) ^ (v5 >> 22) ^ v5;
  492. v5 = (v41 >> 40) ^ v41;
  493. v37 = 728231214;
  494. break;
  495. case 0xC31A8BDF:
  496. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  497. 0,
  498. 16))
  499. + 9);
  500. v37 = 1334342501;
  501. break;
  502. case 0xC773AD4D:
  503. v39 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  504. 0,
  505. 16));
  506. v40 = ((*(uintptr_t*)(v39 + 25) * v5) >> 25) ^ (*(uintptr_t*)(v39 + 25) * v5);
  507. v5 = (v40 >> 50) ^ v40;
  508. v37 = -1396802365;
  509. break;
  510. }
  511. }
  512. else
  513. {
  514. switch (v36)
  515. {
  516. case 0x7DA47CBFu:
  517. v5 *= 263753969891435199i64;
  518. v37 = 1791357254;
  519. break;
  520. case 0xC552D09u:
  521. v38 = ((((668279531958246127i64 * v5) >> 11) ^ (668279531958246127i64 * v5)) >> 22) ^ ((668279531958246127i64 * v5) >> 11) ^ (668279531958246127i64 * v5);
  522. v5 = (v38 >> 44) ^ v38;
  523. v37 = -816863530;
  524. break;
  525. case 0x16784F3Au:
  526. v5 *= 5150137896691509053i64;
  527. v37 = 968613796;
  528. break;
  529. case 0x1A879D6Bu:
  530. v37 = 530940254;
  531. v5 = -1350347289528063655i64 * ((v5 >> 36) ^ v5);
  532. break;
  533. case 0x27D5867Bu:
  534. v5 *= -1490051115850256833i64;
  535. v37 = -1812701338;
  536. break;
  537. }
  538. }
  539. v36 ^= v37;
  540. } while (v36 != 1561321088);
  541. break;
  542. case 6i64:
  543. v8 = qword_7FF73F5E8275;
  544. v42 = -648102525;
  545. v43 = 629457204;
  546. v6 = -3714080857275482259i64;
  547. do
  548. {
  549. if (v42 > 0x6D919676)
  550. {
  551. switch (v42)
  552. {
  553. case 0x6FE29E70u:
  554. v5 = ((-8798424950109236483i64 * v5) >> 34) ^ (-8798424950109236483i64 * v5);
  555. v43 = 1480304983;
  556. break;
  557. case 0x7EAC57C6u:
  558. v43 = -1715498414;
  559. v5 = -2826511211129377569i64 * ((((v5 >> 25) ^ v5) >> 50) ^ (v5 >> 25) ^ v5);
  560. break;
  561. case 0xD95EBD83:
  562. v5 *= -3772161568334105389i64;
  563. v43 = 699488983;
  564. break;
  565. case 0xE2624955:
  566. v5 ^= v5 >> 36;
  567. v43 = 1135491346;
  568. break;
  569. case 0xF0EFE754:
  570. v44 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  571. v5 = (v44 >> 44) ^ v44;
  572. v43 = -1626506972;
  573. break;
  574. }
  575. }
  576. else
  577. {
  578. switch (v42)
  579. {
  580. case 0x6D919676u:
  581. v5 *= 1503922958134356461i64
  582. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  583. 0,
  584. 16))
  585. + 9));
  586. v43 = 1225715110;
  587. break;
  588. case 0x7E2B90Bu:
  589. v5 ^= (((v5 >> 24) ^ v5) >> 48) ^ (v5 >> 24);
  590. v43 = -1875839873;
  591. break;
  592. case 0x29EE04BCu:
  593. v5 = ((-6843233251514505657i64 * ((v5 >> 32) ^ v5)) >> 33) ^ (-6843233251514505657i64 * ((v5 >> 32) ^ v5));
  594. v43 = -125792829;
  595. break;
  596. case 0x37D93727u:
  597. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  598. 0,
  599. 16))
  600. + 9);
  601. v43 = 506934171;
  602. break;
  603. case 0x62C70805u:
  604. v5 *= -3714080857275482259i64;
  605. v43 = -251588585;
  606. break;
  607. case 0x6A41C60Bu:
  608. v5 ^= (((v5 >> 21) ^ v5) >> 42) ^ (v5 >> 21);
  609. v43 = 1252100369;
  610. break;
  611. }
  612. }
  613. v42 ^= v43;
  614. } while (v42 != -781284993);
  615. break;
  616. case 7i64:
  617. v8 = qword_7FF73F5E8275;
  618. v45 = 1715396362;
  619. v46 = 1471282209;
  620. v6 = -1046981356095461599i64;
  621. do
  622. {
  623. if (v45 > 0x9AAAF4E4)
  624. {
  625. switch (v45)
  626. {
  627. case 0xAF811AC6:
  628. v51 = ((((-1046981356095461599i64 * v5) >> 10) ^ (-1046981356095461599i64 * v5)) >> 20) ^ ((-1046981356095461599i64 * v5) >> 10) ^ (-1046981356095461599i64 * v5);
  629. v5 = (v51 >> 40) ^ v51;
  630. v46 = 1349605540;
  631. break;
  632. case 0xB60A3214:
  633. v49 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  634. 0,
  635. 16));
  636. v50 = ((*(uintptr_t*)(v49 + 15) * v5) >> 24) ^ (*(uintptr_t*)(v49 + 15) * v5);
  637. v5 = (v50 >> 48) ^ v50;
  638. v46 = 346659151;
  639. break;
  640. case 0xFCCD58D2:
  641. v5 = ((-5354681144209995371i64 * ((v5 >> 32) ^ v5)) >> 33) ^ (-5354681144209995371i64 * ((v5 >> 32) ^ v5));
  642. v46 = 575632065;
  643. break;
  644. }
  645. }
  646. else
  647. {
  648. switch (v45)
  649. {
  650. case 0x9AAAF4E4:
  651. v46 = -601365438;
  652. v5 = 8664097053072027533i64 * ((((v5 >> 28) ^ v5) >> 56) ^ (v5 >> 28) ^ v5);
  653. break;
  654. case 0x1F834CBu:
  655. v46 = -46830567;
  656. v5 = -6508093821370371639i64 * (((3379597867461193145i64 * v5) >> 34) ^ (3379597867461193145i64 * v5));
  657. break;
  658. case 0x663EDF0Au:
  659. v47 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  660. 0,
  661. 16));
  662. v48 = ((*(uintptr_t*)(v47 + 9) * v5) >> 11) ^ (*(uintptr_t*)(v47 + 9) * v5);
  663. v5 = (((v48 >> 22) ^ v48) >> 44) ^ (v48 >> 22) ^ v48;
  664. v46 = 1741089729;
  665. break;
  666. case 0x81E66D10:
  667. v46 = 2026038984;
  668. v5 = 8455267959189821851i64 * ((((v5 >> 18) ^ v5) >> 36) ^ (v5 >> 18) ^ v5);
  669. break;
  670. }
  671. }
  672. v45 ^= v46;
  673. } while (v45 != -561894893);
  674. break;
  675. case 8i64:
  676. v8 = qword_7FF73F5E8275;
  677. v52 = 1324892019;
  678. v53 = -1518275246;
  679. v6 = 9061039594084433199i64;
  680. do
  681. {
  682. if (v52 > 0x5ECC1561)
  683. {
  684. switch (v52)
  685. {
  686. case 0x6CDC352Du:
  687. v53 = -792772235;
  688. v5 = -5320098532597007853i64
  689. * (((((-1785068723959019167i64 * v5) >> 32) ^ (-1785068723959019167i64 * v5)) >> 39) ^ ((-1785068723959019167i64 * v5) >> 32) ^ (-1785068723959019167i64 * v5));
  690. break;
  691. case 0x9660FB50:
  692. v5 ^= v5 >> 32;
  693. v53 = -791396491;
  694. break;
  695. case 0xA0227101:
  696. v5 *= -1259380067919648353i64;
  697. v53 = 92122529;
  698. break;
  699. case 0xA55FDCA0:
  700. v53 = 859777008;
  701. v5 = 7171650437169705013i64 * ((v5 >> 34) ^ v5);
  702. break;
  703. }
  704. }
  705. else
  706. {
  707. switch (v52)
  708. {
  709. case 0x5ECC1561u:
  710. v5 ^= v5 >> 33;
  711. v53 = 448929302;
  712. break;
  713. case 0x24711A6Cu:
  714. v56 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  715. 0,
  716. 16));
  717. v57 = ((*(uintptr_t*)(v56 + 9) * v5) >> 17) ^ (*(uintptr_t*)(v56 + 9) * v5);
  718. v53 = 1097301330;
  719. v5 = -7715613913043123993i64 * ((v57 >> 34) ^ v57);
  720. break;
  721. case 0x46B4C425u:
  722. v5 *= 9061039594084433199i64;
  723. v53 = 410571076;
  724. break;
  725. case 0x4EF83F73u:
  726. v54 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  727. 0,
  728. 16));
  729. v55 = ((*(uintptr_t*)(v54 + 9) * v5) >> 11) ^ (*(uintptr_t*)(v54 + 9) * v5);
  730. v5 = (((v55 >> 22) ^ v55) >> 44) ^ (v55 >> 22) ^ v55;
  731. v53 = -287682958;
  732. break;
  733. case 0x55D581BEu:
  734. v5 ^= v5 >> 36;
  735. v53 = -1679749402;
  736. break;
  737. }
  738. }
  739. v52 ^= v53;
  740. } while (v52 != 1141771127);
  741. break;
  742. case 9i64:
  743. v6 = qword_7FF73F5E8275;
  744. v58 = -211136829;
  745. IDA_LODWORD(v8) = -710799501;
  746. do
  747. {
  748. if ((unsigned int)v8 > 0x94068C46)
  749. {
  750. switch ((DWORD)v8)
  751. {
  752. case 0xD5A20F73:
  753. v5 *= -1140417542859424221i64;
  754. v58 = -49361488;
  755. break;
  756. case 0xDD87592C:
  757. v5 *= -5550595233316717153i64;
  758. v58 = 1033829346;
  759. break;
  760. case 0xE019A2CE:
  761. v5 ^= v5 >> 34;
  762. v58 = -1634333229;
  763. break;
  764. }
  765. }
  766. else
  767. {
  768. switch ((DWORD)v8)
  769. {
  770. case 0x94068C46:
  771. v5 = ((v5 >> 29) ^ v5 ^ (((v5 >> 29) ^ v5) >> 58))
  772. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  773. 0,
  774. 16))
  775. + 17));
  776. v58 = 1672135490;
  777. break;
  778. case 0x2DB4C43:
  779. v62 = ((((2357863658542354479i64 * v5) >> 31) ^ (2357863658542354479i64 * v5)) >> 62) ^ ((2357863658542354479i64 * v5) >> 31) ^ (2357863658542354479i64 * v5);
  780. v63 = 3227618980945044031i64 * ((((v62 >> 23) ^ v62) >> 46) ^ (v62 >> 23) ^ v62);
  781. v5 = (((v63 >> 21) ^ v63) >> 42) ^ (v63 >> 21) ^ v63;
  782. v58 = 380934493;
  783. break;
  784. case 0x28ACC2C3:
  785. v61 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  786. v5 = (v61 >> 44) ^ v61;
  787. v58 = -181691409;
  788. break;
  789. case 0x7E8FAF1D:
  790. v59 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  791. 0,
  792. 16));
  793. v60 = -791397262808006193i64 * (((*(uintptr_t*)(v59 + 9) * v5) >> 32) ^ (*(uintptr_t*)(v59 + 9) * v5));
  794. v5 = (v60 >> 33) ^ v60;
  795. v58 = -1639375542;
  796. break;
  797. }
  798. }
  799. v8 = v58 ^ (unsigned int)v8;
  800. } while ((DWORD)v8 != -523849129);
  801. break;
  802. case 0xAi64:
  803. v6 = qword_7FF73F5E8275;
  804. v64 = 1226753560;
  805. IDA_LODWORD(v8) = 1015843442;
  806. do
  807. {
  808. if ((unsigned int)v8 > 0x84338B99)
  809. {
  810. switch ((DWORD)v8)
  811. {
  812. case 0x9A09D69D:
  813. v67 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  814. v64 = -1259370927;
  815. v5 = -3261739495856580535i64 * ((v67 >> 44) ^ v67);
  816. break;
  817. case 0x9BE71274:
  818. v5 *= 5110205201235089995i64;
  819. v64 = -554473483;
  820. break;
  821. case 0xCA68CE62:
  822. v64 = 1314604539;
  823. v5 = -6666980917331756217i64 * ((v5 >> 32) ^ v5);
  824. break;
  825. }
  826. }
  827. else
  828. {
  829. switch ((DWORD)v8)
  830. {
  831. case 0x84338B99:
  832. v5 ^= v5 >> 33;
  833. v64 = 1640467298;
  834. break;
  835. case 0xBD879E9:
  836. v66 = (((v5 >> 33) ^ v5) >> 10) ^ (v5 >> 33) ^ v5;
  837. v64 = 1431160392;
  838. v5 = 584434054249834147i64
  839. * ((v66 >> 20) ^ v66 ^ (((v66 >> 20) ^ v66) >> 40))
  840. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  841. 0,
  842. 16))
  843. + 25));
  844. break;
  845. case 0x2EE650CC:
  846. v64 = -460415314;
  847. v5 = 7271143759764351223i64 * ((v5 >> 34) ^ v5);
  848. break;
  849. case 0x3A8D29AA:
  850. v65 = (((v5 >> 22) ^ v5) >> 44) ^ (v5 >> 22) ^ v5;
  851. v5 = (v65 >> 40) ^ v65;
  852. v64 = 1885461523;
  853. break;
  854. case 0x3C8C8A72:
  855. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  856. 0,
  857. 16))
  858. + 9);
  859. v64 = -1501209361;
  860. break;
  861. }
  862. }
  863. v8 = v64 ^ (unsigned int)v8;
  864. } while ((DWORD)v8 != -436993797);
  865. break;
  866. case 0xBi64:
  867. v6 = qword_7FF73F5E8275;
  868. v68 = -352576275;
  869. IDA_LODWORD(v8) = 2083277596;
  870. do
  871. {
  872. if ((unsigned int)v8 > 0xA013D2CB)
  873. {
  874. switch ((DWORD)v8)
  875. {
  876. case 0xA98146FA:
  877. v5 *= -7777501567629756509i64;
  878. v68 = 1544727994;
  879. break;
  880. case 0xCCB45010:
  881. v72 = (((v5 >> 40) ^ v5) >> 22) ^ (v5 >> 40) ^ v5;
  882. v5 = (v72 >> 44) ^ v72;
  883. v68 = 715595232;
  884. break;
  885. case 0xE7597863:
  886. v5 = ((589820372989812181i64 * v5) >> 34) ^ (589820372989812181i64 * v5);
  887. v68 = -377226765;
  888. break;
  889. }
  890. }
  891. else
  892. {
  893. switch ((DWORD)v8)
  894. {
  895. case 0xA013D2CB:
  896. v71 = (((v5 >> 21) ^ v5) >> 42) ^ (v5 >> 21) ^ v5;
  897. v5 = ((v71 >> 25) ^ v71 ^ (((v71 >> 25) ^ v71) >> 50))
  898. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  899. 0,
  900. 16))
  901. + 15));
  902. v68 = 148528274;
  903. break;
  904. case 0xEDA8190:
  905. v5 *= -2542879130721843953i64;
  906. v68 = 824470298;
  907. break;
  908. case 0x3FFEEA8A:
  909. v5 = ((-5712079829072476083i64 * ((v5 >> 32) ^ v5)) >> 33) ^ (-5712079829072476083i64 * ((v5 >> 32) ^ v5));
  910. v68 = -754044170;
  911. break;
  912. case 0x6D082DD4:
  913. v5 *= -1364266855495272659i64;
  914. v68 = 571231357;
  915. break;
  916. case 0x7C2C4B1C:
  917. v69 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  918. 0,
  919. 16));
  920. v70 = ((*(uintptr_t*)(v69 + 9) * v5) >> 11) ^ (*(uintptr_t*)(v69 + 9) * v5);
  921. v5 = (((v70 >> 22) ^ v70) >> 44) ^ (v70 >> 22) ^ v70;
  922. v68 = -1686817921;
  923. break;
  924. }
  925. }
  926. v8 = v68 ^ (unsigned int)v8;
  927. } while ((DWORD)v8 != -319760260);
  928. break;
  929. case 0xCi64:
  930. v6 = qword_7FF73F5E8275;
  931. v73 = 442867009;
  932. IDA_LODWORD(v8) = 1096528784;
  933. do
  934. {
  935. if ((unsigned int)v8 > 0x5DF65450)
  936. {
  937. if ((DWORD)v8 == 1989134689)
  938. {
  939. v75 = -6933056048451905181i64
  940. * (((377204745575520251i64 * v5) >> 22) ^ (377204745575520251i64 * v5) ^ ((((377204745575520251i64 * v5) >> 22) ^ (377204745575520251i64 * v5)) >> 44))
  941. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  942. 0,
  943. 16))
  944. + 15));
  945. v76 = (((v75 >> 28) ^ v75) >> 56) ^ (v75 >> 28) ^ v75;
  946. v5 = (((v76 >> 29) ^ v76) >> 58) ^ (v76 >> 29) ^ v76;
  947. v73 = 1576807396;
  948. }
  949. else if ((DWORD)v8 == -405612626)
  950. {
  951. v5 ^= v5 >> 32;
  952. v73 = 889359932;
  953. }
  954. }
  955. else
  956. {
  957. switch ((DWORD)v8)
  958. {
  959. case 0x5DF65450:
  960. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  961. 0,
  962. 16))
  963. + 9);
  964. v73 = 363653035;
  965. break;
  966. case 0x415BB390:
  967. v5 *= 5128713183279659103i64;
  968. v73 = 55877564;
  969. break;
  970. case 0x420F2C2C:
  971. v74 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  972. v5 = ((4032865656204776323i64 * ((v74 >> 44) ^ v74)) >> 34) ^ (4032865656204776323i64 * ((v74 >> 44) ^ v74));
  973. v73 = 536443004;
  974. break;
  975. case 0x485AB3FB:
  976. v5 = ((8738323996471334337i64 * ((v5 >> 32) ^ v5)) >> 33) ^ (8738323996471334337i64 * ((v5 >> 32) ^ v5));
  977. v73 = -757150338;
  978. break;
  979. }
  980. }
  981. v8 = v73 ^ (unsigned int)v8;
  982. } while ((DWORD)v8 != -1702592891);
  983. break;
  984. case 0xDi64:
  985. v8 = qword_7FF73F5E8275;
  986. v77 = -1559511383;
  987. v78 = 206813144;
  988. v6 = -7057223809766711713i64;
  989. do
  990. {
  991. if (v77 > 0xA000DB01)
  992. {
  993. switch (v77)
  994. {
  995. case 0xA30BBEA9:
  996. v5 *= 4787882654895825615i64;
  997. v78 = 74983639;
  998. break;
  999. case 0xA750AD6D:
  1000. v5 *= -8371167368346145367i64;
  1001. v78 = -1945429779;
  1002. break;
  1003. case 0xA773967E:
  1004. v82 = (((v5 >> 11) ^ v5) >> 22) ^ (v5 >> 11) ^ v5;
  1005. v5 = (v82 >> 44) ^ v82;
  1006. v78 = -1274538672;
  1007. break;
  1008. case 0xD6AA84D2:
  1009. v5 ^= (((v5 >> 29) ^ v5) >> 58) ^ (v5 >> 29);
  1010. v78 = 1245808532;
  1011. break;
  1012. case 0xDF6331EF:
  1013. v5 = ((-5506733914780726849i64 * v5) >> 33) ^ (-5506733914780726849i64 * v5);
  1014. v78 = 336951811;
  1015. break;
  1016. }
  1017. }
  1018. else
  1019. {
  1020. switch (v77)
  1021. {
  1022. case 0xA000DB01:
  1023. v81 = (((v5 >> 18) ^ v5) >> 36) ^ (v5 >> 18) ^ v5;
  1024. v5 = (v81 >> 32) ^ v81;
  1025. v78 = -1431549620;
  1026. break;
  1027. case 0x5E86CCCu:
  1028. v5 ^= v5 >> 32;
  1029. v78 = -628400861;
  1030. break;
  1031. case 0x137B832Eu:
  1032. v79 = _byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  1033. 0,
  1034. 16));
  1035. v80 = ((*(uintptr_t*)(v79 + 9) * v5) >> 34) ^ (*(uintptr_t*)(v79 + 9) * v5);
  1036. v78 = 378793954;
  1037. v5 = -4922768788278357693i64 * v80;
  1038. break;
  1039. case 0x2ADE580Au:
  1040. v5 *= *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  1041. 0,
  1042. 16))
  1043. + 15);
  1044. v78 = -1214127080;
  1045. break;
  1046. case 0x4E730327u:
  1047. v5 *= -7057223809766711713i64;
  1048. v78 = -475046886;
  1049. break;
  1050. case 0x5272B5C6u:
  1051. v5 = ((-6528595123919291523i64 * v5) >> 34) ^ (-6528595123919291523i64 * v5);
  1052. v78 = -1033667739;
  1053. break;
  1054. }
  1055. }
  1056. v77 ^= v78;
  1057. } while (v77 != -881439764);
  1058. break;
  1059. case 0xEi64:
  1060. v6 = qword_7FF73F5E8275;
  1061. v83 = -636480253;
  1062. IDA_LODWORD(v8) = 1812341224;
  1063. do
  1064. {
  1065. if ((unsigned int)v8 > 0x6E66E1B9)
  1066. {
  1067. switch ((DWORD)v8)
  1068. {
  1069. case 0x8C2D5826:
  1070. v86 = ((((1917540473678440865i64 * v5) >> 25) ^ (1917540473678440865i64 * v5)) >> 50) ^ ((1917540473678440865i64 * v5) >> 25) ^ (1917540473678440865i64 * v5);
  1071. v87 = (((v86 >> 13) ^ v86) >> 26) ^ (v86 >> 13) ^ v86;
  1072. v5 = (v87 >> 52) ^ v87;
  1073. v83 = 1116439088;
  1074. break;
  1075. case 0x9BE2E87B:
  1076. v5 ^= v5 >> 33;
  1077. v83 = 624163107;
  1078. break;
  1079. case 0xCDCE9350:
  1080. v83 = 1445755691;
  1081. v5 = -7608280755266792109i64 * ((v5 >> 32) ^ v5);
  1082. break;
  1083. case 0xE51B47DF:
  1084. v5 *= -5713253312370912115i64
  1085. * *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  1086. 0,
  1087. 16))
  1088. + 25);
  1089. v83 = -440436607;
  1090. break;
  1091. }
  1092. }
  1093. else
  1094. {
  1095. switch ((DWORD)v8)
  1096. {
  1097. case 0x6E66E1B9:
  1098. v85 = (((v5 >> 13) ^ v5) >> 26) ^ (v5 >> 13) ^ v5;
  1099. v5 = (v85 >> 52) ^ v85;
  1100. v83 = -460373271;
  1101. break;
  1102. case 0xD3C1A59:
  1103. v5 *= -7627514957499353495i64;
  1104. v83 = -1893333314;
  1105. break;
  1106. case 0x3CAD4040:
  1107. v5 ^= (((v5 >> 26) ^ v5) >> 52) ^ (v5 >> 26);
  1108. v83 = 957251475;
  1109. break;
  1110. case 0x4BA8CF9F:
  1111. v5 = (v5 ^ (v5 >> 34)) * *(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(0, 16)) + 9);
  1112. v83 = -2040111921;
  1113. break;
  1114. case 0x6C0621E8:
  1115. v84 = ((((-5343560733404936715i64 * v5) >> 11) ^ (-5343560733404936715i64 * v5)) >> 22) ^ ((-5343560733404936715i64 * v5) >> 11) ^ (-5343560733404936715i64 * v5);
  1116. v83 = 665775735;
  1117. v5 = -3302863742832181443i64 * ((v84 >> 44) ^ v84);
  1118. break;
  1119. }
  1120. }
  1121. v8 = v83 ^ (unsigned int)v8;
  1122. } while ((DWORD)v8 != -1093594792);
  1123. break;
  1124. default:
  1125. v6 = qword_7FF73F5E8275;
  1126. v88 = -1531642947;
  1127. IDA_LODWORD(v8) = -211380569;
  1128. do
  1129. {
  1130. if ((unsigned int)v8 > 0x6CCBDBF1)
  1131. {
  1132. switch ((DWORD)v8)
  1133. {
  1134. case 0xAF517755:
  1135. v5 *= -427104470671662445i64;
  1136. v88 = 1543431172;
  1137. break;
  1138. case 0xF13C24EC:
  1139. v5 *= -421017844244858921i64;
  1140. v88 = -1729413572;
  1141. break;
  1142. case 0xF36696A7:
  1143. v93 = ((((764511474151144849i64 * v5) >> 11) ^ (764511474151144849i64 * v5)) >> 22) ^ ((764511474151144849i64 * v5) >> 11) ^ (764511474151144849i64 * v5);
  1144. v5 = (v93 >> 44) ^ v93;
  1145. v88 = 39498315;
  1146. break;
  1147. }
  1148. }
  1149. else
  1150. {
  1151. switch ((DWORD)v8)
  1152. {
  1153. case 0x6CCBDBF1:
  1154. v91 = (v5 ^ (v5 >> 37))
  1155. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  1156. 0,
  1157. 16))
  1158. + 25));
  1159. v92 = (((v91 >> 10) ^ v91) >> 20) ^ (v91 >> 10) ^ v91;
  1160. v5 = (v92 >> 40) ^ v92;
  1161. v88 = 432110273;
  1162. break;
  1163. case 0x10BA5514:
  1164. v5 *= -5339116251246344131i64;
  1165. v88 = -1039670011;
  1166. break;
  1167. case 0x2B8F086B:
  1168. v5 = ((-4967773153117584823i64 * v5) >> 33) ^ (-4967773153117584823i64 * v5);
  1169. v88 = -1284546173;
  1170. break;
  1171. case 0x5812BABF:
  1172. v90 = (((v5 >> 39) ^ v5) >> 29) ^ (v5 >> 39) ^ v5;
  1173. v88 = -154193965;
  1174. v5 = 3663648700882107923i64 * ((v90 >> 58) ^ v90);
  1175. break;
  1176. case 0x69D71AD0:
  1177. v89 = (v5 ^ (v5 >> 34))
  1178. * (*(uintptr_t*)(_byteswap_uint64(qword_7FF73F5E8275 ^ __ROL8__(
  1179. 0,
  1180. 16))
  1181. + 9));
  1182. v5 = (v89 >> 32) ^ v89;
  1183. v88 = 1113068219;
  1184. break;
  1185. }
  1186. }
  1187. v8 = v88 ^ (unsigned int)v8;
  1188. } while ((DWORD)v8 != -1730123288);
  1189. break;
  1190. }
  1191. return v5;
  1192. }
RAW Paste Data