#include "pinball.h" // ------------------------ Functions ------------------------- // Address range: 0x1e21000 - 0x1e21166 int32_t entry_point(void) { int32_t v1 = __readfsdword(0); // 0x1e21000 g2 = v1; __writefsdword(0, (int32_t)&v1); int32_t v2; // bp-116 int32_t v3 = &v2; // 0x1e2101d uint32_t v4 = GetVersion(); // 0x1e21026 int32_t v5 = g83; // 0x1e21033 g86 = v5; g82 = v4 / 0x10000; int32_t v6 = v4 & 255; // 0x1e21049 g85 = v6; int32_t v7 = v5 | 256 * v6; // 0x1e21056 g2 = v7; g84 = v7; int32_t v8 = function_1e22100(); // 0x1e21061 g2 = v8; if (v8 == 0) { // 0x1e2106a g2 = function_1e211b0(28); } int32_t v9 = function_1e22010(); // 0x1e21074 g2 = v9; if (v9 == 0) { // 0x1e2107d g2 = function_1e211b0(16); } // 0x1e21087 g2 = function_1e21e30(0); g2 = function_1e21e20(); char * commandLine = GetCommandLineA(); // 0x1e21098 g2 = (int32_t)commandLine; g682 = commandLine; int32_t v10 = function_1e21980(); // 0x1e210a3 g2 = v10; g78 = (char *)v10; if (v10 == 0) { // 0x1e210ba g2 = function_1e21210(-1); goto lab_0x1e210c4; } else { // 0x1e210b1 if (g682 != NULL) { goto lab_0x1e210c4; } else { // 0x1e210ba g2 = function_1e21210(-1); goto lab_0x1e210c4; } } lab_0x1e210c4: // 0x1e210c4 g2 = function_1e21710(); g2 = function_1e21620(); int32_t v11 = function_1e211e0(); // 0x1e210ce g2 = v11; int32_t v12 = (int32_t)g682; // 0x1e210d3 g8 = v12; unsigned char v13 = *g682; // 0x1e210d9 g2 = (int32_t)v13 | v11 & -256; int32_t v14; // 0x1e21112 int32_t v15; // 0x1e21117 if (v13 == 34) { int32_t v16 = v12 + 1; // 0x1e210eb g8 = v16; char * v17 = (char *)v16; // 0x1e210ec if (*v17 == 34) { v15 = v16; goto lab_0x1e21117; } else { unsigned char v18 = *v17; // 0x1e210f4272 int32_t v19 = v18; // 0x1e210f4273 g4 = v19 | g4 & -256; if (v18 != 0) { int32_t v20 = g9; // 0x1e210fe while (true) { // 0x1e210fa g2 = v19; *(int32_t *)(v20 - 4) = v19; int32_t v21 = function_1e215c0((int32_t)&g708); // 0x1e210ff g2 = v21; int32_t v22 = g8; int32_t v23; // 0x1e2110c if (v21 != 0) { // 0x1e2110b v23 = v22 + 1; } else { v23 = v22; } int32_t v24 = v23 + 1; // 0x1e2110c g8 = v24; char * v25 = (char *)v24; // 0x1e2110d if (*v25 == 34) { v14 = v24; // break -> 0x1e21112 break; } unsigned char v26 = *v25; // 0x1e210f4 int32_t v27 = v26; // 0x1e210f4 g4 = v27 | g4 & -256; if (v26 == 0) { v14 = v24; // break -> 0x1e21112 break; } v20 = g9 + 4; v19 = v27; } } else { v14 = v16; } // 0x1e21112 if (*(char *)v14 != 34) { goto lab_0x1e21118; } else { v15 = v14; goto lab_0x1e21117; } } } else { if (v13 >= 33) { int32_t v28 = v12 + 1; // 0x1e210e3 g8 = v28; v14 = v28; while (*(char *)v28 >= 33) { // 0x1e210e3 v28++; g8 = v28; v14 = v28; } } else { v14 = v12; } goto lab_0x1e21118; } lab_0x1e21117:; int32_t v29 = v15 + 1; // 0x1e21117 g8 = v29; v14 = v29; goto lab_0x1e21118; lab_0x1e21118: // 0x1e21118 if (*(char *)v14 != 0) { int32_t v30 = v14; // 0x1e21122 while (true) { // 0x1e2111d if (*(char *)v30 >= 33) { // break -> 0x1e21128 break; } int32_t v31 = v30 + 1; // 0x1e21122 g8 = v31; if (*(char *)v31 == 0) { // break -> 0x1e21128 break; } v30 = v31; } } // 0x1e21128 g2 = v3; *(int32_t *)(g9 - 4) = v3; GetStartupInfoA(NULL); g2 = 10; *(int32_t *)(g9 - 4) = 10; *(int32_t *)(g9 - 8) = g8; *(int32_t *)(g9 - 12) = 0; *(int32_t *)(g9 - 16) = 0; int32_t moduleHandle = (int32_t)GetModuleHandleA((char *)&g708); // 0x1e21152 g2 = moduleHandle; *(int32_t *)(g9 - 4) = moduleHandle; int32_t v32 = function_1e24bc6((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e21159 g2 = v32; *(int32_t *)(g9 - 4) = v32; g2 = function_1e21210((int32_t)&g708); int32_t result = function_1e2118d((int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e21164 g2 = result; return result; } // Address range: 0x1e21166 - 0x1e21181 int32_t function_1e21166(void) { int32_t v1 = g3; // 0x1e21166 int32_t v2 = *(int32_t *)(v1 - 20); // 0x1e21166 g2 = v2; int32_t v3 = *(int32_t *)v2; // 0x1e21169 g2 = v3; int32_t v4 = *(int32_t *)v3; // 0x1e2116b g2 = v4; *(int32_t *)(v1 - 32) = v4; int32_t v5 = g3; // 0x1e21170 int32_t v6 = *(int32_t *)(v5 - 20); // 0x1e21170 g2 = v6; int32_t v7 = *(int32_t *)(v5 - 32); // 0x1e21174 g2 = v7; int32_t result = function_1e21440(v7, v6); // 0x1e21178 g2 = result; return result; } // Address range: 0x1e2118d - 0x1e211a7 int32_t function_1e2118d(int32_t a1, int32_t a2, int32_t a3) { // 0x1e2118d *(int32_t *)(g3 - 4) = -1; int32_t v1 = *(int32_t *)(g3 - 16); // 0x1e21197 g2 = v1; __writefsdword(0, v1); return g2; } // Address range: 0x1e211b0 - 0x1e211da int32_t function_1e211b0(int32_t a1) { // 0x1e211b0 if (g79 == 1) { // 0x1e211b9 g2 = function_1e22220(); } // 0x1e211be g2 = a1; g2 = function_1e22260(a1); int32_t result = function_1e21230(255); // 0x1e211d0 g2 = result; return result; } // Address range: 0x1e211e0 - 0x1e21210 int32_t function_1e211e0(void) { // 0x1e211e0 g2 = g431; if (g431 != 0) { // 0x1e211e9 g2 = function_1e3d890(); } // 0x1e211eb g2 = function_1e21330(&g72, &g73); int32_t result = function_1e21330(&g70, &g71); // 0x1e21207 g2 = result; return result; } // Address range: 0x1e21210 - 0x1e21222 int32_t function_1e21210(int32_t a1) { // 0x1e21210 g2 = a1; int32_t result = function_1e21250(a1, 0, 0); // 0x1e21219 g2 = result; return result; } // Address range: 0x1e21230 - 0x1e21242 int32_t function_1e21230(int32_t a1) { // 0x1e21230 g2 = a1; int32_t result = function_1e21250(a1, 1, 0); // 0x1e21239 g2 = result; return result; } // Address range: 0x1e21250 - 0x1e212fd int32_t function_1e21250(int32_t a1, int32_t a2, int32_t a3) { // 0x1e21250 g2 = function_1e21310(g6, g8, g4); g8 = a1; if (g93 == 1) { int32_t * processHandle = GetCurrentProcess(); // 0x1e21266 g2 = (int32_t)processHandle; g2 = TerminateProcess(processHandle, (int32_t)&g708); } // 0x1e21273 g92 = 1; int32_t v1 = *(int32_t *)(g9 + 24); // 0x1e21282 char v2 = v1; // 0x1e21282 g4 = v1; g91 = v2; int32_t v3; // 0x1e212cd if (*(int32_t *)(g9 + 20) == 0) { // 0x1e2128e if (g681 != 0) { int32_t v4 = g680 - 4; // 0x1e2129d g6 = v4; if (v4 >= g681) { g2 = *(int32_t *)v4; int32_t v5 = v4 - 4; // 0x1e212b0 g6 = v5; while (v5 >= g681) { // 0x1e212a8 v4 = v5; g2 = *(int32_t *)v4; v5 = v4 - 4; g6 = v5; } } } // 0x1e212bb *(int32_t *)(g9 - 4) = (int32_t)&g75; *(int32_t *)(g9 - 8) = (int32_t)&g74; g2 = function_1e21330(&g708, &g708); v3 = g9 + 8; } else { v3 = g9; } // 0x1e212cd *(int32_t *)(v3 - 4) = (int32_t)&g77; *(int32_t *)(v3 - 8) = (int32_t)&g76; g2 = function_1e21330(&g708, &g708); if (v2 == 0) { // 0x1e212ec g93 = 1; *(int32_t *)(g9 + 4) = g8; ExitProcess((int32_t)&g708); // UNREACHABLE } int32_t result = function_1e21320(); // 0x1e212e3 g2 = result; g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); g4 = *(int32_t *)(g9 + 8); return result; } // Address range: 0x1e212fd - 0x1e21301 int32_t function_1e212fd(int32_t a1, int32_t a2, int32_t a3) { // 0x1e212fd return g2; } // Address range: 0x1e21310 - 0x1e2131b int32_t function_1e21310(int32_t a1, int32_t a2, int32_t a3) { int32_t result = function_1e22490(13); // 0x1e21312 g2 = result; return result; } // Address range: 0x1e21320 - 0x1e2132b int32_t function_1e21320(void) { int32_t result = function_1e22500(13); // 0x1e21322 g2 = result; return result; } // Address range: 0x1e21330 - 0x1e21350 int32_t function_1e21330(int32_t * a1, int32_t * a2) { int32_t v1 = g6; // 0x1e21331 if (a2 <= a1) { // 0x1e2134d g6 = v1; int32_t result; return result; } int32_t result2; // 0x1e2133e for (int32_t i = (int32_t)a1; i < (uint32_t)(int32_t)a2 - 3; i += 4) { // 0x1e2133e result2 = *(int32_t *)i; g2 = result2; } // 0x1e2134d g6 = v1; return result2; } // Address range: 0x1e2141d - 0x1e21426 int32_t function_1e2141d(void) { // 0x1e2141d return g2; } // Address range: 0x1e21440 - 0x1e2158f int32_t function_1e21440(int32_t a1, int32_t ExceptionInfo) { int32_t v1 = function_1e22090(); // 0x1e21444 g2 = v1; g8 = v1; g5 = a1; int32_t v2 = *(int32_t *)(v1 + 80); // 0x1e2144f g2 = v2; int32_t v3 = function_1e21590(a1, v2); // 0x1e21454 g2 = v3; if (v3 != 0) { int32_t * v4 = (int32_t *)(v3 + 8); // 0x1e21464 int32_t v5 = *v4; // 0x1e21464 if (v5 != 0) { if (v5 == 5) { // 0x1e21474 *v4 = 0; g2 = 1; return 1; } if (v5 == 1) { // 0x1e2148a g2 = -1; return -1; } int32_t * v6 = (int32_t *)(g8 + 84); // 0x1e21494 g5 = ExceptionInfo; *v6 = ExceptionInfo; int32_t * v7 = (int32_t *)(v3 + 4); // 0x1e2149e if (*v7 != 8) { // 0x1e21562 *v4 = 0; g2 = *v7; } else { int32_t v8 = g96 + g95; // 0x1e214b4 g5 = v8; if (v8 > g95) { int32_t v9 = 12 * g95; // 0x1e214bd g5 = v9; int32_t v10 = g95; // 0x1e214c6 g5 = v9 + 12; *(int32_t *)(v9 + 8 + *(int32_t *)(g8 + 80)) = 0; while (g95 + g96 > v10 + 1) { // 0x1e214c0 v10++; v9 = g5; g5 = v9 + 12; *(int32_t *)(v9 + 8 + *(int32_t *)(g8 + 80)) = 0; } } int32_t * v11 = (int32_t *)(g8 + 88); // 0x1e214df int32_t v12 = *(int32_t *)v3; // 0x1e214e2 g2 = v12; if (v12 != -0x3fffff72) { if (v12 != -0x3fffff70) { if (v12 != -0x3fffff6f) { if (v12 != -0x3fffff6d) { if (v12 != -0x3fffff73) { if (v12 != -0x3fffff71) { if (v12 == -0x3fffff6e) { // 0x1e2154b *v11 = 138; } } else { // 0x1e2153b *v11 = 134; } } else { // 0x1e2152b *v11 = 130; } } else { // 0x1e2151b *v11 = 133; } } else { // 0x1e2150b *v11 = 132; } } else { // 0x1e214fb *v11 = 129; } } else { // 0x1e214eb *v11 = 131; } int32_t * v13 = (int32_t *)(g8 + 88); // 0x1e21552 g2 = *v13; *v13 = *v11; } // 0x1e21572 g2 = -1; *(int32_t *)(g8 + 84) = *v6; return g2; } } // 0x1e2157f g5 = ExceptionInfo; int32_t result = UnhandledExceptionFilter((struct _EXCEPTION_POINTERS *)ExceptionInfo); // 0x1e21584 g2 = result; return result; } // Address range: 0x1e21590 - 0x1e215bf int32_t function_1e21590(int32_t a1, int32_t a2) { // 0x1e21590 g2 = a2; int32_t v1 = a2; // 0x1e2159f int32_t v2; // 0x1e215bb int32_t v3; // 0x1e215b2 while (true) { // 0x1e2159b if (*(int32_t *)v1 == a1) { v3 = a1; v2 = v1; // break -> 0x1e215b2 break; } int32_t v4 = v1 + 12; // 0x1e2159f int32_t v5 = 12 * g97 + a2; // 0x1e215ab g5 = v5; if (v5 <= v4) { // 0x1e2159f v3 = *(int32_t *)v4; v2 = v4; goto lab_0x1e215b2; } v1 = v4; } lab_0x1e215b2:; int32_t result = v3 == a1 ? v2 : 0; // 0x1e215bb g2 = result; return result; } // Address range: 0x1e215c0 - 0x1e215d2 int32_t function_1e215c0(int32_t a1) { // 0x1e215c0 g2 = a1; int32_t result = function_1e215e0(a1, 0, 4); // 0x1e215c9 g2 = result; return result; } // Address range: 0x1e215e0 - 0x1e2161a int32_t function_1e215e0(int32_t a1, int32_t a2, int32_t a3) { // 0x1e215e0 g5 = 0; int32_t v1 = a1 & 255; // 0x1e215e4 g7 = v1; unsigned char v2 = *(char *)(v1 + (int32_t)&g100); // 0x1e215e8 int32_t v3 = v2; // 0x1e215e8 g5 = v3; if ((v3 & a3) != 0) { // 0x1e21614 g2 = 1; return 1; } // 0x1e215f4 g2 = a2; g5 = 0; if (a2 == 0) { // 0x1e21611 g2 = 0; return 0; } // 0x1e2160d g5 = 0; uint16_t v4 = *(int16_t *)(2 * v1 + (int32_t)&g124); // 0x1e21603 int32_t v5 = (int32_t)v4 & a2; // 0x1e2160b g5 = v5; if (v5 != 0) { // 0x1e21614 g2 = 1; return 1; } // 0x1e21611 g2 = 0; return 0; } // Address range: 0x1e21620 - 0x1e21705 int32_t function_1e21620(void) { int32_t v1 = (int32_t)g78; // 0x1e21623 g7 = v1; g8 = 0; int32_t v2 = g3; // bp-20 int32_t v3 = &v2; // 0x1e2162e int32_t v4; // 0x1e2164e if (*g78 != 0) { int32_t v5 = 0; // 0x1e21639 while (true) { // 0x1e21634 int32_t v6; // 0x1e21639 if (*(char *)v1 != 61) { // 0x1e21639 v6 = v5 + 1; g8 = v6; } else { v6 = v5; } // 0x1e2163a g6 = v1; g5 = -1; g2 = 0; int32_t v7 = v1; // 0x1e21643 int32_t v8 = -1; // 0x1e21643 int32_t v9; // 0x1e21645 while (true) { if (v8 == 0) { v9 = 0; // break -> bb39 break; } int32_t v10 = (g1 ? -1 : 1) + v7; // 0x1e21643 g6 = v10; int32_t v11 = v8 - 1; // 0x1e21643 g5 = v11; if (*(char *)v7 == 0) { v9 = v11; // break -> bb39 break; } v7 = v10; v8 = v11; } int32_t v12 = -1 - v9; // 0x1e21645 g5 = v12; int32_t v13 = v1 + v12; // 0x1e21647 g7 = v13; if (*(char *)v13 == 0) { v4 = v6; // break -> 0x1e2164e break; } v5 = v6; v1 = v13; } } else { v4 = 0; } int32_t v14 = 4 * v4 + 4; // 0x1e2164e g2 = v14; int32_t v15 = function_1e22670(v14); // 0x1e21656 g2 = v15; g89 = v15; g4 = v15; if (v15 == 0) { // 0x1e21669 g2 = function_1e211b0(9); } int32_t v16 = (int32_t)g78; // 0x1e21673 g3 = v16; g2 = v16; int32_t v17; // 0x1e216e4 if (*g78 != 0) { int32_t v18 = v3; // 0x1e2168e while (true) { // 0x1e21681 g6 = v16; g5 = -1; g2 = 0; int32_t v19 = v16; // 0x1e2168a int32_t v20 = -1; // 0x1e2168a int32_t v21; // 0x1e2168c while (true) { if (v20 == 0) { v21 = 0; // break -> bb43 break; } int32_t v22 = (g1 ? -1 : 1) + v19; // 0x1e2168a g6 = v22; int32_t v23 = v20 - 1; // 0x1e2168a g5 = v23; if (*(char *)v19 == 0) { v21 = v23; // break -> bb43 break; } v19 = v22; v20 = v23; } int32_t v24 = -1 - v21; // 0x1e2168c g5 = v24; *(int32_t *)(v18 + 16) = v24; int32_t v25 = g3; // 0x1e21692 int32_t v26; // 0x1e216d5 if (*(char *)v25 != 61) { // 0x1e21698 *(int32_t *)(g9 - 4) = g5; int32_t v27 = function_1e22670((int32_t)&g708); // 0x1e21699 g2 = v27; *(int32_t *)g4 = v27; if (g2 == 0) { // 0x1e216a7 *(int32_t *)(g9 - 4) = 9; g2 = function_1e211b0((int32_t)&g708); } // 0x1e216b1 g5 = -1; g2 = 0; int32_t v28 = g3; // 0x1e216ba int32_t v29 = -1; // 0x1e216ba int32_t v30; // 0x1e216bc int32_t v31; // 0x1e216be while (true) { if (v29 == 0) { v31 = v28; v30 = 0; // break -> bb48 break; } int32_t v32 = (g1 ? -1 : 1) + v28; // 0x1e216ba int32_t v33 = v29 - 1; // 0x1e216ba g5 = v33; if (*(char *)v28 == 0) { v31 = v32; v30 = v33; // break -> bb48 break; } v28 = v32; v29 = v33; } int32_t v34 = -1 - v30; // 0x1e216bc g2 = v34; int32_t v35 = v34 / 4; // 0x1e216c2 g5 = v35; int32_t v36 = g4; // 0x1e216c7 int32_t v37 = *(int32_t *)v36; // 0x1e216c7 g4 = v36 + 4; __asm_rep_movsd_memcpy((char *)v37, (char *)(v31 - v34), v35); int32_t v38 = (g1 ? -4 : 4) * v35 + v37; // 0x1e216cc char * v39 = (char *)v38; // 0x1e216cc int32_t v40 = g2 & 3; // 0x1e216d0 g5 = v40; __asm_rep_movsb_memcpy(v39, v39, v40); int32_t v41 = (g1 ? -1 : 1) * v40 + v38; // 0x1e216d3 g6 = v41; g8 = v41; g5 = 0; v26 = g3; } else { v26 = v25; } int32_t v42 = *(int32_t *)(g9 + 16) + v26; // 0x1e216d5 g3 = v42; if (*(char *)v42 == 0) { // break -> 0x1e216df break; } v18 = g9; v16 = v42; } // 0x1e216df v17 = g9; } else { v17 = v3; } int32_t v43 = (int32_t)g78; // 0x1e216df g2 = v43; *(int32_t *)(v17 - 4) = v43; g2 = function_1e22600((int32_t)&g708); g78 = NULL; *(int32_t *)g4 = 0; g3 = *(int32_t *)g9; g6 = *(int32_t *)(g9 + 4); g8 = *(int32_t *)(g9 + 8); g4 = *(int32_t *)(g9 + 12); return g2; } // Address range: 0x1e21710 - 0x1e217ab int32_t function_1e21710(void) { int32_t v1 = g6; // bp-16 int32_t v2 = 260; // bp-20 int32_t v3 = &v2; // 0x1e21715 g8 = (int32_t)&g490; GetModuleFileNameA(NULL, (char *)&g490, 260); int32_t v4 = (int32_t)g682; // 0x1e21728 g2 = v4; int32_t v5 = g8; // 0x1e2172d g90 = (char *)v5; if (*g682 != 0) { // 0x1e21738 g8 = v4; } else { v4 = v5; } // 0x1e2173e g2 = &v1; g5 = v3; function_1e217b0(v4, 0, 0, &v2, &v1); int32_t v6 = v1 + 4 * v2; // 0x1e2175c g2 = v6; int32_t v7 = function_1e22670(v6); // 0x1e21761 g2 = v7; g6 = v7; if (v7 == 0) { // 0x1e2176f g2 = function_1e211b0(8); } // 0x1e21779 g5 = v3; int32_t v8 = 4 * v2 + v7; // 0x1e21787 g2 = v8; function_1e217b0(g8, v7, v8, &v2, &v1); int32_t result = v2 - 1; // 0x1e21799 g2 = result; g88 = v7; g6 = 0; g87 = result; return result; } // Address range: 0x1e217b0 - 0x1e21980 int32_t function_1e217b0(int32_t a1, int32_t a2, int32_t a3, int32_t * a4, int32_t * a5) { // 0x1e217b0 g5 = (int32_t)a5; int32_t v1 = g4; // 0x1e217b4 int32_t v2 = (int32_t)a4; // edx g2 = a3; *a5 = 0; *a4 = 1; int32_t v3; if (a2 != 0) { // 0x1e217d7 v2 = a2; *(int32_t *)a2 = g2; v3 = a2 + 4; } else { v3 = 0; } int32_t v4 = a1; // 0x1e217e2 int32_t v5; // 0x1e21827 int32_t v6; // 0x1e2180d int32_t v7; // 0x1e21872 if (*(char *)v4 == 34) { int32_t v8 = v4 + 1; // 0x1e2182d a1 = v8; if (*(char *)v8 != 34) { while (true) { unsigned char v9 = *(char *)v8; // 0x1e21833 int32_t v10 = v9; // 0x1e21833 g4 = g4 & -256 | v10; if (v9 == 0) { // break -> 0x1e21863 break; } // 0x1e21839 v2 = v10; if ((*(char *)(v10 + (int32_t)&g100) & 4) != 0) { int32_t * v11 = (int32_t *)g5; // 0x1e21846 *v11 = *v11 + 1; int32_t v12 = g2; // 0x1e21848 if (v12 != 0) { int32_t v13 = a1; // 0x1e2184c unsigned char v14 = *(char *)v13; // 0x1e2184c v2 = v2 & -256 | (int32_t)v14; a1 = v13 + 1; *(char *)v12 = v14; g2++; } } int32_t * v15 = (int32_t *)g5; // 0x1e21852 *v15 = *v15 + 1; int32_t v16 = g2; // 0x1e21854 if (v16 != 0) { unsigned char v17 = *(char *)a1; // 0x1e21858 v2 = v2 & -256 | (int32_t)v17; *(char *)v16 = v17; g2++; } int32_t v18 = a1 + 1; // 0x1e2185d a1 = v18; if (*(char *)v18 == 34) { // break -> 0x1e21863 break; } v8 = v18; } } int32_t * v19 = (int32_t *)g5; // 0x1e21863 *v19 = *v19 + 1; int32_t v20 = g2; // 0x1e21865 if (v20 != 0) { // 0x1e21869 *(char *)v20 = 0; g2++; } int32_t v21 = a1; // 0x1e2186d if (*(char *)v21 == 34) { // 0x1e21872 v7 = v21 + 1; a1 = v7; } else { v7 = v21; } goto lab_0x1e21873; } else { while (true) { int32_t * v22 = (int32_t *)g5; // 0x1e217e7 *v22 = *v22 + 1; int32_t v23 = g2; // 0x1e217e9 int32_t v24; // 0x1e217f1 if (v23 != 0) { unsigned char v25 = *(char *)a1; // 0x1e217ed v2 = v2 & -256 | (int32_t)v25; *(char *)v23 = v25; v24 = g2 + 1; g2 = v24; } else { v24 = 0; } int32_t v26 = a1; // 0x1e217f2 int32_t v27 = (int32_t)*(char *)v26; // 0x1e217f2 int32_t v28 = v2 & -256 | v27; // 0x1e217f2 v2 = v28; int32_t v29 = v26 + 1; // 0x1e217f4 a1 = v29; if ((*(char *)(v27 + (int32_t)&g100) & 4) != 0) { int32_t * v30 = (int32_t *)g5; // 0x1e21802 *v30 = *v30 + 1; int32_t v31 = g2; // 0x1e21804 int32_t v32; // 0x1e2180c if (v31 != 0) { // 0x1e21808 *(char *)v31 = *(char *)a1; v32 = g2 + 1; g2 = v32; } else { v32 = 0; } // 0x1e2180d v6 = a1 + 1; a1 = v6; v5 = v32; } else { v5 = v24; v6 = v29; v2 = v28; } char v33 = v2; // 0x1e2180e if (v33 == 32) { // break -> 0x1e2181c break; } if (v33 == 0) { int32_t v34 = v6 - 1; // 0x1e21820 a1 = v34; v7 = v34; goto lab_0x1e21873; } if (v33 == 9) { goto lab_0x1e21823; } } goto lab_0x1e21823; } lab_0x1e218e8:; // 0x1e218e8 int32_t v35; // 0x1e218e8 g3 = v35; int32_t v36 = v35 - 1; // 0x1e218ea v2 = v36; int32_t v37; // 0x1e2190032 int32_t v38; // 0x1e2194a int32_t v39; // 0x1e21900 if (v35 != 0) { int32_t v40 = v36; // 0x1e218f727 int32_t v41; // 0x1e218fb while (true) { int32_t v42 = g2; // 0x1e218ef int32_t v43; // 0x1e218f7 if (v42 != 0) { // 0x1e218f3 *(char *)v42 = 92; g2++; v43 = v2; } else { v43 = v40; } // 0x1e218f7 g3 = v43; int32_t * v44 = (int32_t *)g5; // 0x1e218f9 *v44 = *v44 + 1; v41 = v2 - 1; v2 = v41; if (v43 == 0) { // break -> 0x1e21900 break; } v40 = v41; } // 0x1e21900 v39 = v41; v38 = a1; } else { v39 = v36; v38 = v37; } unsigned char v45 = *(char *)v38; // 0x1e21900 int32_t v46 = v45; // 0x1e21900 v2 = v46 | v39 & -256; if (v45 == 0) { // break -> 0x1e21955 goto lab_0x1e21955_3; } // 0x1e21906 int32_t v47; // edi if (v47 == 0) { if (v45 == 32) { // break -> 0x1e21955 goto lab_0x1e21955_3; } if (v45 == 9) { // break -> 0x1e21955 goto lab_0x1e21955_3; } } // 0x1e21914 int32_t v48; // ebx if (v48 == 0) { // 0x1e2194f a1 = v38 + 1; // continue -> 0x1e218ae goto lab_0x1e218ae_3; } int32_t v49 = g2; // 0x1e21918 char v50 = *(char *)(v46 + (int32_t)&g100); // 0x1e21941 if (v49 == 0) { if ((v50 & 4) != 0) { // 0x1e2194a a1 = v38 + 1; int32_t * v51 = (int32_t *)g5; // 0x1e2194b *v51 = *v51 + 1; } int32_t * v52 = (int32_t *)g5; // 0x1e2194d *v52 = *v52 + 1; // 0x1e2194f a1++; // continue -> 0x1e218ae goto lab_0x1e218ae_3; } int32_t v53; // 0x1e21931 int32_t v54; // 0x1e21932 if ((v50 & 4) != 0) { // 0x1e21929 *(char *)v49 = v45; g2++; int32_t * v55 = (int32_t *)g5; // 0x1e2192d *v55 = *v55 + 1; v53 = g2; v54 = a1 + 1; } else { v53 = v49; v54 = v38; } // 0x1e2192f g2 = v53 + 1; a1 = v54 + 1; *(char *)v53 = *(char *)v54; int32_t * v56 = (int32_t *)g5; // 0x1e21936 *v56 = *v56 + 1; goto lab_0x1e218ae; lab_0x1e218e5:; // 0x1e218e5 int32_t v63; // 0x1e218e5 int32_t v68 = v63 / 2; // 0x1e218e5 v2 = v68; int32_t v64; // 0x1e2190031 v37 = v64; v35 = v68; goto lab_0x1e218e8; lab_0x1e21873: // 0x1e21873 v47 = 0; int32_t v69; if (*(char *)v7 != 0) { int32_t v70 = v7; // 0x1e2187e19 int32_t v71 = v3; while (true) { int32_t v72 = v2; // 0x1e2187e int32_t v73 = v70; // 0x1e2188a char * v74; // 0x1e2187e while (true) { // 0x1e2187e v74 = (char *)v73; unsigned char v75 = *v74; // 0x1e2187e int32_t v76 = (int32_t)v75 | v72 & -256; // 0x1e2187e if (v75 != 32) { if (v75 != 9) { // break -> 0x1e2188d break; } } int32_t v77 = v73 + 1; // 0x1e2188a a1 = v77; v72 = v76; v73 = v77; } // 0x1e2188d if (*v74 == 0) { v69 = v71; // break -> 0x1e21964 break; } int32_t v78; if (v71 != 0) { // 0x1e2189d *(int32_t *)v71 = g2; v78 = v71 + 4; } else { v78 = 0; } // 0x1e218a8 *a4 = *a4 + 1; lab_0x1e218ae_3: while (true) { lab_0x1e218ae: // 0x1e218ae v48 = 1; int32_t v57 = a1; // 0x1e218b5 int32_t v58; // 0x1e218cf if (*(char *)v57 == 92) { int32_t v59 = 0; // 0x1e218bb int32_t v60 = v57; // 0x1e218ba while (true) { int32_t v61 = v60 + 1; // 0x1e218ba a1 = v61; int32_t v62 = v59 + 1; // 0x1e218bb if (*(char *)v61 != 92) { v63 = v62; v58 = v61; // break -> 0x1e218c1 break; } v59 = v62; v60 = v61; } } else { v63 = 0; v58 = v57; } // 0x1e218c1 if (*(char *)v58 != 34) { v37 = v58; v35 = v63; goto lab_0x1e218e8; } else { if ((v63 & 1) != 0) { v64 = v58; goto lab_0x1e218e5; } else { int32_t v65 = v47; // 0x1e218cb if (v65 == 0) { // 0x1e218dc v48 = 0; int32_t v66 = v58; // 0x1e2190030 // 0x1e218de v47 = v65 == 0; v64 = v66; goto lab_0x1e218e5; } else { int32_t v67 = v58 + 1; // 0x1e218cf if (*(char *)v67 != 34) { // 0x1e218dc v48 = 0; // 0x1e218de v47 = v65 == 0; v64 = v58; goto lab_0x1e218e5; } else { // 0x1e218d8 a1 = v67; // 0x1e218de v47 = v65 == 0; v64 = v67; goto lab_0x1e218e5; } } } } } lab_0x1e21955_3:; int32_t v79 = g2; // 0x1e21955 if (v79 != 0) { // 0x1e21959 *(char *)v79 = 0; g2++; } int32_t * v80 = (int32_t *)g5; // 0x1e2195d *v80 = *v80 + 1; int32_t v81 = a1; // 0x1e21875 if (*(char *)v81 == 0) { v69 = v78; // break -> 0x1e21964 break; } v70 = v81; v71 = v78; } } else { v69 = v3; } if (v69 != 0) { // 0x1e2196b *(int32_t *)v69 = 0; } // 0x1e21975 g4 = v1; *a4 = *a4 + 1; return g2; lab_0x1e21823: if (v5 != 0) { // 0x1e21827 *(char *)(v5 - 1) = 0; v7 = a1; } else { v7 = v6; } goto lab_0x1e21873; } // Address range: 0x1e21980 - 0x1e21b0c int32_t function_1e21980(void) { int32_t result2 = g4; // bp-8 int32_t v1 = g8; // 0x1e21984 int32_t v2 = g6; // 0x1e21985 g4 = 0; int32_t v3 = g3; // bp-20 g6 = 0; g8 = *(int32_t *)0x1e4b0ec; int32_t v4 = g98; // 0x1e21991 int32_t v5; // 0x1e21a7e int32_t v6; // 0x1e219ad if (v4 == 0) { int32_t v7 = (int32_t)GetEnvironmentStringsW(); // 0x1e21999 g2 = v7; int32_t v8 = g4; // 0x1e2199b g6 = v7; if (v7 == v8) { char * v9 = GetEnvironmentStrings(); // 0x1e219ad v6 = (int32_t)v9; g2 = v6; g4 = v6; if (v9 == NULL) { // 0x1e219c5 g2 = 0; g3 = v3; g6 = v2; g8 = v1; g4 = result2; return 0; } // 0x1e219b9 g98 = 2; v5 = 2; } else { // 0x1e219a1 g98 = 1; v6 = v8; v5 = 1; } } else { v6 = 0; v5 = v4; } if (v5 == 1) { int32_t v10 = g6; // 0x1e219dc int32_t v11; // 0x1e219e0 if (v10 == 0) { int16_t * v12 = GetEnvironmentStringsW(); // 0x1e219e0 v11 = (int32_t)v12; g2 = v11; g6 = v11; if (v12 == NULL) { // 0x1e219e8 g2 = 0; g3 = v3; g6 = v2; g8 = v1; g4 = result2; return 0; } } else { v11 = v10; } int16_t * lpWideCharStr = (int16_t *)v11; // 0x1e219f2 int32_t v13; // 0x1e21a0c if (*lpWideCharStr != 0) { int32_t v14 = v11; // 0x1e219fa int32_t v15; // 0x1e21a03 while (true) { int32_t v16 = v14 + 2; // 0x1e219fa if (*(int16_t *)v16 != 0) { v14 = v16; // continue -> 0x1e219fa continue; } // 0x1e21a03 v15 = v14 + 4; if (*(int16_t *)v15 == 0) { // break -> 0x1e21a0c break; } v14 = v15; } v13 = v15; } else { v13 = v11; } int32_t cchWideChar = (v13 - v11) / 2 + 1; // 0x1e21a15 g8 = cchWideChar; int32_t cbMultiByte = WideCharToMultiByte(0, 0, lpWideCharStr, cchWideChar, NULL, 0, NULL, NULL); // 0x1e21a20 g2 = cbMultiByte; g3 = cbMultiByte; if (cbMultiByte != 0) { int32_t lpMultiByteStr = function_1e22670(cbMultiByte); // 0x1e21a2d g2 = lpMultiByteStr; int32_t result = lpMultiByteStr; // ebx if (lpMultiByteStr != 0) { int32_t lpWideCharStr2 = g6; // 0x1e21a42 int32_t v17 = WideCharToMultiByte(0, 0, (int16_t *)lpWideCharStr2, g8, (char *)lpMultiByteStr, cbMultiByte, NULL, NULL); // 0x1e21a47 g2 = v17; if (v17 == 0) { // 0x1e21a51 g2 = function_1e22600(result); result = 0; } // 0x1e21a5c FreeEnvironmentStringsW((int16_t *)g6); g2 = result; g3 = g6; g6 = 0; g8 = 0; g4 = lpWideCharStr2; return result; } } // 0x1e21a6d FreeEnvironmentStringsW((int16_t *)g6); g2 = 0; g3 = g6; g6 = 0; g8 = 0; g4 = v11; return 0; } if (v5 != 2) { // 0x1e21b02 g2 = 0; g3 = v3; g6 = v2; g8 = v1; g4 = result2; return 0; } int32_t v18; // 0x1e21a8b if (v6 == 0) { char * v19 = GetEnvironmentStrings(); // 0x1e21a8b v18 = (int32_t)v19; g2 = v18; g4 = v18; if (v19 == NULL) { // 0x1e21a97 g2 = 0; g3 = v3; g6 = v2; g8 = v1; g4 = result2; return 0; } } else { v18 = v6; } // 0x1e21aa1 int32_t v20; // 0x1e21ab6 if (*(char *)v18 != 0) { int32_t v21 = v18; // 0x1e21aa8 while (true) { int32_t v22 = v21 + 1; // 0x1e21aa8 if (*(char *)v22 != 0) { v21 = v22; // continue -> 0x1e21aa8 continue; } int32_t v23 = v21 + 2; // 0x1e21aaf if (*(char *)v23 == 0) { v20 = v23; // break -> 0x1e21ab6 break; } v21 = v23; } } else { v20 = v18; } int32_t v24 = v20 - v18 + 1; // 0x1e21ab8 g3 = v24; int32_t v25 = function_1e22670(v24); // 0x1e21aba g2 = v25; if (v25 == 0) { // 0x1e21aca FreeEnvironmentStringsA((char *)g4); g2 = 0; g3 = g4; g6 = v3; g8 = v2; g4 = v1; return 0; } int32_t v26 = g3 / 4; // 0x1e21ae3 g5 = v26; __asm_rep_movsd_memcpy((char *)v25, (char *)g4, v26); char * v27 = (char *)((g1 ? -4 : 4) * v26 + v25); // 0x1e21ae6 int32_t v28 = g3 & 3; // 0x1e21aeb g5 = v28; __asm_rep_movsb_memcpy(v27, v27, v28); g5 = 0; FreeEnvironmentStringsA((char *)&g708); g2 = result2; g3 = (int32_t)(char *)g4; g6 = v3; g8 = v2; g4 = v1; return result2; } // Address range: 0x1e21b10 - 0x1e21d33 int32_t function_1e21b10(int32_t a1) { int32_t v1 = g4; // 0x1e21b13 int32_t v2 = g8; // bp-32 int32_t v3 = g6; // 0x1e21b15 int32_t v4 = g3; // bp-40 function_1e22490(25); g2 = a1; int32_t CodePage = function_1e21d40(a1); // 0x1e21b26 g2 = CodePage; g3 = CodePage; if (g101 == CodePage) { // 0x1e21b38 function_1e22500(25); g2 = 0; g3 = v4; g6 = v3; g8 = v2; g4 = v1; return 0; } if (CodePage == 0) { // 0x1e21b50 g2 = function_1e21df0(); function_1e22500(25); g2 = 0; g3 = v4; g6 = v3; g8 = v2; g4 = v1; return 0; } int32_t v5 = 0; // bp-24 g2 = &g108; int32_t v6 = 0; // 0x1e21b81 int32_t v7 = &g108; // 0x1e21b7e while (true) { // 0x1e21b76 if (*(int32_t *)v7 == CodePage) { // break -> 0x1e21c19 break; } int32_t v8 = v7 + 48; // 0x1e21b7e g2 = v8; int32_t v9 = v6 + 1; // 0x1e21b81 v5 = v9; if (v8 >= (int32_t)&g112) { // 0x1e21b8c int32_t lpCPInfo; // bp-20 int32_t v10 = &lpCPInfo; // 0x1e21b8c g2 = v10; g2 = GetCPInfo(CodePage, (struct _cpinfo *)&lpCPInfo); if (g106 == 0) { // 0x1e21d1c function_1e22500(25); g2 = -1; g3 = CodePage; g6 = v10; g8 = v4; g4 = v3; return -1; } // 0x1e21d03 g2 = function_1e21df0(); function_1e22500(25); g2 = 0; g3 = CodePage; g6 = v10; g8 = v4; g4 = v3; return 0; } v6 = v9; v7 = v8; } // 0x1e21c19 g2 = 0; g5 = 64; __asm_rep_stosd_memset((char *)&g99, 0, 64); int32_t v11 = g1 ? -256 : 256; // 0x1e21c25 *(char *)(v11 + (int32_t)&g99) = (char)g2; g5 = v5; int32_t v12 = g2; // 0x1e21c36 while (true) { int32_t v13 = 6 * v5 + v12; // 0x1e21c36 g5 = v13; int32_t v14 = 8 * v13; // 0x1e21c39 int32_t v15 = v14 + (int32_t)&g111; // 0x1e21c39 int32_t v16 = v15; // esi int32_t v17; // 0x1e21c76 if (*(char *)v15 != 0) { unsigned char v18 = *(char *)(v14 + (int32_t)&g111 + 1); // 0x1e21c4548 int32_t v19 = v13 & -256; // 0x1e21c4550 g5 = (int32_t)v18 | v19; if (v18 != 0) { while (true) { unsigned char v20 = *(char *)v15; // 0x1e21c50 int32_t v21 = v20; // 0x1e21c50 int32_t v22; // 0x1e21c67 if (v18 >= v20) { unsigned char v23 = *(char *)(g2 + (int32_t)&g107); // 0x1e21c58 int32_t v24 = (int32_t)v23 | v19; // 0x1e21c58 g5 = v24; char * v25 = (char *)(v21 + (int32_t)&g100); // 0x1e21c5e *v25 = *v25 | (char)v24; int32_t v26 = v21 + 1; // 0x1e21c64 v22 = v16; while ((int32_t)*(char *)(v22 + 1) >= v26) { // 0x1e21c5e v21 = v26; v25 = (char *)(v21 + (int32_t)&g100); *v25 = *v25 | (char)g5; v26 = v21 + 1; v22 = v16; } } else { v22 = v15; } int32_t v27 = v22 + 2; // 0x1e21c6e v16 = v27; if (*(char *)v27 == 0) { // break -> 0x1e21c76 break; } unsigned char v28 = *(char *)(v22 + 3); // 0x1e21c45 int32_t v29 = g5 & -256; // 0x1e21c45 g5 = (int32_t)v28 | v29; if (v28 == 0) { // break -> 0x1e21c76 break; } v19 = v29; v18 = v28; v15 = v27; } } // 0x1e21c76 v17 = g2; } else { v17 = v12; } int32_t v30 = v17 + 1; // 0x1e21c76 g2 = v30; if (v30 >= 4) { // break -> 0x1e21c7c break; } // 0x1e21c76 v12 = v30; } // 0x1e21c7c g101 = CodePage; g102 = function_1e21d90(CodePage); int32_t v31 = 16 * v5; // 0x1e21c99 g2 = v31; int32_t v32 = 32 * v5; // 0x1e21c9c int32_t v33 = *(int32_t *)(v31 + (int32_t)&g110 + v32); // 0x1e21c9c int32_t v34 = v31 + (int32_t)&g109 + v32; // 0x1e21ca5 g5 = v34; int32_t v35 = *(int32_t *)v34; // 0x1e21cac g2 = v35; int32_t v36 = *(int32_t *)(v34 + 8); // 0x1e21cae g5 = v36; g103 = v35; g104 = v33; g105 = v36; function_1e22500(25); g2 = 0; g3 = v4; g6 = v3; g8 = v2; g4 = v1; return 0; } // Address range: 0x1e21d40 - 0x1e21d8d int32_t function_1e21d40(int32_t a1) { // 0x1e21d40 g106 = 0; g2 = a1; if (a1 == -2) { // 0x1e21d53 g106 = 1; int32_t result = GetOEMCP(); // 0x1e21d5d g2 = result; return result; } if (a1 == -3) { // 0x1e21d68 g106 = 1; int32_t result2 = GetACP(); // 0x1e21d72 g2 = result2; return result2; } int32_t result3; // 0x1e21d87 if (a1 == -4) { // 0x1e21d7d g106 = 1; result3 = (int32_t)g130; g2 = result3; } else { result3 = a1; } // 0x1e21d8c return result3; } // Address range: 0x1e21d90 - 0x1e21dc8 int32_t function_1e21d90(int32_t a1) { // 0x1e21d90 g2 = a1 - 932; g5 = 0; unsigned char v1 = *(char *)(a1 + (int32_t)&g12 - 932); // 0x1e21da0 int32_t v2 = v1; // 0x1e21da0 g5 = v2; g685 = v2; switch (v1) { case 0: { // 0x1e21db0 g2 = 1041; return 1041; } case 1: { // 0x1e21db6 g2 = 2052; return 2052; } case 2: { // 0x1e21dbc g2 = 1042; return 1042; } case 3: { // 0x1e21dc2 g2 = 1028; return 1028; } } // 0x1e21dad g2 = 0; return 0; } // Address range: 0x1e21df0 - 0x1e21e1c int32_t function_1e21df0(void) { // 0x1e21df0 g2 = 0; g5 = 64; __asm_rep_stosd_memset((char *)&g99, 0, 64); *(char *)((g1 ? -256 : 256) + (int32_t)&g99) = 0; g103 = 0; g5 = &g103; g101 = 0; g102 = 0; g104 = 0; g105 = 0; return 0; } // Address range: 0x1e21e20 - 0x1e21e2b int32_t function_1e21e20(void) { int32_t result = function_1e21b10(-3); // 0x1e21e22 g2 = result; return result; } // Address range: 0x1e21e30 - 0x1e22010 int32_t function_1e21e30(int32_t a1) { int32_t v1 = function_1e22670(1152); // 0x1e21e3c g2 = v1; g8 = v1; int32_t v2; // 0x1e21e54 if (v1 == 0) { // 0x1e21e4a g2 = function_1e211b0(27); v2 = g8; } else { v2 = v1; } // 0x1e21e54 g2 = v2 + 1152; g677 = v2; g679 = false; if (v2 <= 0xfffffb7f) { // 0x1e21e6e g5 = 0; *(char *)(v2 + 4) = (char)0; int32_t v3 = g8; // 0x1e21e78 g8 = v3 + 36; *(int32_t *)v3 = -1; *(char *)(g8 - 31) = (char)10; *(int32_t *)(g8 - 28) = g5; int32_t v4 = g677 + 1152; // 0x1e21e8d g2 = v4; while (v4 > g8) { // 0x1e21e75 *(char *)(g8 + 4) = (char)g5; v3 = g8; g8 = v3 + 36; *(int32_t *)v3 = -1; *(char *)(g8 - 31) = (char)10; *(int32_t *)(g8 - 28) = g5; v4 = g677 + 1152; g2 = v4; } } // 0x1e21e96 int32_t lpStartupInfo; // bp-68 g2 = &lpStartupInfo; GetStartupInfoA((struct _STARTUPINFOA *)&lpStartupInfo); g2 = &g708; int32_t v5; // edi int16_t v6; int32_t v7; // 0x1e21f3e int32_t v8; // 0x1e21f5a14 if (v6 != 0) { // 0x1e21ead int32_t v9; if (v9 != 0) { int32_t v10 = *(int32_t *)v9; // 0x1e21ebc g3 = v10; int32_t v11 = v9 + 4; // 0x1e21ebe g4 = v11; g8 = v10 + v11; int32_t v12; // 0x1e21ed2 if (v10 >= 2048) { // 0x1e21ecd g3 = 2048; v12 = 2048; } else { v12 = v10; } // 0x1e21ed2 int32_t v13; // 0x1e21f28 if (g679 < ((v12 & 1) != 0)) { // 0x1e21eda g6 = &g678; while (true) { // 0x1e21edf *(int32_t *)(g9 - 4) = 1152; int32_t v14 = function_1e22670((int32_t)&g708); // 0x1e21ee4 g2 = v14; if (v14 == 0) { // break -> 0x1e21f38 break; } // 0x1e21ef0 g5 = v14 + 1152; *(int32_t *)g6 = v14; int32_t v15 = g2; // 0x1e21eff if (g5 > v15) { // 0x1e21f03 g5 = 0; *(char *)(v15 + 4) = (char)0; int32_t v16 = g2; // 0x1e21f08 g2 = v16 + 36; *(int32_t *)v16 = -1; *(char *)(g2 - 31) = 10; *(int32_t *)(g2 - 28) = g5; while (*(int32_t *)g6 + 1152 > g2) { // 0x1e21f05 *(char *)(g2 + 4) = (char)g5; v16 = g2; g2 = v16 + 36; *(int32_t *)v16 = -1; *(char *)(g2 - 31) = 10; *(int32_t *)(g2 - 28) = g5; } } // 0x1e21f25 g6 += 4; v13 = g3; if (g679 >= ((v13 & 1) != 0)) { goto lab_0x1e21f38; } } } else { v13 = v12; lab_0x1e21f38: // 0x1e21f38 v5 = 0; if (v13 >= 1) { // 0x1e21f3e v8 = 0; v7 = g8; while (true) { lab_0x1e21f3e:; int32_t v17 = *(int32_t *)v7; // 0x1e21f3e g5 = v17; if (v17 == -1) { goto lab_0x1e21f7e; } else { unsigned char v18 = *(char *)g4; // 0x1e21f45 int32_t v19 = v18; // 0x1e21f45 g2 = g2 & -256 | v19; if ((v18 & 1) == 0) { goto lab_0x1e21f7e; } else { // 0x1e21f4b if ((v19 & 8) != 0) { goto lab_0x1e21f5a; } else { // 0x1e21f4f *(int32_t *)(g9 - 4) = v17; int32_t v20 = GetFileType(&g708); // 0x1e21f50 g2 = v20; if (v20 == 0) { goto lab_0x1e21f7e; } else { // 0x1e21f4f v7 = g8; v8 = v5; goto lab_0x1e21f5a; } } } } } } } } } lab_0x1e21f87:; int32_t v21 = 0; // esi v5 = 0; int32_t v22 = 0; // 0x1e21f9d int32_t v23; // 0x1e21f91 while (true) { lab_0x1e21f8b: // 0x1e21f8b v23 = g677 + v22; if (*(int32_t *)v23 != -1) { char * v24 = (char *)(v23 + 4); // 0x1e21fef *v24 = *v24 | -128; goto lab_0x1e21ff3; } else { // 0x1e21f98 g2 = -10; *(char *)(v23 + 4) = -127; int32_t v25; // 0x1e21fb3 if (v22 == 0) { // 0x1e21f98 v25 = g2; } else { int32_t v26 = v5 == 1 ? -11 : -12; // 0x1e21fb0 g2 = v26; v25 = v26; } // 0x1e21fb3 *(int32_t *)(g9 - 4) = v25; int32_t * v27 = GetStdHandle((int32_t)&g708); // 0x1e21fb4 int32_t v28 = (int32_t)v27; // 0x1e21fb4 g2 = v28; if (v27 == (int32_t *)-1) { goto lab_0x1e21fe9; } else { // 0x1e21fc1 *(int32_t *)(g9 - 4) = v28; int32_t v29 = GetFileType(&g708); // 0x1e21fc2 g2 = v29; if (v29 == 0) { goto lab_0x1e21fe9; } else { // 0x1e21fcc g2 = v29 & 255; *(int32_t *)v23 = v28; int32_t v30 = g2; // 0x1e21fd3 if (v30 != 2) { // 0x1e21fde if (v30 == 3) { char * v31 = (char *)(v23 + 4); // 0x1e21fe3 *v31 = *v31 | 8; } } else { char * v32 = (char *)(v23 + 4); // 0x1e21fd8 *v32 = *v32 | 64; } goto lab_0x1e21ff3; } } } } lab_0x1e21ffc:; int32_t v33 = g679; // 0x1e21ffc g2 = v33; *(int32_t *)(g9 - 4) = v33; int32_t result = SetHandleCount((int32_t)&g708); // 0x1e22002 g2 = result; g3 = *(int32_t *)g9; g6 = *(int32_t *)(g9 + 4); g8 = *(int32_t *)(g9 + 8); g4 = *(int32_t *)(g9 + 12); return result; lab_0x1e21ff3:; int32_t v34 = v21 + 36; // 0x1e21ff3 v21 = v34; v5++; if (v34 >= 108) { // break -> 0x1e21ffc goto lab_0x1e21ffc; } v22 = v34; goto lab_0x1e21f8b; lab_0x1e21fe9:; char * v35 = (char *)(v23 + 4); // 0x1e21fe9 *v35 = *v35 | 64; goto lab_0x1e21ff3; lab_0x1e21f7e:; int32_t v36 = v5 + 1; // 0x1e21f7e v5 = v36; g4++; int32_t v37 = g8 + 4; // 0x1e21f80 g8 = v37; if (((v36 & 1) != 0) >= ((g3 & 1) != 0)) { // break -> 0x1e21f87 goto lab_0x1e21f87; } v8 = v36; v7 = v37; goto lab_0x1e21f3e; lab_0x1e21f5a:; int32_t v38 = v8 & 31; // 0x1e21f61 int32_t v39 = v8 / 8 & -4; // 0x1e21f64 g2 = v39; g5 = 4 * v38; int32_t v40 = *(int32_t *)(v39 + (int32_t)&g677); // 0x1e21f6a int32_t v41 = *(int32_t *)v7; // 0x1e21f70 g2 = v41; int32_t v42 = v40 + 36 * v38; // 0x1e21f75 g5 = v42; *(int32_t *)v42 = v41; *(char *)(g5 + 4) = *(char *)g4; goto lab_0x1e21f7e; } // Address range: 0x1e22010 - 0x1e22070 int32_t function_1e22010(void) { int32_t v1 = g8; // 0x1e22010 int32_t v2 = v1; // bp-4 g2 = function_1e22460(v1); int32_t v3 = TlsAlloc(); // 0x1e22016 g2 = v3; g113 = v3; if (v3 == -1) { // 0x1e22026 g2 = 0; g8 = v2; return 0; } int32_t v4 = function_1e22760(1, 116); // 0x1e2202e g2 = v4; if (v4 == 0) { // 0x1e2206c g2 = 0; g8 = *(int32_t *)(int32_t)&v2; return 0; } // 0x1e2203c g2 = g113; int32_t * lpTlsValue = (int32_t *)v4; // 0x1e22043 bool v5 = TlsSetValue(g113, lpTlsValue); // 0x1e22043 g2 = v5; if (v5) { // 0x1e2204d g2 = function_1e22070(v4); *lpTlsValue = GetCurrentThreadId(); g2 = 1; *(int32_t *)(v4 + 4) = -1; g8 = g113; return g2; } // 0x1e2206c g2 = 0; g8 = *(int32_t *)g9; return 0; } // Address range: 0x1e22070 - 0x1e22083 int32_t function_1e22070(int32_t a1) { // 0x1e22070 g2 = a1; *(int32_t *)(a1 + 80) = (int32_t)&g94; *(int32_t *)(g2 + 20) = 1; return g2; } // Address range: 0x1e22090 - 0x1e220ff int32_t function_1e22090(void) { // 0x1e22090 g8 = GetLastError(); g2 = g113; int32_t v1 = g113; // bp-12 int32_t * v2 = TlsGetValue(g113); // 0x1e220a0 int32_t v3 = (int32_t)v2; // 0x1e220a0 g2 = v3; g6 = v3; int32_t v4; // 0x1e220e9 if (v2 != NULL) { goto lab_0x1e220f3; } else { int32_t lpTlsValue = function_1e22760(1, 116); // 0x1e220b0 g2 = lpTlsValue; g6 = lpTlsValue; if (lpTlsValue == 0) { v4 = &v1; goto lab_0x1e220e9; } else { // 0x1e220be g2 = g113; bool v5 = TlsSetValue(g113, (int32_t *)lpTlsValue); // 0x1e220c5 g2 = v5; if (!v5) { // 0x1e220be v4 = g9; goto lab_0x1e220e9; } else { // 0x1e220cf g2 = function_1e22070(g6); int32_t threadId = GetCurrentThreadId(); // 0x1e220d8 g2 = threadId; *(int32_t *)g6 = threadId; *(int32_t *)(g6 + 4) = -1; goto lab_0x1e220f3; } } } lab_0x1e220f3: // 0x1e220f3 *(int32_t *)(g9 - 4) = g8; SetLastError((int32_t)&g708); int32_t result = g6; // 0x1e220fa g2 = result; g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); return result; lab_0x1e220e9: // 0x1e220e9 *(int32_t *)(v4 - 4) = 16; g2 = function_1e211b0((int32_t)&g708); goto lab_0x1e220f3; } // Address range: 0x1e22100 - 0x1e22139 int32_t function_1e22100(void) { int32_t * v1 = HeapCreate(0, 0x1000, 0); // 0x1e22109 int32_t v2 = (int32_t)v1; // 0x1e22109 g2 = v2; g676 = v2; if (v1 == NULL) { // 0x1e22118 g2 = 0; return 0; } int32_t v3 = function_1e22810(); // 0x1e2211b g2 = v3; if (v3 != 0) { // 0x1e22133 g2 = 1; return 1; } // 0x1e22124 g2 = g676; HeapDestroy((int32_t *)g676); g2 = 0; return 0; } // Address range: 0x1e2213c - 0x1e22201 int32_t function_1e2213c(int32_t a1, int32_t a2, int32_t a3) { // 0x1e2213c int32_t v1; // 0x1e22190 int32_t v2 = v1; // 0x1e2213c char * v3; // bp-4 int32_t v4 = (int32_t)&v3; // 0x1e2213c int32_t v5; // edx int32_t v6 = (int32_t)((char)(v5 / 256) ^ *(char *)&g2); // 0x1e2213e *(char *)v2 = (char)(v6 ^ v2); v3 = (char *)v4; int32_t v7 = &a1; // 0x1e22147 g2 = a1; int32_t result; // 0x1e22200 if ((*(int32_t *)(a1 + 4) & 6) != 0) { // 0x1e221e4 __local_unwind2(); g2 = 1; result = 1; } else { g2 = v7; *(int32_t *)(a2 - 4) = v7; int32_t v8 = *(int32_t *)(a2 + 12); // 0x1e22171 if (v8 != -1) { int32_t v9 = a2; // 0x1e221cb13 int32_t v10 = *(int32_t *)(a2 + 8); // 0x1e2217f while (true) { // 0x1e2217c g5 = 3 * v8; int32_t v11; // 0x1e221cb if (*(int32_t *)(v10 + 4 + 12 * v8) != 0) { int32_t * v12 = (int32_t *)(g9 - 4); // 0x1e22186 *v12 = v8; int32_t * v13 = (int32_t *)(g9 - 8); // 0x1e22187 *v13 = v4; int32_t v14 = *v13; // 0x1e2218f v4 = v14; v1 = *v12; int32_t v15 = *(int32_t *)(v14 + 12); // 0x1e22191 int32_t v16 = g2; // 0x1e22194 if (v16 != 0) { if (v16 < 0) { // 0x1e221d6 g2 = 0; result = 0; return result; } int32_t v17 = *(int32_t *)(v15 + 8); // edi *v12 = v15; g2 = __global_unwind2(); v4 = v15 + 16; *(int32_t *)g9 = v1; *(int32_t *)(g9 - 4) = v15; g2 = __local_unwind2(); g5 = 3 * v1; *(int32_t *)(g9 + 4) = 1; g2 = *(int32_t *)(v17 + 8 + 4 * g5); g2 = __NLG_Notify(); int32_t v18 = *(int32_t *)(4 * g5 + v17); // 0x1e221c1 g2 = v18; *(int32_t *)(v15 + 12) = v18; v11 = v15; } else { v11 = v15; } } else { v1 = v8; v11 = v9; } int32_t v19 = *(int32_t *)(v11 + 8); // 0x1e221cb g5 = 3 * v1; int32_t v20 = *(int32_t *)(v19 + 12 * v1); // 0x1e221d1 if (v20 == -1) { // break -> 0x1e221dd break; } v9 = v11; v10 = v19; v8 = v20; } } // 0x1e221dd g2 = 1; result = 1; } return result; // 0x1e221f9 return result; }