#include "pinball.h" // Address range: 0x1e46983 - 0x1e46a56 int32_t function_1e46983(void) { int32_t v1 = (int32_t)g601; // 0x1e46984 g2 = v1; int32_t v2 = function_1e45c22(*(int32_t *)(v1 + 12), *(int32_t *)(v1 + 420)); // 0x1e46994 g2 = v2; int32_t v3 = 0; // esi struct tWAVEFORMATEX * v4 = g601; // 0x1e469bd7 struct tWAVEFORMATEX * v5 = g601; // 0x1e4699d int32_t v6 = 0; // 0x1e469a2 struct tWAVEFORMATEX * v7; // 0x1e46a08 while (true) { int32_t v8 = (int32_t)v5; // 0x1e4699d g2 = v8; int32_t v9 = *(int32_t *)(4 * v6 + 244 + v8); // 0x1e469a2 int32_t v10 = v9; // ebx struct tWAVEFORMATEX * v11; // 0x1e4699d3 int32_t v12; // 0x1e46a02 if (v9 != 0) { if (v9 != -1) { int32_t v13 = v6; // 0x1e469c3 struct tWAVEFORMATEX * v14 = v4; // 0x1e469bd struct tWAVEFORMATEX * v15 = v5; // 0x1e4699d2 while (true) { // 0x1e469b6 if (*(int32_t *)(v9 + 44) > v2) { v12 = v13; v7 = v14; v11 = v15; // break -> 0x1e46a02 break; } int32_t v16 = *(int32_t *)v9; // 0x1e469bb g2 = v16; int32_t v17 = (int32_t)v14; // 0x1e469bd g5 = v17; *(int32_t *)(4 * v13 + 244 + v17) = v16; int32_t v18 = v10; // 0x1e469ca int32_t v19 = *(int32_t *)(v18 + 18); // 0x1e469ca g2 = v19; int32_t v20; // 0x1e469ea if (v19 != 0) { // 0x1e469d1 *(int32_t *)(g9 - 4) = *(int32_t *)(v18 + 32); *(int32_t *)(g9 - 8) = v3; *(int32_t *)(g9 - 12) = 957; *(int32_t *)(g9 - 16) = v19; bool v21 = PostMessageA(&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e469db g2 = v21; v20 = v10; } else { v20 = v18; } if (v20 != 0) { int32_t v22 = g603; // 0x1e469e5 g2 = v22; *(int32_t *)v20 = v22; g603 = v10; } int32_t v23 = (int32_t)g601; // 0x1e469f2 g2 = v23; int32_t v24 = *(int32_t *)(v23 + 244 + 4 * v3); // 0x1e469f7 v10 = v24; if (v24 == 0) { v12 = v3; v7 = g601; v11 = g601; // break -> 0x1e46a02 break; } v13 = v3; v14 = g601; v15 = g601; v9 = v24; } } else { v12 = v6; v7 = v4; v11 = v5; } } else { v12 = v6; v7 = v4; v11 = v5; } int32_t v25 = v12 + 1; // 0x1e46a02 v3 = v25; if (v25 >= 16) { // break -> 0x1e46a08 break; } v4 = v7; v5 = v11; v6 = v25; } int32_t v26 = (int32_t)v7; // 0x1e46a08 g2 = v26; v3 = 0; int32_t result; // 0x1e46a55 if (*(int32_t *)(v26 + 420) == 0) { // 0x1e46a17 if (g486 == 0) { int32_t v27 = 0; // 0x1e46a24 struct tWAVEFORMATEX * v28 = v7; // 0x1e46a34 while (true) { int32_t v29 = (int32_t)v28; // 0x1e46a1f g2 = v29; int32_t v30 = *(int32_t *)(v27 + 244 + v29); // 0x1e46a24 g2 = v30; int32_t v31; // 0x1e46a4a int32_t v32; // 0x1e46a5519 if (v30 != 0) { if (v30 != -1) { // 0x1e46a34 g2 = v29; *(int32_t *)(g9 - 4) = v29; *(int32_t *)(g9 - 8) = 0; *(int32_t *)(g9 - 12) = 1024; *(int32_t *)(g9 - 16) = *(int32_t *)(g2 + 4); bool v33 = PostMessageA(&g708, (int32_t)&g708, (int32_t)&g708, (int32_t)&g708); // 0x1e46a44 int32_t v34 = v33; // 0x1e46a44 g2 = v34; v32 = v34; v31 = v3; } else { v32 = v30; v31 = v27; } } else { v32 = 0; v31 = v27; } int32_t v35 = v31 + 4; // 0x1e46a4a v3 = v35; if (v35 >= 64) { result = v32; // break -> 0x1e46a52 break; } // 0x1e46a4a v27 = v35; v28 = g601; } } else { result = v26; } } else { result = v26; } // 0x1e46a52 g8 = *(int32_t *)(g9 + 4); return result; } // Address range: 0x1e46a56 - 0x1e46b02 int32_t function_1e46a56(void) { int32_t result = (int32_t)g609; // 0x1e46a57 g2 = result; int32_t v1 = g6; // bp-8 g601 = g609; int32_t v2; // 0x1e46aff if (g609 == NULL) { v2 = &v1; // 0x1e46aff g6 = *(int32_t *)v2; g8 = *(int32_t *)(v2 + 4); return result; } int32_t v3 = g486; // 0x1e46a6a g8 = v3; if (v3 != 0) { while (true) { // 0x1e46a74 int32_t * v4; if ((*(char *)(v3 + 16) & 1) == 0) { // 0x1e46a8f v4 = (int32_t *)(v3 + 44); } else { // 0x1e46a7a *(int32_t *)(g9 - 4) = v3; g2 = function_1e46130((int32_t)&g708); *(int32_t *)(g8 + 32) = 1; v4 = &g486; } int32_t v5 = *v4; g8 = v5; if (v5 == 0) { // break -> 0x1e46a96 break; } v3 = v5; } } // 0x1e46a96 g2 = function_1e46983(); while (true) { lab_0x1e46a9d: // 0x1e46a9d g5 = 0; int32_t v6 = (int32_t)g601; // 0x1e46a9f g2 = v6; int32_t v7 = *(int32_t *)(v6 + 400); // 0x1e46aa4 g6 = v7; if (v7 > 0) { int32_t * v8 = (int32_t *)(v6 + 408); // 0x1e46aae int32_t v9 = *v8; // 0x1e46aae g2 = v9; int32_t v10 = 0; // 0x1e46abf int32_t v11; // 0x1e46ad7 while (true) { int32_t v12 = *(int32_t *)v9; // 0x1e46ab4 g7 = v12; if (*(int32_t *)(v12 + 32) != 0) { v11 = v10; // break -> 0x1e46ac4 break; } int32_t v13 = v9 + 4; // 0x1e46abc g2 = v13; int32_t v14 = v10 + 1; // 0x1e46abf g5 = v14; if (v14 >= v7) { v11 = v14; // break -> 0x1e46ac4 break; } v10 = v14; v9 = v13; } if (v11 < v7) { // 0x1e46acc g2 = v6; int32_t v15 = *(int32_t *)(*v8 + 4 * v11); // 0x1e46ad7 g5 = v15; g6 = v15 + 48; *(int32_t *)(v15 + 4) = *(int32_t *)(v6 + 396); *(int32_t *)g5 = g6; int32_t v16 = (int32_t)g609; // 0x1e46ae8 g2 = v16; *(int32_t *)(g5 + 40) = v16; *(int32_t *)(g5 + 32) = g8; goto lab_0x1e46af3; } else { // 0x1e46ac8 g5 = 0; goto lab_0x1e46af3; } } else { // 0x1e46ac8 g5 = 0; goto lab_0x1e46af3; } } lab_0x1e46aff: // 0x1e46aff v2 = g9; // 0x1e46aff g6 = *(int32_t *)v2; g8 = *(int32_t *)(v2 + 4); int32_t result2; // 0x1e46af6 return result2; lab_0x1e46af3: // 0x1e46af3 *(int32_t *)(g9 - 4) = 1; *(int32_t *)(g9 - 8) = g5; result2 = function_1e466b3((int32_t)&g708, (int32_t)&g708); g2 = result2; if (result2 == 0) { // break -> 0x1e46aff goto lab_0x1e46aff; } goto lab_0x1e46a9d; } // Address range: 0x1e46b02 - 0x1e46b36 int32_t function_1e46b02(int32_t hWnd, int32_t Msg, uint16_t wParam, int32_t lParam) { // 0x1e46b02 g2 = Msg; int32_t result; if (Msg == 957) { // 0x1e46b2b g2 = function_1e46a56(); result = 0; // 0x1e46b32 g2 = result; return result; } if (Msg == 1024) { // 0x1e46b2b g2 = function_1e46a56(); result = 0; // 0x1e46b32 g2 = result; return result; } // 0x1e46b17 g5 = wParam; result = DefWindowProcA((int32_t *)hWnd, Msg, (int32_t)wParam, lParam); // 0x1e46b32 g2 = result; return result; } // Address range: 0x1e46b36 - 0x1e46b43 int32_t function_1e46b36(void) { // 0x1e46b36 function_1e46a56(); g2 = 1; return 1; } // Address range: 0x1e46b43 - 0x1e46d22 int32_t function_1e46b43(int32_t a1) { int32_t v1 = (int32_t)g601; // 0x1e46b46 g5 = v1; g2 = a1; *(int32_t *)(v1 + 412) = a1; g8 = 0; int32_t v2 = g486; // 0x1e46b5c if (v2 != 0) { *(int32_t *)(v2 + 32) = 1; int32_t v3 = g486; // 0x1e46b70 g2 = v3; *(int32_t *)(g9 - 4) = v3; g2 = function_1e46130((int32_t)&g708); while (g486 != 0) { // 0x1e46b64 *(int32_t *)(g486 + 32) = 1; v3 = g486; g2 = v3; *(int32_t *)(g9 - 4) = v3; g2 = function_1e46130((int32_t)&g708); } } int32_t v4 = (int32_t)g601 + 408; // 0x1e46b89 g2 = v4; int32_t * v5 = (int32_t *)v4; // 0x1e46b8e *v5 = (int32_t)&g606; if (*v5 != (int32_t)&g605) { // 0x1e46b9c *(int32_t *)g2 = (int32_t)&g605; } // 0x1e46ba2 g6 = 0; g5 = 0; int32_t v6 = (int32_t)g601; // 0x1e46ba6259 g2 = v6; int32_t v7 = *(int32_t *)(v6 + 400); // 0x1e46bab262 int32_t v8; // ebx if (v7 > 0) { while (true) { int32_t * v9 = (int32_t *)(v6 + 408); // 0x1e46bb5 int32_t v10 = *v9; // 0x1e46bb5 g2 = v10; int32_t v11 = 0; // 0x1e46bc6 int32_t v12; // 0x1e46bde while (true) { // 0x1e46bbb if (*(int32_t *)(*(int32_t *)v10 + 32) != 0) { v12 = v11; // break -> 0x1e46bcb break; } int32_t v13 = v10 + 4; // 0x1e46bc3 g2 = v13; int32_t v14 = v11 + 1; // 0x1e46bc6 g5 = v14; if (v7 <= v14) { v12 = v14; // break -> 0x1e46bcb break; } v11 = v14; v10 = v13; } if (v7 <= v12) { // break -> 0x1e46bfa break; } // 0x1e46bfa g2 = v6; int32_t v15 = *(int32_t *)(*v9 + 4 * v12); // 0x1e46bde v8 = v15; int32_t v16 = *(int32_t *)(v6 + 396); // 0x1e46be1 g5 = v16; *(int32_t *)(v15 + 4) = v16; *(int32_t *)v8 = v15 + 48; int32_t v17 = (int32_t)g609; // 0x1e46bef g2 = v17; *(int32_t *)(v8 + 40) = v17; *(int32_t *)(v8 + 32) = g6; if (v8 == 0) { goto lab_0x1e46c3c; } // 0x1e46bfe *(int32_t *)(g9 - 4) = g6; *(int32_t *)(g9 - 8) = v8; int32_t v18 = function_1e466b3((int32_t)&g708, (int32_t)&g708); // 0x1e46c00 g2 = v18; if (v18 == 0) { // 0x1e46c35 *(int32_t *)(g4 + 32) = 1; goto lab_0x1e46c3c; } // 0x1e46c09 *(int32_t *)(g4 + 44) = g6; if (g486 != g6) { int32_t v19 = g487; // 0x1e46c22 g2 = v19; *(int32_t *)(v19 + 44) = g4; g487 = g4; } else { int32_t v20 = g4; // 0x1e46c14 g487 = v20; g486 = v20; } // 0x1e46ba4 g5 = 0; int32_t v21 = (int32_t)g601; // 0x1e46ba6 g2 = v21; int32_t v22 = *(int32_t *)(v21 + 400); // 0x1e46bab if (v22 <= 0) { // break -> 0x1e46bfa break; } v7 = v22; v6 = v21; } } // 0x1e46bfa goto lab_0x1e46c3c; lab_0x1e46c3c:; int32_t v23 = (int32_t)g601; // 0x1e46c3c g2 = v23; g6 = *(int32_t *)(v23 + 412); v8 = *(int32_t *)(v23 + 12); *(int32_t *)(g9 - 4) = *(int32_t *)(v23 + 420); *(int32_t *)(g9 - 8) = v8; int32_t v24 = function_1e45c22((int32_t)&g708, (int32_t)&g708); // 0x1e46c51 g2 = v24; g3 = v24; *(int32_t *)(g9 - 4) = v8; g2 = waveOutReset((int32_t)&g708); *(int32_t *)(g9 - 4) = g3; function_1e45c9e((int32_t)&g708); *(int32_t *)((int32_t)g601 + 412) = g6; int32_t v25 = (int32_t)g601; // 0x1e46c70 g2 = v25; if (*(int32_t *)(v25 + 404) > 0) { // 0x1e46c7e g8 = 1; v8 = 0; *(int32_t *)(g9 - 4) = *(int32_t *)(v25 + 12); g2 = waveOutPause((int32_t)&g708); } else { // 0x1e46c90 v8 = *(int32_t *)(g9 + 16); } int32_t v26 = g486; // 0x1e46c94 int32_t v27 = v26; // edi int32_t v28; // 0x1e46d01 if (v26 == 0) { // 0x1e46c94 v28 = g8; } else { while (true) { // 0x1e46c9e *(int32_t *)(g9 - 4) = 32; g2 = (int32_t)g601; *(int32_t *)(g9 - 8) = v27; *(int32_t *)(g9 - 12) = *(int32_t *)(g2 + 12); int32_t v29 = waveOutWrite((int32_t)&g708, (struct wavehdr_tag *)&g708, (int32_t)&g708); // 0x1e46ca9 g2 = v29; if (v29 != 0) { // 0x1e46cb3 if (g484 != 0) { // 0x1e46cbc *(int32_t *)(g9 - 4) = 48; *(int32_t *)(g9 - 8) = (int32_t)"WavMix32"; *(int32_t *)(g9 - 12) = (int32_t)"Failed to write block to device"; *(int32_t *)(g9 - 16) = 0; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); } // 0x1e46cd0 *(int32_t *)(v27 + 32) = 1; *(int32_t *)(g9 - 4) = v27; g2 = function_1e46130((int32_t)&g708); } int32_t v30 = g8; // 0x1e46cdd int32_t v31; // 0x1e46d0113 if (v30 != 0) { int32_t v32 = v8 + 1; // 0x1e46ce1 v8 = v32; int32_t v33 = (int32_t)g601; // 0x1e46ce2 g2 = v33; if (*(int32_t *)(v33 + 404) <= v32) { // 0x1e46cef *(int32_t *)(g9 - 4) = *(int32_t *)(v33 + 12); g2 = waveOutRestart((int32_t)&g708); g8 = 0; v31 = 0; } else { v31 = v30; } } else { v31 = 0; } int32_t v34 = *(int32_t *)(v27 + 44); // 0x1e46cfa v27 = v34; if (v34 == 0) { v28 = v31; // break -> 0x1e46d01 break; } } } if (v28 != 0) { int32_t v35 = (int32_t)g601; // 0x1e46d05 g2 = v35; *(int32_t *)(g9 - 4) = *(int32_t *)(v35 + 12); g2 = waveOutRestart((int32_t)&g708); } // 0x1e46d13 g2 = 1; return 1; } // Address range: 0x1e46d22 - 0x1e46d55 int32_t function_1e46d22(void) { // 0x1e46d22 if (g486 != 0) { // 0x1e46d54 return g2; } // 0x1e46d2b g5 = 0; int32_t v1 = 0; // 0x1e46d47 int32_t v2 = (int32_t)g601 + 244; // 0x1e46d44 while (true) { int32_t result = *(int32_t *)v2; // 0x1e46d39 g2 = result; if (result != 0) { if (result != -1) { return result; } } int32_t v3 = v1 + 1; // 0x1e46d47 g5 = v3; if (v3 >= 16) { // break -> 0x1e46d4d break; } v1 = v3; v2 += 4; } int32_t result2 = function_1e45c9e(0); // 0x1e46d4f g2 = result2; // 0x1e46d54 return result2; } // Address range: 0x1e46d55 - 0x1e47347 int32_t function_1e46d55(int32_t * a1) { int32_t v1 = (int32_t)a1; g2 = 0; int32_t v2 = g489 + 1; // 0x1e46d5d g489 = v2; int32_t result; int32_t v3; // 0x1e46df8 if (v2 > 1) { result = 12; goto lab_0x1e47335; } else { if (a1 != NULL) { // 0x1e46dac g2 = v1; int32_t v4 = *(int32_t *)(v1 + 2); // 0x1e46daf if (v4 == 0) { goto lab_0x1e46dc8; } else { // 0x1e46db6 if (*(int16_t *)v4 != 0x5432) { goto lab_0x1e46dc8; } else { // 0x1e46dbd if (*(int16_t *)(v4 + 444) == 0x5432) { v3 = v4; goto lab_0x1e46df6; } else { goto lab_0x1e46dc8; } } } } else { // 0x1e46d85 if (g484 != 0) { // 0x1e46d8d g2 = MessageBoxA(NULL, "NULL parameters pointer passed to WaveMixPlay!", "WavMix32", 48); result = 5; } else { result = 5; } goto lab_0x1e47335; } } lab_0x1e46e8d: // 0x1e46e8d g2 = v1; int32_t v5 = (int32_t)"WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995"; // esi int32_t * v6; // 0x1e46e30 *(int32_t *)(g9 - 4) = *v6; *(int32_t *)(g9 - 8) = (int32_t)"The LPMIXWAVE 0x%lx is not in the current output format, close the wave and reopen it."; *(int32_t *)(g9 - 12) = v5; g2 = wsprintfA((char *)&g708, (char *)&g708); if (g484 != 0) { // 0x1e46eb0 *(int32_t *)(g9 + 8) = 48; *(int32_t *)(g9 + 4) = (int32_t)"WavMix32"; *(int32_t *)g9 = v5; *(int32_t *)(g9 - 4) = 0; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); result = 8; } else { result = 8; } goto lab_0x1e47335; lab_0x1e472ea: // 0x1e472ea *(int32_t *)(g9 - 4) = 1; *(int32_t *)(g9 - 8) = g5; int32_t v113 = function_1e466b3((int32_t)&g708, (int32_t)&g708); // 0x1e472ed g2 = v113; if (v113 == 0) { // break (via goto) -> 0x1e4731a goto lab_0x1e4731a; } // 0x1e472f6 int32_t v99; if (v99 == g6) { // continue -> 0x1e47294 goto lab_0x1e47294_2; } int32_t v114 = g8 + 1; // 0x1e472fb v5 = v114; int32_t v111 = (int32_t)g601; // 0x1e472fc g2 = v111; if (*(int32_t *)(v111 + 404) <= v114) { // break -> 0x1e47309 goto lab_0x1e47309; } goto lab_0x1e47294; lab_0x1e47205:; int32_t v115 = g7; // 0x1e47205 uint16_t v116 = *(int16_t *)(v115 + 26); // 0x1e47205 int32_t v117 = v116; // 0x1e47205 g5 = g5 & -0x10000 | v117; if (v116 != -1) { int32_t v118 = v117 + 1; // 0x1e47225 g5 = v118; int32_t v119 = *(int32_t *)(v115 + 36) * v118; // 0x1e47226 int32_t v120 = (int32_t)*(int16_t *)((int32_t)g601 + 392); // 0x1e47229 g5 = v120; int32_t v121 = *(int32_t *)v5 + v119 - v120; // 0x1e47232 *(int32_t *)(v115 + 44) = v121; } else { // 0x1e47210 *(int32_t *)(v115 + 44) = -1; } int32_t v122 = (int32_t)g601; // 0x1e47237 g5 = v122; if (*(int32_t *)(v122 + 440) == 0) { // break -> 0x1e4724a goto lab_0x1e4724a_2; } int32_t v96; int32_t v49 = v96; struct tWAVEFORMATEX * v50 = g601; // 0x1e47098 goto lab_0x1e47098; lab_0x1e471ee:; int32_t v123 = (int32_t)g601; // 0x1e471ee g5 = v123; uint32_t v124 = *(int32_t *)(v123 + 412); // 0x1e471f6 v96 = v124 <= *(int32_t *)v5 ? v49 : 1; goto lab_0x1e47205; lab_0x1e47335: // 0x1e47335 g2 = result; g489--; return result; lab_0x1e46dc8: // 0x1e46dc8 g2 = MessageBeep(-1); g2 = wsprintfA("WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "Invalid session handle 0x%04X passed to WaveMix API"); g2 = MessageBoxA(NULL, (char *)(int32_t)"WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "WavMix32", 48); v3 = 0; goto lab_0x1e46df6; lab_0x1e46df6: // 0x1e46df6 g2 = 0; struct tWAVEFORMATEX * v7 = (struct tWAVEFORMATEX *)v3; // 0x1e46df8 g601 = v7; if (v3 != 0) { // 0x1e46e2d g2 = v1; v6 = (int32_t *)(v1 + 10); int32_t v8 = *v6; // 0x1e46e30 if (v8 != 0) { int16_t v9 = *(int16_t *)(v8 + 64); // 0x1e46e3b g2 = v9 == 0x5432; if (v9 == 0x5432) { // 0x1e46e78 g5 = 16; int32_t v10 = v3 + 380; // 0x1e46e89 int32_t v11 = 16; // 0x1e46e89 bool v12 = false; while (true) { if (v11 == 0) { // break -> bb89 break; } int32_t v13 = g1 ? -1 : 1; // 0x1e46e89 int32_t v14 = v11 - 1; // 0x1e46e89 g5 = v14; if (*(char *)v8 != *(char *)v10) { goto lab_0x1e46e8d; } v10 += v13; v8 += v13; v11 = v14; v12 = true; } if (v12) { // 0x1e46ecc g5 = v3; g2 = 0; if (*(int32_t *)(v3 + 16) != 0) { // 0x1e46f00 g5 = v3; g2 = 0; if (*(int32_t *)(v3 + 308) != 0) { // 0x1e46f37 g2 = v1; int32_t v15; // ebx if ((*(char *)(v1 + 18) & 2) == 0) { // 0x1e46f8d g2 = v1; v15 = *(int32_t *)(v1 + 6); } else { // 0x1e46f40 v15 = 0; int32_t v16 = v3 + 244; // 0x1e46f4a g5 = v16; int32_t v17 = 0; // 0x1e46f7f int32_t v18 = 0; // 0x1e46f6b int32_t v19; // 0x1e46f88 while (true) { // 0x1e46f50 int32_t v20; // 0x1e46f5523 if (*(int32_t *)v16 != -1) { int32_t v21 = 4 * v18 + v3; // 0x1e46f5c g2 = v21; if (*(int32_t *)(v21 + 244) == 0) { v19 = v18; // break -> 0x1e46f85 break; } if (v17 != v18) { // 0x1e46f6f if (*(int32_t *)(v21 + 312) > *(int32_t *)(v16 + 68)) { // 0x1e46f7a v15 = v17; v20 = v17; } else { v20 = v18; } } else { v20 = v17; } } else { v20 = v18; } int32_t v22 = v16 + 4; // 0x1e46f7c g5 = v22; int32_t v23 = v17 + 1; // 0x1e46f7f if (v23 >= 16) { v19 = v20; // break -> 0x1e46f85 break; } v17 = v23; v18 = v20; v16 = v22; } // 0x1e46f85 g2 = v1; *(int32_t *)(v1 + 6) = v19; v7 = g601; } int32_t v24 = (int32_t)v7; // 0x1e46f93 g2 = v24; int32_t * v25 = (int32_t *)(v24 + 376); // 0x1e46f98 *v25 = *v25 + 1; int32_t v26 = (int32_t)g601; // 0x1e46f9e g2 = v26; int32_t v27 = *(int32_t *)(v26 + 376); // 0x1e46fa3 g7 = v27; *(int32_t *)(v26 + 312 + 4 * v15) = v27; int32_t v28 = (int32_t)g601; // 0x1e46fb0 g2 = v28; if (*(int32_t *)(v28 + 244 + 4 * v15) != -1) { int32_t v29 = function_1e45fb2(); // 0x1e46fcb g2 = v29; if (v29 == 0) { result = 12; goto lab_0x1e47335; } else { // 0x1e46fd8 g5 = 7; __asm_rep_movsd_memcpy((char *)(v29 + 4), (char *)a1, 7); g5 = 0; int32_t v30 = *(int32_t *)(v29 + 14); // 0x1e46fe5 g5 = v30; int32_t * v31 = (int32_t *)(v29 + 32); // 0x1e46fe8 *v31 = v30; int32_t * v32 = (int32_t *)(v29 + 36); // 0x1e46fee *v32 = *(int32_t *)(g5 + 20); int32_t v33 = *v31; // 0x1e46ff1 g5 = v33; int32_t v34 = *(int32_t *)(v33 + 16); // 0x1e46ff4 *(int32_t *)(v29 + 48) = v34; int32_t v35 = (int32_t)g601; // 0x1e46ffd g5 = v35; int32_t v36 = (int32_t)*(int16_t *)(v35 + 392); // 0x1e47003 g6 = v36; int32_t v37 = v34 + *v32 - v36; // 0x1e4700c g8 = v37; *(int32_t *)(v29 + 52) = v37; *(int32_t *)(v29 + 10) = v15; int32_t v38 = (int32_t)g601 + 440; // 0x1e4701a g7 = v38; int32_t * v39 = (int32_t *)v38; // 0x1e47020 int32_t v40 = *v39; // 0x1e47020 g5 = v40; if (v40 == 0) { // 0x1e47046 *v39 = v29; *(int32_t *)v29 = v29; } else { int32_t v41 = *(int32_t *)v40; // 0x1e47026 g5 = v41; *(int32_t *)v29 = v41; int32_t v42 = *(int32_t *)((int32_t)g601 + 440); // 0x1e47030 *(int32_t *)v42 = v29; int32_t v43 = (int32_t)g601; // 0x1e47038 g7 = v43; *(int32_t *)(v43 + 440) = v29; } // 0x1e4704a if ((*(char *)(v29 + 22) & 8) != 0) { result = 0; goto lab_0x1e47335; } else { // 0x1e47054 function_1e46d22(); int32_t v44 = (int32_t)g601; // 0x1e47059 g2 = v44; int32_t v45; struct tWAVEFORMATEX * v46; // 0x1e47085 if (*(int32_t *)(v44 + 432) != 0x1e46b43) { // 0x1e4707a g2 = v44; v46 = g601; v45 = *(int32_t *)(v44 + 412); } else { // 0x1e4706a *(int32_t *)(g9 - 4) = *(int32_t *)(v44 + 420); *(int32_t *)(g9 - 8) = *(int32_t *)(g2 + 12); int32_t v47 = function_1e45c22((int32_t)&g708, (int32_t)&g708); // 0x1e47073 v46 = g601; v45 = v47; } // 0x1e47085 g2 = v45; int32_t v48 = (int32_t)v46; // 0x1e47085 g5 = v48; if (*(int32_t *)(v48 + 440) == 0) { // 0x1e4724a goto lab_0x1e4726b; } else { v49 = 0; v50 = v46; while (true) { lab_0x1e47098:; int32_t v51 = (int32_t)v50 + 440; // 0x1e4709e g5 = v51; int32_t * v52 = (int32_t *)v51; // 0x1e470a4 int32_t v53 = *v52; // 0x1e470a4 int32_t * v54 = (int32_t *)v53; // 0x1e470a6 int32_t v55 = *v54; // 0x1e470a6 g7 = v55; if (v55 != v53) { int32_t v56 = *(int32_t *)v55; // 0x1e470b4 g5 = v56; *v54 = v56; } else { // 0x1e470ac *v52 = 0; } int32_t v57 = g7; // 0x1e470b8 int32_t v58 = v57 + 56; // edi *(int32_t *)v57 = 0; int32_t v59 = g7; // 0x1e470c1 int32_t v60 = *(int32_t *)(v59 + 10); // 0x1e470c5 v5 = v60; int32_t v61; if ((*(char *)(v59 + 22) & 16) == 0) { int32_t v62 = (int32_t)g601; // 0x1e470da g5 = v62; v15 = v59 + 58; *(int16_t *)v58 = *(int16_t *)(4 * v60 + 180 + v62); int32_t v63 = (int32_t)g601; // 0x1e470ee g5 = v63; uint16_t v64 = *(int16_t *)(v63 + 182 + 4 * v5); // 0x1e470f4 v61 = (int32_t)v64 | v63 & -0x10000; } else { uint16_t v65 = *(int16_t *)(v59 + 28); // 0x1e470ca g5 = g5 & -0x10000 | (int32_t)v65; v15 = v59 + 58; *(int16_t *)v58 = v65; v61 = g5 & -0x10000 | (int32_t)*(int16_t *)(g7 + 30); } // 0x1e470fc g5 = v61; *(int16_t *)v15 = (int16_t)v61; int16_t * v66 = (int16_t *)v58; // 0x1e470ff uint16_t v67 = *v66; // 0x1e470ff int32_t v68 = g5 & -0x10000 | (int32_t)v67; // 0x1e470ff g5 = v68; int32_t v69; // 0x1e4710d if (v67 >= 11) { // 0x1e47108 *v66 = 10; v69 = g5; } else { v69 = v68; } int16_t * v70 = (int16_t *)v15; // 0x1e4710d uint16_t v71 = *v70; // 0x1e4710d g5 = (int32_t)v71 | v69 & -0x10000; if (v71 >= 11) { // 0x1e47116 *v70 = 10; } int32_t v72 = g7; // 0x1e4711b int32_t v73 = (int32_t)g601; // 0x1e4711f g5 = v73; int32_t v74 = v5; // 0x1e47189 int32_t v75 = v73 + 244 + 4 * v74; // 0x1e47189 if ((*(char *)(v72 + 22) & 1) == 0) { // 0x1e47189 g5 = v75; int32_t * v76 = (int32_t *)v75; // 0x1e47190 int32_t v77 = *v76; // 0x1e47190 v58 = v77; if (v77 == 0) { // 0x1e471d1 v5 = v72 + 40; *v76 = v72; if ((*(char *)(g7 + 22) & 4) == 0) { int32_t v78 = (int32_t)g601; // 0x1e471e0 g5 = v78; // 0x1e471ec *(int32_t *)v5 = *(int32_t *)(v78 + 412); goto lab_0x1e471ee; } else { // 0x1e471dc *(int32_t *)v5 = g2; goto lab_0x1e471ee; } } else { // 0x1e47196 if (*(int32_t *)v77 != 0) { int32_t v79; // 0x1e4719b v58 = v79; while (*(int32_t *)v79 != 0) { // 0x1e4719b int32_t v80; // 0x1e4719d v79 = v80; v58 = v79; v80 = *(int32_t *)v79; } } // 0x1e471a2 v5 = v72 + 40; *(int32_t *)v77 = v72; if ((*(char *)(g7 + 22) & 4) == 0) { int32_t v81 = (int32_t)g601; // 0x1e471ba g5 = v81; int32_t v82 = *(int32_t *)(v81 + 412); // 0x1e471c0 int32_t v83 = *(int32_t *)(v58 + 44); // 0x1e471c6 g5 = v83; if (v82 <= v83) { // branch -> 0x1e471ec } else { v83 = v82; } // 0x1e471ec *(int32_t *)v5 = v83; goto lab_0x1e471ee; } else { int32_t v84 = *(int32_t *)(v58 + 44); // 0x1e471ad g5 = v84; int32_t v85 = g2; // 0x1e471b0 if (v84 <= v85) { // 0x1e471b4 g5 = v85; } else { v85 = v84; } // 0x1e471b6 *(int32_t *)v5 = v85; goto lab_0x1e471ee; } } } else { int32_t v86 = *(int32_t *)v75; // 0x1e47127 g5 = v86; int32_t v87; // 0x1e47152 int32_t v88; // 0x1e47152 if (v86 != 0) { while (true) { int32_t * v89 = (int32_t *)v86; // 0x1e47132 int32_t v90 = *v89; // 0x1e47132 if (v86 != 0) { // 0x1e47138 *v89 = g603; g603 = g5; } // 0x1e47146 g5 = v90; if (v90 == 0) { // break -> 0x1e4714c break; } v86 = v90; } // 0x1e4714c v88 = v5; v87 = g7; } else { v88 = v74; v87 = v72; } int32_t v91 = (int32_t)g601; // 0x1e4714c g5 = v91; *(int32_t *)(4 * v88 + 244 + v91) = v87; int32_t v92 = g486 == 0 ? v49 : 1; int32_t v93 = g7; // 0x1e47169 int32_t v94 = v93 + 40; // 0x1e4716d v5 = v94; if ((*(char *)(v93 + 22) & 4) == 0) { int32_t v95 = (int32_t)g601; // 0x1e47179 g5 = v95; *(int32_t *)v94 = *(int32_t *)(v95 + 412); v96 = v92; } else { // 0x1e47172 *(int32_t *)v94 = g2; v96 = v92; } goto lab_0x1e47205; } } lab_0x1e4724a_2: // 0x1e4724a if (v96 == 0) { goto lab_0x1e4726b; } else { // 0x1e47251 *(int32_t *)(g9 - 4) = 0; *(int32_t *)(g9 - 8) = g2; if (g2 == 0) { goto lab_0x1e4726b; } else { // 0x1e47263 result = 0; goto lab_0x1e47335; } } } } } } else { result = 5; goto lab_0x1e47335; } } else { // 0x1e46f10 if (g484 != 0) { // 0x1e46f18 *(int32_t *)(g9 - 4) = 48; *(int32_t *)(g9 - 8) = (int32_t)"WavMix32"; *(int32_t *)(g9 - 12) = (int32_t)"You must open a channel before you can play a wave!"; *(int32_t *)(g9 - 16) = g2; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); result = 5; } else { result = 5; } goto lab_0x1e47335; } } else { // 0x1e46ed9 if (g484 != 0) { // 0x1e46ee1 *(int32_t *)(g9 - 4) = 48; *(int32_t *)(g9 - 8) = (int32_t)"WavMix32"; *(int32_t *)(g9 - 12) = (int32_t)"Wave device not allocated, call WaveMixActivate(hMixSession,TRUE)"; *(int32_t *)(g9 - 16) = g2; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); result = 4; } else { result = 4; } goto lab_0x1e47335; } } else { goto lab_0x1e46e8d; } } else { goto lab_0x1e46e4f; } } else { // 0x1e46e4b g2 = 0; goto lab_0x1e46e4f; } } else { // 0x1e46e06 if (g484 != 0) { // 0x1e46e0e *(int32_t *)(g9 - 4) = 48; *(int32_t *)(g9 - 8) = (int32_t)"WavMix32"; *(int32_t *)(g9 - 12) = (int32_t)"Invalid session handle passed to WaveMixPlay"; *(int32_t *)(g9 - 16) = g2; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); result = 5; } else { result = 5; } goto lab_0x1e47335; } lab_0x1e46e4f: // 0x1e46e4f if (g484 != 0) { // 0x1e46e58 *(int32_t *)(g9 - 4) = 48; *(int32_t *)(g9 - 8) = (int32_t)"WavMix32"; *(int32_t *)(g9 - 12) = (int32_t)"Invalid or NULL wave pointer passed to WaveMixPlay!"; *(int32_t *)(g9 - 16) = 0; g2 = MessageBoxA(&g708, (char *)&g708, (char *)&g708, (int32_t)&g708); result = 5; } else { result = 5; } goto lab_0x1e47335; lab_0x1e4726b:; // 0x1e4726b int32_t v97; if (g486 == 0) { int32_t v98 = (int32_t)g601; // 0x1e47275 g2 = v98; if (*(int32_t *)(v98 + 404) > 0) { // 0x1e47282 *(int32_t *)(g9 - 4) = *(int32_t *)(v98 + 12); g2 = waveOutPause((int32_t)&g708); v97 = 1; } else { v97 = 0; } } else { v97 = 0; } // 0x1e47292 g6 = 0; v99 = v97; while (true) { lab_0x1e47294_2: while (true) { lab_0x1e47294: // 0x1e47294 g5 = 0; int32_t v100 = (int32_t)g601; // 0x1e47296 g2 = v100; int32_t v101 = *(int32_t *)(v100 + 400); // 0x1e4729b g7 = v101; if (v101 > 0) { int32_t * v102 = (int32_t *)(v100 + 408); // 0x1e472a5 int32_t v103 = *v102; // 0x1e472a5 g2 = v103; int32_t v104 = 0; // 0x1e472b6 int32_t v105; // 0x1e472ce while (true) { // 0x1e472ab if (*(int32_t *)(*(int32_t *)v103 + 32) != 0) { v105 = v104; // break -> 0x1e472bb break; } int32_t v106 = v103 + 4; // 0x1e472b3 g2 = v106; int32_t v107 = v104 + 1; // 0x1e472b6 g5 = v107; if (v107 >= v101) { v105 = v107; // break -> 0x1e472bb break; } v104 = v107; v103 = v106; } if (v105 < v101) { // 0x1e472c3 g2 = v100; int32_t v108 = *(int32_t *)(*v102 + 4 * v105); // 0x1e472ce g5 = v108; int32_t v109 = *(int32_t *)(v100 + 396); // 0x1e472d1 g7 = v109; *(int32_t *)(v108 + 4) = v109; *(int32_t *)g5 = v108 + 48; int32_t v110 = (int32_t)g609; // 0x1e472df g2 = v110; *(int32_t *)(g5 + 40) = v110; *(int32_t *)(g5 + 32) = g6; goto lab_0x1e472ea; } else { // 0x1e472bf g5 = 0; goto lab_0x1e472ea; } } else { // 0x1e472bf g5 = 0; goto lab_0x1e472ea; } } lab_0x1e47309: // 0x1e47309 *(int32_t *)(g9 - 4) = *(int32_t *)(v111 + 12); g2 = waveOutRestart((int32_t)&g708); v99 = g6; } lab_0x1e4731a: if (v99 != 0) { int32_t v112 = (int32_t)g601; // 0x1e47320 g2 = v112; *(int32_t *)(g9 - 4) = *(int32_t *)(v112 + 12); g2 = waveOutRestart((int32_t)&g708); result = 0; } else { result = 0; } goto lab_0x1e47335; } // Address range: 0x1e47347 - 0x1e47480 int32_t function_1e47347(int32_t a1) { int32_t v1 = 0; // esi int32_t v2; // 0x1e47395 if (a1 == 0) { goto lab_0x1e47367; } else { // 0x1e47355 if (*(int16_t *)a1 != 0x5432) { goto lab_0x1e47367; } else { // 0x1e4735c if (*(int16_t *)(a1 + 444) == 0x5432) { v2 = a1; goto lab_0x1e47395; } else { goto lab_0x1e47367; } } } lab_0x1e47367: // 0x1e47367 g2 = MessageBeep(-1); g2 = wsprintfA("WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "Invalid session handle 0x%04X passed to WaveMix API"); g2 = MessageBoxA(NULL, "WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "WavMix32", 48); v2 = 0; goto lab_0x1e47395; lab_0x1e47395:; struct tWAVEFORMATEX * v3 = (struct tWAVEFORMATEX *)v2; // 0x1e47395 g601 = v3; int32_t v4; // 0x1e473f4 int32_t v5; // 0x1e473fb int32_t result; // 0x1e4747d if (v2 != 0) { // 0x1e473ae if ((*(char *)(g9 + 28) & 1) == 0) { int32_t v6 = *(int32_t *)(g9 + 24); // 0x1e473be g2 = v6; if (v6 >= 0) { if (v6 < 16) { // 0x1e473d3 g5 = v2; if (*(int32_t *)(v2 + 244 + 4 * v6) != -1) { // 0x1e473ed v4 = v6; v5 = v6 + 1; goto lab_0x1e473f0; } else { // 0x1e473e3 g2 = 5; result = 5; goto lab_0x1e47479; } } else { // 0x1e47474 g2 = 11; result = 11; goto lab_0x1e47479; } } else { // 0x1e47474 g2 = 11; result = 11; goto lab_0x1e47479; } } else { // 0x1e473b5 g2 = 0; v4 = 0; v5 = 16; goto lab_0x1e473f0; } } else { // 0x1e473a4 g2 = 5; result = 5; goto lab_0x1e47479; } lab_0x1e47479: // 0x1e47479 g3 = *(int32_t *)g9; g6 = *(int32_t *)(g9 + 4); g8 = *(int32_t *)(g9 + 8); g4 = *(int32_t *)(g9 + 12); return result; lab_0x1e473f0: // 0x1e473f0 g5 = v5; if (v5 > v4) { int32_t v7 = 4 * v4; // 0x1e473f4 g7 = v7; g5 = v5 - v4; while (true) { int32_t v8 = v7 + 244 + (int32_t)v3; // 0x1e47404 g2 = v8; int32_t * v9 = (int32_t *)v8; // 0x1e4740b int32_t v10 = *v9; // 0x1e4740b int32_t v11 = v10; // ebx if (v10 != -1) { // 0x1e47412 *v9 = 0; int32_t v12 = v11; // 0x1e47414 if (v12 != 0) { // 0x1e47418 v1 = 1; while (true) { int32_t * v13 = (int32_t *)v12; // 0x1e4741d int32_t v14 = *v13; // 0x1e4741d g2 = v14; if (v12 != 0) { int32_t v15 = g603; // 0x1e47423 g3 = v15; *v13 = v15; g603 = v11; } // 0x1e47431 v11 = v14; if (v14 == 0) { // break -> 0x1e47437 break; } v12 = v14; } } } int32_t v16 = g7 + 4; // 0x1e47437 g7 = v16; int32_t v17 = g5 - 1; // 0x1e4743a g5 = v17; if (v17 == 0) { // break -> 0x1e4743d break; } // 0x1e47437 v7 = v16; v3 = g601; } } // 0x1e4743d if (v1 != 0) { // 0x1e47441 if ((*(char *)(g9 + 28) & 2) == 0) { int32_t v18 = (int32_t)g601; // 0x1e47448 g2 = v18; if (*(int32_t *)(v18 + 16) != 0) { // 0x1e47453 *(int32_t *)(g9 - 4) = 0; *(int32_t *)(g9 - 8) = *(int32_t *)(g2 + 420); *(int32_t *)(g9 - 12) = *(int32_t *)(g2 + 12); int32_t v19 = function_1e45c22((int32_t)&g708, (int32_t)&g708); // 0x1e4745e g2 = v19; *(int32_t *)(g9 - 4) = v19; } } } // 0x1e47470 g2 = 0; result = 0; goto lab_0x1e47479; } // Address range: 0x1e47480 - 0x1e4754b int32_t function_1e47480(int32_t a1, int32_t a2, int32_t a3) { int32_t v1; if (a1 == 0) { goto lab_0x1e474a6; } else { // 0x1e4748c if (*(int16_t *)a1 != 0x5432) { goto lab_0x1e474a6; } else { // 0x1e47493 if (*(int16_t *)(a1 + 444) != 0x5432) { goto lab_0x1e474a6; } else { v1 = a1; goto lab_0x1e474da; } } } lab_0x1e474a6: // 0x1e474a6 g2 = MessageBeep(-1); g2 = wsprintfA("WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "Invalid session handle 0x%04X passed to WaveMix API"); g2 = MessageBoxA(NULL, "WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "WavMix32", 48); v1 = 0; goto lab_0x1e474da; lab_0x1e474da: // 0x1e474da g601 = (struct tWAVEFORMATEX *)v1; int32_t result; // 0x1e47548 if (v1 != 0) { int32_t v2 = a3 | 2; // 0x1e474f0 g2 = v2; *(int32_t *)(g9 - 4) = v2; *(int32_t *)(g9 - 8) = a2; *(int32_t *)(g9 - 12) = a1; int32_t v3 = function_1e47347((int32_t)&g708); // 0x1e474f5 g2 = v3; if (v3 == 0) { int32_t v4 = g8 + 1; // 0x1e47502 g5 = v4; int32_t v5; // 0x1e47512 int32_t v6; // 0x1e47519 if ((a3 & 1) != 0) { // 0x1e47507 g5 = 16; v5 = 0; v6 = 16; } else { v5 = g8; v6 = v4; } int32_t v7 = v6 - v5; // 0x1e4750e if (v6 > v5) { int32_t v8 = 4 * v5; // 0x1e47512 g5 = v7; while (true) { int32_t v9 = v8 + 244 + (int32_t)g601; // 0x1e47520 g2 = v9; int32_t * v10 = (int32_t *)v9; // 0x1e47527 int32_t v11; // 0x1e47540 if (*v10 != -1) { // 0x1e4752c *v10 = -1; int32_t v12 = (int32_t)g601; // 0x1e47532 g2 = v12; int32_t * v13 = (int32_t *)(v12 + 308); // 0x1e47537 *v13 = *v13 - 1; v11 = g5; } else { v11 = v7; } int32_t v14 = v11 - 1; // 0x1e47540 g5 = v14; if (v14 == 0) { // break -> 0x1e47543 break; } v7 = v14; v8 += 4; } } // 0x1e47543 g2 = 0; result = 0; } else { result = v3; } } else { // 0x1e474e3 g2 = 5; result = 5; } // 0x1e47545 g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); g3 = *(int32_t *)(g9 + 8); return result; } // Address range: 0x1e4754b - 0x1e47681 int32_t function_1e4754b(int32_t a1, int32_t a2) { int32_t v1 = g3; // bp-16 int32_t v2; // 0x1e475d032 if (a1 == 0) { goto lab_0x1e47598; } else { // 0x1e47557 if (*(int16_t *)a1 != 0x5432) { goto lab_0x1e47598; } else { // 0x1e4755e if (*(int16_t *)(a1 + 444) == 0x5432) { // 0x1e47598 v2 = a1 + 244; goto lab_0x1e475a6; } else { goto lab_0x1e47598; } } } lab_0x1e47598: // 0x1e47598 g2 = MessageBeep(-1); g2 = wsprintfA("WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "Invalid session handle 0x%04X passed to WaveMix API"); g2 = MessageBoxA(NULL, (char *)(int32_t)"WaveMix V 2.3 by Angel M. Diaz, Jr. (c) Microsoft 1993-1995", "WavMix32", 48); int32_t result; // 0x1e4767e // 0x1e4759c g2 = 5; result = 5; goto lab_0x1e4767a; lab_0x1e475a6:; int32_t v3 = *(int32_t *)((int32_t)&v1 + 24); // 0x1e475a6 if (v3 != 0) { int16_t * v4 = (int16_t *)(v3 + 64); // 0x1e475b2 int16_t v5 = *v4; // 0x1e475b2 g2 = v5 == 0x5432; if (v5 == 0x5432) { int32_t v6 = v2; // edi int32_t v7 = 16; // ebx int32_t v8 = v2; // 0x1e475db while (true) { int32_t v9 = *(int32_t *)v8; // 0x1e475db g5 = v9; if (v9 != -1) { int32_t v10 = 0; // edx if (v9 != 0) { while (true) { // 0x1e475e8 int32_t v11; // 0x1e47625 if (*(int32_t *)(v9 + 32) != v3) { // 0x1e47623 v10 = v9; v11 = *(int32_t *)v9; g5 = v11; } else { int32_t v12 = v10; // 0x1e475ed int32_t v13 = *(int32_t *)v9; // 0x1e4760a if (v12 != 0) { // 0x1e4760a g2 = v13; *(int32_t *)v12 = v13; if (v9 != 0) { int32_t v14 = g603; // 0x1e47612 g2 = v14; *(int32_t *)g5 = v14; g603 = g5; } int32_t v15 = *(int32_t *)v10; // 0x1e4761f g5 = v15; v11 = v15; } else { // 0x1e475f1 g5 = v13; int32_t v16 = *(int32_t *)v6; // 0x1e475f3 g2 = v16; int32_t v17; // 0x1e47606 if (v16 != 0) { // 0x1e475f9 *(int32_t *)v16 = g603; g603 = v16; v17 = g5; } else { v17 = v13; } // 0x1e47606 *(int32_t *)v6 = v17; v11 = g5; } } if (v11 == 0) { // break -> 0x1e4762b break; } v9 = v11; } } } int32_t v18 = v6 + 4; // 0x1e4762b v6 = v18; int32_t v19 = v7 - 1; // 0x1e4762e v7 = v19; if (v19 == 0) { // break -> 0x1e47631 break; } v8 = v18; } int32_t * v20 = (int32_t *)(v3 + 16); // 0x1e47631 int32_t v21 = *v20; // 0x1e47631 g2 = v21; if (v21 != 0) { // 0x1e47638 *(int32_t *)(g9 - 4) = v21; int32_t v22 = (int32_t)GlobalHandle(&g708); // 0x1e47639 g2 = v22; *(int32_t *)(g9 - 4) = v22; g2 = GlobalUnlock(&g708); *(int32_t *)(g9 - 4) = *v20; int32_t v23 = (int32_t)GlobalHandle(&g708); // 0x1e47649 g2 = v23; *(int32_t *)(g9 - 4) = v23; g2 = (int32_t)GlobalFree(&g708); } // 0x1e47656 *v4 = 0; *(int32_t *)(g9 - 4) = v3; int32_t v24 = (int32_t)GlobalHandle(&g708); // 0x1e4765d g2 = v24; *(int32_t *)(g9 - 4) = v24; g2 = GlobalUnlock(&g708); *(int32_t *)(g9 - 4) = v3; int32_t v25 = (int32_t)GlobalHandle(&g708); // 0x1e4766b g2 = v25; *(int32_t *)(g9 - 4) = v25; GlobalFree(&g708); g2 = 0; result = 0; goto lab_0x1e4767a; } else { // 0x1e475c6 g2 = 5; result = 5; goto lab_0x1e4767a; } } else { // 0x1e475c2 g2 = 0; // 0x1e475c6 g2 = 5; result = 5; goto lab_0x1e4767a; } lab_0x1e4767a: // 0x1e4767a g3 = *(int32_t *)g9; g6 = *(int32_t *)(g9 + 4); g8 = *(int32_t *)(g9 + 8); return result; } // Address range: 0x1e47681 - 0x1e477d2 int32_t function_1e47681(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5, int32_t a6, int32_t a7, int32_t a8) { int32_t v1 = g2 & -0x10000; // 0x1e47682 g2 = v1 | a3 & 0xffff; int32_t v2 = g6 & -0x10000; // 0x1e4768f uint16_t v3 = (int16_t)a3; // 0x1e47693 uint16_t v4 = (int16_t)a2; // 0x1e47693 int32_t result; // 0x1e477cf if (v3 != v4) { if (v4 == 8) { goto lab_0x1e476ac; } else { if (v4 != 16) { goto lab_0x1e476b8; } else { goto lab_0x1e476ac; } } } else { // 0x1e47698 g2 = a1; result = a1; goto lab_0x1e477c9; } lab_0x1e476ac: if (v3 == 8) { goto lab_0x1e476df; } else { if (v3 == 16) { goto lab_0x1e476df; } else { goto lab_0x1e476b8; } } lab_0x1e477c9: // 0x1e477c9 g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); g4 = *(int32_t *)(g9 + 8); return result; lab_0x1e476df:; uint16_t v5 = v4 / 8; // 0x1e476df g5 = a4; uint16_t v6 = v3 / 8; // 0x1e476e6 int32_t v7 = v1 | (int32_t)v6; // 0x1e476e6 g2 = v7; int32_t * v8 = (int32_t *)a4; // 0x1e476f3 uint64_t v9 = (int64_t)*v8; // 0x1e476f5 uint64_t v10 = (int64_t)v5; // 0x1e476f5 int32_t v11 = v9 / v10; // 0x1e476f5 g7 = v9 % v10; int32_t v12 = v11; // ebx int32_t dwBytes = v11 * v7; // 0x1e476fd g2 = dwBytes; *v8 = dwBytes; int32_t * hMem = GlobalAlloc(0x2002, dwBytes); // 0x1e47708 g2 = (int32_t)hMem; int32_t * v13 = GlobalLock(hMem); // 0x1e4770f int32_t v14 = (int32_t)v13; // 0x1e4770f g2 = v14; if (v13 != NULL) { // 0x1e4775c if (v6 >= (int16_t)(v2 || (int32_t)v5)) { // 0x1e47787 g2 = a1; g5 = v14; if (v12 != 0) { int32_t v15 = a1; // 0x1e47799 unsigned char v16 = *(char *)v15; // 0x1e47790 g2 = v15 + 1; uint16_t v17 = 256 * (int16_t)v16 ^ -0x8000; // 0x1e4779a g7 = (int32_t)v17 | (g7 | (int32_t)v16) & -0x10000; *(int16_t *)v14 = v17; int32_t v18 = g5 + 2; // 0x1e477a1 g5 = v18; int32_t v19 = v12 - 1; // 0x1e477a4 while (v19 != 0) { // 0x1e47790 v15 = g2; v16 = *(char *)v15; g2 = v15 + 1; v17 = 256 * (int16_t)v16 ^ -0x8000; g7 = (int32_t)v17 | (g7 | (int32_t)v16) & -0x10000; *(int16_t *)v18 = v17; v18 = g5 + 2; g5 = v18; v19--; } } } else { // 0x1e47762 g5 = v14; if (v12 != 0) { int32_t v20 = a1; // 0x1e47775 int32_t v21 = (int32_t)*(int16_t *)v20; // 0x1e4776b int32_t v22 = v21 >> 31 & 255; // 0x1e4776f g7 = v22; int32_t v23 = (v22 + v21) / 256; // 0x1e4777a unsigned char v24 = (char)v23 ^ -128; // 0x1e4777d g2 = (int32_t)v24 | v23 & -256; *(char *)v14 = v24; int32_t v25 = g5 + 1; // 0x1e47781 g5 = v25; int32_t v26 = v12 - 1; // 0x1e47782 while (v26 != 0) { // 0x1e4776b v14 = v25; v20 += 2; v21 = (int32_t)*(int16_t *)v20; v22 = v21 >> 31 & 255; g7 = v22; v23 = (v22 + v21) / 256; v24 = (char)v23 ^ -128; g2 = (int32_t)v24 | v23 & -256; *(char *)v14 = v24; v25 = g5 + 1; g5 = v25; v26--; } } } int32_t * pMem = (int32_t *)a1; // 0x1e477aa int32_t * hMem2 = GlobalHandle(pMem); // 0x1e477aa g2 = (int32_t)hMem2; g2 = GlobalUnlock(hMem2); int32_t * hMem3 = GlobalHandle(pMem); // 0x1e477ba g2 = (int32_t)hMem3; GlobalFree(hMem3); g2 = v14; result = v14; } else { // 0x1e4771b if (g484 != 0) { // 0x1e47724 g2 = MessageBoxA(NULL, "Unable to allocate memory for waveform data. Try making more memory available by closing other applications.", "WavMix32", 64); } // 0x1e47738 *(int32_t *)(g9 - 4) = a1; int32_t v27 = (int32_t)GlobalHandle(&g708); // 0x1e4773b g2 = v27; *(int32_t *)(g9 - 4) = v27; g2 = GlobalUnlock(&g708); *(int32_t *)(g9 - 4) = a1; int32_t v28 = (int32_t)GlobalHandle(&g708); // 0x1e4774b g2 = v28; *(int32_t *)(g9 - 4) = v28; GlobalFree(&g708); g2 = 0; result = 0; } goto lab_0x1e477c9; lab_0x1e476b8:; int32_t * pMem2 = (int32_t *)a1; // 0x1e476bb int32_t * hMem4 = GlobalHandle(pMem2); // 0x1e476bb g2 = (int32_t)hMem4; g2 = GlobalUnlock(hMem4); int32_t * hMem5 = GlobalHandle(pMem2); // 0x1e476cb g2 = (int32_t)hMem5; GlobalFree(hMem5); g2 = 0; result = 0; goto lab_0x1e477c9; } // Address range: 0x1e477d2 - 0x1e47940 int32_t function_1e477d2(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5) { uint32_t v1 = a2 & 0xffff; // 0x1e477d6 int32_t v2 = g4 & -0x10000 | v1; // ebx uint16_t v3 = (int16_t)a3; // 0x1e477db int32_t result; // 0x1e4793d if (v3 != (int16_t)a2) { // 0x1e477ea g5 = a5; uint32_t v4 = a4 & 0xffff; // 0x1e477ef int32_t * v5 = (int32_t *)a5; // 0x1e477f6 uint32_t v6 = *v5 / v4; int32_t v7 = v6 / v1; g7 = v6 % v1; int32_t v8 = v7; // edi int32_t dwBytes = v4 * (a3 & 0xffff) * v7; // 0x1e47807 g2 = dwBytes; *v5 = dwBytes; int32_t * hMem = GlobalAlloc(0x2002, dwBytes); // 0x1e47812 g2 = (int32_t)hMem; int32_t * v9 = GlobalLock(hMem); // 0x1e47819 int32_t v10 = (int32_t)v9; // 0x1e47819 g2 = v10; if (v9 != NULL) { // 0x1e47869 if (v3 > (int16_t)v2) { if ((int16_t)a4 != 1) { // 0x1e4789a g5 = a1; g7 = v10; int32_t v11 = v8; // 0x1e4789f g2 = v11; if (v11 != 0) { uint16_t v12 = *(int16_t *)a1; // 0x1e478a6 g2 = (int32_t)v12 | v11 & -0x10000; *(int16_t *)v10 = v12; int32_t v13 = g7 + 2; // 0x1e478ac int32_t v14 = g5; // 0x1e478af g5 = v14 + 2; *(int16_t *)v13 = *(int16_t *)v14; int32_t v15 = v13 + 2; // 0x1e478b8 g7 = v15; int32_t v16 = v11 - 1; // 0x1e478bb g2 = v16; while (v16 != 0) { // 0x1e478a6 v12 = *(int16_t *)g5; g2 = (int32_t)v12 | v16 & -0x10000; *(int16_t *)v15 = v12; v13 = g7 + 2; v14 = g5; g5 = v14 + 2; *(int16_t *)v13 = *(int16_t *)v14; v15 = v13 + 2; g7 = v15; v16--; g2 = v16; } } } else { // 0x1e47876 g2 = a1; g7 = v10; int32_t v17 = v8; // 0x1e4787b g5 = v17; if (v17 != 0) { unsigned char v18 = *(char *)a1; // 0x1e47886 g5 = (int32_t)v18 | v17 & -256; *(char *)v10 = v18; int32_t v19 = g7 + 1; // 0x1e4788a int32_t v20 = g2; // 0x1e4788b g2 = v20 + 1; *(char *)v19 = *(char *)v20; int32_t v21 = v19 + 1; // 0x1e47890 g7 = v21; int32_t v22 = v17 - 1; // 0x1e47891 g5 = v22; while (v22 != 0) { // 0x1e47886 v10 = v21; v18 = *(char *)g2; g5 = (int32_t)v18 | v22 & -256; *(char *)v10 = v18; v19 = g7 + 1; v20 = g2; g2 = v20 + 1; *(char *)v19 = *(char *)v20; v21 = v19 + 1; g7 = v21; v22--; g5 = v22; } } } } else { // 0x1e478c4 g5 = a1; v2 = v10; int32_t v23 = v8; // 0x1e478ce g2 = v23; v8 = v23 - 1; if ((int16_t)a4 != 1) { if (v23 != 0) { int32_t v24 = a1; // 0x1e47902 int32_t v25 = (int32_t)*(int16_t *)(v24 + 2); // 0x1e478f9 g2 = v25; int32_t v26 = (int32_t)*(int16_t *)v24 + v25; // 0x1e47900 g5 = v24 + 4; int32_t v27 = v26 >> 31; // 0x1e47905 g7 = v27; *(int16_t *)v10 = (int16_t)((v26 - v27) / 2); int32_t v28 = v2 + 2; // 0x1e4790d int32_t v29 = v8; // 0x1e47910 g2 = v29; while (v29 != 0) { // 0x1e478f9 v24 = g5; v25 = (int32_t)*(int16_t *)(v24 + 2); g2 = v25; v26 = (int32_t)*(int16_t *)v24 + v25; g5 = v24 + 4; v27 = v26 >> 31; g7 = v27; *(int16_t *)v28 = (int16_t)((v26 - v27) / 2); v28 += 2; v29--; g2 = v29; } } } else { if (v23 != 0) { int32_t v30 = a1; // 0x1e478e0 int32_t v31 = (int32_t)*(char *)(v30 + 1); // 0x1e478d7 g2 = v31; unsigned char v32 = *(char *)v30; // 0x1e478db g5 = v30 + 2; g7 = 0; *(char *)v10 = (char)(((int32_t)v32 + v31) / 2); int32_t v33 = v2 + 1; // 0x1e478ea int32_t v34 = v8; // 0x1e478eb g2 = v34; while (v34 != 0) { // 0x1e478d7 v30 = g5; v31 = (int32_t)*(char *)(v30 + 1); g2 = v31; v32 = *(char *)v30; g5 = v30 + 2; g7 = 0; *(char *)v33 = (char)(((int32_t)v32 + v31) / 2); v33++; v34--; g2 = v34; } } } } int32_t * pMem = (int32_t *)a1; // 0x1e4791a int32_t * hMem2 = GlobalHandle(pMem); // 0x1e4791a g2 = (int32_t)hMem2; g2 = GlobalUnlock(hMem2); int32_t * hMem3 = GlobalHandle(pMem); // 0x1e4792a g2 = (int32_t)hMem3; GlobalFree(hMem3); g2 = v10; result = v10; } else { // 0x1e47825 if (g484 != 0) { // 0x1e4782e g2 = MessageBoxA(NULL, "Unable to allocate memory for waveform data. Try making more memory available by closing other applications.", "WavMix32", 64); } // 0x1e47842 *(int32_t *)(g9 - 4) = a1; int32_t v35 = (int32_t)GlobalHandle(&g708); // 0x1e47845 g2 = v35; *(int32_t *)(g9 - 4) = v35; g2 = GlobalUnlock(&g708); *(int32_t *)(g9 - 4) = a1; int32_t v36 = (int32_t)GlobalHandle(&g708); // 0x1e47855 g2 = v36; *(int32_t *)(g9 - 4) = v36; GlobalFree(&g708); g2 = 0; result = 0; } } else { // 0x1e477e2 g2 = a1; result = a1; } // 0x1e47939 g6 = *(int32_t *)g9; g8 = *(int32_t *)(g9 + 4); g4 = *(int32_t *)(g9 + 8); g3 = *(int32_t *)(g9 + 12); return result; } // Address range: 0x1e47940 - 0x1e479ca int32_t function_1e47940(int32_t a1, int32_t a2, int32_t a3, int32_t a4, int32_t a5) { int32_t v1 = g6; // 0x1e4794c if (a4 != 1) { // 0x1e4798b if (a5 < 1) { // 0x1e479c1 g6 = v1; return g2; } int64_t v2 = a3; // 0x1e479b3 int32_t v3 = a5; while (true) { // 0x1e47998 g2 = 0; int32_t v4; // 0x1e479b2 if (a3 > 0) { // 0x1e479a4 g5 = a3; int32_t v5 = a2; // 0x1e479ac int32_t v6 = (int32_t)*(int16_t *)v5; // 0x1e479aa g2 = v6; int32_t v7 = a3 - 1; // 0x1e479af g5 = v7; while (v7 != 0) { // 0x1e479a7 v5 += 2 * a5; v6 += (int32_t)*(int16_t *)v5; g2 = v6; v7--; g5 = v7; } v4 = v6; } else { v4 = 0; } int64_t v8 = 0x100000000 * (int64_t)(v4 >> 31) | (int64_t)v4; // 0x1e479b3 int64_t v9 = v8 / v2; // 0x1e479b3 g2 = v9; g7 = v8 % v2; g5 = a1; int32_t v10 = v3 - 1; // 0x1e479b9 *(int16_t *)a1 = (int16_t)v9; if (v10 == 0) { // break -> 0x1e479c1 break; } // 0x1e479b2 v3 = v10; a2 += 2; } // 0x1e479c1 g6 = v1; return g2; } // 0x1e4794f if (a5 < 1) { // 0x1e479c1 g6 = v1; return g2; } int32_t v11 = a5; // edi int64_t v12 = a3; // 0x1e47979 while (true) { // 0x1e47958 g5 = a2; g2 = 0; int32_t v13; // 0x1e47978 if (a3 > 0) { int32_t v14 = a2; // 0x1e47971 int32_t v15 = v14 + a5; // 0x1e47971 g5 = v15; int32_t v16 = (int32_t)*(char *)v14 - 128; // 0x1e47973 g2 = v16; v13 = v16; while (a3 != 1) { // 0x1e47968 a3--; v14 = v15; v15 = v14 + a5; g5 = v15; v16 += (int32_t)*(char *)v14 - 128; g2 = v16; v13 = v16; } } else { v13 = 0; } int64_t v17 = 0x100000000 * (int64_t)(v13 >> 31) | (int64_t)v13; // 0x1e47979 int64_t v18 = v17 / v12; // 0x1e47979 g7 = v17 % v12; unsigned char v19 = (char)v18 ^ -128; // 0x1e4797c g2 = (int32_t)v19 | (int32_t)v18 & -256; g5 = a1; int32_t v20 = v11 - 1; // 0x1e47984 v11 = v20; *(char *)a1 = v19; if (v20 == 0) { // break -> 0x1e479c1 break; } a2++; a1++; } // 0x1e479c1 g6 = v1; return g2; } // Address range: 0x1e479ca - 0x1e47a7f int32_t function_1e479ca(int32_t a1, int32_t a2, uint32_t a3, int32_t a4, int32_t a5) { int32_t v1 = g4; // 0x1e479d4 int32_t v2 = g6; // 0x1e479d6 if (a4 == 1) { // 0x1e479d9 if (a5 < 1) { // 0x1e47a76 g6 = v2; g4 = v1; return g2; } int64_t v3 = a3; // 0x1e479fe int32_t v4 = v1; // 0x1e479f0 int32_t v5 = a5; while (true) { // 0x1e479ea g5 = a1; g2 = a2; unsigned char v6 = *(char *)a2; // 0x1e479f0 int32_t v7 = v6; // 0x1e479f0 int32_t v8 = v7 | v4 & -256; // ebx g2 = (int32_t)*(char *)(a2 + a5) - v7; *(char *)a1 = v6; int32_t v9 = g2; // 0x1e479fd int64_t v10 = 0x100000000 * (int64_t)(v9 >> 31) | (int64_t)v9; // 0x1e479fe int32_t v11 = v10 / v3; // 0x1e479fe g2 = v11; g7 = v10 % v3; int32_t v12 = g5 + a5; // 0x1e47a01 g5 = v12; if (a3 > 1) { // 0x1e47a09 g7 = a3 - 1; int32_t v13 = v8; // 0x1e47a0d unsigned char v14 = (char)v13 + (char)v11; // 0x1e47a0d v8 = (int32_t)v14 | v13 & -256; *(char *)v12 = v14; int32_t v15 = g5 + a5; // 0x1e47a11 g5 = v15; int32_t v16 = g7 - 1; // 0x1e47a13 g7 = v16; while (v16 != 0) { // 0x1e47a0d v13 = v8; v14 = (char)v13 + (char)g2; v8 = (int32_t)v14 | v13 & -256; *(char *)v15 = v14; v15 = g5 + a5; g5 = v15; v16 = g7 - 1; g7 = v16; } } int32_t v17 = v5 - 1; // 0x1e47a19 if (v17 == 0) { // break -> 0x1e47a76 break; } // 0x1e47a16 v4 = v8; a1++; v5 = v17; a2++; } // 0x1e47a76 g6 = v2; g4 = v1; return g2; } // 0x1e47a20 g2 = a2; g5 = a1; if (a5 < 1) { // 0x1e47a76 g6 = v2; g4 = v1; return g2; } int32_t v18 = 2 * a5; // 0x1e47a40 int32_t v19 = a3 - 2; // 0x1e47a6439 int32_t v20 = a5; while (true) { int32_t v21 = a1 + v18; // 0x1e47a40 int32_t v22 = v21; // edi int16_t * v23 = (int16_t *)a2; // 0x1e47a43 int32_t v24 = (int32_t)*v23; // 0x1e47a43 g5 = v24; int32_t v25 = (int32_t)*(int16_t *)v21 - v24; // 0x1e47a49 g2 = (0x100000000 * (int64_t)(v25 >> 31) | (int64_t)v25) / (int64_t)a3; uint16_t v26 = *v23; // 0x1e47a56 g7 = (int32_t)v26 | a2 & -0x10000; *(int16_t *)a1 = v26; if (a3 > 1) { int32_t v27 = g2 + g5; // 0x1e47a6238 g5 = v27; g7 = v19; *(int16_t *)v22 = (int16_t)v27; int32_t v28 = v22 + v18; // 0x1e47a6844 if (v19 != 0) { int32_t v29 = g2 + g5; // 0x1e47a62 g5 = v29; int32_t v30 = g7 - 1; // 0x1e47a64 g7 = v30; *(int16_t *)v28 = (int16_t)v29; int32_t v31 = v28 + v18; // 0x1e47a68 while (v30 != 0) { // 0x1e47a62 v29 = g2 + g5; g5 = v29; v30 = g7 - 1; g7 = v30; *(int16_t *)v31 = (int16_t)v29; v31 += v18; } } } int32_t v32 = v20 - 1; // 0x1e47a71 if (v32 == 0) { // break -> 0x1e47a76 break; } v20 = v32; a2 += 2; a1 += 2; } // 0x1e47a76 g6 = v2; g4 = v1; return g2; }