2152 lines
63 KiB
C
2152 lines
63 KiB
C
#include "pinball.h"
|
|
|
|
// Address range: 0x1e22220 - 0x1e2225d
|
|
int32_t function_1e22220(void) {
|
|
// 0x1e22220
|
|
g2 = g79;
|
|
if (g79 != 1) {
|
|
if (g79 != 0 || g80 != 1) {
|
|
// 0x1e2225c
|
|
return g79;
|
|
}
|
|
}
|
|
// 0x1e22237
|
|
function_1e22260(252);
|
|
g2 = g116;
|
|
int32_t result = function_1e22260(255); // 0x1e22254
|
|
g2 = result;
|
|
// 0x1e2225c
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e22260 - 0x1e22456
|
|
int32_t function_1e22260(int32_t a1) {
|
|
// 0x1e22260
|
|
g5 = 0;
|
|
g2 = &g114;
|
|
g7 = a1;
|
|
int32_t v1 = g8; // bp-432
|
|
int32_t v2 = &v1; // 0x1e22275
|
|
int32_t v3 = g3; // bp-440
|
|
int32_t v4 = &v3; // 0x1e22277
|
|
int32_t v5 = 0; // 0x1e2227f
|
|
int32_t v6 = &g114; // 0x1e2227c
|
|
int32_t v7; // 0x1e2228e
|
|
int32_t v8; // 0x1e2245550
|
|
while (true) {
|
|
// 0x1e22278
|
|
if (*(int32_t *)v6 == a1) {
|
|
v8 = v6;
|
|
v7 = v5;
|
|
// break -> 0x1e22287
|
|
break;
|
|
}
|
|
int32_t v9 = v6 + 8; // 0x1e2227c
|
|
g2 = v9;
|
|
int32_t v10 = v5 + 1; // 0x1e2227f
|
|
g5 = v10;
|
|
if (v9 >= (int32_t)&g116) {
|
|
v8 = v9;
|
|
v7 = v10;
|
|
// break -> 0x1e22287
|
|
break;
|
|
}
|
|
v5 = v10;
|
|
v6 = v9;
|
|
}
|
|
int32_t v11 = 8 * v7; // 0x1e22287
|
|
g4 = v11;
|
|
int32_t v12; // 0x1e2244b
|
|
int32_t result; // 0x1e22455
|
|
if (*(int32_t *)(v11 + (int32_t)&g114) != a1) {
|
|
result = v8;
|
|
v12 = v4;
|
|
goto lab_0x1e2244b;
|
|
} else {
|
|
// 0x1e2229b
|
|
if (g79 == 1) {
|
|
goto lab_0x1e22407;
|
|
} else {
|
|
if (g79 != 0) {
|
|
goto lab_0x1e222be;
|
|
} else {
|
|
// 0x1e222b1
|
|
if (g80 == 1) {
|
|
goto lab_0x1e22407;
|
|
} else {
|
|
goto lab_0x1e222be;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lab_0x1e2244b:
|
|
// 0x1e2244b
|
|
g3 = *(int32_t *)v12;
|
|
g6 = *(int32_t *)(v12 + 4);
|
|
g8 = *(int32_t *)(v12 + 8);
|
|
g4 = *(int32_t *)(v12 + 12);
|
|
return result;
|
|
lab_0x1e22407:;
|
|
int32_t v13 = g677; // 0x1e22407
|
|
int32_t v14; // 0x1e22427
|
|
int32_t v15; // 0x1e2242d
|
|
int32_t v16; // 0x1e22415
|
|
if (v13 == 0) {
|
|
goto lab_0x1e2241d;
|
|
} else {
|
|
// 0x1e22410
|
|
g2 = v13;
|
|
v16 = *(int32_t *)(v13 + 72);
|
|
if (v16 != -1) {
|
|
v15 = v4;
|
|
v14 = v11;
|
|
goto lab_0x1e22427;
|
|
} else {
|
|
goto lab_0x1e2241d;
|
|
}
|
|
}
|
|
lab_0x1e2241d:;
|
|
int32_t v17 = (int32_t)GetStdHandle(-12); // 0x1e2241f
|
|
g2 = v17;
|
|
v16 = v17;
|
|
v15 = g9;
|
|
v14 = g4;
|
|
goto lab_0x1e22427;
|
|
lab_0x1e222be:
|
|
if (a1 != 252) {
|
|
// 0x1e222ca
|
|
int32_t lpFilename; // bp-260
|
|
g2 = &lpFilename;
|
|
int32_t nameSize = GetModuleFileNameA(NULL, (char *)&lpFilename, 260); // 0x1e222df
|
|
g2 = nameSize;
|
|
int32_t v26; // bp-272
|
|
int32_t v27;
|
|
if ((nameSize & 255) != 0) {
|
|
// 0x1e222ca
|
|
v27 = &v26;
|
|
} else {
|
|
int32_t v28 = &v26; // 0x1e222ea
|
|
g5 = 5;
|
|
__asm_rep_movsd_memcpy((char *)&v26, "<program name unknown>", 5);
|
|
g5 = 0;
|
|
g8 = (g1 ? -20 : 20) + v28 + (g1 ? -2 : 2) + (g1 ? -1 : 1);
|
|
v27 = v28;
|
|
}
|
|
int32_t v29 = v27; // ebp
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v30 = v27; // 0x1e22310
|
|
int32_t v31 = -1; // 0x1e22310
|
|
int32_t v32; // 0x1e22312
|
|
while (true) {
|
|
if (v31 == 0) {
|
|
v32 = 0;
|
|
// break -> bb115
|
|
break;
|
|
}
|
|
int32_t v33 = v31 - 1; // 0x1e22310
|
|
g5 = v33;
|
|
if (*(char *)v30 == 0) {
|
|
v32 = v33;
|
|
// break -> bb115
|
|
break;
|
|
}
|
|
v30 += (g1 ? -1 : 1);
|
|
v31 = v33;
|
|
}
|
|
// bb115
|
|
g5 = -1 - v32;
|
|
int32_t v34; // bp-456
|
|
if (v32 <= 0xffffffc2) {
|
|
// 0x1e22319
|
|
g6 = v27;
|
|
g5 = -1;
|
|
g2 = 0;
|
|
v34 = 3;
|
|
int32_t v35 = v27; // 0x1e22329
|
|
int32_t v36 = -1; // 0x1e22329
|
|
int32_t v37; // 0x1e2232b
|
|
while (true) {
|
|
if (v36 == 0) {
|
|
v37 = 0;
|
|
// break -> bb118
|
|
break;
|
|
}
|
|
int32_t v38 = (g1 ? -1 : 1) + v35; // 0x1e22329
|
|
g6 = v38;
|
|
int32_t v39 = v36 - 1; // 0x1e22329
|
|
g5 = v39;
|
|
if (*(char *)v35 == 0) {
|
|
v37 = v39;
|
|
// break -> bb118
|
|
break;
|
|
}
|
|
v35 = v38;
|
|
v36 = v39;
|
|
}
|
|
// bb118
|
|
g5 = -1 - v37;
|
|
int32_t v40 = 123 - v37 + (int32_t)&v34; // 0x1e2232d
|
|
v29 = v40;
|
|
g2 = function_1e230e0(v40, "...", (int32_t)&g708);
|
|
}
|
|
// 0x1e2233f
|
|
g5 = 6;
|
|
__asm_rep_movsd_memcpy((char *)&v1, "Runtime Error!\n\nProgram: ", 6);
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v41 = g1 ? -1 : 1; // 0x1e2235a
|
|
int32_t v42 = -1; // 0x1e2235a
|
|
int32_t v43; // 0x1e2235c
|
|
int32_t v44; // 0x1e2235e
|
|
while (true) {
|
|
if (v42 == 0) {
|
|
v44 = v29;
|
|
v43 = 0;
|
|
// break -> bb123
|
|
break;
|
|
}
|
|
int32_t v45 = v29 + v41; // 0x1e2235a
|
|
int32_t v46 = v42 - 1; // 0x1e2235a
|
|
g5 = v46;
|
|
if (*(char *)v29 == 0) {
|
|
v44 = v45;
|
|
v43 = v46;
|
|
// break -> bb123
|
|
break;
|
|
}
|
|
v29 = v45;
|
|
v42 = v46;
|
|
}
|
|
int32_t v47 = -1 - v43; // 0x1e2235c
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v48 = v2; // 0x1e2236f
|
|
int32_t v49 = -1; // 0x1e2236f
|
|
int32_t v50; // 0x1e22371
|
|
while (true) {
|
|
if (v49 == 0) {
|
|
v50 = v48;
|
|
// break -> bb126
|
|
break;
|
|
}
|
|
int32_t v51 = v48 + v41; // 0x1e2236f
|
|
int32_t v52 = v49 - 1; // 0x1e2236f
|
|
g5 = v52;
|
|
if (*(char *)v48 == 0) {
|
|
v50 = v51;
|
|
// break -> bb126
|
|
break;
|
|
}
|
|
v48 = v51;
|
|
v49 = v52;
|
|
}
|
|
int32_t v53 = v50 - 1; // 0x1e22371
|
|
int32_t v54 = v47 / 4; // 0x1e22374
|
|
g5 = v54;
|
|
__asm_rep_movsd_memcpy((char *)v53, (char *)(v44 - v47), v54);
|
|
char * v55 = (char *)((g1 ? -4 : 4) * v54 + v53); // 0x1e22377
|
|
int32_t v56 = v47 & 3; // 0x1e2237b
|
|
g5 = v56;
|
|
__asm_rep_movsb_memcpy(v55, v55, v56);
|
|
int32_t v57 = g1 ? -1 : 1; // 0x1e2237e
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v58 = (int32_t)"\n\n"; // 0x1e2238c
|
|
int32_t v59 = -1; // 0x1e2238c
|
|
int32_t v60; // 0x1e2238e
|
|
int32_t v61; // 0x1e22390
|
|
while (true) {
|
|
if (v59 == 0) {
|
|
v61 = v58;
|
|
v60 = 0;
|
|
// break -> bb130
|
|
break;
|
|
}
|
|
int32_t v62 = v58 + v57; // 0x1e2238c
|
|
int32_t v63 = v59 - 1; // 0x1e2238c
|
|
g5 = v63;
|
|
if (*(char *)v58 == 0) {
|
|
v61 = v62;
|
|
v60 = v63;
|
|
// break -> bb130
|
|
break;
|
|
}
|
|
v58 = v62;
|
|
v59 = v63;
|
|
}
|
|
int32_t v64 = -1 - v60; // 0x1e2238e
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v65 = v2; // 0x1e223a1
|
|
int32_t v66 = -1; // 0x1e223a1
|
|
int32_t v67; // 0x1e223a3
|
|
while (true) {
|
|
if (v66 == 0) {
|
|
v67 = v65;
|
|
// break -> bb133
|
|
break;
|
|
}
|
|
int32_t v68 = v65 + v57; // 0x1e223a1
|
|
int32_t v69 = v66 - 1; // 0x1e223a1
|
|
g5 = v69;
|
|
if (*(char *)v65 == 0) {
|
|
v67 = v68;
|
|
// break -> bb133
|
|
break;
|
|
}
|
|
v65 = v68;
|
|
v66 = v69;
|
|
}
|
|
int32_t v70 = v67 - 1; // 0x1e223a3
|
|
int32_t v71 = v64 / 4; // 0x1e223a6
|
|
g5 = v71;
|
|
__asm_rep_movsd_memcpy((char *)v70, (char *)(v61 - v64), v71);
|
|
char * v72 = (char *)((g1 ? -4 : 4) * v71 + v70); // 0x1e223a9
|
|
int32_t v73 = v64 & 3; // 0x1e223ad
|
|
g5 = v73;
|
|
__asm_rep_movsb_memcpy(v72, v72, v73);
|
|
int32_t v74 = g1 ? -1 : 1; // 0x1e223b0
|
|
g5 = 0;
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v75 = *(int32_t *)(g4 + (int32_t)&g115); // 0x1e223bf
|
|
int32_t v76 = -1; // 0x1e223bf
|
|
int32_t v77; // 0x1e223c1
|
|
int32_t v78; // 0x1e223c3
|
|
while (true) {
|
|
if (v76 == 0) {
|
|
v78 = v75;
|
|
v77 = 0;
|
|
// break -> bb137
|
|
break;
|
|
}
|
|
int32_t v79 = v75 + v74; // 0x1e223bf
|
|
int32_t v80 = v76 - 1; // 0x1e223bf
|
|
g5 = v80;
|
|
if (*(char *)v75 == 0) {
|
|
v78 = v79;
|
|
v77 = v80;
|
|
// break -> bb137
|
|
break;
|
|
}
|
|
v75 = v79;
|
|
v76 = v80;
|
|
}
|
|
int32_t v81 = -1 - v77; // 0x1e223c1
|
|
g7 = v81;
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v82 = v2; // 0x1e223d4
|
|
int32_t v83 = -1; // 0x1e223d4
|
|
int32_t v84; // 0x1e223d6
|
|
while (true) {
|
|
if (v83 == 0) {
|
|
v84 = v82;
|
|
// break -> bb140
|
|
break;
|
|
}
|
|
int32_t v85 = v82 + v74; // 0x1e223d4
|
|
int32_t v86 = v83 - 1; // 0x1e223d4
|
|
g5 = v86;
|
|
if (*(char *)v82 == 0) {
|
|
v84 = v85;
|
|
// break -> bb140
|
|
break;
|
|
}
|
|
v82 = v85;
|
|
v83 = v86;
|
|
}
|
|
int32_t v87 = v84 - 1; // 0x1e223d6
|
|
int32_t v88 = v81 / 4; // 0x1e223d9
|
|
g5 = v88;
|
|
__asm_rep_movsd_memcpy((char *)v87, (char *)(v78 - v81), v88);
|
|
int32_t v89 = (g1 ? -4 : 4) * v88 + v87; // 0x1e223dc
|
|
char * v90 = (char *)v89; // 0x1e223dc
|
|
v34 = 0x12010;
|
|
int32_t v91 = g7 & 3; // 0x1e223e5
|
|
g5 = v91;
|
|
__asm_rep_movsb_memcpy(v90, v90, v91);
|
|
g6 = (g1 ? -1 : 1) * v91 + v89;
|
|
g5 = 0;
|
|
g2 = v2;
|
|
int32_t result2 = function_1e23040(&v1); // 0x1e223f4
|
|
g2 = result2;
|
|
g3 = 0;
|
|
g6 = (int32_t)(char *)&lpFilename;
|
|
g8 = 260;
|
|
g4 = v3;
|
|
return result2;
|
|
}
|
|
result = v8;
|
|
v12 = v4;
|
|
goto lab_0x1e2244b;
|
|
lab_0x1e22427:
|
|
// 0x1e22427
|
|
g7 = *(int32_t *)(v14 + (int32_t)&g115);
|
|
*(int32_t *)(v15 - 4) = 0;
|
|
int32_t v18 = g7; // edi
|
|
*(int32_t *)(v15 - 8) = v15 + 16;
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v19 = -1; // 0x1e2243d
|
|
int32_t v20; // 0x1e2243f
|
|
while (true) {
|
|
if (v19 == 0) {
|
|
v20 = 0;
|
|
// break -> bb145
|
|
break;
|
|
}
|
|
int32_t v21 = v18; // 0x1e2243d
|
|
v18 = (g1 ? -1 : 1) + v21;
|
|
int32_t v22 = v19 - 1; // 0x1e2243d
|
|
g5 = v22;
|
|
if (*(char *)v21 == 0) {
|
|
v20 = v22;
|
|
// break -> bb145
|
|
break;
|
|
}
|
|
v19 = v22;
|
|
}
|
|
int32_t v23 = -2 - v20; // 0x1e22441
|
|
g5 = v23;
|
|
*(int32_t *)(v15 - 12) = v23;
|
|
*(int32_t *)(v15 - 16) = g7;
|
|
*(int32_t *)(v15 - 20) = v16;
|
|
bool v24 = WriteFile(&g708, &g708, (int32_t)&g708, &g708, (struct _OVERLAPPED *)&g708); // 0x1e22445
|
|
int32_t v25 = v24; // 0x1e22445
|
|
g2 = v25;
|
|
result = v25;
|
|
v12 = g9;
|
|
goto lab_0x1e2244b;
|
|
}
|
|
|
|
// Address range: 0x1e22460 - 0x1e2248a
|
|
int32_t function_1e22460(int32_t a1) {
|
|
int32_t lpCriticalSection = *(int32_t *)&g121; // 0x1e22461
|
|
g2 = lpCriticalSection;
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
int32_t lpCriticalSection2 = *(int32_t *)&g120; // 0x1e2246f
|
|
g5 = lpCriticalSection2;
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection2);
|
|
int32_t lpCriticalSection3 = *(int32_t *)&g119; // 0x1e22478
|
|
g2 = lpCriticalSection3;
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection3);
|
|
int32_t lpCriticalSection4 = *(int32_t *)&g118; // 0x1e22480
|
|
g2 = lpCriticalSection4;
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection4);
|
|
g2 = &g708;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22490 - 0x1e224f8
|
|
int32_t function_1e22490(int32_t a1) {
|
|
// 0x1e22490
|
|
g2 = a1;
|
|
int32_t v1 = g6; // bp-12
|
|
int32_t v2 = &v1; // 0x1e22498
|
|
int32_t v3 = 4 * a1 + (int32_t)&g117; // 0x1e22499
|
|
g6 = v3;
|
|
int32_t v4 = *(int32_t *)v3; // 0x1e224a0
|
|
int32_t v5; // 0x1e224ed
|
|
int32_t v6; // 0x1e224eb
|
|
if (v4 == 0) {
|
|
int32_t lpCriticalSection = function_1e22670(24); // 0x1e224a7
|
|
g2 = lpCriticalSection;
|
|
g8 = lpCriticalSection;
|
|
if (lpCriticalSection == 0) {
|
|
// 0x1e224b5
|
|
g2 = function_1e211b0(17);
|
|
}
|
|
// 0x1e224bf
|
|
g2 = function_1e22490(17);
|
|
int32_t v7; // 0x1e224e1
|
|
if (*(int32_t *)g6 != 0) {
|
|
// 0x1e224d9
|
|
g2 = function_1e22600(lpCriticalSection);
|
|
v7 = v2;
|
|
} else {
|
|
// 0x1e224cf
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
*(int32_t *)g6 = lpCriticalSection;
|
|
v7 = g9;
|
|
}
|
|
// 0x1e224e1
|
|
*(int32_t *)(v7 - 4) = 17;
|
|
g2 = function_1e22500((int32_t)&g708);
|
|
v5 = g9 + 4;
|
|
v6 = *(int32_t *)g6;
|
|
} else {
|
|
v5 = v2;
|
|
v6 = v4;
|
|
}
|
|
// 0x1e224eb
|
|
g2 = v6;
|
|
*(int32_t *)(v5 - 4) = v6;
|
|
EnterCriticalSection((struct _RTL_CRITICAL_SECTION *)&g708);
|
|
g2 = &g708;
|
|
g6 = *(int32_t *)g9;
|
|
g8 = *(int32_t *)(g9 + 4);
|
|
g3 = *(int32_t *)(g9 + 8);
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22500 - 0x1e22517
|
|
int32_t function_1e22500(int32_t a1) {
|
|
// 0x1e22500
|
|
g2 = a1;
|
|
int32_t lpCriticalSection = *(int32_t *)(4 * a1 + (int32_t)&g117); // 0x1e22507
|
|
g5 = lpCriticalSection;
|
|
LeaveCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
g3 = lpCriticalSection;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22520 - 0x1e22556
|
|
int32_t function_1e22520(uint32_t a1, int32_t a2, int32_t a3) {
|
|
// 0x1e22520
|
|
g2 = a1;
|
|
if (a1 >= (int32_t)&g140) {
|
|
if (a1 <= (int32_t)&g145) {
|
|
int32_t v1 = (a1 - (int32_t)&g140) / 32 + 28; // 0x1e2253d
|
|
g2 = v1;
|
|
int32_t result = function_1e22490(v1); // 0x1e22541
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
}
|
|
int32_t lpCriticalSection = a1 + 32; // 0x1e2254a
|
|
g2 = lpCriticalSection;
|
|
EnterCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
g3 = lpCriticalSection;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22560 - 0x1e22588
|
|
int32_t function_1e22560(int32_t a1, int32_t a2) {
|
|
// 0x1e22560
|
|
g2 = a1;
|
|
if (a1 < 20) {
|
|
int32_t v1 = a1 + 28; // 0x1e2256c
|
|
g2 = v1;
|
|
int32_t result = function_1e22490(v1); // 0x1e22570
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t lpCriticalSection = a2 + 32; // 0x1e2257c
|
|
g2 = lpCriticalSection;
|
|
EnterCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
g3 = lpCriticalSection;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22590 - 0x1e225c6
|
|
int32_t function_1e22590(uint32_t a1) {
|
|
// 0x1e22590
|
|
g2 = a1;
|
|
if (a1 >= (int32_t)&g140) {
|
|
if (a1 <= (int32_t)&g145) {
|
|
int32_t v1 = (a1 - (int32_t)&g140) / 32 + 28; // 0x1e225ad
|
|
g2 = v1;
|
|
int32_t result = function_1e22500(v1); // 0x1e225b1
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
}
|
|
int32_t lpCriticalSection = a1 + 32; // 0x1e225ba
|
|
g2 = lpCriticalSection;
|
|
LeaveCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
g3 = lpCriticalSection;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e225d0 - 0x1e225f8
|
|
int32_t function_1e225d0(int32_t a1, int32_t a2) {
|
|
// 0x1e225d0
|
|
g2 = a1;
|
|
if (a1 < 20) {
|
|
int32_t v1 = a1 + 28; // 0x1e225dc
|
|
g2 = v1;
|
|
int32_t result = function_1e22500(v1); // 0x1e225e0
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t lpCriticalSection = a2 + 32; // 0x1e225ec
|
|
g2 = lpCriticalSection;
|
|
LeaveCriticalSection((struct _RTL_CRITICAL_SECTION *)lpCriticalSection);
|
|
g2 = &g708;
|
|
g3 = lpCriticalSection;
|
|
return &g708;
|
|
}
|
|
|
|
// Address range: 0x1e22600 - 0x1e2266d
|
|
int32_t function_1e22600(int32_t lpMem) {
|
|
int32_t v1 = g8; // bp-12
|
|
g8 = lpMem;
|
|
if (lpMem == 0) {
|
|
// 0x1e22668
|
|
g8 = *(int32_t *)(int32_t)&v1;
|
|
return g2;
|
|
}
|
|
// 0x1e2260c
|
|
function_1e22490(9);
|
|
int32_t v2; // bp-8
|
|
g2 = &v2;
|
|
int32_t v3; // bp-4
|
|
g5 = &v3;
|
|
int32_t v4 = function_1e22ac0(lpMem, &v3, &v2); // 0x1e22621
|
|
g2 = v4;
|
|
if (v4 != 0) {
|
|
g5 = v3;
|
|
g2 = v2;
|
|
g2 = function_1e22b20(v3, v2, v4);
|
|
int32_t result = function_1e22500(9); // 0x1e22642
|
|
g2 = result;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
// 0x1e2264f
|
|
function_1e22500(9);
|
|
g2 = g676;
|
|
int32_t result2 = HeapFree((int32_t *)g676, 0, (int32_t *)lpMem); // 0x1e22662
|
|
g2 = result2;
|
|
// 0x1e22668
|
|
g8 = *(int32_t *)g9;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e22670 - 0x1e22684
|
|
int32_t function_1e22670(int32_t a1) {
|
|
// 0x1e22670
|
|
g2 = g147;
|
|
g5 = a1;
|
|
int32_t result = function_1e22690(a1, g147); // 0x1e2267b
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e22690 - 0x1e226da
|
|
int32_t function_1e22690(int32_t a1, int32_t a2) {
|
|
int32_t v1 = g8; // 0x1e22690
|
|
int32_t v2 = g6; // bp-8
|
|
g8 = a1;
|
|
if (a1 >= 0xffffffe1) {
|
|
// 0x1e2269b
|
|
g2 = 0;
|
|
g8 = v1;
|
|
return 0;
|
|
}
|
|
int32_t v3; // 0x1e226b22
|
|
if (a1 == 0) {
|
|
// 0x1e226a4
|
|
g8 = 1;
|
|
v3 = 1;
|
|
} else {
|
|
v3 = a1;
|
|
}
|
|
// 0x1e226a9
|
|
g6 = a2;
|
|
int32_t v4 = &v2; // 0x1e226b7
|
|
int32_t v5 = v3; // 0x1e226b7
|
|
int32_t result; // 0x1e226b8
|
|
int32_t v6; // 0x1e226bd
|
|
while (true) {
|
|
// 0x1e226ad
|
|
g2 = 0;
|
|
if (v5 < 0xffffffe1) {
|
|
// 0x1e226c0
|
|
*(int32_t *)(v4 - 4) = v5;
|
|
result = function_1e226e0((int32_t)&g708);
|
|
g2 = result;
|
|
v6 = g9 + 4;
|
|
if (result != 0) {
|
|
// break -> 0x1e226d7
|
|
break;
|
|
}
|
|
} else {
|
|
result = 0;
|
|
v6 = v4;
|
|
}
|
|
if (a2 == 0) {
|
|
// break -> 0x1e226d7
|
|
break;
|
|
}
|
|
// 0x1e226c8
|
|
*(int32_t *)(v6 - 4) = g8;
|
|
int32_t v7 = function_1e232d0((int32_t)&g708); // 0x1e226c9
|
|
g2 = v7;
|
|
int32_t v8 = g9 + 4; // 0x1e226ce
|
|
if (v7 == 0) {
|
|
// 0x1e226d5
|
|
g2 = 0;
|
|
result = 0;
|
|
v6 = v8;
|
|
goto lab_0x1e226d7;
|
|
}
|
|
// 0x1e226c8
|
|
v4 = v8;
|
|
v5 = g8;
|
|
}
|
|
lab_0x1e226d7:
|
|
// 0x1e226d7
|
|
g6 = *(int32_t *)v6;
|
|
g8 = *(int32_t *)(v6 + 4);
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e226e0 - 0x1e22733
|
|
int32_t function_1e226e0(int32_t a1) {
|
|
int32_t v1 = g8; // 0x1e226e0
|
|
int32_t v2 = g6; // 0x1e226e1
|
|
int32_t dwBytes = a1 + 15 & -16; // 0x1e226e9
|
|
g6 = dwBytes;
|
|
if (g136 < dwBytes) {
|
|
// branch -> 0x1e22721
|
|
} else {
|
|
// 0x1e226f4
|
|
function_1e22490(9);
|
|
int32_t v3 = g6 / 16; // 0x1e22700
|
|
g2 = v3;
|
|
int32_t result = function_1e22b70(v3); // 0x1e22704
|
|
g2 = result;
|
|
g2 = function_1e22500(9);
|
|
if (result != 0) {
|
|
// 0x1e2271c
|
|
g2 = result;
|
|
g6 = v2;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
// 0x1e226f4
|
|
dwBytes = g6;
|
|
}
|
|
// 0x1e22721
|
|
g2 = g676;
|
|
int32_t result2 = (int32_t)HeapAlloc((int32_t *)g676, 0, dwBytes); // 0x1e2272a
|
|
g2 = result2;
|
|
g6 = g676;
|
|
g8 = 0;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e22740 - 0x1e22758
|
|
int32_t function_1e22740(int32_t a1) {
|
|
// 0x1e22740
|
|
g5 = a1;
|
|
g2 = a1;
|
|
int32_t v1 = a1; // 0x1e22746
|
|
g7 = v1;
|
|
int32_t v2 = v1 + 2; // 0x1e22748
|
|
g2 = v2;
|
|
while (*(int16_t *)v1 != 0) {
|
|
// 0x1e22746
|
|
v1 = v2;
|
|
g7 = v1;
|
|
v2 = v1 + 2;
|
|
g2 = v2;
|
|
}
|
|
int32_t result = (v2 - a1) / 2 - 1; // 0x1e22756
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e22760 - 0x1e2280b
|
|
int32_t function_1e22760(int32_t a1, int32_t a2) {
|
|
int32_t v1 = a2 * a1; // 0x1e22767
|
|
g8 = v1;
|
|
int32_t v2 = g3; // bp-16
|
|
int32_t v3; // 0x1e2278b2
|
|
if (v1 < 0xffffffe1) {
|
|
if (v1 == 0) {
|
|
// 0x1e2277e
|
|
g8 = 16;
|
|
v3 = 16;
|
|
} else {
|
|
int32_t v4 = v1 + 15 & -16; // 0x1e22779
|
|
g8 = v4;
|
|
v3 = v4;
|
|
}
|
|
} else {
|
|
v3 = v1;
|
|
}
|
|
int32_t v5 = &v2; // 0x1e22798
|
|
uint32_t v6 = v3; // 0x1e22790
|
|
int32_t result;
|
|
while (true) {
|
|
// 0x1e22789
|
|
g3 = 0;
|
|
int32_t v7; // 0x1e227df
|
|
if (v6 < 0xffffffe1) {
|
|
// 0x1e22790
|
|
int32_t v8; // 0x1e227d6
|
|
if (v6 > g136) {
|
|
v8 = v5;
|
|
} else {
|
|
// 0x1e22798
|
|
*(int32_t *)(v5 - 4) = 9;
|
|
function_1e22490((int32_t)&g708);
|
|
int32_t v9 = g8 / 16; // 0x1e227a4
|
|
g2 = v9;
|
|
*(int32_t *)g9 = v9;
|
|
int32_t v10 = function_1e22b70((int32_t)&g708); // 0x1e227a8
|
|
g2 = v10;
|
|
g3 = v10;
|
|
*(int32_t *)g9 = 9;
|
|
g2 = function_1e22500((int32_t)&g708);
|
|
int32_t v11 = g3; // 0x1e227bc
|
|
if (v11 != 0) {
|
|
// 0x1e227d2
|
|
g2 = 0;
|
|
int32_t v12 = g8 / 4; // 0x1e227c6
|
|
g5 = v12;
|
|
__asm_rep_stosd_memset((char *)v11, 0, v12);
|
|
int32_t v13 = (g1 ? -4 : 4) * v12 + v11; // 0x1e227c9
|
|
int32_t v14 = g8 & 3; // 0x1e227cd
|
|
g5 = v14;
|
|
__asm_rep_stosb_memset((char *)v13, 0, v14);
|
|
g6 = (g1 ? -1 : 1) * v14 + v13;
|
|
g5 = 0;
|
|
result = g3;
|
|
if (result != 0) {
|
|
// break -> 0x1e22804
|
|
break;
|
|
}
|
|
// 0x1e227d2
|
|
v8 = g9;
|
|
} else {
|
|
v8 = g9 + 4;
|
|
}
|
|
}
|
|
// 0x1e227e3
|
|
*(int32_t *)(v8 - 4) = g8;
|
|
g2 = g676;
|
|
*(int32_t *)(v8 - 8) = 8;
|
|
*(int32_t *)(v8 - 12) = g2;
|
|
int32_t * v15 = HeapAlloc(&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e227df
|
|
v7 = (int32_t)v15;
|
|
g2 = v7;
|
|
g3 = v7;
|
|
if (v15 != NULL) {
|
|
result = v7;
|
|
// break -> 0x1e22804
|
|
break;
|
|
}
|
|
} else {
|
|
v7 = 0;
|
|
}
|
|
// 0x1e227e7
|
|
if (g147 == 0) {
|
|
result = v7;
|
|
// break -> 0x1e22804
|
|
break;
|
|
}
|
|
// 0x1e227f0
|
|
*(int32_t *)(g9 - 4) = g8;
|
|
int32_t v16 = function_1e232d0((int32_t)&g708); // 0x1e227f1
|
|
g2 = v16;
|
|
int32_t v17 = g9 + 4; // 0x1e227f6
|
|
if (v16 == 0) {
|
|
// 0x1e227fd
|
|
g2 = 0;
|
|
g3 = *(int32_t *)v17;
|
|
g6 = *(int32_t *)(g9 + 8);
|
|
g8 = *(int32_t *)(g9 + 12);
|
|
g4 = *(int32_t *)(g9 + 16);
|
|
return 0;
|
|
}
|
|
// 0x1e227f0
|
|
v5 = v17;
|
|
v6 = g8;
|
|
}
|
|
// 0x1e22804
|
|
g2 = result;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
g8 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 12);
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e22810 - 0x1e22980
|
|
int32_t function_1e22810(void) {
|
|
int32_t v1 = g3; // bp-16
|
|
int32_t v2; // 0x1e22822
|
|
int32_t v3; // 0x1e22896
|
|
if (g133 != 0) {
|
|
// 0x1e22889
|
|
g2 = g676;
|
|
int32_t * v4 = HeapAlloc((int32_t *)g676, 0, 2068); // 0x1e22896
|
|
v3 = (int32_t)v4;
|
|
g2 = v3;
|
|
if (v4 == NULL) {
|
|
// 0x1e228a6
|
|
g2 = 0;
|
|
g3 = g676;
|
|
g6 = 0;
|
|
g8 = 2068;
|
|
g4 = v1;
|
|
return 0;
|
|
}
|
|
// 0x1e22889
|
|
v2 = g9;
|
|
} else {
|
|
// 0x1e2281d
|
|
v3 = &g131;
|
|
v2 = &v1;
|
|
}
|
|
// 0x1e22822
|
|
*(int32_t *)(v2 - 4) = 4;
|
|
*(int32_t *)(v2 - 8) = 0x2000;
|
|
*(int32_t *)(v2 - 12) = 0x400000;
|
|
*(int32_t *)(v2 - 16) = 0;
|
|
int32_t * memory = VirtualAlloc(&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e22836
|
|
int32_t v5 = (int32_t)memory; // 0x1e22836
|
|
g2 = v5;
|
|
if (memory != NULL) {
|
|
// 0x1e22842
|
|
*(int32_t *)(g9 - 4) = 4;
|
|
*(int32_t *)(g9 - 8) = 0x1000;
|
|
*(int32_t *)(g9 - 12) = 0x10000;
|
|
*(int32_t *)(g9 - 16) = v5;
|
|
int32_t * memory2 = VirtualAlloc(&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e2284f
|
|
g2 = (int32_t)memory2;
|
|
if (memory2 != NULL) {
|
|
// 0x1e22859
|
|
if (v3 != (int32_t)&g131) {
|
|
// 0x1e228ad
|
|
*(int32_t *)v3 = (int32_t)&g131;
|
|
int32_t v6 = *(int32_t *)&g132; // 0x1e228b3
|
|
g2 = v6;
|
|
*(int32_t *)(v3 + 4) = v6;
|
|
*(int32_t *)&g132 = v3;
|
|
int32_t v7 = *(int32_t *)(v3 + 4); // 0x1e228c1
|
|
g2 = v7;
|
|
*(int32_t *)v7 = v3;
|
|
} else {
|
|
// 0x1e22861
|
|
if (g131 == 0) {
|
|
// 0x1e2286a
|
|
g131 = &g131;
|
|
}
|
|
// 0x1e22874
|
|
if (*(int32_t *)&g132 == 0) {
|
|
// 0x1e2287d
|
|
*(int32_t *)&g132 = (int32_t)&g131;
|
|
}
|
|
}
|
|
int32_t v8 = 0; // ebp
|
|
g2 = 240;
|
|
g5 = 255;
|
|
g7 = 241;
|
|
*(int32_t *)(v3 + 2064) = v5;
|
|
*(int32_t *)(v3 + 8) = v8;
|
|
*(int32_t *)(v3 + 12) = 16;
|
|
int32_t v9 = v8; // 0x1e228e7
|
|
while (true) {
|
|
int32_t v10 = v3 + v9; // 0x1e228e7
|
|
if (v9 < 16) {
|
|
// 0x1e228ef
|
|
*(char *)(v10 + 16) = (char)g2;
|
|
} else {
|
|
// 0x1e228f4
|
|
*(char *)(v10 + 16) = (char)g5;
|
|
}
|
|
// 0x1e228f7
|
|
v8++;
|
|
*(char *)(v10 + 1040) = (char)g7;
|
|
if (v8 >= 1024) {
|
|
// break -> 0x1e22906
|
|
break;
|
|
}
|
|
v9 = v8;
|
|
}
|
|
// 0x1e22906
|
|
g2 = 0;
|
|
g5 = 0x4000;
|
|
__asm_rep_stosd_memset((char *)v5, 0, 0x4000);
|
|
g5 = 0;
|
|
int32_t v11 = *(int32_t *)(v3 + 2064) + 0x10000; // 0x1e22917
|
|
g2 = v11;
|
|
int32_t v12 = v5; // 0x1e2291c
|
|
int32_t result; // 0x1e2294d
|
|
if (v11 > v12) {
|
|
// 0x1e22920
|
|
g7 = 240;
|
|
g5 = 255;
|
|
int32_t v13 = v12 + 8; // 0x1e2292a
|
|
g2 = v13;
|
|
*(int32_t *)v12 = v13;
|
|
*(int32_t *)(v5 + 4) = g7;
|
|
*(char *)(v5 + 248) = (char)g5;
|
|
int32_t v14 = v5 + 0x1000; // 0x1e22938
|
|
v5 = v14;
|
|
int32_t v15 = *(int32_t *)(v3 + 2064) + 0x10000; // 0x1e22944
|
|
g2 = v15;
|
|
result = v3;
|
|
while (v15 > v14) {
|
|
// 0x1e2292a
|
|
v12 = v14;
|
|
v13 = v12 + 8;
|
|
g2 = v13;
|
|
*(int32_t *)v12 = v13;
|
|
*(int32_t *)(v5 + 4) = g7;
|
|
*(char *)(v5 + 248) = (char)g5;
|
|
v14 = v5 + 0x1000;
|
|
v5 = v14;
|
|
v15 = *(int32_t *)(v3 + 2064) + 0x10000;
|
|
g2 = v15;
|
|
result = v3;
|
|
}
|
|
} else {
|
|
result = v3;
|
|
}
|
|
// 0x1e2294d
|
|
g2 = result;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
g8 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 12);
|
|
return result;
|
|
}
|
|
// 0x1e22954
|
|
*(int32_t *)(g9 - 4) = 0x8000;
|
|
*(int32_t *)(g9 - 8) = 0;
|
|
*(int32_t *)(g9 - 12) = v5;
|
|
g2 = VirtualFree(&g708, (int32_t)&g708, (int32_t)&g708);
|
|
}
|
|
// 0x1e22962
|
|
if (v3 != (int32_t)&g131) {
|
|
// 0x1e2296a
|
|
*(int32_t *)(g9 - 4) = v3;
|
|
g2 = g676;
|
|
*(int32_t *)(g9 - 8) = 0;
|
|
*(int32_t *)(g9 - 12) = g2;
|
|
g2 = HeapFree(&g708, (int32_t)&g708, &g708);
|
|
}
|
|
// 0x1e22979
|
|
g2 = 0;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
g8 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 12);
|
|
return 0;
|
|
}
|
|
|
|
// Address range: 0x1e22980 - 0x1e229de
|
|
int32_t function_1e22980(int32_t a1) {
|
|
int32_t lpAddress = *(int32_t *)(a1 + 2064); // 0x1e2298c
|
|
g2 = lpAddress;
|
|
int32_t v1 = VirtualFree((int32_t *)lpAddress, 0, 0x8000); // 0x1e22993
|
|
g2 = v1;
|
|
int32_t result; // 0x1e229a1
|
|
if (*(int32_t *)&g134 == a1) {
|
|
// 0x1e229a1
|
|
result = *(int32_t *)(a1 + 4);
|
|
g2 = result;
|
|
*(int32_t *)&g134 = result;
|
|
} else {
|
|
result = v1;
|
|
}
|
|
if (a1 == (int32_t)&g131) {
|
|
// 0x1e229d2
|
|
g133 = 0;
|
|
g8 = lpAddress;
|
|
return result;
|
|
}
|
|
int32_t * lpMem = (int32_t *)a1; // 0x1e229b1
|
|
int32_t v2 = *lpMem; // 0x1e229b1
|
|
g2 = v2;
|
|
int32_t v3 = *(int32_t *)(a1 + 4); // 0x1e229b3
|
|
g5 = v3;
|
|
*(int32_t *)v3 = v2;
|
|
int32_t v4 = *(int32_t *)a1; // 0x1e229bb
|
|
g2 = v4;
|
|
int32_t v5 = *(int32_t *)(a1 + 4); // 0x1e229bd
|
|
g7 = v5;
|
|
*(int32_t *)(v4 + 4) = v5;
|
|
g5 = g676;
|
|
int32_t result2 = HeapFree((int32_t *)g676, 0, lpMem); // 0x1e229ca
|
|
g2 = result2;
|
|
g8 = g676;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e229e0 - 0x1e22ab7
|
|
int32_t function_1e229e0(int32_t a1) {
|
|
int32_t v1 = *(int32_t *)&g132; // 0x1e229e6
|
|
g8 = v1;
|
|
int32_t v2 = g3; // bp-20
|
|
int32_t v3 = &v2; // 0x1e22a05
|
|
int32_t v4; // ebp
|
|
int32_t v5; // ebx
|
|
int32_t v6; // edi
|
|
int32_t v7; // 0x1e22a12
|
|
int32_t v8; // 0x1e22aaf
|
|
while (true) {
|
|
// 0x1e229ed
|
|
int32_t v9; // 0x1e22a9c
|
|
if (*(int32_t *)(v1 + 2064) != 0) {
|
|
// 0x1e229fa
|
|
v4 = 1023;
|
|
v5 = v1 + 1039;
|
|
*(int32_t *)(v3 + 16) = 0;
|
|
v6 = 0x3ff000;
|
|
v7 = v5;
|
|
while (true) {
|
|
lab_0x1e22a12:
|
|
// 0x1e22a12
|
|
if (*(char *)v7 != -16) {
|
|
goto lab_0x1e22a56;
|
|
} else {
|
|
// 0x1e22a17
|
|
*(int32_t *)(g9 - 4) = 0x4000;
|
|
g2 = *(int32_t *)(g8 + 2064);
|
|
*(int32_t *)(g9 - 8) = 0x1000;
|
|
int32_t v10 = v6 + g2; // 0x1e22a27
|
|
g2 = v10;
|
|
*(int32_t *)(g9 - 12) = v10;
|
|
bool v11 = VirtualFree(&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e22a2a
|
|
g2 = v11;
|
|
if (!v11) {
|
|
goto lab_0x1e22a56;
|
|
} else {
|
|
// 0x1e22a34
|
|
*(char *)v5 = -1;
|
|
g135--;
|
|
int32_t * v12 = (int32_t *)(g8 + 12); // 0x1e22a3d
|
|
int32_t v13 = *v12; // 0x1e22a3d
|
|
g2 = v13;
|
|
if (v13 == -1) {
|
|
// 0x1e22a49
|
|
*v12 = v4;
|
|
goto lab_0x1e22a4c;
|
|
} else {
|
|
if (v4 < v13) {
|
|
// 0x1e22a49
|
|
*v12 = v4;
|
|
goto lab_0x1e22a4c;
|
|
} else {
|
|
goto lab_0x1e22a4c;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lab_0x1e22a62_2:;
|
|
int32_t v14 = g8; // 0x1e22a67
|
|
g2 = v14;
|
|
int32_t v15 = *(int32_t *)(v14 + 4); // 0x1e22a69
|
|
g8 = v15;
|
|
if (*(int32_t *)(g9 + 16) != 0) {
|
|
// 0x1e22a6e
|
|
if (*(char *)(v14 + 16) == -1) {
|
|
// 0x1e22a74
|
|
g7 = 1;
|
|
int32_t v16 = v14 + 17; // 0x1e22a79
|
|
g5 = v16;
|
|
int32_t v17 = 1; // 0x1e22a81
|
|
int32_t v18; // 0x1e22a8b
|
|
while (true) {
|
|
// 0x1e22a7c
|
|
if (*(char *)v16 != -1) {
|
|
v18 = v17;
|
|
// break -> 0x1e22a8b
|
|
break;
|
|
}
|
|
int32_t v19 = v17 + 1; // 0x1e22a81
|
|
g7 = v19;
|
|
int32_t v20 = v16 + 1; // 0x1e22a82
|
|
g5 = v20;
|
|
if (v19 >= 1024) {
|
|
v18 = 1024;
|
|
// break -> 0x1e22a8b
|
|
break;
|
|
}
|
|
v17 = v19;
|
|
v16 = v20;
|
|
}
|
|
if (v18 == 1024) {
|
|
// 0x1e22a93
|
|
*(int32_t *)(g9 - 4) = v14;
|
|
g2 = function_1e22980((int32_t)&g708);
|
|
v8 = g9 + 4;
|
|
v9 = g8;
|
|
} else {
|
|
v8 = g9;
|
|
v9 = v15;
|
|
}
|
|
} else {
|
|
v8 = g9;
|
|
v9 = v15;
|
|
}
|
|
} else {
|
|
v8 = g9;
|
|
v9 = v15;
|
|
}
|
|
} else {
|
|
v8 = v3;
|
|
v9 = v1;
|
|
}
|
|
// 0x1e22a9c
|
|
if (v9 == *(int32_t *)&g132) {
|
|
// break -> 0x1e22aaf
|
|
break;
|
|
}
|
|
int32_t v21 = *(int32_t *)(v8 + 24); // 0x1e22aa4
|
|
if (v21 >= 0 != v21 != 0) {
|
|
// break -> 0x1e22aaf
|
|
break;
|
|
}
|
|
v3 = v8;
|
|
v1 = v9;
|
|
}
|
|
// 0x1e22aaf
|
|
g3 = *(int32_t *)v8;
|
|
g6 = *(int32_t *)(v8 + 4);
|
|
g8 = *(int32_t *)(v8 + 8);
|
|
g4 = *(int32_t *)(v8 + 12);
|
|
return g2;
|
|
lab_0x1e22a56:;
|
|
int32_t v22 = v6 - 0x1000; // 0x1e22a56
|
|
v6 = v22;
|
|
v4--;
|
|
int32_t v23 = v5 - 1; // 0x1e22a5d
|
|
v5 = v23;
|
|
if (v22 < 0) {
|
|
// break -> 0x1e22a62
|
|
goto lab_0x1e22a62_2;
|
|
}
|
|
v7 = v23;
|
|
goto lab_0x1e22a12;
|
|
lab_0x1e22a4c:;
|
|
int32_t * v24 = (int32_t *)(g9 + 16); // 0x1e22a4c
|
|
*v24 = *v24 + 1;
|
|
int32_t * v25 = (int32_t *)(g9 + 24); // 0x1e22a50
|
|
int32_t v26 = *v25 - 1; // 0x1e22a50
|
|
*v25 = v26;
|
|
if (v26 == 0) {
|
|
// break -> 0x1e22a62
|
|
goto lab_0x1e22a62_2;
|
|
}
|
|
goto lab_0x1e22a56;
|
|
}
|
|
|
|
// Address range: 0x1e22ac0 - 0x1e22b11
|
|
int32_t function_1e22ac0(uint32_t a1, int32_t * a2, int32_t * a3) {
|
|
// 0x1e22ac0
|
|
g5 = &g131;
|
|
g7 = a1;
|
|
int32_t v1 = &g131; // 0x1e22ae0
|
|
while (true) {
|
|
uint32_t v2 = *(int32_t *)(v1 + 2064); // 0x1e22ac9
|
|
g2 = v2;
|
|
if (v2 != 0 == v2 < a1) {
|
|
int32_t v3 = v2 + 0x400000; // 0x1e22ad7
|
|
g2 = v3;
|
|
if (v3 > a1) {
|
|
// break -> 0x1e22aed
|
|
break;
|
|
}
|
|
}
|
|
int32_t v4 = *(int32_t *)v1; // 0x1e22ae0
|
|
g5 = v4;
|
|
if (v4 == (int32_t)&g131) {
|
|
// 0x1e22aea
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
v1 = v4;
|
|
}
|
|
// 0x1e22aed
|
|
*a2 = v1;
|
|
int32_t v5 = g7 & -0x1000; // 0x1e22af5
|
|
g5 = v5;
|
|
*a3 = v5;
|
|
int32_t v6 = (g7 - v5 - 256) / 16; // 0x1e22b09
|
|
g7 = v6;
|
|
int32_t result = v6 + 8 + g5; // 0x1e22b0c
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e22b20 - 0x1e22b66
|
|
int32_t function_1e22b20(int32_t a1, int32_t a2, int32_t a3) {
|
|
// 0x1e22b20
|
|
g5 = a2;
|
|
g2 = a1;
|
|
int32_t v1 = (a2 - *(int32_t *)(a1 + 2064)) / 0x1000 + a1; // 0x1e22b31
|
|
g2 = v1;
|
|
g5 = a3;
|
|
unsigned char v2 = *(char *)a3; // 0x1e22b37
|
|
g7 = g7 & -256 | (int32_t)v2;
|
|
char * v3 = (char *)(v1 + 16); // 0x1e22b39
|
|
*v3 = *v3 + v2;
|
|
*(char *)g5 = 0;
|
|
*(char *)(g2 + 1040) = -15;
|
|
int32_t result = g2; // 0x1e22b46
|
|
if (*(char *)(result + 16) != -16) {
|
|
// 0x1e22b65
|
|
return result;
|
|
}
|
|
int32_t v4 = g135; // 0x1e22b4c
|
|
g135 = v4 + 1;
|
|
int32_t result2; // 0x1e22b5d
|
|
if (v4 == 31) {
|
|
// 0x1e22b5b
|
|
result2 = function_1e229e0(16);
|
|
g2 = result2;
|
|
} else {
|
|
result2 = result;
|
|
}
|
|
// 0x1e22b65
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e22b70 - 0x1e22dea
|
|
int32_t function_1e22b70(int32_t a1) {
|
|
int32_t v1 = *(int32_t *)&g134; // 0x1e22b73
|
|
g8 = v1;
|
|
g4 = a1;
|
|
while (true) {
|
|
// 0x1e22b7e
|
|
int32_t v2; // 0x1e22c3f
|
|
if (*(int32_t *)(v1 + 2064) != 0) {
|
|
int32_t v3 = *(int32_t *)(v1 + 8); // 0x1e22b8b
|
|
g6 = v3;
|
|
int32_t v4; // 0x1e22bee
|
|
if (v3 < 1024) {
|
|
int32_t v5 = 0x1000 * v3; // 0x1e22b98
|
|
g3 = v5;
|
|
int32_t v6 = v1; // 0x1e22bae
|
|
while (true) {
|
|
unsigned char v7 = *(char *)(v6 + 16 + v3); // 0x1e22b9b
|
|
int32_t v8 = v7; // 0x1e22b9b
|
|
g5 = g5 & -256 | v8;
|
|
g2 = v8;
|
|
uint32_t v9 = g4; // 0x1e22ba3
|
|
int32_t v10; // 0x1e22bdb
|
|
int32_t v11; // 0x1e22be1
|
|
int32_t v12;
|
|
if (v9 <= v8) {
|
|
if (v7 != -1) {
|
|
// 0x1e22bac
|
|
g5 = 0;
|
|
int32_t v13 = (int32_t)*(char *)(v6 + 1040 + v3); // 0x1e22bae
|
|
g5 = v13;
|
|
if (v13 > v9) {
|
|
// 0x1e22bb9
|
|
*(int32_t *)(g9 - 4) = v9;
|
|
*(int32_t *)(g9 - 8) = g2;
|
|
int32_t v14 = g3 + *(int32_t *)(g8 + 2064); // 0x1e22bc1
|
|
g2 = v14;
|
|
*(int32_t *)(g9 - 12) = v14;
|
|
int32_t result = function_1e22df0((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e22bc4
|
|
g2 = result;
|
|
if (result != 0) {
|
|
// 0x1e22cb0
|
|
g3 = *(int32_t *)(g9 + 12);
|
|
*(int32_t *)&g134 = g8;
|
|
char * v15 = (char *)(g8 + 16 + g6); // 0x1e22cb7
|
|
*v15 = *v15 - (char)g4;
|
|
*(int32_t *)(g8 + 8) = g6;
|
|
g6 = *(int32_t *)g9;
|
|
g8 = *(int32_t *)(g9 + 4);
|
|
g4 = *(int32_t *)(g9 + 8);
|
|
return result;
|
|
}
|
|
// 0x1e22bd4
|
|
*(char *)(g6 + 1040 + g8) = (char)g4;
|
|
v12 = g8;
|
|
v11 = g6;
|
|
v10 = g3;
|
|
} else {
|
|
v12 = v6;
|
|
v11 = v3;
|
|
v10 = v5;
|
|
}
|
|
} else {
|
|
v12 = v6;
|
|
v11 = v3;
|
|
v10 = v5;
|
|
}
|
|
} else {
|
|
v12 = v6;
|
|
v11 = v3;
|
|
v10 = v5;
|
|
}
|
|
int32_t v16 = v10 + 0x1000; // 0x1e22bdb
|
|
g3 = v16;
|
|
int32_t v17 = v11 + 1; // 0x1e22be1
|
|
g6 = v17;
|
|
if (v16 >= 0x400000) {
|
|
v4 = v12;
|
|
// break -> 0x1e22bea
|
|
break;
|
|
}
|
|
v5 = v16;
|
|
v6 = v12;
|
|
v3 = v17;
|
|
}
|
|
} else {
|
|
v4 = v1;
|
|
}
|
|
// 0x1e22bea
|
|
g3 = 0;
|
|
g6 = 0;
|
|
if (*(int32_t *)(v4 + 8) > 0) {
|
|
int32_t v18 = 0; // 0x1e22c3310
|
|
int32_t v19 = v4; // 0x1e22c06
|
|
int32_t v20 = 0; // 0x1e22c06
|
|
while (true) {
|
|
unsigned char v21 = *(char *)(v19 + 16 + v20); // 0x1e22bf3
|
|
int32_t v22 = v21; // 0x1e22bf3
|
|
g5 = g5 & -256 | v22;
|
|
g2 = v22;
|
|
uint32_t v23 = g4; // 0x1e22bfb
|
|
int32_t v24; // 0x1e22c33
|
|
int32_t v25; // 0x1e22c39
|
|
int32_t v26; // 0x1e22c3a
|
|
if (v23 <= v22) {
|
|
if (v21 != -1) {
|
|
// 0x1e22c04
|
|
g5 = 0;
|
|
int32_t v27 = (int32_t)*(char *)(v19 + 1040 + v20); // 0x1e22c06
|
|
g5 = v27;
|
|
if (v27 > v23) {
|
|
// 0x1e22c11
|
|
*(int32_t *)(g9 - 4) = v23;
|
|
*(int32_t *)(g9 - 8) = g2;
|
|
int32_t v28 = g3 + *(int32_t *)(g8 + 2064); // 0x1e22c19
|
|
g2 = v28;
|
|
*(int32_t *)(g9 - 12) = v28;
|
|
int32_t result2 = function_1e22df0((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e22c1c
|
|
g2 = result2;
|
|
if (result2 != 0) {
|
|
// 0x1e22cc2
|
|
g3 = *(int32_t *)(g9 + 12);
|
|
*(int32_t *)&g134 = g8;
|
|
char * v29 = (char *)(g8 + 16 + g6); // 0x1e22cc9
|
|
*v29 = *v29 - (char)g4;
|
|
*(int32_t *)(g8 + 8) = g6;
|
|
g6 = *(int32_t *)g9;
|
|
g8 = *(int32_t *)(g9 + 4);
|
|
g4 = *(int32_t *)(g9 + 8);
|
|
return result2;
|
|
}
|
|
// 0x1e22c2c
|
|
*(char *)(g6 + 1040 + g8) = (char)g4;
|
|
v26 = g8;
|
|
v25 = g6;
|
|
v24 = g3;
|
|
} else {
|
|
v26 = v19;
|
|
v25 = v20;
|
|
v24 = v18;
|
|
}
|
|
} else {
|
|
v26 = v19;
|
|
v25 = v20;
|
|
v24 = v18;
|
|
}
|
|
} else {
|
|
v26 = v19;
|
|
v25 = v20;
|
|
v24 = v18;
|
|
}
|
|
int32_t v30 = v24 + 0x1000; // 0x1e22c33
|
|
g3 = v30;
|
|
int32_t v31 = v25 + 1; // 0x1e22c39
|
|
g6 = v31;
|
|
if (*(int32_t *)(v26 + 8) <= v31) {
|
|
v2 = v26;
|
|
// break -> 0x1e22c3f
|
|
break;
|
|
}
|
|
v18 = v30;
|
|
v19 = v26;
|
|
v20 = v31;
|
|
}
|
|
} else {
|
|
v2 = v4;
|
|
}
|
|
} else {
|
|
v2 = v1;
|
|
}
|
|
int32_t v32 = *(int32_t *)v2; // 0x1e22c3f
|
|
g8 = v32;
|
|
if (v32 == *(int32_t *)&g134) {
|
|
// break -> 0x1e22c4d
|
|
break;
|
|
}
|
|
v1 = v32;
|
|
}
|
|
int32_t v33 = &g131; // esi
|
|
g2 = 0;
|
|
g5 = -1;
|
|
int32_t v34 = &g131; // 0x1e22c66
|
|
int32_t v35; // 0x1e22cd9
|
|
int32_t v36; // 0x1e22c61
|
|
while (true) {
|
|
// 0x1e22c59
|
|
if (*(int32_t *)(v34 + 2064) != 0) {
|
|
// 0x1e22c61
|
|
v36 = *(int32_t *)(v34 + 12);
|
|
if (v36 != -1) {
|
|
// 0x1e22cd4
|
|
g7 = v36;
|
|
v35 = v36 + 16;
|
|
if (v35 < 1024) {
|
|
goto lab_0x1e22ce9;
|
|
} else {
|
|
v35 = 1024;
|
|
goto lab_0x1e22ce9;
|
|
}
|
|
}
|
|
}
|
|
int32_t v37 = *(int32_t *)v34; // 0x1e22c66
|
|
v33 = v37;
|
|
if (v37 == (int32_t)&g131) {
|
|
// break -> 0x1e22c70
|
|
break;
|
|
}
|
|
v34 = v37;
|
|
}
|
|
int32_t v38 = function_1e22810(); // 0x1e22c70
|
|
g2 = v38;
|
|
if (v38 == 0) {
|
|
// 0x1e22de3
|
|
g2 = 0;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
g8 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 12);
|
|
return 0;
|
|
}
|
|
int32_t * v39 = (int32_t *)(v38 + 2064); // 0x1e22c7d
|
|
int32_t v40 = *v39; // 0x1e22c7d
|
|
g7 = v40;
|
|
g5 = g4 + v40;
|
|
*(char *)(v40 + 8) = (char)g4;
|
|
*(int32_t *)&g134 = v38;
|
|
*(int32_t *)g7 = g5 + 8;
|
|
int32_t v41 = 240 - g4; // 0x1e22c98
|
|
g5 = v41;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
*(int32_t *)(g7 + 4) = v41;
|
|
g8 = *(int32_t *)g9;
|
|
char * v42 = (char *)(v38 + 16); // 0x1e22ca0
|
|
*v42 = *v42 - (char)g4;
|
|
int32_t v43 = *v39; // 0x1e22ca3
|
|
g2 = v43;
|
|
g4 = *(int32_t *)g9;
|
|
int32_t result3 = v43 + 256; // 0x1e22caa
|
|
g2 = result3;
|
|
return result3;
|
|
lab_0x1e22ce9:
|
|
// 0x1e22ce9
|
|
g5 = v35;
|
|
int32_t v44 = v36 + 1; // 0x1e22ce9
|
|
int32_t v45 = v44; // edi
|
|
if (v35 > v44) {
|
|
// 0x1e22cee
|
|
g2 = 255;
|
|
goto lab_0x1e22cf3;
|
|
} else {
|
|
goto lab_0x1e22cfe;
|
|
}
|
|
lab_0x1e22cfe:
|
|
// 0x1e22cfe
|
|
*(int32_t *)(g9 - 4) = 4;
|
|
int32_t v46 = 0x1000 * v36; // ebp
|
|
*(int32_t *)(g9 - 8) = 0x1000;
|
|
int32_t v47 = 0x1000 * (v45 - g7); // 0x1e22d0e
|
|
g2 = v47;
|
|
*(int32_t *)(g9 - 12) = v47;
|
|
int32_t v48 = v46 + *(int32_t *)(v33 + 2064); // 0x1e22d18
|
|
g2 = v48;
|
|
*(int32_t *)(g9 - 16) = v48;
|
|
int32_t * memory = VirtualAlloc(&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e22d1b
|
|
int32_t v49 = (int32_t)memory; // 0x1e22d1b
|
|
g2 = v49;
|
|
int32_t * v50 = (int32_t *)(v33 + 2064); // 0x1e22d21
|
|
if (v49 != *v50 + v46) {
|
|
// 0x1e22ddc
|
|
g2 = 0;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
g8 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 12);
|
|
return 0;
|
|
}
|
|
int32_t v51 = *(int32_t *)(v33 + 12); // 0x1e22d2f
|
|
int32_t v52 = *v50 + 0x1000 * v51; // 0x1e22d37
|
|
int32_t v53 = v45; // 0x1e22d3d
|
|
int32_t v54; // 0x1e22d77
|
|
int32_t v55; // 0x1e22d9c
|
|
if (v51 < v53) {
|
|
// 0x1e22d41
|
|
g2 = 240;
|
|
goto lab_0x1e22d46;
|
|
} else {
|
|
v54 = v53;
|
|
v55 = v33;
|
|
goto lab_0x1e22d71;
|
|
}
|
|
lab_0x1e22cf3:
|
|
// 0x1e22cf3
|
|
if (*(char *)(v34 + 16 + v44) != -1) {
|
|
goto lab_0x1e22cfe;
|
|
} else {
|
|
int32_t v56 = v44 + 1; // 0x1e22cf9
|
|
v45 = v56;
|
|
if (v35 > v56) {
|
|
v44 = v56;
|
|
goto lab_0x1e22cf3;
|
|
} else {
|
|
goto lab_0x1e22cfe;
|
|
}
|
|
}
|
|
lab_0x1e22d71:
|
|
// 0x1e22d71
|
|
*(int32_t *)&g134 = v55;
|
|
int32_t v57; // 0x1e22d8a
|
|
int32_t v58; // 0x1e22d96
|
|
if (v54 < 1024) {
|
|
// 0x1e22d7f
|
|
g2 = 255;
|
|
v57 = v54;
|
|
goto lab_0x1e22d84;
|
|
} else {
|
|
v58 = v54;
|
|
goto lab_0x1e22d93;
|
|
}
|
|
lab_0x1e22d46:
|
|
// 0x1e22d46
|
|
v46 = v51 + 1;
|
|
*(int32_t *)v52 = v52 + 8;
|
|
int32_t v59 = v52; // 0x1e22d4c
|
|
v52 = v59 + 0x1000;
|
|
g5 = v46 - 1 + v33;
|
|
*(int32_t *)(v59 + 4) = g2;
|
|
*(char *)(v52 - 3848) = -1;
|
|
*(char *)(g5 + 16) = (char)g2;
|
|
*(char *)(g5 + 1040) = -15;
|
|
if (v46 < v45) {
|
|
// 0x1e22d46
|
|
v51 = v46;
|
|
goto lab_0x1e22d46;
|
|
} else {
|
|
// 0x1e22d71
|
|
v54 = v45;
|
|
v55 = v33;
|
|
goto lab_0x1e22d71;
|
|
}
|
|
lab_0x1e22d93:;
|
|
int32_t * v60 = (int32_t *)(v55 + 12); // 0x1e22d93
|
|
g5 = *v60;
|
|
*v60 = -1;
|
|
if (v58 < 1024) {
|
|
// 0x1e22da5
|
|
*(int32_t *)(v33 + 12) = v45;
|
|
goto lab_0x1e22da8;
|
|
} else {
|
|
goto lab_0x1e22da8;
|
|
}
|
|
lab_0x1e22d84:
|
|
// 0x1e22d84
|
|
if (*(char *)(v55 + 16 + v57) == -1) {
|
|
v58 = v57;
|
|
goto lab_0x1e22d93;
|
|
} else {
|
|
int32_t v61 = v57 + 1; // 0x1e22d8a
|
|
v45 = v61;
|
|
if (v61 < 1024) {
|
|
v57 = v61;
|
|
goto lab_0x1e22d84;
|
|
} else {
|
|
v58 = 1024;
|
|
goto lab_0x1e22d93;
|
|
}
|
|
}
|
|
lab_0x1e22da8:;
|
|
int32_t v62 = 0x1000 * g5; // 0x1e22db0
|
|
g7 = v62;
|
|
int32_t v63 = *(int32_t *)(v33 + 2064) + v62; // 0x1e22db3
|
|
g2 = v63;
|
|
*(char *)(v63 + 8) = (char)g4;
|
|
*(int32_t *)(v33 + 8) = g5;
|
|
char * v64 = (char *)(g5 + 16 + v33); // 0x1e22dbb
|
|
*v64 = *v64 - (char)g4;
|
|
int32_t v65 = g2; // 0x1e22dbf
|
|
int32_t v66 = g4 + 8 + v65; // 0x1e22dc2
|
|
g5 = v66;
|
|
g3 = *(int32_t *)g9;
|
|
g6 = *(int32_t *)(g9 + 4);
|
|
*(int32_t *)v65 = v66;
|
|
int32_t * v67 = (int32_t *)(g2 + 4); // 0x1e22dc9
|
|
*v67 = *v67 - g4;
|
|
int32_t v68 = *(int32_t *)(v33 + 2064); // 0x1e22dcc
|
|
g2 = v68;
|
|
g8 = *(int32_t *)g9;
|
|
g4 = *(int32_t *)(g9 + 4);
|
|
int32_t result4 = v68 + 256 + g7; // 0x1e22dd4
|
|
g2 = result4;
|
|
return result4;
|
|
}
|
|
|
|
// Address range: 0x1e22df0 - 0x1e22f6c
|
|
int32_t function_1e22df0(int32_t a1, int32_t a2, int32_t a3) {
|
|
// 0x1e22df0
|
|
g2 = a1;
|
|
g7 = a3;
|
|
int32_t v1 = g6; // bp-12
|
|
uint32_t v2 = *(int32_t *)(a1 + 4); // 0x1e22dfb
|
|
g5 = v2;
|
|
int32_t v3 = g3; // bp-16
|
|
int32_t v4 = *(int32_t *)a1; // 0x1e22dff
|
|
int32_t v5 = v4; // ebp
|
|
if (v2 >= a3) {
|
|
// 0x1e22e07
|
|
g5 = a1 + 248;
|
|
*(char *)v4 = (char)a3;
|
|
int32_t v6 = g2; // 0x1e22e1d
|
|
if (v4 + a3 >= g5) {
|
|
// 0x1e22e1d
|
|
*(int32_t *)(v6 + 4) = 0;
|
|
int32_t v7 = g2; // 0x1e22e24
|
|
int32_t v8 = v7 + 8; // 0x1e22e24
|
|
g5 = v8;
|
|
*(int32_t *)v7 = v8;
|
|
} else {
|
|
int32_t * v9 = (int32_t *)v6; // 0x1e22e16
|
|
*v9 = g7 + *v9;
|
|
int32_t * v10 = (int32_t *)(g2 + 4); // 0x1e22e18
|
|
*v10 = *v10 - g7;
|
|
}
|
|
int32_t v11 = g2; // 0x1e22e29
|
|
g3 = v3;
|
|
int32_t result = v11 + 128 + 16 * (v4 - v11); // 0x1e22e2f
|
|
g2 = result;
|
|
g6 = v1;
|
|
return result;
|
|
}
|
|
int32_t v12 = v4 + v2; // 0x1e22e3a
|
|
g5 = v12;
|
|
if (*(char *)v12 != 0) {
|
|
// 0x1e22e41
|
|
v5 = v12;
|
|
} else {
|
|
v12 = v4;
|
|
}
|
|
int32_t v13 = a1 + 248; // 0x1e22e46
|
|
g5 = v13;
|
|
uint32_t v14; // 0x1e22ee4
|
|
int32_t v15; // 0x1e22f4c
|
|
uint32_t v16; // 0x1e22f43
|
|
if (v12 + a3 < v13) {
|
|
int32_t v17 = a1; // 0x1e22ebe
|
|
int32_t v18 = a3; // 0x1e22eb5
|
|
int32_t v19 = v12; // 0x1e22e90
|
|
int32_t v20; // 0x1e22e92
|
|
int32_t v21; // 0x1e22e95
|
|
while (true) {
|
|
unsigned char v22 = *(char *)v19; // 0x1e22e58
|
|
int32_t v23 = v22; // 0x1e22e58
|
|
g5 = v23 | v13 & -256;
|
|
int32_t v24; // 0x1e22e90
|
|
if (v22 != 0) {
|
|
// 0x1e22e8c
|
|
v24 = v23 + v19;
|
|
v5 = v24;
|
|
v21 = v17;
|
|
v20 = v18;
|
|
} else {
|
|
int32_t v25 = v19 + 1; // 0x1e22e5f
|
|
g5 = v25;
|
|
int32_t v26; // 0x1e22e88
|
|
int32_t v27; // 0x1e22eb5
|
|
if (*(char *)v25 == 0) {
|
|
int32_t v28 = 1; // 0x1e22e6d
|
|
int32_t v29 = v25; // 0x1e22e6c
|
|
while (true) {
|
|
int32_t v30 = v29 + 1; // 0x1e22e6c
|
|
g5 = v30;
|
|
int32_t v31 = v28 + 1; // 0x1e22e6d
|
|
if (*(char *)v30 != 0) {
|
|
v26 = v30;
|
|
v27 = v31;
|
|
// break -> 0x1e22e73
|
|
break;
|
|
}
|
|
v28 = v31;
|
|
v29 = v30;
|
|
}
|
|
} else {
|
|
v26 = v25;
|
|
v27 = 1;
|
|
}
|
|
int32_t v32 = v27 - v18; // 0x1e22e73
|
|
if (v27 >= v18) {
|
|
int32_t v33 = v19 + v18; // 0x1e22ea8
|
|
int32_t v34 = v17 + 248; // 0x1e22eab
|
|
g5 = v34;
|
|
if (v33 >= v34) {
|
|
// 0x1e22ebe
|
|
*(int32_t *)(v17 + 4) = 0;
|
|
int32_t v35 = g2; // 0x1e22ec5
|
|
int32_t v36 = v35 + 8; // 0x1e22ec5
|
|
g5 = v36;
|
|
*(int32_t *)v35 = v36;
|
|
goto lab_0x1e22eca;
|
|
} else {
|
|
// 0x1e22eb5
|
|
*(int32_t *)v17 = v33;
|
|
*(int32_t *)(g2 + 4) = v32;
|
|
goto lab_0x1e22eca;
|
|
}
|
|
}
|
|
// 0x1e22e77
|
|
if (v4 != v19) {
|
|
int32_t v37 = a2 - v27; // 0x1e22e82
|
|
a2 = v37;
|
|
if (v18 > v37) {
|
|
// 0x1e22ea1
|
|
g2 = 0;
|
|
g3 = v3;
|
|
g6 = v1;
|
|
return 0;
|
|
}
|
|
// 0x1e22e88
|
|
v5 = v26;
|
|
v21 = v17;
|
|
v24 = v26;
|
|
v20 = v18;
|
|
} else {
|
|
// 0x1e22e7b
|
|
v5 = v26;
|
|
*(int32_t *)(v17 + 4) = v27;
|
|
v21 = g2;
|
|
v24 = v5;
|
|
v20 = g7;
|
|
}
|
|
}
|
|
int32_t v38 = v21 + 248; // 0x1e22e95
|
|
g5 = v38;
|
|
if (v20 + v24 >= v38) {
|
|
// break -> 0x1e22ede
|
|
break;
|
|
}
|
|
v17 = v21;
|
|
v18 = v20;
|
|
v13 = v38;
|
|
v19 = v24;
|
|
}
|
|
// 0x1e22ede
|
|
v16 = v20;
|
|
v14 = v4;
|
|
v15 = v21;
|
|
} else {
|
|
v16 = a3;
|
|
v14 = v4;
|
|
v15 = a1;
|
|
}
|
|
int32_t v39 = v15 + 8; // 0x1e22ede
|
|
v5 = v39;
|
|
if (v14 > v39) {
|
|
int32_t v40 = v15 + 247; // 0x1e22eeb
|
|
while (true) {
|
|
int32_t v41 = v39 + v16; // 0x1e22ee8
|
|
g5 = v40;
|
|
if (v41 > v40) {
|
|
// break -> 0x1e22f28
|
|
break;
|
|
}
|
|
unsigned char v42 = *(char *)v39; // 0x1e22ef5
|
|
int32_t v43 = v42; // 0x1e22ef5
|
|
g5 = v43 | v40 & -256;
|
|
int32_t v44;
|
|
if (v42 != 0) {
|
|
// 0x1e22f1e
|
|
v44 = v43 + v39;
|
|
} else {
|
|
int32_t v45 = v39 + 1; // 0x1e22efc
|
|
g5 = v45;
|
|
int32_t v46; // 0x1e22f1a
|
|
int32_t v47; // 0x1e22f43
|
|
if (*(char *)v45 == 0) {
|
|
int32_t v48 = 1; // 0x1e22f0a
|
|
int32_t v49 = v45; // 0x1e22f09
|
|
while (true) {
|
|
int32_t v50 = v49 + 1; // 0x1e22f09
|
|
g5 = v50;
|
|
int32_t v51 = v48 + 1; // 0x1e22f0a
|
|
if (*(char *)v50 != 0) {
|
|
v46 = v50;
|
|
v47 = v51;
|
|
// break -> 0x1e22f10
|
|
break;
|
|
}
|
|
v48 = v51;
|
|
v49 = v50;
|
|
}
|
|
} else {
|
|
v46 = v45;
|
|
v47 = 1;
|
|
}
|
|
int32_t v52 = v47 - v16; // 0x1e22f10
|
|
if (v47 >= v16) {
|
|
int32_t v53 = v15 + 248; // 0x1e22f39
|
|
g5 = v53;
|
|
if (v41 >= v53) {
|
|
// 0x1e22f4c
|
|
*(int32_t *)(v15 + 4) = 0;
|
|
int32_t v54 = g2; // 0x1e22f53
|
|
int32_t v55 = v54 + 8; // 0x1e22f53
|
|
g5 = v55;
|
|
*(int32_t *)v54 = v55;
|
|
goto lab_0x1e22f58;
|
|
} else {
|
|
// 0x1e22f43
|
|
*(int32_t *)v15 = v41;
|
|
*(int32_t *)(g2 + 4) = v52;
|
|
goto lab_0x1e22f58;
|
|
}
|
|
}
|
|
int32_t v56 = a2 - v47; // 0x1e22f14
|
|
a2 = v56;
|
|
if (v16 > v56) {
|
|
// 0x1e22f2f
|
|
g2 = 0;
|
|
g3 = v3;
|
|
g6 = v1;
|
|
return 0;
|
|
}
|
|
v44 = v46;
|
|
}
|
|
// 0x1e22f24
|
|
v5 = v44;
|
|
if (v14 <= v44) {
|
|
// break -> 0x1e22f28
|
|
break;
|
|
}
|
|
v39 = v44;
|
|
}
|
|
}
|
|
// 0x1e22f28
|
|
g2 = 0;
|
|
g3 = v3;
|
|
g6 = v1;
|
|
return 0;
|
|
lab_0x1e22eca:
|
|
// 0x1e22eca
|
|
*(char *)v5 = (char)g7;
|
|
int32_t v57 = g2; // 0x1e22ecd
|
|
int32_t result2 = v57 + 128 + 16 * (v5 - v57); // 0x1e22ed2
|
|
g2 = result2;
|
|
g3 = v3;
|
|
g6 = v1;
|
|
return result2;
|
|
lab_0x1e22f58:
|
|
// 0x1e22f58
|
|
*(char *)v5 = (char)g7;
|
|
int32_t v58 = g2; // 0x1e22f5b
|
|
int32_t result3 = v58 + 128 + 16 * (v5 - v58); // 0x1e22f60
|
|
g2 = result3;
|
|
g3 = v3;
|
|
g6 = v1;
|
|
return result3;
|
|
}
|
|
|
|
// Address range: 0x1e22f70 - 0x1e23038
|
|
int32_t function_1e22f70(int32_t a1, int32_t a2, int32_t a3, uint32_t a4) {
|
|
// 0x1e22f70
|
|
g2 = 0;
|
|
int32_t v1 = g8; // bp-8
|
|
int32_t v2 = g6; // bp-12
|
|
g5 = a4;
|
|
int32_t v3 = g3; // bp-16
|
|
char * v4 = (char *)a3; // 0x1e22f80
|
|
unsigned char v5 = *v4; // 0x1e22f80
|
|
uint32_t v6 = (int32_t)v5; // 0x1e22f80
|
|
g7 = v6;
|
|
if (v6 > a4) {
|
|
// 0x1e22f86
|
|
g2 = a1;
|
|
char v7 = a4; // 0x1e22f90
|
|
g7 = v5 - v7;
|
|
*v4 = v7;
|
|
int32_t v8 = g2; // 0x1e22f94
|
|
int32_t v9 = *(int32_t *)(v8 + 2064); // 0x1e22f94
|
|
g3 = v3;
|
|
char * v10 = (char *)(v8 + 16 + (a2 - v9) / 0x1000); // 0x1e22f9e
|
|
*v10 = (char)g7 + *v10;
|
|
g6 = v2;
|
|
int32_t v11 = g2; // 0x1e22fa3
|
|
*(char *)(v11 + 1040 + (a2 - *(int32_t *)(v11 + 2064)) / 0x1000) = -15;
|
|
g2 = 1;
|
|
g8 = v1;
|
|
return 1;
|
|
}
|
|
if (v6 >= a4) {
|
|
// 0x1e23033
|
|
return 0;
|
|
}
|
|
uint32_t v12 = a4 + a3; // 0x1e22fbe
|
|
int32_t v13 = v12; // edi
|
|
if (v12 > a2 + 248) {
|
|
// 0x1e23033
|
|
return 0;
|
|
}
|
|
int32_t v14 = v6 + a3; // 0x1e22fcf
|
|
int32_t v15;
|
|
if (v14 < v12) {
|
|
int32_t v16 = v14; // 0x1e22fdc
|
|
int32_t v17; // 0x1e22fe1
|
|
while (true) {
|
|
// 0x1e22fd6
|
|
if (*(char *)v16 != 0) {
|
|
v17 = v16;
|
|
// break -> 0x1e22fe1
|
|
break;
|
|
}
|
|
int32_t v18 = v16 + 1; // 0x1e22fdc
|
|
if (v18 >= v12) {
|
|
v17 = v18;
|
|
// break -> 0x1e22fe1
|
|
break;
|
|
}
|
|
v16 = v18;
|
|
}
|
|
v15 = v17;
|
|
} else {
|
|
v15 = v14;
|
|
}
|
|
if (v15 != v12) {
|
|
// 0x1e23033
|
|
return 0;
|
|
}
|
|
// 0x1e22fe5
|
|
*v4 = (char)a4;
|
|
int32_t * v19 = (int32_t *)a2; // 0x1e22fe7
|
|
uint32_t v20 = *v19; // 0x1e22fe7
|
|
g2 = v20;
|
|
if (a3 <= v20) {
|
|
if (v20 < v13) {
|
|
if (a2 + 248 > v13) {
|
|
// 0x1e22ffb
|
|
g2 = 0;
|
|
*v19 = v13;
|
|
int32_t v21 = g2; // 0x1e22fff
|
|
int32_t v22; // 0x1e2300a
|
|
if (*(char *)v13 == (char)v21) {
|
|
int32_t v23 = v21 + 1; // 0x1e23003
|
|
g2 = v23;
|
|
v22 = v23;
|
|
while (*(char *)(v13 + 1) == 0) {
|
|
// 0x1e23003
|
|
v13++;
|
|
v23++;
|
|
g2 = v23;
|
|
v22 = v23;
|
|
}
|
|
} else {
|
|
v22 = v21;
|
|
}
|
|
// 0x1e2300a
|
|
*(int32_t *)(a2 + 4) = v22;
|
|
} else {
|
|
// 0x1e2300f
|
|
*(int32_t *)(a2 + 4) = 0;
|
|
int32_t v24 = a2 + 8; // 0x1e23016
|
|
g2 = v24;
|
|
*(int32_t *)a2 = v24;
|
|
}
|
|
}
|
|
}
|
|
// 0x1e2301b
|
|
g2 = a1;
|
|
int32_t v25 = g7; // 0x1e2301f
|
|
unsigned char v26 = (char)v25 - (char)g5; // 0x1e2301f
|
|
g7 = (int32_t)v26 | v25 & -256;
|
|
char * v27 = (char *)(a1 + 16 + (a2 - *(int32_t *)(a1 + 2064)) / 0x1000); // 0x1e2302a
|
|
*v27 = *v27 + v26;
|
|
g2 = 1;
|
|
// 0x1e23033
|
|
g3 = v3;
|
|
g6 = v2;
|
|
g8 = v1;
|
|
return 1;
|
|
}
|
|
|
|
// Address range: 0x1e23040 - 0x1e230d2
|
|
int32_t function_1e23040(int32_t * a1) {
|
|
int32_t v1 = 0; // esi
|
|
if (g137 == 0) {
|
|
int32_t * moduleHandle = LoadLibraryA("user32.dll"); // 0x1e23052
|
|
g2 = (int32_t)moduleHandle;
|
|
if (moduleHandle == NULL) {
|
|
// 0x1e230cc
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
int32_t (*func)() = GetProcAddress(moduleHandle, "MessageBoxA"); // 0x1e2306a
|
|
int32_t v2 = (int32_t)func; // 0x1e2306a
|
|
g2 = v2;
|
|
g137 = v2;
|
|
if (func == NULL) {
|
|
// 0x1e230cc
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
int32_t func2 = (int32_t)GetProcAddress(moduleHandle, "GetActiveWindow"); // 0x1e2307b
|
|
g2 = func2;
|
|
g138 = func2;
|
|
int32_t func3 = (int32_t)GetProcAddress(moduleHandle, "GetLastActivePopup"); // 0x1e23088
|
|
g2 = func3;
|
|
g139 = func3;
|
|
}
|
|
// 0x1e2308f
|
|
g2 = g138;
|
|
int32_t v3;
|
|
if (g138 == 0) {
|
|
// 0x1e2309c
|
|
v3 = v1;
|
|
if (v3 == 0) {
|
|
goto lab_0x1e230b2;
|
|
} else {
|
|
goto lab_0x1e230a0;
|
|
}
|
|
} else {
|
|
// 0x1e2309c
|
|
v1 = g138;
|
|
v3 = g138;
|
|
goto lab_0x1e230a0;
|
|
}
|
|
lab_0x1e230b2:;
|
|
int32_t v4 = *(int32_t *)(g9 + 24); // 0x1e230b2
|
|
g2 = v4;
|
|
g5 = *(int32_t *)(g9 + 20);
|
|
g7 = *(int32_t *)(g9 + 16);
|
|
*(int32_t *)(g9 - 4) = v4;
|
|
*(int32_t *)(g9 - 8) = g5;
|
|
*(int32_t *)(g9 - 12) = g7;
|
|
*(int32_t *)(g9 - 16) = v1;
|
|
return g2;
|
|
lab_0x1e230a0:
|
|
// 0x1e230a0
|
|
if (g139 != 0) {
|
|
// 0x1e230a9
|
|
*(int32_t *)(g9 - 4) = v3;
|
|
v1 = g138;
|
|
}
|
|
goto lab_0x1e230b2;
|
|
}
|
|
|