Created
February 16, 2023 22:53
-
-
Save oopsmishap/fe753bf9b005c0e80d593ba2ff0eaac6 to your computer and use it in GitHub Desktop.
matching_crypt_compression_algo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int __stdcall sub_10001100(_DWORD *a1, unsigned int a2, unsigned int a3) | |
{ | |
_DWORD *v3; // edi | |
unsigned int v4; // ebx | |
unsigned int v5; // esi | |
int v6; // edx | |
unsigned int v7; // eax | |
int v8; // ecx | |
unsigned int v9; // edx | |
unsigned __int16 *v10; // edx | |
unsigned int v11; // ecx | |
int v12; // ecx | |
unsigned int v13; // ecx | |
int v14; // edi | |
unsigned int v15; // ebx | |
int v16; // edi | |
int v17; // edi | |
int v18; // edx | |
int v19; // edi | |
unsigned int v20; // ebx | |
unsigned int v21; // eax | |
unsigned int v22; // edx | |
unsigned int v23; // edi | |
unsigned int v24; // eax | |
unsigned int v25; // ebx | |
unsigned __int16 *v26; // ecx | |
unsigned int v27; // eax | |
unsigned int v28; // edx | |
unsigned int v29; // edi | |
unsigned int v30; // eax | |
int v31; // edx | |
unsigned int v32; // edi | |
unsigned int v33; // edi | |
unsigned int v34; // eax | |
unsigned int v35; // edx | |
unsigned int v36; // edi | |
unsigned __int16 v37; // di | |
unsigned int v38; // edx | |
unsigned int v39; // eax | |
unsigned int v40; // edx | |
unsigned int v41; // edi | |
unsigned __int16 v42; // di | |
int v43; // edx | |
unsigned int v44; // edi | |
int v45; // edi | |
unsigned int v46; // eax | |
int v47; // edx | |
unsigned int v48; // edi | |
unsigned int v49; // edx | |
unsigned int v50; // ecx | |
unsigned int v51; // edi | |
unsigned int v52; // edx | |
int v53; // ecx | |
int v54; // ecx | |
int v55; // edx | |
unsigned int v56; // edi | |
unsigned int v57; // eax | |
int v58; // edx | |
int v59; // ebx | |
unsigned int v60; // edx | |
unsigned int v61; // edi | |
unsigned int v62; // eax | |
int v63; // ebx | |
int v64; // edx | |
unsigned int v65; // edi | |
unsigned int v66; // eax | |
int v67; // ebx | |
int v68; // edx | |
unsigned int v69; // edi | |
unsigned int v70; // eax | |
int v71; // ebx | |
int v72; // edx | |
unsigned int v73; // edi | |
unsigned int v74; // eax | |
int v75; // ebx | |
int v76; // edx | |
unsigned int v77; // edi | |
unsigned int v78; // ebx | |
unsigned int v79; // edx | |
int v80; // edi | |
int v81; // ecx | |
int v82; // ebx | |
int v83; // ecx | |
unsigned int v84; // edx | |
unsigned int v85; // ecx | |
int v86; // ecx | |
unsigned int v87; // esi | |
int v88; // edx | |
unsigned int v89; // edi | |
unsigned int v90; // eax | |
int v91; // edx | |
unsigned int v92; // edx | |
unsigned int v93; // edi | |
unsigned int v94; // eax | |
unsigned __int16 v95; // di | |
int v96; // edx | |
unsigned int v97; // edx | |
unsigned int v98; // edi | |
unsigned int v99; // eax | |
unsigned __int16 v100; // di | |
int v101; // edx | |
unsigned int v102; // edx | |
unsigned int v103; // edi | |
unsigned int v104; // edx | |
bool v105; // cf | |
unsigned int v106; // edx | |
unsigned int v107; // ecx | |
_BYTE *v108; // edx | |
unsigned __int8 *v110; // edx | |
int v111; // [esp+Ch] [ebp-50h] | |
int v112; // [esp+10h] [ebp-4Ch] | |
_BYTE *v113; // [esp+10h] [ebp-4Ch] | |
int v114; // [esp+14h] [ebp-48h] | |
unsigned __int16 *v115; // [esp+18h] [ebp-44h] | |
int v116; // [esp+18h] [ebp-44h] | |
int v117; // [esp+1Ch] [ebp-40h] | |
unsigned int v118; // [esp+20h] [ebp-3Ch] | |
unsigned int v119; // [esp+24h] [ebp-38h] | |
int v120; // [esp+24h] [ebp-38h] | |
int v121; // [esp+28h] [ebp-34h] | |
unsigned int v122; // [esp+2Ch] [ebp-30h] | |
unsigned int v123; // [esp+30h] [ebp-2Ch] | |
unsigned int v124; // [esp+34h] [ebp-28h] | |
int v125; // [esp+34h] [ebp-28h] | |
unsigned int v126; // [esp+34h] [ebp-28h] | |
unsigned int v127; // [esp+38h] [ebp-24h] | |
unsigned __int16 *v128; // [esp+3Ch] [ebp-20h] | |
int v129; // [esp+40h] [ebp-1Ch] | |
int v130; // [esp+40h] [ebp-1Ch] | |
unsigned int v131; // [esp+40h] [ebp-1Ch] | |
int v132; // [esp+40h] [ebp-1Ch] | |
int v133; // [esp+40h] [ebp-1Ch] | |
int v134; // [esp+40h] [ebp-1Ch] | |
unsigned int v135; // [esp+44h] [ebp-18h] | |
unsigned int v136; // [esp+48h] [ebp-14h] | |
unsigned int v137; // [esp+4Ch] [ebp-10h] | |
unsigned int v138; // [esp+50h] [ebp-Ch] | |
unsigned int v139; // [esp+50h] [ebp-Ch] | |
unsigned __int16 *v140; // [esp+54h] [ebp-8h] | |
unsigned __int16 *v141; // [esp+54h] [ebp-8h] | |
unsigned __int16 *v142; // [esp+54h] [ebp-8h] | |
int v143; // [esp+54h] [ebp-8h] | |
int v144; // [esp+54h] [ebp-8h] | |
unsigned __int8 *v145; // [esp+58h] [ebp-4h] | |
v3 = a1; | |
v128 = (unsigned __int16 *)a1[4]; | |
v4 = a1[13]; | |
v135 = a1[14]; | |
v5 = a1[8]; | |
v122 = a1[16]; | |
v119 = a1[17]; | |
v123 = a1[15]; | |
v6 = (1 << a1[2]) - 1; | |
v121 = a1[5]; | |
v114 = (1 << a1[1]) - 1; | |
v117 = *a1; | |
v127 = a1[10]; | |
v137 = a1[11]; | |
v138 = a1[9]; | |
v145 = (unsigned __int8 *)a1[6]; | |
v7 = a1[7]; | |
v136 = v4; | |
v111 = v6; | |
v118 = a1[12]; | |
v124 = 0; | |
while ( 1 ) | |
{ | |
v129 = v6 & v137; | |
v140 = &v128[16 * v4 + (v6 & v137)]; | |
v8 = *v140; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v9 = v8 * (v7 >> 11); | |
if ( v5 < v9 ) | |
{ | |
v7 = v8 * (v7 >> 11); | |
*v140 = v8 + ((unsigned int)(2048 - v8) >> 5); | |
v10 = v128 + 1846; | |
v141 = v128 + 1846; | |
if ( v118 || v137 ) | |
{ | |
v11 = v138; | |
if ( !v138 ) | |
v11 = v127; | |
v10 = &v141[768 * ((v114 & v137) << v117) + 768 * (*(unsigned __int8 *)(v11 + v121 - 1) >> (8 - v117))]; | |
v4 = v136; | |
v141 = v10; | |
} | |
if ( v4 >= 7 ) | |
{ | |
v130 = 256; | |
v16 = *(unsigned __int8 *)(v3[5] + (v138 < v135 ? v127 : 0) - v135 + v138); | |
v136 = v4 - (v4 < 0xA ? 3 : 6); | |
v13 = 1; | |
while ( 1 ) | |
{ | |
v17 = 2 * v16; | |
v18 = v17 & v130; | |
v112 = v17; | |
v115 = &v141[v13 + (v17 & v130) + v130]; | |
v19 = *v115; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v20 = v19 * (v7 >> 11); | |
if ( v5 >= v20 ) | |
{ | |
v7 -= v20; | |
v5 -= v20; | |
*v115 -= *v115 >> 5; | |
v13 = 2 * v13 + 1; | |
} | |
else | |
{ | |
v7 = v19 * (v7 >> 11); | |
*v115 = v19 + ((unsigned int)(2048 - v19) >> 5); | |
v13 *= 2; | |
v18 = ~v18; | |
} | |
v130 &= v18; | |
if ( v13 >= 0x100 ) | |
break; | |
v16 = v112; | |
} | |
} | |
else | |
{ | |
v12 = v4; | |
if ( v4 >= 4 ) | |
v12 = 3; | |
v136 = v4 - v12; | |
v13 = 1; | |
do | |
{ | |
v14 = v10[v13]; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v15 = v14 * (v7 >> 11); | |
if ( v5 >= v15 ) | |
{ | |
v7 -= v15; | |
v5 -= v15; | |
v10[v13] -= v10[v13] >> 5; | |
v13 = 2 * v13 + 1; | |
} | |
else | |
{ | |
v7 = v14 * (v7 >> 11); | |
v10[v13] = v14 + ((unsigned int)(2048 - v14) >> 5); | |
v13 *= 2; | |
} | |
} | |
while ( v13 < 0x100 ); | |
} | |
*(_BYTE *)(v138 + v121) = v13; | |
++v137; | |
++v138; | |
goto LABEL_156; | |
} | |
v21 = v7 - v9; | |
v5 -= v9; | |
*v140 -= *v140 >> 5; | |
v22 = v128[v4 + 192]; | |
if ( v21 < 0x1000000 ) | |
{ | |
v21 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v23 = v22 * (v21 >> 11); | |
if ( v5 >= v23 ) | |
{ | |
v27 = v21 - v23; | |
v5 -= v23; | |
v128[v4 + 192] = v22 - (v22 >> 5); | |
if ( !v118 && !v137 ) | |
return 1; | |
v28 = v128[v4 + 204]; | |
if ( v27 < 0x1000000 ) | |
{ | |
v27 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v29 = v28 * (v27 >> 11); | |
if ( v5 >= v29 ) | |
{ | |
v34 = v27 - v29; | |
v5 -= v29; | |
v128[v4 + 204] = v28 - (v28 >> 5); | |
v35 = v128[v4 + 216]; | |
if ( v34 < 0x1000000 ) | |
{ | |
v34 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v36 = v35 * (v34 >> 11); | |
if ( v5 >= v36 ) | |
{ | |
v39 = v34 - v36; | |
v5 -= v36; | |
v128[v4 + 216] = v35 - (v35 >> 5); | |
v40 = v128[v4 + 228]; | |
if ( v39 < 0x1000000 ) | |
{ | |
v39 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v41 = v40 * (v39 >> 11); | |
if ( v5 >= v41 ) | |
{ | |
v24 = v39 - v41; | |
v5 -= v41; | |
v128[v4 + 228] = v40 - (v40 >> 5); | |
v38 = v119; | |
v119 = v122; | |
} | |
else | |
{ | |
v24 = v40 * (v39 >> 11); | |
v42 = v40 + ((2048 - v40) >> 5); | |
v38 = v122; | |
v128[v4 + 228] = v42; | |
} | |
v122 = v123; | |
} | |
else | |
{ | |
v24 = v35 * (v34 >> 11); | |
v37 = v35 + ((2048 - v35) >> 5); | |
v38 = v123; | |
v128[v4 + 216] = v37; | |
} | |
v123 = v135; | |
v135 = v38; | |
} | |
else | |
{ | |
v30 = v28 * (v27 >> 11); | |
v128[v4 + 204] = v28 + ((2048 - v28) >> 5); | |
v142 = &v128[16 * v4 + 240 + v129]; | |
v31 = *v142; | |
if ( v30 < 0x1000000 ) | |
{ | |
v30 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v32 = v31 * (v30 >> 11); | |
if ( v5 < v32 ) | |
{ | |
*v142 = v31 + ((unsigned int)(2048 - v31) >> 5); | |
v7 = v31 * (v30 >> 11); | |
++v137; | |
*(_BYTE *)(v138 + v121) = *(_BYTE *)(v138 + (v138 < v135 ? v127 : 0) - v135 + v121); | |
v33 = v138 + 1; | |
v136 = v4 < 7 ? 9 : 11; | |
LABEL_155: | |
v138 = v33; | |
goto LABEL_156; | |
} | |
v24 = v30 - v32; | |
v5 -= v32; | |
*v142 -= *v142 >> 5; | |
} | |
v25 = v4 < 7 ? 8 : 11; | |
v26 = v128 + 1332; | |
} | |
else | |
{ | |
v24 = v22 * (v21 >> 11); | |
v128[v4 + 192] = v22 + ((2048 - v22) >> 5); | |
v25 = v4 + 12; | |
v26 = v128 + 818; | |
} | |
v43 = *v26; | |
v136 = v25; | |
if ( v24 < 0x1000000 ) | |
{ | |
v24 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v44 = v43 * (v24 >> 11); | |
if ( v5 >= v44 ) | |
{ | |
v46 = v24 - v44; | |
v5 -= v44; | |
*v26 -= *v26 >> 5; | |
v47 = v26[1]; | |
if ( v46 < 0x1000000 ) | |
{ | |
v46 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v48 = v47 * (v46 >> 11); | |
if ( v5 >= v48 ) | |
{ | |
v7 = v46 - v48; | |
v5 -= v48; | |
v26[1] -= v26[1] >> 5; | |
v45 = (int)(v26 + 258); | |
v143 = 16; | |
v131 = 256; | |
} | |
else | |
{ | |
v7 = v47 * (v46 >> 11); | |
v26[1] = v47 + ((unsigned int)(2048 - v47) >> 5); | |
v45 = (int)&v26[8 * v129 + 130]; | |
v143 = 8; | |
v131 = 8; | |
} | |
} | |
else | |
{ | |
v7 = v43 * (v24 >> 11); | |
*v26 = v43 + ((unsigned int)(2048 - v43) >> 5); | |
v45 = (int)&v26[8 * v129 + 2]; | |
v143 = 0; | |
v131 = 8; | |
} | |
v125 = v45; | |
v49 = 1; | |
do | |
{ | |
v50 = *(unsigned __int16 *)(v45 + 2 * v49); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v51 = v50 * (v7 >> 11); | |
if ( v5 >= v51 ) | |
{ | |
v7 -= v51; | |
v5 -= v51; | |
v45 = v125; | |
*(_WORD *)(v125 + 2 * v49) = v50 - (v50 >> 5); | |
v49 = 2 * v49 + 1; | |
} | |
else | |
{ | |
v7 = v50 * (v7 >> 11); | |
v45 = v125; | |
*(_WORD *)(v125 + 2 * v49) = v50 + ((2048 - v50) >> 5); | |
v49 *= 2; | |
} | |
} | |
while ( v49 < v131 ); | |
v52 = v143 - v131 + v49; | |
v126 = v52; | |
if ( v25 >= 0xC ) | |
break; | |
LABEL_145: | |
v33 = v138; | |
v106 = v52 + 2; | |
if ( a2 == v138 ) | |
return 1; | |
v139 = a2 - v138; | |
if ( v139 >= v106 ) | |
v139 = v106; | |
v137 += v139; | |
v107 = v33 + (v33 < v135 ? v127 : 0) - v135; | |
v124 = v106 - v139; | |
if ( v107 + v139 > v127 ) | |
{ | |
do | |
{ | |
*(_BYTE *)(v33 + v121) = *(_BYTE *)(v107 + v121); | |
++v107; | |
++v33; | |
if ( v107 == v127 ) | |
v107 = 0; | |
--v139; | |
} | |
while ( v139 ); | |
goto LABEL_155; | |
} | |
v108 = (_BYTE *)(v33 + v121); | |
v113 = (_BYTE *)(v33 + v121 + v139); | |
v138 = v139 + v33; | |
do | |
{ | |
*v108 = v108[(v33 < v135 ? v127 : 0) - v135]; | |
++v108; | |
} | |
while ( v108 != v113 ); | |
LABEL_156: | |
if ( v138 >= a2 || (unsigned int)v145 >= a3 ) | |
goto LABEL_161; | |
v6 = v111; | |
v4 = v136; | |
v3 = a1; | |
} | |
v53 = v52; | |
if ( v52 >= 4 ) | |
v53 = 3; | |
v54 = (int)&v128[64 * v53 + 432]; | |
v55 = *(unsigned __int16 *)(v54 + 2); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v56 = v55 * (v7 >> 11); | |
if ( v5 >= v56 ) | |
{ | |
v57 = v7 - v56; | |
v5 -= v56; | |
*(_WORD *)(v54 + 2) -= *(_WORD *)(v54 + 2) >> 5; | |
v58 = 3; | |
} | |
else | |
{ | |
v57 = v55 * (v7 >> 11); | |
*(_WORD *)(v54 + 2) = v55 + ((unsigned int)(2048 - v55) >> 5); | |
v58 = 2; | |
} | |
v59 = 2 * v58; | |
v60 = *(unsigned __int16 *)(2 * v58 + v54); | |
if ( v57 < 0x1000000 ) | |
{ | |
v57 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v61 = v60 * (v57 >> 11); | |
if ( v5 >= v61 ) | |
{ | |
v62 = v57 - v61; | |
v5 -= v61; | |
*(_WORD *)(v59 + v54) = v60 - (v60 >> 5); | |
++v59; | |
} | |
else | |
{ | |
v62 = v60 * (v57 >> 11); | |
*(_WORD *)(v59 + v54) = v60 + ((2048 - v60) >> 5); | |
} | |
v63 = 2 * v59; | |
v64 = *(unsigned __int16 *)(v63 + v54); | |
if ( v62 < 0x1000000 ) | |
{ | |
v62 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v65 = v64 * (v62 >> 11); | |
if ( v5 >= v65 ) | |
{ | |
v66 = v62 - v65; | |
v5 -= v65; | |
*(_WORD *)(v63 + v54) -= *(_WORD *)(v63 + v54) >> 5; | |
++v63; | |
} | |
else | |
{ | |
v66 = v64 * (v62 >> 11); | |
*(_WORD *)(v63 + v54) = v64 + ((unsigned int)(2048 - v64) >> 5); | |
} | |
v67 = 2 * v63; | |
v68 = *(unsigned __int16 *)(v67 + v54); | |
if ( v66 < 0x1000000 ) | |
{ | |
v66 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v69 = v68 * (v66 >> 11); | |
if ( v5 >= v69 ) | |
{ | |
v70 = v66 - v69; | |
v5 -= v69; | |
*(_WORD *)(v67 + v54) -= *(_WORD *)(v67 + v54) >> 5; | |
++v67; | |
} | |
else | |
{ | |
v70 = v68 * (v66 >> 11); | |
*(_WORD *)(v67 + v54) = v68 + ((unsigned int)(2048 - v68) >> 5); | |
} | |
v71 = 2 * v67; | |
v72 = *(unsigned __int16 *)(v71 + v54); | |
if ( v70 < 0x1000000 ) | |
{ | |
v70 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v73 = v72 * (v70 >> 11); | |
if ( v5 >= v73 ) | |
{ | |
v74 = v70 - v73; | |
v5 -= v73; | |
*(_WORD *)(v71 + v54) -= *(_WORD *)(v71 + v54) >> 5; | |
++v71; | |
} | |
else | |
{ | |
v74 = v72 * (v70 >> 11); | |
*(_WORD *)(v71 + v54) = v72 + ((unsigned int)(2048 - v72) >> 5); | |
} | |
v75 = 2 * v71; | |
v76 = *(unsigned __int16 *)(v75 + v54); | |
if ( v74 < 0x1000000 ) | |
{ | |
v74 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v77 = v76 * (v74 >> 11); | |
if ( v5 >= v77 ) | |
{ | |
v7 = v74 - v77; | |
v5 -= v77; | |
*(_WORD *)(v75 + v54) -= *(_WORD *)(v75 + v54) >> 5; | |
++v75; | |
} | |
else | |
{ | |
v7 = v76 * (v74 >> 11); | |
*(_WORD *)(v75 + v54) = v76 + ((unsigned int)(2048 - v76) >> 5); | |
} | |
v78 = v75 - 64; | |
if ( v78 < 4 ) | |
{ | |
LABEL_140: | |
v104 = v123; | |
v119 = v122; | |
v123 = v135; | |
v122 = v104; | |
v135 = v78 + 1; | |
if ( v118 ) | |
v105 = v78 < v118; | |
else | |
v105 = v78 < v137; | |
if ( !v105 ) | |
return 1; | |
v52 = v126; | |
v136 = v136 < 0x13 ? 7 : 10; | |
goto LABEL_145; | |
} | |
v79 = v78; | |
v80 = 1; | |
v81 = (v78 >> 1) - 1; | |
v82 = v78 & 1 | 2; | |
v116 = v81; | |
if ( v79 < 0xE ) | |
{ | |
v78 = v82 << v81; | |
v120 = 1; | |
v83 = (int)&v128[v78 - v79 + 687]; | |
v144 = v83; | |
do | |
{ | |
v84 = *(unsigned __int16 *)(v83 + 2 * v80); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v85 = v84 * (v7 >> 11); | |
if ( v5 >= v85 ) | |
{ | |
v7 -= v85; | |
v5 -= v85; | |
v83 = v144; | |
v78 |= v120; | |
*(_WORD *)(v144 + 2 * v80) = v84 - (v84 >> 5); | |
v80 = 2 * v80 + 1; | |
} | |
else | |
{ | |
v7 = v84 * (v7 >> 11); | |
v83 = v144; | |
*(_WORD *)(v144 + 2 * v80) = v84 + ((2048 - v84) >> 5); | |
v80 *= 2; | |
} | |
v120 *= 2; | |
--v116; | |
} | |
while ( v116 ); | |
goto LABEL_140; | |
} | |
v86 = v81 - 4; | |
do | |
{ | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v7 >>= 1; | |
v87 = v5 - v7; | |
v82 = 2 * v82 - (v87 >> 31) + 1; | |
v5 = (v7 & -(v87 >> 31)) + v87; | |
--v86; | |
} | |
while ( v86 ); | |
v88 = v128[803]; | |
v78 = 16 * v82; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v89 = v88 * (v7 >> 11); | |
if ( v5 >= v89 ) | |
{ | |
v90 = v7 - v89; | |
v5 -= v89; | |
v128[803] -= v128[803] >> 5; | |
v91 = 3; | |
v78 |= 1u; | |
} | |
else | |
{ | |
v90 = v88 * (v7 >> 11); | |
v128[803] = v88 + ((unsigned int)(2048 - v88) >> 5); | |
v91 = 2; | |
} | |
v132 = v91; | |
v92 = v128[v91 + 802]; | |
if ( v90 < 0x1000000 ) | |
{ | |
v90 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v93 = v92 * (v90 >> 11); | |
if ( v5 >= v93 ) | |
{ | |
v94 = v90 - v93; | |
v5 -= v93; | |
v128[v132 + 802] = v92 - (v92 >> 5); | |
v96 = v132 * 2 + 1; | |
v78 |= 2u; | |
} | |
else | |
{ | |
v94 = v92 * (v90 >> 11); | |
v95 = v92 + ((2048 - v92) >> 5); | |
v96 = v132 * 2; | |
v128[v132 + 802] = v95; | |
} | |
v133 = v96; | |
v97 = v128[v96 + 802]; | |
if ( v94 < 0x1000000 ) | |
{ | |
v94 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v98 = v97 * (v94 >> 11); | |
if ( v5 >= v98 ) | |
{ | |
v99 = v94 - v98; | |
v5 -= v98; | |
v128[v133 + 802] = v97 - (v97 >> 5); | |
v101 = v133 * 2 + 1; | |
v78 |= 4u; | |
} | |
else | |
{ | |
v99 = v97 * (v94 >> 11); | |
v100 = v97 + ((2048 - v97) >> 5); | |
v101 = v133 * 2; | |
v128[v133 + 802] = v100; | |
} | |
v134 = v101; | |
v102 = v128[v101 + 802]; | |
if ( v99 < 0x1000000 ) | |
{ | |
v99 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v103 = v102 * (v99 >> 11); | |
if ( v5 >= v103 ) | |
{ | |
v7 = v99 - v103; | |
v5 -= v103; | |
v128[v134 + 802] = v102 - (v102 >> 5); | |
v78 |= 8u; | |
} | |
else | |
{ | |
v7 = v102 * (v99 >> 11); | |
v128[v134 + 802] = v102 + ((2048 - v102) >> 5); | |
} | |
if ( v78 != -1 ) | |
goto LABEL_140; | |
v124 = v126 + 274; | |
v136 -= 12; | |
LABEL_161: | |
v110 = v145; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145 | (v5 << 8); | |
v110 = v145 + 1; | |
} | |
a1[7] = v7; | |
a1[6] = v110; | |
a1[9] = v138; | |
a1[18] = v124; | |
a1[14] = v135; | |
a1[11] = v137; | |
a1[16] = v122; | |
a1[8] = v5; | |
a1[15] = v123; | |
a1[13] = v136; | |
a1[17] = v119; | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int __stdcall sub_407B10(_DWORD *a1, unsigned int a2, unsigned int a3) | |
{ | |
_DWORD *v3; // edi | |
unsigned int v4; // ebx | |
unsigned int v5; // esi | |
int v6; // edx | |
unsigned int v7; // eax | |
int v8; // ecx | |
unsigned int v9; // edx | |
unsigned __int16 *v10; // edx | |
unsigned int v11; // ecx | |
int v12; // ecx | |
unsigned int v13; // ecx | |
int v14; // edi | |
unsigned int v15; // ebx | |
int v16; // edi | |
int v17; // edi | |
int v18; // edx | |
int v19; // edi | |
unsigned int v20; // ebx | |
unsigned int v21; // eax | |
unsigned int v22; // edx | |
unsigned int v23; // edi | |
unsigned int v24; // eax | |
unsigned int v25; // ebx | |
unsigned __int16 *v26; // ecx | |
unsigned int v27; // eax | |
unsigned int v28; // edx | |
unsigned int v29; // edi | |
unsigned int v30; // eax | |
int v31; // edx | |
unsigned int v32; // edi | |
unsigned int v33; // edi | |
unsigned int v34; // eax | |
unsigned int v35; // edx | |
unsigned int v36; // edi | |
unsigned __int16 v37; // di | |
unsigned int v38; // edx | |
unsigned int v39; // eax | |
unsigned int v40; // edx | |
unsigned int v41; // edi | |
unsigned __int16 v42; // di | |
int v43; // edx | |
unsigned int v44; // edi | |
int v45; // edi | |
unsigned int v46; // eax | |
int v47; // edx | |
unsigned int v48; // edi | |
unsigned int v49; // edx | |
unsigned int v50; // ecx | |
unsigned int v51; // edi | |
unsigned int v52; // edx | |
int v53; // ecx | |
int v54; // ecx | |
int v55; // edx | |
unsigned int v56; // edi | |
unsigned int v57; // eax | |
int v58; // edx | |
int v59; // ebx | |
unsigned int v60; // edx | |
unsigned int v61; // edi | |
unsigned int v62; // eax | |
int v63; // ebx | |
int v64; // edx | |
unsigned int v65; // edi | |
unsigned int v66; // eax | |
int v67; // ebx | |
int v68; // edx | |
unsigned int v69; // edi | |
unsigned int v70; // eax | |
int v71; // ebx | |
int v72; // edx | |
unsigned int v73; // edi | |
unsigned int v74; // eax | |
int v75; // ebx | |
int v76; // edx | |
unsigned int v77; // edi | |
unsigned int v78; // ebx | |
unsigned int v79; // edx | |
int v80; // edi | |
int v81; // ecx | |
int v82; // ebx | |
int v83; // ecx | |
unsigned int v84; // edx | |
unsigned int v85; // ecx | |
int v86; // ecx | |
unsigned int v87; // esi | |
int v88; // edx | |
unsigned int v89; // edi | |
unsigned int v90; // eax | |
int v91; // edx | |
unsigned int v92; // edx | |
unsigned int v93; // edi | |
unsigned int v94; // eax | |
unsigned __int16 v95; // di | |
int v96; // edx | |
unsigned int v97; // edx | |
unsigned int v98; // edi | |
unsigned int v99; // eax | |
unsigned __int16 v100; // di | |
int v101; // edx | |
unsigned int v102; // edx | |
unsigned int v103; // edi | |
unsigned int v104; // edx | |
bool v105; // cf | |
unsigned int v106; // edx | |
unsigned int v107; // ecx | |
_BYTE *v108; // edx | |
unsigned __int8 *v110; // edx | |
int v111; // [esp+Ch] [ebp-50h] | |
int v112; // [esp+10h] [ebp-4Ch] | |
_BYTE *v113; // [esp+10h] [ebp-4Ch] | |
int v114; // [esp+14h] [ebp-48h] | |
unsigned __int16 *v115; // [esp+18h] [ebp-44h] | |
int v116; // [esp+18h] [ebp-44h] | |
int v117; // [esp+1Ch] [ebp-40h] | |
unsigned int v118; // [esp+20h] [ebp-3Ch] | |
unsigned int v119; // [esp+24h] [ebp-38h] | |
int v120; // [esp+24h] [ebp-38h] | |
int v121; // [esp+28h] [ebp-34h] | |
unsigned int v122; // [esp+2Ch] [ebp-30h] | |
unsigned int v123; // [esp+30h] [ebp-2Ch] | |
unsigned int v124; // [esp+34h] [ebp-28h] | |
int v125; // [esp+34h] [ebp-28h] | |
unsigned int v126; // [esp+34h] [ebp-28h] | |
unsigned int v127; // [esp+38h] [ebp-24h] | |
unsigned __int16 *v128; // [esp+3Ch] [ebp-20h] | |
int v129; // [esp+40h] [ebp-1Ch] | |
int v130; // [esp+40h] [ebp-1Ch] | |
unsigned int v131; // [esp+40h] [ebp-1Ch] | |
int v132; // [esp+40h] [ebp-1Ch] | |
int v133; // [esp+40h] [ebp-1Ch] | |
int v134; // [esp+40h] [ebp-1Ch] | |
unsigned int v135; // [esp+44h] [ebp-18h] | |
unsigned int v136; // [esp+48h] [ebp-14h] | |
unsigned int v137; // [esp+4Ch] [ebp-10h] | |
unsigned int v138; // [esp+50h] [ebp-Ch] | |
unsigned int v139; // [esp+50h] [ebp-Ch] | |
unsigned __int16 *v140; // [esp+54h] [ebp-8h] | |
unsigned __int16 *v141; // [esp+54h] [ebp-8h] | |
unsigned __int16 *v142; // [esp+54h] [ebp-8h] | |
int v143; // [esp+54h] [ebp-8h] | |
int v144; // [esp+54h] [ebp-8h] | |
unsigned __int8 *v145; // [esp+58h] [ebp-4h] | |
v3 = a1; | |
v128 = (unsigned __int16 *)a1[4]; | |
v4 = a1[13]; | |
v135 = a1[14]; | |
v5 = a1[8]; | |
v122 = a1[16]; | |
v119 = a1[17]; | |
v123 = a1[15]; | |
v6 = (1 << a1[2]) - 1; | |
v121 = a1[5]; | |
v114 = (1 << a1[1]) - 1; | |
v117 = *a1; | |
v127 = a1[10]; | |
v137 = a1[11]; | |
v138 = a1[9]; | |
v145 = (unsigned __int8 *)a1[6]; | |
v7 = a1[7]; | |
v136 = v4; | |
v111 = v6; | |
v118 = a1[12]; | |
v124 = 0; | |
while ( 1 ) | |
{ | |
v129 = v6 & v137; | |
v140 = &v128[16 * v4 + (v6 & v137)]; | |
v8 = *v140; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v9 = v8 * (v7 >> 11); | |
if ( v5 < v9 ) | |
{ | |
v7 = v8 * (v7 >> 11); | |
*v140 = v8 + ((unsigned int)(2048 - v8) >> 5); | |
v10 = v128 + 1846; | |
v141 = v128 + 1846; | |
if ( v118 || v137 ) | |
{ | |
v11 = v138; | |
if ( !v138 ) | |
v11 = v127; | |
v10 = &v141[768 * ((v114 & v137) << v117) + 768 * (*(unsigned __int8 *)(v11 + v121 - 1) >> (8 - v117))]; | |
v4 = v136; | |
v141 = v10; | |
} | |
if ( v4 >= 7 ) | |
{ | |
v130 = 256; | |
v16 = *(unsigned __int8 *)(v3[5] + (v138 < v135 ? v127 : 0) - v135 + v138); | |
v136 = v4 - (v4 < 0xA ? 3 : 6); | |
v13 = 1; | |
while ( 1 ) | |
{ | |
v17 = 2 * v16; | |
v18 = v17 & v130; | |
v112 = v17; | |
v115 = &v141[v13 + (v17 & v130) + v130]; | |
v19 = *v115; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v20 = v19 * (v7 >> 11); | |
if ( v5 >= v20 ) | |
{ | |
v7 -= v20; | |
v5 -= v20; | |
*v115 -= *v115 >> 5; | |
v13 = 2 * v13 + 1; | |
} | |
else | |
{ | |
v7 = v19 * (v7 >> 11); | |
*v115 = v19 + ((unsigned int)(2048 - v19) >> 5); | |
v13 *= 2; | |
v18 = ~v18; | |
} | |
v130 &= v18; | |
if ( v13 >= 0x100 ) | |
break; | |
v16 = v112; | |
} | |
} | |
else | |
{ | |
v12 = v4; | |
if ( v4 >= 4 ) | |
v12 = 3; | |
v136 = v4 - v12; | |
v13 = 1; | |
do | |
{ | |
v14 = v10[v13]; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v15 = v14 * (v7 >> 11); | |
if ( v5 >= v15 ) | |
{ | |
v7 -= v15; | |
v5 -= v15; | |
v10[v13] -= v10[v13] >> 5; | |
v13 = 2 * v13 + 1; | |
} | |
else | |
{ | |
v7 = v14 * (v7 >> 11); | |
v10[v13] = v14 + ((unsigned int)(2048 - v14) >> 5); | |
v13 *= 2; | |
} | |
} | |
while ( v13 < 0x100 ); | |
} | |
*(_BYTE *)(v138 + v121) = v13; | |
++v137; | |
++v138; | |
goto LABEL_156; | |
} | |
v21 = v7 - v9; | |
v5 -= v9; | |
*v140 -= *v140 >> 5; | |
v22 = v128[v4 + 192]; | |
if ( v21 < 0x1000000 ) | |
{ | |
v21 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v23 = v22 * (v21 >> 11); | |
if ( v5 >= v23 ) | |
{ | |
v27 = v21 - v23; | |
v5 -= v23; | |
v128[v4 + 192] = v22 - (v22 >> 5); | |
if ( !v118 && !v137 ) | |
return 1; | |
v28 = v128[v4 + 204]; | |
if ( v27 < 0x1000000 ) | |
{ | |
v27 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v29 = v28 * (v27 >> 11); | |
if ( v5 >= v29 ) | |
{ | |
v34 = v27 - v29; | |
v5 -= v29; | |
v128[v4 + 204] = v28 - (v28 >> 5); | |
v35 = v128[v4 + 216]; | |
if ( v34 < 0x1000000 ) | |
{ | |
v34 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v36 = v35 * (v34 >> 11); | |
if ( v5 >= v36 ) | |
{ | |
v39 = v34 - v36; | |
v5 -= v36; | |
v128[v4 + 216] = v35 - (v35 >> 5); | |
v40 = v128[v4 + 228]; | |
if ( v39 < 0x1000000 ) | |
{ | |
v39 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v41 = v40 * (v39 >> 11); | |
if ( v5 >= v41 ) | |
{ | |
v24 = v39 - v41; | |
v5 -= v41; | |
v128[v4 + 228] = v40 - (v40 >> 5); | |
v38 = v119; | |
v119 = v122; | |
} | |
else | |
{ | |
v24 = v40 * (v39 >> 11); | |
v42 = v40 + ((2048 - v40) >> 5); | |
v38 = v122; | |
v128[v4 + 228] = v42; | |
} | |
v122 = v123; | |
} | |
else | |
{ | |
v24 = v35 * (v34 >> 11); | |
v37 = v35 + ((2048 - v35) >> 5); | |
v38 = v123; | |
v128[v4 + 216] = v37; | |
} | |
v123 = v135; | |
v135 = v38; | |
} | |
else | |
{ | |
v30 = v28 * (v27 >> 11); | |
v128[v4 + 204] = v28 + ((2048 - v28) >> 5); | |
v142 = &v128[16 * v4 + 240 + v129]; | |
v31 = *v142; | |
if ( v30 < 0x1000000 ) | |
{ | |
v30 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v32 = v31 * (v30 >> 11); | |
if ( v5 < v32 ) | |
{ | |
*v142 = v31 + ((unsigned int)(2048 - v31) >> 5); | |
v7 = v31 * (v30 >> 11); | |
++v137; | |
*(_BYTE *)(v138 + v121) = *(_BYTE *)(v138 + (v138 < v135 ? v127 : 0) - v135 + v121); | |
v33 = v138 + 1; | |
v136 = v4 < 7 ? 9 : 11; | |
LABEL_155: | |
v138 = v33; | |
goto LABEL_156; | |
} | |
v24 = v30 - v32; | |
v5 -= v32; | |
*v142 -= *v142 >> 5; | |
} | |
v25 = v4 < 7 ? 8 : 11; | |
v26 = v128 + 1332; | |
} | |
else | |
{ | |
v24 = v22 * (v21 >> 11); | |
v128[v4 + 192] = v22 + ((2048 - v22) >> 5); | |
v25 = v4 + 12; | |
v26 = v128 + 818; | |
} | |
v43 = *v26; | |
v136 = v25; | |
if ( v24 < 0x1000000 ) | |
{ | |
v24 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v44 = v43 * (v24 >> 11); | |
if ( v5 >= v44 ) | |
{ | |
v46 = v24 - v44; | |
v5 -= v44; | |
*v26 -= *v26 >> 5; | |
v47 = v26[1]; | |
if ( v46 < 0x1000000 ) | |
{ | |
v46 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v48 = v47 * (v46 >> 11); | |
if ( v5 >= v48 ) | |
{ | |
v7 = v46 - v48; | |
v5 -= v48; | |
v26[1] -= v26[1] >> 5; | |
v45 = (int)(v26 + 258); | |
v143 = 16; | |
v131 = 256; | |
} | |
else | |
{ | |
v7 = v47 * (v46 >> 11); | |
v26[1] = v47 + ((unsigned int)(2048 - v47) >> 5); | |
v45 = (int)&v26[8 * v129 + 130]; | |
v143 = 8; | |
v131 = 8; | |
} | |
} | |
else | |
{ | |
v7 = v43 * (v24 >> 11); | |
*v26 = v43 + ((unsigned int)(2048 - v43) >> 5); | |
v45 = (int)&v26[8 * v129 + 2]; | |
v143 = 0; | |
v131 = 8; | |
} | |
v125 = v45; | |
v49 = 1; | |
do | |
{ | |
v50 = *(unsigned __int16 *)(v45 + 2 * v49); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v51 = v50 * (v7 >> 11); | |
if ( v5 >= v51 ) | |
{ | |
v7 -= v51; | |
v5 -= v51; | |
v45 = v125; | |
*(_WORD *)(v125 + 2 * v49) = v50 - (v50 >> 5); | |
v49 = 2 * v49 + 1; | |
} | |
else | |
{ | |
v7 = v50 * (v7 >> 11); | |
v45 = v125; | |
*(_WORD *)(v125 + 2 * v49) = v50 + ((2048 - v50) >> 5); | |
v49 *= 2; | |
} | |
} | |
while ( v49 < v131 ); | |
v52 = v143 - v131 + v49; | |
v126 = v52; | |
if ( v25 >= 0xC ) | |
break; | |
LABEL_145: | |
v33 = v138; | |
v106 = v52 + 2; | |
if ( a2 == v138 ) | |
return 1; | |
v139 = a2 - v138; | |
if ( v139 >= v106 ) | |
v139 = v106; | |
v137 += v139; | |
v107 = v33 + (v33 < v135 ? v127 : 0) - v135; | |
v124 = v106 - v139; | |
if ( v107 + v139 > v127 ) | |
{ | |
do | |
{ | |
*(_BYTE *)(v33 + v121) = *(_BYTE *)(v107 + v121); | |
++v107; | |
++v33; | |
if ( v107 == v127 ) | |
v107 = 0; | |
--v139; | |
} | |
while ( v139 ); | |
goto LABEL_155; | |
} | |
v108 = (_BYTE *)(v33 + v121); | |
v113 = (_BYTE *)(v33 + v121 + v139); | |
v138 = v139 + v33; | |
do | |
{ | |
*v108 = v108[(v33 < v135 ? v127 : 0) - v135]; | |
++v108; | |
} | |
while ( v108 != v113 ); | |
LABEL_156: | |
if ( v138 >= a2 || (unsigned int)v145 >= a3 ) | |
goto LABEL_161; | |
v6 = v111; | |
v4 = v136; | |
v3 = a1; | |
} | |
v53 = v52; | |
if ( v52 >= 4 ) | |
v53 = 3; | |
v54 = (int)&v128[64 * v53 + 432]; | |
v55 = *(unsigned __int16 *)(v54 + 2); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v56 = v55 * (v7 >> 11); | |
if ( v5 >= v56 ) | |
{ | |
v57 = v7 - v56; | |
v5 -= v56; | |
*(_WORD *)(v54 + 2) -= *(_WORD *)(v54 + 2) >> 5; | |
v58 = 3; | |
} | |
else | |
{ | |
v57 = v55 * (v7 >> 11); | |
*(_WORD *)(v54 + 2) = v55 + ((unsigned int)(2048 - v55) >> 5); | |
v58 = 2; | |
} | |
v59 = 2 * v58; | |
v60 = *(unsigned __int16 *)(2 * v58 + v54); | |
if ( v57 < 0x1000000 ) | |
{ | |
v57 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v61 = v60 * (v57 >> 11); | |
if ( v5 >= v61 ) | |
{ | |
v62 = v57 - v61; | |
v5 -= v61; | |
*(_WORD *)(v59 + v54) = v60 - (v60 >> 5); | |
++v59; | |
} | |
else | |
{ | |
v62 = v60 * (v57 >> 11); | |
*(_WORD *)(v59 + v54) = v60 + ((2048 - v60) >> 5); | |
} | |
v63 = 2 * v59; | |
v64 = *(unsigned __int16 *)(v63 + v54); | |
if ( v62 < 0x1000000 ) | |
{ | |
v62 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v65 = v64 * (v62 >> 11); | |
if ( v5 >= v65 ) | |
{ | |
v66 = v62 - v65; | |
v5 -= v65; | |
*(_WORD *)(v63 + v54) -= *(_WORD *)(v63 + v54) >> 5; | |
++v63; | |
} | |
else | |
{ | |
v66 = v64 * (v62 >> 11); | |
*(_WORD *)(v63 + v54) = v64 + ((unsigned int)(2048 - v64) >> 5); | |
} | |
v67 = 2 * v63; | |
v68 = *(unsigned __int16 *)(v67 + v54); | |
if ( v66 < 0x1000000 ) | |
{ | |
v66 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v69 = v68 * (v66 >> 11); | |
if ( v5 >= v69 ) | |
{ | |
v70 = v66 - v69; | |
v5 -= v69; | |
*(_WORD *)(v67 + v54) -= *(_WORD *)(v67 + v54) >> 5; | |
++v67; | |
} | |
else | |
{ | |
v70 = v68 * (v66 >> 11); | |
*(_WORD *)(v67 + v54) = v68 + ((unsigned int)(2048 - v68) >> 5); | |
} | |
v71 = 2 * v67; | |
v72 = *(unsigned __int16 *)(v71 + v54); | |
if ( v70 < 0x1000000 ) | |
{ | |
v70 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v73 = v72 * (v70 >> 11); | |
if ( v5 >= v73 ) | |
{ | |
v74 = v70 - v73; | |
v5 -= v73; | |
*(_WORD *)(v71 + v54) -= *(_WORD *)(v71 + v54) >> 5; | |
++v71; | |
} | |
else | |
{ | |
v74 = v72 * (v70 >> 11); | |
*(_WORD *)(v71 + v54) = v72 + ((unsigned int)(2048 - v72) >> 5); | |
} | |
v75 = 2 * v71; | |
v76 = *(unsigned __int16 *)(v75 + v54); | |
if ( v74 < 0x1000000 ) | |
{ | |
v74 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v77 = v76 * (v74 >> 11); | |
if ( v5 >= v77 ) | |
{ | |
v7 = v74 - v77; | |
v5 -= v77; | |
*(_WORD *)(v75 + v54) -= *(_WORD *)(v75 + v54) >> 5; | |
++v75; | |
} | |
else | |
{ | |
v7 = v76 * (v74 >> 11); | |
*(_WORD *)(v75 + v54) = v76 + ((unsigned int)(2048 - v76) >> 5); | |
} | |
v78 = v75 - 64; | |
if ( v78 < 4 ) | |
{ | |
LABEL_140: | |
v104 = v123; | |
v119 = v122; | |
v123 = v135; | |
v122 = v104; | |
v135 = v78 + 1; | |
if ( v118 ) | |
v105 = v78 < v118; | |
else | |
v105 = v78 < v137; | |
if ( !v105 ) | |
return 1; | |
v52 = v126; | |
v136 = v136 < 0x13 ? 7 : 10; | |
goto LABEL_145; | |
} | |
v79 = v78; | |
v80 = 1; | |
v81 = (v78 >> 1) - 1; | |
v82 = v78 & 1 | 2; | |
v116 = v81; | |
if ( v79 < 0xE ) | |
{ | |
v78 = v82 << v81; | |
v120 = 1; | |
v83 = (int)&v128[v78 - v79 + 687]; | |
v144 = v83; | |
do | |
{ | |
v84 = *(unsigned __int16 *)(v83 + 2 * v80); | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v85 = v84 * (v7 >> 11); | |
if ( v5 >= v85 ) | |
{ | |
v7 -= v85; | |
v5 -= v85; | |
v83 = v144; | |
v78 |= v120; | |
*(_WORD *)(v144 + 2 * v80) = v84 - (v84 >> 5); | |
v80 = 2 * v80 + 1; | |
} | |
else | |
{ | |
v7 = v84 * (v7 >> 11); | |
v83 = v144; | |
*(_WORD *)(v144 + 2 * v80) = v84 + ((2048 - v84) >> 5); | |
v80 *= 2; | |
} | |
v120 *= 2; | |
--v116; | |
} | |
while ( v116 ); | |
goto LABEL_140; | |
} | |
v86 = v81 - 4; | |
do | |
{ | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v7 >>= 1; | |
v87 = v5 - v7; | |
v82 = 2 * v82 - (v87 >> 31) + 1; | |
v5 = (v7 & -(v87 >> 31)) + v87; | |
--v86; | |
} | |
while ( v86 ); | |
v88 = v128[803]; | |
v78 = 16 * v82; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v89 = v88 * (v7 >> 11); | |
if ( v5 >= v89 ) | |
{ | |
v90 = v7 - v89; | |
v5 -= v89; | |
v128[803] -= v128[803] >> 5; | |
v91 = 3; | |
v78 |= 1u; | |
} | |
else | |
{ | |
v90 = v88 * (v7 >> 11); | |
v128[803] = v88 + ((unsigned int)(2048 - v88) >> 5); | |
v91 = 2; | |
} | |
v132 = v91; | |
v92 = v128[v91 + 802]; | |
if ( v90 < 0x1000000 ) | |
{ | |
v90 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v93 = v92 * (v90 >> 11); | |
if ( v5 >= v93 ) | |
{ | |
v94 = v90 - v93; | |
v5 -= v93; | |
v128[v132 + 802] = v92 - (v92 >> 5); | |
v96 = v132 * 2 + 1; | |
v78 |= 2u; | |
} | |
else | |
{ | |
v94 = v92 * (v90 >> 11); | |
v95 = v92 + ((2048 - v92) >> 5); | |
v96 = v132 * 2; | |
v128[v132 + 802] = v95; | |
} | |
v133 = v96; | |
v97 = v128[v96 + 802]; | |
if ( v94 < 0x1000000 ) | |
{ | |
v94 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v98 = v97 * (v94 >> 11); | |
if ( v5 >= v98 ) | |
{ | |
v99 = v94 - v98; | |
v5 -= v98; | |
v128[v133 + 802] = v97 - (v97 >> 5); | |
v101 = v133 * 2 + 1; | |
v78 |= 4u; | |
} | |
else | |
{ | |
v99 = v97 * (v94 >> 11); | |
v100 = v97 + ((2048 - v97) >> 5); | |
v101 = v133 * 2; | |
v128[v133 + 802] = v100; | |
} | |
v134 = v101; | |
v102 = v128[v101 + 802]; | |
if ( v99 < 0x1000000 ) | |
{ | |
v99 <<= 8; | |
v5 = *v145++ | (v5 << 8); | |
} | |
v103 = v102 * (v99 >> 11); | |
if ( v5 >= v103 ) | |
{ | |
v7 = v99 - v103; | |
v5 -= v103; | |
v128[v134 + 802] = v102 - (v102 >> 5); | |
v78 |= 8u; | |
} | |
else | |
{ | |
v7 = v102 * (v99 >> 11); | |
v128[v134 + 802] = v102 + ((2048 - v102) >> 5); | |
} | |
if ( v78 != -1 ) | |
goto LABEL_140; | |
v124 = v126 + 274; | |
v136 -= 12; | |
LABEL_161: | |
v110 = v145; | |
if ( v7 < 0x1000000 ) | |
{ | |
v7 <<= 8; | |
v5 = *v145 | (v5 << 8); | |
v110 = v145 + 1; | |
} | |
a1[7] = v7; | |
a1[6] = v110; | |
a1[9] = v138; | |
a1[18] = v124; | |
a1[14] = v135; | |
a1[11] = v137; | |
a1[16] = v122; | |
a1[8] = v5; | |
a1[15] = v123; | |
a1[13] = v136; | |
a1[17] = v119; | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment