int global29;// 4 bytes char Sleep[0] = "\xffffff94\xffffffd2"; int global37[1]; char global36[0] = "\xffffffff\xffffffff\xffffffff\xffffffff\xffffffa0X@"; int global35; char GetAtomNameA[0] = ""; char GetLastError[0] = "\x10\xffffffd2"; char TlsAlloc[0] = "\xffffff9c\xffffffd2"; char AddAtomA[0] = "\xffffffc4\xffffffd1"; char global25[0] = ""; char global24[0] = "\xffffffff\xffffffff\xffffffff\xffffffff"; char global23[0]; char global22[0]; char global21[0]; char global20[0] = "\xffffffff\xffffffff\xffffffff\xffffffff"; char global19[0] = ""; char global18[0]; char global17[0] = "\xffffffff\xffffffff\xffffffff\xffffffff"; char global16[0] = ""; char global15[0]; char global14[0]; char FindAtomA[0] = "\xfffffff4\xffffffd1"; char global12[0] = "2"; char * global11; char * global10; char * global9; char * global8; char * global7; char * global6; char * global5; char * global4; int global3; int global2; int global1;// 4 bytes char _iob[0] = "H\xffffffd3"; char TlsGetValue[0] = "\xffffffb4\xffffffd2"; char SetLastError[0] = "d\xffffffd2"; char TlsSetValue[0] = "\xffffffc4\xffffffd2"; char ReleaseSemaphore[0] = "P\xffffffd2"; char atexit[0] = "\xffffff80\xffffffd3"; int global41; char WaitForSingleObject[0] = "\xffffffd4\xffffffd2"; char memset[0] = "\xfffffff4\xffffffd3"; char abort[0] = "x\xffffffd3"; char InterlockedIncrement[0] = "8\xffffffd2"; char InterlockedDecrement[0] = " \xffffffd2"; char strcmp[0] = " \xffffffd4"; char fwrite[0] = "\xffffffdc\xffffffd3"; char _vsnprintf[0] = "h\xffffffd3"; char fprintf[0] = "\xffffffb0\xffffffd3"; char exit[0] = "\xffffff8c\xffffffd3"; char ftell[0] = "\xffffffd4\xffffffd3"; char fseek[0] = "\xffffffcc\xffffffd3"; char free[0] = "\xffffffc4\xffffffd3"; char malloc[0] = "\xffffffe8\xffffffd3"; char printf[0] = ""; char puts[0] = "\f\xffffffd4"; char fopen[0] = "\xffffffa8\xffffffd3"; char _assert[0] = "0\xffffffd3"; char fread[0] = "\xffffffbc\xffffffd3"; char fclose[0] = "\xffffff94\xffffffd3"; void proc1(int param1, int param2); int proc2(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13); int proc3(int param1, int param2, int param3, int param4, int param5, int param6); void __imp_printf(int param1); short proc5(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11); short proc6(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26, int param27); int proc7(int param1, int param11); void __imp_puts(int param1); int proc9(int param1, int param2, int param13); int proc10(int param1, int param2, int param3); int proc11(int param1, int param9); void __imp_fopen(int param1, int param2); int proc13(int param1, int param2, int param3, int param4); int proc14(int param1); int proc15(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26); void __imp__assert(int param1); void __imp_fread(int param1, int param2, int param3, int param4); void __imp_fclose(int param1); void __imp_strcmp(int param1, int param2); void __imp_fwrite(int param1, int param2, int param3, int param4); void __imp__vsnprintf(int param1, int param2, int param3, int param4); void __imp_fprintf(int param1, int param2); void __imp_exit(int param1); void __imp_ftell(int param1); void __imp_fseek(int param1, int param2, int param3); int proc26(int param1, int ??, short ??, char param4, char ??, int ??, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int ??, int param17, int ??, int ??, int ??, int ??, int param22, int param23, int param24, int param25, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int param46, int param47, int param48, int param49, int param50, int param51, int param52, int param53, int param54, int param55, int param56, int param57, int param58, int param59, int ??, int param61, int ??, int param63, int ??, int param65, int param66, int param67); void __imp_free(int param1); void __imp_malloc(int param1); int proc29(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12); void proc30(int param1, int ??, int ??, int param4, int ??, int ??, int param7, int param8, int param9, char param10, char param11, int param12, int param13, int param14, int param15, int param75, int param76, int param77); void proc31(int param1); int proc32(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10); char proc33(char param1, int param2, int param3, int param4, int param5); int proc34(short param1, char param2, char param3, int param4, int param5, int local38, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15); int proc35(int ??, int param2, int ??, int ??, int ??, int ??, int param7, int ??, int param9, int ??, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int ??, int ??, int ??, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int ??, int param47, int ??, int param49, int param50); int proc36(short param1, char param2, int param3, char param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14); int proc37(int param1, int param2, int param3, short param4, char param5, char param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int ??, int param47, int param48); int proc38(int param1, int ??, int ??, int ??, int param5, int param6, int param7, int param8, int param9, int param10, char param11, char param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int param46, int param47, int param48, int param49, int param50, int param51, int param52, int param53, int param54, int param55, int param56, int param57, int param58, int param59, int param60, int param61, int param62, int param63, int param64, int param65, int param66, int param67, int param68, int param69, int param70, int param71); void __imp_memset(int param1, int param2, int param3); int proc40(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10); void proc41(int param1); char proc42(int param1, char param2); LPVOID proc43(int param1); int proc44(int param1, int param2); int proc45(int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param33, int ??, int ??, int param36, int ??, int ??, int param39, int ??, int param42, int param43, int param44, int param45, int param46, int param47, int param48, int param49, int param50, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param74, int param75, int param76, int param77, int param78, int param79, int param80, int param81, int param82, int param83, int param84, int param85, int param86, int param87, int param88, int param89, int param90, int param100, int param101, int param102, int param115, int param116, int param117, int ??, int ??, int param121, int ??, int ??, int param126, int ??, int ??, int param129, int ??, int param131, int param133); int proc46(int param1, int param2); int proc47(int ??, int ??, int param3, int ??, int ??, int ??, int ??, int ??, int ??, int param10, int param11, int param12, int param13, int param14, char param15, char param16, char param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int ??, int ??, int ??, int param46, int param47, int param48, int param49, int param50, int param51, int param52, int param53, int param54, int param55, int param56, int param57, int param58, int param59, int param60, int ??, int ??, int ??, int param64, int param65, int param66, int param67, int param68, int param69, int param70, int param71, int param72, int param73, int param74, int param75, int param76, int param77, int param78, int param79, int param80, int param81, int param82, int param83, int ??, int ??, int param86, int param87, int ??, int ??, int ??, int ??, int ??, int param93, int param94, int param95); int proc48(int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param39, char param40, char param41, int param42, int param43, int param44, int param45, int param46, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param64, int param65, int param66, int param67, int param68, int param69, int param70, int param71, int param72, int param73, int param74, int param75, int param76, int param77, int param78, int param79, int param80, int param81, int param82, int param83, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param91, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param99, int ??, int ??, int ??, int ??, int ??, int ??, int ??, int param107, int ??, int param109, int param110); int proc49(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14); int proc50(int param1, int param2); int proc51(short param1, int param2, int param3, int param4, int param5, int param6, int param7, int param15); void __imp_abort(); int proc53(); void __imp_InterlockedIncrement(int param1); char proc55(); int proc56(short param15, char param16, int param17, int param18, int param19, int param20, int param21, int param22, int param30, int param31, int param32, int ??, int ??, int ??, int param40, int param44); int proc57(int param1, int param2, int param3, int param4, int param5, int param6, char param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20); void __imp_InterlockedDecrement(int param1); int proc59(int param1, int param2, short param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param18); void proc60(char param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8); int proc61(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9); void proc62(int param4, int param5, char param6, int param7, int param8, int param9, int param10, int param11, int param12, int param32); int proc63(); int proc64(char param1, int param2, int param3, int param4); int proc65(int param1, char param2, char param3, char param4, int param5, int param6, int param7, int ??, int param9); char proc66(int param1, int param2, int param3, int param4); int proc67(char param1, char param2, int param3, int param4, int param5, int param6); int proc68(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11); int proc69(); int proc70(); char proc71(int param1, int param2, int param3); // address: 0x4012e0 int main(int argc, char **argv, char **envp) { char local0; // m[r29 - 98]{70} char local1; // m[r29 - 97]{94} int local10; // r28{242} int local11; // r28{113} int local12; // r29{36} int local13; // r29{113} int local14; int local15; // m[r28 + 4]{18} int local16; // m[r28 - 4]{18} int local17; int local18; int local19; // m[r29 - 88]{18} int local2; // r28{36} int local20; // m[r29 - 96]{18} int local21; // m[r29 - 97]{18} int local22; // m[r29 - 98]{18} int local23; // m[r29 - 99]{18} int local24; // m[r28]{18} int local25; // global1 int local26; // r29{243} short local27; // r0 char local28; // r8 char local29; // r10 void *local3; // %pc{18} int local30; // r24 int local31; // r25 int local32; // r26 int local33; // r27 int local34; // r28 int local35; // r29 int local36; // r30 int local37; // r31 int local4; // r28{162} int local5; // r28{152} int local6; // r28{143} int local7; // r28{124} int local8; // r26{205} int local9; // r28{18} *(int*)(local34 - 4) = local35; *(int*)(local34 - 8) = local37; *(int*)(local34 - 12) = local36; *(int*)(local34 - 16) = local33; local36 = proc1(pc, local33, local36, local37, *(int*)(local11 - 4), local35, *(int*)(local11 + 4), *(int*)(local2 + 4), 16, 16, local33, local34 - 4, local36, local37, *(int*)(local25 + 4), *(int*)(local25 + 8), *(int*)(local25 + 20), *(int*)(local25 + 24), *(int*)(local25 + 28), *(int*)(local25 + 32), *(int*)(local25 + 40), *(int*)(local25 + 44), *(int*)(local25 + 48), *(int*)(local25 + 52), *(int*)(local25 + 56), *(int*)(local25 + 60), *(int*)(local25 + 64), *(int*)(local25 + 68), *(int*)(local25 + 72), *(int*)(local25 + 76), *(int*)(local25 + 80), *(int*)(local32 + local10 - 132), *(int*)(local32 + local10 - 224), *(int*)(local32 + local10 - 336), *(int*)(*(int*)(local12 + 12) + local2 - 140), *(int*)(*(int*)(local12 + 12) + local2 - 144), *(int*)(*(int*)(local12 + 12) + local2 - 232), *(int*)(*(int*)(local12 + 12) + local2 - 236), *(int*)(*(int*)(local12 + 12) + local2 - 344), *(int*)(*(int*)(local12 + 12) + local2 - 348), *(int*)(local25 + local2 - 232), *(int*)(local25 + local2 - 236), *(int*)(local25 + local2 - 324), *(int*)(local25 + local2 - 328), *(int*)(local25 + local2 - 436), *(int*)(local25 + local2 - 440), *(int*)(local25 + local9 - 132), *(int*)(local25 + local9 - 224), *(int*)(local25 + local9 - 336), *(int*)(local13 - 88), *(int*)(local13 - 96), *(int*)(local12 - 88), *(int*)(local12 - 96), *(int*)(local12 - 97), *(int*)(local12 - 98), *(int*)(local12 - 99), *(int*)local11, *(int*)local25, SUBFLAGS32(local34 - 16, 108, local34 - 124), ZF, (unsigned)(local34 - 16) < 108); /* Warning: also results in local27, local31, local33, local9, local35, local37 */ *(int*)(local35 - 68) = 0x402060; *(int*)(local35 - 64) = 0x4058c4; *(int*)(local35 - 60) = local35 - 24; *(int*)(local35 - 56) = 0x401433; *(int*)(local35 - 52) = local9; *(int*)local9 = local35 - 92; *(int*)(local9 - 4) = local3; local30 = proc2(local27, (unsigned char) local35 - 92, local31, local33, local35, local36, local37, *(int*)(local25 + 40), *(int*)(local25 + 44), *(int*)(local25 + 48), *(int*)(local25 + 52), local35 - 92, ); /* Warning: also results in local36, local27, local32, local33, local35, local37 */ *(int*)(local34 - 4) = local3 + 0x35cb; local36 = proc3(local32, local33, local35, local36, , global37[(local30 + 1)]); /* Warning: also results in local33, local2, local12 */ local26 = local12; local26 = local12; if (*(int*)(local12 + 8) > 1) { *(char*)(local12 - 97) = 0; *(char*)(local12 - 98) = 0; *(char*)(local12 - 99) = 0; local32 = 1; local29 = 1; if (1 >= *(int*)(local12 + 8)) { L10: local30 = *(int*)(*(int*)(local12 + 12) + 4); *(int*)(local2 + 4) = local30; *(int*)local2 = local12 - 40; *(int*)(local12 - 88) = -1; *(int*)(local2 - 4) = local3 + 0x66f1; local27 = proc6(local30, local27, (unsigned char) local30, local33, local12, local36, local37, *(int*)(local25 + 4), *(int*)(local25 + 8), *(int*)(local25 + 20), *(int*)(local25 + 24), *(int*)(local25 + 28), *(int*)(local25 + 32), *(int*)(local25 + 40), *(int*)(local25 + 44), *(int*)(local25 + 48), *(int*)(local25 + 52), *(int*)(local25 + 56), *(int*)(local25 + 60), *(int*)(local25 + 64), *(int*)(local25 + 68), *(int*)(local25 + 72), *(int*)(local25 + 76), *(int*)(local25 + 80), local12 - 40, *(int*)local25, ); /* Warning: also results in local33, local11, local13, local37 */ local26 = local13; if (*(int*)(local13 - 97) == 0) { if (*(int*)(local13 - 98) == 0) { *(int*)local11 = local13 - 40; *(int*)(local13 - 88) = 1; *(int*)(local11 - 4) = local3 + 0x6866; local31 = proc11(local13 - 40, ZF); /* Warning: also results in local32 */ } else { local30 = *(unsigned char*)(local13 - 99); local30 = *(int*)(*(int*)(local13 + 12) + local30 * 4); *(int*)(local11 + 4) = local30; *(int*)local11 = local13 - 40; *(int*)(local13 - 88) = 1; *(int*)(local11 - 4) = local3 + 0x6866; local31 = proc9(local30, local13 - 40, ZF); /* Warning: also results in local32 */ } } else { *(int*)local11 = local13 - 40; *(int*)(local13 - 88) = 1; *(int*)(local11 - 4) = local3 + 0x6866; local31 = proc7(local13 - 40, ZF); /* Warning: also results in local32 */ } *(int*)(local11 - 4) = local3 + 0x6866; *(int*)(local13 - 88) = 1; *(int*)local11 = local13 - 40; if (*(int*)(local13 - 36) != 0) { *(int*)local11 = *(int*)(local13 - 36); local31 = proc10(local31, local32, *(int*)(local13 - 36)); /* Warning: also results in local32 */ } local34 = local11; *(int*)(local13 - 96) = 1; } else { do { local30 = *(int*)(*(int*)(local12 + 12) + local32 * 4); if (*(int*)local30 == 45) { if (*(int*)(local30 + 1) != 111) { local30 = *(int*)(*(int*)(local12 + 12) + local32 * 4); if (*(int*)(local30 + 1) == 120) { local1 = 1; goto L11; } goto L11; } local0 = 1; *(char*)(local12 - 99) = local29 + 1; if ((local29 + 1) >= *(int*)(local12 + 8)) { *(int*)local2 = 0x407094; *(int*)(local2 - 4) = local3 + 0x66f1; puts("you have to add a filename to option -o\nlike: unpackkyra A_E.PAK -o ALGAE.CPS"); *(int*)(local12 - 96) = 0; goto L1; } local32++; goto L11; } L11: local8 = local32; local32 = local8 + 1; local29 = (unsigned char) local8 + 1; } while (local8 + 1 < *(int*)(local12 + 8)); goto L10; } } else { local30 = *(int*)*(int*)(local12 + 12); *(int*)(local2 + 4) = local30; *(int*)local2 = 0x407000; *(int*)(local12 - 88) = -1; *(int*)(local2 - 4) = local3 + 0x66f1; printf(local30, "Use:\n%s filename [OPTIONS]\nHere are the options, default is listing files to stdout\n-o xxx Extract only file 'xxx'\n-x Extract all files\n"); *(int*)(local12 - 96) = 0; } L1: local10 = local34; local35 = local26; *(int*)(local2 - 4) = local3 + 0x66f1; *(int*)local10 = local35 - 92; local35 = proc5(local27, (unsigned char) local35 - 92, local31, local33, local35, local37, *(int*)(local25 + 44), *(int*)(local25 + 48), *(int*)(local25 + 52), local35 - 92, ); return *(int*)(local35 - 96); } // address: 0x405330 void proc1(int param1, int param2) { int local0; // r25{30} int local1; // m[r25 - 0x1000]{34} int local2; // m[r25 - 0x1000]{13} int local3; // r28 L-1: *(int*)(local3 - 4) = param2; param2 = local3 + 4; L-1: local0 = param2; local1 = *(int*)(local0 - 0x1000); if ((unsigned)param1 < 0x1000) { L-1: /* goto m[r28]*/ } L-1: param2 = local0 - 0x1000; local2 = *(int*)(local0 - 0x1000); param1 = param1 - 0x1000; goto L-1; } // address: 0x4048e0 int proc2(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13) { int local0; // r24{76} int local1; // r28{76} int local10; // r28 DWORD local2; // r24{61} int local3; // r28{67} int local4; // r28{61} int local5; // r28{5} int local6; // r28{109} int local7; // r28{151} BOOL local8; // r24 int local9; // r26 *(int*)(local10 - 4) = param6; param6 = local10 - 4; local5 = local10 - 28; *(int*)(local10 - 8) = param8; param8 = param1; *(int*)(local10 - 16) = param5; *(int*)(local10 - 12) = param7; local6 = local5; local7 = local5; if (global1 == 0) { param2 = proc32(param2, param3, param4, param5, local10 - 4, param7, param1, param10, param11, param13); /* Warning: also results in param3, param4, param6, param8 */ local6 = local10; local7 = local10; if (param10 >= 0) { L8: local10 = local6; if (param10 != 0) { L6: local2 = GetLastError(); *(int*)local10 = param11; *(int*)(local10 - 4) = GetLastError; local8 = TlsGetValue(param11); *(int*)local10 = local2; *(int*)(local10 - 4) = TlsGetValue; SetLastError(local2); *(int*)param8 = local8; *(int*)local10 = param11; *(int*)(local10 - 4) = SetLastError; local8 = TlsSetValue(param8, param11); if (local8 == 0) { /* goto GetLastError*/ } } else { L7: local9 = global1; local8 = param9; *(int*)param8 = param9; } } else { L11: local10 = local7; param3 = proc33(param3, param4, param10, param12, *(int*)(global1 + 56)); /* Warning: also results in param4 */ if (param10 == 0) { goto L7; } else { goto L6; } } } else { if (param10 < 0) { goto L11; } else { goto L8; } } return local8; /* WARNING: Also returning: *(int*)(param6 - 8), param2, param3, param4, local9, *(int*)(param6 - 12), *(int*)param6, *(int*)(param6 - 4) */ } // address: 0x404440 int proc3(int param1, int param2, int param3, int param4, int param5, int param6) { int local0; // r24{100} int local1; // r24{76} int local10; // m[r28]{32} int local11; // r24{27} int local12; // r28{27} int local13; int local14; // m[r28 - 8]{27} int local15; // m[r28 - 12]{27} int local16; int local17; // m[r28 - 4]{27} int local18; // m[r28]{27} int local19; // global35{27} int local2; // r28{68} int local20; // global36{27} int local21; // global37{27} int local22; // r27{27} char local23[0]; // r24{64} int local24; // m[r28 - 4]{105} int local25; // m[r28 - 8]{106} int local26; // m[r28 - 12]{123} int local27; // m[r28 - 4]{107} int local28; // m[r28]{109} int local29; // %pc{73} int local3; // m[r28 - 4]{111} int local30; // m[r28 - 4]{25} char local31[0]; // r24{59} int local32; // r28{7} int local33; // m[r28 - 4]{1} int local34; // m[r28 - 8]{4} int local35; // m[r28 - 12]{36} int local36; int local37; // m[r28 - 4]{36} int local38; // m[r28]{36} int local39; // global35{15} int local4; // m[r28 - 8]{112} int local40; // global36{36} void *local41; // %pc{27} char local42[0]; // r24{13} int local43; // global35{36} int local44; // m[r28 - 4] int local45; // r24{46} int local46; // r24{52} int local47; // local31{59} int local48; // local23{64} int local49; // local2{68} int local5; // m[r28 - 12]{128} void *local50; // local29{73} int local51; // local24{105} int local52; // local25{106} int local53; // local27{107} int local54; // local28{109} int local55; // global35{110} int local56; // local26{123} int local57; // global35{124} int local58; // global36{125} int local59; // global37{126} int local6; // m[r28 - 4]{114} int local60; // local1{76} int local61; // local9{80} void *local62; // %pc{85} int local63; // local3{111} int local64; // local4{112} int local65; // local6{114} int local66; // global35{116} int local67; // local5{128} int local68; // global35{129} int local69; // global36{130} int local7; // global37{36} int local70; // global37{131} int local71; // r28{92} int local72; // global35{122} int local73; // global35{134} int local74; // global36{135} int local75; // global37{136} int local76; // local0{100} int local77; // r24 int local78; // r25 int local79; // r28 int local8; // m[r28 - 4]{34} int local9; // r28{80} local65 = *(int*)(local2 - 4); local54 = *(int*)local9; local53 = *(int*)(local9 - 4); local33 = param3; param3 = local79 - 4; local34 = param2; local32 = local79 - 12; local49 = local32; local51 = local33; local52 = local34; local56 = *(int*)(local79 - 12); local58 = global36; local59[0] = global37; local61 = local32; local63 = local33; local64 = local34; local67 = *(int*)(local79 - 12); local69 = global36; local70[0] = global37; local71 = local32; local72 = global35; local73 = global35; local74 = global36; local75[0] = global37; if (global35 == 0) { local42 = global36; local78 = 1; local39 = 1; local47 = local42; local55 = local39; local57 = local39; local66 = local39; local68 = local39; if (global36 == -1) { local45 = 0; flags = SUBFLAGS32(global37, 0, global37); local76 = local45; local0 = local76; local47 = local0; while (flags) { local46 = local0 + 1; param1 = global37[(local0 + 1)]; flags = LOGICALFLAGS32(global37[(local0 + 1)]); local76 = local46; local0 = local76; local47 = local0; } } local31 = local47; flags = LOGICALFLAGS32(local31); param2 = local31; local48 = local31; local60 = local31; if (local31 != 0) { do { local23 = local48; local2 = local49; local29 = local50; local24 = local51; local25 = local52; local27 = local53; local28 = local54; global35 = local55; local26 = local56; global35 = local57; global36[0] = local58; global37[0] = local59; local30 = local29; (**(int*)(param2 * 4 + 0x4058b0))(local26, local25, local24, local27, local29, local23, local78, param1, param2, param3, param4, local28, param5, param6, global37[(local0 + 1)], flags, CF); local48 = local11; local49 = local12; local50 = local41; local51 = local13; local52 = local14; local53 = local16; local54 = local18; local55 = local19; local56 = local15; local57 = local19; local58 = local20; local59 = local21; local60 = local11; local61 = local12; local62 = local41; local63 = local13; local64 = local14; local65 = local17; local66 = local19; local67 = local15; local68 = local19; local69 = local20; local70 = local21; param2 = local22 - 1; flags = LOGICALFLAGS32(local22 - 1); } while (local22 - 1 != 0); } local1 = local60; local9 = local61; local3 = local63; local4 = local64; local6 = local65; global35 = local66; local5 = local67; global35 = local68; global36[0] = local69; global37[0] = local70; local10 = 0x4043b0; param4 = proc31(local5, local4, local3, pc, local6, local1, local78, param1, param2, param3, param4, 0x4043b0, param5, param6, global37[(local0 + 1)], flags, CF); /* Warning: also results in global37[(local0 + 1)] */ local71 = local79; local72 = local43; local73 = local43; local74 = local40; local75 = local7; } local79 = local71; global35 = local72; global35 = local73; global36[0] = local74; global37[0] = local75; return param4; /* WARNING: Also returning: *(int*)(local79 + 4), *(int*)(local79 + 8) */ } // address: 0x4056b0 void __imp_printf(int param1) { int local3; // r28 printf(param1); return; } // address: 0x4049c0 short proc5(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11) { int local0; // r28{7} int local1; // r28{76} int local2; // r28{118} BOOL local3; // r24 int local4; // r26 int local5; // r28 int local6; // r30 *(int*)(local5 - 4) = param6; param6 = local5 - 4; *(int*)(local5 - 8) = param5; local0 = local5 - 28; param5 = *(short*)param1; local1 = local0; local2 = local0; if (global1 == 0) { param2 = proc32(param2, param3, param4, param5, local5 - 4, local6, param7, param8, param9, param11); /* Warning: also results in param3, param5, param6 */ local1 = local5; local2 = local5; if (param8 >= 0) { L5: param4 = param8; local5 = local1; if (param8 != 0) { L3: *(int*)local5 = param9; local3 = TlsSetValue(param5, param9); if (local3 == 0) { /* goto GetLastError*/ } } else { L4: local4 = param8; } } else { L7: local5 = local2; param3 = proc33(param3, param8, param8, param10, *(int*)(global1 + 56)); /* Warning: also results in param4 */ if (param8 == 0) { goto L4; } else { goto L3; } } } else { if (param8 < 0) { goto L7; } else { goto L5; } } return param2; /* WARNING: Also returning: param3, param4, local4, *(int*)param6 */ } // address: 0x401530 short proc6(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26, int param27) { int local0; // r24{27} int local1; // r24{33} int local10; // r28{27} int local11; // r28{17} int local12; // %pc{16} int local13; // r24{75} int local14; // local8{79} int local15; // %pc{81} int local16; // %pc{86} FILE *local17; // r24 int local18; // r25 int local19; // r26 int local2; // r24{60} int local20; // r28 int local3; // r24{65} int local4; // r28{60} int local5; // r24{50} int local6; // r28{50} int local7; // %pc{38} int local8; // r28{79} int local9; // r28{33} *(int*)(local20 - 4) = param6; param6 = ¶m6; *(int*)(local20 - 16) = param5; *(int*)(local20 - 12) = param7; *(int*)(local20 - 8) = param8; *(int*)(local20 - 40) = 0x4070e2; *(int*)(local20 - 44) = param2; local17 = fopen(param2, "rb"); local13 = local17; local14 = local11; local15 = local12; param5 = local17; if (local17 == NULL) { *(int*)(local20 - 40) = param2; *(int*)(local20 - 44) = 0x4070e5; local0 = proc13(0x4070e5, local17, local20 - 4, *(int*)(_iob + 64)); /* Warning: also results in param5, local10, param6 */ local13 = local0; local14 = local10; } local17 = local13; local8 = local14; *(int*)param1 = 1; *(int*)local8 = local17; local1 = proc14(local17); /* Warning: also results in local18 */ *(int*)(param1 + 8) = local1; *(int*)local8 = local1; local17 = proc15(param3, param4, local18, param5, param6, param1, param2, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20, param21, param22, param23, param24, param25, param26, param27); /* Warning: also results in param7, param3, param5, param6 */ local16 = local7; *(int*)(param7 + 4) = local17; if (local17 == NULL) { *(int*)local20 = 0x40710e; _assert(0x40710e); } *(int*)(local20 + 12) = param5; *(int*)local20 = local17; fread(*(int*)(param7 + 8), 1, param5, local17); *(int*)local20 = param5; fclose(param5); return param3; /* WARNING: Also returning: *(int*)(param6 - 12), *(int*)param6, *(int*)(param6 - 4) */ } // address: 0x4017b0 int proc7(int param1, int param11) { int local10; // m[r28 - 24] int local14; // r24{128} int local15; // %pc{109} int local17; // r30{168} int local18; // r24{78} int local19; // r25{56} int local20; // r26{28} int local21; // %pc{198} int local22; // r25{203} FILE *local23; // r24 int local24; // r25 int local25; // r26 int local26; // r27 int local27; // r28 int local28; // r30 local24 = *(int*)(param1 + 4); local25 = *(unsigned char*)(local24 + 3); local23 = *(unsigned char*)(local24 + 2); local20 = local25 * 0x1000000 + local23 * 0x10000; local23 = *(unsigned char*)(local24 + 1); local25 = local20 + local23 * 256; local23 = local20 + local23 * 256 + *(unsigned char*)local24; local10 = local23; local28 = local24 + 4; for(;;) { local17 = local28; local24 = -1; do { if (local24 == 0) { goto L11; } local24 = local24 - 1; } while ( !param11); L11: local19 = !local24; local22 = local19; if (*(int*)local17 == 0) { goto L0; } local24 = local17 + !local24 - 1; local25 = *(unsigned char*)(local24 + 4); local23 = *(unsigned char*)(local24 + 3); local25 = local25 * 0x1000000 + local23 * 0x10000; local18 = *(unsigned char*)(local24 + 2); local23 = *(unsigned char*)(local24 + 1); local26 = local25 + local18 * 256 + local23; if ((unsigned)*(int*)(param1 + 8) >= (unsigned)local26) { if (local26 == 0) { local26 = *(int*)(param1 + 8); goto L6; } } else { local26 = *(int*)(param1 + 8); } L6: local28 = local24 + 5; local23 = fopen(local17, "wb"); local21 = local15; if (local23 != NULL) { local14 = local10 + *(int*)(param1 + 4); fwrite(local14, local26 - local10, 1, local23); fclose(local23); } local22 = local24; if (*(int*)(param1 + 8) == local26) { L0: local24 = local22; return local24; /* WARNING: Also returning: local25 */ } local10 = local26; } } // address: 0x4056a0 void __imp_puts(int param1) { int local3; // r28 puts(param1); return; } // address: 0x401696 int proc9(int param1, int param2, int param13) { int local10; // m[r28 - 24] int local12; // r24{140} int local15; // r27{186} int local16; // r24{78} FILE *local17; // r24 int local18; // r25 int local19; // r26 int local20; // r27 int local21; // r28 int local22; // r31 local18 = *(int*)(param1 + 4); local19 = *(unsigned char*)(local18 + 3); local17 = *(unsigned char*)(local18 + 2); local19 = local19 * 0x1000000 + local17 * 0x10000; local17 = *(unsigned char*)(local18 + 1); local17 = local19 + local17 * 256 + *(unsigned char*)local18; local10 = local17; local20 = local18 + 4; for(;;) { local15 = local20; local22 = local15; local18 = -1; do { if (local18 == 0) { goto L14; } local22++; local18 = local18 - 1; } while ( !param13); L14: if (*(int*)local15 == 0) { L1: printf("File '%s' not found in this pakfile\n", param2); goto L0; } local18 = local15 + !local18 - 1; local19 = *(unsigned char*)(local18 + 4); local17 = *(unsigned char*)(local18 + 3); local19 = local19 * 0x1000000 + local17 * 0x10000; local16 = *(unsigned char*)(local18 + 2); local17 = *(unsigned char*)(local18 + 1); local22 = local19 + local16 * 256 + local17; if ((unsigned)*(int*)(param1 + 8) >= (unsigned)local22) { if (local22 == 0) { local22 = *(int*)(param1 + 8); goto L9; } } else { local22 = *(int*)(param1 + 8); } L9: local20 = local18 + 5; local17 = strcmp(local15, param2); if (local17 == NULL) { break; } if (*(int*)(param1 + 8) == local22) { goto L1; } local10 = local22; } local17 = fopen(param2, "wb"); if (local17 != NULL) { local12 = local10 + *(int*)(param1 + 4); fwrite(local12, local22 - local10, 1, local17); fclose(local17); } L0: return local18; /* WARNING: Also returning: local19 */ } // address: 0x4027e0 int proc10(int param1, int param2, int param3) { int local4; // r28 if (param1 != 0) { free(param1); } return param2; /* WARNING: Also returning: param3 */ } // address: 0x4015d8 int proc11(int param1, int param9) { int local11; // r30{146} int local12; // r24{78} int local13; // r25{56} int local14; // r26{28} int local15; // r25{172} int local16; // r24 int local17; // r25 int local18; // r26 int local19; // r27 int local20; // r28 int local21; // r30 int local9; // m[r28 - 24] local17 = *(int*)(param1 + 4); local18 = *(unsigned char*)(local17 + 3); local16 = *(unsigned char*)(local17 + 2); local14 = local18 * 0x1000000 + local16 * 0x10000; local16 = *(unsigned char*)(local17 + 1); local18 = local14 + local16 * 256; local16 = local14 + local16 * 256 + *(unsigned char*)local17; local9 = local16; local21 = local17 + 4; for(;;) { local11 = local21; local17 = -1; do { if (local17 == 0) { goto L8; } local17 = local17 - 1; } while ( !param9); L8: local13 = !local17; local15 = local13; if (*(int*)local11 == 0) { break; } local17 = local11 + !local17 - 1; local18 = *(unsigned char*)(local17 + 4); local16 = *(unsigned char*)(local17 + 3); local18 = local18 * 0x1000000 + local16 * 0x10000; local12 = *(unsigned char*)(local17 + 2); local16 = *(unsigned char*)(local17 + 1); local19 = local18 + local12 * 256 + local16; if ((unsigned)*(int*)(param1 + 8) >= (unsigned)local19) { if (local19 == 0) { local19 = *(int*)(param1 + 8); goto L3; } } else { local19 = *(int*)(param1 + 8); } L3: local21 = local17 + 5; printf("Filename: %s size: %d\n", local11, local19 - local9); local15 = local17; if (*(int*)(param1 + 8) == local19) { break; } local9 = local19; } local17 = local15; return local17; /* WARNING: Also returning: local18 */ } // address: 0x4056c0 void __imp_fopen(int param1, int param2) { int local3; // r28 fopen(param1, param2); return; } // address: 0x4018a0 int proc13(int param1, int param2, int param3, int param4) { int local0; // m[r28 - 0x41c]{31} char *local6; // r24 char *local9; // r28 *(int*)(local9 - 4) = param3; *(int*)(local9 - 8) = param2; *(int*)(local9 - 1040) = local9 + 8; *(int*)(local9 - 1044) = param1; *(int*)(local9 - 1048) = 1024; *(char **)(local9 - 1052) = local9 - 1036; _vsnprintf(local9 - 1036, 1024, param1, local9 + 8); *(int*)(local9 - 1044) = local9 - 1036; *(int*)(local9 - 1048) = 0x407160; *(int*)(local9 - 1052) = _iob + 64; fprintf(_iob + 64, "ERROR: %s!\n", local9 - 1036); local0 = 1; exit(1); *(int*)(local9 - 1056) = local9 - 4; *(int*)(local9 - 1060) = local9 - 1036; *(int*)(local9 - 0x82c) = local9 - 1044; *(int*)(local9 - 0x830) = 0x407160; *(int*)(local9 - 0x834) = 1024; *(char **)(local9 - 0x838) = local9 - 0x828; _vsnprintf(local9 - 0x828, 1024, "ERROR: %s!\n", local9 - 1044); *(int*)(local9 - 0x830) = local9 - 0x828; *(int*)(local9 - 0x834) = 0x40716c; *(int*)(local9 - 0x838) = _iob + 64; local6 = fprintf(_iob + 64, "WARNING: %s!\n", local9 - 0x828); return local6; /* WARNING: Also returning: local9 - 1036, local9 - 4 */ } // address: 0x401bc1 int proc14(int param1) { int local13; // r24 int local14; // r25 int local16; // r28 int local9; // r24{15} local9 = ftell(param1); fseek(param1, 0, 2); local13 = ftell(param1); fseek(param1, local9, 0); return local13; /* WARNING: Also returning: local14 */ } // address: 0x402740 int proc15(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int param23, int param24, int param25, int param26) { int local0; // r29{21} int local1; // r10 int local2; // r24 int local3; // r26 int local4; // r28 *(int*)(local4 - 4) = param5; *(int*)(local4 - 36) = local4 - 16; *(int*)(local4 - 92) = local4 - 68; param2 = param4; *(int*)(local4 - 12) = param6; param3 = param7; *(int*)(local4 - 44) = 0x402060; *(int*)(local4 - 40) = 0x4058ec; *(int*)(local4 - 32) = 0x4027a8; *(int*)(local4 - 28) = local4 - 92; param6 = proc2(local4 - 68, param1, param2, param3, param4, local4 - 4, param6, param7, param14, param15, param16, param17, param26); /* Warning: also results in param1, param2, param3, local3, param4, local0, param7 */ *(int*)(local0 - 60) = 1; *(int*)local4 = *(int*)(local0 + 8); local2 = proc26(*(int*)(local4 + 4), *(int*)(local4 + 8), param1, param2, local1, param3, param4, local0, param6, param7, *(int*)(local0 + 8), param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20, param21, param22, param23, param24, param39, param40, param41, param42, param43, param44, param39, *(int*)(local3 + local4 - 140), param40, *(int*)(local3 + local4 - 232), param41, *(int*)(local3 + local4 - 344), *(int*)(global1 + local4 - 232), *(int*)(global1 + local4 - 324), *(int*)(global1 + local4 - 436), param42, param43, param44, 1, *(int*)(local0 - 72), param45, *(int*)(local0 + 8), *(int*)param6, param59, *(int*)*(int*)(local0 + 8), param25, param26); /* Warning: also results in param1, param2, param3, param4, param5, param7 */ *(int*)(param5 - 68) = local2; *(int*)local4 = param5 - 64; param1 = proc5(param1, param2, param3, param4, param5, param7, param15, param16, param17, param5 - 64, param26); /* Warning: also results in param5 */ return *(int*)(param5 - 68); /* WARNING: Also returning: *(int*)(param5 - 8), param1, *(int*)(param5 - 12), *(int*)param5 */ } // address: 0x405690 void __imp__assert(int param1) { int local3; // r28 _assert(param1); return; } // address: 0x405680 void __imp_fread(int param1, int param2, int param3, int param4) { int local3; // r28 fread(param1, param2, param3, param4); return; } // address: 0x405670 void __imp_fclose(int param1) { int local3; // r28 fclose(param1); return; } // address: 0x405660 void __imp_strcmp(int param1, int param2) { int local3; // r28 strcmp(param1, param2); return; } // address: 0x405650 void __imp_fwrite(int param1, int param2, int param3, int param4) { int local3; // r28 fwrite(param1, param2, param3, param4); return; } // address: 0x405720 void __imp__vsnprintf(int param1, int param2, int param3, int param4) { int local3; // r28 _vsnprintf(param1, param2, param3, param4); return; } // address: 0x405710 void __imp_fprintf(int param1, int param2) { int local3; // r28 fprintf(param1, param2); return; } // address: 0x405700 void __imp_exit(int param1) { int local3; // r28 exit(param1); return; } // address: 0x4056e0 void __imp_ftell(int param1) { int local3; // r28 ftell(param1); return; } // address: 0x4056d0 void __imp_fseek(int param1, int param2, int param3) { int local3; // r28 fseek(param1, param2, param3); return; } // address: 0x4041b0 int proc26(int param1, int ??, short ??, char param4, char ??, int ??, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15, int ??, int param17, int ??, int ??, int ??, int ??, int param22, int param23, int param24, int param25, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int param46, int param47, int param48, int param49, int param50, int param51, int param52, int param53, int param54, int param55, int param56, int param57, int param58, int param59, int ??, int param61, int ??, int param63, int ??, int param65, int param66, int param67) { int local0; // r24{70} int local1; // r26{33} int local10; // r29{21} int local100; // m[(global1{0} + r28) - 224]{46} int local101; // m[(global1{0} + r28) - 316]{46} int local102; // m[(global1{0} + r28) - 428]{46} int local103; int local104; int local105; int local106; int local107; // m[r28 - 4]{1} int local108; // m[r28 - 8]{12} int local109; // m[r28 - 12]{11} int local11; // r30{109} int local110; // m[r28 - 16]{10} int local111; // m[r28 - 20]{81} int local112; // m[r28 - 24]{81} int local113; // m[r28 - 28]{16} int local114; // m[r28 - 32]{15} int local115; // m[r28 - 36]{8} int local116; // m[r28 - 40]{14} int local117; // m[r28 - 44]{13} int local118; // m[r28 - 48]{81} int local119; // m[r28 - 60]{81} int local12; // r30{70} int local120; // m[r28 - 64]{81} int local121; // m[r28 - 68]{81} int local122; // m[r28 - 92]{17} int local123; // m[r28 - 96]{19} int local124; // m[r28 - 100]{81} int local125; // m[r29 - 60]{27} int local126; // m[r29 - 60]{46} int local127; // m[r24]{46} int local128; // m[r27]{46} int local129; // m[r28]{29} int local13; // r31{110} int local130; int local131; int local132; // m[r28]{70} int local133; // m[r30]{46} int local134; // m[r31]{46} int local135; // {70} int local136; // %pc{20} int local137; // m[r29 + 8]{26} int local138; // m[r29 + 8]{70} int local139; // m[r29 + 8]{46} int local14; // r31{70} int local140; // r24{21} int local141; // r26{21} int local142; // r27{21} void *local143; // %pc{70} void *local144; // %pc{46} int local145; // m[r28 - 8] int local146; // m[r28 - 4] int local147; // m[r28 - 12] int local148; // m[r28 - 16] int local149; // m[r28 - 20] int local15; // m[r28 - 4]{70} int local150; // m[r28 - 24] int local151; // m[r28 - 48] int local152; // m[r28 - 60] int local153; // m[r28 - 64] int local154; // m[r28 - 68] int local155; // m[r28 - 100] int local156; // r27{46} int local157; // r29{46} int local158; // r30{46} int local159; // r31{46} int local16; // m[r28 - 8]{70} int local160; int local161; int local162; int local163; // m[r28 - 4]{46} int local164; // m[r28 - 8]{46} int local165; // m[r28 - 12]{46} int local166; // m[r28 - 16]{46} int local167; // m[r28 - 20]{46} int local168; // m[r28 - 24]{46} int local169; // m[r28 - 28]{46} int local17; // m[r28 - 12]{70} int local170; // m[r28 - 32]{46} int local171; // m[r28 - 36]{46} int local172; // m[r28 - 40]{46} int local173; // m[r28 - 44]{46} int local174; // m[r28 - 48]{46} int local175; // m[r28 - 60]{46} int local176; // m[r28 - 64]{46} int local177; // m[r28 - 68]{46} int local178; // m[r28 - 92]{46} int local179; // m[r28 - 96]{46} int local18; // m[r28 - 16]{70} int local180; // m[r28 - 100]{46} int local181; int local182; int local183; // m[r28]{48} int local184; // m[r28]{46} int local185; // {46} int local186; // m[r28]{163} int local187; // local92{136} int local188; // local2{106} int local189; // local6{107} int local19; // m[r28 - 20]{208} int local190; // local9{108} int local191; // local11{109} int local192; // local13{110} int local193; // local39{111} void *local194; // local82{113} int local195; // local41{137} int local196; // local42{138} int local197; // local46{139} int local198; // local61{140} int local199; // local62{141} int local2; // r27{106} int local20; // m[r28 - 24]{209} int local200; // local63{142} int local201; // local64{143} int local202; // local65{144} int local203; // local66{145} int local204; // local67{146} int local205; // local68{147} int local206; // local69{148} int local207; // local70{149} int local208; // local71{150} int local209; // local57{151} int local21; // m[r28 - 28]{70} int local210; // local58{152} int local211; // local59{153} int local212; // local60{154} int local213; // local72{156} int local214; // local73{157} int local215; // local74{160} int local216; // local76{161} int local217; // local77{162} int local218; // local186{163} int local219; // local78{164} int local22; // m[r28 - 32]{70} int local220; // local43{195} int local221; // local44{196} int local222; // local45{197} int local223; // local47{198} int local224; // local48{199} int local225; // local49{200} int local226; // local50{201} int local227; // local51{202} int local228; // local52{203} int local229; // local53{204} int local23; // m[r28 - 36]{70} int local230; // local54{205} int local231; // local55{206} int local232; // local56{207} int local233; // local19{208} int local234; // local20{209} int local235; // local26{210} int local236; // local27{211} int local237; // local28{212} int local238; // local29{213} int local239; // local32{214} int local24; // m[r28 - 40]{70} int local240; // local75{215} int local241; // local79{216} int local242; // local80{217} int local243; // local35{218} int local244; // global1{242} void *local245; // r24 int local246; // r26 int local247; // r28 int local25; // m[r28 - 44]{70} int local26; // m[r28 - 48]{210} int local27; // m[r28 - 60]{211} int local28; // m[r28 - 64]{212} int local29; // m[r28 - 68]{213} int local3; // r27{70} int local30; // m[r28 - 92]{70} int local31; // m[r28 - 96]{70} int local32; // m[r28 - 100]{214} int local33; // m[r29 - 60]{70} int local34; int local35; // global1{218} int local36; // global1{81} int local37; // r26{70} int local38; // r28{70} int local39; // {111} int local4; // r28{81} void *local40; // r24{33} int local41; // m[r28 + 4]{137} int local42; // m[r28 + 8]{138} int local43; // m[r28 + 4]{195} int local44; // m[r28 + 8]{196} int local45; // m[r28 + 12]{197} int local46; // m[r29 + 8]{139} int local47; // m[global1{0} + 40]{198} int local48; // m[global1{0} + 44]{199} int local49; // m[global1{0} + 48]{200} int local5; // r28{46} int local50; // m[global1{0} + 52]{201} int local51; // m[(r26 + r28) - 132]{202} int local52; // m[(r26 + r28) - 224]{203} int local53; // m[(r26 + r28) - 336]{204} int local54; // m[(global1{0} + r28) - 224]{205} int local55; // m[(global1{0} + r28) - 316]{206} int local56; // m[(global1{0} + r28) - 428]{207} int local57; // m[r28 - 4]{151} int local58; // m[r28 - 12]{152} void *local59; // m[r28 - 16]{153} int local6; // r28{107} void *local60; // m[r28 - 4]{154} int local61; // m[r28 - 4]{140} int local62; // m[r28 - 8]{141} int local63; // m[r28 - 12]{142} int local64; // m[r28 - 16]{143} int local65; // m[r28 - 28]{144} int local66; // m[r28 - 32]{145} int local67; // m[r28 - 36]{146} int local68; // m[r28 - 40]{147} int local69; // m[r28 - 44]{148} int local7; // r28{21} int local70; // m[r28 - 92]{149} int local71; // m[r28 - 96]{150} int local72; // m[r29 - 60]{156} int local73; // m[r29 - 60]{157} int local74; // m[r24]{160} int local75; // m[r27]{215} int local76; // m[r28]{161} int local77; // m[r28]{162} int local78; // m[r28]{164} int local79; // m[r30]{216} int local8; // r29{70} int local80; // m[r31]{217} int local81; // global1{46} int local82; // %pc{113} int local83; // r28{33} int local84; // r27{22} int local85; // r30{21} int local86; // r31{21} int local87; int local88; int local89; // m[r28 + 4]{46} int local9; // r29{108} int local90; // m[r28 + 8]{46} int local91; // m[r28 + 12]{46} int local92; // m[r29 + 8]{136} int local93; // m[global1{0} + 40]{46} int local94; // m[global1{0} + 44]{46} int local95; // m[global1{0} + 48]{46} int local96; // m[global1{0} + 52]{46} int local97; // m[(r26 + r28) - 132]{46} int local98; // m[(r26 + r28) - 224]{46} int local99; // m[(r26 + r28) - 336]{46} local229 = *(int*)(local1 + local6 - 336); local228 = *(int*)(local1 + local6 - 224); local227 = *(int*)(local1 + local6 - 132); local219 = *(int*)local6; local218 = *(int*)local5; local217 = *(int*)local38; local215 = *(int*)local0; local214 = *(int*)(local8 - 60); local212 = *(int*)(local38 - 4); local211 = *(int*)(local4 - 16); local210 = *(int*)(local4 - 12); local209 = *(int*)(local4 - 4); local187 = *(int*)(local10 + 8); local107 = param13; local115 = local247 - 16; local110 = param12; local109 = param14; local108 = param15; local117 = 0x402060; local116 = 0x405960; local114 = 0x404250; local113 = local247 - 92; local122 = local247 - 68; local85 = proc2(local247 - 68, param8, param9, param11, param12, local247 - 4, param14, param15, param28, param29, param30, param31, param67); /* Warning: also results in param8, param9, local7, local10, local86 */ local189 = local7; local190 = local10; local191 = local85; local192 = local86; local193 = param67; local194 = local136; local195 = *(int*)(local38 + 4); local196 = *(int*)(local38 + 8); local198 = local107; local199 = local108; local200 = local109; local201 = local110; local202 = local113; local203 = local114; local204 = local115; local205 = local116; local206 = local117; local207 = local122; local208 = local123; local220 = *(int*)(local247 + 4); local221 = *(int*)(local247 + 8); local222 = *(int*)(local247 + 12); local223 = *(int*)(global1 + 40); local224 = *(int*)(global1 + 44); local225 = *(int*)(global1 + 48); local226 = *(int*)(global1 + 52); local230 = *(int*)(global1 + local247 - 224); local231 = *(int*)(global1 + local247 - 316); local232 = *(int*)(global1 + local247 - 428); local233 = local149; local234 = local150; local235 = local151; local236 = local152; local237 = local153; local238 = local154; local239 = local155; local240 = *(int*)param12; local241 = *(int*)param14; local242 = *(int*)param15; local243 = global1; local84 = *(int*)(local10 + 8); local188 = local84; if (*(int*)(local10 + 8) == 0) { local137 = 1; local187 = local137; } local92 = local187; local125 = 1; local129 = local92; local197 = local92; local213 = local125; local216 = local129; for(;;) { local2 = local188; local6 = local189; local9 = local190; local11 = local191; local13 = local192; local39 = local193; local82 = local194; local41 = local195; local42 = local196; local46 = local197; local61 = local198; local62 = local199; local63 = local200; local64 = local201; local65 = local202; local66 = local203; local67 = local204; local68 = local205; local69 = local206; local70 = local207; local71 = local208; local57 = local209; local58 = local210; local59 = local211; local60 = local212; local72 = local213; local73 = local214; local74 = local215; local76 = local216; local77 = local217; local186 = local218; local78 = local219; local43 = local220; local44 = local221; local45 = local222; local47 = local223; local48 = local224; local49 = local225; local50 = local226; local51 = local227; local52 = local228; local53 = local229; local54 = local230; local55 = local231; local56 = local232; local19 = local233; local20 = local234; local26 = local235; local27 = local236; local28 = local237; local29 = local238; local32 = local239; local75 = local240; local79 = local241; local80 = local242; local35 = local243; local40 = malloc(local78); local244 = local35; if (local40 != NULL) { param8 = proc5(param8, param9, param11, local2, local9, local13, *(int*)(local35 + 44), *(int*)(local35 + 48), *(int*)(local35 + 52), local9 - 64, local39); /* Warning: also results in param9, param11, local246, param13 */ local245 = param31; param12 = *(int*)(param13 - 12); param15 = *(int*)(param13 - 4); param13 = *(int*)param13; goto L0; } if (*(int*)0x40c030 == 0) { break; } (**(int*)0x40c030)(local32, local71, local70, local29, local28, local27, local26, local69, local68, local67, local66, local65, local20, local19, local59, local64, local58, local63, local62, *(int*)(local6 - 8), local82 + 0x1562, local60, local57, local61, local41, local43, *(int*)(local6 + 4), local42, local44, *(int*)(local6 + 8), local45, param8, param9, param10, *(int*)0x40c030, param11, local1, local2, local9, local11, local13, local46, *(int*)(local9 + 8), param17, *(int*)(local35 + 4), *(int*)(local35 + 8), *(int*)(local35 + 20), *(int*)(local35 + 24), *(int*)(local35 + 28), *(int*)(local35 + 32), *(int*)(local35 + 40), *(int*)(local35 + 44), *(int*)(local35 + 48), *(int*)(local35 + 52), *(int*)(local35 + 56), *(int*)(local35 + 60), *(int*)(local35 + 64), *(int*)(local35 + 68), *(int*)(local35 + 72), *(int*)(local35 + 76), *(int*)(local35 + 80), param22, param23, param24, param25, param26, param27, local47, local48, local49, local50, param32, param33, param34, param35, param36, param37, param38, local51, local52, local53, param39, param40, param41, local54, local55, local56, *(int*)(local1 + local6 - 132), *(int*)(local1 + local6 - 136), *(int*)(local1 + local6 - 224), *(int*)(local1 + local6 - 228), *(int*)(local1 + local6 - 336), *(int*)(local1 + local6 - 340), param39, *(int*)(local246 + local247 - 136), param40, *(int*)(local246 + local247 - 228), param41, *(int*)(local246 + local247 - 340), *(int*)(local35 + local6 - 228), *(int*)(local35 + local6 - 320), *(int*)(local35 + local6 - 432), *(int*)(global1 + local247 - 228), *(int*)(global1 + local247 - 320), *(int*)(global1 + local247 - 432), param42, param43, param44, local72, local73, 1, local40, *(int*)(local9 - 72), param57, param58, local74, param59, *(int*)local2, local75, local76, local77, local186, local78, *(int*)local11, local79, *(int*)local13, local80, *(int*)local35, param66, local39, LOGICALFLAGS32(*(int*)0x40c030), LOGICALFLAGS32(*(int*)0x40c030)); local188 = local156; local189 = local5; local190 = local157; local191 = local158; local192 = local159; local193 = local185; local194 = local144; local195 = local87; local196 = local88; local197 = local139; local198 = local163; local199 = local164; local200 = local165; local201 = local166; local202 = local169; local203 = local170; local204 = local171; local205 = local172; local206 = local173; local207 = local178; local208 = local179; local209 = local160; local210 = local161; local211 = local162; local212 = local106; local213 = local181; local214 = local126; local215 = local127; local216 = local182; local217 = local130; local219 = local184; local220 = local89; local221 = local90; local222 = local91; local223 = local93; local224 = local94; local225 = local95; local226 = local96; local227 = local97; local228 = local98; local229 = local99; local230 = local100; local231 = local101; local232 = local102; local233 = local167; local234 = local168; local235 = local174; local236 = local175; local237 = local176; local238 = local177; local239 = local180; local240 = local128; local241 = local133; local242 = local134; local243 = local81; local183 = *(int*)(local157 + 8); local218 = local183; } local0 = proc29(param8, param10, param11, local2, local9, local11, local13, *(int*)(local35 + 40), *(int*)(local35 + 44), *(int*)(local35 + 48), *(int*)(local35 + 52), local39); /* Warning: also results in local12, param8, param9, local3, local38, local8, local14 */ param8 = proc30(local32, local31, local30, local29, local28, local27, local26, local25, local24, local23, local22, local21, local20, local19, local18, local105, local17, local104, *(int*)(local6 - 8), local16, local15, local103, local143, *(int*)(local6 - 4), *(int*)(local6 + 4), local43, 0x4072d8, *(int*)(local6 + 8), local44, 0x404320, local45, param8, param9, param10, local0, 0x404320, 0x4072d8, local3, local8, local12, local14, local138, *(int*)(local9 + 8), param17, *(int*)(local35 + 4), *(int*)(local35 + 8), *(int*)(local35 + 20), *(int*)(local35 + 24), *(int*)(local35 + 28), *(int*)(local35 + 32), *(int*)(local35 + 40), *(int*)(local35 + 44), *(int*)(local35 + 48), *(int*)(local35 + 52), *(int*)(local35 + 56), *(int*)(local35 + 60), *(int*)(local35 + 64), *(int*)(local35 + 68), *(int*)(local35 + 72), *(int*)(local35 + 76), *(int*)(local35 + 80), param22, param23, param24, param25, param26, param27, local47, local48, local49, local50, param32, param33, param34, param35, param36, param37, param38, local51, local52, local53, param39, param40, param41, local54, local55, local56, *(int*)(local1 + local6 - 132), *(int*)(local1 + local6 - 136), *(int*)(local1 + local6 - 224), *(int*)(local1 + local6 - 228), *(int*)(local1 + local6 - 336), *(int*)(local1 + local6 - 340), param39, *(int*)(local246 + local247 - 136), param40, *(int*)(local246 + local247 - 228), param41, *(int*)(local246 + local247 - 340), *(int*)(local35 + local6 - 228), *(int*)(local35 + local6 - 320), *(int*)(local35 + local6 - 432), *(int*)(global1 + local247 - 228), *(int*)(global1 + local247 - 320), *(int*)(global1 + local247 - 432), param42, param43, param44, local33, 1, *(int*)(local9 - 60), *(int*)(local9 - 68), *(int*)(local9 - 72), param57, param58, 0x407524, param59, *(int*)local2, local75, local34, local0, local131, local132, *(int*)local11, local79, *(int*)local13, local80, *(int*)local35, param66, local135, flags, CF); /* Warning: also results in param9, param11, local246, param12, local4, param13, param15 */ local244 = local36; local245 = *(int*)(local4 + 4); if (*(int*)(local4 + 4) != 0) { free(*(int*)(local4 + 4)); } L0: global1 = local244; return local245; /* WARNING: Also returning: param8, param9, param11, local246, param12, param13, param15 */ } // address: 0x405740 void __imp_free(int param1) { int local3; // r28 free(param1); return; } // address: 0x405760 void __imp_malloc(int param1) { int local3; // r28 malloc(param1); return; } // address: 0x4039a0 int proc29(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10, int param11, int param12) { int local0; // %pc{138} int local1; // global41{338} int local10; // r8{86} int local11; // r28{33} int local12; // %pc{32} int local13; // r26{33} char local14; // r8{23} int local15; // r26{23} int local16; // r30{23} int local17; // r30{205} int local18; // m[global1{0} + 44]{169} int local19; // m[global1{0} + 48]{169} int local2; // r29{114} int local20; // m[global1{0} + 52]{169} int local21; // m[0x40c060] int local22; // global41{125} int local23; // r26{156} int local24; // r28{156} char local25; // r8{139} int local26; // r26{139} int local27; // r30{139} int local28; // r26{149} int local29; // r26{114} int local3; // r29{204} int local30; // r30{114} int local31; // r28{165} int local32; // r29{166} int local33; // global41{336} int local34; // r28{181} int local35; // %pc{186} int local36; // local9{189} int local37; // local1{338} int local38; // r25{223} int local39; // global41{340} int local4; // r28{217} char local40; // r8 void *local41; // r24 int local42; // r26 int local43; // r28 int local5; // r8{97} int local6; // global41{335} int local7; // r25{191} int local8; // r24{190} int local9; // r8{189} param3 = param5; *(int*)(local43 - 36) = local43 - 16; *(int*)(local43 - 92) = local43 - 68; *(int*)(local43 - 16) = param4; *(int*)(local43 - 12) = param6; *(int*)(local43 - 8) = param7; *(int*)(local43 - 44) = 0x402060; *(int*)(local43 - 40) = 0x405900; *(int*)(local43 - 32) = 0x403b00; *(int*)(local43 - 28) = local43 - 92; local16 = proc2(local43 - 68, param1, (unsigned char) local43 - 68, param3, param4, local43 - 4, param6, param7, param8, param9, param10, param11, param12); /* Warning: also results in param1, param4, param5, param7 */ local32 = param5; local33 = global41; local37 = global41; local37 = global41; local39 = global41; *(int*)(param5 + 8) += 80; *(int*)local43 = *(int*)(param5 + 8); local41 = malloc(*(int*)(param5 + 8)); local31 = local11; local34 = local11; local35 = local12; param33 = local41; if (local41 == NULL) { if (global29 != 0) { *(int*)local43 = 0x406000; param7 = 0x403980; *(int*)(local43 + 4) = 0x403980; param32 = 1; param2 = proc40(0x403980, global29, param3, local13, param4, param5, local16, *(int*)param4, 0x406000, param12); /* Warning: also results in param5 */ local34 = local43; local35 = local0; if (global29 != 0) { *(int*)local43 = 0x408020; param32 = 1; proc41(0x408020); local34 = local43; } } local43 = local34; param3 = 0; local41 = global41; local10 = (unsigned char) global41; local36 = local10; if ((unsigned)*(int*)(param5 + 8) <= 512) { do { local9 = local36; local8 = local41; local7 = param3; param13 = local9 & 0x1; local38 = local7; if ((local9 & 0x1) == 0) { goto L3; } param3 = local7 + 1; local41 = local8 / 2; local5 = (unsigned char) local8 / 2; local36 = local5; } while ((unsigned)(local7 + 1) <= 31); } for(;;) { local3 = param5; local1 = local37; param4 = local21; local32 = local3; local33 = local1; local39 = local1; if (local21 != 0) { *(int*)local43 = 0x408020; param2 = proc42(param2, 0x408020); } local4 = local43; local31 = local4; if (*(int*)(local3 - 68) != 0) { break; } param3 = proc37(*(int*)(local43 + 4), *(int*)(local43 + 8), *(int*)(local43 + 12), param1, local40, *(int*)(local3 - 68), local42, local21, local3, local17, param7, *(int*)(global1 + 4), *(int*)(global1 + 8), *(int*)(global1 + 20), *(int*)(global1 + 24), *(int*)(global1 + 28), *(int*)(global1 + 32), param8, param9, param10, param11, *(int*)(global1 + 56), *(int*)(global1 + 60), *(int*)(global1 + 64), *(int*)(global1 + 68), *(int*)(global1 + 72), *(int*)(global1 + 76), *(int*)(global1 + 80), *(int*)(local42 + local43 - 156), *(int*)(local42 + local43 - 248), *(int*)(local42 + local43 - 360), *(int*)(global1 + local43 - 244), *(int*)(global1 + local43 - 248), *(int*)(global1 + local43 - 260), *(int*)(global1 + local43 - 336), *(int*)(global1 + local43 - 340), *(int*)(global1 + local43 - 352), *(int*)(global1 + local43 - 448), *(int*)(global1 + local43 - 452), *(int*)(global1 + local43 - 464), *(int*)local43, *(int*)local17, param31, *(int*)local21, *(int*)global1, *(int*)global2, param12); /* Warning: also results in param7 */ local38 = param3; L3: param3 = local38; global41 = local39; local22 = local6 | 1 << param3; local37 = local22; } } local43 = local31; param5 = local32; global41 = local33; memset(0, 80, param33); param1 = proc5(param1, (unsigned char) param5 - 64, param3, param4, param5, param7, local18, local19, local20, param5 - 64, param12); /* Warning: also results in param3, local42, param5 */ return *(int*)(param5 - 72); /* WARNING: Also returning: *(int*)(param5 - 8), param1, (unsigned char) *(int*)(param5 - 72), param2, param3, local42, *(int*)(param5 - 12), *(int*)param5, *(int*)(param5 - 4) */ } // address: 0x4038b0 void proc30(int param1, int ??, int ??, int param4, int ??, int ??, int param7, int param8, int param9, char param10, char param11, int param12, int param13, int param14, int param15, int param75, int param76, int param77) { int local0; // r30{96} int local1; // r0{117} int local10; // r26{92} int local100; // r31{30} int local101; // m[global1{0} + 40]{30} int local102; // m[global1{0} + 44]{30} int local103; // m[global1{0} + 48]{30} int local104; // m[global1{0} + 52]{30} int local105; // r0{47} int local106; // r8{47} int local107; // r10{47} int local108; // r25{122} int local109; // r28{125} int local11; // r27{92} int local110; // r31{128} void *local111; // %pc{47} int local112; // r27{47} int local113; // r29{126} int local114; // r0{134} int local115; // r8{135} char local116; // r9{136} char local117; // r10{137} int local118; // r25{139} int local119; // r26{140} int local12; // r28{92} int local120; // r27{141} int local121; // r28{142} int local122; // r29{143} int local123; // r31{145} int local124; // r25{96} int local125; // r26{96} int local126; // r28{96} int local127; // r29{96} int local128; // r31{96} char local129; // r11{92} int local13; // r29{92} int local130; // local27{100} int local131; // local28{101} char local132; // local29{102} char local133; // local30{103} int local134; // local31{105} int local135; // local32{106} int local136; // local33{107} int local137; // local34{108} int local138; // local35{109} int local139; // local37{111} int local14; // r30{92} int local140; // local118{139} int local141; // local119{140} int local142; // local121{142} int local143; // local122{143} int local144; // local123{145} char local145; // r9 int local146; // r24 int local147; // r26 int local148; // r28 int local149; // r31 int local15; // r31{92} short local16; // r0{87} char local17; // r9{87} char local18; // r10{87} int local19; // r25{87} int local2; // r8{118} int local20; // r27{87} int local21; // r29{87} int local22; // r30{87} int local23; // r31{87} char local24; // r8{87} int local25; // r26{87} int local26; // r28{87} int local27; // r0{100} int local28; // r8{101} char local29; // r9{102} int local3; // r27{124} char local30; // r10{103} int local31; // r25{105} int local32; // r26{106} int local33; // r27{107} int local34; // r28{108} int local35; // r29{109} int local36; // r30{110} int local37; // r31{111} int local38; // m[global1{0} + 4]{112} int local39; // m[global1{0} + 8]{112} int local4; // r30{127} int local40; // m[global1{0} + 20]{112} int local41; // m[global1{0} + 24]{112} int local42; // m[global1{0} + 28]{112} int local43; // m[global1{0} + 32]{112} int local44; // m[global1{0} + 40]{112} int local45; // m[global1{0} + 44]{112} int local46; // m[global1{0} + 48]{112} int local47; // m[global1{0} + 52]{112} int local48; // m[global1{0} + 56]{112} int local49; // m[global1{0} + 60]{112} short local5; // r0{92} int local50; // m[global1{0} + 64]{112} int local51; // m[global1{0} + 68]{112} int local52; // m[global1{0} + 72]{112} int local53; // m[global1{0} + 76]{112} int local54; // m[global1{0} + 80]{112} int local55; // m[global1{0}]{112} int local56; // r25{74} int local57; // r26{67} int local58; // r28{61} int local59; // r29{61} char local6; // r8{92} int local60; // r31{61} int local61; // m[m[r24]{61} + 20]{61} int local62; // r24{68} int local63; // r25{61} int local64; // r26{61} int local65; // r25{47} int local66; // r28{47} int local67; // r31{47} int local68; // {47} int local69; // r29{47} char local7; // r9{92} int local70; // r26{47} short local71; // r0{43} char local72; // r8{43} int local73; // r25{43} int local74; // r26{43} int local75; // r27{43} int local76; // r28{43} int local77; // r29{43} int local78; // r31{43} int local79; // {43} char local8; // r10{92} void *local80; // %pc{43} char local81; // r10{43} short local82; // r0{38} char local83; // r10{30} int local84; // r25{38} int local85; // r27{38} int local86; // r29{38} int local87; // r31{38} int local88; // {30} int local89; // r28{38} int local9; // r25{92} void *local90; // %pc{30} char local91; // r8{38} int local92; // r26{38} short local93; // r0{30} char local94; // r8{30} int local95; // r25{30} int local96; // r26{30} int local97; // r27{30} int local98; // r28{30} int local99; // r29{30} L-1: param16 = param14; *(int*)(local148 - 8) = param13; *(int*)(param1 - 80) = param4; *(int*)(param1 - 32) = 0x432b2b00; *(int*)(param1 - 28) = 0x474e5543; *(int*)(param1 - 76) = param7; *(int*)(param1 - 24) = 0x403860; *(int*)(param1 - 72) = param76; *(int*)(param1 - 68) = param75; local146 = proc34(param8, param9, param10, param12, param1 - 32, local148 - 4, param15, local149, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), *(int*)(global1 + 68), *(int*)(global1 + 72), param77); /* Warning: also results in param15, local93, local94, local83, local95, local96, local97, local98, local99, local100 */ L-1: *(int*)(local146 + 4)++; *(int*)local98 = local97; *(int*)(local98 - 4) = local90; param15 = proc35(*(int*)(local98 - 68), *(int*)(local98 + 4), *(int*)(local98 + 8), *(int*)(local98 + 12), *(int*)(local98 + 16), local93, local94, local95, local96, local97, local99, param15, local100, *(int*)(local100 + 12), *(int*)(local100 + 16), local101, local102, local103, local104, *(int*)(local96 + local98 - 104), *(int*)(local96 + local98 - 164), *(int*)(local96 + local98 - 196), *(int*)(local96 + local98 - 256), *(int*)(local96 + local98 - 308), *(int*)(local96 + local98 - 368), *(int*)(local96 + local98 - 104), *(int*)(local96 + local98 - 196), *(int*)(local96 + local98 - 308), *(int*)(local96 + local98 - 164), *(int*)(local96 + local98 - 256), *(int*)(local96 + local98 - 368), *(int*)(local97 + local98 - 168), *(int*)(local97 + local98 - 260), *(int*)(local97 + local98 - 372), *(int*)(local99 - 20), *(int*)local97, local97, param76, local88); /* Warning: also results in local82, local84, local85, local89, local86, local87 */ L-1: *(int*)local89 = local85; *(int*)(local89 - 4) = local90 + 0x12c5; local145 = proc36(local82, local145, local83, param11, local84, local85, local86, param15, local87, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), local88); /* Warning: also results in param11, local76, local77 */ local132 = local145; L-1: *(int*)(local76 - 4) = local80; param15 = proc37(*(int*)(local76 + 4), *(int*)(local76 + 8), *(int*)(local76 + 12), local71, local72, local73, local74, local75, local77, param15, local78, param17, param18, param19, param20, param21, param22, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), param27, param28, param29, *(int*)(global1 + 68), *(int*)(global1 + 72), param32, param33, *(int*)(local74 + local76 - 156), *(int*)(local74 + local76 - 248), *(int*)(local74 + local76 - 360), *(int*)(global1 + local76 - 244), *(int*)(global1 + local76 - 248), *(int*)(global1 + local76 - 260), *(int*)(global1 + local76 - 336), *(int*)(global1 + local76 - 340), *(int*)(global1 + local76 - 352), *(int*)(global1 + local76 - 448), *(int*)(global1 + local76 - 452), *(int*)(global1 + local76 - 464), *(int*)local75, *(int*)local76, param76, *(int*)local78, param40, param75, local79); /* Warning: also results in local65, local66, local69, local67 */ L-1: *(int*)(local66 - 4) = local69; *(int*)(local66 - 12) = local112; *(int*)(local66 - 8) = param15; *(int*)(local66 - 32) = local111; local146 = proc34(local105, local106, local107, local65, local112, local66 - 4, param15, local67, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), *(int*)(global1 + 68), *(int*)(global1 + 72), local68); /* Warning: also results in param8, param9, param10, local58, local59, local60 */ local130 = param8; local131 = param9; local133 = param10; local137 = local58; local138 = local59; local139 = local60; local142 = local58; local143 = local59; local144 = local60; L-1: param13 = *(int*)local146; param15 = local146; local136 = param13; if (*(int*)local146 == 0) { L-1: local124 = proc37(*(int*)(local109 + 4), *(int*)(local109 + 8), *(int*)(local109 + 12), local1, local2, local108, local147, local3, local113, local4, local110, param17, param18, param19, param20, param21, param22, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), param27, param28, param29, *(int*)(global1 + 68), *(int*)(global1 + 72), param32, param33, *(int*)(local147 + local109 - 156), *(int*)(local147 + local109 - 248), *(int*)(local147 + local109 - 360), *(int*)(global1 + local109 - 244), *(int*)(global1 + local109 - 248), *(int*)(global1 + local109 - 260), *(int*)(global1 + local109 - 336), *(int*)(global1 + local109 - 340), *(int*)(global1 + local109 - 352), *(int*)(global1 + local109 - 448), *(int*)(global1 + local109 - 452), *(int*)(global1 + local109 - 464), *(int*)local3, *(int*)local109, *(int*)local4, *(int*)local110, param40, param75, param77); /* Warning: also results in local125, local126, local127, local128 */ local140 = local124; local141 = local125; local142 = local126; local143 = local127; local144 = local128; L-1: L-1: local114 = param8; local115 = param9; local116 = local145; local117 = param10; local118 = local140; local119 = local141; local120 = param13; local121 = local142; local122 = local143; local123 = local144; local130 = local114; local131 = local115; local132 = local116; local133 = local117; local134 = local118; local135 = local119; local136 = local120; local137 = local121; local138 = local122; local139 = local123; L-1: local27 = local130; local28 = local131; local29 = local132; local30 = local133; local31 = local134; local32 = local135; local33 = local136; local34 = local137; local35 = local138; local36 = param15; local37 = local139; local22 = proc38(*(int*)(local34 + 4), *(int*)(local34 + 8), *(int*)(local34 + 12), *(int*)(local34 + 16), local27, local28, local29, local30, local31, local32, local33 + 48, local35, local36, local37, *(int*)(local33 + 48), *(int*)(local37 + 12), *(int*)(local37 + 16), local38, local39, local40, local41, local42, local43, local44, local45, local46, local47, local48, local49, local50, local51, local52, local53, local54, *(int*)(local32 + local34 - 104), *(int*)(local32 + local34 - 148), *(int*)(local32 + local34 - 152), *(int*)(local32 + local34 - 196), *(int*)(local32 + local34 - 212), *(int*)(local32 + local34 - 240), *(int*)(local32 + local34 - 244), *(int*)(local32 + local34 - 304), *(int*)(local32 + local34 - 308), *(int*)(local32 + local34 - 352), *(int*)(local32 + local34 - 356), *(int*)(local32 + local34 - 416), *(int*)(local32 + local34 - 104), *(int*)(local32 + local34 - 196), *(int*)(local32 + local34 - 308), *(int*)(local32 + local34 - 148), *(int*)(local32 + local34 - 152), *(int*)(local32 + local34 - 212), *(int*)(local32 + local34 - 240), *(int*)(local32 + local34 - 244), *(int*)(local32 + local34 - 304), *(int*)(local32 + local34 - 352), *(int*)(local32 + local34 - 356), *(int*)(local32 + local34 - 416), *(int*)(local35 - 4), *(int*)(local35 - 8), *(int*)(local35 - 12), *(int*)(local35 - 20), *(int*)(local35 - 24), local33 + 48, *(int*)local35, *(int*)local36, local55, param77); /* Warning: also results in local16, local17, local18, local19, local20, local26, local21, local23 */ L-1: proc36(local16, local17, local18, param11, local19, local20, local21, local22, local23, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), param77); goto L-1; } L-1: local57 = *(int*)(*(int*)local146 + 52); local62 = *(int*)(*(int*)local146 + 48); local56 = local57 ^ 0x474e5543 | local62 ^ 0x432b2b00; local134 = local56; local135 = local57; local140 = local56; local141 = local57; if ((local57 ^ 0x474e5543 | local62 ^ 0x432b2b00) != 0) { goto L-1; } L-1: *(int*)(*(int*)local146 + 20) = 0 - local61; goto L-1; } // address: 0x4012b0 void proc31(int param1) { int local0; // r28 *(int*)(local0 - 4) = param1; /* goto atexit*/ } // address: 0x404560 int proc32(short param1, char param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) { int local0; // r8{349} DWORD local1; // r24{346} int local10; // r28{249} int local11; // r28{244} int local12; // r28{230} ATOM local13; // r24{227} int local14; // r28{227} int local15; // r24{163} void *local16; // r24{106} int local17; // r28{106} int local18; // r28{92} int local19; // r28{83} int local2; // r28{346} int local20; // r28{78} int local21; // r29{3} int local22; // r28{394} int local23; // r29{395} int local24; // r28{422} int local25; // r29{423} void *local26; // r24 int local27; // r26 int local28; // r28 int local3; // r8{328} int local4; // r24{325} int local5; // r28{325} DWORD local6; // r24{308} int local7; // r28{308} int local8; // r24{295} int local9; // r28{295} *(int*)(local28 - 4) = param5; local21 = local28 - 4; *(int*)(local28 - 8) = param7; *(int*)(local28 - 12) = param6; *(int*)(local28 - 16) = param4; local23 = local21; local25 = local21; if (global1 == 0) { *(int*)(local28 - 108) = 0x41414141; param7 = local28 - 108; *(int*)(local28 - 104) = 0x41414141; *(int*)(local28 - 100) = 0x41414141; *(int*)(local28 - 76) = global4; *(int*)(local28 - 96) = 0x41414141; *(int*)(local28 - 92) = 0x41414141; *(int*)(local28 - 72) = global5; *(int*)(local28 - 88) = 0x41414141; *(int*)(local28 - 84) = 0x41414141; *(int*)(local28 - 68) = global6; *(int*)(local28 - 80) = 0x41414141; *(int*)(local28 - 64) = global7; *(int*)(local28 - 60) = global8; *(int*)(local28 - 56) = global9; *(int*)(local28 - 52) = global10; *(int*)(local28 - 48) = global11; *(short*)(local28 - 44) = (unsigned short) (global12); *(LPCSTR*)(local28 - 204) = local28 - 108; FindAtomA(local28 - 108); param1 = (unsigned short) ((unsigned short) (global12)); local19 = local28 - 204; local24 = local19; if (((unsigned short) (global12)) != 0) { L3: local28 = local24; param5 = local25; *(int*)(local28 - 4) = FindAtomA; local26 = proc51(param1, param4, param5, param6, param7, param8, param9, param10); /* Warning: also results in param3, param5 */ param4 = local26; L1: global1 = param4; global2 = param4 + 4; param2 = (unsigned char) param4 + 8; param1 = (unsigned short) param4 + 8; global3 = param4 + 8; param4 = *(int*)(param5 - 12); param6 = *(int*)(param5 - 8); param7 = *(int*)(param5 - 4); param5 = *(int*)param5; } else { *(int*)(local28 - 204) = 84; *(int*)(local28 - 208) = FindAtomA; local26 = malloc(84); param4 = local26; if (local26 == NULL) { *(int*)(local28 - 208) = FindAtomA + 0x1143; abort(); *(int*)(local28 - 208) = local28 - 4; *(int*)(local28 - 212) = local26; *(int*)(local28 - 236) = FindAtomA + 0x20b8; local6 = TlsAlloc(); if (local6 == -1) { *(int*)(local28 - 236) = TlsAlloc; local1 = GetLastError(); local0 = (local1 == 0) ? 1 : 0; param2 = (unsigned char) (local0); param1 = (unsigned short) (local0); param4 = local26; param5 = local28 - 4; } else { *(int*)(local28 - 228) = 0; *(int*)(local28 - 232) = local6; *(int*)(local28 - 236) = TlsAlloc; local4 = proc53(); local3 = (local4 == 0) ? 1 : 0; param2 = (unsigned char) (local3); param1 = (unsigned short) (local3); param4 = local26; param5 = local28 - 4; } } else { *(int*)(local28 - 204) = local26; *(int*)(local28 - 200) = 0; *(int*)(local28 - 196) = 84; *(int*)(local28 - 208) = FindAtomA + 0x1143; memset(local26, 0, 84); *(int*)(local26 + 4) = 0x405730; param3 = 1; *(int*)(local26 + 8) = 0x4044b0; *local26 = 84; *(int*)(local26 + 40) = 0; *(int*)(local26 + 20) = global14; *(int*)(local26 + 24) = global15; *(int*)(local26 + 28) = global16; *(int*)(local26 + 44) = -1; *(int*)(local26 + 32) = global17; *(int*)(local26 + 48) = global18; *(int*)(local26 + 52) = global19; *(int*)(local26 + 56) = global20; *(int*)(local26 + 60) = global21; *(int*)(local26 + 68) = -1; *(int*)(local26 + 64) = global22; *(int*)(local26 + 72) = global23; *(int*)(local26 + 80) = global24; local27 = 31; *(int*)(local26 + 76) = global25; do { local15 = 0 - ((unsigned)(local26 & param3) < 1); param3 += param3; param2 = ((unsigned char) local15 & 0x20) + 65; *(char*)(local27 + local28 - 188) = param2; local27 = local27 - 1; } while (local27 >= 0); *(int*)(local28 - 156) = global4; *(int*)(local28 - 152) = global5; *(int*)(local28 - 148) = global6; *(int*)(local28 - 144) = global7; *(int*)(local28 - 140) = global8; *(int*)(local28 - 136) = global9; *(int*)(local28 - 132) = global10; *(int*)(local28 - 128) = global11; *(short*)(local28 - 124) = (unsigned short) (global12); param1 = (unsigned short) local28 - 188; *(LPCSTR*)(local28 - 204) = local28 - 188; *(int*)(local28 - 208) = FindAtomA + 0x2255; AddAtomA(local28 - 188); param6 = ((unsigned short) local28 - 188); local12 = local28 - 204; local22 = local12; if (param6 != 0) { *(int*)(local28 - 208) = AddAtomA; local26 = proc51((unsigned short) param6, local26, local28 - 4, param6, local28 - 108, param8, param9, param10); /* Warning: also results in param6, param1, param3, param4, param5, param7 */ local22 = local28; local23 = param5; local27 = param6; if (local26 != param4) { L15: local28 = local22; param5 = local23; local27 = 0; } } else { goto L15; } local25 = param5; if (local27 == 0) { *(int*)local28 = param4; free(param4); *(int*)local28 = param7; FindAtomA(param7); param1 = (unsigned short) (param1); local24 = local28; goto L3; } goto L1; } } } else { } return param6; /* WARNING: Also returning: param1, param2, param3, param4, param5, param7 */ } // address: 0x404830 char proc33(char param1, int param2, int param3, int param4, int param5) { int local5; // r24 int local7; // r28 if (global29 == 0) { L1: } else { if (global1 + 52 != 0) { if (param4 == 0) { local5 = InterlockedIncrement(global1 + 56); if (local5 == 0) { param1 = proc55(); /* Warning: also results in param2 */ } else { if (param4 == 0) { do { Sleep(0); param2 = param4; } while (param4 == 0); } } } if (param3 < 0) { goto L1; } else { } } else { goto L1; } } return param1; /* WARNING: Also returning: param2 */ } // address: 0x403d70 int proc34(short param1, char param2, char param3, int param4, int param5, int local38, int param7, int param8, int param9, int param10, int param11, int param12, int param13, int param14, int param15) { int local0; // r27{232} int local1; // r31{236} int local10; // r30{145} int local11; // r31{146} int local12; // r25{124} int local13; // r29{21} int local14; // r26{124} int local15; // r28{124} int local16; // r25{111} int local17; // r26{111} int local18; // r28{111} int local19; // r27{72} int local2; // r29{234} int local20; // r25{34} int local21; // r26{34} int local22; // r28{34} int local23; // r27{21} int local24; // r31{21} int local25; // m[global1{0} + 68]{347} int local26; // r25{21} int local27; // r26{21} int local28; // r28{21} int local29; // r30{21} int local3; // r27{142} int local30; // r25{219} int local31; // r27{204} int local32; // m[global1{0} + 44]{162} int local33; // m[global1{0} + 48]{162} int local34; // m[global1{0} + 52]{162} int local35; // r29{206} int local36; // r28{158} int local37; // r29{159} int local38; // r29 int local39; // r31{192} int local4; // r29{132} int local40; // r27{105} int local41; // r29{105} int local42; // r25{57} int local43; // r25{105} int local44; // r31{99} int local45; // r26{105} int local46; // r28{105} int local47; // r30{105} int local48; // local3{142} int local49; // local11{146} int local5; // r31{132} int local50; // r25{155} int local51; // r27{157} int local52; // r31{161} int local53; // r25{186} int local54; // local39{192} int local55; // r25{202} int local56; // r31{208} int local57; // r25{230} int local58; // local2{234} int local59; // local1{236} int local6; // r28{132} void *local60; // r24 int local61; // r26 int local62; // r28 int local7; // r30{132} int local8; // r28{143} int local9; // r29{144} param5 = local38; *(int*)(local62 - 36) = local62 - 16; *(int*)(local62 - 16) = param5; *(int*)(local62 - 12) = param7; *(int*)(local62 - 8) = param8; *(int*)(local62 - 44) = 0x402060; *(int*)(local62 - 40) = 0x405930; *(int*)(local62 - 32) = 0x403e51; *(int*)(local62 - 28) = local62 - 92; *(int*)(local62 - 92) = local62 - 68; local29 = proc2(local62 - 68, param1, param2, param4, param5, local62 - 4, param7, param8, param9, param10, param11, param12, param15); /* Warning: also results in param1, param2, local26, local23, local13, local24 */ local48 = local23; local49 = local24; local54 = local24; local55 = local26; local56 = local24; local58 = local13; if (param13 == 0) { L2: param4 = local55; param8 = local56; param1 = proc5(param1, param2, param4, local31, local35, param8, param10, param11, param12, local35 - 64, param15); /* Warning: also results in param2, param4, local61, local38 */ local60 = param52; param5 = *(int*)(local38 - 12); param7 = *(int*)(local38 - 8); param8 = *(int*)(local38 - 4); local38 = *(int*)local38; } else { if (param13 < 0) { local42 = global29; local60 = -1; local53 = local42; if (global29 != 0) { local44 = 0x403c70; local60 = proc40(0x403c70, -1, global29, global1 + 76, local23, local13, local29, *(int*)local23, global1 + 76, param15); /* Warning: also results in param2, param3, local43 */ local53 = local43; local54 = local44; } param4 = local53; local39 = local54; local49 = local39; local55 = param4; local56 = local39; if (local60 != NULL || param13 < 0) { } local19 = param13; local48 = local19; if (param13 != 0) { L12: local3 = local48; local11 = local49; local60 = proc43(param14); /* Warning: also results in local20 */ local50 = local20; local51 = local3; local52 = local11; local59 = local11; if (local60 == NULL) { local60 = malloc(8); if (local60 == NULL) { L6: proc37(*(int*)(local8 + 4), *(int*)(local8 + 8), *(int*)(local8 + 12), param1, param2, local30, local61, local3, local9, local10, local11, param14, param15, param16, param17, param18, param19, param9, param10, param11, param12, param24, param25, param26, local25, param14, param29, param30, *(int*)(local61 + local8 - 156), *(int*)(local61 + local8 - 248), *(int*)(local61 + local8 - 360), *(int*)(global1 + local8 - 244), *(int*)(global1 + local8 - 248), *(int*)(global1 + local8 - 260), *(int*)(global1 + local8 - 336), *(int*)(global1 + local8 - 340), *(int*)(global1 + local8 - 352), *(int*)(global1 + local8 - 448), *(int*)(global1 + local8 - 452), *(int*)(global1 + local8 - 464), *(int*)local3, *(int*)local8, *(int*)local10, *(int*)local11, param49, *(int*)global2, param15); local57 = param4; local58 = local4; local59 = local5; } else { local60 = proc44(local60, param14); local57 = local12; if (local60 != NULL) { goto L6; } } param4 = local57; local0 = local3; local2 = local58; local1 = local59; param5 = local38; *(int*)(local62 - 8) = param8; *(int*)(local62 - 12) = param7; *(int*)(local62 - 16) = param5; *(int*)(local62 - 28) = local62 - 92; *(int*)(local62 - 32) = 0x403e51; *(int*)(local62 - 36) = local62 - 16; *(int*)(local62 - 40) = 0x405930; *(int*)(local62 - 44) = 0x402060; *(int*)(local62 - 92) = local62 - 68; *(int*)*(int*)(local2 - 72) = 0; *(int*)(*(int*)(local2 - 72) + 4) = 0; local50 = param4; local51 = local0; local52 = local1; } param4 = local50; param5 = local51; param8 = local52; param1 = proc5(param1, param2, param4, param5, local37, param8, local32, local33, local34, local37 - 64, param15); /* Warning: also results in param2, param4, local61, local38 */ local60 = param52; param5 = *(int*)(local38 - 12); param7 = *(int*)(local38 - 8); param8 = *(int*)(local38 - 4); local38 = *(int*)local38; } else { goto L2; } } else { goto L12; } } return local60; /* WARNING: Also returning: param7, param1, param2, param3, param4, local61, param5, local38, param8 */ } // address: 0x404bc0 int proc35(int ??, int param2, int ??, int ??, int ??, int ??, int param7, int ??, int param9, int ??, int param11, int param12, int param13, int param14, int param15, int param16, int param17, int param18, int param19, int param20, int param21, int param22, int ??, int ??, int ??, int param26, int param27, int param28, int param29, int param30, int param31, int param32, int param33, int param34, int param35, int param36, int param37, int param38, int param39, int param40, int param41, int param42, int param43, int param44, int param45, int ??, int param47, int ??, int param49, int param50) { char local0; // r8{64} short local1; // r0{64} char local10; // r8{239} int local100; // global1{570} int local101; // r26{254} int local102; // r26{41} int local103; // r26{38} short local104; // r0{223} char local105; // r8{224} int local106; // r27{228} int local107; // r28{229} int local108; // r30{231} int local109; // r31{232} int local11; // r26{145} int local110; // m[r28 + 4]{346} int local111; // m[r28 + 4]{347} int local112; // m[r28 + 8]{348} int local113; // m[r28 + 12]{349} int local114; // m[r28 + 16]{350} int local115; // m[r28 + 20]{351} int local116; // m[r28 + 4]{487} int local117; // m[r31 + 12]{352} int local118; // m[r31 + 16]{353} int local119; // m[m[0x40c0d0]{145} + 40]{488} int local12; // r27{243} int local120; // m[m[0x40c0d0]{0} + 4]{489} int local121; // m[m[0x40c0d0]{0} + 8]{490} int local122; // m[m[0x40c0d0]{0} + 20]{491} int local123; // m[m[0x40c0d0]{0} + 24]{492} int local124; // m[m[0x40c0d0]{0} + 28]{493} int local125; // m[m[0x40c0d0]{0} + 32]{494} int local126; // m[m[0x40c0d0]{0} + 40]{495} int local127; // m[m[0x40c0d0]{0} + 44]{496} int local128; // m[m[0x40c0d0]{0} + 48]{497} int local129; // m[m[0x40c0d0]{0} + 52]{498} int local13; // r27{64} int local130; // m[m[0x40c0d0]{0} + 56]{499} int local131; // m[m[0x40c0d0]{0} + 60]{500} int local132; // m[m[0x40c0d0]{0} + 64]{501} int local133; // m[m[0x40c0d0]{0} + 68]{502} int local134; // m[m[0x40c0d0]{0} + 72]{503} int local135; // m[m[0x40c0d0]{0} + 76]{504} int local136; // m[m[0x40c0d0]{0} + 80]{505} int local137; // m[global1{0} + 40]{506} int local138; // m[global1{0} + 44]{507} int local139; // m[global1{0} + 48]{508} int local14; // r28{64} int local140; // m[global1{0} + 52]{509} int local141; // m[(r26 + r28) - 100]{510} int local142; // m[(r26 + r28) - 192]{511} int local143; // m[(r26 + r28) - 304]{512} int local144; // m[(r26 + r28) - 160]{513} int local145; // m[(r26 + r28) - 252]{514} int local146; // m[(r26 + r28) - 364]{515} int local147; // m[r28 - 4]{359} int local148; // m[r28 - 4]{360} int local149; // m[r28 - 4]{361} int local15; // r28{322} int local150; // m[r28 - 4]{362} int local151; // m[r28 - 4]{363} int local152; // m[r28 - 4]{364} int local153; // m[r28 - 4]{354} int local154; // m[r28 - 8]{355} int local155; // m[r28 - 12]{356} int local156; // m[r28 - 16]{357} int local157; // m[r28 - 60]{516} int local158; // m[r28 - 64]{358} int local159; // m[r28 - 68]{517} int local16; // r28{308} int local160; // m[r29 - 20]{365} int local161; // m[r29 - 20]{33} int local162; // m[r29 - 16]{367} int local163; // m[r29 - 20]{368} int local164; // m[r27]{518} int local165; // m[r28]{369} int local166; // m[r28]{370} int local167; // m[r28]{371} int local168; // m[r30]{519} int local169; // m[m[0x40c0d0]{0}]{520} int local17; // r28{205} int local170; // m[0x40c0d0]{521} int local171; // m[0x40d118]{522} int local172; // m[0x40d128]{523} int local173; // m[0x40d13c]{524} int local174; // {233} int local175; // GetLastError{525} int local176; // SetLastError{526} int local177; // TlsGetValue{527} int local178; // global1{528} int local179; // %pc{235} int local18; // r28{145} int local180; // m[r29 - 20]{366} int local181; // r0{199} int local182; // r8{200} int local183; // r27{28} int local184; // r28{217} int local185; // r30{218} int local186; // r31{208} int local187; int local188; int local189; // m[r28 + 8]{64} int local19; // r29{245} int local190; // m[r28 + 12]{64} int local191; // m[r28 + 16]{64} int local192; // m[r28 + 20]{64} int local193; // m[r28 + 4]{64} int local194; // m[r31 + 12]{64} int local195; // m[r31 + 16]{64} int local196; // m[m[0x40c0d0]{145} + 40]{64} int local197; // m[m[0x40c0d0]{0} + 4]{64} int local198; // m[m[0x40c0d0]{0} + 8]{64} int local199; // m[m[0x40c0d0]{0} + 20]{64} int local2; // m[0x40c0d0]{64} int local20; // r29{230} int local200; // m[m[0x40c0d0]{0} + 24]{64} int local201; // m[m[0x40c0d0]{0} + 28]{64} int local202; // m[m[0x40c0d0]{0} + 32]{64} int local203; // m[m[0x40c0d0]{0} + 40]{64} int local204; // m[m[0x40c0d0]{0} + 44]{64} int local205; // m[m[0x40c0d0]{0} + 48]{64} int local206; // m[m[0x40c0d0]{0} + 52]{64} int local207; // m[m[0x40c0d0]{0} + 56]{64} int local208; // m[m[0x40c0d0]{0} + 60]{64} int local209; // m[m[0x40c0d0]{0} + 64]{64} int local21; // r29{206} int local210; // m[m[0x40c0d0]{0} + 68]{64} int local211; // m[m[0x40c0d0]{0} + 72]{64} int local212; // m[m[0x40c0d0]{0} + 76]{64} int local213; // m[m[0x40c0d0]{0} + 80]{64} int local214; // m[global1{0} + 40]{64} int local215; // m[global1{0} + 44]{64} int local216; // m[global1{0} + 48]{64} int local217; // m[global1{0} + 52]{64} int local218; // m[(r26 + r28) - 100]{64} int local219; // m[(r26 + r28) - 192]{64} int local22; // r29{64} int local220; // m[(r26 + r28) - 304]{64} int local221; // m[(r26 + r28) - 160]{64} int local222; // m[(r26 + r28) - 252]{64} int local223; // m[(r26 + r28) - 364]{64} int local224; int local225; int local226; int local227; // m[r28 - 4]{342} int local228; // m[r28 - 4]{343} int local229; // m[r28 - 4]{64} int local23; // r30{246} int local230; // m[r28 - 4]{1} int local231; // m[r28 - 8]{4} int local232; // m[r28 - 12]{6} int local233; // m[r28 - 16]{8} int local234; // m[r28 - 60]{64} int local235; // m[r28 - 64]{341} int local236; // m[r28 - 68]{64} int local237; int local238; // m[r29 - 20]{64} int local239; // m[r29 - 16]{27} int local24; // r30{64} int local240; // m[r29 - 20]{29} int local241; // m[r27]{64} int local242; int local243; // m[r28]{344} int local244; // m[r28]{64} int local245; // m[r30]{64} int local246; // m[m[0x40c0d0]{0}]{64} int local247; // m[0x40d118]{145} int local248; // m[0x40d128]{64} int local249; // m[0x40d13c]{64} int local25; // r31{247} int local250; // {145} int local251; // GetLastError{64} int local252; // SetLastError{64} int local253; // TlsGetValue{64} int local254; // %pc{220} int local255; // r30{207} int local256; int local257; int local258; // %pc{210} int local259; // r0{145} int local26; // r31{64} int local260; // r8{145} int local261; // r28{11} int local262; // r29{3} int local263; // r31{14} int local264; int local265; // m[r28 - 64]{64} void *local266; // %pc{64} int local267; // m[r28 - 8] int local268; // m[r28 - 4] int local269; // m[0x40d118] int local27; // m[r28 + 4]{529} int local270; // r26{64} DWORD local271; // r30{101} int local272; // m[r28 - 4]{112} DWORD local273; // m[r28]{110} int local274; // %pc{113} short local275; // r0{123} char local276; // r8{123} int local277; // r28{123} int local278; // r29{123} int local279; // r30{123} int local28; // m[r31 + 12]{379} int local280; // r31{123} int local281; // m[r28 - 64]{121} int local282; // %pc{122} short local283; // r0{302} char local284; // r8{132} int local285; // r28{132} int local286; // r29{309} int local287; // r30{310} int local288; // r31{311} int local289; // m[r28 - 4]{130} int local29; // m[r31 + 16]{380} int local290; // m[r28 - 64]{480} int local291; // %pc{131} int local292; // r26{114} int local293; // r28{114} int local294; // r26{123} int local295; // r27{123} int local296; // r26{132} char local297; // r8{303} int local298; // %pc{313} int local299; // r26{105} int local3; // m[0x40d118]{64} int local30; // m[m[0x40c0d0]{145} + 40]{372} int local300; // m[r28 - 64] int local301; // r26{99} short local302; // local181{199} char local303; // local182{200} int local304; // local17{205} int local305; // local21{206} int local306; // local255{207} int local307; // local186{208} int local308; // local258{210} int local309; // local235{341} int local31; // m[m[0x40c0d0]{0} + 4]{531} int local310; // local227{342} DWORD local311; // local185{218} int local312; // local254{220} int local313; // local228{343} DWORD local314; // local243{344} short local315; // local104{223} char local316; // local105{224} int local317; // local106{228} int local318; // local107{229} int local319; // local20{230} int local32; // m[m[0x40c0d0]{0} + 8]{532} int local320; // local108{231} int local321; // local109{232} int local322; // local174{233} void *local323; // local179{235} int local324; // local110{346} int local325; // local111{347} int local326; // local112{348} int local327; // local113{349} int local328; // local114{350} int local329; // local115{351} int local33; // m[m[0x40c0d0]{0} + 20]{533} int local330; // local117{352} int local331; // local118{353} int local332; // local153{354} int local333; // local154{355} int local334; // local155{356} int local335; // local156{357} int local336; // local158{358} int local337; // local147{359} int local338; // local148{360} int local339; // local149{361} int local34; // m[m[0x40c0d0]{0} + 24]{534} int local340; // local150{362} int local341; // local151{363} int local342; // local152{364} int local343; // local160{365} int local344; // local180{366} int local345; // local162{367} int local346; // local163{368} int local347; // local165{369} int local348; // local166{370} int local349; // local167{371} int local35; // m[m[0x40c0d0]{0} + 28]{535} int local350; // local116{487} int local351; // local119{488} int local352; // local120{489} int local353; // local121{490} int local354; // local122{491} int local355; // local123{492} int local356; // local124{493} int local357; // local125{494} int local358; // local126{495} int local359; // local127{496} int local36; // m[m[0x40c0d0]{0} + 32]{536} int local360; // local128{497} int local361; // local129{498} int local362; // local130{499} int local363; // local131{500} int local364; // local132{501} int local365; // local133{502} int local366; // local134{503} int local367; // local135{504} int local368; // local136{505} int local369; // local137{506} int local37; // m[m[0x40c0d0]{0} + 40]{537} int local370; // local138{507} int local371; // local139{508} int local372; // local140{509} int local373; // local141{510} int local374; // local142{511} int local375; // local143{512} int local376; // local144{513} int local377; // local145{514} int local378; // local146{515} int local379; // local157{516} int local38; // m[m[0x40c0d0]{0} + 44]{538} int local380; // local159{517} int local381; // local164{518} int local382; // local168{519} int local383; // local169{520} int local384; // local170{521} int local385; // local171{522} int local386; // local172{523} int local387; // local173{524} int local388; // local175{525} int local389; // local176{526} int local39; // m[m[0x40c0d0]{0} + 48]{539} int local390; // local177{527} int local391; // local178{528} short local392; // local9{238} char local393; // local10{239} int local394; // local12{243} int local395; // local83{244} int local396; // local19{245} int local397; // local23{246} int local398; // local25{247} int local399; // local80{248} int local4; // {64} int local40; // m[m[0x40c0d0]{0} + 52]{540} int local400; // local82{250} int local401; // local30{372} int local402; // local84{373} int local403; // local85{374} int local404; // local86{375} int local405; // local87{376} int local406; // local88{377} int local407; // local89{378} int local408; // local28{379} int local409; // local29{380} int local41; // m[m[0x40c0d0]{0} + 56]{541} int local410; // local63{381} int local411; // local64{382} int local412; // local65{383} int local413; // local66{384} int local414; // local68{385} int local415; // local58{386} int local416; // local59{387} int local417; // local60{388} int local418; // local61{389} int local419; // local62{390} int local42; // m[m[0x40c0d0]{0} + 60]{542} int local420; // local91{391} int local421; // local70{392} int local422; // local71{393} int local423; // local72{394} int local424; // local73{395} int local425; // local75{396} int local426; // local76{397} int local427; // local92{398} int local428; // local27{529} int local429; // local90{530} int local43; // m[m[0x40c0d0]{0} + 64]{543} int local430; // local31{531} int local431; // local32{532} int local432; // local33{533} int local433; // local34{534} int local434; // local35{535} int local435; // local36{536} int local436; // local37{537} int local437; // local38{538} int local438; // local39{539} int local439; // local40{540} int local44; // m[m[0x40c0d0]{0} + 68]{544} int local440; // local41{541} int local441; // local42{542} int local442; // local43{543} int local443; // local44{544} int local444; // local45{545} int local445; // local46{546} int local446; // local47{547} int local447; // local48{548} int local448; // local49{549} int local449; // local50{550} int local45; // m[m[0x40c0d0]{0} + 72]{545} int local450; // local51{551} int local451; // local52{552} int local452; // local53{553} int local453; // local54{554} int local454; // local55{555} int local455; // local56{556} int local456; // local57{557} int local457; // local67{558} int local458; // local69{559} int local459; // local74{560} int local46; // m[m[0x40c0d0]{0} + 76]{546} int local460; // local77{561} int local461; // local78{562} int local462; // local93{563} int local463; // local94{564} int local464; // local95{565} int local465; // local96{566} int local466; // local97{567} int local467; // local98{568} int local468; // local99{569} int local469; // local100{570} int local47; // m[m[0x40c0d0]{0} + 80]{547} int local470; // local101{254} short local471; // r0{257} int local472; // r26{261} int local473; // r29{264} int local474; // {267} int local475; // m[0x40c0d0]{605} int local476; // m[0x40d118]{606} int local477; // m[0x40d128]{607} int local478; // m[0x40d13c]{608} int local479; // GetLastError{609} int local48; // m[global1{0} + 40]{548} int local480; // SetLastError{610} int local481; // TlsGetValue{611} int local482; // global1{612} int local483; // r0{272} int local484; // r26{276} int local485; // {282} int local486; // m[0x40c0d0]{647} int local487; // m[0x40d118]{648} int local488; // m[0x40d128]{649} int local489; // m[0x40d13c]{650} int local49; // m[global1{0} + 44]{549} int local490; // GetLastError{651} int local491; // SetLastError{652} int local492; // TlsGetValue{653} int local493; // global1{654} int local494; // r0{287} int local495; // r26{291} int local496; // m[0x40c0d0]{689} int local497; // m[0x40d118]{690} int local498; // m[0x40d128]{691} int local499; // m[0x40d13c]{692} int local5; // r24{114} int local50; // m[global1{0} + 48]{550} int local500; // GetLastError{693} int local501; // SetLastError{694} int local502; // TlsGetValue{695} int local503; // global1{696} short local504; // local283{302} char local505; // local297{303} int local506; // local16{308} int local507; // local286{309} int local508; // local287{310} int local509; // local288{311} int local51; // m[global1{0} + 52]{551} int local510; // local298{313} int local511; // local290{480} int local512; // r8{317} int local513; // local15{322} char local514; // r11 int local515; // r24 int local516; // r28 int local52; // m[(r26 + r28) - 100]{552} int local53; // m[(r26 + r28) - 192]{553} int local54; // m[(r26 + r28) - 304]{554} int local55; // m[(r26 + r28) - 160]{555} int local56; // m[(r26 + r28) - 252]{556} int local57; // m[(r26 + r28) - 364]{557} int local58; // m[r28 - 4]{386} int local59; // m[r28 - 4]{387} DWORD local6; // r24{99} int local60; // m[r28 - 4]{388} int local61; // m[r28 - 4]{389} int local62; // m[r28 - 4]{390} int local63; // m[r28 - 4]{381} int local64; // m[r28 - 8]{382} int local65; // m[r28 - 12]{383} int local66; // m[r28 - 16]{384} int local67; // m[r28 - 60]{558} int local68; // m[r28 - 64]{385} int local69; // m[r28 - 68]{559} int local7; // r28{105} int local70; // m[r29 - 20]{392} int local71; // m[r29 - 20]{393} int local72; // m[r29 - 16]{394} int local73; // m[r29 - 20]{395} int local74; // m[r27]{560} int local75; // m[r28]{396} int local76; // m[r28]{397} int local77; // m[r30]{561} int local78; // m[m[0x40c0d0]{0}]{562} int local79; // m[0x40c0d0]{145} int local8; // r28{99} int local80; // {248} int local81; // global1{64} int local82; // %pc{250} int local83; // r28{244} int local84; // m[r28 + 4]{373} int local85; // m[r28 + 4]{374} int local86; // m[r28 + 8]{375} int local87; // m[r28 + 12]{376} int local88; // m[r28 + 16]{377} int local89; // m[r28 + 20]{378} short local9; // r0{238} int local90; // m[m[0x40c0d0]{145} + 40]{530} int local91; // m[r28 - 4]{391} int local92; // m[r28]{398} int local93; // m[0x40c0d0]{563} int local94; // m[0x40d118]{564} int local95; // m[0x40d128]{565} int local96; // m[0x40d13c]{566} int local97; // GetLastError{567} int local98; // SetLastError{568} int local99; // TlsGetValue{569} local453 = *(int*)(local11 + local18 - 304); local452 = *(int*)(local11 + local18 - 192); local451 = *(int*)(local11 + local18 - 100); local427 = *(int*)local83; local425 = *(int*)local15; local422 = *(int*)(local20 - 20); local421 = *(int*)(local22 - 20); local420 = *(int*)(local83 - 4); local417 = *(int*)(local15 - 4); local416 = *(int*)(local14 - 4); local415 = *(int*)(local18 - 4); local409 = *(int*)(local26 + 16); local408 = *(int*)(local26 + 12); local407 = *(int*)(local83 + 20); local406 = *(int*)(local83 + 16); local405 = *(int*)(local83 + 12); local404 = *(int*)(local83 + 8); local314 = *(int*)local17; local313 = *(int*)(local17 - 4); local310 = *(int*)(local16 - 4); local310 = *(int*)(local16 - 4); local230 = param18; local262 = local516 - 4; local231 = param20; local232 = param19; local233 = param17; local261 = local516 - 60; local263 = param2; local302 = param13; local303 = param14; local304 = local261; local305 = local262; local306 = param19; local307 = local263; local309 = local300; local399 = param50; local401 = *(int*)(local79 + 40); local402 = *(int*)(local15 + 4); local403 = *(int*)(local83 + 4); local410 = local230; local411 = local231; local412 = local232; local413 = local233; local428 = *(int*)(local516 + 4); local429 = *(int*)(local79 + 40); local430 = *(int*)(*(int*)0x40c0d0 + 4); local431 = *(int*)(*(int*)0x40c0d0 + 8); local432 = *(int*)(*(int*)0x40c0d0 + 20); local433 = *(int*)(*(int*)0x40c0d0 + 24); local434 = *(int*)(*(int*)0x40c0d0 + 28); local435 = *(int*)(*(int*)0x40c0d0 + 32); local436 = *(int*)(*(int*)0x40c0d0 + 40); local437 = *(int*)(*(int*)0x40c0d0 + 44); local438 = *(int*)(*(int*)0x40c0d0 + 48); local439 = *(int*)(*(int*)0x40c0d0 + 52); local440 = *(int*)(*(int*)0x40c0d0 + 56); local441 = *(int*)(*(int*)0x40c0d0 + 60); local442 = *(int*)(*(int*)0x40c0d0 + 64); local443 = *(int*)(*(int*)0x40c0d0 + 68); local444 = *(int*)(*(int*)0x40c0d0 + 72); local445 = *(int*)(*(int*)0x40c0d0 + 76); local446 = *(int*)(*(int*)0x40c0d0 + 80); local447 = *(int*)(global1 + 40); local448 = *(int*)(global1 + 44); local449 = *(int*)(global1 + 48); local450 = *(int*)(global1 + 52); local454 = *(int*)(param16 + local516 - 160); local455 = *(int*)(param16 + local516 - 252); local456 = *(int*)(param16 + local516 - 364); local457 = *(int*)(local516 - 60); local458 = *(int*)(local516 - 68); local459 = *(int*)param17; local460 = *(int*)param19; local461 = *(int*)*(int*)0x40c0d0; local462 = *(int*)0x40c0d0; local463 = local269; local464 = *(int*)0x40d128; local465 = *(int*)0x40d13c; local466 = GetLastError; local467 = SetLastError; local468 = TlsGetValue; local469 = global1; local504 = param13; local505 = param14; local506 = local261; local507 = local262; local508 = param19; local509 = local263; local511 = local300; if (global1 == 0) { local279 = proc32(param13, param14, param15, param17, local516 - 4, param19, param2, param27, param28, param50); /* Warning: also results in local275, local276, local277, local278, local280 */ local302 = local275; local303 = local276; local304 = local277; local305 = local278; local306 = local279; local307 = local280; local308 = local282; local309 = local281; local504 = local275; local505 = local276; local506 = local277; local507 = local278; local508 = local279; local509 = local280; local510 = local282; local511 = local281; if (param27 < 0) { L35: local283 = local504; local297 = local505; local16 = local506; local286 = local507; local287 = local508; local288 = local509; local298 = local510; local290 = local511; local289 = local298; local291 = local298 - 1148; local284 = proc33(local297, param27, param27, param29, *(int*)(global1 + 56)); /* Warning: also results in local285 */ local302 = local283; local303 = local284; local304 = local285; local305 = local286; local306 = local287; local307 = local288; local308 = local291; local309 = local290; local310 = local289; } } else { if (param27 < 0) { goto L35; } } local181 = local302; local182 = local303; local17 = local304; local21 = local305; local255 = local306; local186 = local307; local258 = local308; local235 = local309; local227 = local310; local311 = local255; local312 = local258; local392 = local181; local393 = local182; local396 = local21; local398 = local186; local414 = local235; local418 = local227; if (param27 != 0) { local6 = GetLastError(); local271 = local6; local515 = TlsGetValue(param28); local311 = local271; local273 = local6; local272 = TlsGetValue; local274 = SetLastError; SetLastError(local6); local312 = local274; local313 = local272; local314 = local273; } else { local515 = param26;