Advertisement
Guest User

Untitled

a guest
Apr 16th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.48 KB | None | 0 0
  1. char __fastcall sub_1408975D0(const void **a1, int a2)
  2. {
  3. const void **v2; // rdi
  4. char result; // al
  5. _QWORD *v4; // rax
  6. bool v5; // si
  7. void *v6; // rdx
  8. unsigned __int64 v7; // rax
  9. _QWORD *v8; // rax
  10. bool v9; // si
  11. void *v10; // rdx
  12. unsigned __int64 v11; // rax
  13. _QWORD *v12; // rax
  14. void *v13; // rcx
  15. unsigned __int64 v14; // rax
  16. _QWORD *v15; // rax
  17. bool v16; // bl
  18. void *v17; // rdx
  19. unsigned __int64 v18; // rax
  20. char *v19; // rbx
  21. _OWORD *v20; // rsi
  22. unsigned __int64 v21; // r12
  23. const void *v22; // r13
  24. _DWORD *v23; // r14
  25. unsigned __int64 v24; // rax
  26. unsigned int v25; // er15
  27. __int64 v26; // rdx
  28. unsigned __int64 v27; // r8
  29. unsigned __int16 v28; // r15
  30. char *v29; // rbx
  31. __int16 *v30; // rax
  32. __int16 v31; // cx
  33. _QWORD *v32; // rax
  34. void *v33; // rcx
  35. unsigned __int64 v34; // rax
  36. _QWORD *v35; // rax
  37. void *v36; // rcx
  38. unsigned __int64 v37; // rax
  39. _QWORD *v38; // rax
  40. void *v39; // rcx
  41. unsigned __int64 v40; // rax
  42. _QWORD *v41; // rax
  43. void *v42; // rcx
  44. unsigned __int64 v43; // rax
  45. _QWORD *v44; // rax
  46. void *v45; // rcx
  47. unsigned __int64 v46; // rax
  48. _QWORD *v47; // rax
  49. void *v48; // rcx
  50. unsigned __int64 v49; // rax
  51. _QWORD *v50; // rax
  52. void *v51; // rcx
  53. unsigned __int64 v52; // rax
  54. _QWORD *v53; // rax
  55. bool v54; // si
  56. void *v55; // rdx
  57. unsigned __int64 v56; // rax
  58. _QWORD *v57; // rax
  59. bool v58; // r14
  60. void *v59; // rdx
  61. unsigned __int64 v60; // rax
  62. int v61; // ebx
  63. unsigned __int64 v62; // r9
  64. _WORD *v63; // rdx
  65. int v64; // er8
  66. int v65; // ecx
  67. _QWORD *v66; // rax
  68. bool v67; // r14
  69. void *v68; // rdx
  70. unsigned __int64 v69; // rax
  71. _QWORD *v70; // rax
  72. bool v71; // r14
  73. void *v72; // rdx
  74. unsigned __int64 v73; // rax
  75. unsigned __int64 v74; // r8
  76. _WORD *v75; // rdx
  77. int v76; // ecx
  78. _QWORD *v77; // rax
  79. void *v78; // rcx
  80. unsigned __int64 v79; // rax
  81. const void **v80; // [rsp+20h] [rbp-40h]
  82. void *Memory; // [rsp+30h] [rbp-30h]
  83. unsigned __int64 v82; // [rsp+48h] [rbp-18h]
  84.  
  85. v2 = a1;
  86. v80 = a1;
  87. if ( a2 == *a1 )
  88. return 1;
  89. *a1 = a2;
  90. v4 = Load_File_To_Ptr(&Memory, "bin/CARD_INTID_YGO2.bin");
  91. v5 = sub_14089AB00(v2 + 26, v4);
  92. if ( v82 >= 0x10 )
  93. {
  94. v6 = Memory;
  95. if ( v82 + 1 >= 0x1000 )
  96. {
  97. if ( Memory & 0x1F )
  98. invalid_parameter_noinfo_noreturn();
  99. v7 = *(Memory - 1);
  100. if ( v7 >= Memory )
  101. invalid_parameter_noinfo_noreturn();
  102. if ( Memory - v7 < 8 )
  103. invalid_parameter_noinfo_noreturn();
  104. if ( Memory - v7 > 0x27 )
  105. invalid_parameter_noinfo_noreturn();
  106. v6 = *(Memory - 1);
  107. }
  108. j_free(v6);
  109. }
  110. if ( v5 && v2[26] == 17066 )
  111. memcpy(&unk_140F7F220, v2[27], 0x42AAui64);
  112. v8 = Load_File_To_Ptr(&Memory, "bin/CARD_INTID_YGO1.bin");
  113. v9 = sub_14089AB00(v2 + 28, v8);
  114. if ( v82 >= 0x10 )
  115. {
  116. v10 = Memory;
  117. if ( v82 + 1 >= 0x1000 )
  118. {
  119. if ( Memory & 0x1F )
  120. invalid_parameter_noinfo_noreturn();
  121. v11 = *(Memory - 1);
  122. if ( v11 >= Memory )
  123. invalid_parameter_noinfo_noreturn();
  124. if ( Memory - v11 < 8 )
  125. invalid_parameter_noinfo_noreturn();
  126. if ( Memory - v11 > 0x27 )
  127. invalid_parameter_noinfo_noreturn();
  128. v10 = *(Memory - 1);
  129. }
  130. j_free(v10);
  131. }
  132. if ( v9 && v2[28] == 15504 )
  133. memcpy(&unk_140E873D0, v2[29], 0x3C90ui64);
  134. v12 = Load_File_To_Ptr(&Memory, "bin/CARD_Same.bin");
  135. sub_14089AB00(v2 + 22, v12);
  136. if ( v82 >= 0x10 )
  137. {
  138. v13 = Memory;
  139. if ( v82 + 1 >= 0x1000 )
  140. {
  141. if ( Memory & 0x1F )
  142. invalid_parameter_noinfo_noreturn();
  143. v14 = *(Memory - 1);
  144. if ( v14 >= Memory )
  145. invalid_parameter_noinfo_noreturn();
  146. if ( Memory - v14 < 8 )
  147. invalid_parameter_noinfo_noreturn();
  148. if ( Memory - v14 > 0x27 )
  149. invalid_parameter_noinfo_noreturn();
  150. v13 = *(Memory - 1);
  151. }
  152. j_free(v13);
  153. }
  154. v15 = Load_File_To_Ptr(&Memory, "bin/CARD_Prop.bin");
  155. v16 = sub_14089AB00(v2 + 16, v15);
  156. if ( v82 >= 0x10 )
  157. {
  158. v17 = Memory;
  159. if ( v82 + 1 >= 0x1000 )
  160. {
  161. if ( Memory & 0x1F )
  162. invalid_parameter_noinfo_noreturn();
  163. v18 = *(Memory - 1);
  164. if ( v18 >= Memory )
  165. invalid_parameter_noinfo_noreturn();
  166. if ( Memory - v18 < 8 )
  167. invalid_parameter_noinfo_noreturn();
  168. if ( Memory - v18 > 0x27 )
  169. invalid_parameter_noinfo_noreturn();
  170. v17 = *(Memory - 1);
  171. }
  172. j_free(v17);
  173. }
  174. if ( v16 )
  175. {
  176. v19 = v2[17];
  177. memset(&unk_141019880, 0, 0x91B30ui64);
  178. v20 = &unk_140FC0B10;
  179. memset(&unk_140FC0B10, 0, 0x58D70ui64);
  180. v21 = (v2[22] * 0xAAAAAAAAAAAAAAABui64 >> 64) >> 2;
  181. v22 = v2[23];
  182. v23 = v19 + 4;
  183. do
  184. {
  185. v24 = *(v23 - 1);
  186. v25 = (*(v23 - 1) << 18) | ((*(v23 - 1) & 0x7FC000 | (*(v23 - 1) >> 18)) >> 5);
  187. *(v23 - 1) = v25;
  188. v24 >>= 32;
  189. *v23 &= 1u;
  190. v26 = (v24 & 0x7800 | ((v24 & 0x780 | ((v24 & 0x7E) << 10)) << 8)) << 6;
  191. v27 = (*v23 | (v24 << 31)) & 0x80000001 | v26 | ((v24 & 0x38000 | ((v24 & 0x7C0000 | ((v24 & 0x7800000 | (v24 >> 8) & 0x780000) >> 9)) >> 8)) >> 1);
  192. *v23 = v27;
  193. v28 = (v25 >> 18) & 0x3FFF;
  194. if ( v28 < 0x3091u )
  195. {
  196. v29 = &unk_141019880 + 48 * v28;
  197. *v29 = v28;
  198. *(v29 + 1) = (*(v23 - 1) >> 9) & 0x1FF;
  199. *(v29 + 2) = *(v23 - 1) & 0x1FF;
  200. *(v29 + 3) = (*v23 >> 25) & 0x3F;
  201. *(v29 + 5) = (*v23 >> 21) & 0xF;
  202. *(v29 + 6) = (*v23 >> 17) & 0xF;
  203. *(v29 + 7) = (*v23 >> 14) & 7;
  204. *(v29 + 4) = (*v23 >> 9) & 0x1F;
  205. *(v29 + 9) = (*v23 >> 1) & 0xF;
  206. *(v29 + 10) = (*v23 >> 5) & 0xF;
  207. *(v29 + 8) = 3;
  208. v30 = sub_140875AF0(v28, v22, v21, 6i64);
  209. if ( v30 )
  210. {
  211. *(v29 + 23) = v30[1];
  212. if ( v30[2] & 0x100 )
  213. v31 = *v30;
  214. else
  215. v31 = v30[1];
  216. *(v29 + 22) = v31;
  217. }
  218. else
  219. {
  220. *(v29 + 23) = v28;
  221. *(v29 + 22) = v28;
  222. }
  223. *v20 = *v29;
  224. v20[1] = *(v29 + 1);
  225. v20[2] = *(v29 + 2);
  226. }
  227. v20 += 3;
  228. v23 += 2;
  229. }
  230. while ( v20 < &unk_141019880 );
  231. v2 = v80;
  232. sub_14089AB40(v80 + 16, v26, v27, 0x3FFFi64);
  233. }
  234. result = sub_140898180();
  235. if ( result )
  236. {
  237. v32 = Load_File_To_Ptr(&Memory, "bin/CARD_Named.bin");
  238. sub_14089AB00(v2 + 24, v32);
  239. if ( v82 >= 0x10 )
  240. {
  241. v33 = Memory;
  242. if ( v82 + 1 >= 0x1000 )
  243. {
  244. if ( Memory & 0x1F )
  245. invalid_parameter_noinfo_noreturn();
  246. v34 = *(Memory - 1);
  247. if ( v34 >= Memory )
  248. invalid_parameter_noinfo_noreturn();
  249. if ( Memory - v34 < 8 )
  250. invalid_parameter_noinfo_noreturn();
  251. if ( Memory - v34 > 0x27 )
  252. invalid_parameter_noinfo_noreturn();
  253. v33 = *(Memory - 1);
  254. }
  255. j_free(v33);
  256. }
  257. v35 = Load_File_To_Ptr(&Memory, "bin/CARD_Indx_#.bin");
  258. sub_14089AB00(v2 + 4, v35);
  259. if ( v82 >= 0x10 )
  260. {
  261. v36 = Memory;
  262. if ( v82 + 1 >= 0x1000 )
  263. {
  264. if ( Memory & 0x1F )
  265. invalid_parameter_noinfo_noreturn();
  266. v37 = *(Memory - 1);
  267. if ( v37 >= Memory )
  268. invalid_parameter_noinfo_noreturn();
  269. if ( Memory - v37 < 8 )
  270. invalid_parameter_noinfo_noreturn();
  271. if ( Memory - v37 > 0x27 )
  272. invalid_parameter_noinfo_noreturn();
  273. v36 = *(Memory - 1);
  274. }
  275. j_free(v36);
  276. }
  277. v38 = Load_File_To_Ptr(&Memory, "bin/CARD_Name_#.bin");
  278. sub_14089AB00(v2 + 2, v38);
  279. if ( v82 >= 0x10 )
  280. {
  281. v39 = Memory;
  282. if ( v82 + 1 >= 0x1000 )
  283. {
  284. if ( Memory & 0x1F )
  285. invalid_parameter_noinfo_noreturn();
  286. v40 = *(Memory - 1);
  287. if ( v40 >= Memory )
  288. invalid_parameter_noinfo_noreturn();
  289. if ( Memory - v40 < 8 )
  290. invalid_parameter_noinfo_noreturn();
  291. if ( Memory - v40 > 0x27 )
  292. invalid_parameter_noinfo_noreturn();
  293. v39 = *(Memory - 1);
  294. }
  295. j_free(v39);
  296. }
  297. v41 = Load_File_To_Ptr(&Memory, "bin/CARD_Desc_#.bin");
  298. sub_14089AB00(v2 + 6, v41);
  299. if ( v82 >= 0x10 )
  300. {
  301. v42 = Memory;
  302. if ( v82 + 1 >= 0x1000 )
  303. {
  304. if ( Memory & 0x1F )
  305. invalid_parameter_noinfo_noreturn();
  306. v43 = *(Memory - 1);
  307. if ( v43 >= Memory )
  308. invalid_parameter_noinfo_noreturn();
  309. if ( Memory - v43 < 8 )
  310. invalid_parameter_noinfo_noreturn();
  311. if ( Memory - v43 > 0x27 )
  312. invalid_parameter_noinfo_noreturn();
  313. v42 = *(Memory - 1);
  314. }
  315. j_free(v42);
  316. }
  317. v44 = Load_File_To_Ptr(&Memory, "bin/CARD_Sort_#.bin");
  318. sub_14089AB00(v2 + 8, v44);
  319. if ( v82 >= 0x10 )
  320. {
  321. v45 = Memory;
  322. if ( v82 + 1 >= 0x1000 )
  323. {
  324. if ( Memory & 0x1F )
  325. invalid_parameter_noinfo_noreturn();
  326. v46 = *(Memory - 1);
  327. if ( v46 >= Memory )
  328. invalid_parameter_noinfo_noreturn();
  329. if ( Memory - v46 < 8 )
  330. invalid_parameter_noinfo_noreturn();
  331. if ( Memory - v46 > 0x27 )
  332. invalid_parameter_noinfo_noreturn();
  333. v45 = *(Memory - 1);
  334. }
  335. j_free(v45);
  336. }
  337. v47 = Load_File_To_Ptr(&Memory, "bin/CARD_Sort2_#.bin");
  338. sub_14089AB00(v2 + 10, v47);
  339. if ( v82 >= 0x10 )
  340. {
  341. v48 = Memory;
  342. if ( v82 + 1 >= 0x1000 )
  343. {
  344. if ( Memory & 0x1F )
  345. invalid_parameter_noinfo_noreturn();
  346. v49 = *(Memory - 1);
  347. if ( v49 >= Memory )
  348. invalid_parameter_noinfo_noreturn();
  349. if ( Memory - v49 < 8 )
  350. invalid_parameter_noinfo_noreturn();
  351. if ( Memory - v49 > 0x27 )
  352. invalid_parameter_noinfo_noreturn();
  353. v48 = *(Memory - 1);
  354. }
  355. j_free(v48);
  356. }
  357. v50 = Load_File_To_Ptr(&Memory, "bin/CARD_Genre.bin");
  358. sub_14089AB00(v2 + 18, v50);
  359. if ( v82 >= 0x10 )
  360. {
  361. v51 = Memory;
  362. if ( v82 + 1 >= 0x1000 )
  363. {
  364. if ( Memory & 0x1F )
  365. invalid_parameter_noinfo_noreturn();
  366. v52 = *(Memory - 1);
  367. if ( v52 >= Memory )
  368. invalid_parameter_noinfo_noreturn();
  369. if ( Memory - v52 < 8 )
  370. invalid_parameter_noinfo_noreturn();
  371. if ( Memory - v52 > 0x27 )
  372. invalid_parameter_noinfo_noreturn();
  373. v51 = *(Memory - 1);
  374. }
  375. j_free(v51);
  376. }
  377. v53 = Load_File_To_Ptr(&Memory, "bin/WORD_Indx_#.bin");
  378. v54 = sub_14089AB00(v2 + 32, v53);
  379. if ( v82 >= 0x10 )
  380. {
  381. v55 = Memory;
  382. if ( v82 + 1 >= 0x1000 )
  383. {
  384. if ( Memory & 0x1F )
  385. invalid_parameter_noinfo_noreturn();
  386. v56 = *(Memory - 1);
  387. if ( v56 >= Memory )
  388. invalid_parameter_noinfo_noreturn();
  389. if ( Memory - v56 < 8 )
  390. invalid_parameter_noinfo_noreturn();
  391. if ( Memory - v56 > 0x27 )
  392. invalid_parameter_noinfo_noreturn();
  393. v55 = *(Memory - 1);
  394. }
  395. j_free(v55);
  396. }
  397. if ( v54 )
  398. *(v2 + 2) = v2[32] >> 2;
  399. v57 = Load_File_To_Ptr(&Memory, "bin/WORD_Text_#.bin");
  400. v58 = sub_14089AB00(v2 + 34, v57);
  401. if ( v82 >= 0x10 )
  402. {
  403. v59 = Memory;
  404. if ( v82 + 1 >= 0x1000 )
  405. {
  406. if ( Memory & 0x1F )
  407. invalid_parameter_noinfo_noreturn();
  408. v60 = *(Memory - 1);
  409. if ( v60 >= Memory )
  410. invalid_parameter_noinfo_noreturn();
  411. if ( Memory - v60 < 8 )
  412. invalid_parameter_noinfo_noreturn();
  413. if ( Memory - v60 > 0x27 )
  414. invalid_parameter_noinfo_noreturn();
  415. v59 = *(Memory - 1);
  416. }
  417. j_free(v59);
  418. }
  419. v61 = 0;
  420. if ( v58 )
  421. {
  422. v62 = v2[34] >> 1;
  423. v63 = v2[35];
  424. v64 = 0;
  425. if ( v62 )
  426. {
  427. do
  428. {
  429. v65 = *v63;
  430. if ( (v65 - 65345) <= 0x19 )
  431. {
  432. LOWORD(v65) = v65 + 288;
  433. *v63 = v65;
  434. }
  435. if ( v65 - 65313 <= 0x19 )
  436. *v63 = v65 + 288;
  437. ++v64;
  438. ++v63;
  439. }
  440. while ( v64 < v62 );
  441. }
  442. }
  443. v66 = Load_File_To_Ptr(&Memory, "bin/DLG_Indx_#.bin");
  444. v67 = sub_14089AB00(v2 + 12, v66);
  445. if ( v82 >= 0x10 )
  446. {
  447. v68 = Memory;
  448. if ( v82 + 1 >= 0x1000 )
  449. {
  450. if ( Memory & 0x1F )
  451. invalid_parameter_noinfo_noreturn();
  452. v69 = *(Memory - 1);
  453. if ( v69 >= Memory )
  454. invalid_parameter_noinfo_noreturn();
  455. if ( Memory - v69 < 8 )
  456. invalid_parameter_noinfo_noreturn();
  457. if ( Memory - v69 > 0x27 )
  458. invalid_parameter_noinfo_noreturn();
  459. v68 = *(Memory - 1);
  460. }
  461. j_free(v68);
  462. }
  463. if ( v67 )
  464. *(v2 + 1) = v2[12] >> 2;
  465. v70 = Load_File_To_Ptr(&Memory, "bin/DLG_Text_#.bin");
  466. v71 = sub_14089AB00(v2 + 14, v70);
  467. if ( v82 >= 0x10 )
  468. {
  469. v72 = Memory;
  470. if ( v82 + 1 >= 0x1000 )
  471. {
  472. if ( Memory & 0x1F )
  473. invalid_parameter_noinfo_noreturn();
  474. v73 = *(Memory - 1);
  475. if ( v73 >= Memory )
  476. invalid_parameter_noinfo_noreturn();
  477. if ( Memory - v73 < 8 )
  478. invalid_parameter_noinfo_noreturn();
  479. if ( Memory - v73 > 0x27 )
  480. invalid_parameter_noinfo_noreturn();
  481. v72 = *(Memory - 1);
  482. }
  483. j_free(v72);
  484. }
  485. if ( v71 )
  486. {
  487. v74 = v2[14] >> 1;
  488. v75 = v2[15];
  489. if ( v74 )
  490. {
  491. do
  492. {
  493. v76 = *v75;
  494. if ( (v76 - 65345) <= 0x19 )
  495. {
  496. LOWORD(v76) = v76 + 288;
  497. *v75 = v76;
  498. }
  499. if ( v76 - 65313 <= 0x19 )
  500. *v75 = v76 + 288;
  501. ++v61;
  502. ++v75;
  503. }
  504. while ( v61 < v74 );
  505. }
  506. }
  507. v77 = Load_File_To_Ptr(&Memory, "bin/CARD_Link.bin");
  508. sub_14089AB00(v2 + 20, v77);
  509. if ( v82 >= 0x10 )
  510. {
  511. v78 = Memory;
  512. if ( v82 + 1 >= 0x1000 )
  513. {
  514. if ( Memory & 0x1F )
  515. invalid_parameter_noinfo_noreturn();
  516. v79 = *(Memory - 1);
  517. if ( v79 >= Memory )
  518. invalid_parameter_noinfo_noreturn();
  519. if ( Memory - v79 < 8 )
  520. invalid_parameter_noinfo_noreturn();
  521. if ( Memory - v79 > 0x27 )
  522. invalid_parameter_noinfo_noreturn();
  523. v78 = *(Memory - 1);
  524. }
  525. j_free(v78);
  526. }
  527. result = sub_1408982D0(v2) != 0;
  528. }
  529. return result;
  530. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement