2219 lines
60 KiB
C
2219 lines
60 KiB
C
#include "pinball.h"
|
|
|
|
// Address range: 0x1e400f0 - 0x1e4011b
|
|
int32_t function_1e400f0(int32_t a1, int32_t a2) {
|
|
int32_t v1 = g8; // 0x1e400f0
|
|
int32_t v2 = g6; // bp-8
|
|
g8 = a2;
|
|
if (a2 == 0) {
|
|
// 0x1e40118
|
|
g8 = v1;
|
|
return g2;
|
|
}
|
|
// 0x1e400fa
|
|
g5 = -1;
|
|
g2 = 0;
|
|
int32_t v3 = a1; // 0x1e40107
|
|
int32_t v4 = -1; // 0x1e40107
|
|
int32_t v5; // 0x1e40109
|
|
while (true) {
|
|
if (v4 == 0) {
|
|
v5 = 0;
|
|
// break -> bb16
|
|
break;
|
|
}
|
|
int32_t v6 = v4 - 1; // 0x1e40107
|
|
g5 = v6;
|
|
if (*(char *)v3 == 0) {
|
|
v5 = v6;
|
|
// break -> bb16
|
|
break;
|
|
}
|
|
v3 += (g1 ? -1 : 1);
|
|
v4 = v6;
|
|
}
|
|
int32_t v7 = -1 - v5; // 0x1e40109
|
|
g5 = v7;
|
|
int32_t result = function_1e3e040(a2 + a1, a1, v7); // 0x1e40110
|
|
g2 = result;
|
|
// 0x1e40118
|
|
g6 = v2;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40120 - 0x1e401b1
|
|
int32_t function_1e40120(uint32_t a1, int32_t a2) {
|
|
// 0x1e40120
|
|
g5 = a1;
|
|
int32_t v1 = g4; // bp-12
|
|
int32_t v2 = a1 + 1; // 0x1e40128
|
|
g2 = v2;
|
|
if (v2 < 257) {
|
|
int32_t v3 = (int32_t)g122; // 0x1e40132
|
|
g7 = v3;
|
|
g2 = 0;
|
|
int32_t result = (int32_t)*(int16_t *)(v3 + 2 * a1) & a2; // 0x1e4013e
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t v4 = a1 / 256 & 255; // 0x1e40147
|
|
int32_t v5 = g7 & -256 | v4; // 0x1e40147
|
|
g7 = v5;
|
|
int32_t v6 = (int32_t)g122; // 0x1e4014d
|
|
g2 = v6;
|
|
char v7 = *(char *)(v6 + (2 * v4 | 1)); // 0x1e40152
|
|
int32_t v8 = v7 > -1 ? a1 : v5; // bp-4
|
|
int32_t v9; // bp-6
|
|
g5 = &v9;
|
|
g2 = &v8;
|
|
int32_t v10 = function_1e42510(1, (char *)&v8, 2 - (int32_t)(v7 > -1), &v9, 0, 0); // 0x1e4018c
|
|
g2 = v10;
|
|
if (v10 == 0) {
|
|
// 0x1e40198
|
|
g2 = 0;
|
|
g4 = v1;
|
|
return 0;
|
|
}
|
|
int32_t result2 = a2 & 0xffff & v9; // 0x1e401a8
|
|
g2 = result2;
|
|
g4 = v1;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e40200 - 0x1e40250
|
|
int32_t function_1e40200(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
|
|
// 0x1e40200
|
|
if (g456 == 0) {
|
|
// 0x1e40209
|
|
g5 = a3;
|
|
g2 = a1;
|
|
int32_t result = function_1e40940(1, a1, a2, a3, 0, 0, a2, a3, a4); // 0x1e40225
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
// 0x1e4022e
|
|
*(int32_t *)function_1e23ad0() = 33;
|
|
g2 = a4;
|
|
int32_t result2 = function_1e40ad0(a4, 0xffff); // 0x1e40243
|
|
g2 = result2;
|
|
g11--;
|
|
g684 = (int64_t)a2;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e40250 - 0x1e4030b
|
|
int32_t function_1e40250(int32_t a1, int32_t a2, int32_t a3, int32_t a4, float80_t a5, int32_t a6, int32_t a7) {
|
|
float64_t v1 = a5; // bp+20
|
|
int32_t v2 = a7; // bp+28
|
|
g2 = a7;
|
|
g5 = &v1;
|
|
int32_t v3 = g8; // 0x1e4025b
|
|
int32_t v4 = g6; // 0x1e4025c
|
|
g8 = a1;
|
|
int32_t v5 = function_1e40680(a1, (int32_t *)&v1, a7, v4, v3); // 0x1e40264
|
|
g2 = v5;
|
|
if (v5 != 0) {
|
|
// 0x1e4029c
|
|
g6 = a2;
|
|
} else {
|
|
// 0x1e40270
|
|
g6 = a2;
|
|
g2 = &v2;
|
|
int32_t v6; // bp-88
|
|
g5 = &v6;
|
|
g2 = function_1e40310(&v6, &v2, g8, a2, &a3, (int32_t *)&v1);
|
|
}
|
|
int32_t v7 = function_1e40a50(g8); // 0x1e402a1
|
|
g2 = v7;
|
|
if (g456 == 0) {
|
|
if (v7 != 0) {
|
|
float64_t v8 = v1; // 0x1e402be
|
|
g8 = (float32_t)v8;
|
|
g5 = a4;
|
|
int32_t result = function_1e40940(v7, g6, a3, a4, 0, 0, (int32_t)(float32_t)v8, a6, v2); // 0x1e402d5
|
|
g2 = result;
|
|
g6 = v4;
|
|
return result;
|
|
}
|
|
}
|
|
// 0x1e402e3
|
|
function_1e409f0(v7);
|
|
int32_t v9 = v2; // 0x1e402e9
|
|
g2 = v9;
|
|
int32_t result2 = function_1e40ad0(v9, 0xffff); // 0x1e402f9
|
|
g2 = result2;
|
|
g11--;
|
|
g684 = v1;
|
|
g6 = v4;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e40310 - 0x1e4066a
|
|
int32_t function_1e40310(int32_t * a1, int32_t * a2, int32_t a3, int32_t a4, int32_t * a5, int32_t * a6) {
|
|
int32_t v1 = (int32_t)a5;
|
|
int32_t v2 = (int32_t)a1;
|
|
int32_t lpArguments = v2;
|
|
g5 = 0;
|
|
int32_t v3 = g4; // 0x1e40319
|
|
int32_t v4 = g8; // 0x1e4031a
|
|
*(int32_t *)(v2 + 4) = 0;
|
|
*(int32_t *)(lpArguments + 8) = g5;
|
|
int32_t v5 = lpArguments; // 0x1e40326
|
|
g2 = v5;
|
|
*(int32_t *)(v5 + 12) = g5;
|
|
g5 = a3;
|
|
if ((a3 & 16) == 0) {
|
|
// branch -> 0x1e40349
|
|
} else {
|
|
// 0x1e40336
|
|
g8 = -0x3fffff71;
|
|
int32_t v6 = lpArguments; // 0x1e4033b
|
|
g2 = v6;
|
|
int32_t * v7 = (int32_t *)(v6 + 4); // 0x1e4033f
|
|
*v7 = *v7 | 1;
|
|
a3 = g5;
|
|
}
|
|
int32_t v8; // 0x1e4035b
|
|
if ((a3 & 2) != 0) {
|
|
// 0x1e4034e
|
|
g8 = -0x3fffff6d;
|
|
int32_t v9 = lpArguments; // 0x1e40353
|
|
g2 = v9;
|
|
int32_t * v10 = (int32_t *)(v9 + 4); // 0x1e40357
|
|
*v10 = *v10 | 2;
|
|
v8 = g5;
|
|
} else {
|
|
v8 = a3;
|
|
}
|
|
int32_t v11; // 0x1e4036d
|
|
if ((v8 & 1) != 0) {
|
|
// 0x1e40360
|
|
g8 = -0x3fffff6f;
|
|
int32_t v12 = lpArguments; // 0x1e40365
|
|
g2 = v12;
|
|
int32_t * v13 = (int32_t *)(v12 + 4); // 0x1e40369
|
|
*v13 = *v13 | 4;
|
|
v11 = g5;
|
|
} else {
|
|
v11 = v8;
|
|
}
|
|
int32_t v14; // 0x1e4037f
|
|
if ((v11 & 4) != 0) {
|
|
// 0x1e40372
|
|
g8 = -0x3fffff72;
|
|
int32_t v15 = lpArguments; // 0x1e40377
|
|
g2 = v15;
|
|
int32_t * v16 = (int32_t *)(v15 + 4); // 0x1e4037b
|
|
*v16 = *v16 | 8;
|
|
v14 = g5;
|
|
} else {
|
|
v14 = v11;
|
|
}
|
|
if ((v14 & 8) != 0) {
|
|
// 0x1e40384
|
|
g8 = -0x3fffff70;
|
|
int32_t v17 = lpArguments; // 0x1e40389
|
|
g2 = v17;
|
|
int32_t * v18 = (int32_t *)(v17 + 4); // 0x1e4038d
|
|
*v18 = *v18 | 16;
|
|
}
|
|
// 0x1e40391
|
|
g4 = (int32_t)a2;
|
|
int32_t v19 = lpArguments + 8; // 0x1e40399
|
|
g2 = v19;
|
|
int32_t * v20 = (int32_t *)v19; // 0x1e403a0
|
|
int32_t v21 = *v20; // 0x1e403a0
|
|
g5 = v21;
|
|
*v20 = (v21 ^ 16 * (-1 - *a2)) & 16 ^ v21;
|
|
int32_t v22 = *(int32_t *)g4 & 4; // 0x1e403b7
|
|
int32_t v23 = lpArguments + 8; // 0x1e403ba
|
|
g5 = v23;
|
|
g2 = v22 == 0;
|
|
int32_t * v24 = (int32_t *)v23; // 0x1e403c2
|
|
int32_t v25 = (2 * v22 | *v24 & -9) ^ 8; // 0x1e403ce45
|
|
g2 = v25;
|
|
*v24 = v25;
|
|
uint32_t v26 = *(int32_t *)g4 & 8; // 0x1e403d8
|
|
g2 = v26 == 0;
|
|
int32_t * v27 = (int32_t *)(lpArguments + 8); // 0x1e403e3
|
|
int32_t v28 = *v27; // 0x1e403e3
|
|
g5 = v28;
|
|
int32_t v29 = (v26 / 2 | v28 & -5) ^ 4; // 0x1e403ef46
|
|
g2 = v29;
|
|
*v27 = v29;
|
|
int32_t v30 = *(int32_t *)g4 & 16; // 0x1e403fc
|
|
g2 = v30;
|
|
int32_t * v31 = (int32_t *)(lpArguments + 8); // 0x1e403ff
|
|
int32_t v32 = *v31; // 0x1e403ff
|
|
g5 = v32;
|
|
int32_t v33 = (v30 >> 3 | v32 & -3) ^ 2; // 0x1e4040f47
|
|
g2 = v33;
|
|
*v31 = v33;
|
|
int32_t v34 = *(int32_t *)g4; // 0x1e40413
|
|
int32_t v35 = lpArguments + 8; // 0x1e4041c
|
|
g5 = v35;
|
|
g2 = (v34 & 32) == 0;
|
|
int32_t * v36 = (int32_t *)v35; // 0x1e40424
|
|
int32_t v37 = *v36 & -2 | (int32_t)((v34 & 32) == 0); // 0x1e4042d48
|
|
g2 = v37;
|
|
*v36 = v37;
|
|
int32_t v38 = function_1e40a90(g6, v4, v3); // 0x1e40431
|
|
g2 = v38;
|
|
int32_t v39; // 0x1e40442
|
|
if ((v38 & 1) != 0) {
|
|
int32_t v40 = lpArguments; // 0x1e4043a
|
|
g5 = v40;
|
|
int32_t * v41 = (int32_t *)(v40 + 12); // 0x1e4043e
|
|
*v41 = *v41 | 16;
|
|
v39 = g2;
|
|
} else {
|
|
v39 = v38;
|
|
}
|
|
int32_t v42; // 0x1e4044e
|
|
if ((v39 & 4) != 0) {
|
|
int32_t v43 = lpArguments; // 0x1e40446
|
|
g5 = v43;
|
|
int32_t * v44 = (int32_t *)(v43 + 12); // 0x1e4044a
|
|
*v44 = *v44 | 8;
|
|
v42 = g2;
|
|
} else {
|
|
v42 = v39;
|
|
}
|
|
int32_t v45; // 0x1e4045a
|
|
if ((v42 & 8) != 0) {
|
|
int32_t v46 = lpArguments; // 0x1e40452
|
|
g5 = v46;
|
|
int32_t * v47 = (int32_t *)(v46 + 12); // 0x1e40456
|
|
*v47 = *v47 | 4;
|
|
v45 = g2;
|
|
} else {
|
|
v45 = v42;
|
|
}
|
|
int32_t v48; // 0x1e40466
|
|
if ((v45 & 16) != 0) {
|
|
int32_t v49 = lpArguments; // 0x1e4045e
|
|
g5 = v49;
|
|
int32_t * v50 = (int32_t *)(v49 + 12); // 0x1e40462
|
|
*v50 = *v50 | 2;
|
|
v48 = g2;
|
|
} else {
|
|
v48 = v45;
|
|
}
|
|
if ((v48 & 32) != 0) {
|
|
int32_t v51 = lpArguments; // 0x1e4046a
|
|
g2 = v51;
|
|
int32_t * v52 = (int32_t *)(v51 + 12); // 0x1e4046e
|
|
*v52 = *v52 | 1;
|
|
}
|
|
int32_t v53 = *(int32_t *)g4 & 3072; // 0x1e40474
|
|
g2 = v53;
|
|
if (v53 < 1025) {
|
|
if (v53 == 1024) {
|
|
int32_t v54 = lpArguments; // 0x1e404a1
|
|
g2 = v54;
|
|
g5 = v54;
|
|
int32_t * v55 = (int32_t *)v54; // 0x1e404a9
|
|
int32_t v56 = *v55 & -4 | 1; // 0x1e404ae
|
|
g2 = v56;
|
|
*v55 = v56;
|
|
} else {
|
|
if (v53 == 0) {
|
|
int32_t v57 = lpArguments; // 0x1e40498
|
|
g2 = v57;
|
|
int32_t * v58 = (int32_t *)v57; // 0x1e4049c
|
|
*v58 = *v58 & -4;
|
|
}
|
|
}
|
|
} else {
|
|
if (v53 == 2048) {
|
|
int32_t v59 = lpArguments; // 0x1e404b5
|
|
g2 = v59;
|
|
g5 = v59;
|
|
int32_t * v60 = (int32_t *)v59; // 0x1e404bd
|
|
int32_t v61 = *v60 & -4 | 2; // 0x1e404c2
|
|
g2 = v61;
|
|
*v60 = v61;
|
|
} else {
|
|
if (v53 == 3072) {
|
|
int32_t v62 = lpArguments; // 0x1e404c9
|
|
g2 = v62;
|
|
int32_t * v63 = (int32_t *)v62; // 0x1e404cd
|
|
*v63 = *v63 | 3;
|
|
}
|
|
}
|
|
}
|
|
int32_t v64 = *(int32_t *)g4 & 768; // 0x1e404d2
|
|
g2 = v64;
|
|
if (v64 == 0) {
|
|
int32_t v65 = lpArguments; // 0x1e404e9
|
|
g2 = v65;
|
|
int32_t * v66 = (int32_t *)v65; // 0x1e404ed
|
|
int32_t v67 = *v66 & -29 | 8; // 0x1e404f2
|
|
g5 = v67;
|
|
*v66 = v67;
|
|
} else {
|
|
if (v64 == 512) {
|
|
int32_t v68 = lpArguments; // 0x1e404f9
|
|
g2 = v68;
|
|
g5 = v68;
|
|
int32_t * v69 = (int32_t *)v68; // 0x1e40501
|
|
int32_t v70 = *v69 & -29 | 4; // 0x1e40506
|
|
g2 = v70;
|
|
*v69 = v70;
|
|
} else {
|
|
if (v64 == 768) {
|
|
int32_t v71 = lpArguments; // 0x1e4050d
|
|
g2 = v71;
|
|
int32_t * v72 = (int32_t *)v71; // 0x1e40511
|
|
*v72 = *v72 & -29;
|
|
}
|
|
}
|
|
}
|
|
int32_t v73 = lpArguments; // 0x1e40514
|
|
g2 = v73;
|
|
int32_t v74 = 32 * a4; // 0x1e4051c
|
|
g5 = v74;
|
|
int32_t * v75 = (int32_t *)v73; // 0x1e4051f
|
|
int32_t v76 = *v75; // 0x1e4051f
|
|
int32_t v77 = (v76 ^ v74) & 0x1ffe0 ^ v76; // 0x1e40529
|
|
g5 = v77;
|
|
*v75 = v77;
|
|
int32_t v78 = lpArguments; // 0x1e40531
|
|
g2 = v78;
|
|
int32_t * v79 = (int32_t *)(v78 + 32); // 0x1e40535
|
|
*v79 = *v79 | 1;
|
|
int32_t v80 = lpArguments; // 0x1e40539
|
|
g2 = v80;
|
|
int32_t * v81 = (int32_t *)(v80 + 32); // 0x1e4053d
|
|
int32_t v82 = *v81 & -31 | 2; // 0x1e40546
|
|
g5 = v82;
|
|
*v81 = v82;
|
|
g2 = v1;
|
|
int32_t v83 = lpArguments; // 0x1e4054f
|
|
int32_t v84 = *(int32_t *)(v1 + 4); // 0x1e40553
|
|
g5 = v84;
|
|
*(int32_t *)(v83 + 20) = v84;
|
|
int32_t v85 = *(int32_t *)g2; // 0x1e40559
|
|
g2 = v85;
|
|
*(int32_t *)(v83 + 16) = v85;
|
|
int32_t * v86 = (int32_t *)(lpArguments + 80); // 0x1e40562
|
|
*v86 = *v86 | 1;
|
|
int32_t v87 = lpArguments; // 0x1e40566
|
|
g2 = v87;
|
|
g6 = (int32_t)a6;
|
|
int32_t v88 = v87 + 80; // 0x1e4056e
|
|
int32_t * v89 = (int32_t *)v88; // 0x1e4056e
|
|
g2 = v88;
|
|
*v89 = *v89 & -31 | 2;
|
|
int32_t v90 = lpArguments; // 0x1e4057c
|
|
g5 = v90;
|
|
int32_t v91 = *(int32_t *)(g6 + 4); // 0x1e40580
|
|
g2 = v91;
|
|
*(int32_t *)(v90 + 68) = v91;
|
|
int32_t v92 = *(int32_t *)g6; // 0x1e40586
|
|
g7 = v92;
|
|
*(int32_t *)(g5 + 64) = v92;
|
|
g2 = function_1e40ab0();
|
|
g5 = &lpArguments;
|
|
RaiseException(g8, 0, 1, &lpArguments);
|
|
int32_t v93 = v4 + 8; // 0x1e405a4
|
|
g2 = v93;
|
|
int32_t v94; // 0x1e405af
|
|
if ((*(char *)v93 & 16) != 0) {
|
|
int32_t * v95 = (int32_t *)g4; // 0x1e405ac
|
|
*v95 = *v95 & -2;
|
|
v94 = g2;
|
|
} else {
|
|
v94 = v93;
|
|
}
|
|
// 0x1e405af
|
|
int32_t v96; // 0x1e405b7
|
|
if ((*(char *)v94 & 8) != 0) {
|
|
int32_t * v97 = (int32_t *)g4; // 0x1e405b4
|
|
*v97 = *v97 & -5;
|
|
v96 = g2;
|
|
} else {
|
|
v96 = v94;
|
|
}
|
|
// 0x1e405b7
|
|
int32_t v98; // 0x1e405bf
|
|
if ((*(char *)v96 & 4) != 0) {
|
|
int32_t * v99 = (int32_t *)g4; // 0x1e405bc
|
|
*v99 = *v99 & -9;
|
|
v98 = g2;
|
|
} else {
|
|
v98 = v96;
|
|
}
|
|
// 0x1e405bf
|
|
int32_t v100; // 0x1e405c7
|
|
if ((*(char *)v98 & 2) != 0) {
|
|
int32_t * v101 = (int32_t *)g4; // 0x1e405c4
|
|
*v101 = *v101 & -17;
|
|
v100 = g2;
|
|
} else {
|
|
v100 = v98;
|
|
}
|
|
// 0x1e405c7
|
|
if ((*(char *)v100 & 1) != 0) {
|
|
int32_t * v102 = (int32_t *)g4; // 0x1e405cc
|
|
*v102 = *v102 & -33;
|
|
}
|
|
int32_t v103 = g8 & 3; // 0x1e405d5
|
|
g2 = v103;
|
|
g713 = v103;
|
|
switch ((int2_t)v104) {
|
|
case 0: {
|
|
int32_t * v105 = (int32_t *)g4; // 0x1e405e4
|
|
*v105 = *v105 & -3073;
|
|
// break -> 0x1e40612
|
|
break;
|
|
}
|
|
case 1: {
|
|
int32_t * v106 = (int32_t *)g4; // 0x1e405ec
|
|
int32_t v107 = *v106 & -3073 | 1024; // 0x1e405f3
|
|
g2 = v107;
|
|
*v106 = v107;
|
|
// break -> 0x1e40612
|
|
break;
|
|
}
|
|
case -2: {
|
|
int32_t * v108 = (int32_t *)g4; // 0x1e405fc
|
|
int32_t v109 = *v108 & -3073 | 2048; // 0x1e40603
|
|
g2 = v109;
|
|
*v108 = v109;
|
|
// break -> 0x1e40612
|
|
break;
|
|
}
|
|
case -1: {
|
|
int32_t * v110 = (int32_t *)g4; // 0x1e4060c
|
|
*v110 = *v110 | 3072;
|
|
// break -> 0x1e40612
|
|
break;
|
|
}
|
|
default: {
|
|
// 0x1e4061218
|
|
// UNREACHABLE
|
|
}
|
|
}
|
|
uint32_t v111 = g8 & 28; // 0x1e40618
|
|
g2 = v111 / 4;
|
|
if (v111 < 4) {
|
|
int32_t * v112 = (int32_t *)g4; // 0x1e4062e
|
|
int32_t v113 = *v112 & -3841 | 768; // 0x1e40635
|
|
g2 = v113;
|
|
*v112 = v113;
|
|
} else {
|
|
if (v111 == 4) {
|
|
int32_t * v114 = (int32_t *)g4; // 0x1e4063e
|
|
int32_t v115 = *v114 & -3585 | 512; // 0x1e40645
|
|
g2 = v115;
|
|
*v114 = v115;
|
|
} else {
|
|
if (v111 == 8) {
|
|
int32_t * v116 = (int32_t *)g4; // 0x1e4064e
|
|
*v116 = *v116 & -3073;
|
|
}
|
|
}
|
|
}
|
|
// 0x1e40654
|
|
g5 = v4;
|
|
int32_t v117 = *(int32_t *)(v4 + 68); // 0x1e40658
|
|
g2 = v117;
|
|
*(int32_t *)(g6 + 4) = v117;
|
|
int32_t v118 = *(int32_t *)(g5 + 64); // 0x1e4065e
|
|
g7 = v118;
|
|
*(int32_t *)g6 = v118;
|
|
g6 = g8;
|
|
g8 = 0;
|
|
g4 = 1;
|
|
return g2;
|
|
}
|
|
|
|
// Address range: 0x1e40680 - 0x1e40940
|
|
int32_t function_1e40680(int32_t a1, int32_t * a2, int32_t a3, int32_t a4, int32_t a5) {
|
|
int32_t v1 = (int32_t)a2;
|
|
int32_t v2 = g8; // 0x1e40684
|
|
int32_t v3 = g6; // 0x1e40685
|
|
g6 = a1;
|
|
g8 = a1 & 31;
|
|
if ((a1 & 8) == 0) {
|
|
goto lab_0x1e406b1;
|
|
} else {
|
|
if ((a3 & 1) == 0) {
|
|
goto lab_0x1e406b1;
|
|
} else {
|
|
// 0x1e4069f
|
|
g8 = a1 & 23;
|
|
g2 = function_1e40b10(1);
|
|
goto lab_0x1e40915;
|
|
}
|
|
}
|
|
lab_0x1e406b1:
|
|
if ((a1 & 4) == 0) {
|
|
goto lab_0x1e406d2;
|
|
} else {
|
|
if ((a3 & 4) == 0) {
|
|
goto lab_0x1e406d2;
|
|
} else {
|
|
// 0x1e406c0
|
|
g8 = a1 & 27;
|
|
g2 = function_1e40b10(4);
|
|
goto lab_0x1e40915;
|
|
}
|
|
}
|
|
lab_0x1e406d2:;
|
|
int32_t v4; // ebx
|
|
if ((a1 & 1) == 0) {
|
|
goto lab_0x1e40813;
|
|
} else {
|
|
if ((a3 & 8) == 0) {
|
|
goto lab_0x1e40813;
|
|
} else {
|
|
// 0x1e406e9
|
|
function_1e40b10(8);
|
|
int32_t v5 = a3 & 3072; // 0x1e406f7
|
|
g2 = v5;
|
|
if (v5 < 1025) {
|
|
if (v5 == 1024) {
|
|
// 0x1e40768
|
|
v4 = v1;
|
|
int32_t v6 = __asm_fnstsw(g10); // 0x1e40770
|
|
g2 = g2 & -0x10000 | v6;
|
|
if ((v6 & 256) == 0) {
|
|
// 0x1e4078f
|
|
g8 &= -2;
|
|
*(float64_t *)v4 = -g448;
|
|
} else {
|
|
// 0x1e40777
|
|
g2 = g451;
|
|
g8 &= -2;
|
|
*(int32_t *)(v4 + 4) = g451;
|
|
g5 = (float32_t)g450;
|
|
*(int32_t *)v4 = (int32_t)(float32_t)g450;
|
|
}
|
|
} else {
|
|
if (v5 == 0) {
|
|
// 0x1e4072f
|
|
v4 = v1;
|
|
int32_t v7 = __asm_fnstsw(g10); // 0x1e40737
|
|
g2 = g2 & -0x10000 | v7;
|
|
if ((v7 & 256) == 0) {
|
|
// 0x1e40756
|
|
g8 &= -2;
|
|
*(float64_t *)v4 = -g448;
|
|
} else {
|
|
// 0x1e4073e
|
|
g2 = g449;
|
|
g8 &= -2;
|
|
*(int32_t *)(v4 + 4) = g449;
|
|
g5 = (float32_t)g448;
|
|
*(int32_t *)v4 = (int32_t)(float32_t)g448;
|
|
}
|
|
} else {
|
|
// 0x1e40709
|
|
g8 &= -2;
|
|
}
|
|
}
|
|
} else {
|
|
if (v5 == 2048) {
|
|
// 0x1e407a1
|
|
v4 = v1;
|
|
int32_t v8 = __asm_fnstsw(g10); // 0x1e407a9
|
|
g2 = g2 & -0x10000 | v8;
|
|
if ((v8 & 256) == 0) {
|
|
// 0x1e407c8
|
|
g8 &= -2;
|
|
*(float64_t *)v4 = -g450;
|
|
} else {
|
|
// 0x1e407b0
|
|
g2 = g449;
|
|
g8 &= -2;
|
|
*(int32_t *)(v4 + 4) = g449;
|
|
g5 = (float32_t)g448;
|
|
*(int32_t *)v4 = (int32_t)(float32_t)g448;
|
|
}
|
|
} else {
|
|
if (v5 == 3072) {
|
|
// 0x1e407da
|
|
v4 = v1;
|
|
int32_t v9 = __asm_fnstsw(g10); // 0x1e407e2
|
|
g2 = g2 & -0x10000 | v9;
|
|
if ((v9 & 256) == 0) {
|
|
// 0x1e40801
|
|
g8 &= -2;
|
|
*(float64_t *)v4 = -g450;
|
|
} else {
|
|
// 0x1e407e9
|
|
g2 = g451;
|
|
g8 &= -2;
|
|
*(int32_t *)(v4 + 4) = g451;
|
|
g5 = (float32_t)g450;
|
|
*(int32_t *)v4 = (int32_t)(float32_t)g450;
|
|
}
|
|
} else {
|
|
// 0x1e40727
|
|
g8 &= -2;
|
|
}
|
|
}
|
|
}
|
|
goto lab_0x1e40915;
|
|
}
|
|
}
|
|
lab_0x1e40813:
|
|
if ((a1 & 2) == 0) {
|
|
goto lab_0x1e40915;
|
|
} else {
|
|
if ((a3 & 16) == 0) {
|
|
goto lab_0x1e40915;
|
|
} else {
|
|
int32_t v10;
|
|
if ((a1 & 16) != 0) {
|
|
v10 = 1;
|
|
} else {
|
|
v10 = 0;
|
|
}
|
|
int32_t v11 = v10; // ebp
|
|
v4 = v1;
|
|
int32_t * v12 = (int32_t *)(v1 + 4); // 0x1e4083d
|
|
int32_t v13 = *v12 & 0x7fffffff; // 0x1e40840
|
|
g2 = v13;
|
|
int32_t v14 = *a2 | v13; // 0x1e40845
|
|
g2 = v14;
|
|
if (v14 == 0) {
|
|
// 0x1e40908
|
|
g2 = function_1e40b10(16);
|
|
// 0x1e40912
|
|
g8 &= -3;
|
|
goto lab_0x1e40915;
|
|
} else {
|
|
// 0x1e4084d
|
|
int32_t v15; // bp-4
|
|
g2 = &v15;
|
|
int32_t v16 = *v12; // 0x1e40851
|
|
g5 = v16;
|
|
int32_t v17 = *a2; // 0x1e40855
|
|
g7 = v17;
|
|
g2 = function_1e40c40(v17, v16, &v15, g3, v3, v2, g4);
|
|
float64_t v18 = g684;
|
|
int3_t v19 = g11 + 1; // 0x1e4085e
|
|
g11 = v19;
|
|
int32_t v20 = v15 - 1536; // 0x1e40869
|
|
g5 = v20;
|
|
int32_t v21;
|
|
float64_t v22; // 0x1e408f4
|
|
if (v20 < -1074) {
|
|
// 0x1e40877
|
|
g2 = 0;
|
|
v11 = 1;
|
|
v22 = 0.0;
|
|
v21 = 0;
|
|
} else {
|
|
// 0x1e40888
|
|
g11 = v19;
|
|
g7 = 1;
|
|
int32_t v23 = __asm_fnstsw(g10); // 0x1e40893
|
|
g2 = g2 & -0x10000 | v23;
|
|
if ((v23 & 0x4100) != 0) {
|
|
// 0x1e4089a
|
|
g7 = 0;
|
|
}
|
|
int32_t v24 = g5; // 0x1e408a7
|
|
float64_t v25;
|
|
int32_t v26;
|
|
int32_t v27;
|
|
if (v24 < -1021) {
|
|
int32_t v28 = -1021 - v24; // 0x1e408b4
|
|
g2 = v28;
|
|
g5 = 1;
|
|
float64_t v29 = v18; // 0x1e408bb20
|
|
int32_t v30 = v27;
|
|
int32_t v31; // 0x1e408df
|
|
int64_t v32;
|
|
int32_t v33; // 0x1e408da
|
|
while (true) {
|
|
if (((int32_t)(float32_t)v29 & 1) != 0) {
|
|
// 0x1e408c1
|
|
if (v11 == 0) {
|
|
// 0x1e408c5
|
|
v11 = 1;
|
|
}
|
|
}
|
|
uint32_t v34 = (int32_t)(float32_t)v29 / 2; // 0x1e408c7
|
|
if ((v30 & 1) != 0) {
|
|
// 0x1e408d2
|
|
v32 = v34 | -0x80000000;
|
|
} else {
|
|
v32 = v34;
|
|
}
|
|
// 0x1e408da
|
|
v33 = v30 / 2;
|
|
v31 = v28 - 1;
|
|
if (v31 == 0) {
|
|
// break -> 0x1e408e2
|
|
break;
|
|
}
|
|
v28 = v31;
|
|
v29 = v32;
|
|
v30 = v33;
|
|
}
|
|
// 0x1e408e2
|
|
g2 = v31;
|
|
v25 = v32;
|
|
v26 = v33;
|
|
} else {
|
|
v25 = v18;
|
|
v26 = v27;
|
|
}
|
|
// 0x1e408e2
|
|
if (g7 != 0) {
|
|
// 0x1e408e6
|
|
v22 = -v25;
|
|
v21 = v26;
|
|
} else {
|
|
v22 = v25;
|
|
v21 = v26;
|
|
}
|
|
}
|
|
// 0x1e40904
|
|
g2 = v21;
|
|
g5 = (float32_t)v22;
|
|
*(int32_t *)(v4 + 4) = v21;
|
|
*(int32_t *)v4 = g5;
|
|
if (v11 == 0) {
|
|
// 0x1e40912
|
|
g8 &= -3;
|
|
goto lab_0x1e40915;
|
|
} else {
|
|
// 0x1e40908
|
|
g2 = function_1e40b10(16);
|
|
// 0x1e40912
|
|
g8 &= -3;
|
|
goto lab_0x1e40915;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lab_0x1e40915:;
|
|
// 0x1e40915
|
|
int32_t v35; // 0x1e40931
|
|
if ((g6 & 16) != 0) {
|
|
// 0x1e4091d
|
|
if ((*(char *)(g9 + 40) & 32) != 0) {
|
|
// 0x1e40924
|
|
*(int32_t *)(g9 - 4) = 32;
|
|
g8 &= -17;
|
|
g2 = function_1e40b10((int32_t)&g708);
|
|
v35 = g9 + 4;
|
|
} else {
|
|
v35 = g9;
|
|
}
|
|
} else {
|
|
v35 = g9;
|
|
}
|
|
// 0x1e40931
|
|
g3 = *(int32_t *)v35;
|
|
g2 = g8 == 0;
|
|
g6 = *(int32_t *)(v35 + 4);
|
|
int32_t result = g8 == 0; // 0x1e40938
|
|
g2 = result;
|
|
g8 = *(int32_t *)(v35 + 8);
|
|
g4 = *(int32_t *)(v35 + 12);
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40940 - 0x1e409ee
|
|
int32_t function_1e40940(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8, int32_t a9) {
|
|
// 0x1e40940
|
|
g2 = a2;
|
|
int32_t v1 = function_1e40a20(a2, g8); // 0x1e40949
|
|
g2 = v1;
|
|
if (v1 == 0) {
|
|
// 0x1e409c6
|
|
g2 = a9;
|
|
g2 = function_1e40ad0(a9, 0xffff);
|
|
int32_t result = function_1e409f0(a1); // 0x1e409dd
|
|
g2 = result;
|
|
g11--;
|
|
g684 = (int64_t)a7;
|
|
return result;
|
|
}
|
|
int32_t v2 = a1; // bp-32
|
|
g5 = a7;
|
|
g7 = a8;
|
|
g2 = a9;
|
|
g2 = function_1e40ad0(a9, 0xffff);
|
|
g5 = &v2;
|
|
int32_t v3 = function_1e42640(&v2); // 0x1e409a8
|
|
g2 = v3;
|
|
int32_t result2; // 0x1e409b5
|
|
if (v3 == 0) {
|
|
// 0x1e409b4
|
|
result2 = function_1e409f0(a1);
|
|
g2 = result2;
|
|
} else {
|
|
result2 = v3;
|
|
}
|
|
// 0x1e409bd
|
|
g11--;
|
|
g684 = (int64_t)a7;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e409f0 - 0x1e40a1c
|
|
int32_t function_1e409f0(int32_t result) {
|
|
// 0x1e409f0
|
|
g2 = result;
|
|
if (result == 1) {
|
|
int32_t v1 = function_1e23ad0(); // 0x1e40a04
|
|
g2 = v1;
|
|
*(int32_t *)v1 = 33;
|
|
return g2;
|
|
}
|
|
if (result < 2) {
|
|
// 0x1e40a03
|
|
return result;
|
|
}
|
|
int32_t result2;
|
|
if (result <= 3) {
|
|
int32_t v2 = function_1e23ad0(); // 0x1e40a10
|
|
g2 = v2;
|
|
*(int32_t *)v2 = 34;
|
|
result2 = g2;
|
|
} else {
|
|
result2 = result;
|
|
}
|
|
// 0x1e40a03
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e40a20 - 0x1e40a46
|
|
int32_t function_1e40a20(int32_t a1, int32_t a2) {
|
|
// 0x1e40a20
|
|
g2 = 0;
|
|
g7 = &g445;
|
|
g5 = a1;
|
|
int32_t v1 = 0; // 0x1e40a3e
|
|
int32_t v2 = &g445; // 0x1e40a2f
|
|
while (true) {
|
|
// 0x1e40a2b
|
|
if (*(int32_t *)v2 == a1) {
|
|
// break -> 0x1e40a3e
|
|
break;
|
|
}
|
|
int32_t v3 = v2 + 8; // 0x1e40a2f
|
|
g7 = v3;
|
|
int32_t v4 = v1 + 1; // 0x1e40a32
|
|
g2 = v4;
|
|
if (v3 >= (int32_t)&g447) {
|
|
// 0x1e40a3b
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
v1 = v4;
|
|
v2 = v3;
|
|
}
|
|
int32_t result = *(int32_t *)(8 * v1 + (int32_t)&g446); // 0x1e40a3e
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40a50 - 0x1e40a82
|
|
int32_t function_1e40a50(int32_t a1) {
|
|
// 0x1e40a50
|
|
g2 = a1;
|
|
if ((a1 & 32) != 0) {
|
|
// 0x1e40a58
|
|
g2 = 5;
|
|
return 5;
|
|
}
|
|
if ((a1 & 8) != 0) {
|
|
// 0x1e40a62
|
|
g2 = 1;
|
|
return 1;
|
|
}
|
|
if ((a1 & 4) != 0) {
|
|
// 0x1e40a6c
|
|
g2 = 2;
|
|
return 2;
|
|
}
|
|
if ((a1 & 1) != 0) {
|
|
// 0x1e40a76
|
|
g2 = 3;
|
|
return 3;
|
|
}
|
|
int32_t result = 2 * (a1 & 2); // 0x1e40a7f
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40a90 - 0x1e40aa1
|
|
int32_t function_1e40a90(int32_t a1, int32_t a2, int32_t a3) {
|
|
// 0x1e40a90
|
|
g2 = __asm_wait();
|
|
int32_t result = __asm_fnstsw_1(); // 0x1e40a94
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40ab0 - 0x1e40ac2
|
|
int32_t function_1e40ab0(void) {
|
|
int32_t result = __asm_fnstsw_1(); // 0x1e40ab3
|
|
g2 = result;
|
|
__asm_fnclex();
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40ad0 - 0x1e40b02
|
|
int32_t function_1e40ad0(int32_t a1, int32_t a2) {
|
|
// 0x1e40ad0
|
|
__asm_wait();
|
|
int16_t v1;
|
|
g7 = g7 & -0x10000 | a1 & 0xffff & a2 | (int32_t)(v1 & (int16_t)(a2 ^ 0xffff));
|
|
int32_t result = v1; // 0x1e40af9
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40b10 - 0x1e40b6b
|
|
int32_t function_1e40b10(int32_t a1) {
|
|
// 0x1e40b10
|
|
g5 = a1;
|
|
int32_t v1; // 0x1e40b27
|
|
if ((a1 & 1) != 0) {
|
|
// 0x1e40b1c
|
|
g2 = __asm_wait();
|
|
v1 = g5;
|
|
} else {
|
|
v1 = a1;
|
|
}
|
|
int32_t v2; // 0x1e40b3d
|
|
if ((v1 & 8) != 0) {
|
|
// 0x1e40b2c
|
|
g2 = __asm_wait();
|
|
g2 = g2 & -0x10000 | (int32_t)__asm_fnstsw(g10);
|
|
g2 = __asm_wait();
|
|
g2 = __asm_wait();
|
|
g2 = g2 & -0x10000 | (int32_t)__asm_fnstsw(g10);
|
|
v2 = g5;
|
|
} else {
|
|
v2 = v1;
|
|
}
|
|
int32_t v3; // 0x1e40b4d
|
|
if ((v2 & 16) != 0) {
|
|
// 0x1e40b42
|
|
g2 = __asm_wait();
|
|
v3 = g5;
|
|
} else {
|
|
v3 = v2;
|
|
}
|
|
int32_t v4; // 0x1e40b5b
|
|
if ((v3 & 4) != 0) {
|
|
// 0x1e40b52
|
|
g2 = __asm_wait();
|
|
v4 = g5;
|
|
} else {
|
|
v4 = v3;
|
|
}
|
|
int32_t result; // 0x1e40b6a
|
|
if ((v4 & 32) == 0) {
|
|
// 0x1e40b5b
|
|
result = g2;
|
|
} else {
|
|
int32_t v5 = __asm_wait(); // 0x1e40b66
|
|
g2 = v5;
|
|
result = v5;
|
|
}
|
|
// 0x1e40b67
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40b70 - 0x1e40b85
|
|
int32_t function_1e40b70(int32_t a1, int32_t a2) {
|
|
// 0x1e40b70
|
|
g11--;
|
|
g684 = llvm_round_f80((float80_t)(float64_t)(int64_t)a1);
|
|
return g2;
|
|
}
|
|
|
|
// Address range: 0x1e40b90 - 0x1e40bc9
|
|
int32_t function_1e40b90(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
|
|
uint16_t v1 = (int16_t)a3 & -0x7ff1; // 0x1e40bb4
|
|
g5 = (int32_t)v1 | a1 & -0x10000;
|
|
int32_t result = (int32_t)(16 * (int16_t)a4 + 0x3fe0 | v1) | a4 & -0x10000; // 0x1e40bb9
|
|
g2 = result;
|
|
g11--;
|
|
g684 = (int64_t)a1;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e40bd0 - 0x1e40c33
|
|
int32_t function_1e40bd0(int32_t a1, int32_t a2, int32_t a3) {
|
|
if (a2 == 0x7ff00000) {
|
|
if (a1 == 0) {
|
|
// 0x1e40be1
|
|
g2 = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
if (a2 == -0x100000) {
|
|
if (a1 == 0) {
|
|
// 0x1e40bf8
|
|
g2 = 2;
|
|
return 2;
|
|
}
|
|
}
|
|
uint16_t v1 = (int16_t)a3 & 0x7ff8; // 0x1e40c03
|
|
g2 = g2 & -0x10000 | (int32_t)v1;
|
|
if (v1 == 0x7ff8) {
|
|
// 0x1e40c0d
|
|
g2 = 3;
|
|
return 3;
|
|
}
|
|
if (v1 != 0x7ff0) {
|
|
// 0x1e40c30
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
if ((a2 & 0x7ffff) != 0) {
|
|
// 0x1e40c2a
|
|
g2 = 4;
|
|
return 4;
|
|
}
|
|
if (a1 == 0) {
|
|
// 0x1e40c30
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
// 0x1e40c2a
|
|
g2 = 4;
|
|
return 4;
|
|
}
|
|
|
|
// Address range: 0x1e40c40 - 0x1e40d2e
|
|
int32_t function_1e40c40(int32_t a1, int32_t a2, int32_t * a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7) {
|
|
int32_t v1 = g8; // 0x1e40c4c
|
|
int32_t v2 = a2 & 0x7fffffff | a1; // 0x1e40c4d
|
|
g2 = v2;
|
|
int32_t v3 = g6; // 0x1e40c51
|
|
int32_t v4; // esi
|
|
int32_t v5;
|
|
int3_t v6; // 0x1e40d1e
|
|
uint16_t v7; // 0x1e40c68
|
|
float64_t v8; // 0x1e40d1e
|
|
if (v2 != 0) {
|
|
// 0x1e40c63
|
|
v5 = (int32_t)a3;
|
|
v7 = (int16_t)v5 & 0x7ff0;
|
|
if (v7 != 0) {
|
|
goto lab_0x1e40cf9;
|
|
} else {
|
|
if ((a2 & 0xfffff) != 0) {
|
|
goto lab_0x1e40c84;
|
|
} else {
|
|
if (a1 == 0) {
|
|
goto lab_0x1e40cf9;
|
|
} else {
|
|
goto lab_0x1e40c84;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
// 0x1e40c54
|
|
v4 = 0;
|
|
v8 = 0.0;
|
|
v6 = g11;
|
|
goto lab_0x1e40d1e;
|
|
}
|
|
lab_0x1e40cf9:
|
|
// 0x1e40cf9
|
|
g2 = a2;
|
|
g5 = a1;
|
|
v4 = (v1 & -0x10000 | (int32_t)(v7 / 16)) - 1022;
|
|
g2 = function_1e40b90(a1, a2, 0, v3);
|
|
v8 = g684;
|
|
v6 = g11 + 1;
|
|
goto lab_0x1e40d1e;
|
|
lab_0x1e40d1e:
|
|
// 0x1e40d1e
|
|
g11 = v6 - 1;
|
|
g684 = v8;
|
|
g2 = a5;
|
|
g6 = v3;
|
|
*(int32_t *)a5 = v4;
|
|
g8 = v1;
|
|
return g2;
|
|
lab_0x1e40c84:
|
|
// 0x1e40c84
|
|
v4 = -1021;
|
|
int32_t v9;
|
|
if ((__asm_fnstsw(g10) & 0x4100) != 0) {
|
|
v9 = 0;
|
|
} else {
|
|
v9 = 1;
|
|
}
|
|
// 0x1e40c9d
|
|
g2 = v9;
|
|
if ((v5 & 16) == 0) {
|
|
// 0x1e40ca4
|
|
g5 = -0x80000000;
|
|
while (true) {
|
|
// continue -> 0x1e40cb3
|
|
}
|
|
}
|
|
// 0x1e40cdf
|
|
g2 = a2;
|
|
g5 = a1;
|
|
g2 = function_1e40b90(a1, a2, 0, (int32_t)&g708);
|
|
v8 = g684;
|
|
v6 = g11 + 1;
|
|
goto lab_0x1e40d1e;
|
|
}
|
|
|
|
// Address range: 0x1e40e20 - 0x1e40fbb
|
|
int32_t function_1e40e20(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
|
|
// 0x1e40e20
|
|
g5 = a2;
|
|
g4 = 0;
|
|
char v1 = *(char *)a2; // 0x1e40e2b
|
|
g2 = v1;
|
|
int32_t v2; // bp-20
|
|
int32_t v3 = &v2; // 0x1e40e2f
|
|
g692 = v3;
|
|
v2 = g3;
|
|
g6 = 0;
|
|
int32_t v4;
|
|
int32_t v5;
|
|
int32_t v6; // 0x1e40f5510
|
|
if (v1 == 97) {
|
|
v4 = 265;
|
|
goto lab_0x1e40e64;
|
|
} else {
|
|
if (v1 == 114) {
|
|
// 0x1e40e52
|
|
v6 = 0;
|
|
v5 = g457 | 1;
|
|
goto lab_0x1e40e6d;
|
|
} else {
|
|
if (v1 != 119) {
|
|
// 0x1e40e41
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
v4 = 769;
|
|
goto lab_0x1e40e64;
|
|
}
|
|
}
|
|
lab_0x1e40e64:
|
|
// 0x1e40e64
|
|
v6 = v4;
|
|
v5 = g457 | 2;
|
|
goto lab_0x1e40e6d;
|
|
lab_0x1e40e6d:
|
|
// 0x1e40e6d
|
|
g8 = v5;
|
|
g3 = 1;
|
|
int32_t v7 = a2 + 1; // 0x1e40e72
|
|
g5 = v7;
|
|
int32_t v8; // 0x1e40f7c
|
|
if (*(char *)v7 != 0) {
|
|
int32_t v9 = v5; // 0x1e40ec3
|
|
int32_t v10 = v6; // 0x1e40ec0
|
|
int32_t v11 = 1; // 0x1e40e7d
|
|
while (true) {
|
|
if (v11 == 0) {
|
|
v8 = v10;
|
|
// break -> 0x1e40f6e
|
|
break;
|
|
}
|
|
int32_t v12 = (int32_t)*(char *)v7; // 0x1e40e85
|
|
int32_t v13 = v12 - 43; // 0x1e40e88
|
|
g2 = v13;
|
|
unsigned char v14 = *(char *)(v12 + (int32_t)&g20 - 43); // 0x1e40e98
|
|
g2 = (int32_t)v14 | v13 & -256;
|
|
int32_t v15; // 0x1e40e7d4
|
|
int32_t v16; // 0x1e40f559
|
|
int32_t v17; // 0x1e40ecc
|
|
switch (v3) {
|
|
case 0: {
|
|
if ((v10 & 2) == 0) {
|
|
// 0x1e40ec0
|
|
v17 = v9 & -132 | 128;
|
|
g8 = v17;
|
|
v16 = v10 & -4 | 2;
|
|
v15 = v11;
|
|
} else {
|
|
// 0x1e40eb9
|
|
g3 = 0;
|
|
v17 = v9;
|
|
v16 = v10;
|
|
v15 = 0;
|
|
}
|
|
// break -> 0x1e40f64
|
|
break;
|
|
}
|
|
case 8: {
|
|
if ((v10 & 0xc000) == 0) {
|
|
// 0x1e40f5e
|
|
v17 = v9;
|
|
v16 = v10 | 0x4000;
|
|
v15 = v11;
|
|
} else {
|
|
// 0x1e40f5a
|
|
g3 = 0;
|
|
v17 = v9;
|
|
v16 = v10;
|
|
v15 = 0;
|
|
}
|
|
// break -> 0x1e40f64
|
|
break;
|
|
}
|
|
case 4: {
|
|
if ((v10 & 0x1000) == 0) {
|
|
// 0x1e40f12
|
|
v17 = v9;
|
|
v16 = v10 | 0x1000;
|
|
v15 = v11;
|
|
} else {
|
|
// 0x1e40f0e
|
|
g3 = 0;
|
|
v17 = v9;
|
|
v16 = v10;
|
|
v15 = 0;
|
|
}
|
|
// break -> 0x1e40f64
|
|
break;
|
|
}
|
|
default: {
|
|
// 0x1e40ead
|
|
g3 = 0;
|
|
// break -> 0x1e40f64
|
|
break;
|
|
}
|
|
}
|
|
int32_t v18 = v7 + 1; // 0x1e40f64
|
|
g5 = v18;
|
|
if (*(char *)v18 == 0) {
|
|
v8 = v16;
|
|
// break -> 0x1e40f6e
|
|
break;
|
|
}
|
|
v9 = v17;
|
|
v10 = v16;
|
|
v7 = v18;
|
|
v11 = v15;
|
|
}
|
|
} else {
|
|
v8 = v6;
|
|
}
|
|
// 0x1e40f6e
|
|
g2 = a3;
|
|
g5 = a1;
|
|
int32_t v19 = function_1e42650(a1, v8, a3, 420); // 0x1e40f7e
|
|
g2 = v19;
|
|
g7 = v19;
|
|
if (v19 < 0) {
|
|
// 0x1e40f8c
|
|
g2 = 0;
|
|
g3 = v2;
|
|
return 0;
|
|
}
|
|
// 0x1e40f96
|
|
g2 = a4;
|
|
g5 = 0;
|
|
g146++;
|
|
g3 = v2;
|
|
*(int32_t *)(a4 + 12) = g8;
|
|
*(int32_t *)(g2 + 4) = g5;
|
|
*(int32_t *)g2 = g5;
|
|
*(int32_t *)(g2 + 8) = g5;
|
|
*(int32_t *)(g2 + 28) = g5;
|
|
*(int32_t *)(g2 + 16) = v19;
|
|
return g2;
|
|
}
|
|
|
|
// Address range: 0x1e41030 - 0x1e41111
|
|
int32_t function_1e41030(int32_t a1, int32_t a2) {
|
|
// 0x1e41030
|
|
g8 = 0;
|
|
int32_t v1 = g3; // bp-16
|
|
g6 = 0;
|
|
g2 = function_1e22490(2);
|
|
int32_t v2; // 0x1e410eb
|
|
if (g675 > g6) {
|
|
// 0x1e4104e
|
|
g4 = 0;
|
|
g3 = 131;
|
|
int32_t v3 = g675; // 0x1e4108b5
|
|
int32_t v4 = &v1; // 0x1e4109f
|
|
int32_t v5 = 0; // 0x1e4105a
|
|
while (true) {
|
|
// 0x1e41055
|
|
g2 = g673;
|
|
int32_t v6 = *(int32_t *)(g673 + v5); // 0x1e4105a
|
|
g2 = v6;
|
|
if (v6 == 0) {
|
|
// break -> 0x1e4109f
|
|
break;
|
|
}
|
|
// 0x1e41061
|
|
int32_t v7; // 0x1e41087
|
|
int32_t v8; // 0x1e410662
|
|
int32_t v9; // 0x1e4108b
|
|
if ((g3 & *(int32_t *)(v6 + 12)) == 0) {
|
|
// 0x1e41066
|
|
*(int32_t *)(v4 - 4) = v6;
|
|
*(int32_t *)(v4 - 8) = g8;
|
|
function_1e22560((int32_t)&g708, (int32_t)&g708);
|
|
g2 = g673;
|
|
int32_t v10 = *(int32_t *)(g4 + g673); // 0x1e41075
|
|
g2 = v10;
|
|
if ((g3 & *(int32_t *)(v10 + 12)) == 0) {
|
|
// 0x1e41095
|
|
g2 = g673;
|
|
int32_t v11 = *(int32_t *)(4 * g8 + g673); // 0x1e4109a
|
|
g6 = v11;
|
|
v2 = v11;
|
|
goto lab_0x1e410e5_2;
|
|
}
|
|
// 0x1e4107d
|
|
*(int32_t *)(g9 + 4) = v10;
|
|
*(int32_t *)g9 = g8;
|
|
g2 = function_1e225d0((int32_t)&g708, (int32_t)&g708);
|
|
v9 = g675;
|
|
v7 = g4;
|
|
v8 = g9 + 8;
|
|
} else {
|
|
v9 = v3;
|
|
v7 = v5;
|
|
v8 = v4;
|
|
}
|
|
int32_t v12 = v7 + 4; // 0x1e41087
|
|
g4 = v12;
|
|
int32_t v13 = g8 + 1; // 0x1e4108a
|
|
g8 = v13;
|
|
if (v13 >= v9) {
|
|
// 0x1e410e5
|
|
v2 = g6;
|
|
goto lab_0x1e410e5_2;
|
|
}
|
|
v3 = v9;
|
|
v4 = v8;
|
|
v5 = v12;
|
|
}
|
|
// 0x1e4109f
|
|
*(int32_t *)(v4 - 4) = 56;
|
|
int32_t v14 = function_1e22670((int32_t)&g708); // 0x1e410a1
|
|
g2 = v14;
|
|
*(int32_t *)(4 * g8 + g673) = v14;
|
|
g5 = g673;
|
|
int32_t v15 = *(int32_t *)(4 * g8 + g673); // 0x1e410b8
|
|
g2 = v15;
|
|
if (v15 == 0) {
|
|
// 0x1e410e5
|
|
v2 = g6;
|
|
goto lab_0x1e410e5_2;
|
|
} else {
|
|
int32_t v16 = v15 + 32; // 0x1e410bf
|
|
g2 = v16;
|
|
*(int32_t *)(g9 - 4) = v16;
|
|
InitializeCriticalSection((struct _RTL_CRITICAL_SECTION *)&g708);
|
|
g2 = &g708;
|
|
g5 = g673;
|
|
int32_t v17 = *(int32_t *)(4 * g8 + g673) + 32; // 0x1e410d2
|
|
g2 = v17;
|
|
*(int32_t *)(g9 - 4) = v17;
|
|
EnterCriticalSection((struct _RTL_CRITICAL_SECTION *)&g708);
|
|
g2 = &g708;
|
|
g5 = g673;
|
|
int32_t v18 = *(int32_t *)(4 * g8 + g673); // 0x1e410e2
|
|
g6 = v18;
|
|
v2 = v18;
|
|
goto lab_0x1e410e5_2;
|
|
}
|
|
} else {
|
|
// 0x1e410e5
|
|
v2 = g6;
|
|
goto lab_0x1e410e5_2;
|
|
}
|
|
lab_0x1e410e5_2:
|
|
// 0x1e410e5
|
|
g2 = 0;
|
|
if (v2 != 0) {
|
|
// 0x1e410eb
|
|
*(int32_t *)(v2 + 4) = 0;
|
|
*(int32_t *)(g6 + 12) = g2;
|
|
*(int32_t *)(g6 + 8) = g2;
|
|
*(int32_t *)g6 = g2;
|
|
*(int32_t *)(g6 + 28) = g2;
|
|
*(int32_t *)(g6 + 16) = -1;
|
|
}
|
|
// 0x1e41100
|
|
*(int32_t *)(g9 - 4) = 2;
|
|
function_1e22500((int32_t)&g708);
|
|
int32_t result = g6; // 0x1e4110a
|
|
g2 = result;
|
|
g3 = *(int32_t *)(g9 + 4);
|
|
g6 = *(int32_t *)(g9 + 8);
|
|
g4 = *(int32_t *)(g9 + 16);
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e41120 - 0x1e41123
|
|
int32_t function_1e41120(void) {
|
|
// 0x1e41120
|
|
g2 = 0;
|
|
return 0;
|
|
}
|
|
|
|
// Address range: 0x1e41130 - 0x1e4119e
|
|
int32_t function_1e41130(int32_t result, int32_t a2, int32_t a3) {
|
|
int32_t v1 = g8; // 0x1e41137
|
|
if (g126 == 0) {
|
|
// 0x1e4113b
|
|
g2 = result;
|
|
if (result < 65) {
|
|
// 0x1e4119b
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
if (result > 90) {
|
|
// 0x1e4119b
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
int32_t result2 = result + 32; // 0x1e41149
|
|
g2 = result2;
|
|
return result2;
|
|
}
|
|
// 0x1e4114f
|
|
if (g671 == 0) {
|
|
// 0x1e41169
|
|
g8 = 0;
|
|
g672++;
|
|
} else {
|
|
// 0x1e41158
|
|
g8 = 1;
|
|
g2 = function_1e22490(19);
|
|
}
|
|
// 0x1e41171
|
|
g2 = result;
|
|
int32_t result3 = function_1e411a0(result); // 0x1e41176
|
|
g2 = result3;
|
|
if (g8 == 0) {
|
|
// 0x1e41193
|
|
g2 = result3;
|
|
g672--;
|
|
// 0x1e4119b
|
|
g8 = v1;
|
|
return result3;
|
|
}
|
|
// 0x1e41184
|
|
function_1e22500(19);
|
|
g2 = result3;
|
|
g8 = v1;
|
|
return result3;
|
|
}
|
|
|
|
// Address range: 0x1e411a0 - 0x1e41285
|
|
int32_t function_1e411a0(int32_t a1) {
|
|
int32_t v1 = g4; // 0x1e411aa
|
|
g4 = a1;
|
|
if (g126 == 0) {
|
|
int32_t result; // 0x1e411be
|
|
if (a1 < 65) {
|
|
result = a1;
|
|
// 0x1e411be
|
|
g2 = result;
|
|
g4 = v1;
|
|
return result;
|
|
}
|
|
if (a1 <= 90) {
|
|
// 0x1e411bb
|
|
result = a1 + 32;
|
|
} else {
|
|
result = a1;
|
|
}
|
|
// 0x1e411be
|
|
g2 = result;
|
|
g4 = v1;
|
|
return result;
|
|
}
|
|
int32_t v2;
|
|
int32_t v3; // 0x1e41239
|
|
if (a1 < 256) {
|
|
// 0x1e411cd
|
|
int32_t result2;
|
|
int32_t v4; // 0x1e411d9
|
|
if (g442 > 1) {
|
|
// 0x1e411d6
|
|
v4 = function_1e40120(a1, 1);
|
|
g2 = v4;
|
|
result2 = g4;
|
|
} else {
|
|
int32_t v5 = (int32_t)g122; // 0x1e411e3
|
|
g5 = v5;
|
|
g2 = 0;
|
|
int32_t v6 = (int32_t)*(int16_t *)(v5 + 2 * a1) & 1; // 0x1e411ef
|
|
g2 = v6;
|
|
result2 = a1;
|
|
v4 = v6;
|
|
}
|
|
if (v4 == 0) {
|
|
// 0x1e411f6
|
|
g2 = result2;
|
|
g4 = v1;
|
|
return result2;
|
|
}
|
|
// 0x1e411f2
|
|
v3 = g126;
|
|
v2 = result2;
|
|
} else {
|
|
v3 = g126;
|
|
v2 = a1;
|
|
}
|
|
int32_t v7 = v2 / 256 & 255; // 0x1e411fd
|
|
int32_t v8 = g5 & -256 | v7; // 0x1e411fd
|
|
g5 = v8;
|
|
int32_t v9 = (int32_t)g122; // 0x1e41203
|
|
g2 = v9;
|
|
char v10 = *(char *)(v9 + (2 * v7 | 1)); // 0x1e41208
|
|
int32_t v11 = v10 > -1 ? v2 : v8; // bp-4
|
|
int32_t v12; // bp-8
|
|
g5 = &v12;
|
|
g7 = v3;
|
|
g2 = &v11;
|
|
int32_t v13 = function_1e43b10(v3, 256, (char *)&v11, 2 - (int32_t)(v10 > -1), &v12, 3, 0); // 0x1e4124c
|
|
g2 = v13;
|
|
if (v13 == 0) {
|
|
int32_t result3 = g4; // 0x1e41258
|
|
g2 = result3;
|
|
g4 = v1;
|
|
return result3;
|
|
}
|
|
// 0x1e4125f
|
|
g2 = 0;
|
|
if (v13 == 1) {
|
|
int32_t result4 = v12 & 255; // 0x1e41266
|
|
g2 = result4;
|
|
g4 = v1;
|
|
return result4;
|
|
}
|
|
int32_t v14 = v12 & 255; // 0x1e41277
|
|
g5 = v14;
|
|
g4 = v1;
|
|
unsigned char v15;
|
|
int32_t result5 = v14 | 256 * (int32_t)v15; // 0x1e4127f
|
|
g2 = result5;
|
|
return result5;
|
|
}
|
|
|
|
// Address range: 0x1e41290 - 0x1e41299
|
|
int32_t function_1e41290(void) {
|
|
// 0x1e41290
|
|
g2 = function_1e412cc((int32_t)&g708);
|
|
uint32_t v1 = g5; // 0x1e41295
|
|
g5 = v1 / 256 & 255 | v1 & -0x10000 | 256 * v1 & 0xff00;
|
|
int32_t result = function_1e412bb(); // 0x1e41297
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e41299 - 0x1e412a2
|
|
int32_t function_1e41299(void) {
|
|
// 0x1e41299
|
|
g2 = function_1e412cc((int32_t)&g708);
|
|
int32_t result = function_1e412bb(); // 0x1e412a0
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e412a2 - 0x1e412ac
|
|
int32_t function_1e412a2(void) {
|
|
// 0x1e412a2
|
|
float80_t v1; // st7
|
|
g684 = fabsl(v1);
|
|
int32_t v2 = g5; // 0x1e412a6
|
|
g5 = 256 * v2 & 0xff00 | v2 & -0x10000;
|
|
int32_t result = function_1e412bb(); // 0x1e412aa
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e412bb - 0x1e412cc
|
|
int32_t function_1e412bb(void) {
|
|
int32_t result = __asm_fpatan(); // 0x1e412bb
|
|
g2 = result;
|
|
if ((char)g5 != 0) {
|
|
// 0x1e412c1
|
|
g684 = 0.0L;
|
|
}
|
|
// 0x1e412cb
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e412cc - 0x1e412fc
|
|
int32_t function_1e412cc(int32_t a1) {
|
|
// 0x1e412cc
|
|
g684 = fabsl(g684);
|
|
g11--;
|
|
g2 = __asm_wait();
|
|
int32_t v1 = __asm_fnstsw_1(); // 0x1e412e1
|
|
g2 = v1;
|
|
*(int32_t *)(g3 - 160) = v1;
|
|
int32_t result = __asm_wait(); // 0x1e412e7
|
|
g2 = result;
|
|
if ((*(char *)(g3 - 159) & 1) == 0) {
|
|
// 0x1e412f1
|
|
g5 &= -0xff01;
|
|
return result;
|
|
}
|
|
// 0x1e412f6
|
|
g2 = a1;
|
|
int32_t result2 = function_1e43f16(); // 0x1e412f7
|
|
g2 = result2;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e412fc - 0x1e41305
|
|
float80_t function_1e412fc(void) {
|
|
// 0x1e412fc
|
|
return g472;
|
|
}
|
|
|
|
// Address range: 0x1e41305 - 0x1e4131b
|
|
int32_t function_1e41305(void) {
|
|
// 0x1e41305
|
|
if ((char)g5 != 0) {
|
|
// 0x1e41315
|
|
return g2;
|
|
}
|
|
float80_t v1 = function_1e43e76(); // 0x1e41316
|
|
g2 = (float32_t)v1;
|
|
return (float32_t)v1;
|
|
}
|
|
|
|
// Address range: 0x1e4131b - 0x1e41322
|
|
float80_t function_1e4131b(void) {
|
|
// 0x1e4131b
|
|
float80_t result; // st7
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e41322 - 0x1e41332
|
|
int32_t function_1e41322(void) {
|
|
uint32_t v1 = g5; // 0x1e41324
|
|
g5 = v1 / 256 & 255 | v1 & -256;
|
|
float80_t v2 = function_1e412fc(); // 0x1e41328
|
|
g684 = v2;
|
|
g2 = (float32_t)v2;
|
|
int32_t result = function_1e43f33(); // 0x1e4132d
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e413bb - 0x1e41403
|
|
int32_t function_1e413bb(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
|
|
int32_t v1 = g3; // bp-4
|
|
g3 = &v1;
|
|
g2 = __fload(a1, a2);
|
|
g2 = __fload(a3, a4);
|
|
g2 = __asm_wait();
|
|
char v2;
|
|
g2 = __trandisp2(v2 | 2);
|
|
int32_t result = function_1e41403(); // 0x1e413fb
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e41403 - 0x1e4140a
|
|
int32_t function_1e41403(void) {
|
|
char * v1 = (char *)(g3 - 712); // 0x1e41403
|
|
*v1 = *v1 & -2;
|
|
return g2;
|
|
}
|
|
|
|
// Address range: 0x1e4140a - 0x1e4153b
|
|
int32_t function_1e4140a(void) {
|
|
// 0x1e4140a
|
|
int32_t result; // 0x1e41465
|
|
if (g429 != 0) {
|
|
// 0x1e4145f
|
|
result = __asm_wait();
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t v1 = g3; // 0x1e41413
|
|
float80_t v2; // st7
|
|
*(float64_t *)(v1 - 720) = (float64_t)v2;
|
|
unsigned char v3 = *(char *)(v1 - 144); // 0x1e41419
|
|
int32_t v4 = g2; // 0x1e41419
|
|
int32_t v5 = v4 & -256 | (int32_t)v3; // 0x1e4141f
|
|
g2 = v5;
|
|
int32_t v6; // 0x1e4143d
|
|
if (v3 == 0) {
|
|
v6 = v5;
|
|
goto lab_0x1e4143d;
|
|
} else {
|
|
if (v3 == -1) {
|
|
goto lab_0x1e41467;
|
|
} else {
|
|
if (v3 == -2) {
|
|
goto lab_0x1e41467;
|
|
} else {
|
|
// 0x1e4142f
|
|
g2 = v5;
|
|
*(int32_t *)(v1 - 142) = v5;
|
|
goto lab_0x1e414d9;
|
|
}
|
|
}
|
|
}
|
|
lab_0x1e4143d:;
|
|
uint16_t v7 = *(int16_t *)(v1 - 164) & 32; // 0x1e41444
|
|
g2 = (int32_t)v7 | v6 & -0x10000;
|
|
if (v7 != 0) {
|
|
// 0x1e4145f
|
|
result = __asm_wait();
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
// 0x1e4144a
|
|
g2 = __asm_wait();
|
|
int16_t v8 = __asm_fnstsw(g10); // 0x1e4144b
|
|
uint16_t v9 = v8 & 32; // 0x1e4144d
|
|
g2 = (g2 | (int32_t)v8) & -0x10000 | (int32_t)v9;
|
|
if (v9 == 0) {
|
|
// 0x1e4145f
|
|
result = __asm_wait();
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
// 0x1e41453
|
|
*(int32_t *)(g3 - 142) = 8;
|
|
goto lab_0x1e414d9;
|
|
lab_0x1e414d9:;
|
|
int32_t v10 = g8; // 0x1e414d9
|
|
int32_t v11 = g6; // 0x1e414da
|
|
int32_t v12 = g3; // 0x1e414db
|
|
int32_t v13 = *(int32_t *)(v12 - 148) + 1; // 0x1e414e1
|
|
*(int32_t *)(v12 - 138) = v13;
|
|
int32_t v14 = g3; // 0x1e414e8
|
|
if ((*(char *)(v14 - 712) & 1) == 0) {
|
|
// 0x1e414f1
|
|
g1 = false;
|
|
int32_t v15 = v14 + 8; // 0x1e414f2
|
|
int32_t v16 = v14 - 134; // 0x1e414f5
|
|
*(int32_t *)v16 = *(int32_t *)v15;
|
|
int32_t v17 = v16 + 4; // 0x1e414fb
|
|
int32_t v18 = v15 + 4; // 0x1e414fb
|
|
*(int32_t *)v17 = *(int32_t *)v18;
|
|
g6 = v17 + 4;
|
|
g8 = v18 + 4;
|
|
if (*(char *)(v13 + 12) != 1) {
|
|
int32_t v19 = g3; // 0x1e41503
|
|
int32_t v20 = v19 + 16; // 0x1e41503
|
|
int32_t v21 = v19 - 126; // 0x1e41506
|
|
*(int32_t *)v21 = *(int32_t *)v20;
|
|
int32_t v22 = v21 + 4; // 0x1e41509
|
|
int32_t v23 = v20 + 4; // 0x1e41509
|
|
*(int32_t *)v22 = *(int32_t *)v23;
|
|
g6 = v22 + 4;
|
|
g8 = v23 + 4;
|
|
}
|
|
}
|
|
int32_t v24 = g3; // 0x1e4150b
|
|
*(float64_t *)(v24 - 118) = (float64_t)v2;
|
|
int3_t v25; // fpu_stat_TOP
|
|
g11 = v25 + 1;
|
|
int32_t v26 = v24 - 142; // 0x1e4150e
|
|
g2 = v26;
|
|
int32_t v27 = *(int32_t *)(v24 - 148); // 0x1e4151c
|
|
g4 = v27;
|
|
int32_t v28 = (int32_t)*(char *)(v27 + 14) | v26 & -256; // 0x1e41522
|
|
g2 = v28;
|
|
g2 = function_1e43f40(v28, v26, v24 - 164, v11, v10);
|
|
// 0x1e4145f
|
|
result = __asm_wait();
|
|
g2 = result;
|
|
return result;
|
|
lab_0x1e41467:;
|
|
uint16_t v29 = *(int16_t *)(v1 - 714) & 0x7ff0; // 0x1e4146e
|
|
int32_t v30 = (int32_t)v29 | v4 & -0x10000; // 0x1e4146e
|
|
g2 = v30;
|
|
if (v29 == 0) {
|
|
// 0x1e4147f
|
|
*(int32_t *)(v1 - 142) = 4;
|
|
g2 = __asm_fscale();
|
|
v2 = fabsl(1536.0L);
|
|
g2 = __asm_wait();
|
|
uint32_t v31 = (int32_t)__asm_fnstsw(g10); // 0x1e414a0
|
|
g2 = g2 & -0x10000 | v31;
|
|
if ((v31 / 256 & 1) != 0) {
|
|
// 0x1e414a5
|
|
v2 = 0.0L;
|
|
}
|
|
goto lab_0x1e414d9;
|
|
} else {
|
|
if (v29 == 0x7ff0) {
|
|
// 0x1e414ad
|
|
*(int32_t *)(v1 - 142) = 3;
|
|
g2 = __asm_fscale();
|
|
v2 = fabsl(-1536.0L);
|
|
g2 = __asm_wait();
|
|
uint32_t v32 = (int32_t)__asm_fnstsw(g10); // 0x1e414ce
|
|
g2 = g2 & -0x10000 | v32;
|
|
if ((v32 / 256 & 65) == 0) {
|
|
// 0x1e414d3
|
|
v2 *= INFINITY;
|
|
}
|
|
goto lab_0x1e414d9;
|
|
} else {
|
|
v6 = v30;
|
|
goto lab_0x1e4143d;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Address range: 0x1e4153b - 0x1e4156e
|
|
int32_t function_1e4153b(int32_t a1, int32_t a2) {
|
|
int32_t v1 = g3; // bp-4
|
|
g3 = &v1;
|
|
g2 = __fload(a1, a2);
|
|
g2 = __asm_wait();
|
|
char v2;
|
|
g2 = __trandisp1(v2 & -3);
|
|
int32_t result = function_1e41403(); // 0x1e41566
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e415b0 - 0x1e4160b
|
|
int32_t function_1e415b0(int32_t a1, int32_t a2, int32_t a3) {
|
|
int32_t v1 = g8; // 0x1e415b7
|
|
int32_t v2 = g6; // bp-8
|
|
if (g671 == 0) {
|
|
// 0x1e415cc
|
|
g8 = 0;
|
|
g672++;
|
|
} else {
|
|
// 0x1e415bb
|
|
g8 = 1;
|
|
g2 = function_1e22490(19);
|
|
}
|
|
// 0x1e415d4
|
|
g2 = a3;
|
|
g5 = a2;
|
|
g7 = a1;
|
|
int32_t result = function_1e41610(a1, a2, a3); // 0x1e415e3
|
|
g2 = result;
|
|
if (g8 == 0) {
|
|
// 0x1e41600
|
|
g2 = result;
|
|
g672--;
|
|
g6 = v2;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
// 0x1e415f1
|
|
function_1e22500(19);
|
|
g2 = result;
|
|
g6 = v2;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
|
|
// Address range: 0x1e41610 - 0x1e41715
|
|
int32_t function_1e41610(int32_t lpWideCharStr, int32_t a2, uint32_t a3) {
|
|
int32_t v1 = g8; // 0x1e41610
|
|
if (a2 == 0) {
|
|
// 0x1e41710
|
|
g2 = 0;
|
|
g8 = v1;
|
|
return 0;
|
|
}
|
|
// 0x1e4161e
|
|
g6 = a3;
|
|
if (a3 == 0) {
|
|
// 0x1e41710
|
|
g2 = 0;
|
|
g8 = v1;
|
|
return 0;
|
|
}
|
|
char * lpMultiByteStr = (char *)a2; // 0x1e4162a
|
|
unsigned char v2 = *lpMultiByteStr; // 0x1e4162a
|
|
int32_t v3 = v2; // 0x1e4162a
|
|
int32_t v4 = g2 & -256 | v3; // 0x1e4162a
|
|
g2 = v4;
|
|
if (v2 == 0) {
|
|
// 0x1e41630
|
|
g5 = lpWideCharStr;
|
|
if (lpWideCharStr != 0) {
|
|
// 0x1e41638
|
|
*(int16_t *)lpWideCharStr = 0;
|
|
}
|
|
// 0x1e4163d
|
|
g2 = 0;
|
|
g8 = v1;
|
|
return 0;
|
|
}
|
|
// 0x1e41642
|
|
if (g126 == 0) {
|
|
// 0x1e4164b
|
|
g5 = lpWideCharStr;
|
|
if (lpWideCharStr != 0) {
|
|
int32_t v5 = v4 & -0xff01; // 0x1e41653
|
|
g2 = v5;
|
|
*(int16_t *)lpWideCharStr = (int16_t)v5;
|
|
}
|
|
// 0x1e4165a
|
|
g2 = 1;
|
|
g8 = v1;
|
|
return 1;
|
|
}
|
|
// 0x1e41662
|
|
g5 = v3;
|
|
int32_t v6 = (int32_t)g122; // 0x1e41666
|
|
g2 = v6;
|
|
if (*(char *)(v6 + (2 * v3 || 1)) > -1) {
|
|
int32_t cchWideChar = (int32_t)(lpWideCharStr == 0) + 1; // 0x1e416dc
|
|
g2 = cchWideChar;
|
|
int32_t CodePage = (int32_t)g130; // 0x1e416e1
|
|
g5 = CodePage;
|
|
int32_t v7 = MultiByteToWideChar(CodePage, 9, lpMultiByteStr, 1, (int16_t *)lpWideCharStr, cchWideChar); // 0x1e416eb
|
|
g2 = v7;
|
|
if (v7 != 0) {
|
|
// 0x1e41708
|
|
g2 = 1;
|
|
g8 = 9;
|
|
return 1;
|
|
}
|
|
// 0x1e416f5
|
|
*(int32_t *)function_1e23ad0() = 42;
|
|
g2 = -1;
|
|
g8 = 9;
|
|
return -1;
|
|
}
|
|
// 0x1e41672
|
|
int32_t result; // 0x1e416b8
|
|
int32_t v8; // 0x1e416b81112
|
|
int32_t v9; // 0x1e416aa
|
|
if (g442 > 1) {
|
|
if (g442 > a3) {
|
|
if (g442 > a3) {
|
|
goto lab_0x1e416c0;
|
|
} else {
|
|
v8 = g442;
|
|
goto lab_0x1e416b2;
|
|
}
|
|
} else {
|
|
int32_t cchWideChar2 = (int32_t)(lpWideCharStr == 0) + 1; // 0x1e4168c
|
|
g2 = cchWideChar2;
|
|
int32_t CodePage2 = (int32_t)g130; // 0x1e4168d
|
|
g7 = CodePage2;
|
|
g5 = g442;
|
|
int32_t v10 = MultiByteToWideChar(CodePage2, 9, lpMultiByteStr, g442, (int16_t *)lpWideCharStr, cchWideChar2); // 0x1e416a0
|
|
g2 = v10;
|
|
if (v10 != 0) {
|
|
result = g442;
|
|
// 0x1e416b8
|
|
g2 = result;
|
|
g8 = *(int32_t *)(g9 + 4);
|
|
return result;
|
|
}
|
|
v9 = g442;
|
|
goto lab_0x1e416aa;
|
|
}
|
|
} else {
|
|
v9 = g442;
|
|
goto lab_0x1e416aa;
|
|
}
|
|
lab_0x1e416aa:
|
|
if (v9 > a3) {
|
|
goto lab_0x1e416c0;
|
|
} else {
|
|
v8 = v9;
|
|
goto lab_0x1e416b2;
|
|
}
|
|
lab_0x1e416c0:;
|
|
int32_t v11 = function_1e23ad0(); // 0x1e416c0
|
|
g2 = v11;
|
|
*(int32_t *)v11 = 42;
|
|
g2 = -1;
|
|
g8 = *(int32_t *)g9;
|
|
return -1;
|
|
lab_0x1e416b2:
|
|
// 0x1e416b2
|
|
if (*(char *)(a2 + 1) != 0) {
|
|
result = v8;
|
|
// 0x1e416b8
|
|
g2 = result;
|
|
g8 = *(int32_t *)(g9 + 4);
|
|
return result;
|
|
}
|
|
goto lab_0x1e416c0;
|
|
}
|
|
|
|
// Address range: 0x1e41720 - 0x1e4174d
|
|
int32_t function_1e41720(int32_t a1) {
|
|
// 0x1e41720
|
|
if (g442 > 1) {
|
|
// 0x1e41729
|
|
g5 = a1;
|
|
int32_t result = function_1e40120(a1, 8); // 0x1e41730
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t v1 = (int32_t)g122; // 0x1e41739
|
|
g7 = v1;
|
|
g2 = 0;
|
|
g5 = a1;
|
|
int32_t result2 = (int32_t)*(int16_t *)(v1 + 2 * a1) & 8; // 0x1e41749
|
|
g2 = result2;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e41750 - 0x1e41782
|
|
int32_t function_1e41750(int32_t a1) {
|
|
// 0x1e41750
|
|
if (g442 > 1) {
|
|
// 0x1e41759
|
|
g5 = a1;
|
|
int32_t result = function_1e40120(a1, 263); // 0x1e41763
|
|
g2 = result;
|
|
return result;
|
|
}
|
|
int32_t v1 = (int32_t)g122; // 0x1e4176c
|
|
g7 = v1;
|
|
g2 = 0;
|
|
g5 = a1;
|
|
int32_t result2 = (int32_t)*(int16_t *)(v1 + 2 * a1) & 263; // 0x1e4177c
|
|
g2 = result2;
|
|
return result2;
|
|
}
|
|
|
|
// Address range: 0x1e41790 - 0x1e41885
|
|
int32_t function_1e41790(int32_t a1) {
|
|
int32_t v1 = g8; // 0x1e41790
|
|
g8 = a1;
|
|
int32_t * v2 = (int32_t *)(a1 + 12); // 0x1e41795
|
|
int32_t v3 = *v2; // 0x1e41795
|
|
g2 = v3;
|
|
if ((v3 & 131) == 0) {
|
|
// 0x1e4187e
|
|
g2 = -1;
|
|
g8 = v1;
|
|
return -1;
|
|
}
|
|
if ((v3 & 64) != 0) {
|
|
// 0x1e4187e
|
|
g2 = -1;
|
|
g8 = v1;
|
|
return -1;
|
|
}
|
|
if ((v3 & 2) != 0) {
|
|
// 0x1e417ac
|
|
*v2 = v3 | 32;
|
|
g2 = -1;
|
|
g8 = v1;
|
|
return -1;
|
|
}
|
|
int32_t v4 = v3 | 1; // 0x1e417b9
|
|
g2 = v4;
|
|
*v2 = v4;
|
|
int32_t v5 = g8; // 0x1e417d1
|
|
if ((g2 & 268) != 0) {
|
|
int32_t v6 = *(int32_t *)(v5 + 8); // 0x1e417d1
|
|
g2 = v6;
|
|
*(int32_t *)v5 = v6;
|
|
} else {
|
|
// 0x1e417c6
|
|
g2 = function_1e41920(v5);
|
|
}
|
|
int32_t v7 = g8; // 0x1e417d6
|
|
int32_t v8 = *(int32_t *)(v7 + 24); // 0x1e417d6
|
|
g2 = v8;
|
|
int32_t v9 = *(int32_t *)(v7 + 8); // 0x1e417d9
|
|
g5 = v9;
|
|
int32_t v10 = *(int32_t *)(v7 + 16); // 0x1e417dd
|
|
g7 = v10;
|
|
int32_t v11 = function_1e44060(v10, v9, v8); // 0x1e417e2
|
|
g2 = v11;
|
|
*(int32_t *)(g8 + 4) = v11;
|
|
if (v11 != 0) {
|
|
if (v11 != -1) {
|
|
int32_t * v12 = (int32_t *)(g8 + 12); // 0x1e417f6
|
|
int32_t v13 = *v12; // 0x1e417f6
|
|
g7 = v13;
|
|
int32_t v14; // 0x1e4184b
|
|
if ((v13 & 130) == 0) {
|
|
int32_t v15 = *(int32_t *)(g8 + 16); // 0x1e417fe
|
|
g5 = v15;
|
|
g2 = &g112;
|
|
int32_t v16; // 0x1e41822
|
|
if (v15 != -1) {
|
|
int32_t v17 = v15 / 8 & -4; // 0x1e41816
|
|
g2 = v17;
|
|
int32_t v18 = 36 * (v15 & 31); // 0x1e41819
|
|
g5 = v18;
|
|
v16 = *(int32_t *)(v17 + (int32_t)&g677) + v18;
|
|
g2 = v16;
|
|
} else {
|
|
v16 = &g112;
|
|
}
|
|
unsigned char v19 = *(char *)(v16 + 4) & -126; // 0x1e41827
|
|
g2 = (int32_t)v19 | v16 & -256;
|
|
if (v19 == -126) {
|
|
int32_t v20 = v13 | 0x2000; // 0x1e4182d
|
|
g7 = v20;
|
|
*v12 = v20;
|
|
v14 = g8;
|
|
} else {
|
|
v14 = g8;
|
|
}
|
|
} else {
|
|
v14 = g8;
|
|
}
|
|
int32_t * v21 = (int32_t *)(v14 + 24); // 0x1e41836
|
|
int32_t v22; // 0x1e41852
|
|
if (*v21 == 512) {
|
|
int32_t v23 = *(int32_t *)(v14 + 12); // 0x1e4183f
|
|
g2 = v23;
|
|
if ((v23 & 8) != 0) {
|
|
if ((v23 & 1024) == 0) {
|
|
// 0x1e4184b
|
|
*v21 = 0x1000;
|
|
v22 = g8;
|
|
} else {
|
|
v22 = v14;
|
|
}
|
|
} else {
|
|
v22 = v14;
|
|
}
|
|
} else {
|
|
v22 = v14;
|
|
}
|
|
int32_t * v24 = (int32_t *)(v22 + 4); // 0x1e41852
|
|
*v24 = *v24 - 1;
|
|
int32_t * v25 = (int32_t *)g8; // 0x1e41855
|
|
int32_t v26 = *v25; // 0x1e41855
|
|
g5 = v26;
|
|
*v25 = v26 + 1;
|
|
g2 = 0;
|
|
int32_t result = (int32_t)*(char *)g5; // 0x1e4185e
|
|
g2 = result;
|
|
g8 = v1;
|
|
return result;
|
|
}
|
|
}
|
|
int32_t v27 = v11 == 0 ? 16 : 32; // 0x1e4186a
|
|
g2 = v27;
|
|
int32_t * v28 = (int32_t *)(g8 + 12); // 0x1e4186d
|
|
*v28 = *v28 | v27;
|
|
g2 = -1;
|
|
*(int32_t *)(g8 + 4) = 0;
|
|
g8 = v1;
|
|
return g2;
|
|
}
|
|
|