Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed __int64 __fastcall sub_5CA728(__int64 a1, const char *a2, unsigned int a3, int a4, int a5)
- {
- unsigned __int64 v5; // x20
- _BYTE *v6; // x28
- unsigned __int64 v7; // x29
- signed __int64 v8; // x22
- int8x16_t *v9; // x23
- const char *v10; // x21
- _QWORD *v11; // x19
- _BYTE *v12; // x24
- __int64 v13; // x0
- signed __int64 v14; // x21
- unsigned __int64 v15; // x0
- unsigned __int64 v16; // x8
- bool v17; // cf
- signed __int64 result; // x0
- __int64 v19; // x0
- __int64 v20; // x0
- const char *v21; // x1
- signed __int64 *v22; // x8
- signed __int64 *v23; // x9
- __int64 v24; // x8
- signed __int64 v25; // x0
- _BYTE *v26; // x24
- signed __int64 v27; // x25
- signed __int64 v28; // x27
- signed __int64 v29; // x8
- int8x16_t *v30; // x19
- char *v31; // x23
- unsigned __int64 v32; // x8
- unsigned __int64 v33; // x28
- unsigned __int64 v34; // x20
- char *v35; // x0
- char *v36; // x29
- signed __int64 *v37; // x26
- signed __int64 v38; // x27
- signed __int64 v39; // x26
- _OWORD *v40; // x24
- _OWORD *v41; // x8
- __int64 v42; // x25
- __int64 *v43; // x8
- __int64 *v44; // x9
- _BYTE *v45; // x26
- char *v46; // x23
- unsigned __int64 v47; // x20
- signed __int64 v48; // x27
- signed __int64 v49; // x29
- signed __int64 v50; // x8
- unsigned __int64 v51; // x8
- unsigned __int64 v52; // x28
- char *v53; // x0
- char *v54; // x24
- __int64 *v55; // x29
- signed __int64 v56; // x28
- signed __int64 v57; // x29
- __int64 v58; // x0
- signed __int64 v59; // x3
- __int64 v60; // x1
- int v61; // w8
- char *v62; // x0
- char *v63; // x20
- __int64 v64; // x23
- signed __int64 v65; // x8
- __int64 v66; // x8
- const char *v67; // x2
- FILE *v68; // x0
- FILE *v69; // x0
- AAssetDir *v70; // x0
- signed int v71; // w8
- char *v72; // x11
- int v73; // w10
- signed int v74; // w9
- int v75; // w12
- __int64 v76; // x10
- signed __int64 v77; // x17
- int v78; // w15
- char *v79; // x13
- int v80; // w14
- int v81; // w12
- int v82; // w17
- int v83; // w13
- unsigned __int64 v84; // x8
- unsigned int v85; // w8
- __int64 v86; // x8
- __int64 *v87; // x21
- __int64 v88; // x8
- unsigned int v89; // w8
- __int64 v90; // x8
- __int64 v91; // x8
- unsigned int v92; // w24
- int v93; // w9
- unsigned __int64 v94; // x0
- unsigned __int64 v95; // x26
- unsigned __int64 v96; // x8
- void *v97; // x27
- char v98; // w8
- signed __int64 v99; // x22
- int v100; // w9
- const char *v101; // x26
- signed int v102; // w21
- unsigned __int64 v103; // x24
- signed __int64 v104; // x25
- int v105; // w21
- unsigned __int64 v106; // x0
- __int64 v107; // x26
- char *v108; // x27
- __int64 v109; // x24
- unsigned __int64 v110; // x21
- char v111; // w8
- void *v112; // x27
- char *v113; // x21
- __int64 v114; // x2
- char *v115; // x1
- unsigned __int64 v116; // x0
- unsigned __int64 v117; // x24
- AAsset **v118; // x14
- signed __int64 v119; // x25
- __int64 **v120; // x9
- __int64 v121; // x27
- char *v122; // x29
- unsigned __int64 v123; // x8
- unsigned int v124; // w10
- __int64 v125; // x11
- unsigned __int8 *v126; // x8
- signed __int64 v127; // x9
- unsigned __int8 *v128; // x10
- AAsset **v129; // x28
- int v130; // w0
- _QWORD *v131; // x0
- _QWORD *v132; // x27
- __int128 v133; // q0
- __int64 v134; // x28
- void *v135; // x1
- void *v136; // x21
- void *v137; // x21
- __int64 v138; // x0
- void *v139; // x8
- __int128 v140; // q1
- __int128 v141; // q0
- __int128 v142; // q2
- __int128 v143; // q3
- float v144; // s0
- float v145; // s1
- _BOOL8 v146; // x9
- unsigned __int64 v147; // x8
- unsigned __int64 v148; // x9
- unsigned __int64 v149; // x1
- signed __int64 v150; // x8
- __int64 v151; // x9
- _QWORD *v152; // x8
- __int64 v153; // x26
- void *v154; // x27
- void *v155; // x28
- unsigned __int64 v156; // x8
- AAsset **v157; // x8
- unsigned int v158; // w10
- __int64 v159; // x11
- unsigned __int8 *v160; // x8
- signed __int64 v161; // x9
- unsigned __int8 *v162; // x10
- AAsset **v163; // x28
- int v164; // w0
- __int64 v165; // x8
- unsigned __int64 v166; // x9
- FILE *v167; // x0
- AAssetDir *v168; // x0
- AAsset *v169; // x0
- __int64 v170; // x18
- __int64 v171; // x0
- int8x16_t *v172; // x1
- int8x16_t *v173; // x2
- int8x16_t v174; // q1
- int8x16_t *v175; // [xsp+10h] [xbp-480h]
- unsigned __int64 v176; // [xsp+20h] [xbp-470h]
- _QWORD *v177; // [xsp+30h] [xbp-460h]
- int8x16_t *v178; // [xsp+50h] [xbp-440h]
- _QWORD *v179; // [xsp+58h] [xbp-438h]
- _QWORD *v180; // [xsp+58h] [xbp-438h]
- unsigned __int64 v181; // [xsp+60h] [xbp-430h]
- _BYTE *v182; // [xsp+68h] [xbp-428h]
- _BYTE *v183; // [xsp+68h] [xbp-428h]
- __int64 *v184; // [xsp+68h] [xbp-428h]
- size_t v185[4]; // [xsp+70h] [xbp-420h]
- void *v186; // [xsp+80h] [xbp-410h]
- unsigned __int64 v187; // [xsp+88h] [xbp-408h]
- __int64 v188; // [xsp+90h] [xbp-400h]
- void *v189; // [xsp+98h] [xbp-3F8h]
- __int128 v190; // [xsp+A0h] [xbp-3F0h]
- __int128 v191; // [xsp+B0h] [xbp-3E0h]
- __int128 v192; // [xsp+C0h] [xbp-3D0h]
- size_t v193[4]; // [xsp+D0h] [xbp-3C0h]
- void *v194; // [xsp+E0h] [xbp-3B0h]
- int v195; // [xsp+E8h] [xbp-3A8h]
- int v196; // [xsp+ECh] [xbp-3A4h]
- int v197; // [xsp+F0h] [xbp-3A0h]
- __int64 v198; // [xsp+F8h] [xbp-398h]
- int v199; // [xsp+100h] [xbp-390h]
- __int64 v200; // [xsp+104h] [xbp-38Ch]
- int v201; // [xsp+10Ch] [xbp-384h]
- int v202; // [xsp+110h] [xbp-380h]
- int v203; // [xsp+114h] [xbp-37Ch]
- char v204; // [xsp+118h] [xbp-378h]
- char v205[260]; // [xsp+11Ch] [xbp-374h]
- char s[260]; // [xsp+220h] [xbp-270h]
- char v207; // [xsp+324h] [xbp-16Ch]
- signed __int64 *v208; // [xsp+428h] [xbp-68h]
- v7 = _ReadStatusReg(ARM64_SYSREG(3, 3, 0xD, 0, 2));
- LODWORD(v8) = a5;
- v9 = (int8x16_t *)a3;
- v10 = a2;
- v11 = (_QWORD *)a1;
- v208 = *(signed __int64 **)(v7 + 0x28);
- *(_DWORD *)(a1 + 0x88) = a4;
- if ( a5 )
- {
- v5 = (unsigned __int64)strrchr(a2, 0x2E);
- if ( v5 )
- {
- memset(s, 0, 0x104u);
- strncpy(s, v10, v5 - (_DWORD)v10);
- }
- else
- {
- snprintf(s, 0x104u, "%s", v10);
- }
- v14 = (signed __int64)s;
- v15 = strlen(s);
- v16 = v15;
- v17 = v15 >= 4;
- result = 0LL;
- if ( !v17 )
- goto LABEL_294;
- *(_WORD *)&s[v16 - 2] = 0;
- snprintf(&v207, 0x104u, "%s%02d%s", s, 0LL, v5);
- v12 = v11 + 0x3B;
- v19 = strlen(&v207);
- sub_B6D10(v11 + 0x3B, &v207, v19);
- }
- else
- {
- v12 = (_BYTE *)(a1 + 0x1D8);
- v13 = strlen(a2);
- sub_B6D10(v11 + 0x3B, v10, v13);
- }
- v20 = operator new(0x90uLL);
- *(_QWORD *)v20 = &off_8D8820;
- *(_QWORD *)(v20 + 8) = 0LL;
- *(_QWORD *)(v20 + 0x70) = 0LL;
- *(_QWORD *)(v20 + 0x78) = 0LL;
- *(_QWORD *)(v20 + 0x60) = 0LL;
- *(_QWORD *)(v20 + 0x68) = 0LL;
- *(_QWORD *)(v20 + 0x58) = 0LL;
- *(_QWORD *)(v20 + 0x50) = 0LL;
- v6 = (_BYTE *)(v20 + 0x50);
- *(_QWORD *)(v20 + 0x18) = 0LL;
- *(_QWORD *)(v20 + 0x20) = 0LL;
- *(_QWORD *)(v20 + 0x10) = 0LL;
- *(_QWORD *)(v20 + 0x28) = 0LL;
- *(_QWORD *)(v20 + 0x30) = 0xFFFFFFFFFFFFFFFFLL;
- *(_QWORD *)(v20 + 0x38) = 0LL;
- *(_QWORD *)(v20 + 0x40) = 0LL;
- *(_DWORD *)(v20 + 0x48) = 0;
- *(_QWORD *)(v20 + 0x80) = 0LL;
- *(_QWORD *)(v20 + 0x88) = 0LL;
- v14 = v20;
- v181 = v20 + 0x80;
- if ( *v12 & 1 )
- v21 = (const char *)v11[0x3D];
- else
- v21 = v12 + 1;
- if ( (_DWORD)v9 )
- v9 = (int8x16_t *)"wb";
- else
- v9 = (int8x16_t *)"rb";
- if ( !(unsigned int)sub_13F6D0(v20, v21, (const char *)v9) )
- {
- v24 = *(_QWORD *)v14;
- v25 = v14;
- LABEL_19:
- (*(void (__fastcall **)(signed __int64))(v24 + 8))(v25);
- result = 0LL;
- v22 = *(signed __int64 **)(v7 + 0x28);
- v23 = v208;
- if ( v22 != v208 )
- goto LABEL_20;
- return result;
- }
- getcwd((char *)v11 + 0x8C, 0x104u);
- sub_5C7E70(v11);
- v23 = (signed __int64 *)v11[0xF];
- v22 = (signed __int64 *)v11[0x10];
- if ( v23 == v22 )
- goto LABEL_20;
- *v23 = v14;
- v11[0xF] += 8LL;
- LABEL_34:
- v40 = v11 + 7;
- v180 = (_QWORD *)(v14 + 0x18);
- if ( *(_QWORD *)(v14 + 0x18) )
- {
- v41 = *(_OWORD **)(v14 + 0x20);
- *(_OWORD *)((char *)v11 + 0x44) = *(_OWORD *)((char *)v41 + 0xC);
- *v40 = *v41;
- *(_QWORD *)(v14 + 0x20) = (char *)v41 + 0x1C;
- }
- else if ( !fread(v11 + 7, 0x1Cu, 1u, *(FILE **)(v14 + 0x10)) )
- {
- goto LABEL_101;
- }
- if ( *(_DWORD *)v40 != 0x1E2393F )
- {
- v58 = qword_909F28;
- if ( *v6 & 1 )
- v59 = *(_QWORD *)(v14 + 0x60);
- else
- v59 = v14 + 0x51;
- v66 = *(_QWORD *)qword_909F28;
- v67 = "%s File Version Wrong!!\n";
- goto LABEL_293;
- }
- if ( (_DWORD)v8 && *((_DWORD *)v11 + 0x13) >= 2 )
- {
- LODWORD(v8) = 1;
- v183 = v6;
- v178 = v9;
- do
- {
- while ( 1 )
- {
- snprintf(&v207, 0x104u, "%s%02d%s", s, (unsigned int)v8, v5);
- v42 = operator new(0x90uLL);
- *(_QWORD *)(v42 + 0x20) = 0LL;
- *(_QWORD *)(v42 + 0x28) = 0LL;
- *(_QWORD *)(v42 + 0x10) = 0LL;
- *(_QWORD *)(v42 + 0x18) = 0LL;
- *(_QWORD *)v42 = &off_8D8820;
- *(_QWORD *)(v42 + 8) = 0LL;
- *(_QWORD *)(v42 + 0x70) = 0LL;
- *(_QWORD *)(v42 + 0x78) = 0LL;
- *(_QWORD *)(v42 + 0x60) = 0LL;
- *(_QWORD *)(v42 + 0x68) = 0LL;
- *(_QWORD *)(v42 + 0x50) = 0LL;
- *(_QWORD *)(v42 + 0x58) = 0LL;
- *(_QWORD *)(v42 + 0x38) = 0LL;
- *(_QWORD *)(v42 + 0x40) = 0LL;
- *(_QWORD *)(v42 + 0x30) = 0xFFFFFFFFFFFFFFFFLL;
- *(_DWORD *)(v42 + 0x48) = 0;
- *(_QWORD *)(v42 + 0x80) = 0LL;
- *(_QWORD *)(v42 + 0x88) = 0LL;
- if ( !(unsigned int)sub_13F6D0(v42, &v207, (const char *)v9) )
- {
- sub_5C7E70(v11);
- v24 = *(_QWORD *)v42;
- v25 = v42;
- goto LABEL_19;
- }
- v44 = (__int64 *)v11[0xF];
- v43 = (__int64 *)v11[0x10];
- if ( v44 == v43 )
- break;
- *v44 = v42;
- v11[0xF] += 8LL;
- LODWORD(v8) = v8 + 1;
- if ( (signed int)v8 >= *((_DWORD *)v11 + 0x13) )
- goto LABEL_64;
- }
- v45 = (_BYTE *)v11[0xE];
- v46 = (char *)v5;
- v47 = v7;
- v48 = (char *)v44 - v45;
- v49 = ((char *)v44 - v45) >> 3;
- if ( (unsigned __int64)(v49 + 1) >> 0x3D )
- goto LABEL_300;
- v50 = (char *)v43 - v45;
- if ( (unsigned __int64)(v50 >> 3) > 0xFFFFFFFFFFFFFFELL )
- {
- v52 = 0x1FFFFFFFFFFFFFFFLL;
- }
- else
- {
- v51 = v50 >> 2;
- if ( v51 >= v49 + 1 )
- v52 = v51;
- else
- v52 = v49 + 1;
- if ( !v52 )
- {
- v53 = 0LL;
- v54 = 0LL;
- goto LABEL_55;
- }
- if ( v52 >> 0x3D )
- LABEL_300:
- abort();
- }
- v53 = (char *)operator new(8 * v52);
- v54 = v53;
- LABEL_55:
- v55 = (__int64 *)&v54[8 * v49];
- v56 = (signed __int64)&v54[8 * v52];
- *v55 = v42;
- v57 = (signed __int64)(v55 + 1);
- if ( v48 >= 1 )
- memcpy(v53, v45, v48);
- v11[0xE] = v54;
- v11[0xF] = v57;
- v11[0x10] = v56;
- v7 = v47;
- v6 = v183;
- v5 = (unsigned __int64)v46;
- v9 = v178;
- if ( v45 )
- operator delete(v45);
- LODWORD(v8) = v8 + 1;
- }
- while ( (signed int)v8 < *((_DWORD *)v11 + 0x13) );
- }
- LABEL_64:
- v9 = (int8x16_t *)(v14 + 0x18);
- v60 = *((signed int *)v11 + 0x10);
- if ( *v180 )
- {
- *(_QWORD *)(v14 + 0x20) = *v180 + v60;
- goto LABEL_66;
- }
- v68 = *(FILE **)(v14 + 0x10);
- if ( !v68 )
- goto LABEL_79;
- if ( !fseek(v68, v60, 0) )
- {
- LABEL_66:
- v61 = *((_DWORD *)v11 + 0x12) ^ 0x771;
- v8 = v61;
- *((_DWORD *)v11 + 0x12) = v61;
- v62 = (char *)operator new[](v61);
- v9 = (int8x16_t *)v62;
- if ( *v180 )
- {
- v63 = v62;
- v64 = *(_QWORD *)(v14 + 0x20);
- memcpy(v62, *(const void **)(v14 + 0x20), v8);
- v65 = v64 + v8;
- v9 = (int8x16_t *)v63;
- *(_QWORD *)(v14 + 0x20) = v65;
- }
- else
- {
- if ( !fread(v62, v8, 1u, *(FILE **)(v14 + 0x10)) )
- {
- LABEL_101:
- v58 = qword_909F28;
- if ( *v6 & 1 )
- v59 = *(_QWORD *)(v14 + 0x60);
- else
- v59 = v14 + 0x51;
- v66 = *(_QWORD *)qword_909F28;
- v67 = "%s Header Wrong!!\n";
- goto LABEL_293;
- }
- v8 = *((signed int *)v11 + 0x12);
- }
- v5 = *((unsigned int *)v11 + 0x11);
- if ( (_DWORD)v5 != (unsigned int)sub_B747C(v9, v8) )
- {
- v58 = qword_909F28;
- if ( *v6 & 1 )
- v59 = *(_QWORD *)(v14 + 0x60);
- else
- v59 = v14 + 0x51;
- v66 = *(_QWORD *)qword_909F28;
- v67 = "%s File Modified!!\n";
- goto LABEL_293;
- }
- v71 = *((_DWORD *)v11 + 0x12);
- v72 = (char *)v9;
- if ( v71 >= 0 )
- v73 = *((_DWORD *)v11 + 0x12);
- else
- v73 = v71 + 3;
- v74 = v71 - (v73 & 0xFFFFFFFC);
- if ( v71 < 4 )
- goto LABEL_97;
- v75 = v73 >> 2;
- v76 = (unsigned int)((v73 >> 2) - 1);
- v77 = v76 + 1;
- if ( (unsigned __int64)(v76 + 1) > 7 && !(((unsigned __int8)v71 + (unsigned __int8)v76) & 0x100) )
- {
- v78 = 0;
- v79 = (char *)v9;
- v80 = *((_DWORD *)v11 + 0x12);
- if ( (unsigned int)v76 > 0xFF )
- goto LABEL_94;
- if ( v9 >= (int8x16_t *)&dword_8FD314[v76 + 1 + (unsigned __int8)v71]
- || &v9->n128_u8[4 * (unsigned int)v76 + 4] <= (unsigned __int8 *)&dword_8FD314[(unsigned __int8)v71] )
- {
- v170 = v75 & 7;
- v78 = v77 - v170;
- v171 = 0LL;
- v172 = v9 + 1;
- v79 = (char *)v9 + 4 * (v77 - v170);
- v80 = v71 + v77 - v170;
- do
- {
- v173 = (int8x16_t *)&dword_8FD314[(unsigned __int8)(v71 + v171)];
- v171 += 8LL;
- v174 = veorq_s8(v173[1], *v172);
- v172[0xFFFFFFFFLL] = veorq_s8(*v173, v172[0xFFFFFFFFLL]);
- *v172 = v174;
- v172 += 2;
- }
- while ( v76 + 1 - v170 != v171 );
- if ( !(v75 & 7) )
- goto LABEL_96;
- goto LABEL_94;
- }
- }
- v78 = 0;
- v79 = (char *)v9;
- v80 = *((_DWORD *)v11 + 0x12);
- LABEL_94:
- v81 = v75 - v78;
- do
- {
- v82 = dword_8FD314[(unsigned __int8)v80];
- --v81;
- ++v80;
- *(_DWORD *)v79 ^= v82;
- v79 += 4;
- }
- while ( v81 );
- LABEL_96:
- v72 = (char *)v9->n128_u64 + 4 * v76 + 4;
- v71 += v76 + 1;
- LABEL_97:
- v175 = v9;
- if ( v74 >= 1 )
- {
- do
- {
- v83 = dword_8FD314[(unsigned __int8)v71];
- --v74;
- ++v71;
- *v72 ^= v83;
- ++v72;
- }
- while ( v74 );
- }
- if ( *((_DWORD *)v11 + 0xF) < 1 )
- goto LABEL_275;
- v176 = v7;
- v8 = (signed __int64)v9;
- v184 = v11 + 2;
- v177 = v11 + 4;
- v6 = (char *)v193 + 1;
- LODWORD(v5) = 0;
- v9 = (int8x16_t *)v205;
- while ( 1 )
- {
- v91 = 0LL;
- *(_QWORD *)v193 = 0LL;
- *(_QWORD *)&v193[2] = 0LL;
- v194 = 0LL;
- do
- {
- v92 = v91 + 1;
- v205[v91] = *(_BYTE *)(v8 + v91);
- if ( (unsigned __int64)(v91 + 1) > 0x103 )
- break;
- v93 = *(unsigned __int8 *)(v8 + v91++);
- }
- while ( v93 );
- v94 = strlen(v205);
- v95 = v94;
- if ( v94 <= 0x16 )
- {
- if ( v94 )
- memcpy((char *)v193 + 1, v205, v94);
- v98 = 2 * v95;
- *((_BYTE *)v193 + v95 + 1) = 0;
- LOBYTE(v193[0]) = 2 * v95;
- }
- else
- {
- if ( v94 - 0x16 >= 0xFFFFFFFFFFFFFFD9LL )
- goto LABEL_300;
- v96 = 0x2CLL;
- if ( v94 > 0x2C )
- v96 = v94;
- if ( v96 >= 0x17 )
- v14 = (v96 + 0x10) & 0xFFFFFFFFFFFFFFF0LL;
- else
- v14 = 0x17LL;
- v97 = (void *)operator new(v14);
- memcpy(v97, v205, v95);
- v98 = v14 | 1;
- *(_QWORD *)&v193[2] = v95;
- v194 = v97;
- *(_QWORD *)v193 = v14 | 1;
- *((_BYTE *)v97 + v95) = 0;
- }
- v99 = v8 + v92;
- v195 = *(_DWORD *)v99;
- v196 = *(_DWORD *)(v99 + 4);
- v197 = *(_DWORD *)(v99 + 8);
- v199 = *(_DWORD *)(v99 + 0xC);
- v200 = *(_QWORD *)(v99 + 0x10);
- v201 = *(_DWORD *)(v99 + 0x18);
- v202 = *(_DWORD *)(v99 + 0x1C);
- v100 = *(_DWORD *)(v99 + 0x20);
- v198 = 0LL;
- v203 = v100;
- if ( v98 & 1 )
- v101 = (const char *)v194;
- else
- v101 = (char *)v193 + 1;
- if ( !strcmp(v101, "dkempty") )
- {
- v109 = v11[0xC];
- if ( v109 == v11[0xD] )
- {
- sub_5CF370(v11 + 0xB, v193);
- v8 = v99 + 0x24;
- if ( !(v193[0] & 1) )
- goto LABEL_274;
- goto LABEL_270;
- }
- *(_QWORD *)(v109 + 8) = 0LL;
- *(_QWORD *)(v109 + 0x10) = 0LL;
- *(_QWORD *)v109 = 0LL;
- if ( !(v193[0] & 1) )
- {
- *(_QWORD *)(v109 + 0x10) = v194;
- *(_OWORD *)v109 = *(_OWORD *)v193;
- goto LABEL_244;
- }
- v153 = *(_QWORD *)&v193[2];
- if ( *(_QWORD *)&v193[2] >= 0xFFFFFFFFFFFFFFF0LL )
- goto LABEL_300;
- v154 = v194;
- if ( *(_QWORD *)&v193[2] >= 0x17uLL )
- {
- v14 = (*(_QWORD *)&v193[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL;
- v155 = (void *)operator new(v14);
- *(_QWORD *)(v109 + 8) = v153;
- *(_QWORD *)(v109 + 0x10) = v155;
- *(_QWORD *)v109 = v14 | 1;
- }
- else
- {
- *(_BYTE *)v109 = 2 * LOBYTE(v193[2]);
- v155 = (void *)(v109 + 1);
- if ( !v153 )
- goto LABEL_243;
- }
- memcpy(v155, v154, v153);
- LABEL_243:
- *((_BYTE *)v155 + v153) = 0;
- v6 = (char *)v193 + 1;
- LABEL_244:
- *(_OWORD *)(v109 + 0x38) = *(_OWORD *)((char *)&v200 + 4);
- *(_OWORD *)(v109 + 0x28) = *(_OWORD *)&v198;
- *(_OWORD *)(v109 + 0x18) = *(_OWORD *)&v195;
- v11[0xC] += 0x48LL;
- v8 = v99 + 0x24;
- if ( !(v193[0] & 1) )
- goto LABEL_274;
- goto LABEL_270;
- }
- v102 = strlen(v101);
- memset(v205, 0, 0x104u);
- if ( v102 >= 1 )
- {
- v103 = 0LL;
- v104 = v102;
- do
- {
- v105 = v101[v103];
- if ( !(v105 & 0x80000000) && isupper((unsigned __int8)v105) )
- LOBYTE(v105) = _tolower((unsigned __int8)v105);
- v205[v103++] = v105;
- }
- while ( v103 <= 0x103 && (signed __int64)v103 < v104 );
- }
- *(_QWORD *)v185 = 0LL;
- *(_QWORD *)&v185[2] = 0LL;
- v186 = 0LL;
- v106 = strlen(v205);
- v107 = v106;
- if ( v106 >= 0xFFFFFFFFFFFFFFF0LL )
- goto LABEL_300;
- if ( v106 >= 0x17 )
- break;
- v108 = (char *)v185 + 1;
- LOBYTE(v185[0]) = 2 * v106;
- if ( v106 )
- goto LABEL_162;
- LABEL_163:
- v111 = v193[0];
- v108[v107] = 0;
- v188 = 0LL;
- v189 = 0LL;
- v187 = 0LL;
- if ( v111 & 1 )
- {
- v107 = *(_QWORD *)&v193[2];
- if ( *(_QWORD *)&v193[2] >= 0xFFFFFFFFFFFFFFF0LL )
- goto LABEL_300;
- v112 = v194;
- if ( *(_QWORD *)&v193[2] >= 0x17uLL )
- {
- v6 = (char *)v193 + 1;
- v113 = (char *)operator new((*(_QWORD *)&v193[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL);
- v188 = v107;
- v189 = v113;
- v187 = (v107 + 0x10) & 0xFFFFFFFFFFFFFFF0LL | 1;
- }
- else
- {
- v113 = (char *)&v187 + 1;
- LOBYTE(v187) = 2 * LOBYTE(v193[2]);
- if ( !*(_QWORD *)&v193[2] )
- goto LABEL_171;
- }
- memcpy(v113, v112, v107);
- LABEL_171:
- v113[v107] = 0;
- goto LABEL_172;
- }
- v189 = v194;
- *(_OWORD *)&v187 = *(_OWORD *)v193;
- LABEL_172:
- v191 = *(_OWORD *)&v198;
- v192 = *(_OWORD *)((char *)&v200 + 4);
- v190 = *(_OWORD *)&v195;
- if ( v185[0] & 1 )
- v114 = *(_QWORD *)&v185[2];
- else
- v114 = (unsigned int)LOBYTE(v185[0]) >> 1;
- if ( v185[0] & 1 )
- v115 = (char *)v186;
- else
- v115 = (char *)v185 + 1;
- v116 = sub_3EEB9C(&v204, v115, v114);
- v117 = v11[3];
- v118 = (AAsset **)v116;
- if ( !v117 )
- goto LABEL_208;
- v119 = v117 - 1;
- if ( (v117 - 1) & v117 )
- {
- v107 = v116;
- if ( v116 >= v117 )
- v107 = v116 - v116 / v117 * v117;
- v120 = *(__int64 ***)(*v184 + 8 * v107);
- if ( !v120 )
- goto LABEL_208;
- }
- else
- {
- v107 = v119 & v116;
- v120 = *(__int64 ***)(*v184 + 8 * (v119 & v116));
- if ( !v120 )
- goto LABEL_208;
- }
- v87 = *v120;
- if ( !*v120 )
- goto LABEL_208;
- if ( v185[0] & 1 )
- v121 = *(_QWORD *)&v185[2];
- else
- v121 = (unsigned int)LOBYTE(v185[0]) >> 1;
- if ( v185[0] & 1 )
- v122 = (char *)v186;
- else
- v122 = (char *)v185 + 1;
- if ( (v117 - 1) & v117 )
- {
- if ( v121 )
- {
- do
- {
- v123 = v87[1];
- if ( (AAsset **)v123 != v118 )
- {
- if ( v123 >= v117 )
- v123 -= v123 / v117 * v117;
- if ( v123 != v107 )
- break;
- }
- v124 = *((unsigned __int8 *)v87 + 0x10);
- v125 = v87[3];
- if ( !(v124 & 1) )
- v125 = v124 >> 1;
- if ( v125 == v121 )
- {
- if ( v124 & 1 )
- {
- v129 = v118;
- v130 = memcmp((const void *)v87[4], v122, v121);
- v118 = v129;
- if ( !v130 )
- goto LABEL_260;
- }
- else
- {
- v126 = (unsigned __int8 *)v87 + 0x11;
- v127 = -(signed __int64)(v124 >> 1);
- v128 = (unsigned __int8 *)v122;
- while ( *v126 == *v128 )
- {
- ++v126;
- ++v127;
- ++v128;
- if ( !v127 )
- goto LABEL_260;
- }
- }
- }
- v87 = (__int64 *)*v87;
- }
- while ( v87 );
- v6 = (char *)v193 + 1;
- v7 = v176;
- }
- else
- {
- v6 = (char *)v193 + 1;
- v7 = v176;
- do
- {
- v84 = v87[1];
- if ( v84 != v116 )
- {
- if ( v84 >= v117 )
- v84 -= v84 / v117 * v117;
- if ( v84 != v107 )
- break;
- }
- v85 = *((unsigned __int8 *)v87 + 0x10);
- if ( v85 & 1 )
- v86 = v87[3];
- else
- v86 = v85 >> 1;
- if ( !v86 )
- goto LABEL_127;
- v87 = (__int64 *)*v87;
- }
- while ( v87 );
- }
- LABEL_208:
- v181 = (unsigned __int64)v118;
- v131 = (_QWORD *)operator new(0x70uLL);
- v132 = v131;
- v131[2] = 0LL;
- v131[3] = 0LL;
- v131[4] = 0LL;
- if ( !(v185[0] & 1) )
- {
- v133 = *(_OWORD *)v185;
- v131[4] = v186;
- *((_OWORD *)v131 + 1) = v133;
- LABEL_219:
- v139 = v189;
- v141 = *(_OWORD *)&v187;
- v188 = 0LL;
- v189 = 0LL;
- v187 = 0LL;
- v140 = v190;
- v142 = v191;
- v143 = v192;
- v132[7] = v139;
- *(_OWORD *)(v132 + 5) = v141;
- *((_OWORD *)v132 + 5) = v142;
- *((_OWORD *)v132 + 6) = v143;
- *((_OWORD *)v132 + 4) = v140;
- *v132 = 0LL;
- v132[1] = v181;
- v144 = *((float *)v11 + 0xC);
- v145 = (float)(unsigned __int64)(v11[5] + 1LL);
- if ( v117 && (float)(v144 * (float)v117) >= v145 )
- {
- LABEL_230:
- v151 = *v184;
- v152 = *(_QWORD **)(*v184 + 8 * v107);
- if ( !v152 )
- goto LABEL_237;
- }
- else
- {
- if ( v117 < 3 )
- v146 = 1LL;
- else
- v146 = ((v117 - 1) & v117) != 0;
- v147 = v146 | 2 * v117;
- v148 = vcvtps_u32_f32(v145 / v144);
- if ( v147 >= v148 )
- v149 = v147;
- else
- v149 = v148;
- sub_5CEFD4(v184, v149);
- v117 = v11[3];
- v150 = v117 - 1;
- if ( (v117 - 1) & v117 )
- {
- v107 = v181;
- if ( v181 >= v117 )
- v107 = v181 - v181 / v117 * v117;
- goto LABEL_230;
- }
- v107 = v150 & v181;
- v151 = *v184;
- v152 = *(_QWORD **)(*v184 + 8 * (v150 & v181));
- if ( !v152 )
- {
- LABEL_237:
- *v132 = *v177;
- *v177 = v132;
- *(_QWORD *)(v151 + 8 * v107) = v177;
- if ( *v132 )
- {
- v156 = *(_QWORD *)(*v132 + 8LL);
- if ( (v117 - 1) & v117 )
- {
- if ( v156 >= v117 )
- v156 -= v156 / v117 * v117;
- }
- else
- {
- v156 &= v117 - 1;
- }
- v152 = (_QWORD *)(*v184 + 8 * v156);
- LABEL_264:
- *v152 = v132;
- }
- v14 = 0LL;
- ++v11[5];
- if ( !(v187 & 1) )
- goto LABEL_267;
- LABEL_266:
- operator delete(v189);
- goto LABEL_267;
- }
- }
- *v132 = *v152;
- goto LABEL_264;
- }
- v134 = *(_QWORD *)&v185[2];
- if ( *(_QWORD *)&v185[2] >= 0xFFFFFFFFFFFFFFF0LL )
- goto LABEL_300;
- v135 = v186;
- if ( *(_QWORD *)&v185[2] >= 0x17uLL )
- {
- v137 = v186;
- v138 = operator new((*(_QWORD *)&v185[2] + 0x10LL) & 0xFFFFFFFFFFFFFFF0LL);
- v135 = v137;
- v136 = (void *)v138;
- v132[3] = v134;
- v132[4] = v138;
- v132[2] = (v134 + 0x10) & 0xFFFFFFFFFFFFFFF0LL | 1;
- }
- else
- {
- v136 = (char *)v131 + 0x11;
- *((_BYTE *)v131 + 0x10) = 2 * LOBYTE(v185[2]);
- if ( !v134 )
- goto LABEL_218;
- }
- memcpy(v136, v135, v134);
- LABEL_218:
- *((_BYTE *)v136 + v134) = 0;
- v6 = (char *)v193 + 1;
- goto LABEL_219;
- }
- if ( !v121 )
- {
- v6 = (char *)v193 + 1;
- v7 = v176;
- while ( 1 )
- {
- v88 = v87[1];
- if ( v88 != v116 && (v88 & v119) != v107 )
- goto LABEL_208;
- v89 = *((unsigned __int8 *)v87 + 0x10);
- v90 = v89 & 1 ? v87[3] : (unsigned __int64)(v89 >> 1);
- if ( !v90 )
- break;
- v87 = (__int64 *)*v87;
- if ( !v87 )
- goto LABEL_208;
- }
- LABEL_127:
- v14 = 1LL;
- if ( !(v187 & 1) )
- goto LABEL_267;
- goto LABEL_266;
- }
- while ( 1 )
- {
- v157 = (AAsset **)v87[1];
- if ( v157 != v118 && ((unsigned __int64)v157 & v119) != v107 )
- {
- LABEL_259:
- v6 = (char *)v193 + 1;
- v7 = v176;
- goto LABEL_208;
- }
- v158 = *((unsigned __int8 *)v87 + 0x10);
- v159 = v87[3];
- if ( !(v158 & 1) )
- v159 = v158 >> 1;
- if ( v159 == v121 )
- {
- if ( !(v158 & 1) )
- {
- v160 = (unsigned __int8 *)v87 + 0x11;
- v161 = -(signed __int64)(v158 >> 1);
- v162 = (unsigned __int8 *)v122;
- while ( *v160 == *v162 )
- {
- ++v160;
- ++v161;
- ++v162;
- if ( !v161 )
- goto LABEL_260;
- }
- goto LABEL_258;
- }
- v163 = v118;
- v164 = memcmp((const void *)v87[4], v122, v121);
- v118 = v163;
- if ( !v164 )
- break;
- }
- LABEL_258:
- v87 = (__int64 *)*v87;
- if ( !v87 )
- goto LABEL_259;
- }
- LABEL_260:
- v6 = (char *)v193 + 1;
- v7 = v176;
- v14 = 1LL;
- if ( v187 & 1 )
- goto LABEL_266;
- LABEL_267:
- if ( v185[0] & 1 )
- {
- operator delete(v186);
- if ( !(_DWORD)v14 )
- goto LABEL_273;
- LABEL_269:
- (*(void (**)(void))(*(_QWORD *)qword_909F28 + 0xC8LL))();
- v8 = v99 + 0x24;
- if ( v193[0] & 1 )
- goto LABEL_270;
- LABEL_274:
- v5 = (unsigned int)(v5 + 1);
- if ( (signed int)v5 >= *((_DWORD *)v11 + 0xF) )
- goto LABEL_275;
- }
- else
- {
- if ( (_DWORD)v14 )
- goto LABEL_269;
- LABEL_273:
- v8 = v99 + 0x24;
- if ( !(v193[0] & 1) )
- goto LABEL_274;
- LABEL_270:
- operator delete(v194);
- v5 = (unsigned int)(v5 + 1);
- if ( (signed int)v5 >= *((_DWORD *)v11 + 0xF) )
- {
- LABEL_275:
- operator delete[](v175);
- if ( !*((_DWORD *)v11 + 0x22) )
- {
- v165 = v11[0xE];
- if ( v11[0xF] != v165 )
- {
- v166 = 0LL;
- LODWORD(v5) = 1;
- do
- {
- v14 = *(_QWORD *)(v165 + 8 * v166);
- v167 = *(FILE **)(v14 + 0x10);
- if ( v167 )
- {
- fclose(v167);
- *(_QWORD *)(v14 + 0x10) = 0LL;
- }
- v168 = *(AAssetDir **)(v14 + 0x88);
- if ( v168 )
- {
- AAssetDir_close(v168);
- *(_QWORD *)(v14 + 0x88) = 0LL;
- }
- v169 = *(AAsset **)(v14 + 0x80);
- if ( v169 )
- {
- AAsset_close(v169);
- *(_QWORD *)(v14 + 0x80) = 0LL;
- }
- *(_QWORD *)(v14 + 0x20) = 0LL;
- *(_QWORD *)(v14 + 0x28) = 0LL;
- *(_QWORD *)(v14 + 0x18) = 0LL;
- v165 = v11[0xE];
- v166 = (unsigned int)v5;
- v5 = (unsigned int)(v5 + 1);
- }
- while ( (v11[0xF] - v165) >> 3 > v166 );
- }
- }
- result = 1LL;
- v22 = *(signed __int64 **)(v7 + 0x28);
- v23 = v208;
- if ( v22 == v208 )
- return result;
- LABEL_20:
- v26 = (_BYTE *)v11[0xE];
- v179 = v11;
- v27 = (char *)v23 - v26;
- v28 = ((char *)v23 - v26) >> 3;
- if ( (unsigned __int64)(v28 + 1) >> 0x3D )
- goto LABEL_300;
- v29 = (char *)v22 - v26;
- v30 = v9;
- v31 = (char *)v5;
- v182 = v6;
- if ( (unsigned __int64)(v29 >> 3) > 0xFFFFFFFFFFFFFFELL )
- {
- v34 = v7;
- v33 = 0x1FFFFFFFFFFFFFFFLL;
- goto LABEL_29;
- }
- v32 = v29 >> 2;
- if ( v32 >= v28 + 1 )
- v33 = v32;
- else
- v33 = v28 + 1;
- if ( v33 )
- {
- v34 = v7;
- if ( v33 >> 0x3D )
- goto LABEL_300;
- LABEL_29:
- v35 = (char *)operator new(8 * v33);
- v36 = v35;
- }
- else
- {
- v34 = v7;
- v35 = 0LL;
- v36 = 0LL;
- }
- v37 = (signed __int64 *)&v36[8 * v28];
- v38 = (signed __int64)&v36[8 * v33];
- *v37 = v14;
- v39 = (signed __int64)(v37 + 1);
- if ( v27 >= 1 )
- memcpy(v35, v26, v27);
- v179[0xE] = v36;
- v179[0xF] = v39;
- v6 = v182;
- v7 = v34;
- v5 = (unsigned __int64)v31;
- v9 = v30;
- v11 = v179;
- v179[0x10] = v38;
- if ( v26 )
- operator delete(v26);
- goto LABEL_34;
- }
- }
- }
- v110 = (v106 + 0x10) & 0xFFFFFFFFFFFFFFF0LL;
- v108 = (char *)operator new(v110);
- *(_QWORD *)&v185[2] = v107;
- v186 = v108;
- *(_QWORD *)v185 = v110 | 1;
- LABEL_162:
- memcpy(v108, v205, v107);
- goto LABEL_163;
- }
- v69 = *(FILE **)(v14 + 0x10);
- if ( v69 )
- {
- fclose(v69);
- *(_QWORD *)(v14 + 0x10) = 0LL;
- }
- v70 = *(AAssetDir **)(v14 + 0x88);
- v5 = v181;
- if ( v70 )
- {
- AAssetDir_close(v70);
- *(_QWORD *)(v14 + 0x88) = 0LL;
- }
- if ( *(_QWORD *)v181 )
- {
- AAsset_close(*(AAsset **)v181);
- *(_QWORD *)v181 = 0LL;
- }
- *v180 = 0LL;
- *(_QWORD *)(v14 + 0x20) = 0LL;
- *(_QWORD *)(v14 + 0x28) = 0LL;
- LABEL_79:
- v58 = qword_909F28;
- if ( *v6 & 1 )
- v59 = *(_QWORD *)(v14 + 0x60);
- else
- v59 = v14 + 0x51;
- v66 = *(_QWORD *)qword_909F28;
- v67 = "%s Seek Failed!!\n";
- LABEL_293:
- (*(void (__fastcall **)(__int64, _QWORD, const char *, signed __int64))(v66 + 0xC8))(v58, 0LL, v67, v59);
- sub_5C7E70(v11);
- result = 0LL;
- LABEL_294:
- v22 = *(signed __int64 **)(v7 + 0x28);
- v23 = v208;
- if ( v22 != v208 )
- goto LABEL_20;
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment