Files
3d-pinball-space-cadet/pinball_20.c
T

2164 lines
68 KiB
C

#include "pinball.h"
// Address range: 0x1e3a358 - 0x1e3a3f5
int32_t function_1e3a358(int32_t a1, int32_t a2, int32_t a3) {
// 0x1e3a358
g2 = a1;
int32_t v1 = *(int32_t *)(a1 + 4); // 0x1e3a360
g5 = v1;
int32_t v2 = *(int32_t *)(a1 + 8); // 0x1e3a364
int32_t v3 = v2; // edx
int32_t v4 = *(int32_t *)a1; // 0x1e3a368
int32_t v5 = *(int32_t *)(a1 + 12); // 0x1e3a36b
int32_t v6 = v5; // edi
g2 = a2;
int32_t v7 = *(int32_t *)a2; // 0x1e3a376
g5 = v7;
int32_t v8 = *(int32_t *)(a2 + 4); // 0x1e3a378
int32_t v9 = *(int32_t *)(a2 + 8); // 0x1e3a37b
int32_t v10 = *(int32_t *)(a2 + 12); // 0x1e3a384
int32_t v11; // 0x1e3a3e1
int32_t v12; // 0x1e3a38b
if (v4 > v7) {
// 0x1e3a389
v12 = v2 - v7 + v4;
v3 = v12;
v11 = v7;
} else {
v12 = v2;
v11 = v4;
}
int32_t v13; // 0x1e3a3dc
int32_t v14; // 0x1e3a397
if (v1 > v8) {
// 0x1e3a395
v14 = v5 - v8 + v1;
v6 = v14;
v13 = v8;
} else {
v14 = v5;
v13 = v1;
}
int32_t v15 = v11 + v12; // 0x1e3a39f
g2 = v15;
if (v15 < v9 + v7) {
int32_t v16 = v9 - v11; // 0x1e3a3be
g2 = v16;
v3 = v16 + v7;
}
int32_t v17 = v10 + v8; // 0x1e3a3c7
g5 = v17;
int32_t v18 = v13 + v14; // 0x1e3a3ca
g2 = v18;
if (v18 < v17) {
// 0x1e3a3d0
v6 = v10 - v13 + v8;
}
// 0x1e3a3d8
g2 = a3;
g5 = v13;
*(int32_t *)a3 = v11;
*(int32_t *)(g2 + 4) = g5;
*(int32_t *)(g2 + 12) = v6;
*(int32_t *)(g2 + 8) = v3;
return g2;
}
// Address range: 0x1e3a3f5 - 0x1e3a408
int32_t function_1e3a3f5(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
// 0x1e3a3f5
g2 = a1;
int32_t v1 = a1 & 3; // 0x1e3a3fb
g5 = v1;
int32_t result; // 0x1e3a402
if (v1 != 0) {
// 0x1e3a400
result = a1 - v1 + 4;
g2 = result;
} else {
result = a1;
}
// 0x1e3a405
return result;
}
// Address range: 0x1e3a408 - 0x1e3a44f
int32_t function_1e3a408(int32_t a1, int32_t a2, int32_t a3) {
int32_t v1 = g8; // 0x1e3a409
g8 = a1;
int32_t v2 = g6; // 0x1e3a40e
g6 = a2;
int32_t v3 = function_1e3a3f5(a2, v2, v1, g4); // 0x1e3a414
g2 = v3;
*(int16_t *)(g8 + 4) = (int16_t)v3;
g4 = a2;
int32_t v4 = 2 * g2 * a2; // 0x1e3a427
g2 = v4;
int32_t v5 = function_1e25371(v4); // 0x1e3a42a
g2 = v5;
*(int32_t *)(g8 + 6) = v5;
int32_t result;
if (v5 != 0) {
// 0x1e3a43d
*(int16_t *)g8 = (int16_t)g6;
*(int32_t *)(g8 + 10) = v5;
*(int16_t *)(g8 + 2) = (int16_t)g4;
result = 0;
} else {
result = -1;
}
// 0x1e3a449
g2 = result;
g6 = v4;
g8 = a2;
g4 = v2;
return result;
}
// Address range: 0x1e3a44f - 0x1e3a477
int32_t function_1e3a44f(int32_t * a1) {
int32_t v1 = (int32_t)a1;
int32_t v2 = g6; // bp-4
g6 = v1;
if (a1 == NULL) {
// 0x1e3a458
g2 = -1;
// 0x1e3a473
g6 = *(int32_t *)(int32_t)&v2;
return -1;
}
int32_t v3 = *(int32_t *)(v1 + 6); // 0x1e3a45f
g2 = v3;
if (v3 != 0) {
// 0x1e3a466
g2 = function_1e25401(v3);
}
// 0x1e3a46c
g2 = 0;
*a1 = 0;
int32_t v4 = g1 ? -4 : 4; // 0x1e3a46e
int32_t v5 = v4 + v1; // 0x1e3a46e
*(int32_t *)v5 = g2;
int32_t v6 = v5 + v4; // 0x1e3a46f
*(int32_t *)v6 = g2;
*(int16_t *)(v6 + v4) = (int16_t)g2;
// 0x1e3a473
g6 = *(int32_t *)g9;
return g2;
}
// Address range: 0x1e3a477 - 0x1e3a4d9
int32_t function_1e3a477(int32_t a1, uint32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6) {
int32_t v1 = a3; // edx
int32_t v2 = g3; // bp-16
int32_t result = (int32_t)*(int16_t *)(a1 + 2) - a5 - a3; // 0x1e3a48b
g2 = result;
int32_t v3 = 2 * (result * (int32_t)*(int16_t *)(a1 + 4) + a4); // 0x1e3a498
if (a3 < 1) {
// 0x1e3a4d2
return result;
}
int32_t v4 = 0x10000 * a6; // 0x1e3a4b2
int32_t v5 = a2 / 2; // 0x1e3a4bd
int32_t v6 = v3 + *(int32_t *)(a1 + 6); // 0x1e3a4b5
int32_t result2; // 0x1e3a4ca
while (true) {
// 0x1e3a4a5
int32_t v7; // 0x1e3a4cc
int32_t v8; // 0x1e3a4cd
if (a2 >= 1) {
// 0x1e3a4a9
g2 = v4 | a6 & 0xffff;
g5 = v5;
__asm_rep_stosd_memset((char *)v6, v4 / 0x10000, v5);
int32_t v9 = g1 ? -4 : 4; // 0x1e3a4bf
int32_t v10 = (a2 & 1) != 0; // 0x1e3a4c1
g5 = v10;
__asm_rep_stosw_memset((char *)(v9 * v5 + v6), (int16_t)a6, v10);
g5 = 0;
v8 = v6 + 2 * a2;
v7 = v1;
} else {
v8 = v6;
v7 = a3;
}
// 0x1e3a4c6
result2 = (int32_t)*(int16_t *)(a1 + 4) - a2;
g2 = result2;
int32_t v11 = v7 - 1; // 0x1e3a4cc
v1 = v11;
if (v11 == 0) {
// break -> 0x1e3a4d2
break;
}
a3 = v11;
v6 = 2 * result2 + v8;
}
// 0x1e3a4d2
g3 = v2;
return result2;
}
// Address range: 0x1e3a4d9 - 0x1e3a5e4
int32_t function_1e3a4d9(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, int32_t a10, int32_t a11, int32_t a12, int32_t a13, int32_t a14) {
// 0x1e3a4d9
g2 = a3;
int32_t v1 = *(int32_t *)(a3 + 16); // 0x1e3a4e1
int32_t v2 = g3; // bp-24
int32_t v3 = *(int32_t *)(a9 + 16); // 0x1e3a4eb
int32_t v4; // 0x1e3a4f2
if (v3 < 0) {
// 0x1e3a4f2
v4 = -v3;
} else {
v4 = v3;
}
// 0x1e3a4f4
g5 = v4;
int32_t v5; // 0x1e3a502
if (v1 < 0) {
// 0x1e3a4f8
v5 = -v1;
} else {
v5 = v1;
}
// 0x1e3a4fa
g2 = a6;
int32_t v6 = v4 - a2; // 0x1e3a504
g5 = v6;
int16_t v7 = *(int16_t *)(a6 + 2); // 0x1e3a506
g2 = a12;
int32_t v8 = v6 - a11; // 0x1e3a514
g5 = v8;
int32_t v9 = (int32_t)*(int16_t *)(a12 + 2) - a2 - a14; // 0x1e3a522
g2 = a9;
int32_t * v10 = (int32_t *)(a9 + 20); // 0x1e3a52a
int32_t v11 = *(int32_t *)(a9 + 8) + *v10 * v8 + a10; // 0x1e3a537
g5 = v11;
g2 = a3;
int32_t * v12 = (int32_t *)(a3 + 20); // 0x1e3a53d
int32_t v13 = *(int32_t *)(a3 + 8) + (v5 - a2 - a5) * *v12 + a4; // 0x1e3a54a
g2 = a12;
int16_t * v14 = (int16_t *)(a12 + 4); // 0x1e3a550
int32_t v15 = 2 * ((int32_t)*v14 * v9 + a13) + *(int32_t *)(a12 + 6); // 0x1e3a55d
g2 = a6;
int16_t * v16 = (int16_t *)(a6 + 4); // 0x1e3a564
int32_t v17 = 2 * (((int32_t)v7 - a2 - a8) * (int32_t)*v16 + a7); // 0x1e3a56f
int32_t v18 = v17 + *(int32_t *)(a6 + 6); // 0x1e3a571
g2 = a2;
int32_t v19 = a2 - 1; // 0x1e3a576
if (a2 == 0) {
// 0x1e3a5da
return 0;
}
int32_t result; // 0x1e3a5d3
while (true) {
int32_t v20; // 0x1e3a5a7
int32_t v21; // 0x1e3a5ad
int32_t v22; // 0x1e3a5c3
int32_t v23; // 0x1e3a5d0
if (a1 != 0) {
int32_t v24 = v13; // 0x1e3a591
int32_t v25 = v11; // 0x1e3a58f
int32_t v26 = v18; // 0x1e3a58a
int32_t v27 = a2; // 0x1e3a587
int32_t v28 = v15; // 0x1e3a587
int32_t v29 = a1;
int32_t v30; // 0x1e3a599
int32_t v31; // 0x1e3a59a
int32_t v32; // 0x1e3a59b
int32_t v33; // 0x1e3a59e
while (true) {
uint16_t v34 = *(int16_t *)v28; // 0x1e3a587
int32_t v35 = (int32_t)v34 | v27 & -0x10000; // 0x1e3a587
g2 = v35;
int32_t v36; // 0x1e3a599
int32_t v37; // 0x1e3a59a
int32_t v38; // 0x1e3a59b
int32_t v39; // 0x1e3a59e
if (*(int16_t *)v26 >= v34) {
unsigned char v40 = *(char *)v25; // 0x1e3a58f
g2 = (int32_t)v40 | v35 & -256;
*(char *)v24 = v40;
uint16_t v41 = *(int16_t *)v15; // 0x1e3a593
g2 = g2 & -0x10000 | (int32_t)v41;
*(int16_t *)v18 = v41;
v37 = v13;
v36 = g5;
v39 = v18;
v38 = v15;
} else {
v37 = v24;
v36 = v25;
v39 = v26;
v38 = v28;
}
// 0x1e3a599
v30 = v36 + 1;
g5 = v30;
v31 = v37 + 1;
v13 = v31;
v32 = v38 + 2;
v15 = v32;
v33 = v39 + 2;
v18 = v33;
int32_t v42 = v29 - 1; // 0x1e3a5a1
if (v42 == 0) {
// break -> 0x1e3a5a7
break;
}
// 0x1e3a599
v24 = v31;
v25 = v30;
v26 = v33;
v27 = g2;
v28 = v32;
v29 = v42;
}
// 0x1e3a5a7
result = v19;
v23 = v33;
v22 = v32;
v21 = v31;
v20 = v30;
} else {
result = v19;
v23 = v18;
v22 = v15;
v21 = v13;
v20 = v11;
}
int32_t v43 = v20 - a1; // 0x1e3a5a7
g5 = v43;
g2 = a9;
int32_t v44 = *v10 + v43; // 0x1e3a5af
g5 = v44;
g2 = a3;
g2 = a12;
g2 = a6;
g2 = result;
if (result == 0) {
// break -> 0x1e3a5da
break;
}
v19 = result - 1;
v13 = *v12 + v21 - a1;
v11 = v44;
v18 = 2 * ((int32_t)*v16 - a1) + v23;
a2 = result;
v15 = 2 * ((int32_t)*v14 - a1) + v22;
}
// 0x1e3a5da
g3 = v2;
return result;
}
// Address range: 0x1e3a5e4 - 0x1e3a6a7
int32_t function_1e3a5e4(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, int32_t a10, int32_t a11, int32_t a12) {
int32_t v1 = *(int32_t *)(a3 + 16); // 0x1e3a5ee
g2 = v1;
int32_t v2 = *(int32_t *)(a9 + 16); // 0x1e3a5f7
int32_t v3; // 0x1e3a5fe
if (v2 < 0) {
// 0x1e3a5fe
v3 = -v2;
} else {
v3 = v2;
}
// 0x1e3a600
g5 = v3;
int32_t v4; // 0x1e3a604
if (v1 < 0) {
// 0x1e3a604
v4 = -v1;
g2 = v4;
} else {
v4 = v1;
}
int32_t v5 = v4 - a5 - a2; // 0x1e3a60f
g2 = v5;
int32_t v6 = v3 - a2 - a11; // 0x1e3a612
g5 = v6;
int32_t v7 = (int32_t)*(int16_t *)(a6 + 2) - a2 - a8; // 0x1e3a61f
int32_t * v8 = (int32_t *)(a9 + 20); // 0x1e3a622
int32_t v9 = *(int32_t *)(a3 + 20) * v5; // 0x1e3a62e
g5 = v9;
int32_t v10 = *(int32_t *)(a9 + 8) + *v8 * v6 + a10; // 0x1e3a631
int32_t v11 = *(int32_t *)(a3 + 8) + v9; // 0x1e3a634
g5 = v11;
int32_t v12 = a6; // ebx
int32_t result = v11 + a4; // 0x1e3a63d
g2 = result;
int16_t * v13 = (int16_t *)(a6 + 4); // 0x1e3a63f
int32_t v14 = 2 * ((int32_t)*v13 * v7 + a7); // 0x1e3a649
g5 = v14;
int32_t v15 = v14 + *(int32_t *)(a6 + 6); // 0x1e3a64b
g5 = v15;
if (a2 <= 0) {
// 0x1e3a69e
return result;
}
int32_t result2; // 0x1e3a689
while (true) {
int32_t v16; // 0x1e3a67d
int32_t v17; // 0x1e3a683
int32_t v18; // 0x1e3a699
if (a1 > 0) {
int32_t v19 = a1; // edi
int32_t v20 = a1; // 0x1e3a67a13
int32_t v21 = result; // 0x1e3a673
int32_t v22 = v15; // 0x1e3a66c
int32_t v23 = v10; // 0x1e3a671
int32_t v24; // 0x1e3a675
int32_t v25; // 0x1e3a676
int32_t v26; // 0x1e3a677
while (true) {
char * v27 = (char *)v23; // 0x1e3a663
int32_t v28; // 0x1e3a675
int32_t v29; // 0x1e3a676
int32_t v30; // 0x1e3a677
int32_t v31; // 0x1e3a67a
if (*v27 != 0) {
int32_t v32 = v12 & -0x10000 | a12 & 0xffff; // 0x1e3a668
v12 = v32;
if (*(int16_t *)v22 > (int16_t)a12) {
unsigned char v33 = *v27; // 0x1e3a671
v12 = (int32_t)v33 | v32 & -256;
*(char *)v21 = v33;
v31 = v19;
v30 = g5;
v29 = g2;
v28 = v10;
} else {
v31 = v20;
v30 = v22;
v29 = v21;
v28 = v23;
}
} else {
v31 = v20;
v30 = v22;
v29 = v21;
v28 = v23;
}
// 0x1e3a675
v24 = v28 + 1;
v10 = v24;
v25 = v29 + 1;
g2 = v25;
v26 = v30 + 2;
g5 = v26;
int32_t v34 = v31 - 1; // 0x1e3a67a
v19 = v34;
if (v34 == 0) {
// break -> 0x1e3a67d
break;
}
v20 = v34;
v21 = v25;
v22 = v26;
v23 = v24;
}
v18 = v26;
v17 = v25;
v16 = v24;
} else {
v18 = v15;
v17 = result;
v16 = v10;
}
int32_t v35 = v17 - a1; // 0x1e3a683
g2 = v35;
result2 = *(int32_t *)(a3 + 20) + v35;
g2 = result2;
v12 = a6;
int32_t v36 = a2 - 1; // 0x1e3a696
int32_t v37 = 2 * ((int32_t)*v13 - a1) + v18; // 0x1e3a699
g5 = v37;
if (v36 == 0) {
// break -> 0x1e3a69e
break;
}
a2 = v36;
result = result2;
v15 = v37;
v10 = *v8 + v16 - a1;
}
// 0x1e3a69e
return result2;
}
// Address range: 0x1e3a6a7 - 0x1e3a6ca
int32_t function_1e3a6a7(int32_t a1, int32_t a2) {
// 0x1e3a6a7
g5 = a1;
int32_t v1 = a1 + 4; // 0x1e3a6ac
int32_t v2 = *(int32_t *)v1; // 0x1e3a6af
g2 = v2;
int32_t result; // 0x1e3a6c7
if (*(int32_t *)a1 > v2) {
// 0x1e3a6b9
g7 = a2;
*(int32_t *)(a1 + 8 + 4 * v2) = a2;
int32_t * v3 = (int32_t *)v1; // 0x1e3a6c1
int32_t v4 = *v3 + 1; // 0x1e3a6c3
g2 = v4;
*v3 = v4;
result = g2;
} else {
// 0x1e3a6b5
g2 = 0;
result = 0;
}
// 0x1e3a6c6
return result;
}
// Address range: 0x1e3a6ca - 0x1e3a705
int32_t function_1e3a6ca(int32_t a1, int32_t a2) {
int32_t v1 = g6; // bp-8
int32_t v2 = a1 + 4; // 0x1e3a6d0
int32_t v3 = *(int32_t *)v2; // 0x1e3a6d0
g5 = v3;
int32_t v4 = v3 - 1; // 0x1e3a6d3
if (v4 < 0) {
lab_0x1e3a6ec_2:
// 0x1e3a6ec
g2 = 0;
// 0x1e3a6ee
return 0;
}
int32_t v5 = a1 + 8; // 0x1e3a6da
g2 = a2;
int32_t v6 = v4; // 0x1e3a6f7
int32_t v7 = 4 * v4 + v5; // 0x1e3a6e6
while (true) {
// 0x1e3a6e2
if (*(int32_t *)v7 == a2) {
// break -> 0x1e3a6f3
break;
}
int32_t v8 = v6 - 1; // 0x1e3a6e9
if (v8 < 0) {
goto lab_0x1e3a6ec_2;
}
v6 = v8;
v7 -= 4;
}
// 0x1e3a6f3
*(int32_t *)(4 * v6 + v5) = *(int32_t *)(4 * v3 + v2);
g2 = 1;
int32_t * v9 = (int32_t *)(a1 + 4); // 0x1e3a700
*v9 = *v9 - 1;
// 0x1e3a6ee
g6 = v1;
return g2;
}
// Address range: 0x1e3a705 - 0x1e3a728
int32_t function_1e3a705(int32_t a1) {
// 0x1e3a705
g8 = a1;
int32_t v1 = 4 * a1 + 12; // 0x1e3a70a
g2 = v1;
int32_t result = function_1e25371(v1); // 0x1e3a712
g2 = result;
if (result != 0) {
// 0x1e3a71b
*(int32_t *)result = g8;
*(int32_t *)(result + 4) = 0;
}
// 0x1e3a724
g8 = v1;
return result;
}
// Address range: 0x1e3a728 - 0x1e3a739
int32_t function_1e3a728(int32_t a1) {
// 0x1e3a728
g2 = a1;
int32_t result; // 0x1e3a731
if (a1 != 0) {
// 0x1e3a730
result = function_1e25401(a1);
g2 = result;
} else {
result = 0;
}
// 0x1e3a736
return result;
}
// Address range: 0x1e3a739 - 0x1e3a768
int32_t function_1e3a739(int32_t a1, int32_t a2) {
// 0x1e3a739
g2 = a1;
int32_t v1 = g8; // bp-4
int32_t v2 = &v1; // 0x1e3a73d
if (a1 == 0) {
// 0x1e3a764
g8 = *(int32_t *)v2;
return 0;
}
// 0x1e3a742
g8 = a2;
int32_t v3 = *(int32_t *)(a1 + 4) + a2; // 0x1e3a749
g5 = v3;
int32_t v4; // 0x1e3a764
int32_t result; // 0x1e3a765
if (*(int32_t *)a1 < v3) {
int32_t v5 = 4 * v3 + 12; // 0x1e3a74f
g5 = v5;
int32_t v6 = function_1e2542e(a1, v5); // 0x1e3a758
g2 = v6;
int32_t v7 = g8 + *(int32_t *)(v6 + 4); // 0x1e3a760
g5 = v7;
*(int32_t *)v6 = v7;
result = g2;
v4 = g9;
} else {
result = a1;
v4 = v2;
}
// 0x1e3a764
g8 = *(int32_t *)v4;
return result;
}
// Address range: 0x1e3a768 - 0x1e3a7a7
int32_t function_1e3a768(float80_t a1, float80_t a2, float80_t a3) {
// 0x1e3a768
g2 = (float32_t)a1;
g5 = (float32_t)a2;
int32_t v1 = (float32_t)a3; // edx
float32_t v2 = *(float32_t *)((int32_t)(float32_t)a1 + 4); // 0x1e3a774
float32_t v3 = *(float32_t *)((int32_t)(float32_t)a2 + 8); // 0x1e3a777
float32_t v4 = *(float32_t *)((int32_t)(float32_t)a2 + 4); // 0x1e3a77a
float32_t v5 = *(float32_t *)((int32_t)(float32_t)a1 + 8); // 0x1e3a77d
*(float32_t *)(int32_t)(float32_t)a3 = (float32_t)((float80_t)v2 * (float80_t)v3 - (float80_t)v4 * (float80_t)v5);
int32_t v6 = g2; // 0x1e3a784
float32_t v7 = *(float32_t *)v6; // 0x1e3a784
int32_t v8 = g5; // 0x1e3a786
float32_t v9 = *(float32_t *)(v8 + 8); // 0x1e3a786
float32_t v10 = *(float32_t *)v8; // 0x1e3a789
float32_t v11 = *(float32_t *)(v6 + 8); // 0x1e3a78b
*(float32_t *)(v1 + 4) = -(float32_t)((float80_t)v7 * (float80_t)v9 - (float80_t)v10 * (float80_t)v11);
int32_t v12 = g2; // 0x1e3a795
float32_t v13 = *(float32_t *)v12; // 0x1e3a795
int32_t v14 = g5; // 0x1e3a797
float32_t v15 = *(float32_t *)(v14 + 4); // 0x1e3a797
float32_t v16 = *(float32_t *)v14; // 0x1e3a79a
float32_t v17 = *(float32_t *)(v12 + 4); // 0x1e3a79c
*(float32_t *)(v1 + 8) = (float32_t)((float80_t)v13 * (float80_t)v15 - (float80_t)v16 * (float80_t)v17);
return g2;
}
// Address range: 0x1e3a7a7 - 0x1e3a7e5
int32_t function_1e3a7a7(int32_t * a1) {
int32_t v1 = (int32_t)a1;
g2 = v1;
float32_t v2 = *(float32_t *)a1; // 0x1e3a7ae
float32_t v3 = *(float32_t *)(v1 + 8); // 0x1e3a7b2
float32_t v4 = *(float32_t *)(v1 + 4); // 0x1e3a7ba
float32_t v5 = (float80_t)v2 * (float80_t)v2 + (float80_t)v3 * (float80_t)v3 + (float80_t)v4 * (float80_t)v4; // bp-4
uint32_t v6 = (int32_t)__asm_fnstsw(g10); // 0x1e3a7cc
int32_t result = g2 & -0x10000 | v6; // 0x1e3a7cc
g2 = result;
int3_t v7 = g11; // 0x1e3a7d9
float80_t v8;
if ((v6 / 256 & 64) == 0) {
// 0x1e3a7d9
g11 = v7 - 1;
v8 = sqrtl((float80_t)v5);
} else {
// 0x1e3a7d1
g11 = v7 - 1;
v8 = 0.0L;
}
// 0x1e3a7df
g684 = v8;
return result;
}
// Address range: 0x1e3a7e5 - 0x1e3a828
float80_t function_1e3a7e5(int32_t a1, int32_t a2, int32_t a3) {
// 0x1e3a7e5
g2 = a1;
float32_t * v1 = (float32_t *)a1; // 0x1e3a7ef
float80_t v2 = (float80_t)*v1 * (float80_t)*v1; // 0x1e3a7f1
int32_t v3 = a1 + 4; // 0x1e3a7f3
g5 = v3;
float32_t v4 = *(float32_t *)v3; // 0x1e3a7f6
float80_t result = sqrtl(v2 + (float80_t)v4 * (float80_t)v4); // 0x1e3a7fc
if (((int32_t)(float32_t)result & 0x7fffffff) != 0) {
float80_t v5 = 1.0L / result; // 0x1e3a812
*v1 = (float32_t)(v5 * (float80_t)*v1);
float32_t * v6 = (float32_t *)g5; // 0x1e3a81b
*v6 = (float32_t)(v5 * (float80_t)*v6);
}
// 0x1e3a81f
g11--;
return result;
}
// Address range: 0x1e3a828 - 0x1e3a8ce
int32_t function_1e3a828(int32_t a1, int32_t a2) {
int32_t v1 = g3; // 0x1e3a828
g5 = a2;
float80_t v2 = (float80_t)*(float32_t *)a2 - (float80_t)*(float32_t *)a1; // 0x1e3a837
float32_t v3 = *(float32_t *)(a1 + 4); // 0x1e3a83f
float80_t v4 = (float80_t)*(float32_t *)(a2 + 4) - (float80_t)v3; // 0x1e3a83f
float32_t v5 = *(float32_t *)(a1 + 12); // 0x1e3a845
float32_t v6 = *(float32_t *)(a1 + 16); // 0x1e3a84b
float80_t v7 = v2 * (float80_t)v5 + v4 * (float80_t)v6; // 0x1e3a851
uint32_t v8 = (int32_t)__asm_fnstsw(g10); // 0x1e3a85c
int32_t v9 = g2 & -0x10000 | v8; // 0x1e3a85c
g2 = v9;
int32_t result2; // 0x1e3a8b8
if ((v8 / 256 & 1) == 0) {
float80_t v10 = v2; // 0x1e3a867
g5 += 12;
int32_t result = g2 & -0x10000 | (int32_t)__asm_fnstsw(g10); // 0x1e3a877
g2 = result;
int3_t v11 = g11; // 0x1e3a879
g11 = v11 - 1;
float32_t v12 = *(float32_t *)g5; // 0x1e3a883
float80_t v13 = v7 * v7 - (v4 * v4 + v10 * v10) + (float80_t)v12; // 0x1e3a883
if ((result / 256 & 1) != 0) {
// 0x1e3a887
g684 = v7 - sqrtl(v13);
// 0x1e3a8c8
g3 = v1;
return result;
}
// 0x1e3a88e
g11 = v11;
uint32_t v14 = (int32_t)__asm_fnstsw(g10); // 0x1e3a897
int32_t v15 = g2 & -0x10000 | v14; // 0x1e3a897
g2 = v15;
if ((v14 / 256 & 1) == 0) {
float80_t v16 = v7 - sqrtl(v13); // 0x1e3a8a1
uint32_t v17 = (int32_t)__asm_fnstsw(g10); // 0x1e3a8ad
int32_t v18 = g2 & -0x10000 | v17; // 0x1e3a8ad
g2 = v18;
if ((v17 / 256 & 1) == 0) {
uint32_t v19 = (int32_t)__asm_fnstsw(g10); // 0x1e3a8b8
result2 = g2 & -0x10000 | v19;
g2 = result2;
if ((v19 / 256 & 1) == 0) {
// 0x1e3a8bd
g11--;
g684 = v16;
// 0x1e3a8c8
g3 = v1;
return result2;
}
} else {
result2 = v18;
}
} else {
result2 = v15;
}
} else {
result2 = v9;
}
// 0x1e3a8c2
g11--;
g684 = 1.0e+9L;
// 0x1e3a8c8
g3 = v1;
return result2;
}
// Address range: 0x1e3a8ce - 0x1e3a97f
int32_t function_1e3a8ce(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5) {
int32_t v1 = g3; // bp-4
g3 = &v1;
int32_t v2 = g6; // 0x1e3a8db
int32_t v3 = a1 + 12; // 0x1e3a8df
*(float32_t *)v3 = (float32_t)a4 - (float32_t)a2;
float80_t v4 = a3; // 0x1e3a8e8
float80_t v5 = (float80_t)(float32_t)a5 - v4; // 0x1e3a8e8
*(float32_t *)(a1 + 16) = (float32_t)v5;
g2 = (float32_t)function_1e3a7e5(v3, v2, g8);
float80_t v6 = -(float80_t)*(float32_t *)v3; // 0x1e3a8f7
g2 = *(int32_t *)(a1 + 16);
*(float32_t *)(a1 + 4) = (float32_t)v6;
*(int32_t *)a1 = g2;
float32_t v7 = *(float32_t *)a1; // 0x1e3a904
float80_t v8 = v4 * v6; // 0x1e3a909
float80_t v9 = -(((float80_t)(float32_t)a2 * (float80_t)v7 + v8)); // 0x1e3a90b
*(float32_t *)(a1 + 24) = (float32_t)v9;
g11++;
uint32_t v10 = (int32_t)__asm_fnstsw(g10); // 0x1e3a91b
g2 = g2 & -0x10000 | v10;
if ((v10 / 256 & 1) == 0) {
goto lab_0x1e3a955;
} else {
uint32_t v11 = (int32_t)__asm_fnstsw(g10); // 0x1e3a929
g2 = g2 & -0x10000 | v11;
if ((v11 / 256 & 65) == 0) {
// 0x1e3a92e
*(int32_t *)v3 = 0;
uint32_t v12 = (int32_t)__asm_fnstsw(g10); // 0x1e3a93a
g2 = g2 & -0x10000 | v12;
if ((v12 / 256 & 65) == 0) {
// 0x1e3a93f
g2 = a3;
g5 = a5;
*(int32_t *)(a1 + 28) = a3;
} else {
// 0x1e3a94a
g2 = a5;
g5 = a3;
*(int32_t *)(a1 + 28) = a5;
}
goto lab_0x1e3a974;
} else {
goto lab_0x1e3a955;
}
}
lab_0x1e3a955:;
uint32_t v13 = (int32_t)__asm_fnstsw(g10); // 0x1e3a95b
g2 = g2 & -0x10000 | v13;
if ((v13 / 256 & 65) == 0) {
// 0x1e3a960
g2 = a2;
g5 = a4;
*(int32_t *)(a1 + 28) = a2;
} else {
// 0x1e3a96b
g2 = a4;
g5 = a2;
*(int32_t *)(a1 + 28) = a4;
}
goto lab_0x1e3a974;
lab_0x1e3a974:
// 0x1e3a974
g6 = v3;
*(int32_t *)(a1 + 32) = g5;
g8 = v2;
g3 = v1;
return g2;
}
// Address range: 0x1e3a97f - 0x1e3aa3c
int32_t function_1e3a97f(int32_t a1, int32_t a2) {
int32_t v1 = g3; // 0x1e3a97f
float32_t v2 = *(float32_t *)(a2 + 4); // 0x1e3a989
g5 = a1;
float32_t v3 = *(float32_t *)(a1 + 16); // 0x1e3a98f
float32_t v4 = *(float32_t *)(a1 + 12); // 0x1e3a992
float32_t v5 = *(float32_t *)a2; // 0x1e3a995
float32_t v6 = (float80_t)v2 * (float80_t)v3 + (float80_t)v4 * (float80_t)v5; // bp-8
uint32_t v7 = (int32_t)__asm_fnstsw(g10); // 0x1e3a9a2
int32_t v8 = g2 & -0x10000 | v7; // 0x1e3a9a2
g2 = v8;
int32_t result; // 0x1e3aa26
if ((v7 / 256 & 1) != 0) {
float32_t v9 = *(float32_t *)a2; // 0x1e3a9ab
int32_t v10 = g5; // 0x1e3a9ad
float32_t v11 = *(float32_t *)v10; // 0x1e3a9ad
float32_t v12 = *(float32_t *)(a2 + 4); // 0x1e3a9af
float32_t v13 = *(float32_t *)(v10 + 4); // 0x1e3a9b2
float32_t v14 = *(float32_t *)(a2 + 24); // 0x1e3a9b7
v6 = -(float32_t)(((float80_t)v9 * (float80_t)v11 + (float80_t)v12 * (float80_t)v13 + (float80_t)v14) / (float80_t)v6);
uint32_t v15 = (int32_t)__asm_fnstsw(g10); // 0x1e3a9ca
int32_t v16 = g2 & -0x10000 | v15; // 0x1e3a9ca
g2 = v16;
if ((v15 / 256 & 65) != 0) {
uint32_t v17 = (int32_t)__asm_fnstsw(g10); // 0x1e3a9d5
int32_t v18 = g2 & -0x10000 | v17; // 0x1e3a9d5
g2 = v18;
if ((v17 / 256 & 1) == 0) {
int3_t v19 = g11; // 0x1e3a9da
int32_t v20 = g5; // 0x1e3a9da
float32_t v21 = *(float32_t *)(v20 + 12); // 0x1e3a9da
float32_t v22 = *(float32_t *)v20; // 0x1e3a9e7
*(float32_t *)(a2 + 36) = (float32_t)((float80_t)v21 * (float80_t)v6 + (float80_t)v22);
int32_t v23 = g5; // 0x1e3a9ec
float32_t v24 = *(float32_t *)(v23 + 16); // 0x1e3a9ec
float32_t v25 = *(float32_t *)(v23 + 4); // 0x1e3a9f2
*(float32_t *)(a2 + 40) = (float32_t)((float80_t)v24 * (float80_t)v6 + (float80_t)v25);
if ((*(int32_t *)(a2 + 12) & 0x7fffffff) != 0) {
// 0x1e3aa12
g11 = v19;
uint32_t v26 = (int32_t)__asm_fnstsw(g10); // 0x1e3aa1b
int32_t v27 = g2 & -0x10000 | v26; // 0x1e3aa1b
g2 = v27;
if ((v26 / 256 & 1) == 0) {
uint32_t v28 = (int32_t)__asm_fnstsw(g10); // 0x1e3aa26
result = g2 & -0x10000 | v28;
g2 = result;
if ((v28 / 256 & 65) != 0) {
// 0x1e3aa2b
g11--;
g684 = v6;
// 0x1e3aa36
g3 = v1;
return result;
}
} else {
result = v27;
}
} else {
// 0x1e3a9f7
g11 = v19;
uint32_t v29 = (int32_t)__asm_fnstsw(g10); // 0x1e3a9fd
int32_t v30 = g2 & -0x10000 | v29; // 0x1e3a9fd
g2 = v30;
if ((v29 / 256 & 1) == 0) {
uint32_t v31 = (int32_t)__asm_fnstsw(g10); // 0x1e3aa08
int32_t result2 = g2 & -0x10000 | v31; // 0x1e3aa08
g2 = result2;
if ((v31 / 256 & 65) != 0) {
// 0x1e3aa0d
g11--;
g684 = v6;
// 0x1e3aa36
g3 = v1;
return result2;
}
result = result2;
} else {
result = v30;
}
}
} else {
result = v18;
}
} else {
result = v16;
}
} else {
result = v8;
}
// 0x1e3aa30
g11--;
g684 = 1.0e+9L;
// 0x1e3aa36
g3 = v1;
return result;
}
// Address range: 0x1e3aa3c - 0x1e3aa72
int32_t function_1e3aa3c(int32_t a1, int32_t a2) {
// 0x1e3aa3c
g2 = 1;
g8 = a1;
int32_t v1 = a1 + 32; // 0x1e3aa47
g6 = v1;
int32_t * v2 = (int32_t *)v1; // 0x1e3aa4a
int32_t v3 = 1 - *v2; // 0x1e3aa4a
g2 = v3;
*v2 = v3;
g2 = function_1e29a40(*(int32_t *)g8, *(int32_t *)(g8 + 4 + 4 * g2));
int32_t v4 = *(int32_t *)g6; // 0x1e3aa5e
g5 = v4;
int32_t v5 = *(int32_t *)(4 * v4 + 20 + g8); // 0x1e3aa61
int32_t v6 = function_1e325d2(v5, g8, 0x1e3aa3c); // 0x1e3aa65
g2 = v6;
g6 = v5;
*(int32_t *)(g8 + 28) = v6;
return g2;
}
// Address range: 0x1e3aa72 - 0x1e3aa88
int32_t function_1e3aa72(int32_t a1, int32_t a2) {
// 0x1e3aa72
g5 = a2;
g2 = a1;
*(int32_t *)(a1 + 32) = a2;
int32_t result = function_1e3aa3c(0, a1); // 0x1e3aa80
g2 = result;
return result;
}
// Address range: 0x1e3aa88 - 0x1e3aabb
int32_t function_1e3aa88(int32_t a1) {
// 0x1e3aa88
g8 = a1;
int32_t v1 = *(int32_t *)(a1 + 28); // 0x1e3aa8d
g2 = v1;
int32_t v2; // 0x1e3aa9a
if (v1 != 0) {
// 0x1e3aa94
g2 = function_1e32771(v1);
v2 = g8;
} else {
v2 = a1;
}
// 0x1e3aa9a
*(int32_t *)(v2 + 28) = 0;
int32_t v3 = *(int32_t *)(g9 + 12); // 0x1e3aaa1
g2 = v3;
int32_t result; // 0x1e3aab2
if (v3 >= 0) {
// 0x1e3aaa9
*(int32_t *)(g8 + 32) = v3;
*(int32_t *)(g9 - 4) = *(int32_t *)(g8 + 4 + 4 * g2);
*(int32_t *)(g9 - 8) = *(int32_t *)g8;
result = function_1e29a40((int32_t)&g708, (int32_t)&g708);
g2 = result;
} else {
result = v3;
}
// 0x1e3aab7
g8 = *(int32_t *)g9;
return result;
}
// Address range: 0x1e3aabb - 0x1e3ab1b
int32_t function_1e3aabb(int32_t a1, int32_t a2) {
int32_t v1 = g6; // 0x1e3aabd
g4 = g5;
g6 = a2;
g2 = function_1e29f8c(a1, a2, 1, v1);
*(int32_t *)g4 = (int32_t)&g60;
*(int32_t *)(g4 + 110) = g8;
int32_t v2 = g4; // 0x1e3aadb
g5 = v2;
*(int32_t *)(v2 + 82) = g8;
*(int32_t *)(g4 + 114) = g8;
*(int32_t *)(g4 + 70) = g8;
g2 = function_1e3ab39();
int32_t v3 = function_1e3991a(g6, g8); // 0x1e3aaf2
g2 = v3;
float32_t v4 = *(float32_t *)v3; // 0x1e3aaf7
int32_t v5 = g8; // 0x1e3aafe
*(float32_t *)(g4 + 62) = v4;
*(float32_t *)(g4 + 102) = (float32_t)(float80_t)v4;
int32_t v6 = g6; // 0x1e3ab05
int32_t v7 = function_1e3991a(v6, v5); // 0x1e3ab06
g2 = v7;
float32_t v8 = *(float32_t *)v7; // 0x1e3ab0b
g2 = g4;
g6 = v6;
*(float32_t *)(g4 + 66) = v8;
*(float32_t *)(g4 + 106) = (float32_t)(float80_t)v8;
g8 = v5;
g4 = 901;
return g2;
}
// Address range: 0x1e3ab1b - 0x1e3ab39
int32_t function_1e3ab1b(char a1) {
// 0x1e3ab1b
g2 = function_1e2a201();
if ((a1 & 1) != 0) {
// 0x1e3ab2a
g2 = function_1e3df60(g8);
}
// 0x1e3ab33
g2 = g8;
return g8;
}
// Address range: 0x1e3ab39 - 0x1e3abb9
int32_t function_1e3ab39(void) {
int32_t v1 = g5; // 0x1e3ab3b
int32_t v2 = *(int32_t *)(v1 + 110); // 0x1e3ab3b
g2 = v2;
g8 = v1;
int32_t v3; // 0x1e3ab4a
if (v2 != 0) {
// 0x1e3ab44
g2 = function_1e32771(v2);
v3 = g8;
} else {
v3 = v1;
}
int32_t v4 = *(int32_t *)(v3 + 114); // 0x1e3ab4a
g2 = v4;
int32_t v5; // 0x1e3ab57
if (v4 != 0) {
// 0x1e3ab51
*(int32_t *)(g9 - 4) = v4;
g2 = function_1e32771((int32_t)&g708);
v5 = g8;
} else {
v5 = v3;
}
// 0x1e3ab57
int32_t v6; // 0x1e3ab6a
if (*(int32_t *)(v5 + 82) != 0) {
// 0x1e3ab5d
*(int32_t *)(g9 - 4) = -1;
int32_t v7 = g8 + 42; // 0x1e3ab5f
g2 = v7;
*(int32_t *)(g9 - 8) = v7;
g2 = function_1e3aa88((int32_t)&g708);
v6 = g8;
} else {
v6 = v5;
}
int32_t v8 = 0; // edi
*(int32_t *)(v6 + 110) = 0;
*(int32_t *)(g8 + 114) = v8;
*(int32_t *)(g8 + 78) = v8;
*(int32_t *)(g8 + 98) = v8;
*(int32_t *)(g8 + 86) = v8;
*(int32_t *)(g8 + 90) = v8;
*(int32_t *)(g9 - 4) = v8;
*(int32_t *)(g8 + 82) = v8;
*(int32_t *)(g9 - 4) = *(int32_t *)(g8 + 26);
*(int32_t *)(g8 + 122) = 0x3f800000;
*(int32_t *)(g8 + 94) = v8;
g2 = function_1e29a40((int32_t)&g708, (int32_t)&g708);
g2 = *(int32_t *)(g8 + 26);
*(int32_t *)(g8 + 46) = v8;
*(int32_t *)(g8 + 42) = g2;
int32_t v9 = *(int32_t *)(g8 + 34); // 0x1e3ab9b
g2 = v9;
if (v9 != 0) {
int32_t v10 = *(int32_t *)(v9 + 4); // 0x1e3aba2
g2 = v10;
int32_t v11 = *(int32_t *)(v10 + 8); // 0x1e3aba5
g5 = v11;
*(int32_t *)(g8 + 50) = v11;
}
// 0x1e3abab
g2 = 0;
g6 = *(int32_t *)g9;
*(int32_t *)(g8 + 58) = 0;
*(int32_t *)(g8 + 54) = g2;
*(int32_t *)(g8 + 6) = g2;
g8 = *(int32_t *)g9;
return g2;
}
// Address range: 0x1e3abb9 - 0x1e3ac0f
int32_t function_1e3abb9(int32_t a1) {
g8 = a1;
int32_t v1; // 0x1e3abcf
int32_t v2; // 0x1e3abd2
if (*(int32_t *)(a1 + 82) != 0) {
int32_t v3 = a1 + 42; // 0x1e3abc6
g2 = v3;
g2 = function_1e3aa88(v3);
v2 = g9;
v1 = g8;
} else {
int32_t v4; // esi
v2 = &v4;
v1 = a1;
}
int32_t v5 = *(int32_t *)(v1 + 78); // 0x1e3abcf
g2 = v5;
*(int32_t *)(v2 - 4) = *(int32_t *)(v1 + 46 + 4 * v5);
*(int32_t *)(v2 - 8) = *(int32_t *)(g8 + 26);
function_1e29a40((int32_t)&g708, (int32_t)&g708);
g2 = 0;
*(int32_t *)(g8 + 86) = 0;
*(int32_t *)(g8 + 90) = g2;
*(int32_t *)(g8 + 82) = g2;
*(int32_t *)(g8 + 110) = g2;
int32_t v6 = g8; // 0x1e3abec
int32_t v7 = g2; // 0x1e3abec
int32_t v8; // 0x1e3abf9
int32_t v9; // 0x1e3abf9
if (*(int32_t *)(v6 + 94) != v7) {
// 0x1e3abf1
*(int32_t *)(g9 - 4) = v7;
g5 = g8;
*(int32_t *)(g9 - 8) = 20;
*(int32_t *)(g8 + 94) = g2;
v8 = g8;
v9 = *(int32_t *)v8;
g2 = v9;
} else {
v9 = v7;
v8 = v6;
}
// 0x1e3abfd
int32_t result; // 0x1e3ac06
if (*(int32_t *)(v8 + 18) != 0) {
// 0x1e3ac03
*(int32_t *)(g9 - 4) = v8;
*(int32_t *)(g9 - 8) = 60;
result = function_1e328b9((int32_t)&g708, (int32_t)&g708);
g2 = result;
} else {
result = v9;
}
// 0x1e3ac0b
return result;
}
// Address range: 0x1e3ac0f - 0x1e3ac4e
int32_t function_1e3ac0f(void) {
int32_t v1 = g5; // 0x1e3ac11
int32_t v2 = *(int32_t *)(v1 + 102); // 0x1e3ac11
g2 = v2;
g6 = v1 + 110;
*(int32_t *)(v1 + 62) = v2;
int32_t v3 = g5; // 0x1e3ac1a
g8 = v3;
int32_t v4 = *(int32_t *)g6; // 0x1e3ac1c
g2 = v4;
int32_t v5 = *(int32_t *)(v3 + 106); // 0x1e3ac1e
g5 = v5;
*(int32_t *)(v3 + 66) = v5;
if (v4 != 0) {
// 0x1e3ac28
g2 = function_1e32771(v4);
}
// 0x1e3ac2e
g2 = 0;
*(int32_t *)g6 = 0;
int32_t * v6 = (int32_t *)(g9 + 12); // 0x1e3ac32
int32_t v7 = g2; // 0x1e3ac32
int32_t v8; // 0x1e3ac49
int32_t result; // 0x1e3ac4b
if (*v6 > v7) {
// 0x1e3ac38
*(int32_t *)(g9 - 4) = 0x1e3abb9;
*(int32_t *)(g9 - 8) = g8;
*(int32_t *)(g9 - 12) = *v6;
int32_t v9 = function_1e325d2((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3ac42
g2 = v9;
*(int32_t *)g6 = v9;
result = g2;
v8 = g9;
} else {
result = v7;
v8 = g9;
}
// 0x1e3ac49
g6 = *(int32_t *)v8;
g8 = *(int32_t *)(v8 + 4);
return result;
}
// Address range: 0x1e3ac4e - 0x1e3b166
int32_t function_1e3ac4e(int32_t a1, float80_t a2) {
float32_t v1 = a2;
g2 = a1;
int32_t v2 = g8; // 0x1e3ac5e
int32_t v3 = g6; // 0x1e3ac5f
int32_t v4 = v3; // bp-20
int32_t v5 = &v4; // 0x1e3ac5f
int32_t v6 = g5; // 0x1e3ac60
g8 = v6;
int32_t v7; // 0x1e3ad08
int32_t result; // 0x1e3b163
if (a1 > 1020) {
if (a1 == 1024) {
// 0x1e3b11b
g2 = v6;
g5 = 0;
int32_t v8 = *(int32_t *)(v6 + 30); // 0x1e3b124
g2 = v8;
if (*(int32_t *)(v8 + 214) > 0) {
int32_t v9 = v6 + 134; // 0x1e3b12f
g7 = v9;
int32_t v10 = *(int32_t *)(v6 + 82); // 0x1e3b135
g2 = v10;
g5 = 1;
*(int32_t *)v9 = v10;
int32_t v11 = g7; // 0x1e3b13b
g7 = v11 + 24;
*(int32_t *)(v11 + 12) = *(int32_t *)(g8 + 98);
*(int32_t *)(g7 - 28) = *(int32_t *)(g8 + 78);
int32_t v12 = *(int32_t *)(g8 + 6); // 0x1e3b14a
g2 = v12;
*(int32_t *)(g7 - 32) = v12;
int32_t v13 = *(int32_t *)(g8 + 30); // 0x1e3b150
g2 = v13;
int32_t v14 = g5; // 0x1e3b153
while (*(int32_t *)(v13 + 214) > v14) {
// 0x1e3b135
v10 = *(int32_t *)(g8 + 82);
g2 = v10;
g5 = v14 + 1;
*(int32_t *)g7 = v10;
v11 = g7;
g7 = v11 + 24;
*(int32_t *)(v11 + 12) = *(int32_t *)(g8 + 98);
*(int32_t *)(g7 - 28) = *(int32_t *)(g8 + 78);
v12 = *(int32_t *)(g8 + 6);
g2 = v12;
*(int32_t *)(g7 - 32) = v12;
v13 = *(int32_t *)(g8 + 30);
g2 = v13;
v14 = g5;
}
}
}
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
} else {
if (a1 == 1020) {
int32_t v15 = *(int32_t *)(v6 + 30); // 0x1e3b06c
g2 = v15;
int32_t v16 = v6 + 82; // 0x1e3b06f
g6 = v16;
g4 = v6 + 78;
int32_t v17 = 24 * *(int32_t *)(v15 + 218); // 0x1e3b07b
g2 = v17;
int32_t v18 = v17 + v6; // 0x1e3b07e
g5 = v18;
int32_t v19 = *(int32_t *)v16; // 0x1e3b081
g2 = v19;
*(int32_t *)(v18 + 134) = v19;
*(int32_t *)(g5 + 146) = *(int32_t *)(g8 + 98);
*(int32_t *)(g5 + 130) = *(int32_t *)g4;
int32_t v20 = g5; // 0x1e3b09a
g2 = v20;
int32_t v21 = *(int32_t *)(g8 + 6); // 0x1e3b09c
g7 = v21;
*(int32_t *)(v20 + 126) = v21;
g5 = g8;
g2 = function_1e3dbc0((int32_t)v1, v4, v2);
int32_t v22 = 24 * __ftol(); // 0x1e3b0bd
g2 = v22;
int32_t v23 = g8; // 0x1e3b0c0
int32_t v24 = *(int32_t *)(v22 + 134 + v23); // 0x1e3b0c0
g5 = v24;
int32_t v25 = v23 + v22; // edx
*(int32_t *)g6 = v24;
int32_t v26 = *(int32_t *)(v25 + 146); // 0x1e3b0cc
g5 = v26;
*(int32_t *)(g8 + 98) = v26;
int32_t v27 = *(int32_t *)(v25 + 130); // 0x1e3b0d7
g2 = v27;
*(int32_t *)g4 = v27;
int32_t v28 = *(int32_t *)(v25 + 126); // 0x1e3b0df
g7 = v28;
*(int32_t *)(g8 + 6) = v28;
if (v26 != 0) {
int32_t v29 = g8; // 0x1e3b0e7
g5 = v29;
g2 = function_1e3ac4e(11, (float80_t)*(int32_t *)(v29 + 98));
}
// 0x1e3b0f9
if (*(int32_t *)g4 != 0) {
// 0x1e3b0fe
*(int32_t *)(g9 - 4) = 0;
g5 = g8;
*(int32_t *)(g9 - 8) = 1;
g2 = function_1e3ac4e((int32_t)&g708, (float80_t)(int80_t)&g708);
}
// 0x1e3b109
if (*(int32_t *)g6 != 0) {
// 0x1e3b10e
*(int32_t *)(g9 - 4) = 0;
g5 = g8;
*(int32_t *)(g9 - 8) = 4;
g2 = function_1e3ac4e((int32_t)&g708, (float80_t)(int80_t)&g708);
}
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
} else {
// 0x1e3ac6a
g701 = a1;
switch (a1) {
case 0: {
// 0x1e3ac8a
g2 = 0;
*(int32_t *)(v6 + 78) = 0;
int32_t v30 = g2; // 0x1e3ac8f
if (*(int32_t *)(g8 + 82) == v30) {
// 0x1e3ac98
if (*(int32_t *)(g8 + 86) == v30) {
// 0x1e3aca1
if (*(int32_t *)(g8 + 90) == v30) {
// 0x1e3acaa
g2 = function_1e29a40(*(int32_t *)(g8 + 26), *(int32_t *)(g8 + 46));
}
}
}
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 1: {
// 0x1e3acba
*(int32_t *)(v6 + 78) = 1;
g2 = 0;
if (*(int32_t *)(g8 + 82) == 0) {
// 0x1e3accc
if (*(int32_t *)(g8 + 86) == 0) {
// 0x1e3acd5
if (*(int32_t *)(g8 + 90) == 0) {
// 0x1e3acde
g2 = function_1e29a40(*(int32_t *)(g8 + 26), *(int32_t *)(g8 + 50));
}
}
}
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 2: {
int32_t v31 = *(int32_t *)(v6 + 78); // 0x1e3acee
g2 = v31;
result = v31;
goto lab_0x1e3b15d;
}
case 3: {
int32_t v32 = *(int32_t *)(v6 + 82); // 0x1e3acf6
g2 = v32;
result = v32;
goto lab_0x1e3b15d;
}
case 4: {
// 0x1e3acfe
g6 = 0;
g2 = function_1e3ac0f();
v7 = g8;
int32_t v33 = g6; // 0x1e3ad08
if (*(int32_t *)(v7 + 82) == v33) {
goto lab_0x1e3ad16;
} else {
// 0x1e3ad0d
if (*(int32_t *)(v7 + 70) != v33) {
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
} else {
goto lab_0x1e3ad16;
}
}
}
case 5: {
float32_t v34 = *(float32_t *)(v6 + 102); // 0x1e3ad39
*(float32_t *)(v6 + 62) = (float32_t)((float80_t)v34 * a2);
float32_t v35 = *(float32_t *)(g8 + 106); // 0x1e3ad42
*(float32_t *)(g8 + 66) = (float32_t)((float80_t)v35 * a2);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 6: {
int32_t v36 = *(int32_t *)(v6 + 102); // 0x1e3ad50
g2 = v36;
g5 = *(int32_t *)(v6 + 106);
*(int32_t *)(v6 + 62) = v36;
*(int32_t *)(g8 + 66) = g5;
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 7: {
// 0x1e3ad61
int32_t v37; // 0x1e3ad75
if (*(int32_t *)(v6 + 82) == 0) {
int32_t v38 = v6 + 42; // 0x1e3ad6a
g5 = v38;
g2 = function_1e3aa72(v38, *(int32_t *)(v6 + 78));
v37 = g8;
} else {
v37 = v6;
}
// 0x1e3ad73
g2 = 0;
g5 = v37;
*(int32_t *)(v37 + 90) = 0;
*(int32_t *)(g8 + 86) = g2;
*(int32_t *)(g9 - 4) = (int32_t)v1;
*(int32_t *)(g8 + 82) = 1;
*(int32_t *)(g8 + 94) = g2;
g2 = function_1e3ac0f();
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 8: {
// 0x1e3ad94
g6 = 0;
int32_t v39; // 0x1e3adc8
if (*(int32_t *)(v6 + 86) == 0) {
// 0x1e3ad9b
if (*(int32_t *)(v6 + 82) == 0) {
// 0x1e3adaf
g2 = function_1e29a40(*(int32_t *)(v6 + 26), *(int32_t *)(v6 + 46));
} else {
int32_t v40 = v6 + 42; // 0x1e3ada1
g2 = v40;
g2 = function_1e3aa88(v40);
*(int32_t *)(g8 + 82) = g6;
}
// 0x1e3adba
*(int32_t *)(g8 + 86) = 1;
*(int32_t *)(g8 + 90) = 0;
v39 = g9;
} else {
v39 = v5;
}
// 0x1e3adc8
*(int32_t *)(v39 - 4) = (int32_t)v1;
g5 = g8;
g2 = function_1e3ac0f();
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 9: {
// 0x1e3add7
g6 = 0;
int32_t v41; // 0x1e3ae0c
if (*(int32_t *)(v6 + 90) == 0) {
// 0x1e3adde
if (*(int32_t *)(v6 + 82) == 0) {
// 0x1e3adf3
g2 = function_1e29a40(*(int32_t *)(v6 + 26), *(int32_t *)(v6 + 50));
} else {
int32_t v42 = v6 + 42; // 0x1e3ade5
g2 = v42;
g2 = function_1e3aa88(v42);
*(int32_t *)(g8 + 82) = g6;
}
// 0x1e3adfe
*(int32_t *)(g8 + 90) = 1;
*(int32_t *)(g8 + 86) = 0;
v41 = g9;
} else {
v41 = v5;
}
// 0x1e3ae0c
*(int32_t *)(v41 - 4) = (int32_t)v1;
g5 = g8;
g2 = function_1e3ac0f();
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 11: {
// 0x1e3ae1b
g6 = v6 + 98;
g2 = function_1e3dbc0((int32_t)v1, v3, v2);
int32_t v43 = __ftol(); // 0x1e3ae2f
g2 = v43;
*(int32_t *)g6 = v43;
int32_t v44 = *(int32_t *)(g8 + 34) + 4; // 0x1e3ae39
int32_t v45 = *(int32_t *)v44; // 0x1e3ae3c
g2 = v45;
int32_t v46 = *(int32_t *)(v45 + 4); // 0x1e3ae3e
g2 = v46;
int32_t * v47 = (int32_t *)g6; // 0x1e3ae41
int32_t v48; // 0x1e3ae4d
if (*v47 > v46) {
// 0x1e3ae45
*v47 = v46;
v48 = g6;
} else {
v48 = g6;
}
// 0x1e3ae47
g2 = 0;
int32_t * v49 = (int32_t *)v48; // 0x1e3ae49
int32_t v50; // 0x1e3ae51
if (*v49 < 0) {
// 0x1e3ae4d
*v49 = 0;
v50 = g6;
} else {
v50 = v48;
}
// 0x1e3ae4f
g5 = *(int32_t *)v50;
*(int32_t *)(g8 + 46) = 0;
int32_t v51 = *(int32_t *)v44; // 0x1e3ae59
g2 = v51;
*(int32_t *)(g8 + 50) = *(int32_t *)(v51 + 8 + 4 * g5);
int32_t v52; // 0x1e3ae7e
if (*(int32_t *)(g8 + 82) == 0) {
// 0x1e3ae69
if (*(int32_t *)(g8 + 86) == 0) {
// 0x1e3ae73
g2 = 1;
if (*(int32_t *)(g8 + 90) == 0) {
// 0x1e3ae7e
v52 = *(int32_t *)(g8 + 78);
g2 = v52;
} else {
v52 = 1;
}
} else {
// 0x1e3ae6f
g2 = 0;
v52 = 0;
}
} else {
int32_t v53 = *(int32_t *)(g8 + 74); // 0x1e3ae64
g2 = v53;
v52 = v53;
}
// 0x1e3ae81
g2 = function_1e29a40(*(int32_t *)(g8 + 26), *(int32_t *)(g8 + 46 + 4 * v52));
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 12: {
int32_t v54 = *(int32_t *)(v6 + 98); // 0x1e3ae92
g5 = v54;
int32_t v55 = *(int32_t *)(v6 + 34); // 0x1e3ae95
g2 = v55;
int32_t v56 = v54 + 1; // 0x1e3ae98
g5 = v56;
int32_t v57 = *(int32_t *)(v55 + 4); // 0x1e3ae99
g7 = v57;
int32_t v58 = *(int32_t *)(v57 + 4); // 0x1e3ae9c
g2 = v58;
if (v56 > v58) {
// 0x1e3aea3
g5 = v58;
} else {
v58 = v56;
}
// 0x1e3aea5
g5 = v6;
g2 = function_1e3ac4e(11, (float80_t)v58);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 13: {
int32_t v59 = *(int32_t *)(v6 + 98) - 1; // 0x1e3aec2
int32_t v60;
int32_t v61; // 0x1e3aecc
if (v59 < 0) {
v60 = 0;
v61 = 0;
} else {
v60 = v59;
v61 = v59;
}
// 0x1e3aec7
g2 = v60;
g2 = function_1e3ac4e(11, (float80_t)v61);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 14: {
int32_t v62 = *(int32_t *)(v6 + 110); // 0x1e3aee1
g2 = v62;
int32_t v63; // 0x1e3aef0
if (v62 != 0) {
// 0x1e3aee8
g2 = function_1e32771(v62);
v63 = g8;
} else {
v63 = v6;
}
// 0x1e3aeee
g2 = 0;
*(int32_t *)(v63 + 110) = 0;
int32_t v64 = g8; // 0x1e3aef3
int32_t v65; // 0x1e3af05
if (*(int32_t *)(v64 + 82) != g2) {
// 0x1e3aef8
*(int32_t *)(g9 - 4) = -1;
int32_t v66 = g8 + 42; // 0x1e3aefa
g2 = v66;
*(int32_t *)(g9 - 8) = v66;
g2 = function_1e3aa88((int32_t)&g708);
v65 = g8;
} else {
v65 = v64;
}
// 0x1e3af03
g2 = 0;
g5 = *(int32_t *)(v65 + 78);
*(int32_t *)(v65 + 82) = 0;
*(int32_t *)(g8 + 86) = g2;
*(int32_t *)(g8 + 90) = g2;
*(int32_t *)(g9 - 4) = *(int32_t *)(g8 + 46 + 4 * g5);
*(int32_t *)(g9 - 8) = *(int32_t *)(g8 + 26);
g2 = function_1e29a40((int32_t)&g708, (int32_t)&g708);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 15: {
// 0x1e3af22
*(int32_t *)(v6 + 94) = 0;
int32_t v67 = g8; // 0x1e3af29
int32_t v68 = *(int32_t *)(v67 + 114); // 0x1e3af29
g2 = v68;
int32_t v69; // 0x1e3af38
if (v68 != 0) {
// 0x1e3af30
g2 = function_1e32771(v68);
v69 = g8;
} else {
v69 = v67;
}
// 0x1e3af36
g2 = 0;
g5 = v69;
*(int32_t *)(g9 - 4) = 0;
*(int32_t *)(g8 + 114) = g2;
*(int32_t *)(g9 - 4) = 1;
g2 = function_1e3ac4e((int32_t)&g708, (float80_t)(int80_t)&g708);
*(int32_t *)(g9 - 4) = (int32_t)v1;
*(int32_t *)(g9 - 8) = 7;
g5 = g8;
g2 = function_1e3ac4e((int32_t)&g708, (float80_t)(int80_t)&g708);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 16: {
int32_t v70 = *(int32_t *)(v6 + 114); // 0x1e3af56
g2 = v70;
int32_t v71; // 0x1e3af63
if (v70 != 0) {
// 0x1e3af5d
g2 = function_1e32771(v70);
v71 = g9;
} else {
v71 = v5;
}
// 0x1e3af63
*(int32_t *)(v71 - 4) = (int32_t)v1;
*(int32_t *)(v71 - 8) = 7;
*(int32_t *)(g8 + 114) = 0;
g5 = g8;
g2 = function_1e3ac4e((int32_t)&g708, (float80_t)(int80_t)&g708);
*(int32_t *)(g8 + 94) = 1;
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 17: {
// 0x1e3af82
g2 = function_1e3dbc0((int32_t)v1, v3, v2);
g5 = g8;
int32_t v72 = (int32_t)(__ftol() == 0) + 1; // 0x1e3afa1
g2 = v72;
g2 = function_1e3ac4e(v72, 0.0L);
int32_t v73 = *(int32_t *)(g8 + 78); // 0x1e3afa8
g2 = v73;
result = v73;
goto lab_0x1e3b15d;
}
case 18: {
// 0x1e3afb0
g2 = function_1e3ac4e(17, a2);
g5 = g8;
g2 = function_1e3ac4e(14, 0.0L);
int32_t v74 = *(int32_t *)(g8 + 78); // 0x1e3afc7
g2 = v74;
result = v74;
goto lab_0x1e3b15d;
}
case 19: {
// 0x1e3afcf
g2 = function_1e3ac4e(1, 0.0L);
g5 = g8;
g2 = function_1e3ac4e(14, 0.0L);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 20: {
// 0x1e3afea
g6 = 0;
g2 = function_1e3ac4e(0, 0.0L);
g5 = g8;
g2 = function_1e3ac4e(14, (float80_t)(int80_t)g6);
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
case 21: {
int32_t v75 = *(int32_t *)(v6 + 78); // 0x1e3b004
g2 = v75 == 0;
g2 = function_1e3ac4e(17, (float80_t)(v75 == 0));
int32_t v76 = *(int32_t *)(g8 + 78); // 0x1e3b021
g2 = v76;
result = v76;
goto lab_0x1e3b15d;
}
case 22: {
int32_t v77 = *(int32_t *)(v6 + 78); // 0x1e3b029
g2 = v77 == 0;
g2 = function_1e3ac4e(18, (float80_t)(v77 == 0));
int32_t v78 = *(int32_t *)(g8 + 78); // 0x1e3b046
g2 = v78;
result = v78;
goto lab_0x1e3b15d;
}
case 23: {
// 0x1e3b04e
g2 = function_1e3dbc0((int32_t)v1, v3, v2);
int32_t v79 = __ftol(); // 0x1e3b05f
g2 = v79;
*(int32_t *)(g8 + 6) = v79;
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
default: {
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
}
}
}
lab_0x1e3b15d:
// 0x1e3b15d
g6 = *(int32_t *)g9;
g8 = *(int32_t *)(g9 + 4);
g4 = *(int32_t *)(g9 + 8);
return result;
lab_0x1e3ad16:
// 0x1e3ad16
g2 = 0;
int32_t v80 = v7 + 42; // esi
*(int32_t *)(v7 + 90) = 0;
*(int32_t *)(v80 + 44) = g2;
*(int32_t *)(v80 + 40) = 1;
*(int32_t *)(v80 + 52) = g2;
g2 = function_1e3aa72(v80, *(int32_t *)(v80 + 36));
// 0x1e3b15b
g2 = 0;
result = 0;
goto lab_0x1e3b15d;
}
// Address range: 0x1e3b1c6 - 0x1e3b27e
int32_t function_1e3b1c6(int32_t a1, uint32_t a2) {
int32_t v1 = g6; // 0x1e3b1ce
g4 = 0;
g6 = a2;
g2 = function_1e29f8c(a1, a2, 0, v1);
int32_t v2 = function_1e3a705(4); // 0x1e3b1e2
g2 = v2;
*(int32_t *)(g8 + 46) = v2;
*(int32_t *)g8 = (int32_t)&g61;
int32_t v3 = g8; // 0x1e3b1f0
g5 = v3;
*(int32_t *)(v3 + 70) = g4;
*(int32_t *)(g8 + 42) = 4;
*(int32_t *)(g8 + 66) = g4;
g2 = function_1e3b2a6();
if (a2 >= 1) {
int32_t v4 = function_1e3991a(a2, g4); // 0x1e3b20f
g2 = v4;
int32_t v5 = *(int32_t *)v4; // 0x1e3b214
g2 = v5;
int32_t v6; // bp-8
g5 = &v6;
*(int32_t *)(g8 + 54) = v5;
g6 = 0;
int32_t v7 = function_1e39996(a2, 1027, &v6); // 0x1e3b225
g2 = v7;
if (v6 > g4) {
while (true) {
// 0x1e3b232
g2 = v7;
*(int32_t *)(g9 - 4) = (int32_t)*(int16_t *)v7;
g5 = a1;
int32_t v8 = function_1e2e83c(v7); // 0x1e3b23c
g2 = v8;
if (v8 != 0) {
int32_t v9 = g8; // 0x1e3b248
int32_t v10 = *(int32_t *)(v9 + 46); // 0x1e3b248
g5 = v10;
int32_t v11 = *(int32_t *)v10; // 0x1e3b24b
g2 = v11;
if (*(int32_t *)(v10 + 4) == v11) {
// 0x1e3b252
*(int32_t *)(g9 - 4) = *(int32_t *)(v9 + 42);
*(int32_t *)(g9 - 8) = g5;
int32_t v12 = function_1e3a739(v8, (int32_t)&g708); // 0x1e3b256
g2 = v12;
*(int32_t *)(g8 + 46) = v12;
}
// 0x1e3b25e
*(int32_t *)(g9 - 4) = v8;
*(int32_t *)(g9 - 8) = *(int32_t *)(g8 + 46);
g2 = function_1e3a6a7((int32_t)&g708, (int32_t)&g708);
}
int32_t v13 = g6 + 1; // 0x1e3b26d
g6 = v13;
if (v6 <= v13) {
// break -> 0x1e3b273
break;
}
v7 += 2;
}
}
}
int32_t result = g8; // 0x1e3b273
g2 = result;
g6 = *(int32_t *)g9;
g8 = *(int32_t *)(g9 + 4);
g4 = *(int32_t *)(g9 + 8);
return result;
}
// Address range: 0x1e3b27e - 0x1e3b2a6
int32_t function_1e3b27e(char a1) {
int32_t v1 = g5; // 0x1e3b27f
g8 = v1;
g2 = function_1e3a728(*(int32_t *)(v1 + 46));
g5 = g8;
g2 = function_1e2a201();
if ((a1 & 1) != 0) {
// 0x1e3b297
g2 = function_1e3df60(g8);
}
// 0x1e3b2a0
g2 = g8;
return g8;
}
// Address range: 0x1e3b2a6 - 0x1e3b2dd
int32_t function_1e3b2a6(void) {
int32_t v1 = g5; // 0x1e3b2a7
int32_t v2 = *(int32_t *)(v1 + 70); // 0x1e3b2a7
g2 = v2;
g8 = v1;
int32_t v3; // 0x1e3b2b6
if (v2 != 0) {
// 0x1e3b2b0
g2 = function_1e32771(v2);
v3 = g8;
} else {
v3 = v1;
}
// 0x1e3b2b6
*(int32_t *)(v3 + 70) = 0;
int32_t v4 = g8; // 0x1e3b2bd
int32_t v5 = *(int32_t *)(v4 + 66); // 0x1e3b2bd
g2 = v5;
int32_t v6; // 0x1e3b2cc
if (v5 != 0) {
// 0x1e3b2c4
*(int32_t *)(g9 - 4) = v5;
g2 = function_1e32771((int32_t)&g708);
v6 = g8;
} else {
v6 = v4;
}
// 0x1e3b2ca
g2 = 0;
g5 = *(int32_t *)(v6 + 54);
*(int32_t *)(v6 + 66) = 0;
*(int32_t *)(g8 + 58) = g2;
*(int32_t *)(g8 + 62) = g2;
*(int32_t *)(g8 + 50) = g5;
g8 = *(int32_t *)g9;
return g2;
}
// Address range: 0x1e3b2dd - 0x1e3b2f5
int32_t function_1e3b2dd(int32_t a1, int32_t a2) {
// 0x1e3b2dd
g5 = a1;
*(int32_t *)(a1 + 70) = 0;
int32_t result = *(int32_t *)g5; // 0x1e3b2eb
g2 = result;
return result;
}
// Address range: 0x1e3b2f5 - 0x1e3b358
int32_t function_1e3b2f5(int32_t a1) {
int32_t v1 = g5; // 0x1e3b2fd
int32_t v2 = v1 + 70; // 0x1e3b2fd
g6 = v2;
g8 = v1;
int32_t v3 = *(int32_t *)v2; // 0x1e3b302
g2 = v3;
int32_t v4; // 0x1e3b316
if (v3 != 0) {
// 0x1e3b308
g2 = function_1e32771(v3);
v4 = g6;
} else {
v4 = v2;
}
// 0x1e3b30e
g2 = 0;
*(int32_t *)v4 = 0;
if (g2 < a1) {
// 0x1e3b31d
g5 = g8 + 50;
} else {
uint32_t v5 = (int32_t)__asm_fnstsw(g10); // 0x1e3b32a
g2 = g2 & -0x10000 | v5;
if ((v5 / 256 & 65) != 0) {
// 0x1e3b348
g2 = 0;
*(int32_t *)(g8 + 58) = 0;
*(int32_t *)(g8 + 62) = g2;
// 0x1e3b350
return g2;
}
// 0x1e3b32f
g5 = g8 + 50;
a1 = *(int32_t *)(g8 + 54);
}
// 0x1e3b335
g2 = a1;
*(int32_t *)(g9 - 4) = 0x1e3b2dd;
*(int32_t *)g5 = g2;
*(int32_t *)(g9 - 4) = g8;
*(int32_t *)(g9 - 8) = *(int32_t *)g5;
int32_t v6 = function_1e325d2((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3b33f
g2 = v6;
*(int32_t *)g6 = v6;
// 0x1e3b350
return g2;
}
// Address range: 0x1e3b358 - 0x1e3b37f
int32_t function_1e3b358(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
int32_t v1 = g8; // 0x1e3b358
int32_t v2 = *(int32_t *)(g5 + 46); // 0x1e3b359
g5 = v2;
g2 = 0;
int32_t v3 = *(int32_t *)(v2 + 4); // 0x1e3b35e
g7 = v3;
if (v3 < 1) {
lab_0x1e3b378_2:
// 0x1e3b378
g2 = -1;
// 0x1e3b37d
g8 = v1;
return -1;
}
int32_t v4 = v2 + 8; // 0x1e3b365
g5 = v4;
int32_t result = 0; // 0x1e3b373
while (true) {
// 0x1e3b368
if (*(int32_t *)(*(int32_t *)v4 + 78) == 0) {
// break -> 0x1e3b37d
break;
}
int32_t v5 = v4 + 4; // 0x1e3b370
g5 = v5;
int32_t v6 = result + 1; // 0x1e3b373
g2 = v6;
if (v3 <= v6) {
goto lab_0x1e3b378_2;
}
result = v6;
v4 = v5;
}
// 0x1e3b37d
g8 = v1;
return result;
}
// Address range: 0x1e3b37f - 0x1e3b3a0
int32_t function_1e3b37f(int32_t a1, int32_t a2, int32_t a3, int32_t a4) {
int32_t v1 = *(int32_t *)(g5 + 46); // 0x1e3b37f
g5 = v1;
int32_t result = *(int32_t *)(v1 + 4) - 1; // 0x1e3b385
g2 = result;
if (result < 0) {
lab_0x1e3b39a_2:
// 0x1e3b39a
g2 = -1;
// 0x1e3b39f
return -1;
}
int32_t v2 = v1 + 8 + 4 * result; // 0x1e3b388
g5 = v2;
while (true) {
int32_t v3 = *(int32_t *)v2; // 0x1e3b38c
g7 = v3;
if (*(int32_t *)(v3 + 78) != 0) {
// break -> 0x1e3b39f
break;
}
int32_t v4 = v2 - 4; // 0x1e3b394
g5 = v4;
int32_t v5 = result - 1; // 0x1e3b397
g2 = v5;
if (v5 < 0) {
goto lab_0x1e3b39a_2;
}
result = v5;
v2 = v4;
}
// 0x1e3b39f
return result;
}
// Address range: 0x1e3b3a0 - 0x1e3b3d5
int32_t function_1e3b3a0(void) {
int32_t v1 = g6; // bp-8
int32_t v2 = &v1; // 0x1e3b3a1
int32_t v3 = g5; // 0x1e3b3a2
int32_t v4 = *(int32_t *)(v3 + 46); // 0x1e3b3a2
g2 = v4;
int32_t result = *(int32_t *)(v4 + 4) - 1; // 0x1e3b3aa
g2 = result;
if (result < 0) {
// 0x1e3b3d2
g8 = *(int32_t *)(v2 + 4);
return result;
}
int32_t v5 = 4 * result; // edi
g2 = *(int32_t *)(v3 + 46);
*(int32_t *)(v2 - 4) = 0;
int32_t v6 = *(int32_t *)(g2 + 8 + v5); // 0x1e3b3b9
g5 = v6;
int32_t v7 = v2 - 8; // 0x1e3b3c7
*(int32_t *)v7 = *(int32_t *)(v6 + 78) == 0 ? 8 : 9;
int32_t result2 = *(int32_t *)g5; // 0x1e3b3c9
g2 = result2;
int32_t v8 = v5 - 4; // 0x1e3b3cd
v5 = v8;
while (v8 >= 0) {
// 0x1e3b3b4
v2 = v7;
g2 = *(int32_t *)(v3 + 46);
*(int32_t *)(v2 - 4) = 0;
v6 = *(int32_t *)(g2 + 8 + v5);
g5 = v6;
v7 = v2 - 8;
*(int32_t *)v7 = *(int32_t *)(v6 + 78) == 0 ? 8 : 9;
result2 = *(int32_t *)g5;
g2 = result2;
v8 = v5 - 4;
v5 = v8;
}
// 0x1e3b3d2
g8 = *(int32_t *)(v7 + 4);
return result2;
}
// Address range: 0x1e3b3d5 - 0x1e3b3eb
int32_t function_1e3b3d5(int32_t a1) {
// 0x1e3b3d5
g2 = a1;
*(int32_t *)(a1 + 66) = 0;
int32_t result = function_1e328b9(61, a1); // 0x1e3b3e3
g2 = result;
return result;
}