#include "pinball.h" // Address range: 0x1e3c76c - 0x1e3ca4e float80_t function_1e3c76c(int32_t a1, int32_t a2) { float80_t v1 = a2; // 0x1e3c778 float80_t v2 = a1; // 0x1e3c784 float80_t v3 = (float32_t)a2 - g570; // 0x1e3c79c float80_t v4 = (float32_t)a1 - g569; // 0x1e3c7ab int3_t v5 = g11 - 1; // fpu_stat_TOP uint32_t v6 = (int32_t)__asm_fnstsw(g10); // 0x1e3c7b2 g2 = g2 & -0x10000 | v6; if ((v6 / 256 & 1) == 0) { uint32_t v7 = (int32_t)__asm_fnstsw(g10); // 0x1e3c7ed g2 = g2 & -0x10000 | v7; if ((v7 / 256 & 1) == 0) { uint32_t v8 = (int32_t)__asm_fnstsw(g10); // 0x1e3c824 g2 = g2 & -0x10000 | v8; if ((v8 / 256 & 1) == 0) { uint32_t v9 = (int32_t)__asm_fnstsw(g10); // 0x1e3c85b g2 = g2 & -0x10000 | v9; if ((v9 / 256 & 1) == 0) { goto lab_0x1e3c8a4; } else { goto lab_0x1e3c860; } } else { goto lab_0x1e3c860; } } else { goto lab_0x1e3c860; } } else { goto lab_0x1e3c860; } lab_0x1e3c860:; uint32_t v10 = (int32_t)__asm_fnstsw(g10); // 0x1e3c878 g2 = g2 & -0x10000 | v10; float80_t result; // st7 if ((v10 / 256 & 65) == 0) { float80_t v11 = (float80_t)g580 - v2; // 0x1e3c883 float80_t v12 = (float80_t)g581 - v1; // 0x1e3c88e result = v11 * v11 + v12 * v12; uint32_t v13 = (int32_t)__asm_fnstsw(g10); // 0x1e3c89b g2 = g2 & -0x10000 | v13; if ((v13 / 256 & 1) == 0) { // 0x1e3ca44 g2 = 0; goto lab_0x1e3ca46; } else { goto lab_0x1e3c8a4; } } else { goto lab_0x1e3c8a4; } lab_0x1e3c8a4:; int32_t v14 = __asm_fnstsw(g10); // 0x1e3c8a7 g2 = g2 & -0x10000 | v14; int32_t v15 = g5; // 0x1e3c8aa int32_t v16 = *(int32_t *)(v15 + 21); // 0x1e3c8aa g2 = v16; int3_t v17 = v5; // 0x1e3c906 float80_t v18 = (float80_t)*(float32_t *)(v15 + 33); // 0x1e3c906 if ((v14 & 0x4100) == 0) { if (v16 == 1) { float80_t v19 = g573; // 0x1e3c9cc float80_t v20 = g574; // 0x1e3c9d5 float80_t v21 = (v18 - v19) * (v1 - v20); // 0x1e3c9db float32_t v22 = *(float32_t *)(v15 + 37); // 0x1e3c9dd result = v21 - (v2 - v19) * ((float80_t)v22 - v20); v5 = v17; uint32_t v23 = (int32_t)__asm_fnstsw(g10); // 0x1e3c9f5 g2 = g2 & -0x10000 | v23; if ((v23 / 256 & 1) == 0) { // 0x1e3c9fa g2 = 4; } else { // 0x1e3ca01 g2 = 5; } } else { if (v16 == 2) { float80_t v24 = g571; // 0x1e3ca08 float80_t v25 = g572; // 0x1e3ca11 float80_t v26 = (v18 - v24) * (v1 - v25); // 0x1e3ca17 float32_t v27 = *(float32_t *)(v15 + 37); // 0x1e3ca19 result = v26 - (v2 - v24) * ((float80_t)v27 - v25); v5 = v17; uint32_t v28 = (int32_t)__asm_fnstsw(g10); // 0x1e3ca31 g2 = g2 & -0x10000 | v28; if ((v28 / 256 & 1) == 0) { // 0x1e3ca36 g2 = 4; } else { // 0x1e3ca3d g2 = 5; } } else { float80_t v29 = g580; // 0x1e3c98a float80_t v30 = g581; // 0x1e3c993 float80_t v31 = (v18 - v29) * (v1 - v30); // 0x1e3c999 float32_t v32 = *(float32_t *)(v15 + 37); // 0x1e3c99b result = v31 - (v2 - v29) * ((float80_t)v32 - v30); v5 = v17; uint32_t v33 = (int32_t)__asm_fnstsw(g10); // 0x1e3c9b3 g2 = g2 & -0x10000 | v33; if ((v33 / 256 & 1) == 0) { // 0x1e3c9b8 g2 = 4; } else { // 0x1e3c9c2 g2 = 5; } } } } else { if (v16 == 1) { float80_t v34 = g575; // 0x1e3c909 float80_t v35 = g576; // 0x1e3c912 float80_t v36 = (v18 - v34) * (v1 - v35); // 0x1e3c918 float32_t v37 = *(float32_t *)(v15 + 37); // 0x1e3c91a result = v36 - (v2 - v34) * ((float80_t)v37 - v35); v5 = v17; uint32_t v38 = (int32_t)__asm_fnstsw(g10); // 0x1e3c932 g2 = g2 & -0x10000 | v38; if ((v38 / 256 & 1) == 0) { // 0x1e3c937 g2 = 5; } else { // 0x1e3c941 g2 = 4; } } else { if (v16 == 2) { float80_t v39 = v3 * (v18 - (float80_t)g569); // 0x1e3c951 float32_t v40 = *(float32_t *)(v15 + 37); // 0x1e3c954 result = v39 - v4 * ((float80_t)v40 - (float80_t)g570); v5 = v17; uint32_t v41 = (int32_t)__asm_fnstsw(g10); // 0x1e3c964 g2 = g2 & -0x10000 | v41; if ((v41 / 256 & 1) == 0) { // 0x1e3c969 g2 = 5; } else { // 0x1e3c973 g2 = 4; } } else { float80_t v42 = g580; // 0x1e3c8c4 float80_t v43 = g581; // 0x1e3c8cd float80_t v44 = (v18 - v42) * (v1 - v43); // 0x1e3c8d3 float32_t v45 = *(float32_t *)(v15 + 37); // 0x1e3c8d5 result = v44 - (v2 - v42) * ((float80_t)v45 - v43); v5 = v17; uint32_t v46 = (int32_t)__asm_fnstsw(g10); // 0x1e3c8ed g2 = g2 & -0x10000 | v46; if ((v46 / 256 & 1) == 0) { // 0x1e3c8f2 g2 = 5; } else { // 0x1e3c8fc g2 = 4; } } } } goto lab_0x1e3ca46; lab_0x1e3ca46: // 0x1e3ca46 g11 = v5 + 1; return result; } // Address range: 0x1e3ca4e - 0x1e3d0be int32_t function_1e3ca4e(int32_t a1) { int32_t v1; // ebp g3 = &v1; int32_t v2 = a1 + 32; // 0x1e3ca55 g2 = v2; int32_t v3; // bp-132 int32_t v4 = &v3; // 0x1e3ca58 g4 = g5; uint32_t v5 = (int32_t)__asm_fnstsw(g10); // 0x1e3ca6e g2 = g2 & -0x10000 | v5; if ((v5 / 256 & 1) != 0) { // 0x1e3ca73 *(int32_t *)(g4 + 21) = 0; } int32_t v6 = g4; // 0x1e3ca7a int32_t v7 = v6 + 197; // 0x1e3ca7a g5 = v7; g2 = 0; int32_t * v8 = (int32_t *)v7; // 0x1e3ca82 int32_t v9; // bp-120 float32_t v10; float32_t v11; // bp-44 float32_t v12; // bp-56 int32_t v13; float32_t * v14; int32_t v15; int32_t v16; // 0x1e3d0a1 int32_t v17; // 0x1e3cd18 int32_t v18; // 0x1e3cd3f float80_t v19; // 0x1e3cd8c int32_t v20; // 0x1e3cd99 int32_t v21; // 0x1e3cda2 float32_t * v22; int32_t v23; // 0x1e3ce1d float80_t v24; // 0x1e3cbfd if (*v8 == 0) { // 0x1e3ca8d g8 = 0; float32_t v25; if (*(int32_t *)(v6 + 21) != 0) { // 0x1e3cd15 v17 = a1 + 24; g2 = v17; float32_t * v26 = (float32_t *)(v6 + 181); // 0x1e3cd20 float80_t v27 = (float80_t)*(float32_t *)v17 * (float80_t)*v26; // 0x1e3cd20 g5 = a1; int32_t v28 = a1 + 12; // 0x1e3cd2c g2 = v28; float80_t v29 = (float80_t)*v26 * (float80_t)*(float32_t *)v28; // 0x1e3cd3b int32_t * v30 = (int32_t *)a1; // 0x1e3cd3d int32_t v31 = *v30; // 0x1e3cd3d g2 = v31; v18 = a1 + 4; g2 = v2; float80_t v32 = (float80_t)*(float32_t *)(a1 + 16) * (float80_t)*v26; // 0x1e3cd54 int32_t v33 = *(int32_t *)v2; // 0x1e3cd5a g5 = v33; uint32_t v34 = (int32_t)__asm_fnstsw(g10); // 0x1e3cd6a g2 = g2 & -0x10000 | v34; if ((v34 / 256 & 65) == 0) { // 0x1e3cd73 v20 = &v11; v21 = &v12; v13 = *(int32_t *)v18; v10 = v31; float32_t v35 = v33; while (true) { // 0x1e3cd73 *(int32_t *)(g9 - 4) = (int32_t)v35; g5 = g4; g2 = function_1e3c519((int32_t)&g708); g5 = g4; g2 = function_1e3c497(); *(int32_t *)(g9 - 4) = v13; *(int32_t *)(g9 - 8) = (int32_t)v10; g5 = g4; v19 = function_1e3c76c((int32_t)&g708, (int32_t)&g708); g2 = (float32_t)v19; if ((int32_t)(float32_t)v19 != 0) { // break -> 0x1e3ce1d break; } // 0x1e3cd99 v11 = (float32_t)*(int32_t *)v28; int32_t v36 = g1 ? -4 : 4; // 0x1e3cd9f int32_t v37 = v36 + v20; // 0x1e3cd9f int32_t v38 = v36 + v28; // 0x1e3cd9f *(int32_t *)v37 = *(int32_t *)v38; *(int32_t *)(v37 + v36) = *(int32_t *)(v38 + v36); int32_t v39 = *v30; // 0x1e3cda8 v12 = v39; int32_t v40 = v36 + v21; // 0x1e3cda8 int32_t v41 = v36 + a1; // 0x1e3cda8 *(int32_t *)v40 = *(int32_t *)v41; *(int32_t *)(v40 + v36) = *(int32_t *)(v41 + v36); g2 = (float32_t)v27; g5 = a1; g2 = v4; g5 = v21; *(int32_t *)(g9 - 4) = v4; *(int32_t *)(g9 - 8) = v21; int32_t v42 = function_1e3c5f3((float80_t)(float32_t)v39, (float80_t)(int80_t)&g708); // 0x1e3cdc2 g2 = v42; g11++; uint32_t v43 = (int32_t)__asm_fnstsw(g10); // 0x1e3cdd0 g2 = g2 & -0x10000 | v43; if ((v43 / 256 & 1) != 0) { int32_t v44 = g4 + 221; // 0x1e3d002 g2 = v44; *(int32_t *)v44 = v3; int32_t v45 = g1 ? -4 : 4; // 0x1e3d00d int32_t v46 = v45 + v44; // 0x1e3d00d int32_t v47 = v45 + v4; // 0x1e3d00d *(int32_t *)v46 = *(int32_t *)v47; *(int32_t *)(v46 + v45) = *(int32_t *)(v47 + v45); float80_t v48 = -1.0e-5L * (float80_t)v11; // 0x1e3d013 float32_t * v49 = (float32_t *)g2; // 0x1e3d019 *v49 = (float32_t)(v48 + (float80_t)*v49); int32_t v50 = g4 + 225; // 0x1e3d026 g2 = v50; float32_t * v51 = (float32_t *)v50; // 0x1e3d02c float80_t v52 = -1.0e-5L * (float80_t)v25 + (float80_t)*v51; // 0x1e3d02c *v51 = (float32_t)v52; int32_t v53 = __asm_fnstsw(g10); // 0x1e3d066 g2 = g2 & -0x10000 | v53; int32_t v54 = *(int32_t *)(g4 + 69); // 0x1e3d078 if ((v53 & 256) == 0) { if (v54 >= 0 == (v54 != 0)) { // 0x1e3d083 g2 = 0; v16 = 0; goto lab_0x1e3d085; } else { // 0x1e3d071 g2 = 1; v16 = 1; goto lab_0x1e3d085; } } else { // 0x1e3d078 g2 = 1; if (v54 >= 0 == (v54 != 0)) { v16 = 1; goto lab_0x1e3d085; } else { // 0x1e3d083 g2 = 0; v16 = 0; goto lab_0x1e3d085; } } } // 0x1e3cdd9 g2 = a1; g5 = v2; float80_t v55 = v32 + (float80_t)(float32_t)v13; // 0x1e3cdf7 uint32_t v56 = (int32_t)__asm_fnstsw(g10); // 0x1e3ce05 g2 = g2 & -0x10000 | v56; if ((v56 / 256 & 65) != 0) { goto lab_0x1e3ce0e; } v13 = (float32_t)v55; v10 += (float32_t)v29; v35 += *(float32_t *)(g4 + 181); } // 0x1e3ce1d v23 = *(int32_t *)(g4 + 21); g5 = v23; if (v23 != 1) { goto lab_0x1e3ce44; } else { if ((int32_t)(float32_t)v19 == 5) { goto lab_0x1e3ce44; } else { v22 = &g588; v14 = &g589; v15 = &g588; goto lab_0x1e3ce6e; } } } else { goto lab_0x1e3ce0e; } } else { // 0x1e3ca98 g2 = v2; *v8 = 0; int32_t v57 = g4; // 0x1e3ca9d g5 = v57; *(int32_t *)(v57 + 81) = g8; *(int32_t *)(g4 + 85) = g8; g2 = function_1e3c519(*(int32_t *)g2); g5 = g4; function_1e3c497(); int32_t v58 = a1 + 4; // 0x1e3cab9 g2 = v58; g5 = g4; int32_t * v59 = (int32_t *)v58; // 0x1e3cac1 int32_t * v60 = (int32_t *)a1; // 0x1e3cac3 float80_t v61 = function_1e3c76c(*v60, *v59); // 0x1e3cac5 g2 = (float32_t)v61; g5 = a1; g2 = *(int32_t *)(a1 + 28); if ((int32_t)(float32_t)v61 == 0) { int32_t v62 = &v11; // 0x1e3cc8f int32_t v63 = a1 + 12; // 0x1e3cc92 v11 = (float32_t)*(int32_t *)v63; int32_t v64 = g1 ? -4 : 4; // 0x1e3cc95 int32_t v65 = v64 + v62; // 0x1e3cc95 int32_t v66 = v64 + v63; // 0x1e3cc95 *(int32_t *)v65 = *(int32_t *)v66; *(int32_t *)(v65 + v64) = *(int32_t *)(v66 + v64); int32_t v67 = &v12; // 0x1e3cc98 v12 = (float32_t)*v60; int32_t v68 = v64 + v67; // 0x1e3cc9e int32_t v69 = v64 + a1; // 0x1e3cc9e *(int32_t *)v68 = *(int32_t *)v69; *(int32_t *)(v68 + v64) = *(int32_t *)(v69 + v64); g5 = a1; g2 = v4; g5 = v67; g2 = function_1e3c5f3((float80_t)(int80_t)v67, (float80_t)(int80_t)v4); uint32_t v70 = (int32_t)__asm_fnstsw(g10); // 0x1e3ccc0 g2 = g2 & -0x10000 | v70; int32_t v71 = g4 + 221; // 0x1e3ccf5 if ((v70 / 256 & 64) == 0) { // 0x1e3ccf5 *(int32_t *)v71 = v3; int32_t v72 = g1 ? -4 : 4; // 0x1e3ccfe int32_t v73 = v72 + v71; // 0x1e3ccfe int32_t v74 = v72 + v4; // 0x1e3ccfe *(int32_t *)v73 = *(int32_t *)v74; *(int32_t *)(v73 + v72) = *(int32_t *)(v74 + v72); } else { // 0x1e3ccc5 g2 = v71; *(int32_t *)v71 = v3; int32_t v75 = g1 ? -4 : 4; // 0x1e3ccd0 int32_t v76 = v75 + v71; // 0x1e3ccd0 int32_t v77 = v75 + v4; // 0x1e3ccd0 *(int32_t *)v76 = *(int32_t *)v77; *(int32_t *)(v76 + v75) = *(int32_t *)(v77 + v75); float80_t v78 = -1.0e-5L * (float80_t)v11; // 0x1e3ccd6 float32_t * v79 = (float32_t *)g2; // 0x1e3ccdc *v79 = (float32_t)(v78 + (float80_t)*v79); int32_t v80 = g4 + 225; // 0x1e3cce9 g2 = v80; float32_t * v81 = (float32_t *)v80; // 0x1e3ccef float80_t v82 = -1.0e-5L * (float80_t)v25 + (float80_t)*v81; // 0x1e3ccef *v81 = (float32_t)v82; } int32_t v83 = g4 + 185; // 0x1e3cd04 *(int32_t *)v83 = v9; int32_t v84 = g1 ? -4 : 4; // 0x1e3cd0a int32_t v85 = v83 + v84; // 0x1e3cd0a int32_t v86 = (int32_t)&v9 + v84; // 0x1e3cd0a *(int32_t *)v85 = *(int32_t *)v86; *(int32_t *)(v85 + v84) = *(int32_t *)(v86 + v84); return g2; } else { int32_t v87 = g4 + 33; // 0x1e3cae3 int32_t v88 = *(int32_t *)v87; // 0x1e3cae6 int32_t * v89 = (int32_t *)(a1 + 8); // 0x1e3cae8 float80_t v90 = function_1e30e04((float32_t)*v60, *v59, *v89, v88); // 0x1e3caf0 g2 = (float32_t)v90; g11++; uint32_t v91 = (int32_t)__asm_fnstsw(g10); // 0x1e3caf8 g2 = g2 & -0x10000 | v91; float80_t v92; int3_t v93; // 0x1e3cba3 float32_t * v94; if ((v91 / 256 & 1) == 0) { // 0x1e3cb22 g2 = g582; g5 = a1; int32_t v95 = *(int32_t *)&g580; // 0x1e3cb318 float80_t v96 = function_1e30e04((float32_t)*v60, *v59, *v89, v95); // 0x1e3cb3f g2 = (float32_t)v96; g11++; uint32_t v97 = (int32_t)__asm_fnstsw(g10); // 0x1e3cb47 g2 = g2 & -0x10000 | v97; if ((v97 / 256 & 1) == 0) { float32_t v98 = (int32_t)(float32_t)v61 != 4 ? g591 : g588; v11 = -v98; float32_t v99 = (int32_t)(float32_t)v61 != 4 ? g592 : g589; v94 = (float32_t *)a1; v93 = g11; v92 = -(float80_t)v99; } else { // 0x1e3cb4c g2 = a1; g5 = v58; int32_t v100 = &v11; // 0x1e3cb58 float32_t * v101 = (float32_t *)a1; // 0x1e3cb5b v11 = g580 - *v101; float80_t v102 = (float80_t)g581 - (float80_t)*(float32_t *)v58; // 0x1e3cb67 g2 = (float32_t)function_1e30d19(v100); v94 = v101; v93 = g11 + 1; v92 = v102; } } else { float80_t v103 = (float80_t)*(float32_t *)v87; // 0x1e3cafd g2 = a1; g5 = v58; int32_t v104 = &v11; // 0x1e3cb05 float32_t * v105 = (float32_t *)a1; // 0x1e3cb08 v11 = v103 - (float80_t)*v105; float80_t v106 = (float80_t)*(float32_t *)(g4 + 37); // 0x1e3cb0e g2 = (float32_t)function_1e30d19(v104); v94 = v105; v93 = g11 + 1; v92 = v106 - (float80_t)*(float32_t *)v58; } // 0x1e3cba3 g2 = a1; g5 = v58; float80_t v107 = -5.0L * (float80_t)v11 + (float80_t)*v94; // 0x1e3cbb2 v12 = v107; *(int32_t *)(g9 - 4) = v4; float32_t v108 = *(float32_t *)g5; // 0x1e3cbc4 int32_t v109 = &v12; // 0x1e3cbc6 g5 = v109; *(int32_t *)(g9 - 8) = v109; g11 = v93; g2 = function_1e3c5f3(v107, -5.0L * v92 + (float80_t)v108); g11++; uint32_t v110 = (int32_t)__asm_fnstsw(g10); // 0x1e3cbe4 g2 = g2 & -0x10000 | v110; if ((v110 / 256 & 1) == 0) { float80_t v111 = (float80_t)*(float32_t *)g8; // 0x1e3cbe9 g2 = a1; g5 = v58; *(int32_t *)(g9 - 4) = (int32_t)&v11; float32_t v112 = v111 - (float80_t)*v94; // 0x1e3cbf7 v11 = v112; float80_t v113 = (float80_t)*(float32_t *)(g4 + 37); // 0x1e3cbfa v24 = v113 - (float80_t)*(float32_t *)g5; function_1e30d19((int32_t)v112); g5 = a1; g2 = v4; *(int32_t *)(g9 - 4) = v4; g5 = v109; *(int32_t *)(g9 - 8) = v109; float80_t v114 = -5.0L * (float80_t)v11 + (float80_t)*v94; // 0x1e3cc22 v12 = v114; g11++; g2 = function_1e3c5f3(v114, -5.0L * v24 + (float80_t)*(float32_t *)v58); g11++; uint32_t v115 = (int32_t)__asm_fnstsw(g10); // 0x1e3cc3e g2 = g2 & -0x10000 | v115; if ((v115 / 256 & 1) == 0) { goto lab_0x1e3ce0e; } else { goto lab_0x1e3cc47; } } else { v24 = v92; goto lab_0x1e3cc47; } } } } else { // 0x1e3ca86 *v8 = 0; goto lab_0x1e3ce0e; } lab_generated_0: return g2; lab_0x1e3ce0e: // 0x1e3ce14 return g2; lab_0x1e3ce44: if (v23 != 2) { goto lab_0x1e3cf1b; } else { if ((int32_t)(float32_t)v19 == 4) { goto lab_0x1e3cf1b; } else { v22 = &g591; v14 = &g592; v15 = &g591; goto lab_0x1e3ce6e; } } lab_0x1e3cc47:; int32_t v116 = g4 + 221; // 0x1e3cc47 g2 = v116; *(int32_t *)v116 = v3; int32_t v117 = g1 ? -4 : 4; // 0x1e3cc52 int32_t v118 = v117 + v116; // 0x1e3cc52 int32_t v119 = v117 + v4; // 0x1e3cc52 *(int32_t *)v118 = *(int32_t *)v119; *(int32_t *)(v118 + v117) = *(int32_t *)(v119 + v117); float80_t v120 = -1.0e-5L * (float80_t)v11; // 0x1e3cc58 float32_t * v121 = (float32_t *)g2; // 0x1e3cc5e int32_t v122 = g4 + 185; // edi *v121 = (float32_t)(v120 + (float80_t)*v121); float80_t v123 = -1.0e-5L * (float80_t)(float32_t)v24; // 0x1e3cc6e int32_t v124 = g4 + 225; // 0x1e3cc74 g2 = v124; float32_t * v125 = (float32_t *)v124; // 0x1e3cc7a *v125 = (float32_t)(v123 + (float80_t)*v125); *(int32_t *)v122 = v9; int32_t v126 = v122 + v117; // 0x1e3cc7e int32_t v127 = (int32_t)&v9 + v117; // 0x1e3cc7e *(int32_t *)v126 = *(int32_t *)v127; *(int32_t *)(v126 + v117) = *(int32_t *)(v127 + v117); goto lab_0x1e3ce0e; lab_0x1e3cf1b:; float80_t v128 = v10; // 0x1e3cf1e *(int32_t *)(g4 + 81) = 0; *(int32_t *)(g4 + 85) = 1; g5 = v20; v11 = (float80_t)*(float32_t *)(g4 + 33) - v128; float80_t v129 = v13; // 0x1e3cf38 *(int32_t *)(g9 - 4) = v20; float80_t v130 = (float80_t)*(float32_t *)(g4 + 37) - v129; // 0x1e3cf3c function_1e30d19((int32_t)v11); g5 = v17; float80_t v131 = v128 - 5.0L * (float80_t)v11; // 0x1e3cf52390 v12 = v131; g2 = v21; *(int32_t *)(g9 - 4) = v4; *(int32_t *)(g9 - 8) = v21; g11++; g2 = function_1e3c5f3(v131, v129 + -5.0L * v130); uint32_t v132 = (int32_t)__asm_fnstsw(g10); // 0x1e3cf85 g2 = g2 & -0x10000 | v132; if ((v132 / 256 & 1) == 0) { // 0x1e3cf8a g2 = v10; g5 = v13; *(float32_t *)(g4 + 185) = -v11; *(int32_t *)(g4 + 221) = g2; *(int32_t *)(g4 + 225) = g5; *(float32_t *)(g4 + 189) = (float32_t)-v130; } else { int32_t v133 = g4 + 221; // 0x1e3cfbd g2 = v133; *(int32_t *)v133 = v3; int32_t v134 = g1 ? -4 : 4; // 0x1e3cfc8 int32_t v135 = v134 + v133; // 0x1e3cfc8 int32_t v136 = v134 + v4; // 0x1e3cfc8 *(int32_t *)v135 = *(int32_t *)v136; *(int32_t *)(v135 + v134) = *(int32_t *)(v136 + v134); float80_t v137 = -1.0e-5L * (float80_t)v11; // 0x1e3cfce float32_t * v138 = (float32_t *)g2; // 0x1e3cfd4 v122 = g4 + 185; *v138 = (float32_t)(v137 + (float80_t)*v138); int32_t v139 = g4 + 225; // 0x1e3cfea g2 = v139; float32_t * v140 = (float32_t *)v139; // 0x1e3cff0 *v140 = (float32_t)(-1.0e-5L * v130 + (float80_t)*v140); *(int32_t *)v122 = v9; int32_t v141 = v122 + v134; // 0x1e3cff4 int32_t v142 = (int32_t)&v9 + v134; // 0x1e3cff4 *(int32_t *)v141 = *(int32_t *)v142; *(int32_t *)(v141 + v134) = *(int32_t *)(v142 + v134); } goto lab_0x1e3ce0e; lab_0x1e3ce6e: // 0x1e3ce6e v11 = -*v22; float80_t v143 = (float80_t)*v14; // 0x1e3ce3a int32_t v144 = g4 + 89; // 0x1e3ce71 *(int32_t *)v144 = *(int32_t *)v15; int32_t v145 = g1 ? -4 : 4; // 0x1e3ce74 int32_t v146 = v145 + v144; // 0x1e3ce74 int32_t v147 = v145 + v15; // 0x1e3ce74 *(int32_t *)v146 = *(int32_t *)v147; *(int32_t *)(v146 + v145) = *(int32_t *)(v147 + v145); *(int32_t *)(g4 + 81) = 1; *(int32_t *)(g4 + 85) = 0; g2 = a1; g5 = v17; float80_t v148 = -5.0L * (float80_t)v11 + (float80_t)*(float32_t *)a1; // 0x1e3ce94 v12 = v148; *(int32_t *)(g9 - 4) = v4; g2 = v21; *(int32_t *)(g9 - 8) = v21; g2 = function_1e3c5f3(v148, 5.0L * v143 + (float80_t)*(float32_t *)v18); *(int32_t *)g6 = v9; int32_t v149 = g1 ? -4 : 4; // 0x1e3ced0 int32_t v150 = v149 + g6; // 0x1e3ced0 int32_t v151 = v149 + g8; // 0x1e3ced0 *(int32_t *)v150 = *(int32_t *)v151; *(int32_t *)(v150 + v149) = *(int32_t *)(v151 + v149); g11++; uint32_t v152 = (int32_t)__asm_fnstsw(g10); // 0x1e3ced9 g2 = g2 & -0x10000 | v152; if ((v152 / 256 & 1) == 0) { goto lab_generated_1; } else { int32_t v153 = g4 + 221; // 0x1e3cee2 g2 = v153; *(int32_t *)v153 = v3; int32_t v154 = g1 ? -4 : 4; // 0x1e3ceed int32_t v155 = v154 + v153; // 0x1e3ceed int32_t v156 = v154 + v4; // 0x1e3ceed *(int32_t *)v155 = *(int32_t *)v156; *(int32_t *)(v155 + v154) = *(int32_t *)(v156 + v154); float80_t v157 = -1.0e-5L * (float80_t)v11; // 0x1e3cef3 float32_t * v158 = (float32_t *)g2; // 0x1e3ceff *v158 = (float32_t)(v157 + (float80_t)*v158); float32_t * v159 = (float32_t *)(g4 + 225); // 0x1e3cf0c *v159 = (float32_t)(1.0e-5L * v143 + (float80_t)*v159); goto lab_0x1e3ce0e; } lab_0x1e3d085:; // 0x1e3d085 int32_t v160; // esi if (*(int32_t *)(g4 + 21) != 2) { // 0x1e3d09c v160 = &g588; *(int32_t *)(g4 + 81) = v16; goto lab_0x1e3d0a4; } else { // 0x1e3d08b v160 = &g591; int32_t v161 = v16 == 0; // 0x1e3d093 g2 = v161; *(int32_t *)(g4 + 81) = v161; goto lab_0x1e3d0a4; } lab_0x1e3d0a4:; int32_t v162 = g4 + 89; // 0x1e3d0a4 *(int32_t *)v162 = *(int32_t *)v160; int32_t v163 = g1 ? -4 : 4; // 0x1e3d0a7 int32_t v164 = v163 + v162; // 0x1e3d0a7 int32_t v165 = v163 + v160; // 0x1e3d0a7 *(int32_t *)v164 = *(int32_t *)v165; *(int32_t *)(v164 + v163) = *(int32_t *)(v165 + v163); int32_t v166 = g4 + 185; // 0x1e3d0ad *(int32_t *)v166 = v9; int32_t v167 = v166 + v163; // 0x1e3d0b3 int32_t v168 = (int32_t)&v9 + v163; // 0x1e3d0b3 *(int32_t *)v167 = *(int32_t *)v168; *(int32_t *)(v167 + v163) = *(int32_t *)(v168 + v163); goto lab_0x1e3ce0e; } // Address range: 0x1e3d0be - 0x1e3d27f int32_t function_1e3d0be(int32_t a1) { int32_t v1 = g5; // 0x1e3d0c5 int32_t v2 = *(int32_t *)(v1 + 21); // 0x1e3d0c5 g2 = v2; *(int32_t *)(v1 + 197) = 1; int32_t v3 = g5; // 0x1e3d0d2 int32_t v4 = v3; // esi g5 = 0; float32_t v5; float32_t v6; int32_t v7; // 0x1e3d26d if (v2 == 0) { v6 = 0.0f; goto lab_0x1e3d227; } else { // 0x1e3d0de if (*(int32_t *)(v3 + 81) == 0) { // 0x1e3d184 if (*(int32_t *)(v3 + 85) == 0) { v6 = 0.0f; goto lab_0x1e3d227; } else { int32_t v8 = v3 + 221; // 0x1e3d18e g5 = v8; float80_t v9 = (float80_t)*(float32_t *)v8; // 0x1e3d194 float80_t v10 = v9 - (float80_t)*(float32_t *)(v3 + 33); // 0x1e3d196 float32_t v11 = *(float32_t *)(v3 + 37); // 0x1e3d19f float80_t v12 = (float80_t)*(float32_t *)(v3 + 225) - (float80_t)v11; // 0x1e3d19f float80_t v13 = v10 * v10 + v12 * v12; // 0x1e3d1a8 uint32_t v14 = (int32_t)__asm_fnstsw(g10); // 0x1e3d1bc g2 = v14 | v2 & -0x10000; float32_t v15; if ((v14 / 256 & 1) == 0) { int32_t v16 = *(int32_t *)(v4 + 25); // 0x1e3d1c1 g2 = v16; v15 = v16; } else { float80_t v17 = 1.0L - sqrtl(v13 / (float80_t)*(float32_t *)(v4 + 177)); // 0x1e3d1d4 float80_t v18 = (float80_t)*(float32_t *)(v4 + 25) * v17; // 0x1e3d1da v15 = v18; } // 0x1e3d1e0 g2 = 0; int32_t v19 = g5; // bp-52 v5 = v15; v7 = &v19; goto lab_0x1e3d26e; } } else { float80_t v20 = (float80_t)*(float32_t *)(v3 + 221); // 0x1e3d0e7 float80_t v21 = v20 - (float80_t)*(float32_t *)(v3 + 33); // 0x1e3d0ed float32_t v22 = *(float32_t *)(v3 + 37); // 0x1e3d0f6 float80_t v23 = (float80_t)*(float32_t *)(v3 + 225) - (float80_t)v22; // 0x1e3d0f6 float80_t v24 = v21 * v21 + v23 * v23; // 0x1e3d0ff uint32_t v25 = (int32_t)__asm_fnstsw(g10); // 0x1e3d113 g2 = v25 | v2 & -0x10000; if ((v25 / 256 & 1) == 0) { // 0x1e3d118 v6 = g5; } else { int32_t v26 = v4; // 0x1e3d123 int32_t v27 = v26 + 185; // 0x1e3d129 g2 = v27; int32_t v28 = v26 + 89; // 0x1e3d130 g5 = v28; float80_t v29 = sqrtl(v24 / (float80_t)*(float32_t *)(v26 + 177)); // 0x1e3d134 float80_t v30 = fabsl((float80_t)*(float32_t *)(v26 + 69)); // 0x1e3d139 float80_t v31 = v29 * v30 / (float80_t)*(float32_t *)(v26 + 209); // 0x1e3d141 float80_t v32 = function_1e30e1f((int32_t *)v28, (int32_t *)v27); // 0x1e3d146 g2 = (float32_t)v32; uint32_t v33 = (int32_t)__asm_fnstsw(g10); // 0x1e3d154 g2 = g2 & -0x10000 | v33; float80_t v34; if ((v33 / 256 & 1) == 0) { // 0x1e3d162 v34 = v31 * v32; } else { // 0x1e3d120 v34 = 0.0L; } float80_t v35 = v34 * (float80_t)*(float32_t *)(v4 + 149); // 0x1e3d171 g11++; v6 = v35; } goto lab_0x1e3d227; } } lab_0x1e3d227: // 0x1e3d227 *(int32_t *)(g9 - 4) = (int32_t)v6; int32_t v36 = v4; // 0x1e3d24e g2 = v36 + 185; v4 = v36 + 221; *(float32_t *)(g9 - 8) = (float32_t)0.0L; *(int32_t *)(g9 - 4) = *(int32_t *)(v4 - 192); *(int32_t *)(g9 - 8) = *(int32_t *)(v4 - 196); *(int32_t *)(g9 - 12) = g2; v7 = g9 - 16; *(int32_t *)v7 = v4; v5 = (int32_t)v6 > 0 ? -1.875f : 25.7252903f; goto lab_0x1e3d26e; lab_0x1e3d26e: // 0x1e3d26e *(int32_t *)(v7 - 4) = a1; float80_t v37 = function_1e2f084((int32_t)v5, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d271 g2 = (float32_t)v37; return (float32_t)v37; } // Address range: 0x1e3d27f - 0x1e3d312 int32_t function_1e3d27f(int32_t a1, int32_t a2) { int32_t v1 = g5; // 0x1e3d284 if (a1 == 1) { // 0x1e3d2c5 g2 = function_1e3c405(a2, g6, g8, g3); *(float32_t *)(v1 + 73) = (float32_t)g684; int32_t v2 = *(int32_t *)(v1 + 69); // 0x1e3d2d2 g2 = v2; g5 = *(int32_t *)(v1 + 213); *(int32_t *)(v1 + 77) = v2; *(int32_t *)(v1 + 209) = g5; goto lab_0x1e3d29b; } else { if (a1 == 2) { // 0x1e3d2e6 g2 = function_1e3c405(a2, g6, g8, g3); *(float32_t *)(v1 + 73) = (float32_t)g684; *(int32_t *)(v1 + 77) = 0; int32_t v3 = *(int32_t *)(v1 + 217); // 0x1e3d2fa g5 = v3; *(int32_t *)(v1 + 209) = v3; goto lab_0x1e3d29b; } else { if (a1 == 1024) { // 0x1e3d308 g2 = 0; *(int32_t *)(v1 + 77) = 0; *(int32_t *)(v1 + 21) = g2; return g2; } else { goto lab_0x1e3d29b; } } } lab_0x1e3d29b:; // 0x1e3d29b int32_t v4; // 0x1e3d2b6 if (*(int32_t *)(v1 + 21) == 0) { // 0x1e3d2a1 g2 = a2; *(int32_t *)(v1 + 201) = a2; v4 = v1; } else { v4 = v1; } float80_t v5 = (float80_t)*(float32_t *)(v4 + 209); // 0x1e3d2aa float80_t v6 = v5 + (float80_t)*(float32_t *)(v4 + 201); // st7 *(int32_t *)(v4 + 21) = a1; *(float32_t *)(v1 + 205) = (float32_t)v6; return g2; // 0x1e3d2bf return g2; } // Address range: 0x1e3d312 - 0x1e3d329 int32_t function_1e3d312(void) { int32_t v1 = g5; // 0x1e3d313 g8 = v1; g2 = function_1e3c519(*(int32_t *)(v1 + 201)); g5 = g8; int32_t result = function_1e3c497(); // 0x1e3d322 g2 = result; return result; } // Address range: 0x1e3d329 - 0x1e3d43f int32_t function_1e3d329(int32_t a1, int32_t a2) { // 0x1e3d329 int32_t v1; // bp-80 int32_t v2 = &v1; // 0x1e3d32c int32_t v3 = g6; // 0x1e3d331 g4 = 0; g6 = a2; function_1e2a3f7(a1, a2, 0, v3); g2 = v2; *(int32_t *)g8 = (int32_t)&g64; function_1e39641(g6, g4, v2); *(int32_t *)(g8 + 86) = g4; *(int32_t *)(g8 + 74) = g5; g5 = v1; *(int32_t *)(g8 + 70) = g2; int32_t v4; // edx *(int32_t *)(g8 + 54) = v4; *(int32_t *)(g8 + 58) = g5; int32_t v5 = function_1e3df20(233); // 0x1e3d374 g2 = v5; int32_t v6 = g4; // 0x1e3d37f if (v5 == v6) { // 0x1e3d3f2 *(int32_t *)(g8 + 82) = 0; } else { // 0x1e3d383 g2 = function_1e3991a(g6, v6); g2 = function_1e3991a(g6, g4); g2 = function_1e3991a(g6, g4); g2 = function_1e3991a(g6, g4); g2 = function_1e3991a(g6, g4); int32_t v7 = function_1e3991a(g6, g4); // 0x1e3d3d4 g5 = v5; int32_t v8 = g8; // 0x1e3d3e3 int32_t v9 = v8 + 5; // 0x1e3d3e3 g2 = v9; int32_t v10; int32_t v11 = function_1e3c042(v8, v9, v10, a1, v7, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d3e8 g2 = v11; *(int32_t *)(g8 + 82) = v11; } int32_t v12 = *(int32_t *)(g8 + 82); // 0x1e3d3f9 int32_t v13 = *(int32_t *)(g8 + 34) + 4; // 0x1e3d3ff g5 = v13; int32_t v14 = *(int32_t *)v13; // 0x1e3d408 g2 = v14; int32_t v15 = *(int32_t *)(v14 + 4) - 1; // 0x1e3d40d g2 = v15; float80_t v16 = (float80_t)*(float32_t *)(v12 + 213) / (float80_t)v15; // 0x1e3d411 *(float32_t *)(g8 + 90) = (float32_t)v16; float80_t v17 = (float80_t)*(float32_t *)(v12 + 217); // 0x1e3d417 int32_t v18 = *(int32_t *)g5; // 0x1e3d41d g5 = v18; int32_t v19 = *(int32_t *)(v18 + 4); // 0x1e3d41f g2 = 0; g6 = *(int32_t *)g9; *(int32_t *)(g8 + 78) = 0; *(int32_t *)(g8 + 102) = g2; g2 = g8; *(float32_t *)(g8 + 94) = (float32_t)(v17 / (float80_t)(v19 - 1)); g4 = *(int32_t *)(g9 + 4); return g2; } // Address range: 0x1e3d43f - 0x1e3d442 int32_t function_1e3d43f(void) { // 0x1e3d43f return g2; } // Address range: 0x1e3d442 - 0x1e3d460 int32_t function_1e3d442(char a1) { // 0x1e3d442 g8 = g5; int32_t v1; // esi g2 = function_1e3d460(v1); if ((a1 & 1) != 0) { // 0x1e3d451 g2 = function_1e3df60(g8); } // 0x1e3d45a g2 = g8; return g8; } // Address range: 0x1e3d460 - 0x1e3d47d int32_t function_1e3d460(int32_t a1) { int32_t v1 = g8; // 0x1e3d460 *(int32_t *)g5 = (int32_t)&g64; int32_t v2 = g5; // 0x1e3d467 g8 = v2; g2 = function_1e3df60(*(int32_t *)(v2 + 82)); g5 = g8; int32_t result = function_1e2a4cb(); // 0x1e3d476 g2 = result; g8 = v1; return result; } // Address range: 0x1e3d47d - 0x1e3d58b int32_t function_1e3d47d(int32_t a1) { int32_t v1 = g8; // 0x1e3d48a int32_t v2 = g6; // 0x1e3d48b g4 = 0; g8 = a1; float32_t v3 = *(float32_t *)(a1 + 102); // 0x1e3d494 g6 = a1 + 34; float32_t v4 = *(float32_t *)(a1 + 98); // 0x1e3d49a g2 = function_1e3dbc0((int32_t)(float32_t)(((float80_t)g172 - (float80_t)v3) / (float80_t)v4 + 0.5L), v2, v1); int32_t v5 = *(int32_t *)g6; // 0x1e3d4b1 g2 = v5; int32_t v6 = *(int32_t *)(v5 + 4); // 0x1e3d4b3 g5 = v6; uint32_t v7 = (int32_t)__asm_fnstsw(g10); // 0x1e3d4bf int32_t v8 = g2 & -0x10000 | v7; // 0x1e3d4bf int32_t v9; if ((v7 / 256 & 1) != 0) { v9 = *(int32_t *)(v6 + 4); } else { v9 = v8; } // 0x1e3d4ca g2 = v9; int32_t v10 = __ftol(); // 0x1e3d4dd int32_t v11; int32_t v12; // 0x1e3d4f4 if (v10 == 0) { v11 = 1; v12 = 1; } else { v11 = v10; v12 = v10; } // 0x1e3d4eb g2 = v11; if (*(int32_t *)(g8 + 6) == 1) { int32_t * v13 = (int32_t *)(g8 + 78); // 0x1e3d4f1 int32_t v14 = *v13 + v12; // 0x1e3d4f4 *v13 = v14; int32_t v15 = *(int32_t *)g6; // 0x1e3d4f9 g5 = v15; int32_t v16 = *(int32_t *)(v15 + 4); // 0x1e3d4fb g5 = v16; int32_t v17 = *(int32_t *)(v16 + 4) - 1; // 0x1e3d501 g5 = v17; if (v17 <= v14) { // 0x1e3d506 g4 = 1; *(int32_t *)(g8 + 78) = v17; } } // 0x1e3d50e if (*(int32_t *)(g8 + 6) == 2) { int32_t v18 = g8 + 78; // 0x1e3d514 int32_t * v19 = (int32_t *)v18; // 0x1e3d517 int32_t v20 = *v19 - g2; // 0x1e3d519 g5 = v20; g2 = 0; *v19 = v20; if (v20 >= 0 != v20 != 0) { // 0x1e3d523 g4 = 1; *(int32_t *)v18 = g2; } } // 0x1e3d52a g2 = 0; if (g4 == 0) { int32_t v21 = function_1e325d2(*(int32_t *)(g8 + 98), g8, 0x1e3d47d); // 0x1e3d541 g2 = v21; *(int32_t *)(g8 + 86) = v21; } else { // 0x1e3d530 *(int32_t *)(g8 + 86) = 0; *(int32_t *)(g8 + 6) = g2; } int32_t v22 = *(int32_t *)(g8 + 78); // 0x1e3d549 g5 = v22; int32_t v23 = *(int32_t *)(*(int32_t *)g6 + 4); // 0x1e3d54e g2 = v23; int32_t v24 = 4 * v22; // 0x1e3d551 g5 = v24; int32_t v25 = *(int32_t *)(g8 + 30); // 0x1e3d554 int32_t v26 = *(int32_t *)(v24 + 8 + v23); // 0x1e3d557 int32_t v27 = *(int32_t *)(v26 + 33); // 0x1e3d55e g2 = v27; int32_t v28 = v27 - *(int32_t *)(v25 + 238); // 0x1e3d561 g2 = v28; *(int32_t *)(g9 - 4) = v28; int32_t v29 = *(int32_t *)(v26 + 29); // 0x1e3d568 g2 = v29; int32_t v30 = v29 - *(int32_t *)(v25 + 234); // 0x1e3d56b g2 = v30; int32_t v31 = *(int32_t *)(*(int32_t *)(g8 + 38) + 4); // 0x1e3d571 *(int32_t *)(g9 - 8) = v30; *(int32_t *)(g9 - 12) = *(int32_t *)(v31 + 8 + g5); *(int32_t *)(g9 - 16) = v26; *(int32_t *)(g9 - 20) = *(int32_t *)(g8 + 26); int32_t result = function_1e29a04((int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d57d g2 = result; g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); return result; } // Address range: 0x1e3d58b - 0x1e3d6de int32_t function_1e3d58b(int32_t a1) { // 0x1e3d58b g8 = a1; int32_t v1 = g5; // 0x1e3d596 g6 = v1; if (a1 == 1) { // 0x1e3d5db g2 = function_1e328b9(1, v1); int32_t v2 = g6; // 0x1e3d5e3 int32_t v3 = *(int32_t *)(v2 + 90); // 0x1e3d5e3 g2 = v3; *(int32_t *)(v2 + 98) = v3; int32_t v4 = *(int32_t *)(g6 + 74); // 0x1e3d5e9 g2 = v4; if (v4 != 0) { // 0x1e3d5f0 g2 = function_1e39a10(v4); g11++; } goto lab_0x1e3d61c; } else { if (a1 == 2) { int32_t v5 = *(int32_t *)(v1 + 94); // 0x1e3d5fa g2 = v5; *(int32_t *)(v1 + 98) = v5; int32_t v6 = *(int32_t *)(g6 + 70); // 0x1e3d600 g2 = v6; if (v6 != 0) { // 0x1e3d607 g2 = function_1e39a10(v6); g11++; } goto lab_0x1e3d61c; } else { if (a1 < 1009) { // 0x1e3d6d2 g2 = 0; return 0; } if (a1 > 1011) { if (a1 == 1020) { goto lab_0x1e3d69b; } else { if (a1 == 1022) { goto lab_0x1e3d611; } else { if (a1 != 1024) { // 0x1e3d6d2 g2 = 0; return 0; } goto lab_0x1e3d69b; } } } else { goto lab_0x1e3d611; } } } lab_0x1e3d61c:; int32_t v7 = g6; // 0x1e3d61c int32_t v8 = v7 + 86; // 0x1e3d61c g4 = v8; g3 = 0; int32_t v9 = *(int32_t *)v8; // 0x1e3d621 g2 = v9; int32_t v10; // 0x1e3d642 if (v9 != 0) { // 0x1e3d627 *(int32_t *)(g9 - 4) = v9; g2 = function_1e32771((int32_t)&g708); *(int32_t *)g4 = g3; v10 = g6; } else { v10 = v7; } // 0x1e3d62f if (*(int32_t *)(v10 + 6) != 0) { float80_t v11 = (float80_t)*(float32_t *)(g9 + 28); // 0x1e3d63e int32_t v12 = *(int32_t *)(v10 + 82); // 0x1e3d642 g2 = v12; float80_t v13 = v11 - (float80_t)*(float32_t *)(v12 + 201); // 0x1e3d648 *(float32_t *)(g9 + 16) = (float32_t)v13; float80_t v14 = v13 / (float80_t)*(float32_t *)(g6 + 98); // 0x1e3d652 *(float64_t *)g9 = (float64_t)v14; int32_t v15 = function_1e3dbc0((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d658 g2 = v15; float80_t v16 = g684 * (float80_t)*(float32_t *)(g6 + 98); // 0x1e3d65d float32_t * v17 = (float32_t *)(g9 + 24); // 0x1e3d663 *v17 = (float32_t)((float80_t)*v17 - v16); g11++; uint32_t v18 = (int32_t)__asm_fnstsw(g10); // 0x1e3d671 g2 = g2 & -0x10000 | v18; if ((v18 / 256 & 1) != 0) { // 0x1e3d676 *(int32_t *)(g9 + 16) = 0; } } else { int32_t v19 = *(int32_t *)(v10 + 98); // 0x1e3d635 g2 = v19; *(int32_t *)(g9 + 16) = v19; } // 0x1e3d67e g2 = *(int32_t *)(g9 + 28); *(int32_t *)(g9 - 4) = 0x1e3d47d; *(int32_t *)(g9 - 8) = g6; *(int32_t *)(g6 + 6) = g8; *(int32_t *)(g9 - 4) = *(int32_t *)(g9 + 24); *(int32_t *)(g6 + 102) = g2; int32_t v20 = function_1e325d2((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d692 g2 = v20; *(int32_t *)g4 = v20; goto lab_0x1e3d6c5; lab_0x1e3d6c5: // 0x1e3d6c5 *(int32_t *)(g9 - 4) = *(int32_t *)(g9 + 28); *(int32_t *)(g9 - 8) = g8; g5 = *(int32_t *)(g6 + 82); g2 = function_1e3d27f((int32_t)&g708, (int32_t)&g708); // 0x1e3d6d2 g2 = 0; return 0; lab_0x1e3d611: // 0x1e3d611 g8 = 2; int32_t v21 = *(int32_t *)(v1 + 94); // 0x1e3d616 g2 = v21; *(int32_t *)(v1 + 98) = v21; goto lab_0x1e3d61c; lab_0x1e3d69b: // 0x1e3d69b if (*(int32_t *)(v1 + 6) == 0) { // 0x1e3d6d2 g2 = 0; return 0; } int32_t v22 = *(int32_t *)(v1 + 86); // 0x1e3d6a1 g2 = v22; int32_t v23; // 0x1e3d6ae if (v22 != 0) { // 0x1e3d6a8 g2 = function_1e32771(v22); v23 = g6; } else { v23 = v1; } // 0x1e3d6ae *(int32_t *)(v23 + 78) = -1; *(int32_t *)(g6 + 6) = 2; *(int32_t *)(g9 - 4) = g6; *(int32_t *)(g9 - 8) = *(int32_t *)(g6 + 86); g2 = function_1e3d47d((int32_t)&g708); goto lab_0x1e3d6c5; } // Address range: 0x1e3d6de - 0x1e3d6e6 int32_t function_1e3d6de(void) { int32_t v1 = *(int32_t *)(g5 + 82); // 0x1e3d6de g5 = v1; int32_t result = *(int32_t *)v1; // 0x1e3d6e1 g2 = result; return result; } // Address range: 0x1e3d6e6 - 0x1e3d746 int32_t function_1e3d6e6(int32_t * a1, int32_t a2, int32_t * a3) { int32_t v1 = (int32_t)a1; g2 = a2; float80_t v2 = (float80_t)*(float32_t *)a2; // 0x1e3d6ea float80_t v3 = (float80_t)*(float32_t *)(a2 + 4); // 0x1e3d6ec float80_t v4 = (float80_t)*(float32_t *)(a2 + 8); // 0x1e3d6ef g2 = v1; float32_t v5 = *(float32_t *)(v1 + 4); // 0x1e3d6f6 float32_t v6 = *(float32_t *)(v1 + 8); // 0x1e3d6fb g5 = (int32_t)a3; float32_t v7 = *(float32_t *)a1; // 0x1e3d706 float32_t v8 = *(float32_t *)(v1 + 12); // 0x1e3d70c *(float32_t *)a3 = (float32_t)((float80_t)v8 + v3 * (float80_t)v5 + v4 * (float80_t)v6 + v2 * (float80_t)v7); int32_t v9 = g2; // 0x1e3d711 float32_t v10 = *(float32_t *)(v9 + 20); // 0x1e3d711 float32_t v11 = *(float32_t *)(v9 + 24); // 0x1e3d716 float32_t v12 = *(float32_t *)(v9 + 16); // 0x1e3d71d float32_t v13 = *(float32_t *)(v9 + 28); // 0x1e3d724 *(float32_t *)(g5 + 4) = (float32_t)((float80_t)v10 * v3 + (float80_t)v11 * v4 + (float80_t)v12 * v2 + (float80_t)v13); int32_t v14 = g2; // 0x1e3d72c float80_t v15 = v3 * (float80_t)*(float32_t *)(v14 + 36); // 0x1e3d72c float80_t v16 = v15 + v4 * (float80_t)*(float32_t *)(v14 + 40); // 0x1e3d734 float80_t v17 = v16 + (float80_t)*(float32_t *)(v14 + 32) * v2; // 0x1e3d73b float80_t v18 = v17 + (float80_t)*(float32_t *)(v14 + 44); // 0x1e3d73d *(float32_t *)(g5 + 8) = (float32_t)v18; return g2; } // Address range: 0x1e3d750 - 0x1e3d794 int32_t function_1e3d750(int32_t a1, int32_t a2) { int32_t v1 = &a1; // 0x1e3d750 g5 = -1; g2 = 0; g6 = a1; int32_t v2 = -1; // 0x1e3d76f while (true) { if (v2 == 0) { // break -> bb16 break; } int32_t v3 = (g1 ? -1 : 1) + a1; // 0x1e3d76f g6 = v3; int32_t v4 = v2 - 1; // 0x1e3d76f g5 = v4; if (*(char *)a1 == 0) { // break -> bb16 break; } a1 = v3; v2 = v4; } // bb16 int32_t v5; // bp+12 g2 = &v5; g7 = a2; g5 = v1; int32_t result = function_1e3e1e0(&a1, a2, &v5); // 0x1e3d787 g2 = result; return result; } // Address range: 0x1e3d7a0 - 0x1e3d807 int32_t function_1e3d7a0(int32_t a1, char * a2) { // 0x1e3d7a0 int32_t v1; // bp+12 g5 = &v1; int32_t v2 = g8; // 0x1e3d7ab int32_t v3 = a1; // bp-32 g2 = &v3; int32_t v4 = (int32_t)a2; // 0x1e3d7c9 g7 = v4; int32_t result = function_1e3f090(&v3, v4, &v1, v2, a1, 0x7fffffff, a1, 66); // 0x1e3d7cf *(char *)v3 = 0; g2 = result; g8 = v2; return result; } // Address range: 0x1e3d810 - 0x1e3d890 int32_t function_1e3d810(int32_t result, int32_t a2) { // 0x1e3d810 g5 = a2; int32_t v1 = g6; // 0x1e3d814 int32_t v2 = g8; // 0x1e3d816 unsigned char v3 = *(char *)a2; // 0x1e3d817 int32_t v4 = v3; // 0x1e3d817 int32_t v5 = g7 & -256 | v4; // 0x1e3d817 g7 = v5; if (v3 == 0) { // 0x1e3d88a g2 = result; g6 = v1; return result; } unsigned char v6 = *(char *)(a2 + 1); // 0x1e3d821 int32_t v7 = 256 * (int32_t)v6 | v5 & -0xff01; // 0x1e3d821 g7 = v7; if (v6 == 0) { // 0x1e3d877 g6 = v1; g2 = v4; int32_t result2 = function_1e3df86(v2, g4, v1); // 0x1e3d87e g2 = result2; return result2; } int32_t v8 = g2; // 0x1e3d82e int32_t v9; // 0x1e3d83b int32_t v10; // 0x1e3d883 int32_t v11; // 0x1e3d839 int32_t v12; // 0x1e3d84a while (true) { lab_0x1e3d828: // 0x1e3d828 g5 = a2; unsigned char v13 = *(char *)result; // 0x1e3d82e int32_t v14 = (int32_t)v13 | v8 & -256; // 0x1e3d82e g2 = v14; int32_t v15 = result + 1; // 0x1e3d830 if (v13 == v3) { v12 = v14; v10 = v15; goto lab_0x1e3d84a; } else { if (v13 == 0) { // break -> 0x1e3d844 break; } v11 = v14; v9 = v15; goto lab_0x1e3d839; } } lab_0x1e3d844: // 0x1e3d844 g8 = v2; g6 = v1; g2 = 0; return 0; lab_0x1e3d84a:; unsigned char v16 = *(char *)v10; // 0x1e3d84a int32_t v17 = (int32_t)v16 | v12 & -256; // 0x1e3d84a g2 = v17; int32_t v18 = v10 + 1; // 0x1e3d84c if (v16 == (char)(v7 / 256)) { while (true) { lab_0x1e3d854:; int32_t v19 = a2 + 2; // 0x1e3d854 unsigned char v20 = *(char *)v19; // 0x1e3d854 int32_t v21 = 256 * (int32_t)v20 | v17 & -0xff01; // 0x1e3d854 g2 = v21; int32_t result3; // 0x1e3d883 if (v20 == 0) { // 0x1e3d883 result3 = v10 - 1; g2 = result3; g8 = v2; g6 = v1; return result3; } unsigned char v22 = *(char *)v18; // 0x1e3d85b int32_t v23 = v21 & -256; // 0x1e3d85b int32_t v24 = (int32_t)v22 | v23; // 0x1e3d85b g2 = v24; int32_t v25 = v18 + 2; // 0x1e3d85d if (v22 != (char)(v21 / 256)) { v8 = v24; result = v10; // continue (via goto) -> 0x1e3d828 goto lab_0x1e3d828; } unsigned char v26 = *(char *)(a2 + 3); // 0x1e3d864 int32_t v27 = (int32_t)v26 | v23; // 0x1e3d864 g2 = v27; if (v26 == 0) { // 0x1e3d883 result3 = v10 - 1; g2 = result3; g8 = v2; g6 = v1; return result3; } int32_t v28 = 256 * (int32_t)*(char *)(v18 + 1) | v27 & -0xff01; // 0x1e3d86b g2 = v28; g5 = v19; if (v26 == (char)(v28 / 256)) { v18 = v25; v17 = v28; a2 = v19; goto lab_0x1e3d854; } else { v8 = v28; result = v10; goto lab_0x1e3d828; } } } goto lab_0x1e3d83c; lab_0x1e3d83c:; char v29 = v17; // 0x1e3d83c if (v29 == v3) { v12 = v17; v10 = v18; goto lab_0x1e3d84a; } else { if (v29 == 0) { // break -> 0x1e3d844 goto lab_0x1e3d844; } v11 = v17; v9 = v18; goto lab_0x1e3d839; } lab_0x1e3d839:; int32_t v30 = (int32_t)*(char *)v9 | v11 & -256; // 0x1e3d839 g2 = v30; v17 = v30; v18 = v9 + 1; goto lab_0x1e3d83c; } // Address range: 0x1e3d890 - 0x1e3d8a7 int32_t function_1e3d890(void) { // 0x1e3d890 g2 = function_1e3d8c0(); int32_t v1 = __ms_p5_mp_test_fdiv(); // 0x1e3d895 g2 = v1; g430 = v1; g2 = function_1e3fb50(); int32_t result = __asm_fnclex(); // 0x1e3d8a4 g2 = result; return result; } // Address range: 0x1e3d8b0 - 0x1e3d8b1 int32_t function_1e3d8b0(void) { // 0x1e3d8b0 return g2; } // Address range: 0x1e3d8c0 - 0x1e3d8f8 int32_t function_1e3d8c0(void) { // 0x1e3d8c0 g437 = 0x1e3fc60; g438 = 0x1e3fce0; g439 = 0x1e3fbf0; g440 = 0x1e3fcc0; g2 = 0x1e40080; g436 = 0x1e40080; g441 = 0x1e40080; return 0x1e40080; } // Address range: 0x1e3d900 - 0x1e3dac2 int32_t function_1e3d900(int32_t a1, uint32_t a2, int32_t a3, int32_t a4) { int32_t v1 = g4; // 0x1e3d908 int32_t v2 = g8; // 0x1e3d909 g4 = a2; int32_t v3 = g6; // 0x1e3d90e int32_t v4 = g3; // bp-28 int32_t v5 = &v4; // 0x1e3d90f if (a1 == 0) { int32_t result = function_1e22670(a2); // 0x1e3d913 g2 = result; g6 = v3; g8 = v2; g4 = v1; return result; } if (a2 == 0) { // 0x1e3d927 g2 = a1; function_1e22600(a1); g2 = 0; g6 = v3; g8 = v2; g4 = v1; return 0; } int32_t v6; // 0x1e3d954 if (a2 < 0xffffffe1) { // 0x1e3d947 g4 = a2 + 15 & -16; v6 = v5; } else { v6 = v5; } int32_t result2; // 0x1e3da8b while (true) { // 0x1e3d954 *(int32_t *)(v6 + 16) = 0; if (g4 < 0xffffffe1) { // 0x1e3d965 *(int32_t *)(g9 - 4) = 9; function_1e22490((int32_t)&g708); int32_t v7 = g9 + 24; // 0x1e3d96c g2 = v7; g5 = g9 + 28; *(int32_t *)g9 = v7; *(int32_t *)(g9 - 4) = g5; *(int32_t *)(g9 - 8) = *(int32_t *)(g9 + 36); int32_t v8 = function_1e22ac0((int32_t)&g708, &g708, &g708); // 0x1e3d97e g2 = v8; char * v9 = (char *)v8; // 0x1e3d986 g3 = v8; if (v8 == 0) { // 0x1e3da68 *(int32_t *)(g9 + 8) = 9; g2 = function_1e22500((int32_t)&g708); g2 = *(int32_t *)(g9 + 36); g5 = g676; *(int32_t *)g9 = g4; *(int32_t *)(g9 - 4) = g2; *(int32_t *)(g9 - 8) = 0; *(int32_t *)(g9 - 12) = g5; int32_t * v10 = HeapReAlloc(&g708, (int32_t)&g708, &g708, (int32_t)&g708); // 0x1e3da81 int32_t v11 = (int32_t)v10; // 0x1e3da81 g2 = v11; *(int32_t *)(g9 + 16) = v11; } else { uint32_t v12 = g4; // 0x1e3d990 int32_t v13; // 0x1e3da0e if (v12 < g136) { // 0x1e3d998 g2 = *(int32_t *)(g9 + 32); int32_t v14 = v12 / 16; // 0x1e3d99e g8 = v14; g5 = *(int32_t *)(g9 + 36); *(int32_t *)(g9 + 8) = v14; *(int32_t *)(g9 + 4) = v8; *(int32_t *)g9 = g2; *(int32_t *)(g9 - 4) = g5; int32_t v15 = function_1e22f70((int32_t)&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d9a9 g2 = v15; if (v15 == 0) { // 0x1e3d9bf *(int32_t *)(g9 + 12) = g8; int32_t v16 = function_1e22b70((int32_t)&g708); // 0x1e3d9c0 g2 = v16; *(int32_t *)(g9 + 20) = v16; if (v16 != 0) { // 0x1e3d9d0 g2 = 0; int32_t v17 = 16 * (int32_t)*v9; // 0x1e3d9d5 g2 = v17; int32_t v18 = g4; // 0x1e3d9d8 if (v17 >= v18) { // 0x1e3d9dc g2 = v18; } else { v18 = v17; } int32_t v19 = *(int32_t *)(g9 + 20); // 0x1e3d9de int32_t v20 = *(int32_t *)(g9 + 36); // 0x1e3d9e2 g5 = v18; *(int32_t *)g9 = v8; int32_t v21 = g5 / 4; // 0x1e3d9e9 g5 = v21; __asm_rep_movsd_memcpy((char *)v19, (char *)v20, v21); int32_t v22 = (g1 ? -4 : 4) * v21 + v19; // 0x1e3d9ec char * v23 = (char *)v22; // 0x1e3d9ec int32_t v24 = g2 & 3; // 0x1e3d9f0 g5 = v24; __asm_rep_movsb_memcpy(v23, v23, v24); int32_t v25 = (g1 ? -1 : 1) * v24 + v22; // 0x1e3d9f3 g6 = v25; g8 = v25; g5 = 0; int32_t v26 = *(int32_t *)(g9 + 24); // 0x1e3d9f5 g2 = v26; g5 = *(int32_t *)(g9 + 28); *(int32_t *)(g9 - 4) = v26; *(int32_t *)(g9 - 8) = g5; int32_t v27 = function_1e22b20((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3d9ff g2 = v27; v13 = g9 + 12; } else { v13 = g9 + 4; } } else { int32_t v28 = *(int32_t *)(g9 + 48); // 0x1e3d9b5 g2 = v28; *(int32_t *)(g9 + 32) = v28; v13 = g9; } } else { v13 = g9 + 12; } // 0x1e3da07 int32_t v29; // 0x1e3da5c if (*(int32_t *)(v13 + 16) == 0) { // 0x1e3da0e *(int32_t *)(v13 - 4) = g4; g2 = g676; *(int32_t *)(v13 - 8) = 0; *(int32_t *)(v13 - 12) = g2; int32_t * v30 = HeapAlloc(&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3da17 int32_t v31 = (int32_t)v30; // 0x1e3da17 g2 = v31; *(int32_t *)(g9 + 16) = v31; if (v30 == NULL) { // 0x1e3da0e v29 = g9; } else { // 0x1e3da25 g2 = 0; int32_t v32 = 16 * (int32_t)*v9; // 0x1e3da2a g2 = v32; int32_t v33 = g4; // 0x1e3da2d if (v32 >= v33) { // 0x1e3da31 g2 = v33; } else { v33 = v32; } int32_t v34 = *(int32_t *)(g9 + 16); // 0x1e3da33 int32_t v35 = *(int32_t *)(g9 + 32); // 0x1e3da37 g5 = v33; *(int32_t *)(g9 - 4) = v8; int32_t v36 = g5 / 4; // 0x1e3da3e g5 = v36; __asm_rep_movsd_memcpy((char *)v34, (char *)v35, v36); int32_t v37 = (g1 ? -4 : 4) * v36 + v34; // 0x1e3da41 char * v38 = (char *)v37; // 0x1e3da41 int32_t v39 = g2 & 3; // 0x1e3da45 g5 = v39; __asm_rep_movsb_memcpy(v38, v38, v39); int32_t v40 = (g1 ? -1 : 1) * v39 + v37; // 0x1e3da48 g6 = v40; g8 = v40; g5 = 0; int32_t v41 = *(int32_t *)(g9 + 24); // 0x1e3da4a g2 = v41; g5 = *(int32_t *)(g9 + 28); *(int32_t *)(g9 - 4) = v41; *(int32_t *)(g9 - 8) = g5; int32_t v42 = function_1e22b20((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e3da54 g2 = v42; v29 = g9 + 12; } } else { v29 = v13; } // 0x1e3da5c *(int32_t *)(v29 - 4) = 9; g2 = function_1e22500((int32_t)&g708); } } // 0x1e3da8b result2 = *(int32_t *)(g9 + 16); if (result2 != 0) { // break -> 0x1e3dab6 break; } // 0x1e3da92 if (g147 == 0) { // break -> 0x1e3dab6 break; } // 0x1e3da9b *(int32_t *)(g9 - 4) = g4; int32_t v43 = function_1e232d0((int32_t)&g708); // 0x1e3da9c g2 = v43; if (v43 == 0) { // 0x1e3daac g2 = 0; g6 = *(int32_t *)(g9 + 8); g8 = *(int32_t *)(g9 + 12); g4 = *(int32_t *)(g9 + 16); return 0; } v6 = g9 + 4; } // 0x1e3dab6 g2 = result2; g6 = *(int32_t *)(g9 + 4); g8 = *(int32_t *)(g9 + 8); g4 = *(int32_t *)(g9 + 12); return result2; } // Address range: 0x1e3dad0 - 0x1e3db74 int32_t function_1e3dad0(int32_t a1) { // 0x1e3dad0 g8 = a1; int32_t v1 = g3; // bp-16 g6 = 1; int32_t v2 = &v1; // 0x1e3dae5 int32_t v3 = 1; // 0x1e3dadd int32_t v4; // 0x1e3dae53 while (true) { // 0x1e3dadd int32_t v5; // 0x1e3daec if (g442 > v3) { // 0x1e3dae5 *(int32_t *)(v2 - 4) = 8; g2 = 0; int32_t v6 = (int32_t)*(char *)g8; // 0x1e3dae9 g2 = v6; *(int32_t *)(v2 - 8) = v6; v5 = function_1e40120((int32_t)&g708, (int32_t)&g708); g2 = v5; v4 = g9 + 8; } else { int32_t v7 = *(int32_t *)0x1e504c8; // 0x1e3daf8 g5 = v7; int32_t v8 = (int32_t)*(char *)a1; // 0x1e3dafe g7 = v8; g2 = 0; int32_t v9 = (int32_t)*(int16_t *)(2 * v8 + v7) & 8; // 0x1e3db06 g2 = v9; v4 = v2; v5 = v9; } if (v5 == 0) { // break -> 0x1e3db10 break; } int32_t v10 = g8 + 1; // 0x1e3db0d g8 = v10; v2 = v4; a1 = v10; v3 = g6; } int32_t v11 = g8; // 0x1e3db12 unsigned char v12 = *(char *)v11; // 0x1e3db12 int32_t v13 = v12; // 0x1e3db12 g4 = v13; int32_t v14 = v11 + 1; // 0x1e3db14 g8 = v14; g6 = v13; if (v12 == 45) { goto lab_0x1e3db21; } else { if (v12 != 43) { goto lab_0x1e3db26; } else { goto lab_0x1e3db21; } } lab_0x1e3db21:; int32_t v15 = (int32_t)*(char *)v14; // 0x1e3db23 g4 = v15; g8 = v11 + 2; v13 = v15; goto lab_0x1e3db26; lab_0x1e3db26: // 0x1e3db26 g3 = 0; int32_t v16 = 0; // 0x1e3db6110 int32_t v17 = v4; // 0x1e3db31 int32_t v18 = v13; // 0x1e3db46 int32_t v19; // 0x1e3db6f int32_t result; // 0x1e3db73 while (true) { // 0x1e3db28 int32_t v20; // 0x1e3db34 if (g442 > 1) { // 0x1e3db31 *(int32_t *)(v17 - 4) = 4; *(int32_t *)(v17 - 8) = g4; v20 = function_1e40120((int32_t)&g708, (int32_t)&g708); g2 = v20; result = g3; v19 = g9 + 8; } else { int32_t v21 = (int32_t)g122; // 0x1e3db3e g5 = v21; g2 = 0; int32_t v22 = (int32_t)*(int16_t *)(v21 + 2 * v18) & 4; // 0x1e3db4a g2 = v22; result = v16; v19 = v17; v20 = v22; } if (v20 == 0) { // break -> 0x1e3db61 break; } // 0x1e3db51 g2 = 5 * result; int32_t v23 = g8; // 0x1e3db55 g8 = v23 + 1; int32_t v24 = 10 * result - 48 + g4; // 0x1e3db56 g3 = v24; int32_t v25 = (int32_t)*(char *)v23; // 0x1e3db5c g4 = v25; v16 = v24; v17 = v19; v18 = v25; } // 0x1e3db61 g2 = result; if (g6 != 45) { // 0x1e3db6f g3 = *(int32_t *)v19; g6 = *(int32_t *)(v19 + 4); g8 = *(int32_t *)(v19 + 8); g4 = *(int32_t *)(v19 + 12); return result; } int32_t result2 = -result; // 0x1e3db68 g2 = result2; g3 = *(int32_t *)v19; g6 = *(int32_t *)(v19 + 4); g8 = *(int32_t *)(v19 + 8); g4 = *(int32_t *)(v19 + 12); return result2; } // Address range: 0x1e3db80 - 0x1e3db8e int32_t function_1e3db80(int32_t * a1) { int32_t v1 = (int32_t)a1; g2 = v1; int32_t result = function_1e3dad0(v1); // 0x1e3db85 g2 = result; return result; } // Address range: 0x1e3dbc0 - 0x1e3dcd5 int32_t function_1e3dbc0(int32_t a1, int32_t a2, int32_t a3) { // 0x1e3dbc0 g2 = g432; int32_t v1 = g8; // bp-12 g8 = function_1e40ad0(g432, 0xffff); g5 = a1; g2 = a2; if ((a3 & 0x7ff0) == 0x7ff0) { uint32_t v2 = function_1e40bd0(a1, a2, (int32_t)&g708); // 0x1e3dbf2 g2 = v2; if (v2 >= 1) { if (v2 <= 2) { int32_t result = function_1e40ad0(g8, 0xffff); // 0x1e3dc37 g2 = result; g11--; g684 = (int64_t)a1; g8 = v1; return result; } if (v2 == 3) { // 0x1e3dc48 g2 = a2; g5 = a1; int32_t result2 = function_1e40200(11, a1, a2, g8); // 0x1e3dc55 g2 = result2; g8 = v1; return result2; } } // 0x1e3dc09 g2 = a2; g5 = a1; int32_t result3 = function_1e40250(8, 11, a1, a2, (float80_t)(float64_t)(int64_t)a1 + 1.0L, g8, (int32_t)&g708); // 0x1e3dc24 g2 = result3; g8 = v1; return result3; } // 0x1e3dc62 g2 = function_1e40b70(a1, a2); float64_t v3 = g684; // bp-8 g11++; int32_t v4 = __asm_fnstsw(g10); // 0x1e3dc72 g2 = g2 & -0x10000 | v4; if ((v4 & 0x4000) != 0) { int32_t result4 = function_1e40ad0(g8, 0xffff); // 0x1e3dc7f g2 = result4; g11--; g684 = v3; g8 = v1; return result4; } int32_t v5 = g8; // 0x1e3dc90 if ((v5 & 32) != 0) { int32_t result5 = function_1e40ad0(v5, 0xffff); // 0x1e3dc9e g2 = result5; g11--; g684 = v3; g8 = v1; return result5; } // 0x1e3dcaf g5 = (float32_t)v3; g7 = a2; g2 = a1; int32_t v6; int32_t result6 = function_1e40250(16, 11, a1, a2, (float80_t)v3, v6, v5); // 0x1e3dcc8 g2 = result6; g8 = v1; return result6; } // Address range: 0x1e3dce0 - 0x1e3dd1c int32_t function_1e3dce0(int32_t a1, int32_t * a2, int32_t a3) { int32_t v1 = (int32_t)a2; g5 = a3; int32_t v2 = g8; // 0x1e3dce4 g2 = a1; if (a3 == 10) { if (a1 < 0) { // 0x1e3dcf2 g8 = v1; function_1e3dd20(a1, v1, a3, 1, v2); int32_t result = g8; // 0x1e3dd03 g2 = result; g8 = v2; return result; } } // 0x1e3dd07 g8 = v1; function_1e3dd20(a1, v1, a3, 0, v2); int32_t result2 = g8; // 0x1e3dd18 g2 = result2; g8 = v2; return result2; } // Address range: 0x1e3dd20 - 0x1e3dd80 int32_t function_1e3dd20(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5) { int32_t v1 = a2; // esi int32_t v2; int32_t v3; // 0x1e3dd32 if (a4 != 0) { // 0x1e3dd2f *(char *)a2 = 45; v3 = v1 + 1; v1 = v3; g5 = a1; v2 = -a1; } else { v3 = a2; v2 = a1; } // 0x1e3dd3f g5 = v2; int32_t v4 = v3; // edi g3 = a3; int32_t v5 = v3; // 0x1e3dd62 uint32_t v6 = v2; // 0x1e3dd4d int32_t v7; // 0x1e3dd64 while (true) { int32_t v8 = v6 / a3; uint32_t v9 = v6 % a3; g2 = v8; g7 = v9; g5 = v8; int32_t v10; if (v9 < 10) { // 0x1e3dd5f v10 = v9 + 48 & 255 | v9 & -256; } else { // 0x1e3dd5a v10 = v9 + 87 & 255 | v9 & -256; } // 0x1e3dd62 *(char *)v5 = (char)v10; v7 = v1 + 1; v1 = v7; int32_t v11 = g5; // 0x1e3dd65 if (v11 == 0) { // break -> 0x1e3dd69 break; } // 0x1e3dd62 v5 = v7; a3 = g3; v6 = v11; } // 0x1e3dd69 *(char *)v7 = 0; int32_t v12 = v1 - 1; // 0x1e3dd6c v1 = v12; char * v13 = (char *)v12; // 0x1e3dd6d g2 = g2 & -256 | (int32_t)*v13; unsigned char v14 = *(char *)v4; // 0x1e3dd6f g5 = g5 & -256 | (int32_t)v14; *v13 = v14; v1--; *(char *)v4 = (char)g2; int32_t v15 = v4 + 1; // 0x1e3dd76 v4 = v15; while (v15 < v1) { // 0x1e3dd6d v13 = (char *)v1; g2 = g2 & -256 | (int32_t)*v13; v14 = *(char *)v15; g5 = g5 & -256 | (int32_t)v14; *v13 = v14; v1--; *(char *)v4 = (char)g2; v15 = v4 + 1; v4 = v15; } // 0x1e3dd7b return g2; } // Address range: 0x1e3dd80 - 0x1e3ddaf int32_t function_1e3dd80(int32_t a1, int32_t * a2, int32_t a3) { int32_t v1 = (int32_t)a2; g2 = a3; int32_t v2 = g8; // 0x1e3dd84 int32_t v3; if (a3 != 10) { v3 = 0; goto lab_0x1e3dd9b; } else { if (a1 >= 0) { v3 = 0; goto lab_0x1e3dd9b; } else { v3 = 1; goto lab_0x1e3dd9b; } } lab_0x1e3dd9b: // 0x1e3dd9b g5 = v3; g8 = v1; function_1e3dd20(a1, v1, a3, v3, v2); int32_t result = g8; // 0x1e3ddab g2 = result; g8 = v2; return result; } // Address range: 0x1e3ddb0 - 0x1e3ddea int32_t function_1e3ddb0(int32_t a1, int32_t a2, int32_t a3) { int32_t v1 = g6; // 0x1e3ddb1 int32_t v2 = function_1e41030(v1, g8); // 0x1e3ddb2 g2 = v2; g8 = v2; if (v2 == 0) { // 0x1e3ddbd g2 = 0; g6 = v1; return 0; } // 0x1e3ddc2 g2 = a3; g5 = a2; g7 = a1; int32_t result = function_1e40e20(a1, a2, a3, v2); // 0x1e3ddd2 g2 = result; function_1e22590(v2); g2 = result; g6 = v1; return result; } // Address range: 0x1e3ddf0 - 0x1e3de05 int32_t function_1e3ddf0(int32_t * a1, int32_t * a2) { int32_t v1 = (int32_t)a2; int32_t v2 = (int32_t)a1; g2 = v1; g5 = v2; int32_t result = function_1e3ddb0(v2, v1, 64); // 0x1e3ddfc g2 = result; return result; } // Address range: 0x1e3de10 - 0x1e3df04 int32_t function_1e3de10(int32_t a1, int32_t a2, int32_t a3) { int32_t v1 = g4; // bp-16 int32_t v2 = &v1; // 0x1e3de15 g5 = a3; int32_t result; // ebx int32_t v3; // 0x1e3deff if (a3 != 0) { // 0x1e3de21 g8 = a1; g6 = a2; g2 = &g125; if (g126 != 0) { // 0x1e3de7e int32_t v4; // 0x1e3dea1 if (g671 >= 0 == (g671 != 0)) { // 0x1e3de91 g4 = a3; g2 = function_1e22490(19); v4 = g4; g5 = v4; } else { // 0x1e3de87 g672++; v4 = a3; } // 0x1e3dea3 g2 = 0; int32_t v5 = v4; // 0x1e3deb6 int32_t v6 = 0; // 0x1e3deac int32_t v7 = 0; // 0x1e3dea8 int32_t v8; // 0x1e3ded5 bool v9; // 0x1e3dede int32_t v10; // 0x1e3ded5 while (true) { int32_t v11 = g8; // 0x1e3dea8 int32_t v12 = (int32_t)*(char *)v11 | v7 & -256; // 0x1e3dea8 g2 = v12; int32_t v13 = g6; // 0x1e3deac int32_t v14 = (int32_t)*(char *)v13 | v6 & -256; // 0x1e3deac if (v12 == 0) { v10 = v14; v8 = 0; // break -> 0x1e3ded3 break; } // 0x1e3deb0 g4 = v14; if (v14 == 0) { v10 = 0; v8 = v12; // break -> 0x1e3ded3 break; } // 0x1e3deb4 g8 = v11 + 1; g6 = v13 + 1; *(int32_t *)(g9 - 4) = v5; *(int32_t *)(g9 - 8) = g2; *(int32_t *)(g9 - 12) = g4; int32_t v15 = function_1e411a0((int32_t)&g708); // 0x1e3deb9 g2 = v15; g4 = v15; int32_t v16 = function_1e411a0((int32_t)&g708); // 0x1e3dec3 g2 = v16; int32_t v17 = *(int32_t *)(g9 + 4); // 0x1e3decb g5 = v17; int32_t v18 = g4; // 0x1e3decc if (v16 != v18) { v9 = v16 < v18; goto lab_0x1e3ded9; } int32_t v19 = v17 - 1; // 0x1e3ded0 g5 = v19; if (v19 == 0) { v10 = v18; v8 = v16; // break -> 0x1e3ded3 break; } v5 = v19; v6 = v18; v7 = v16; } // 0x1e3ded3 g5 = 0; int32_t v20; // 0x1e3deef if (v8 != v10) { v9 = v8 < v10; lab_0x1e3ded9: // 0x1e3ded9 g5 = -1; if (!v9) { // 0x1e3dee0 g5 = 1; v20 = 1; } else { v20 = -1; } } else { v20 = 0; } int32_t * v21 = (int32_t *)g9; // 0x1e3dee2 int32_t v22 = *v21; // 0x1e3dee2 g2 = v22; if (v22 != 0) { // 0x1e3deef result = v20; *v21 = 19; g2 = function_1e22500((int32_t)&g708); g5 = result; v3 = g9 + 4; } else { // 0x1e3dee7 g672--; v3 = g9 + 4; result = v20; } } else { // 0x1e3de33 g7 = g7 & -0xff01 | 0x2000; int32_t v23 = &g125; // 0x1e3de3c int32_t v24; // 0x1e3de67 bool v25; // 0x1e3de74 while (true) { unsigned char v26 = *(char *)a1; // 0x1e3de3c int32_t v27 = 256 * (int32_t)v26 | v23 & -0xff01; // 0x1e3de3e g2 = v27; unsigned char v28 = *(char *)a2; // 0x1e3de40 int32_t v29 = (int32_t)v28 | v27 & -256; // 0x1e3de40 g2 = v29; if (v26 == 0) { v24 = v29; // break -> 0x1e3de65 break; } // 0x1e3de44 g2 = v29; if (v28 == 0) { v24 = v29; // break -> 0x1e3de65 break; } // 0x1e3de48 int32_t v30; // 0x1e3de5c if (v26 >= 65) { if (v26 < 91) { int32_t v31 = v29 & -0xff01 | 256 * (int32_t)(v26 + 32); // 0x1e3de52 g2 = v31; v30 = v31; } else { v30 = v29; } } else { v30 = v29; } unsigned char v32 = (char)v30; // 0x1e3de54 int32_t v33; // 0x1e3de5e if (v32 >= 65) { if (v32 < 91) { int32_t v34 = v30 + 32 & 255 | v30 & -256; // 0x1e3de5c g2 = v34; v33 = v34; } else { v33 = v30; } } else { v33 = v30; } unsigned char v35 = (char)(v33 / 256); // 0x1e3de5e unsigned char v36 = (char)v33; // 0x1e3de5e if (v35 != v36) { v25 = v35 < v36; goto lab_0x1e3de6f; } int32_t v37 = a3 - 1; // 0x1e3de62 g5 = v37; if (v37 == 0) { v24 = v33; // break -> 0x1e3de65 break; } a3 = v37; a2++; v23 = v33; a1++; } // 0x1e3de65 g5 = 0; unsigned char v38 = (char)(v24 / 256); // 0x1e3de67 unsigned char v39 = (char)v24; // 0x1e3de67 if (v38 != v39) { v25 = v38 < v39; lab_0x1e3de6f: // 0x1e3de6f g5 = -1; if (!v25) { // 0x1e3de7a g5 = 1; v3 = v2; result = 1; } else { v3 = v2; result = -1; } } else { v3 = v2; result = 0; } } } else { v3 = v2; result = 0; } // 0x1e3defd g2 = result; g4 = *(int32_t *)v3; g6 = *(int32_t *)(v3 + 8); return result; }