daily pastebin goal
38%
SHARE
TWEET

Untitled

a guest Apr 16th, 2018 28 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top