Guest User

Untitled

a guest
Apr 22nd, 2021
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 33.03 KB | None | 0 0
  1. signed __int64 __fastcall sub_5CA728(__int64 a1, const char *a2, unsigned int a3, int a4, int a5)
  2. {
  3.   unsigned __int64 v5; // x20
  4.   _BYTE *v6; // x28
  5.   unsigned __int64 v7; // x29
  6.   signed __int64 v8; // x22
  7.   int8x16_t *v9; // x23
  8.   const char *v10; // x21
  9.   _QWORD *v11; // x19
  10.   _BYTE *v12; // x24
  11.   __int64 v13; // x0
  12.   signed __int64 v14; // x21
  13.   unsigned __int64 v15; // x0
  14.   unsigned __int64 v16; // x8
  15.   bool v17; // cf
  16.   signed __int64 result; // x0
  17.   __int64 v19; // x0
  18.   __int64 v20; // x0
  19.   const char *v21; // x1
  20.   signed __int64 *v22; // x8
  21.   signed __int64 *v23; // x9
  22.   __int64 v24; // x8
  23.   signed __int64 v25; // x0
  24.   _BYTE *v26; // x24
  25.   signed __int64 v27; // x25
  26.   signed __int64 v28; // x27
  27.   signed __int64 v29; // x8
  28.   int8x16_t *v30; // x19
  29.   char *v31; // x23
  30.   unsigned __int64 v32; // x8
  31.   unsigned __int64 v33; // x28
  32.   unsigned __int64 v34; // x20
  33.   char *v35; // x0
  34.   char *v36; // x29
  35.   signed __int64 *v37; // x26
  36.   signed __int64 v38; // x27
  37.   signed __int64 v39; // x26
  38.   _OWORD *v40; // x24
  39.   _OWORD *v41; // x8
  40.   __int64 v42; // x25
  41.   __int64 *v43; // x8
  42.   __int64 *v44; // x9
  43.   _BYTE *v45; // x26
  44.   char *v46; // x23
  45.   unsigned __int64 v47; // x20
  46.   signed __int64 v48; // x27
  47.   signed __int64 v49; // x29
  48.   signed __int64 v50; // x8
  49.   unsigned __int64 v51; // x8
  50.   unsigned __int64 v52; // x28
  51.   char *v53; // x0
  52.   char *v54; // x24
  53.   __int64 *v55; // x29
  54.   signed __int64 v56; // x28
  55.   signed __int64 v57; // x29
  56.   __int64 v58; // x0
  57.   signed __int64 v59; // x3
  58.   __int64 v60; // x1
  59.   int v61; // w8
  60.   char *v62; // x0
  61.   char *v63; // x20
  62.   __int64 v64; // x23
  63.   signed __int64 v65; // x8
  64.   __int64 v66; // x8
  65.   const char *v67; // x2
  66.   FILE *v68; // x0
  67.   FILE *v69; // x0
  68.   AAssetDir *v70; // x0
  69.   signed int v71; // w8
  70.   char *v72; // x11
  71.   int v73; // w10
  72.   signed int v74; // w9
  73.   int v75; // w12
  74.   __int64 v76; // x10
  75.   signed __int64 v77; // x17
  76.   int v78; // w15
  77.   char *v79; // x13
  78.   int v80; // w14
  79.   int v81; // w12
  80.   int v82; // w17
  81.   int v83; // w13
  82.   unsigned __int64 v84; // x8
  83.   unsigned int v85; // w8
  84.   __int64 v86; // x8
  85.   __int64 *v87; // x21
  86.   __int64 v88; // x8
  87.   unsigned int v89; // w8
  88.   __int64 v90; // x8
  89.   __int64 v91; // x8
  90.   unsigned int v92; // w24
  91.   int v93; // w9
  92.   unsigned __int64 v94; // x0
  93.   unsigned __int64 v95; // x26
  94.   unsigned __int64 v96; // x8
  95.   void *v97; // x27
  96.   char v98; // w8
  97.   signed __int64 v99; // x22
  98.   int v100; // w9
  99.   const char *v101; // x26
  100.   signed int v102; // w21
  101.   unsigned __int64 v103; // x24
  102.   signed __int64 v104; // x25
  103.   int v105; // w21
  104.   unsigned __int64 v106; // x0
  105.   __int64 v107; // x26
  106.   char *v108; // x27
  107.   __int64 v109; // x24
  108.   unsigned __int64 v110; // x21
  109.   char v111; // w8
  110.   void *v112; // x27
  111.   char *v113; // x21
  112.   __int64 v114; // x2
  113.   char *v115; // x1
  114.   unsigned __int64 v116; // x0
  115.   unsigned __int64 v117; // x24
  116.   AAsset **v118; // x14
  117.   signed __int64 v119; // x25
  118.   __int64 **v120; // x9
  119.   __int64 v121; // x27
  120.   char *v122; // x29
  121.   unsigned __int64 v123; // x8
  122.   unsigned int v124; // w10
  123.   __int64 v125; // x11
  124.   unsigned __int8 *v126; // x8
  125.   signed __int64 v127; // x9
  126.   unsigned __int8 *v128; // x10
  127.   AAsset **v129; // x28
  128.   int v130; // w0
  129.   _QWORD *v131; // x0
  130.   _QWORD *v132; // x27
  131.   __int128 v133; // q0
  132.   __int64 v134; // x28
  133.   void *v135; // x1
  134.   void *v136; // x21
  135.   void *v137; // x21
  136.   __int64 v138; // x0
  137.   void *v139; // x8
  138.   __int128 v140; // q1
  139.   __int128 v141; // q0
  140.   __int128 v142; // q2
  141.   __int128 v143; // q3
  142.   float v144; // s0
  143.   float v145; // s1
  144.   _BOOL8 v146; // x9
  145.   unsigned __int64 v147; // x8
  146.   unsigned __int64 v148; // x9
  147.   unsigned __int64 v149; // x1
  148.   signed __int64 v150; // x8
  149.   __int64 v151; // x9
  150.   _QWORD *v152; // x8
  151.   __int64 v153; // x26
  152.   void *v154; // x27
  153.   void *v155; // x28
  154.   unsigned __int64 v156; // x8
  155.   AAsset **v157; // x8
  156.   unsigned int v158; // w10
  157.   __int64 v159; // x11
  158.   unsigned __int8 *v160; // x8
  159.   signed __int64 v161; // x9
  160.   unsigned __int8 *v162; // x10
  161.   AAsset **v163; // x28
  162.   int v164; // w0
  163.   __int64 v165; // x8
  164.   unsigned __int64 v166; // x9
  165.   FILE *v167; // x0
  166.   AAssetDir *v168; // x0
  167.   AAsset *v169; // x0
  168.   __int64 v170; // x18
  169.   __int64 v171; // x0
  170.   int8x16_t *v172; // x1
  171.   int8x16_t *v173; // x2
  172.   int8x16_t v174; // q1
  173.   int8x16_t *v175; // [xsp+10h] [xbp-480h]
  174.   unsigned __int64 v176; // [xsp+20h] [xbp-470h]
  175.   _QWORD *v177; // [xsp+30h] [xbp-460h]
  176.   int8x16_t *v178; // [xsp+50h] [xbp-440h]
  177.   _QWORD *v179; // [xsp+58h] [xbp-438h]
  178.   _QWORD *v180; // [xsp+58h] [xbp-438h]
  179.   unsigned __int64 v181; // [xsp+60h] [xbp-430h]
  180.   _BYTE *v182; // [xsp+68h] [xbp-428h]
  181.   _BYTE *v183; // [xsp+68h] [xbp-428h]
  182.   __int64 *v184; // [xsp+68h] [xbp-428h]
  183.   size_t v185[4]; // [xsp+70h] [xbp-420h]
  184.   void *v186; // [xsp+80h] [xbp-410h]
  185.   unsigned __int64 v187; // [xsp+88h] [xbp-408h]
  186.   __int64 v188; // [xsp+90h] [xbp-400h]
  187.   void *v189; // [xsp+98h] [xbp-3F8h]
  188.   __int128 v190; // [xsp+A0h] [xbp-3F0h]
  189.   __int128 v191; // [xsp+B0h] [xbp-3E0h]
  190.   __int128 v192; // [xsp+C0h] [xbp-3D0h]
  191.   size_t v193[4]; // [xsp+D0h] [xbp-3C0h]
  192.   void *v194; // [xsp+E0h] [xbp-3B0h]
  193.   int v195; // [xsp+E8h] [xbp-3A8h]
  194.   int v196; // [xsp+ECh] [xbp-3A4h]
  195.   int v197; // [xsp+F0h] [xbp-3A0h]
  196.   __int64 v198; // [xsp+F8h] [xbp-398h]
  197.   int v199; // [xsp+100h] [xbp-390h]
  198.   __int64 v200; // [xsp+104h] [xbp-38Ch]
  199.   int v201; // [xsp+10Ch] [xbp-384h]
  200.   int v202; // [xsp+110h] [xbp-380h]
  201.   int v203; // [xsp+114h] [xbp-37Ch]
  202.   char v204; // [xsp+118h] [xbp-378h]
  203.   char v205[260]; // [xsp+11Ch] [xbp-374h]
  204.   char s[260]; // [xsp+220h] [xbp-270h]
  205.   char v207; // [xsp+324h] [xbp-16Ch]
  206.   signed __int64 *v208; // [xsp+428h] [xbp-68h]
  207.  
  208.   v7 = _ReadStatusReg(ARM64_SYSREG(3, 3, 0xD, 0, 2));
  209.   LODWORD(v8) = a5;
  210.   v9 = (int8x16_t *)a3;
  211.   v10 = a2;
  212.   v11 = (_QWORD *)a1;
  213.   v208 = *(signed __int64 **)(v7 + 0x28);
  214.   *(_DWORD *)(a1 + 0x88) = a4;
  215.   if ( a5 )
  216.   {
  217.     v5 = (unsigned __int64)strrchr(a2, 0x2E);
  218.     if ( v5 )
  219.     {
  220.       memset(s, 0, 0x104u);
  221.       strncpy(s, v10, v5 - (_DWORD)v10);
  222.     }
  223.     else
  224.     {
  225.       snprintf(s, 0x104u, "%s", v10);
  226.     }
  227.     v14 = (signed __int64)s;
  228.     v15 = strlen(s);
  229.     v16 = v15;
  230.     v17 = v15 >= 4;
  231.     result = 0LL;
  232.     if ( !v17 )
  233.       goto LABEL_294;
  234.     *(_WORD *)&s[v16 - 2] = 0;
  235.     snprintf(&v207, 0x104u, "%s%02d%s", s, 0LL, v5);
  236.     v12 = v11 + 0x3B;
  237.     v19 = strlen(&v207);
  238.     sub_B6D10(v11 + 0x3B, &v207, v19);
  239.   }
  240.   else
  241.   {
  242.     v12 = (_BYTE *)(a1 + 0x1D8);
  243.     v13 = strlen(a2);
  244.     sub_B6D10(v11 + 0x3B, v10, v13);
  245.   }
  246.   v20 = operator new(0x90uLL);
  247.   *(_QWORD *)v20 = &off_8D8820;
  248.   *(_QWORD *)(v20 + 8) = 0LL;
  249.   *(_QWORD *)(v20 + 0x70) = 0LL;
  250.   *(_QWORD *)(v20 + 0x78) = 0LL;
  251.   *(_QWORD *)(v20 + 0x60) = 0LL;
  252.   *(_QWORD *)(v20 + 0x68) = 0LL;
  253.   *(_QWORD *)(v20 + 0x58) = 0LL;
  254.   *(_QWORD *)(v20 + 0x50) = 0LL;
  255.   v6 = (_BYTE *)(v20 + 0x50);
  256.   *(_QWORD *)(v20 + 0x18) = 0LL;
  257.   *(_QWORD *)(v20 + 0x20) = 0LL;
  258.   *(_QWORD *)(v20 + 0x10) = 0LL;
  259.   *(_QWORD *)(v20 + 0x28) = 0LL;
  260.   *(_QWORD *)(v20 + 0x30) = 0xFFFFFFFFFFFFFFFFLL;
  261.   *(_QWORD *)(v20 + 0x38) = 0LL;
  262.   *(_QWORD *)(v20 + 0x40) = 0LL;
  263.   *(_DWORD *)(v20 + 0x48) = 0;
  264.   *(_QWORD *)(v20 + 0x80) = 0LL;
  265.   *(_QWORD *)(v20 + 0x88) = 0LL;
  266.   v14 = v20;
  267.   v181 = v20 + 0x80;
  268.   if ( *v12 & 1 )
  269.     v21 = (const char *)v11[0x3D];
  270.   else
  271.     v21 = v12 + 1;
  272.   if ( (_DWORD)v9 )
  273.     v9 = (int8x16_t *)"wb";
  274.   else
  275.     v9 = (int8x16_t *)"rb";
  276.   if ( !(unsigned int)sub_13F6D0(v20, v21, (const char *)v9) )
  277.   {
  278.     v24 = *(_QWORD *)v14;
  279.     v25 = v14;
  280. LABEL_19:
  281.     (*(void (__fastcall **)(signed __int64))(v24 + 8))(v25);
  282.     result = 0LL;
  283.     v22 = *(signed __int64 **)(v7 + 0x28);
  284.     v23 = v208;
  285.     if ( v22 != v208 )
  286.       goto LABEL_20;
  287.     return result;
  288.   }
  289.   getcwd((char *)v11 + 0x8C, 0x104u);
  290.   sub_5C7E70(v11);
  291.   v23 = (signed __int64 *)v11[0xF];
  292.   v22 = (signed __int64 *)v11[0x10];
  293.   if ( v23 == v22 )
  294.     goto LABEL_20;
  295.   *v23 = v14;
  296.   v11[0xF] += 8LL;
  297. LABEL_34:
  298.   v40 = v11 + 7;
  299.   v180 = (_QWORD *)(v14 + 0x18);
  300.   if ( *(_QWORD *)(v14 + 0x18) )
  301.   {
  302.     v41 = *(_OWORD **)(v14 + 0x20);
  303.     *(_OWORD *)((char *)v11 + 0x44) = *(_OWORD *)((char *)v41 + 0xC);
  304.     *v40 = *v41;
  305.     *(_QWORD *)(v14 + 0x20) = (char *)v41 + 0x1C;
  306.   }
  307.   else if ( !fread(v11 + 7, 0x1Cu, 1u, *(FILE **)(v14 + 0x10)) )
  308.   {
  309.     goto LABEL_101;
  310.   }
  311.   if ( *(_DWORD *)v40 != 0x1E2393F )
  312.   {
  313.     v58 = qword_909F28;
  314.     if ( *v6 & 1 )
  315.       v59 = *(_QWORD *)(v14 + 0x60);
  316.     else
  317.       v59 = v14 + 0x51;
  318.     v66 = *(_QWORD *)qword_909F28;
  319.     v67 = "%s File Version Wrong!!\n";
  320.     goto LABEL_293;
  321.   }
  322.   if ( (_DWORD)v8 && *((_DWORD *)v11 + 0x13) >= 2 )
  323.   {
  324.     LODWORD(v8) = 1;
  325.     v183 = v6;
  326.     v178 = v9;
  327.     do
  328.     {
  329.       while ( 1 )
  330.       {
  331.         snprintf(&v207, 0x104u, "%s%02d%s", s, (unsigned int)v8, v5);
  332.         v42 = operator new(0x90uLL);
  333.         *(_QWORD *)(v42 + 0x20) = 0LL;
  334.         *(_QWORD *)(v42 + 0x28) = 0LL;
  335.         *(_QWORD *)(v42 + 0x10) = 0LL;
  336.         *(_QWORD *)(v42 + 0x18) = 0LL;
  337.         *(_QWORD *)v42 = &off_8D8820;
  338.         *(_QWORD *)(v42 + 8) = 0LL;
  339.         *(_QWORD *)(v42 + 0x70) = 0LL;
  340.         *(_QWORD *)(v42 + 0x78) = 0LL;
  341.         *(_QWORD *)(v42 + 0x60) = 0LL;
  342.         *(_QWORD *)(v42 + 0x68) = 0LL;
  343.         *(_QWORD *)(v42 + 0x50) = 0LL;
  344.         *(_QWORD *)(v42 + 0x58) = 0LL;
  345.         *(_QWORD *)(v42 + 0x38) = 0LL;
  346.         *(_QWORD *)(v42 + 0x40) = 0LL;
  347.         *(_QWORD *)(v42 + 0x30) = 0xFFFFFFFFFFFFFFFFLL;
  348.         *(_DWORD *)(v42 + 0x48) = 0;
  349.         *(_QWORD *)(v42 + 0x80) = 0LL;
  350.         *(_QWORD *)(v42 + 0x88) = 0LL;
  351.         if ( !(unsigned int)sub_13F6D0(v42, &v207, (const char *)v9) )
  352.         {
  353.           sub_5C7E70(v11);
  354.           v24 = *(_QWORD *)v42;
  355.           v25 = v42;
  356.           goto LABEL_19;
  357.         }
  358.         v44 = (__int64 *)v11[0xF];
  359.         v43 = (__int64 *)v11[0x10];
  360.         if ( v44 == v43 )
  361.           break;
  362.         *v44 = v42;
  363.         v11[0xF] += 8LL;
  364.         LODWORD(v8) = v8 + 1;
  365.         if ( (signed int)v8 >= *((_DWORD *)v11 + 0x13) )
  366.           goto LABEL_64;
  367.       }
  368.       v45 = (_BYTE *)v11[0xE];
  369.       v46 = (char *)v5;
  370.       v47 = v7;
  371.       v48 = (char *)v44 - v45;
  372.       v49 = ((char *)v44 - v45) >> 3;
  373.       if ( (unsigned __int64)(v49 + 1) >> 0x3D )
  374.         goto LABEL_300;
  375.       v50 = (char *)v43 - v45;
  376.       if ( (unsigned __int64)(v50 >> 3) > 0xFFFFFFFFFFFFFFELL )
  377.       {
  378.         v52 = 0x1FFFFFFFFFFFFFFFLL;
  379.       }
  380.       else
  381.       {
  382.         v51 = v50 >> 2;
  383.         if ( v51 >= v49 + 1 )
  384.           v52 = v51;
  385.         else
  386.           v52 = v49 + 1;
  387.         if ( !v52 )
  388.         {
  389.           v53 = 0LL;
  390.           v54 = 0LL;
  391.           goto LABEL_55;
  392.         }
  393.         if ( v52 >> 0x3D )
  394. LABEL_300:
  395.           abort();
  396.       }
  397.       v53 = (char *)operator new(8 * v52);
  398.       v54 = v53;
  399. LABEL_55:
  400.       v55 = (__int64 *)&v54[8 * v49];
  401.       v56 = (signed __int64)&v54[8 * v52];
  402.       *v55 = v42;
  403.       v57 = (signed __int64)(v55 + 1);
  404.       if ( v48 >= 1 )
  405.         memcpy(v53, v45, v48);
  406.       v11[0xE] = v54;
  407.       v11[0xF] = v57;
  408.       v11[0x10] = v56;
  409.       v7 = v47;
  410.       v6 = v183;
  411.       v5 = (unsigned __int64)v46;
  412.       v9 = v178;
  413.       if ( v45 )
  414.         operator delete(v45);
  415.       LODWORD(v8) = v8 + 1;
  416.     }
  417.     while ( (signed int)v8 < *((_DWORD *)v11 + 0x13) );
  418.   }
  419. LABEL_64:
  420.   v9 = (int8x16_t *)(v14 + 0x18);
  421.   v60 = *((signed int *)v11 + 0x10);
  422.   if ( *v180 )
  423.   {
  424.     *(_QWORD *)(v14 + 0x20) = *v180 + v60;
  425.     goto LABEL_66;
  426.   }
  427.   v68 = *(FILE **)(v14 + 0x10);
  428.   if ( !v68 )
  429.     goto LABEL_79;
  430.   if ( !fseek(v68, v60, 0) )
  431.   {
  432. LABEL_66:
  433.     v61 = *((_DWORD *)v11 + 0x12) ^ 0x771;
  434.     v8 = v61;
  435.     *((_DWORD *)v11 + 0x12) = v61;
  436.     v62 = (char *)operator new[](v61);
  437.     v9 = (int8x16_t *)v62;
  438.     if ( *v180 )
  439.     {
  440.       v63 = v62;
  441.       v64 = *(_QWORD *)(v14 + 0x20);
  442.       memcpy(v62, *(const void **)(v14 + 0x20), v8);
  443.       v65 = v64 + v8;
  444.       v9 = (int8x16_t *)v63;
  445.       *(_QWORD *)(v14 + 0x20) = v65;
  446.     }
  447.     else
  448.     {
  449.       if ( !fread(v62, v8, 1u, *(FILE **)(v14 + 0x10)) )
  450.       {
  451. LABEL_101:
  452.         v58 = qword_909F28;
  453.         if ( *v6 & 1 )
  454.           v59 = *(_QWORD *)(v14 + 0x60);
  455.         else
  456.           v59 = v14 + 0x51;
  457.         v66 = *(_QWORD *)qword_909F28;
  458.         v67 = "%s Header Wrong!!\n";
  459.         goto LABEL_293;
  460.       }
  461.       v8 = *((signed int *)v11 + 0x12);
  462.     }
  463.     v5 = *((unsigned int *)v11 + 0x11);
  464.     if ( (_DWORD)v5 != (unsigned int)sub_B747C(v9, v8) )
  465.     {
  466.       v58 = qword_909F28;
  467.       if ( *v6 & 1 )
  468.         v59 = *(_QWORD *)(v14 + 0x60);
  469.       else
  470.         v59 = v14 + 0x51;
  471.       v66 = *(_QWORD *)qword_909F28;
  472.       v67 = "%s File Modified!!\n";
  473.       goto LABEL_293;
  474.     }
  475.     v71 = *((_DWORD *)v11 + 0x12);
  476.     v72 = (char *)v9;
  477.     if ( v71 >= 0 )
  478.       v73 = *((_DWORD *)v11 + 0x12);
  479.     else
  480.       v73 = v71 + 3;
  481.     v74 = v71 - (v73 & 0xFFFFFFFC);
  482.     if ( v71 < 4 )
  483.       goto LABEL_97;
  484.     v75 = v73 >> 2;
  485.     v76 = (unsigned int)((v73 >> 2) - 1);
  486.     v77 = v76 + 1;
  487.     if ( (unsigned __int64)(v76 + 1) > 7 && !(((unsigned __int8)v71 + (unsigned __int8)v76) & 0x100) )
  488.     {
  489.       v78 = 0;
  490.       v79 = (char *)v9;
  491.       v80 = *((_DWORD *)v11 + 0x12);
  492.       if ( (unsigned int)v76 > 0xFF )
  493.         goto LABEL_94;
  494.       if ( v9 >= (int8x16_t *)&dword_8FD314[v76 + 1 + (unsigned __int8)v71]
  495.         || &v9->n128_u8[4 * (unsigned int)v76 + 4] <= (unsigned __int8 *)&dword_8FD314[(unsigned __int8)v71] )
  496.       {
  497.         v170 = v75 & 7;
  498.         v78 = v77 - v170;
  499.         v171 = 0LL;
  500.         v172 = v9 + 1;
  501.         v79 = (char *)v9 + 4 * (v77 - v170);
  502.         v80 = v71 + v77 - v170;
  503.         do
  504.         {
  505.           v173 = (int8x16_t *)&dword_8FD314[(unsigned __int8)(v71 + v171)];
  506.           v171 += 8LL;
  507.           v174 = veorq_s8(v173[1], *v172);
  508.           v172[0xFFFFFFFFLL] = veorq_s8(*v173, v172[0xFFFFFFFFLL]);
  509.           *v172 = v174;
  510.           v172 += 2;
  511.         }
  512.         while ( v76 + 1 - v170 != v171 );
  513.         if ( !(v75 & 7) )
  514.           goto LABEL_96;
  515.         goto LABEL_94;
  516.       }
  517.     }
  518.     v78 = 0;
  519.     v79 = (char *)v9;
  520.     v80 = *((_DWORD *)v11 + 0x12);
  521. LABEL_94:
  522.     v81 = v75 - v78;
  523.     do
  524.     {
  525.       v82 = dword_8FD314[(unsigned __int8)v80];
  526.       --v81;
  527.       ++v80;
  528.       *(_DWORD *)v79 ^= v82;
  529.       v79 += 4;
  530.     }
  531.     while ( v81 );
  532. LABEL_96:
  533.     v72 = (char *)v9->n128_u64 + 4 * v76 + 4;
  534.     v71 += v76 + 1;
  535. LABEL_97:
  536.     v175 = v9;
  537.     if ( v74 >= 1 )
  538.     {
  539.       do
  540.       {
  541.         v83 = dword_8FD314[(unsigned __int8)v71];
  542.         --v74;
  543.         ++v71;
  544.         *v72 ^= v83;
  545.         ++v72;
  546.       }
  547.       while ( v74 );
  548.     }
  549.     if ( *((_DWORD *)v11 + 0xF) < 1 )
  550.       goto LABEL_275;
  551.     v176 = v7;
  552.     v8 = (signed __int64)v9;
  553.     v184 = v11 + 2;
  554.     v177 = v11 + 4;
  555.     v6 = (char *)v193 + 1;
  556.     LODWORD(v5) = 0;
  557.     v9 = (int8x16_t *)v205;
  558.     while ( 1 )
  559.     {
  560.       v91 = 0LL;
  561.       *(_QWORD *)v193 = 0LL;
  562.       *(_QWORD *)&v193[2] = 0LL;
  563.       v194 = 0LL;
  564.       do
  565.       {
  566.         v92 = v91 + 1;
  567.         v205[v91] = *(_BYTE *)(v8 + v91);
  568.         if ( (unsigned __int64)(v91 + 1) > 0x103 )
  569.           break;
  570.         v93 = *(unsigned __int8 *)(v8 + v91++);
  571.       }
  572.       while ( v93 );
  573.       v94 = strlen(v205);
  574.       v95 = v94;
  575.       if ( v94 <= 0x16 )
  576.       {
  577.         if ( v94 )
  578.           memcpy((char *)v193 + 1, v205, v94);
  579.         v98 = 2 * v95;
  580.         *((_BYTE *)v193 + v95 + 1) = 0;
  581.         LOBYTE(v193[0]) = 2 * v95;
  582.       }
  583.       else
  584.       {
  585.         if ( v94 - 0x16 >= 0xFFFFFFFFFFFFFFD9LL )
  586.           goto LABEL_300;
  587.         v96 = 0x2CLL;
  588.         if ( v94 > 0x2C )
  589.           v96 = v94;
  590.         if ( v96 >= 0x17 )
  591.           v14 = (v96 + 0x10) & 0xFFFFFFFFFFFFFFF0LL;
  592.         else
  593.           v14 = 0x17LL;
  594.         v97 = (void *)operator new(v14);
  595.         memcpy(v97, v205, v95);
  596.         v98 = v14 | 1;
  597.         *(_QWORD *)&v193[2] = v95;
  598.         v194 = v97;
  599.         *(_QWORD *)v193 = v14 | 1;
  600.         *((_BYTE *)v97 + v95) = 0;
  601.       }
  602.       v99 = v8 + v92;
  603.       v195 = *(_DWORD *)v99;
  604.       v196 = *(_DWORD *)(v99 + 4);
  605.       v197 = *(_DWORD *)(v99 + 8);
  606.       v199 = *(_DWORD *)(v99 + 0xC);
  607.       v200 = *(_QWORD *)(v99 + 0x10);
  608.       v201 = *(_DWORD *)(v99 + 0x18);
  609.       v202 = *(_DWORD *)(v99 + 0x1C);
  610.       v100 = *(_DWORD *)(v99 + 0x20);
  611.       v198 = 0LL;
  612.       v203 = v100;
  613.       if ( v98 & 1 )
  614.         v101 = (const char *)v194;
  615.       else
  616.         v101 = (char *)v193 + 1;
  617.       if ( !strcmp(v101, "dkempty") )
  618.       {
  619.         v109 = v11[0xC];
  620.         if ( v109 == v11[0xD] )
  621.         {
  622.           sub_5CF370(v11 + 0xB, v193);
  623.           v8 = v99 + 0x24;
  624.           if ( !(v193[0] & 1) )
  625.             goto LABEL_274;
  626.           goto LABEL_270;
  627.         }
  628.         *(_QWORD *)(v109 + 8) = 0LL;
  629.         *(_QWORD *)(v109 + 0x10) = 0LL;
  630.         *(_QWORD *)v109 = 0LL;
  631.         if ( !(v193[0] & 1) )
  632.         {
  633.           *(_QWORD *)(v109 + 0x10) = v194;
  634.           *(_OWORD *)v109 = *(_OWORD *)v193;
  635.           goto LABEL_244;
  636.         }
  637.         v153 = *(_QWORD *)&v193[2];
  638.         if ( *(_QWORD *)&v193[2] >= 0xFFFFFFFFFFFFFFF0LL )
  639.           goto LABEL_300;
  640.         v154 = v194;
  641.         if ( *(_QWORD *)&v193[2] >= 0x17uLL )
  642.         {
  643.           v14 = (*(_QWORD *)&v193[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL;
  644.           v155 = (void *)operator new(v14);
  645.           *(_QWORD *)(v109 + 8) = v153;
  646.           *(_QWORD *)(v109 + 0x10) = v155;
  647.           *(_QWORD *)v109 = v14 | 1;
  648.         }
  649.         else
  650.         {
  651.           *(_BYTE *)v109 = 2 * LOBYTE(v193[2]);
  652.           v155 = (void *)(v109 + 1);
  653.           if ( !v153 )
  654.             goto LABEL_243;
  655.         }
  656.         memcpy(v155, v154, v153);
  657. LABEL_243:
  658.         *((_BYTE *)v155 + v153) = 0;
  659.         v6 = (char *)v193 + 1;
  660. LABEL_244:
  661.         *(_OWORD *)(v109 + 0x38) = *(_OWORD *)((char *)&v200 + 4);
  662.         *(_OWORD *)(v109 + 0x28) = *(_OWORD *)&v198;
  663.         *(_OWORD *)(v109 + 0x18) = *(_OWORD *)&v195;
  664.         v11[0xC] += 0x48LL;
  665.         v8 = v99 + 0x24;
  666.         if ( !(v193[0] & 1) )
  667.           goto LABEL_274;
  668.         goto LABEL_270;
  669.       }
  670.       v102 = strlen(v101);
  671.       memset(v205, 0, 0x104u);
  672.       if ( v102 >= 1 )
  673.       {
  674.         v103 = 0LL;
  675.         v104 = v102;
  676.         do
  677.         {
  678.           v105 = v101[v103];
  679.           if ( !(v105 & 0x80000000) && isupper((unsigned __int8)v105) )
  680.             LOBYTE(v105) = _tolower((unsigned __int8)v105);
  681.           v205[v103++] = v105;
  682.         }
  683.         while ( v103 <= 0x103 && (signed __int64)v103 < v104 );
  684.       }
  685.       *(_QWORD *)v185 = 0LL;
  686.       *(_QWORD *)&v185[2] = 0LL;
  687.       v186 = 0LL;
  688.       v106 = strlen(v205);
  689.       v107 = v106;
  690.       if ( v106 >= 0xFFFFFFFFFFFFFFF0LL )
  691.         goto LABEL_300;
  692.       if ( v106 >= 0x17 )
  693.         break;
  694.       v108 = (char *)v185 + 1;
  695.       LOBYTE(v185[0]) = 2 * v106;
  696.       if ( v106 )
  697.         goto LABEL_162;
  698. LABEL_163:
  699.       v111 = v193[0];
  700.       v108[v107] = 0;
  701.       v188 = 0LL;
  702.       v189 = 0LL;
  703.       v187 = 0LL;
  704.       if ( v111 & 1 )
  705.       {
  706.         v107 = *(_QWORD *)&v193[2];
  707.         if ( *(_QWORD *)&v193[2] >= 0xFFFFFFFFFFFFFFF0LL )
  708.           goto LABEL_300;
  709.         v112 = v194;
  710.         if ( *(_QWORD *)&v193[2] >= 0x17uLL )
  711.         {
  712.           v6 = (char *)v193 + 1;
  713.           v113 = (char *)operator new((*(_QWORD *)&v193[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL);
  714.           v188 = v107;
  715.           v189 = v113;
  716.           v187 = (v107 + 0x10) & 0xFFFFFFFFFFFFFFF0LL | 1;
  717.         }
  718.         else
  719.         {
  720.           v113 = (char *)&v187 + 1;
  721.           LOBYTE(v187) = 2 * LOBYTE(v193[2]);
  722.           if ( !*(_QWORD *)&v193[2] )
  723.             goto LABEL_171;
  724.         }
  725.         memcpy(v113, v112, v107);
  726. LABEL_171:
  727.         v113[v107] = 0;
  728.         goto LABEL_172;
  729.       }
  730.       v189 = v194;
  731.       *(_OWORD *)&v187 = *(_OWORD *)v193;
  732. LABEL_172:
  733.       v191 = *(_OWORD *)&v198;
  734.       v192 = *(_OWORD *)((char *)&v200 + 4);
  735.       v190 = *(_OWORD *)&v195;
  736.       if ( v185[0] & 1 )
  737.         v114 = *(_QWORD *)&v185[2];
  738.       else
  739.         v114 = (unsigned int)LOBYTE(v185[0]) >> 1;
  740.       if ( v185[0] & 1 )
  741.         v115 = (char *)v186;
  742.       else
  743.         v115 = (char *)v185 + 1;
  744.       v116 = sub_3EEB9C(&v204, v115, v114);
  745.       v117 = v11[3];
  746.       v118 = (AAsset **)v116;
  747.       if ( !v117 )
  748.         goto LABEL_208;
  749.       v119 = v117 - 1;
  750.       if ( (v117 - 1) & v117 )
  751.       {
  752.         v107 = v116;
  753.         if ( v116 >= v117 )
  754.           v107 = v116 - v116 / v117 * v117;
  755.         v120 = *(__int64 ***)(*v184 + 8 * v107);
  756.         if ( !v120 )
  757.           goto LABEL_208;
  758.       }
  759.       else
  760.       {
  761.         v107 = v119 & v116;
  762.         v120 = *(__int64 ***)(*v184 + 8 * (v119 & v116));
  763.         if ( !v120 )
  764.           goto LABEL_208;
  765.       }
  766.       v87 = *v120;
  767.       if ( !*v120 )
  768.         goto LABEL_208;
  769.       if ( v185[0] & 1 )
  770.         v121 = *(_QWORD *)&v185[2];
  771.       else
  772.         v121 = (unsigned int)LOBYTE(v185[0]) >> 1;
  773.       if ( v185[0] & 1 )
  774.         v122 = (char *)v186;
  775.       else
  776.         v122 = (char *)v185 + 1;
  777.       if ( (v117 - 1) & v117 )
  778.       {
  779.         if ( v121 )
  780.         {
  781.           do
  782.           {
  783.             v123 = v87[1];
  784.             if ( (AAsset **)v123 != v118 )
  785.             {
  786.               if ( v123 >= v117 )
  787.                 v123 -= v123 / v117 * v117;
  788.               if ( v123 != v107 )
  789.                 break;
  790.             }
  791.             v124 = *((unsigned __int8 *)v87 + 0x10);
  792.             v125 = v87[3];
  793.             if ( !(v124 & 1) )
  794.               v125 = v124 >> 1;
  795.             if ( v125 == v121 )
  796.             {
  797.               if ( v124 & 1 )
  798.               {
  799.                 v129 = v118;
  800.                 v130 = memcmp((const void *)v87[4], v122, v121);
  801.                 v118 = v129;
  802.                 if ( !v130 )
  803.                   goto LABEL_260;
  804.               }
  805.               else
  806.               {
  807.                 v126 = (unsigned __int8 *)v87 + 0x11;
  808.                 v127 = -(signed __int64)(v124 >> 1);
  809.                 v128 = (unsigned __int8 *)v122;
  810.                 while ( *v126 == *v128 )
  811.                 {
  812.                   ++v126;
  813.                   ++v127;
  814.                   ++v128;
  815.                   if ( !v127 )
  816.                     goto LABEL_260;
  817.                 }
  818.               }
  819.             }
  820.             v87 = (__int64 *)*v87;
  821.           }
  822.           while ( v87 );
  823.           v6 = (char *)v193 + 1;
  824.           v7 = v176;
  825.         }
  826.         else
  827.         {
  828.           v6 = (char *)v193 + 1;
  829.           v7 = v176;
  830.           do
  831.           {
  832.             v84 = v87[1];
  833.             if ( v84 != v116 )
  834.             {
  835.               if ( v84 >= v117 )
  836.                 v84 -= v84 / v117 * v117;
  837.               if ( v84 != v107 )
  838.                 break;
  839.             }
  840.             v85 = *((unsigned __int8 *)v87 + 0x10);
  841.             if ( v85 & 1 )
  842.               v86 = v87[3];
  843.             else
  844.               v86 = v85 >> 1;
  845.             if ( !v86 )
  846.               goto LABEL_127;
  847.             v87 = (__int64 *)*v87;
  848.           }
  849.           while ( v87 );
  850.         }
  851. LABEL_208:
  852.         v181 = (unsigned __int64)v118;
  853.         v131 = (_QWORD *)operator new(0x70uLL);
  854.         v132 = v131;
  855.         v131[2] = 0LL;
  856.         v131[3] = 0LL;
  857.         v131[4] = 0LL;
  858.         if ( !(v185[0] & 1) )
  859.         {
  860.           v133 = *(_OWORD *)v185;
  861.           v131[4] = v186;
  862.           *((_OWORD *)v131 + 1) = v133;
  863. LABEL_219:
  864.           v139 = v189;
  865.           v141 = *(_OWORD *)&v187;
  866.           v188 = 0LL;
  867.           v189 = 0LL;
  868.           v187 = 0LL;
  869.           v140 = v190;
  870.           v142 = v191;
  871.           v143 = v192;
  872.           v132[7] = v139;
  873.           *(_OWORD *)(v132 + 5) = v141;
  874.           *((_OWORD *)v132 + 5) = v142;
  875.           *((_OWORD *)v132 + 6) = v143;
  876.           *((_OWORD *)v132 + 4) = v140;
  877.           *v132 = 0LL;
  878.           v132[1] = v181;
  879.           v144 = *((float *)v11 + 0xC);
  880.           v145 = (float)(unsigned __int64)(v11[5] + 1LL);
  881.           if ( v117 && (float)(v144 * (float)v117) >= v145 )
  882.           {
  883. LABEL_230:
  884.             v151 = *v184;
  885.             v152 = *(_QWORD **)(*v184 + 8 * v107);
  886.             if ( !v152 )
  887.               goto LABEL_237;
  888.           }
  889.           else
  890.           {
  891.             if ( v117 < 3 )
  892.               v146 = 1LL;
  893.             else
  894.               v146 = ((v117 - 1) & v117) != 0;
  895.             v147 = v146 | 2 * v117;
  896.             v148 = vcvtps_u32_f32(v145 / v144);
  897.             if ( v147 >= v148 )
  898.               v149 = v147;
  899.             else
  900.               v149 = v148;
  901.             sub_5CEFD4(v184, v149);
  902.             v117 = v11[3];
  903.             v150 = v117 - 1;
  904.             if ( (v117 - 1) & v117 )
  905.             {
  906.               v107 = v181;
  907.               if ( v181 >= v117 )
  908.                 v107 = v181 - v181 / v117 * v117;
  909.               goto LABEL_230;
  910.             }
  911.             v107 = v150 & v181;
  912.             v151 = *v184;
  913.             v152 = *(_QWORD **)(*v184 + 8 * (v150 & v181));
  914.             if ( !v152 )
  915.             {
  916. LABEL_237:
  917.               *v132 = *v177;
  918.               *v177 = v132;
  919.               *(_QWORD *)(v151 + 8 * v107) = v177;
  920.               if ( *v132 )
  921.               {
  922.                 v156 = *(_QWORD *)(*v132 + 8LL);
  923.                 if ( (v117 - 1) & v117 )
  924.                 {
  925.                   if ( v156 >= v117 )
  926.                     v156 -= v156 / v117 * v117;
  927.                 }
  928.                 else
  929.                 {
  930.                   v156 &= v117 - 1;
  931.                 }
  932.                 v152 = (_QWORD *)(*v184 + 8 * v156);
  933. LABEL_264:
  934.                 *v152 = v132;
  935.               }
  936.               v14 = 0LL;
  937.               ++v11[5];
  938.               if ( !(v187 & 1) )
  939.                 goto LABEL_267;
  940. LABEL_266:
  941.               operator delete(v189);
  942.               goto LABEL_267;
  943.             }
  944.           }
  945.           *v132 = *v152;
  946.           goto LABEL_264;
  947.         }
  948.         v134 = *(_QWORD *)&v185[2];
  949.         if ( *(_QWORD *)&v185[2] >= 0xFFFFFFFFFFFFFFF0LL )
  950.           goto LABEL_300;
  951.         v135 = v186;
  952.         if ( *(_QWORD *)&v185[2] >= 0x17uLL )
  953.         {
  954.           v137 = v186;
  955.           v138 = operator new((*(_QWORD *)&v185[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL);
  956.           v135 = v137;
  957.           v136 = (void *)v138;
  958.           v132[3] = v134;
  959.           v132[4] = v138;
  960.           v132[2] = (v134 + 0x10) & 0xFFFFFFFFFFFFFFF0LL | 1;
  961.         }
  962.         else
  963.         {
  964.           v136 = (char *)v131 + 0x11;
  965.           *((_BYTE *)v131 + 0x10) = 2 * LOBYTE(v185[2]);
  966.           if ( !v134 )
  967.             goto LABEL_218;
  968.         }
  969.         memcpy(v136, v135, v134);
  970. LABEL_218:
  971.         *((_BYTE *)v136 + v134) = 0;
  972.         v6 = (char *)v193 + 1;
  973.         goto LABEL_219;
  974.       }
  975.       if ( !v121 )
  976.       {
  977.         v6 = (char *)v193 + 1;
  978.         v7 = v176;
  979.         while ( 1 )
  980.         {
  981.           v88 = v87[1];
  982.           if ( v88 != v116 && (v88 & v119) != v107 )
  983.             goto LABEL_208;
  984.           v89 = *((unsigned __int8 *)v87 + 0x10);
  985.           v90 = v89 & 1 ? v87[3] : (unsigned __int64)(v89 >> 1);
  986.           if ( !v90 )
  987.             break;
  988.           v87 = (__int64 *)*v87;
  989.           if ( !v87 )
  990.             goto LABEL_208;
  991.         }
  992. LABEL_127:
  993.         v14 = 1LL;
  994.         if ( !(v187 & 1) )
  995.           goto LABEL_267;
  996.         goto LABEL_266;
  997.       }
  998.       while ( 1 )
  999.       {
  1000.         v157 = (AAsset **)v87[1];
  1001.         if ( v157 != v118 && ((unsigned __int64)v157 & v119) != v107 )
  1002.         {
  1003. LABEL_259:
  1004.           v6 = (char *)v193 + 1;
  1005.           v7 = v176;
  1006.           goto LABEL_208;
  1007.         }
  1008.         v158 = *((unsigned __int8 *)v87 + 0x10);
  1009.         v159 = v87[3];
  1010.         if ( !(v158 & 1) )
  1011.           v159 = v158 >> 1;
  1012.         if ( v159 == v121 )
  1013.         {
  1014.           if ( !(v158 & 1) )
  1015.           {
  1016.             v160 = (unsigned __int8 *)v87 + 0x11;
  1017.             v161 = -(signed __int64)(v158 >> 1);
  1018.             v162 = (unsigned __int8 *)v122;
  1019.             while ( *v160 == *v162 )
  1020.             {
  1021.               ++v160;
  1022.               ++v161;
  1023.               ++v162;
  1024.               if ( !v161 )
  1025.                 goto LABEL_260;
  1026.             }
  1027.             goto LABEL_258;
  1028.           }
  1029.           v163 = v118;
  1030.           v164 = memcmp((const void *)v87[4], v122, v121);
  1031.           v118 = v163;
  1032.           if ( !v164 )
  1033.             break;
  1034.         }
  1035. LABEL_258:
  1036.         v87 = (__int64 *)*v87;
  1037.         if ( !v87 )
  1038.           goto LABEL_259;
  1039.       }
  1040. LABEL_260:
  1041.       v6 = (char *)v193 + 1;
  1042.       v7 = v176;
  1043.       v14 = 1LL;
  1044.       if ( v187 & 1 )
  1045.         goto LABEL_266;
  1046. LABEL_267:
  1047.       if ( v185[0] & 1 )
  1048.       {
  1049.         operator delete(v186);
  1050.         if ( !(_DWORD)v14 )
  1051.           goto LABEL_273;
  1052. LABEL_269:
  1053.         (*(void (**)(void))(*(_QWORD *)qword_909F28 + 0xC8LL))();
  1054.         v8 = v99 + 0x24;
  1055.         if ( v193[0] & 1 )
  1056.           goto LABEL_270;
  1057. LABEL_274:
  1058.         v5 = (unsigned int)(v5 + 1);
  1059.         if ( (signed int)v5 >= *((_DWORD *)v11 + 0xF) )
  1060.           goto LABEL_275;
  1061.       }
  1062.       else
  1063.       {
  1064.         if ( (_DWORD)v14 )
  1065.           goto LABEL_269;
  1066. LABEL_273:
  1067.         v8 = v99 + 0x24;
  1068.         if ( !(v193[0] & 1) )
  1069.           goto LABEL_274;
  1070. LABEL_270:
  1071.         operator delete(v194);
  1072.         v5 = (unsigned int)(v5 + 1);
  1073.         if ( (signed int)v5 >= *((_DWORD *)v11 + 0xF) )
  1074.         {
  1075. LABEL_275:
  1076.           operator delete[](v175);
  1077.           if ( !*((_DWORD *)v11 + 0x22) )
  1078.           {
  1079.             v165 = v11[0xE];
  1080.             if ( v11[0xF] != v165 )
  1081.             {
  1082.               v166 = 0LL;
  1083.               LODWORD(v5) = 1;
  1084.               do
  1085.               {
  1086.                 v14 = *(_QWORD *)(v165 + 8 * v166);
  1087.                 v167 = *(FILE **)(v14 + 0x10);
  1088.                 if ( v167 )
  1089.                 {
  1090.                   fclose(v167);
  1091.                   *(_QWORD *)(v14 + 0x10) = 0LL;
  1092.                 }
  1093.                 v168 = *(AAssetDir **)(v14 + 0x88);
  1094.                 if ( v168 )
  1095.                 {
  1096.                   AAssetDir_close(v168);
  1097.                   *(_QWORD *)(v14 + 0x88) = 0LL;
  1098.                 }
  1099.                 v169 = *(AAsset **)(v14 + 0x80);
  1100.                 if ( v169 )
  1101.                 {
  1102.                   AAsset_close(v169);
  1103.                   *(_QWORD *)(v14 + 0x80) = 0LL;
  1104.                 }
  1105.                 *(_QWORD *)(v14 + 0x20) = 0LL;
  1106.                 *(_QWORD *)(v14 + 0x28) = 0LL;
  1107.                 *(_QWORD *)(v14 + 0x18) = 0LL;
  1108.                 v165 = v11[0xE];
  1109.                 v166 = (unsigned int)v5;
  1110.                 v5 = (unsigned int)(v5 + 1);
  1111.               }
  1112.               while ( (v11[0xF] - v165) >> 3 > v166 );
  1113.             }
  1114.           }
  1115.           result = 1LL;
  1116.           v22 = *(signed __int64 **)(v7 + 0x28);
  1117.           v23 = v208;
  1118.           if ( v22 == v208 )
  1119.             return result;
  1120. LABEL_20:
  1121.           v26 = (_BYTE *)v11[0xE];
  1122.           v179 = v11;
  1123.           v27 = (char *)v23 - v26;
  1124.           v28 = ((char *)v23 - v26) >> 3;
  1125.           if ( (unsigned __int64)(v28 + 1) >> 0x3D )
  1126.             goto LABEL_300;
  1127.           v29 = (char *)v22 - v26;
  1128.           v30 = v9;
  1129.           v31 = (char *)v5;
  1130.           v182 = v6;
  1131.           if ( (unsigned __int64)(v29 >> 3) > 0xFFFFFFFFFFFFFFELL )
  1132.           {
  1133.             v34 = v7;
  1134.             v33 = 0x1FFFFFFFFFFFFFFFLL;
  1135.             goto LABEL_29;
  1136.           }
  1137.           v32 = v29 >> 2;
  1138.           if ( v32 >= v28 + 1 )
  1139.             v33 = v32;
  1140.           else
  1141.             v33 = v28 + 1;
  1142.           if ( v33 )
  1143.           {
  1144.             v34 = v7;
  1145.             if ( v33 >> 0x3D )
  1146.               goto LABEL_300;
  1147. LABEL_29:
  1148.             v35 = (char *)operator new(8 * v33);
  1149.             v36 = v35;
  1150.           }
  1151.           else
  1152.           {
  1153.             v34 = v7;
  1154.             v35 = 0LL;
  1155.             v36 = 0LL;
  1156.           }
  1157.           v37 = (signed __int64 *)&v36[8 * v28];
  1158.           v38 = (signed __int64)&v36[8 * v33];
  1159.           *v37 = v14;
  1160.           v39 = (signed __int64)(v37 + 1);
  1161.           if ( v27 >= 1 )
  1162.             memcpy(v35, v26, v27);
  1163.           v179[0xE] = v36;
  1164.           v179[0xF] = v39;
  1165.           v6 = v182;
  1166.           v7 = v34;
  1167.           v5 = (unsigned __int64)v31;
  1168.           v9 = v30;
  1169.           v11 = v179;
  1170.           v179[0x10] = v38;
  1171.           if ( v26 )
  1172.             operator delete(v26);
  1173.           goto LABEL_34;
  1174.         }
  1175.       }
  1176.     }
  1177.     v110 = (v106 + 0x10) & 0xFFFFFFFFFFFFFFF0LL;
  1178.     v108 = (char *)operator new(v110);
  1179.     *(_QWORD *)&v185[2] = v107;
  1180.     v186 = v108;
  1181.     *(_QWORD *)v185 = v110 | 1;
  1182. LABEL_162:
  1183.     memcpy(v108, v205, v107);
  1184.     goto LABEL_163;
  1185.   }
  1186.   v69 = *(FILE **)(v14 + 0x10);
  1187.   if ( v69 )
  1188.   {
  1189.     fclose(v69);
  1190.     *(_QWORD *)(v14 + 0x10) = 0LL;
  1191.   }
  1192.   v70 = *(AAssetDir **)(v14 + 0x88);
  1193.   v5 = v181;
  1194.   if ( v70 )
  1195.   {
  1196.     AAssetDir_close(v70);
  1197.     *(_QWORD *)(v14 + 0x88) = 0LL;
  1198.   }
  1199.   if ( *(_QWORD *)v181 )
  1200.   {
  1201.     AAsset_close(*(AAsset **)v181);
  1202.     *(_QWORD *)v181 = 0LL;
  1203.   }
  1204.   *v180 = 0LL;
  1205.   *(_QWORD *)(v14 + 0x20) = 0LL;
  1206.   *(_QWORD *)(v14 + 0x28) = 0LL;
  1207. LABEL_79:
  1208.   v58 = qword_909F28;
  1209.   if ( *v6 & 1 )
  1210.     v59 = *(_QWORD *)(v14 + 0x60);
  1211.   else
  1212.     v59 = v14 + 0x51;
  1213.   v66 = *(_QWORD *)qword_909F28;
  1214.   v67 = "%s Seek Failed!!\n";
  1215. LABEL_293:
  1216.   (*(void (__fastcall **)(__int64, _QWORD, const char *, signed __int64))(v66 + 0xC8))(v58, 0LL, v67, v59);
  1217.   sub_5C7E70(v11);
  1218.   result = 0LL;
  1219. LABEL_294:
  1220.   v22 = *(signed __int64 **)(v7 + 0x28);
  1221.   v23 = v208;
  1222.   if ( v22 != v208 )
  1223.     goto LABEL_20;
  1224.   return result;
  1225. }
Advertisement
Add Comment
Please, Sign In to add comment