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, <all>); /* Warning: also results in local36, local27, local32, local33, local35, local37 */
    *(int*)(local34 - 4) = local3 + 0x35cb;
    local36 = proc3(local32, local33, local35, local36, <all>, 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, <all>); /* 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, <all>);
    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 = &param6;
    *(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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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; 		// <all>{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;
    }
    local184 = local17;
    local185 = local311;
    local254 = local312;
    local228 = local313;
    local243 = local314;
    local239 = local515;
    local183 = local21 - 20;
    local240 = local515;
    local394 = local183;
    local395 = local184;
    local397 = local185;
    local400 = local254;
    local419 = local228;
    local423 = local239;
    local424 = local240;
    local426 = local243;
    for(;;) {
        local9 = local392;
        local10 = local393;
        local12 = local394;
        local83 = local395;
        local19 = local396;
        local23 = local397;
        local25 = local398;
        local80 = local399;
        local82 = local400;
        local30 = local401;
        local84 = local402;
        local85 = local403;
        local86 = local404;
        local87 = local405;
        local88 = local406;
        local89 = local407;
        local28 = local408;
        local29 = local409;
        local63 = local410;
        local64 = local411;
        local65 = local412;
        local66 = local413;
        local68 = local414;
        local58 = local415;
        local59 = local416;
        local60 = local417;
        local61 = local418;
        local62 = local419;
        local91 = local420;
        local70 = local421;
        local71 = local422;
        local72 = local423;
        local73 = local424;
        local75 = local425;
        local76 = local426;
        local92 = local427;
        local27 = local428;
        local90 = local429;
        local31 = local430;
        local32 = local431;
        local33 = local432;
        local34 = local433;
        local35 = local434;
        local36 = local435;
        local37 = local436;
        local38 = local437;
        local39 = local438;
        local40 = local439;
        local41 = local440;
        local42 = local441;
        local43 = local442;
        local44 = local443;
        local45 = local444;
        local46 = local445;
        local47 = local446;
        local48 = local447;
        local49 = local448;
        local50 = local449;
        local51 = local450;
        local52 = local451;
        local53 = local452;
        local54 = local453;
        local55 = local454;
        local56 = local455;
        local57 = local456;
        local67 = local457;
        local69 = local458;
        local74 = local459;
        local77 = local460;
        local78 = local461;
        local93 = local462;
        local94 = local463;
        local95 = local464;
        local96 = local465;
        local97 = local466;
        local98 = local467;
        local99 = local468;
        local100 = local469;
        param15 = 0;
        local103 = 5;
        local315 = local9;
        local316 = local10;
        local317 = local12;
        local318 = local83;
        local319 = local19;
        local320 = local23;
        local321 = local25;
        local322 = local80;
        local323 = local82;
        local324 = local84;
        local325 = local85;
        local326 = local86;
        local327 = local87;
        local328 = local88;
        local329 = local89;
        local330 = local28;
        local331 = local29;
        local332 = local63;
        local333 = local64;
        local334 = local65;
        local335 = local66;
        local336 = local68;
        local337 = local58;
        local338 = local59;
        local339 = local60;
        local340 = local61;
        local341 = local62;
        local342 = local91;
        local343 = local70;
        local344 = local71;
        local345 = local72;
        local346 = local73;
        local347 = local75;
        local348 = local76;
        local349 = local92;
        local350 = local27;
        local351 = local90;
        local352 = local31;
        local353 = local32;
        local354 = local33;
        local355 = local34;
        local356 = local35;
        local357 = local36;
        local358 = local37;
        local359 = local38;
        local360 = local39;
        local361 = local40;
        local362 = local41;
        local363 = local42;
        local364 = local43;
        local365 = local44;
        local366 = local45;
        local367 = local46;
        local368 = local47;
        local369 = local48;
        local370 = local49;
        local371 = local50;
        local372 = local51;
        local373 = local52;
        local374 = local53;
        local375 = local54;
        local376 = local55;
        local377 = local56;
        local378 = local57;
        local379 = local67;
        local380 = local69;
        local381 = local74;
        local382 = local77;
        local383 = local78;
        local384 = local93;
        local385 = local94;
        local386 = local95;
        local387 = local96;
        local388 = local97;
        local389 = local98;
        local390 = local99;
        local391 = local100;
        local470 = local103;
        local471 = local9;
        local473 = local19;
        local474 = local80;
        local475 = local93;
        local476 = local94;
        local477 = local95;
        local478 = local96;
        local479 = local97;
        local480 = local98;
        local481 = local99;
        local482 = local100;
        local494 = local9;
        local496 = local93;
        local497 = local94;
        local498 = local95;
        local499 = local96;
        local500 = local97;
        local501 = local98;
        local502 = local99;
        local503 = local100;
        if (local515 != 0) {
            param15 = *(int*)(local515 + 24);
            local102 = 0;
            local470 = local102;
        }
        local101 = local470;
        local472 = local101;
        local495 = local101;
        if (local101 == 5) {
            param17 = *(int*)(local19 - 12);
            param19 = *(int*)(local19 - 8);
            param20 = *(int*)(local19 - 4);
            param18 = *(int*)local19;
            goto L0;
        }
        if (local101 != 0) {
L3:
            param13 = local471;
            param16 = local472;
            param18 = local473;
            param50 = local474;
            global1 = local475;
            GetLastError = local476;
            SetLastError = local477;
            TlsGetValue = local478;
            GetLastError = local479;
            SetLastError = local480;
            TlsGetValue = local481;
            global1 = local482;
            local483 = param13;
            local484 = param16;
            local485 = param50;
            local486 = *(int*)0x40c0d0;
            local487 = local269;
            local488 = *(int*)0x40d128;
            local489 = *(int*)0x40d13c;
            local490 = GetLastError;
            local491 = SetLastError;
            local492 = TlsGetValue;
            local493 = global1;
L2:
            param13 = local483;
            param16 = local484;
            param50 = local485;
            global1 = local486;
            GetLastError = local487;
            SetLastError = local488;
            TlsGetValue = local489;
            GetLastError = local490;
            SetLastError = local491;
            TlsGetValue = local492;
            global1 = local493;
            param17 = *(int*)(param18 - 12);
            param19 = *(int*)(param18 - 8);
            param20 = *(int*)(param18 - 4);
            param18 = *(int*)param18;
            local494 = param13;
            local495 = param16;
            local496 = *(int*)0x40c0d0;
            local497 = local269;
            local498 = *(int*)0x40d128;
            local499 = *(int*)0x40d13c;
            local500 = GetLastError;
            local501 = SetLastError;
            local502 = TlsGetValue;
            local503 = global1;
L0:
            param13 = local494;
            param16 = local495;
            global1 = local496;
            GetLastError = local497;
            SetLastError = local498;
            TlsGetValue = local499;
            GetLastError = local500;
            SetLastError = local501;
            TlsGetValue = local502;
            global1 = local503;
            return param19; /* WARNING: Also returning: param13, param15, param16, param17, param18, param20 */
        }
        if (param15 != 0) {
            (*param15)(*(int*)(local516 - 72), *(int*)(local14 - 72), local69, local68, *(int*)(local14 - 64), local67, local66, local65, local64, *(int*)(local14 - 8), local82, local62, local61, local60, local59, local58, local63, 1, local27, *(int*)(local14 + 4), *(int*)local25, *(int*)(local14 + 8), param7, *(int*)(local25 + 4), *(int*)(local14 + 12), param9, local25, *(int*)(local14 + 16), param11, local12, param12, local9, local10, 1, param15, *(int*)(local25 + 4), local12, local19, local23, local25, local28, local29, param21, param22, local30, local31, local32, local33, local34, local35, local36, local37, local38, local39, local40, local41, local42, local43, local44, local45, local46, local47, *(int*)(local81 + 44), *(int*)(local81 + 48), *(int*)(local81 + 52), local48, local49, local50, local51, local52, local53, local54, param30, local55, param32, local56, param34, local57, *(int*)(local11 + local18 - 100), *(int*)(local11 + local18 - 192), *(int*)(local11 + local18 - 304), param30, param32, param34, param31, param33, param35, *(int*)(local13 + local14 - 164), *(int*)(local13 + local14 - 256), *(int*)(local13 + local14 - 368), *(int*)(param17 + local516 - 164), *(int*)(param17 + local516 - 256), *(int*)(param17 + local516 - 368), local70, local71, local72, local73, param45, *(int*)local13, local74, *(int*)local14, local75, local76, 1, *(int*)local24, local77, local78, local80, LOGICALFLAGS32(param15), LOGICALFLAGS32(param15));
            local315 = local1;
            local316 = local0;
            local317 = local13;
            local318 = local14;
            local319 = local22;
            local320 = local24;
            local321 = local26;
            local322 = local4;
            local323 = local266;
            local324 = local187;
            local325 = local188;
            local326 = local189;
            local327 = local190;
            local328 = local191;
            local329 = local192;
            local330 = local194;
            local331 = local195;
            local332 = *(int*)(local516 - 4);
            local333 = *(int*)(local516 - 8);
            local334 = *(int*)(local516 - 12);
            local335 = *(int*)(local516 - 16);
            local336 = local265;
            local337 = local224;
            local338 = local225;
            local339 = local226;
            local340 = local264;
            local341 = local256;
            local342 = local229;
            local343 = local237;
            local344 = local238;
            local345 = *(int*)(local21 - 16);
            local346 = *(int*)(local21 - 20);
            local347 = local242;
            local348 = local257;
            local349 = local244;
            local350 = local193;
            local351 = local196;
            local352 = local197;
            local353 = local198;
            local354 = local199;
            local355 = local200;
            local356 = local201;
            local357 = local202;
            local358 = local203;
            local359 = local204;
            local360 = local205;
            local361 = local206;
            local362 = local207;
            local363 = local208;
            local364 = local209;
            local365 = local210;
            local366 = local211;
            local367 = local212;
            local368 = local213;
            local369 = local214;
            local370 = local215;
            local371 = local216;
            local372 = local217;
            local373 = local218;
            local374 = local219;
            local375 = local220;
            local376 = local221;
            local377 = local222;
            local378 = local223;
            local379 = local234;
            local380 = local236;
            local381 = local241;
            local382 = local245;
            local383 = local246;
            local384 = local2;
            local385 = local3;
            local386 = local248;
            local387 = local249;
            local388 = local251;
            local389 = local252;
            local390 = local253;
            local391 = local81;
            local471 = local1;
            local472 = local270;
            local473 = local22;
            local474 = local4;
            local475 = local2;
            local476 = local3;
            local477 = local248;
            local478 = local249;
            local479 = local251;
            local480 = local252;
            local481 = local253;
            local482 = local81;
            local483 = local1;
            local485 = local4;
            local486 = local2;
            local487 = local3;
            local488 = local248;
            local489 = local249;
            local490 = local251;
            local491 = local252;
            local492 = local253;
            local493 = local81;
            local512 = local0;
            if (local515 == 6) {
                break;
            }
            if (local515 != 8) {
                goto L3;
            }
            goto L4;
        }
L4:
        local104 = local315;
        local105 = local316;
        local106 = local317;
        local107 = local318;
        local20 = local319;
        local108 = local320;
        local109 = local321;
        local174 = local322;
        local179 = local323;
        local110 = local324;
        local111 = local325;
        local112 = local326;
        local113 = local327;
        local114 = local328;
        local115 = local329;
        local117 = local330;
        local118 = local331;
        local153 = local332;
        local154 = local333;
        local155 = local334;
        local156 = local335;
        local158 = local336;
        local147 = local337;
        local148 = local338;
        local149 = local339;
        local150 = local340;
        local151 = local341;
        local152 = local342;
        local160 = local343;
        local180 = local344;
        local162 = local345;
        local163 = local346;
        local165 = local347;
        local166 = local348;
        local167 = local349;
        local116 = local350;
        local119 = local351;
        local120 = local352;
        local121 = local353;
        local122 = local354;
        local123 = local355;
        local124 = local356;
        local125 = local357;
        local126 = local358;
        local127 = local359;
        local128 = local360;
        local129 = local361;
        local130 = local362;
        local131 = local363;
        local132 = local364;
        local133 = local365;
        local134 = local366;
        local135 = local367;
        local136 = local368;
        local137 = local369;
        local138 = local370;
        local139 = local371;
        local140 = local372;
        local141 = local373;
        local142 = local374;
        local143 = local375;
        local144 = local376;
        local145 = local377;
        local146 = local378;
        local157 = local379;
        local159 = local380;
        local164 = local381;
        local168 = local382;
        local169 = local383;
        local170 = local384;
        local171 = local385;
        local172 = local386;
        local173 = local387;
        local175 = local388;
        local176 = local389;
        local177 = local390;
        local178 = local391;
        local515 = *(int*)local180;
        local161 = *(int*)local180;
        local392 = local104;
        local393 = local105;
        local394 = local106;
        local395 = local107;
        local396 = local20;
        local397 = local108;
        local398 = local109;
        local399 = local174;
        local400 = local179;
        local401 = local119;
        local402 = local110;
        local403 = local111;
        local404 = local112;
        local405 = local113;
        local406 = local114;
        local407 = local115;
        local408 = local117;
        local409 = local118;
        local410 = local153;
        local411 = local154;
        local412 = local155;
        local413 = local156;
        local414 = local158;
        local415 = local147;
        local416 = local148;
        local417 = local149;
        local418 = local150;
        local419 = local151;
        local420 = local152;
        local421 = local160;
        local422 = local161;
        local423 = local162;
        local424 = local163;
        local425 = local165;
        local426 = local166;
        local427 = local167;
        local428 = local116;
        local429 = local119;
        local430 = local120;
        local431 = local121;
        local432 = local122;
        local433 = local123;
        local434 = local124;
        local435 = local125;
        local436 = local126;
        local437 = local127;
        local438 = local128;
        local439 = local129;
        local440 = local130;
        local441 = local131;
        local442 = local132;
        local443 = local133;
        local444 = local134;
        local445 = local135;
        local446 = local136;
        local447 = local137;
        local448 = local138;
        local449 = local139;
        local450 = local140;
        local451 = local141;
        local452 = local142;
        local453 = local143;
        local454 = local144;
        local455 = local145;
        local456 = local146;
        local457 = local157;
        local458 = local159;
        local459 = local164;
        local460 = local168;
        local461 = local169;
        local462 = local170;
        local463 = local171;
        local464 = local172;
        local465 = local173;
        local466 = local175;
        local467 = local176;
        local468 = local177;
        local469 = local178;
    }
    local515 = proc56(local1, local0, local26, local13, local13, local22, local24, local26, *(int*)(local81 + 44), *(int*)(local81 + 48), *(int*)(local81 + 52), *(int*)local13, local4); /* Warning: also results in param19, param15, local11, local18, param18, param20 */
    local484 = local11;
    local513 = local18;
    if (local515 == 7) {
        param17 = param45;
        if (local79 != 0) {
L13:
            param14 = local512;
            local15 = local513;
            param20 = *(int*)(local79 + 44);
            if (param20 >= 0) {
L10:
                param19 = *(int*)(local79 + 44);
                if (param19 == 0) {
                    *(int*)(local79 + 40) = param17;
L5:
/* goto m[m[r29 - 20] + 36]*/
                }
                local515 = TlsSetValue(param17, *(int*)(local79 + 48));
                if (local515 == 0) {
                    GetLastError();
                    goto L5;
                }
                goto L5;
            }
            proc33(param14, param15, *(int*)(local81 + 44), *(int*)(local81 + 52), *(int*)(local81 + 56));
            goto L10;
        }
        param14 = proc32(local259, local260, param15, param45, param18, param19, param20, *(int*)(local81 + 44), *(int*)(local81 + 48), local250); /* Warning: also results in param15, param17, param18 */
        local512 = param14;
        local513 = local516;
        goto L13;
    }
    goto L2;
}

// address: 0x403ff0
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) {
    short local0; 		// r0{149}
    int local1; 		// r24{156}
    int local10; 		// r27{149}
    int local100; 		// r27{217}
    int local101; 		// r30{276}
    int local102; 		// r31{277}
    int local103; 		// <all>{217}
    int local104; 		// r29{275}
    int local105; 		// r24{206}
    int local106; 		// r26{109}
    int local107; 		// r27{96}
    int local108; 		// r29{100}
    int local109; 		// r30{97}
    short local11; 		// r0{135}
    int local110; 		// r31{98}
    int local111; 		// r29{93}
    int local112; 		// r27{179}
    int local113; 		// r29{182}
    int local114; 		// r30{180}
    int local115; 		// r31{149}
    int local116; 		// r29{149}
    int local117; 		// r27{193}
    int local118; 		// r29{196}
    int local119; 		// r30{194}
    char local12; 		// r8{135}
    int local120; 		// r29{192}
    int local121; 		// r27{228}
    int local122; 		// r29{232}
    int local123; 		// r30{228}
    int local124; 		// r31{228}
    int local125; 		// r29{228}
    int local126; 		// r27{93}
    int local127; 		// r28{93}
    int local128; 		// r30{93}
    int local129; 		// r31{93}
    int local13; 		// r27{135}
    int local130; 		// r27{85}
    int local131; 		// r28{192}
    int local132; 		// r28{228}
    int local133; 		// r28{217}
    int local134; 		// r30{217}
    int local135; 		// r31{217}
    int local136; 		// r28{149}
    int local137; 		// r30{149}
    int local138; 		// r28{135}
    int local139; 		// r30{135}
    int local14; 		// m[global1{0} + 40]{135}
    int local140; 		// r31{135}
    int local141; 		// r29{217}
    int local142; 		// r29{135}
    int local143; 		// r28{274}
    int local144; 		// r28{115}
    int local145; 		// r28{129}
    short local146; 		// r0{241}
    int local147; 		// local67{249}
    int local148; 		// local70{251}
    int local149; 		// local68{252}
    int local15; 		// m[global1{0} + 44]{135}
    int local150; 		// local69{253}
    int local151; 		// local63{261}
    int local152; 		// local143{274}
    int local153; 		// r8{279}
    int local154; 		// r26{281}
    char local155; 		// r8{285}
    char local156; 		// r8
    int local157; 		// r24
    int local158; 		// r26
    int local159; 		// r28
    int local16; 		// m[global1{0} + 48]{135}
    int local17; 		// m[global1{0} + 52]{135}
    int local18; 		// m[global1{0} + 68]{135}
    int local19; 		// m[global1{0} + 72]{135}
    int local2; 		// r26{155}
    int local20; 		// r10{135}
    int local21; 		// r0{265}
    int local22; 		// r27{273}
    int local23; 		// <all>{115}
    short local24; 		// r0{129}
    char local25; 		// r8{129}
    char local26; 		// r10{129}
    int local27; 		// r25{129}
    int local28; 		// r27{129}
    int local29; 		// r29{129}
    int local3; 		// m[r24]{135}
    int local30; 		// r30{129}
    int local31; 		// r31{129}
    int local32; 		// r0{115}
    int local33; 		// r25{115}
    int local34; 		// r27{115}
    int local35; 		// r29{27}
    int local36; 		// r29{115}
    int local37; 		// r30{115}
    int local38; 		// r31{115}
    int local39; 		// m[global1{0} + 4]{115}
    int local4; 		// <all>{135}
    int local40; 		// m[global1{0} + 8]{115}
    int local41; 		// m[global1{0} + 20]{115}
    int local42; 		// m[global1{0} + 24]{115}
    int local43; 		// m[global1{0} + 28]{115}
    int local44; 		// m[global1{0} + 32]{115}
    int local45; 		// m[global1{0} + 40]{115}
    int local46; 		// m[global1{0} + 44]{115}
    int local47; 		// m[global1{0} + 48]{115}
    int local48; 		// m[global1{0} + 52]{115}
    int local49; 		// m[global1{0} + 56]{115}
    int local5; 		// r26{167}
    int local50; 		// m[global1{0} + 60]{115}
    int local51; 		// m[global1{0} + 64]{115}
    int local52; 		// m[global1{0} + 68]{115}
    int local53; 		// m[global1{0} + 72]{115}
    int local54; 		// m[global1{0} + 76]{115}
    int local55; 		// m[global1{0} + 80]{115}
    int local56; 		// m[global1{0}]{115}
    int local57; 		// r9{115}
    int local58; 		// r11{115}
    short local59; 		// r0{27}
    int local6; 		// r8{162}
    int local60; 		// r24{35}
    int local61; 		// <all>{27}
    int local62; 		// m[r24]{84}
    int local63; 		// r26{261}
    int local64; 		// r26{77}
    int local65; 		// r26{69}
    int local66; 		// r28{23}
    int local67; 		// r27{249}
    int local68; 		// r30{252}
    int local69; 		// r31{253}
    int local7; 		// r26{172}
    int local70; 		// r29{251}
    int local71; 		// r27{60}
    int local72; 		// r29{64}
    int local73; 		// r30{61}
    int local74; 		// r31{62}
    int local75; 		// r29{57}
    int local76; 		// r27{57}
    int local77; 		// r28{57}
    int local78; 		// r30{57}
    int local79; 		// r31{57}
    int local8; 		// m[m[r24]{135} + 20]{135}
    int local80; 		// r28{27}
    void *local81; 		// %pc{27}
    char local82; 		// r8{27}
    char local83; 		// r10{27}
    int local84; 		// r25{27}
    int local85; 		// r26{27}
    int local86; 		// r27{27}
    int local87; 		// r30{27}
    int local88; 		// r31{27}
    short local89; 		// r0{23}
    char local9; 		// r8{149}
    char local90; 		// r8{23}
    int local91; 		// r10{217}
    int local92; 		// r25{23}
    int local93; 		// r27{23}
    int local94; 		// r29{23}
    int local95; 		// r30{23}
    int local96; 		// r31{23}
    int local97; 		// r26{23}
    int local98; 		// r0{217}
    int local99; 		// r25{271}

    param29 = param7;
    param13 = local159 - 16;
    param18 = param6;
    param20 = param8;
    param23 = param9;
    *(int*)(local159 - 44) = 0x402060;
    param12 = 0x405950;
    param14 = 0x4040c7;
    param15 = local159 - 92;
    *(int*)(local159 - 92) = local159 - 68;
    local95 = proc2(local159 - 68, param1, (unsigned char) local159 - 68, param5, param6, local159 - 4, param8, param9, param10, param11, param12, param13, param14); /* Warning: also results in local89, local90, local92, local93, local66, local94, local96 */
    local157 = proc34(local89, local90, param3, local92, local93, local94, local95, local96, param10, param11, param12, param13, *(int*)(global1 + 68), *(int*)(global1 + 72), param14); /* Warning: also results in local59, local80, local35 */
    local60 = *(int*)*(int*)(local35 + 8);
    if ((local158 ^ 0x474e5543 | local60 ^ 0x432b2b00) == 0) {
        local65 = *(int*)(*(int*)(local35 + 8) - 28);
        if (local65 < 0) {
            local106 = 1 - local65;
            local151 = local106;
        } else {
            local64 = local65 + 1;
            local151 = local64;
        }
        local63 = local151;
        *(int*)(*(int*)(local35 + 8) - 28) = local63;
        if (*(int*)(local35 + 8) - 48 != param124) {
            *(int*)(*(int*)(local35 + 8) - 32) = param124;
            local62 = *(int*)(local35 + 8) - 48;
        }
        local130 = *(int*)(*(int*)(local35 + 8) - 8);
        *(int*)(local35 - 68) = local130;
        *(int*)local80 = local35 - 64;
        *(int*)(local80 - 4) = local81;
        param1 = proc5(local59, (unsigned char) local35 - 64, local158 ^ 0x474e5543 | local60 ^ 0x432b2b00, local130, local35, param124, param11, param12, param13, local35 - 64, local61); /* Warning: also results in param5, local158, local111 */
        local146 = param1;
        local156 = (unsigned char) *(int*)(local111 - 68);
        local107 = *(int*)(local111 - 12);
        local109 = *(int*)(local111 - 8);
        local110 = *(int*)(local111 - 4);
        local108 = *(int*)local111;
        local147 = local107;
        local148 = local108;
        local149 = local109;
        local150 = local110;
    } else {
        if (param124 != 0) {
            *(int*)(local80 - 4) = local81;
            local37 = proc37(*(int*)(local80 + 4), *(int*)(local80 + 8), *(int*)(local80 + 12), local59, (unsigned char) local60 ^ 0x432b2b00, local158 ^ 0x474e5543 | local60 ^ 0x432b2b00, local158, *(int*)(local35 + 8) - 48, local35, local157, param124, *(int*)(global1 + 4), *(int*)(global1 + 8), *(int*)(global1 + 20), *(int*)(global1 + 24), *(int*)(global1 + 28), *(int*)(global1 + 32), param10, param11, param12, param13, *(int*)(global1 + 56), *(int*)(global1 + 60), *(int*)(global1 + 64), *(int*)(global1 + 68), *(int*)(global1 + 72), *(int*)(global1 + 76), *(int*)(global1 + 80), *(int*)(local158 + local80 - 156), *(int*)(local158 + local80 - 248), *(int*)(local158 + local80 - 360), *(int*)(global1 + local80 - 244), *(int*)(global1 + local80 - 248), *(int*)(global1 + local80 - 260), *(int*)(global1 + local80 - 336), *(int*)(global1 + local80 - 340), *(int*)(global1 + local80 - 352), *(int*)(global1 + local80 - 448), *(int*)(global1 + local80 - 452), *(int*)(global1 + local80 - 464), *(int*)(*(int*)(local35 + 8) - 48), param124, *(int*)local80, *(int*)param124, *(int*)global1, *(int*)global2, local61); /* Warning: also results in local33, local158, local144, local36, local38 */
            local152 = local144;
            if (*(int*)(local36 - 40) != -1) {
                param2 = proc47(*(int*)(local144 - 56), *(int*)(local144 - 52), *(int*)(local144 + 4), *(int*)(local144 + 8), *(int*)(local144 + 12), *(int*)(local144 + 16), local32, (unsigned char) *(int*)(local36 - 44), local57, local58, local33, local158, local34, local36 + 12, local37, local38, *(int*)(local36 + 4), *(int*)(local36 + 8), *(int*)(local36 + 12), *(int*)(local38 + 12), *(int*)(local38 + 16), local39, local40, local41, local42, local43, local44, local45, local46, local47, local48, local49, local50, local51, local52, local53, local54, local55, *(int*)(local36 + local144 - 176), *(int*)(local36 + local144 - 268), *(int*)(local36 + local144 - 380), *(int*)(local36 + local144 - 176), *(int*)(local36 + local144 - 268), *(int*)(local36 + local144 - 380), *(int*)(local158 + local144 - 104), *(int*)(local158 + local144 - 148), *(int*)(local158 + local144 - 152), *(int*)(local158 + local144 - 196), *(int*)(local158 + local144 - 212), *(int*)(local158 + local144 - 240), *(int*)(local158 + local144 - 244), *(int*)(local158 + local144 - 304), *(int*)(local158 + local144 - 308), *(int*)(local158 + local144 - 352), *(int*)(local158 + local144 - 356), *(int*)(local158 + local144 - 416), *(int*)(local158 + local144 - 104), *(int*)(local158 + local144 - 196), *(int*)(local158 + local144 - 308), *(int*)(local158 + local144 - 148), *(int*)(local158 + local144 - 152), *(int*)(local158 + local144 - 212), *(int*)(local158 + local144 - 240), *(int*)(local158 + local144 - 244), *(int*)(local158 + local144 - 304), *(int*)(local158 + local144 - 352), *(int*)(local158 + local144 - 356), *(int*)(local158 + local144 - 416), *(int*)(local36 - 8), *(int*)(local36 - 12), *(int*)(*(int*)(local35 + 8) - 48), *(int*)(local36 - 44), *(int*)local36, *(int*)local37, local56, local23); /* Warning: also results in param4, local145 */
                local152 = local145;
            }
            local143 = local152;
            local139 = proc48(*(int*)(local143 - 124), *(int*)(local143 - 112), *(int*)(local143 - 88), *(int*)(local143 - 84), *(int*)(local143 - 80), *(int*)(local143 - 76), *(int*)(local143 - 72), *(int*)(local143 - 68), *(int*)(local143 - 60), *(int*)(local143 - 56), local21, param2, param4, local99, local22, local104, local101, local102, *(int*)(global1 + 4), *(int*)(global1 + 8), *(int*)(global1 + 20), *(int*)(global1 + 24), *(int*)(global1 + 28), *(int*)(global1 + 32), param10, param11, param12, param13, *(int*)(global1 + 56), *(int*)(global1 + 60), *(int*)(global1 + 64), *(int*)(global1 + 68), *(int*)(global1 + 72), *(int*)(global1 + 76), *(int*)(global1 + 80), *(int*)(global1 + local143 - 308), *(int*)(global1 + local143 - 400), *(int*)(global1 + local143 - 512), *(int*)local22, *(int*)local101, *(int*)local102, *(int*)global1, local23); /* Warning: also results in local11, local12, param2, param4, param5, local13, local138, local140 */
            local157 = proc49(local11, local12, param5, local13, local138 - 4, local139, local140, local14, local15, local16, local17, local18, local19, local4); /* Warning: also results in local0, local9, param5, local158, local136, local116, local115 */
            local146 = local0;
            local146 = local0;
            local150 = local115;
            local150 = local115;
            local155 = local9;
            if (local3 == 0) {
L8:
                local156 = local155;
                local112 = *(int*)(local116 - 8);
                local114 = *(int*)(local116 - 4);
                local113 = *(int*)local116;
                local147 = local112;
                local148 = local113;
                local149 = local114;
            } else {
                local2 = *(int*)(local3 + 52);
                local1 = *(int*)(local3 + 48);
                local6 = (unsigned char) local1 ^ 0x432b2b00;
                param5 = local2 ^ 0x474e5543 | local1 ^ 0x432b2b00;
                local153 = local6;
                local153 = local6;
                if ((local2 ^ 0x474e5543 | local1 ^ 0x432b2b00) != 0) {
L10:
                    local156 = (unsigned char) local3 + 48;
                    local158 = proc50(local116, local3 + 48); /* Warning: also results in local120 */
                    local117 = *(int*)(local120 - 8);
                    local119 = *(int*)(local120 - 4);
                    local118 = *(int*)local120;
                    local147 = local117;
                    local148 = local118;
                    local149 = local119;
                } else {
                    local5 = local8;
                    if (local5 < 0) {
                        local158 = local5 + 1;
                        local154 = local158;
                        local154 = local158;
                        if (local5 + 1 == 0) {
                            local105 = *(int*)(local3 + 16);
                            local156 = (unsigned char) local105;
                            local153 = local156;
                        }
L12:
                        local156 = local153;
                        local158 = local154;
                        *(int*)(local3 + 20) = local158;
                        local155 = local156;
                        goto L8;
                    } else {
                        local7 = local5 - 1;
                        local154 = local7;
                        if (local5 - 1 == 0) {
                            goto L10;
                        } else {
                            if (local5 - 1 < 0) {
                                local134 = proc37(*(int*)(local136 + 4), *(int*)(local136 + 8), *(int*)(local136 + 12), local0, (unsigned char) local1 ^ 0x432b2b00, local2 ^ 0x474e5543 | local1 ^ 0x432b2b00, local5 - 1, local3, local116, local157, local115, *(int*)(global1 + 4), *(int*)(global1 + 8), *(int*)(global1 + 20), *(int*)(global1 + 24), *(int*)(global1 + 28), *(int*)(global1 + 32), param10, param11, param12, param13, *(int*)(global1 + 56), *(int*)(global1 + 60), *(int*)(global1 + 64), *(int*)(global1 + 68), *(int*)(global1 + 72), *(int*)(global1 + 76), *(int*)(global1 + 80), *(int*)(local5 + local136 - 157), *(int*)(local5 + local136 - 249), *(int*)(local5 + local136 - 361), *(int*)(global1 + local136 - 244), *(int*)(global1 + local136 - 248), *(int*)(global1 + local136 - 260), *(int*)(global1 + local136 - 336), *(int*)(global1 + local136 - 340), *(int*)(global1 + local136 - 352), *(int*)(global1 + local136 - 448), *(int*)(global1 + local136 - 452), *(int*)(global1 + local136 - 464), param124, *(int*)local136, *(int*)local115, *(int*)local3, *(int*)global1, *(int*)global2, local4); /* Warning: also results in param5, local133, local135 */
                                local157 = proc34(local98, local156, local91, param5, local100, local133 - 4, local134, local135, param10, param11, param12, param13, *(int*)(global1 + 68), *(int*)(global1 + 72), local103); /* Warning: also results in local123, param1, param5, local158, local121, local125, local124 */
                                local146 = param1;
                                local147 = local121;
                                local149 = local123;
                                local150 = local124;
                                local122 = *(int*)local125;
                                local156 =  (param44 != 0) ? 1 : 0;
                                local156 = (unsigned char) (local156);
                                local148 = local122;
                            } else {
                                goto L12;
                            }
                        }
                    }
                }
            }
        } else {
            *(int*)(local35 - 68) = 0;
            *(int*)local80 = local35 - 64;
            *(int*)(local80 - 4) = local81;
            param1 = proc5(local59, (unsigned char) local35 - 64, local158 ^ 0x474e5543 | local60 ^ 0x432b2b00, *(int*)(local35 + 8) - 48, local35, param124, param11, param12, param13, local35 - 64, local61); /* Warning: also results in param5, local158, local75 */
            local146 = param1;
            local156 = (unsigned char) *(int*)(local75 - 68);
            local71 = *(int*)(local75 - 12);
            local73 = *(int*)(local75 - 8);
            local74 = *(int*)(local75 - 4);
            local72 = *(int*)local75;
            local147 = local71;
            local148 = local72;
            local149 = local73;
            local150 = local74;
        }
    }
    param1 = local146;
    local67 = local147;
    local70 = local148;
    local68 = local149;
    local69 = local150;
    param29 = param7;
    param23 = param9;
    param20 = param8;
    param18 = param6;
    param15 = local159 - 92;
    param14 = 0x4040c7;
    param13 = local159 - 16;
    param12 = 0x405950;
    *(int*)(local159 - 44) = 0x402060;
    *(int*)(local159 - 92) = local159 - 68;
    return local68; /* WARNING: Also returning: param1, local156, param2, param4, param5, local158, local67, local70, local69 */
}

// address: 0x403f60
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) {
    void *local0; 		// %pc{25}
    int local1; 		// r0{25}
    int local10; 		// r31{13}
    int local11; 		// r31{25}
    int local12; 		// m[0x40c0c0]{43}
    int local13; 		// global1{25}
    int local14; 		// global2{25}
    void *local15; 		// %pc{13}
    int local16; 		// r25{25}
    int local17; 		// <all>{13}
    int local18; 		// m[r28 - 16]{11}
    void *local19; 		// %pc{29}
    int local2; 		// r8{25}
    int local20; 		// m[r28 - 12]{9}
    int local21; 		// m[r28 - 4]{1}
    int local22; 		// r9
    int local23; 		// r11
    int local24; 		// r24
    int local25; 		// r28
    int local3; 		// r25{13}
    int local4; 		// r26{13}
    int local5; 		// r26{25}
    int local6; 		// r27{25}
    int local7; 		// r28{13}
    int local8; 		// r30{13}
    int local9; 		// r30{25}

    local21 = param10;
    local20 = param47;
    local24 = proc45(*(int*)(local25 - 116), *(int*)(local25 - 84), *(int*)(local25 - 80), *(int*)(local25 - 76), *(int*)(local25 - 40), *(int*)*(int*)0x40c0c0, *(int*)(local25 - 8), param10, param5, param6, local22, local23, param7, param9, local25 - 4, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20, param21, param22, param23, param24, param25, param26, param27, param28, param29, *(int*)(global1 + local25 - 240), *(int*)(global1 + local25 - 332), *(int*)(global1 + local25 - 444), *(int*)(global1 + local25 - 240), *(int*)(global1 + local25 - 332), *(int*)(global1 + local25 - 444), param42, param43, param44, param45, param48); /* Warning: also results in local8, local3, local4, local7, param10, local10 */
    *(int*)(local7 - 4) = param10;
    *(int*)(local7 - 16) = local15;
    (**(int*)(local7 + 4))(*(int*)(local25 - 132), *(int*)(local25 - 120), *(int*)(local25 - 100), *(int*)(local25 - 96), *(int*)(local25 - 92), *(int*)(local25 - 88), *(int*)(local25 - 84), *(int*)(local25 - 80), *(int*)(local25 - 68), *(int*)(local25 - 60), *(int*)(local25 - 56), *(int*)(local25 - 52), *(int*)(local25 - 44), *(int*)(local25 - 40), *(int*)(local25 - 28), *(int*)(local25 - 24), *(int*)(local25 - 16), local15, *(int*)(local25 - 12), *(int*)(local25 - 8), *(int*)(local25 - 4), param10, param1, param2, param3, param4, param5, param6, local24, local3, local4, param9, local7 - 4, local8, local10, param13, param14, param15, param16, param17, param18, param19, param20, param21, param22, param23, param24, param25, param26, param27, param28, param29, *(int*)(param8 + local25 - 152), *(int*)(param8 + local25 - 244), *(int*)(param8 + local25 - 356), *(int*)(global1 + local25 - 240), *(int*)(global1 + local25 - 244), *(int*)(global1 + local25 - 256), *(int*)(global1 + local25 - 332), *(int*)(global1 + local25 - 336), *(int*)(global1 + local25 - 348), *(int*)(global1 + local25 - 444), *(int*)(global1 + local25 - 448), *(int*)(global1 + local25 - 460), param42, param43, param44, *(int*)*(int*)0x40c0c0, param45, *(int*)local14, param47, local17, SUBFLAGS32(local7 - 4, 8, local7 - 12), (unsigned)(local7 - 4) < 8);
    *(int*)(local25 - 4) = local0;
    param10 = proc37(param1, param2, param3, local1, local2, local16, local5, local6, param10, local9, local11, *(int*)(local13 + 4), *(int*)(local13 + 8), *(int*)(local13 + 20), *(int*)(local13 + 24), *(int*)(local13 + 28), *(int*)(local13 + 32), *(int*)(local13 + 40), *(int*)(local13 + 44), *(int*)(local13 + 48), *(int*)(local13 + 52), *(int*)(local13 + 56), *(int*)(local13 + 60), *(int*)(local13 + 64), *(int*)(local13 + 68), *(int*)(local13 + 72), *(int*)(local13 + 76), *(int*)(local13 + 80), *(int*)(local5 + local25 - 156), *(int*)(local5 + local25 - 248), *(int*)(local5 + local25 - 360), *(int*)(local13 + local25 - 244), *(int*)(local13 + local25 - 248), *(int*)(local13 + local25 - 260), *(int*)(local13 + local25 - 336), *(int*)(local13 + local25 - 340), *(int*)(local13 + local25 - 352), *(int*)(local13 + local25 - 448), *(int*)(local13 + local25 - 452), *(int*)(local13 + local25 - 464), *(int*)local6, *(int*)local25, *(int*)local9, *(int*)local11, *(int*)local13, *(int*)local14, param48);
    *(int*)(local25 - 4) = param10;
    *(int*)(local25 - 12) = *(int*)*(int*)0x40c0e0;
    *(int*)(local25 - 16) = local19;
    param11 = proc46(*(int*)*(int*)0x40c0e0, local25 - 4); /* Warning: also results in param10, param12 */
    *(int*)(local25 - 4) = param10;
    *(int*)local12 = param1;
    return param11; /* WARNING: Also returning: param1, local12, param10, param12 */
}

// address: 0x405100
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) {
    int local0; 		// r24{188}
    int local1; 		// r26{35}
    int local10; 		// r30{11}
    int local11; 		// r30{193}
    int local12; 		// r30{35}
    int local13; 		// r31{180}
    int local14; 		// r31{35}
    int local15; 		// m[m[r28 + 4] + 8]{166}
    int local16; 		// m[m[r28 + 4] + 12]{166}
    int local17; 		// m[m[r28 + 4] + 16]{166}
    int local18; 		// m[m[r29 - 20]{0} + 32]{166}
    int local19; 		// m[m[r29 - 20]{0} + 36]{166}
    int local2; 		// r27{35}
    int local20; 		// m[m[r29 - 20]{0} + 40]{166}
    int local21; 		// m[m[0x40c0d0]{0} + 48]{166}
    int local22; 		// m[r28 - 24]{166}
    int local23; 		// m[r28 - 28]{166}
    int local24; 		// m[r28 - 32]{166}
    int local25; 		// m[r28 - 36]{166}
    int local26; 		// m[r28 - 40]{166}
    int local27; 		// m[r28 - 44]{166}
    int local28; 		// m[r28 - 48]{240}
    int local29; 		// m[r28 - 52]{166}
    int local3; 		// r28{177}
    int local30; 		// m[m[r29 - 20]]{166}
    int local31; 		// m[0x40c0d0]{166}
    int local32; 		// global1{166}
    int local33; 		// r31{145}
    int local34; 		// r30{144}
    int local35; 		// r26{143}
    int local36; 		// r28{143}
    int local37; 		// r24{98}
    DWORD local38; 		// r24{83}
    int local39; 		// r28{89}
    int local4; 		// r28{204}
    int local40; 		// r28{83}
    int local41; 		// r27{191}
    int local42; 		// r27{19}
    int local43; 		// r30{179}
    int local44; 		// r28{5}
    int local45; 		// r31{8}
    int local46; 		// m[r28 - 48]{166}
    int local47; 		// m[r28 - 12]{10}
    int local48; 		// m[r28 - 16]{9}
    int local49; 		// m[r28 - 8]{7}
    int local5; 		// r28{35}
    int local50; 		// m[r28 - 4]{1}
    int local51; 		// m[r28 - 4]
    int local52; 		// m[r28 - 8]
    int local53; 		// m[0x40d140]
    int local54; 		// TlsSetValue
    int local55; 		// m[0x40d128]
    int local56; 		// SetLastError
    int local57; 		// m[0x40d13c]
    int local58; 		// TlsGetValue
    int local59; 		// m[0x40d118]
    int local6; 		// r29{35}
    int local60; 		// GetLastError
    LPVOID local61; 		// r27{93}
    DWORD local62; 		// r30{85}
    int local63; 		// r28{62}
    int local64; 		// r30{62}
    int local65; 		// r31{62}
    int local66; 		// m[r28 - 48]{60}
    int local67; 		// r26{98}
    int local68; 		// r28{98}
    int local69; 		// r26{131}
    int local7; 		// r29{205}
    int local70; 		// r28{131}
    int local71; 		// r26{62}
    int local72; 		// r27{62}
    int local73; 		// r29{62}
    int local74; 		// r26{89}
    int local75; 		// r26{83}
    int local76; 		// local3{177}
    int local77; 		// local43{179}
    int local78; 		// local13{180}
    int local79; 		// local28{240}
    int local8; 		// r29{178}
    LPVOID local80; 		// local41{191}
    DWORD local81; 		// local11{193}
    int local82; 		// local4{204}
    int local83; 		// local7{205}
    int local84; 		// r27{230}
    int local85; 		// r30{233}
    int local86; 		// r31{234}
    int local87; 		// m[0x40c0d0]{338}
    int local88; 		// m[0x40d118]{339}
    int local89; 		// m[0x40d128]{340}
    int local9; 		// r29{69}
    int local90; 		// m[0x40d13c]{341}
    int local91; 		// m[0x40d140]{342}
    int local92; 		// GetLastError{343}
    int local93; 		// SetLastError{344}
    int local94; 		// TlsGetValue{345}
    int local95; 		// TlsSetValue{346}
    int local96; 		// global1{347}
    int local97; 		// r24
    int local98; 		// r28

    local50 = param16;
    local44 = local98 - 44;
    local49 = param18;
    local45 = param1;
    local48 = param15;
    local47 = param17;
    local10 = *(int*)(param1 + 12);
    local76 = local44;
    local77 = local10;
    local78 = local45;
    local79 = *(int*)(local98 - 48);
    local87 = *(int*)0x40c0d0;
    local87 = *(int*)0x40c0d0;
    local88 = local59;
    local88 = local59;
    local89 = local55;
    local89 = local55;
    local90 = local57;
    local90 = local57;
    local91 = local53;
    local91 = local53;
    local92 = local60;
    local92 = local60;
    local93 = local56;
    local93 = local56;
    local94 = local58;
    local94 = local58;
    local95 = local54;
    local95 = local54;
    local96 = global1;
    local96 = global1;
    if (local10 == 0) {
        *(int*)(local98 - 44) = param1;
        param9 = proc35(*(int*)(local98 - 112), param1, *(int*)(local98 - 40), *(int*)(local98 - 36), *(int*)(local98 - 32), *(int*)(local98 - 28), *(int*)(local98 - 24), param9, param10, param13, param14, param15, local98 - 4, local10, param1, *(int*)(param1 + 12), *(int*)(param1 + 16), param27, param28, param29, param30, param40, param42, param44, param45, param48, param49, param40, param44, param48, param42, param45, param49, *(int*)(param15 + local98 - 212), *(int*)(param15 + local98 - 304), *(int*)(param15 + local98 - 416), param67, *(int*)local10, param71); /* Warning: also results in param13, local9 */
        param15 = *(int*)(local9 - 12);
        param17 = *(int*)(local9 - 8);
        param18 = *(int*)(local9 - 4);
        param16 = *(int*)local9;
        local84 = param15;
        local85 = param17;
        local86 = param18;
    } else {
        if (global1 == 0) {
            local64 = proc32(param9, param10, param13, param15, local98 - 4, local10, param1, param28, param29, param71); /* Warning: also results in param9, param10, param13, local63, local65 */
            local76 = local63;
            local77 = local64;
            local78 = local65;
            local79 = local66;
        }
        local3 = local76;
        local43 = local77;
        local13 = local78;
        local28 = local79;
        local42 = param28;
        local80 = local42;
        local81 = local43;
        if (param28 < 0) {
            proc33(param10, param13, param28, param30, param31);
        }
        param13 = param28;
        if (param28 != 0) {
            local38 = GetLastError();
            local62 = local38;
            local97 = TlsGetValue(param29);
            local81 = local62;
            local61 = local97;
            *(int*)local3 = local38;
            SetLastError(local38);
            local80 = local61;
        } else {
            local97 = param27;
        }
        local0 = local97;
        local41 = local80;
        local11 = local81;
        local97 = proc57(*(int*)(local3 + 4), *(int*)(local3 + 8), *(int*)(local3 + 12), *(int*)(local3 + 16), *(int*)(local3 + 20), param11, local13, param13, local8 - 20, local41, local8, local11, local13, *(int*)(local13 + 12), *(int*)(local13 + 16), local0, *(int*)(local8 - 24), *(int*)local3, *(int*)local11, param71); /* Warning: also results in local12, param10, param11, param12, param13, local1, local2, local5, local6, local14 */
        local82 = local5;
        local83 = local6;
        local84 = local2;
        if (local97 == 7) {
            param15 = *(int*)(local6 - 20);
            if (global1 != 0) {
L16:
                local4 = local82;
                local7 = local83;
                if (param28 >= 0) {
L13:
                    if (param28 == 0) {
L8:
/* goto m[m[local7 - 20] + 36]*/
                    }
                    local97 = TlsSetValue(param15, param29);
                    if (local97 == 0) {
                        GetLastError();
                        goto L8;
                    }
                    goto L8;
                }
                proc33(param10, param13, param28, param30, param31);
                goto L13;
            }
            param10 = proc32(param9, param10, param13, *(int*)(local6 - 20), local6, local12, local14, param28, param29, param71); /* Warning: also results in param13, param15, param16 */
            local82 = local98;
            local83 = param16;
            goto L16;
        }
        abort();
        local34 = local12;
        local33 = local14;
        local97 = *(int*)(*(int*)(local5 + 4) + 8);
        local85 = local34;
        local86 = local33;
        if (local97 != 0) {
            (**(int*)(*(int*)(local5 + 4) + 8))(*(int*)(local98 - 52), local28, *(int*)(local98 - 44), *(int*)(local98 - 40), *(int*)(local98 - 36), *(int*)(local98 - 32), *(int*)(local98 - 28), *(int*)(local98 - 24), pc + 297, param15, 1, param17, *(int*)(local5 + 4), *(int*)(local3 - 8), param18, local6, pc, *(int*)(local4 - 4), param16, *(int*)(local5 + 4), *(int*)(local3 + 4), *(int*)(local4 + 4), param1, *(int*)(local3 + 8), param5, *(int*)(local3 + 12), param6, *(int*)(local3 + 16), param7, *(int*)(local3 + 20), param8, param9, param10, param11, param12, local97, param13, *(int*)(local5 + 4), local2, local5 - 4, local12, local14, *(int*)(local13 + 12), *(int*)(local13 + 16), param19, param20, *(int*)(*(int*)(local5 + 4) + 8), *(int*)(param1 + 12), *(int*)(param1 + 16), *(int*)(*(int*)(local7 - 20) + 32), *(int*)(*(int*)(local7 - 20) + 36), *(int*)(*(int*)(local7 - 20) + 40), *(int*)(*(int*)0x40c0d0 + 4), *(int*)(*(int*)0x40c0d0 + 8), *(int*)(*(int*)0x40c0d0 + 20), *(int*)(*(int*)0x40c0d0 + 24), *(int*)(*(int*)0x40c0d0 + 28), *(int*)(*(int*)0x40c0d0 + 32), *(int*)(*(int*)0x40c0d0 + 40), *(int*)(*(int*)0x40c0d0 + 44), *(int*)(*(int*)0x40c0d0 + 48), *(int*)(*(int*)0x40c0d0 + 52), *(int*)(*(int*)0x40c0d0 + 56), *(int*)(*(int*)0x40c0d0 + 60), *(int*)(*(int*)0x40c0d0 + 64), *(int*)(*(int*)0x40c0d0 + 68), *(int*)(*(int*)0x40c0d0 + 72), *(int*)(*(int*)0x40c0d0 + 76), *(int*)(*(int*)0x40c0d0 + 80), param21, param22, param23, param24, param25, param26, param27, param28, param29, param30, param31, param32, param33, param34, param35, param36, param37, *(int*)(local1 + local5 - 100), *(int*)(local1 + local5 - 192), *(int*)(local1 + local5 - 304), param38, param39, param40, param41, param42, param43, param44, param45, param46, param47, param48, param49, *(int*)(local1 + local5 - 100), *(int*)(local1 + local5 - 192), *(int*)(local1 + local5 - 304), param38, param41, param46, param39, param40, param42, param43, param44, param45, param47, param48, param49, *(int*)(local9 - 4), *(int*)(local9 - 8), *(int*)(local9 - 12), *(int*)(local6 - 4), *(int*)(local6 - 8), *(int*)(local6 - 12), *(int*)(local6 - 20), *(int*)(local7 - 20), local0, local0, *(int*)(local8 - 24), param62, param63, param64, param65, param66, param67, *(int*)local3, *(int*)local4, *(int*)local9, *(int*)local6, param68, *(int*)local12, *(int*)local10, *(int*)local11, param69, *(int*)*(int*)(local6 - 20), *(int*)*(int*)0x40c0d0, param70, param71, LOGICALFLAGS32(local97), LOGICALFLAGS32(local97));
            local84 = param15;
            local85 = param17;
            local86 = param18;
            local87 = local31;
            local88 = local59;
            local89 = local55;
            local90 = local57;
            local91 = local53;
            local92 = local60;
            local93 = local56;
            local94 = local58;
            local95 = local54;
            local96 = local32;
            param16 = param68;
        } else {
            param16 = local6;
        }
    }
    param15 = local84;
    param17 = local85;
    param18 = local86;
    global1 = local87;
    local60 = local88;
    local56 = local89;
    local58 = local90;
    local54 = local91;
    local60 = local92;
    local56 = local93;
    local58 = local94;
    local54 = local95;
    global1 = local96;
    return param17; /* WARNING: Also returning: param9, param11, param12, param13, param15, param16, param18 */
}

// address: 0x405750
void __imp_memset(int param1, int param2, int param3) {
    int local3; 		// r28

    memset(param1, param2, param3);
    return;
}

// address: 0x405380
int proc40(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) {
    int local0; 		// r27{82}
    int local1; 		// m[m[r28 + 4]]{82}
    int local10; 		// m[r28 - 8]{4}
    int local11; 		// m[r28 - 12]{6}
    int local12; 		// m[r28 - 28]{82}
    int local13; 		// m[r28 - 32]{82}
    int local14; 		// m[0x40d130]{82}
    int local15; 		// Sleep{82}
    int local16; 		// r29{92}
    int local17; 		// m[0x40d130]{141}
    int local18; 		// Sleep{142}
    int local19; 		// r29{107}
    int local2; 		// m[r28 - 32]{80}
    int local20; 		// %pc{121}
    int local21; 		// r8
    char local22; 		// r10
    int local23; 		// r28
    int local3; 		// r28{69}
    int local4; 		// r28{52}
    int local5; 		// %pc{51}
    int local6; 		// m[r28 - 32]{50}
    int local7; 		// m[r28 - 28]{48}
    int local8; 		// r29{3}
    int local9; 		// m[r28 - 4]{1}

    local9 = param7;
    local8 = local23 - 4;
    local10 = param8;
    local11 = param6;
    local21 =  (param1 == 0) ? 1 : 0;
    local22 =  (param2 == 0) ? 1 : 0;
    param3 = param3 >> 8 & 0xffffff | (local21) | param5 >> 8 & 0xffffff | (local22);
    param5 = 22;
    local16 = local8;
    local16 = local8;
    local16 = local8;
    local17 = *(int*)0x40d130;
    local17 = *(int*)0x40d130;
    local17 = *(int*)0x40d130;
    local18 = Sleep;
    local18 = Sleep;
    local18 = Sleep;
    local19 = local8;
    if (((unsigned char) param3 & 0x1) == 0) {
        param5 = *(int*)param1;
        if (param5 == 0) {
            local7 = param1 + 4;
            param3 = InterlockedIncrement(param1 + 4);
            local20 = local5;
            if (param3 == 0) {
                (*param2)(pc + 1131, param1 + 4, param6, param8, param7, param1, param2, (unsigned char) param1 + 4, local22, param3, param4, param5, param1, local23 - 4, param2, *(int*)local0, param9, *(int*)param1, param10, LOGICALFLAGS32(param3), LOGICALFLAGS32(param3));
                local16 = param7;
                local17 = local14;
                local18 = local15;
                *(int*)local0 = 1;
            } else {
                param3 = *(int*)param1;
                if (param3 == 0) {
                    do {
                        *(int*)(local23 - 28) = 0;
                        Sleep(0);
                        param3 = *(int*)param1;
                    } while (param3 == 0);
                }
            }
        }
        param7 = local16;
        Sleep = local17;
        Sleep = local18;
        param5 = 0;
        local19 = param7;
    }
    param7 = local19;
    return param5; /* WARNING: Also returning: (unsigned char) param5, local22, param4, *(int*)param7 */
}

// address: 0x405530
void proc41(int param1) {
    int local10; 		// r28
    LONG local7; 		// r24

    local7 = InterlockedIncrement(param1);
    if (local7 != 0) {
        local7 = WaitForSingleObject(*(int*)(param1 + 4), -1);
        if (local7 == 0) {
L1:
        } else {
            InterlockedDecrement(param1);
        }
    } else {
        goto L1;
    }
    return;
}

// address: 0x405590
char proc42(int param1, char param2) {
    int local10; 		// r28
    BOOL local7; 		// r24

    local7 = InterlockedDecrement(param1);
    if (local7 >= 0) {
        local7 = ReleaseSemaphore(*(int*)(param1 + 4), 1, 0);
        param2 =  (local7 == 0) ? 1 : 0;
    }
    return param2;
}

// address: 0x405470
LPVOID proc43(int param1) {
    int local10; 		// r25
    int local12; 		// r28
    LPVOID local5; 		// r24{19}
    DWORD local7; 		// r24{12}

    local7 = GetLastError();
    local5 = TlsGetValue(param1);
    SetLastError(local7);
    return local5; /* WARNING: Also returning: local10 */
}

// address: 0x4054b0
int proc44(int param1, int param2) {
    DWORD local4; 		// r24
    int local7; 		// r28

    local4 = TlsSetValue(param1, param2);
    if (local4 == 0) {
        local4 = GetLastError();
    } else {
        local4 = 0;
    }
    return local4;
}

// address: 0x403f00
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 local0; 		// m[global2{0}]{96}
    int local1; 		// global2{69}
    int local10; 		// r27{57}
    void *local100; 		// m[r28 - 4]{41}
    int local101; 		// r25{39}
    int local102; 		// r26{39}
    int local103; 		// r9{26}
    int local104; 		// r11{26}
    int local105; 		// r25{30}
    int local106; 		// <all>{26}
    int local107; 		// m[r28 - 4]{37}
    void *local108; 		// %pc{26}
    int local109; 		// r28{30}
    int local11; 		// r28{69}
    void *local110; 		// m[r28 - 4]{28}
    int local111; 		// r25{21}
    int local112; 		// r26{21}
    int local113; 		// r27{21}
    int local114; 		// r30{21}
    int local115; 		// r31{21}
    int local116;
    int local117;
    int local118; 		// m[r28 + 4]{26}
    int local119; 		// m[r28 + 8]{26}
    int local12; 		// r28{57}
    int local120; 		// m[r28 + 12]{26}
    int local121; 		// m[r29 + 4]{26}
    int local122;
    int local123; 		// m[r29 + 12]{26}
    int local124; 		// m[r29 + 16]{26}
    int local125; 		// m[r29 + 8]{26}
    int local126; 		// m[m[r29 - 44]{26} + 4]{26}
    int local127; 		// m[global1{0} + 4]{26}
    int local128; 		// m[global1{0} + 8]{26}
    int local129; 		// m[global1{0} + 20]{26}
    int local13; 		// r28{39}
    int local130; 		// m[global1{0} + 24]{26}
    int local131; 		// m[global1{0} + 28]{26}
    int local132; 		// m[global1{0} + 32]{26}
    int local133; 		// m[global1{0} + 40]{26}
    int local134; 		// m[global1{0} + 44]{26}
    int local135; 		// m[global1{0} + 48]{26}
    int local136; 		// m[global1{0} + 52]{26}
    int local137; 		// m[global1{0} + 56]{26}
    int local138; 		// m[global1{0} + 60]{26}
    int local139; 		// m[global1{0} + 64]{26}
    int local14; 		// r28{26}
    int local140; 		// m[global1{0} + 68]{26}
    int local141; 		// m[global1{0} + 72]{26}
    int local142; 		// m[global1{0} + 76]{26}
    int local143; 		// m[global1{0} + 80]{26}
    int local144; 		// m[(r26 + r28) - 136]{26}
    int local145; 		// m[(r26 + r28) - 228]{26}
    int local146; 		// m[(r26 + r28) - 340]{26}
    int local147; 		// m[(m[m[r29 + 20] + 4] + r28) - 136]{26}
    int local148; 		// m[(m[m[r29 + 20] + 4] + r28) - 228]{26}
    int local149; 		// m[(m[m[r29 + 20] + 4] + r28) - 340]{26}
    int local15; 		// r28{21}
    int local150; 		// m[(global1{0} + r28) - 240]{26}
    int local151; 		// m[(global1{0} + r28) - 332]{26}
    int local152; 		// m[(global1{0} + r28) - 444]{26}
    int local153; 		// m[(global1{0} + r28) - 228]{26}
    int local154; 		// m[(global1{0} + r28) - 320]{26}
    int local155; 		// m[(global1{0} + r28) - 432]{26}
    int local156; 		// m[(global1{0} + r28) - 224]{26}
    int local157; 		// m[(global1{0} + r28) - 316]{26}
    int local158; 		// m[(global1{0} + r28) - 428]{26}
    int local159; 		// m[((global1{0} + r28) - 96) - 128]{26}
    int local16; 		// r28{87}
    int local160; 		// m[((global1{0} + r28) - 96) - 220]{26}
    int local161; 		// m[((global1{0} + r28) - 96) - 332]{26}
    int local162; 		// m[r28 - 36]{26}
    int local163;
    int local164;
    int local165; 		// m[r28 - 116]{26}
    int local166; 		// m[r28 - 12]{26}
    int local167; 		// m[r28 - 16]{26}
    int local168;
    int local169; 		// m[r28 - 28]{26}
    int local17; 		// r28{73}
    int local170; 		// m[r28 - 52]{26}
    int local171;
    int local172;
    int local173; 		// m[r28 - 72]{26}
    int local174; 		// m[r28 - 76]{26}
    int local175; 		// m[r28 - 80]{26}
    int local176; 		// m[r28 - 104]{26}
    int local177; 		// m[r28 - 20]{26}
    int local178; 		// m[r28 - 24]{26}
    int local179; 		// m[r28 - 48]{26}
    int local18; 		// r29{26}
    int local180; 		// m[r28 - 60]{26}
    int local181; 		// m[r28 - 64]{26}
    int local182; 		// m[r28 - 68]{26}
    int local183; 		// m[r28 - 100]{26}
    int local184; 		// m[r29 - 56]{26}
    int local185; 		// m[m[r29 + 20] - 28]{26}
    int local186; 		// m[m[r29 + 20] - 48]{26}
    int local187;
    int local188; 		// m[r27]{26}
    int local189; 		// m[r29]{26}
    int local19; 		// r29{21}
    int local190;
    int local191; 		// m[r30]{26}
    int local192;
    int local193; 		// m[r31]{26}
    int local194; 		// m[m[r29 + 20]]{26}
    int local195; 		// m[m[r29 - 44]]{26}
    int local196; 		// m[m[m[r29 + 20] - 8]]{26}
    int local197; 		// m[m[0x40c0c0]{0}]{26}
    int local198; 		// m[global1{0}]{26}
    int local199; 		// <all>{57}
    void *local2; 		// %pc{69}
    int local20; 		// r30{57}
    void *local200; 		// %pc{73}
    int local201; 		// m[r28 - 4]{24}
    int local202; 		// m[r29 - 60]{22}
    int local203; 		// r25{69}
    int local204; 		// m[r28 - 96]{19}
    int local205; 		// m[r28 - 92]{17}
    int local206; 		// m[r28 - 28]{16}
    int local207; 		// m[r28 - 32]{15}
    int local208; 		// m[r28 - 40]{14}
    int local209; 		// m[r28 - 44]{13}
    int local21; 		// r30{39}
    int local210; 		// m[r28 - 8]{12}
    int local211; 		// m[r28 - 12]{11}
    int local212; 		// m[r28 - 16]{10}
    int local213; 		// m[r28 - 36]{8}
    int local214; 		// m[r28 - 4]{1}
    int local215; 		// m[global2]
    int local216; 		// r26{69}
    int local217; 		// m[r28 - 8]
    int local218; 		// m[r28 - 12]
    int local219; 		// m[r28 - 16]
    int local22; 		// r30{26}
    int local220; 		// m[r28 - 28]
    int local221; 		// m[r28 - 36]
    int local222; 		// m[r28 - 40]
    int local223; 		// m[r28 - 44]
    int local224; 		// m[r28 - 92]
    int local225; 		// m[r28 - 96]
    int local226; 		// r10
    int local227; 		// r24
    int local228; 		// r26
    int local229; 		// r28
    int local23; 		// r30{69}
    int local24; 		// r31{57}
    int local25; 		// r31{39}
    int local26; 		// r31{26}
    int local27; 		// r31{69}
    int local28; 		// m[r29 + 20]{26}
    int local29; 		// m[m[r29 + 20] + 4]{26}
    int local3; 		// r25{57}
    int local30; 		// m[m[r29 + 20] - 8]{26}
    int local31; 		// m[global2{69}]{26}
    int local32; 		// m[global2{0}]{26}
    int local33; 		// global1{26}
    int local34; 		// global1{69}
    void *local35; 		// %pc{57}
    int local36; 		// r25{43}
    int local37;
    int local38;
    int local39;
    int local4; 		// r26{57}
    int local40; 		// m[r28 + 16]{26}
    int local41; 		// m[global1{26} + 4]{26}
    int local42; 		// m[global1{26} + 8]{26}
    int local43; 		// m[global1{26} + 20]{26}
    int local44; 		// m[global1{26} + 24]{26}
    int local45; 		// m[global1{26} + 28]{26}
    int local46; 		// m[global1{26} + 32]{26}
    int local47; 		// m[global1{26} + 40]{26}
    int local48; 		// m[global1{26} + 44]{26}
    int local49; 		// m[global1{26} + 48]{26}
    int local5; 		// r26{43}
    int local50; 		// m[global1{26} + 52]{26}
    int local51; 		// m[global1{26} + 56]{26}
    int local52; 		// m[global1{26} + 60]{26}
    int local53; 		// m[global1{26} + 64]{26}
    int local54; 		// m[global1{26} + 68]{26}
    int local55; 		// m[global1{26} + 72]{26}
    int local56; 		// m[global1{26} + 76]{26}
    int local57; 		// m[global1{26} + 80]{26}
    int local58; 		// m[((r26 + r28) - 16) - 136]{26}
    int local59; 		// m[((r26 + r28) - 16) - 228]{26}
    int local6; 		// r26{30}
    int local60; 		// m[((r26 + r28) - 16) - 340]{26}
    int local61; 		// m[((global1{26} + r28) - 16) - 224]{26}
    int local62; 		// m[((global1{26} + r28) - 16) - 228]{26}
    int local63; 		// m[((global1{26} + r28) - 16) - 240]{26}
    int local64; 		// m[((global1{26} + r28) - 16) - 316]{26}
    int local65; 		// m[((global1{26} + r28) - 16) - 320]{26}
    int local66; 		// m[((global1{26} + r28) - 16) - 332]{26}
    int local67; 		// m[((global1{26} + r28) - 16) - 428]{26}
    int local68; 		// m[((global1{26} + r28) - 16) - 432]{26}
    int local69; 		// m[((global1{26} + r28) - 16) - 444]{26}
    int local7; 		// r26{92}
    int local70; 		// m[r28 - 8]{26}
    int local71; 		// m[r28 - 16]{55}
    int local72;
    int local73;
    int local74; 		// m[r28 - 40]{26}
    int local75; 		// m[r28 - 44]{26}
    int local76;
    int local77; 		// m[r28 - 56]{26}
    int local78;
    int local79;
    int local8; 		// r27{39}
    int local80;
    int local81; 		// m[r28 - 84]{26}
    int local82; 		// m[r28 - 88]{26}
    int local83; 		// m[r28 - 92]{26}
    int local84; 		// m[r28 - 96]{26}
    int local85;
    int local86; 		// m[r28 - 120]{26}
    int local87; 		// m[r28 - 132]{26}
    int local88;
    int local89; 		// m[r28]{26}
    int local9; 		// r27{26}
    int local90;
    int local91;
    int local92; 		// m[global1{26}]{26}
    int local93; 		// m[0x40c0c0]{26}
    int local94; 		// <all>{39}
    int local95; 		// global2{26}
    void *local96; 		// %pc{39}
    int local97; 		// m[r28 - 12]{53}
    int local98; 		// m[r28 - 4]{45}
    int local99; 		// r28{43}

    local214 = param48;
    local213 = local229 - 16;
    local212 = param47;
    local211 = param49;
    local210 = param50;
    local209 = 0x402060;
    local208 = 0x405940;
    local207 = 0x403f47;
    local206 = local229 - 92;
    local205 = local229 - 68;
    local227 = proc2(local229 - 68, param42, param43, param46, param47, local229 - 4, param49, param50, param80, param81, param82, param83, param133); /* Warning: also results in local114, param42, param43, local111, local112, local113, local15, local19, local115 */
    local202 = 1;
    (**(int*)(local19 + 8))(*(int*)(local13 - 132), *(int*)(local13 - 120), *(int*)(local13 - 116), *(int*)(local14 - 104), *(int*)(local13 - 100), param5, *(int*)(local13 - 96), pc, *(int*)(local13 - 92), local229 - 68, *(int*)(local13 - 88), *(int*)(local13 - 84), *(int*)(local14 - 80), *(int*)(local13 - 80), *(int*)(local14 - 76), *(int*)(local13 - 76), *(int*)(local14 - 72), *(int*)(local13 - 68), param15, *(int*)(local14 - 68), param17, *(int*)(local14 - 64), *(int*)(local13 - 64), *(int*)(local13 - 60), param19, *(int*)(local13 - 56), *(int*)(local13 - 52), *(int*)(local14 - 52), *(int*)(local229 - 48), *(int*)(local13 - 44), 0x402060, *(int*)(local13 - 40), 0x405940, *(int*)(local13 - 36), local229 - 16, 0x403f47, *(int*)(local13 - 28), *(int*)(local14 - 28), local229 - 92, *(int*)(local13 - 24), param28, *(int*)(local14 - 24), *(int*)(local229 - 20), *(int*)(local14 - 16), param47, *(int*)(local14 - 12), param49, *(int*)(local13 - 8), param50, param48, pc + 0x9b2, param33, *(int*)(local14 + 4), *(int*)(local13 + 4), *(int*)(local13 + 8), param36, *(int*)(local14 + 8), *(int*)(local13 + 12), param39, *(int*)(local13 + 16), param42, param43, param44, param45, local227, local111, local112, local113, local19, local114, local115, *(int*)(local18 + 4), *(int*)(local18 + 8), *(int*)(local18 + 12), *(int*)(local18 + 16), *(int*)(local18 + 20), *(int*)(local19 + 8), *(int*)(*(int*)(local18 + 20) + 4), *(int*)(*(int*)(local18 - 44) + 4), *(int*)(local33 + 4), *(int*)(local33 + 8), *(int*)(local33 + 20), *(int*)(local33 + 24), *(int*)(local33 + 28), *(int*)(local33 + 32), *(int*)(local33 + 40), *(int*)(local33 + 44), *(int*)(local33 + 48), *(int*)(local33 + 52), *(int*)(local33 + 56), *(int*)(local33 + 60), *(int*)(local33 + 64), *(int*)(local33 + 68), *(int*)(local33 + 72), *(int*)(local33 + 76), *(int*)(local33 + 80), param74, param75, param76, param77, param78, param79, param80, param81, param82, param83, param84, param85, param86, param87, param88, param89, param90, *(int*)(local6 + local14 - 136), *(int*)(local6 + local14 - 228), *(int*)(local6 + local14 - 340), *(int*)(*(int*)(*(int*)(local18 + 20) + 4) + local14 - 136), *(int*)(*(int*)(*(int*)(local18 + 20) + 4) + local14 - 228), *(int*)(*(int*)(*(int*)(local18 + 20) + 4) + local14 - 340), *(int*)(global1 + local13 - 240), *(int*)(global1 + local13 - 332), *(int*)(global1 + local13 - 444), *(int*)(global1 + local14 - 228), *(int*)(global1 + local14 - 320), *(int*)(global1 + local14 - 432), param100, param101, param102, *(int*)(local5 + local13 - 152), *(int*)(local5 + local13 - 244), *(int*)(local5 + local13 - 356), *(int*)(local33 + local13 - 240), *(int*)(local33 + local13 - 244), *(int*)(local33 + local13 - 256), *(int*)(local33 + local13 - 332), *(int*)(local33 + local13 - 336), *(int*)(local33 + local13 - 348), *(int*)(local33 + local13 - 444), *(int*)(local33 + local13 - 448), *(int*)(local33 + local13 - 460), param100, param101, param102, *(int*)(local18 - 56), 1, *(int*)(*(int*)(local18 + 20) - 8), *(int*)(*(int*)(local18 + 20) - 28), *(int*)(*(int*)(local18 + 20) - 48), *(int*)local8, *(int*)local9, param121, *(int*)local13, *(int*)local18, *(int*)local21, *(int*)local22, param126, *(int*)local25, *(int*)local26, param129, *(int*)*(int*)(local18 + 20), *(int*)*(int*)(local18 - 44), *(int*)*(int*)(*(int*)(local18 + 20) - 8), *(int*)*(int*)0x40c0c0, *(int*)local33, param131, *(int*)local1, param133, SUBFLAGS32(local229 - 4, 88, local229 - 92), (unsigned)(local229 - 4) < 88);
    local110 = local108;
    abort();
    *(int*)local14 = *(int*)(local18 - 44);
    local107 = local108 + 0x17f3;
    local21 = proc36(param42, param44, local226, param45, local105, local9, local18 + 12, local22, local26, *(int*)(local33 + 40), *(int*)(local33 + 44), *(int*)(local33 + 48), *(int*)(local33 + 52), local106); /* Warning: also results in param42, param43, local8, local13, param48, local25 */
    local100 = local96;
    abort();
    local98 = param48;
    local97 = *(int*)local93;
    local71 = local96 + 0x17e0;
    local227 = proc45(*(int*)(local13 - 148), *(int*)(local13 - 136), *(int*)(local13 - 132), *(int*)(local13 - 120), local165, *(int*)(local13 - 112), *(int*)(local13 - 108), *(int*)(local13 - 104), *(int*)(local13 - 100), *(int*)(local13 - 96), *(int*)(local13 - 92), *(int*)(local13 - 88), *(int*)(local13 - 84), *(int*)(local13 - 80), local164, *(int*)(local13 - 72), *(int*)(local13 - 68), *(int*)(local13 - 60), *(int*)(local13 - 56), *(int*)(local13 - 52), *(int*)(local13 - 44), *(int*)(local13 - 40), *(int*)(local13 - 32), *(int*)(local13 - 28), *(int*)(local13 - 24), local71, *(int*)local93, *(int*)(local13 - 8), param48, *(int*)(local13 + 4), *(int*)(local13 + 8), *(int*)(local13 + 12), *(int*)(local13 + 16), param42, param43, local103, local104, local36, local8, local13 - 4, local21, local25, *(int*)(local33 + 4), *(int*)(local33 + 8), *(int*)(local33 + 20), *(int*)(local33 + 24), *(int*)(local33 + 28), *(int*)(local33 + 32), *(int*)(local33 + 40), *(int*)(local33 + 44), *(int*)(local33 + 48), *(int*)(local33 + 52), *(int*)(local33 + 56), *(int*)(local33 + 60), *(int*)(local33 + 64), *(int*)(local33 + 68), *(int*)(local33 + 72), *(int*)(local33 + 76), *(int*)(local33 + 80), *(int*)(local5 + local13 - 152), *(int*)(local5 + local13 - 244), *(int*)(local5 + local13 - 356), *(int*)(local33 + local13 - 240), *(int*)(local33 + local13 - 244), *(int*)(local33 + local13 - 256), *(int*)(local33 + local13 - 332), *(int*)(local33 + local13 - 336), *(int*)(local33 + local13 - 348), *(int*)(local33 + local13 - 444), *(int*)(local33 + local13 - 448), *(int*)(local33 + local13 - 460), *(int*)(local5 + local13 - 168), *(int*)(local5 + local13 - 260), *(int*)(local5 + local13 - 372), *(int*)(local33 + local13 - 256), *(int*)(local33 + local13 - 260), *(int*)(local33 + local13 - 272), *(int*)(local33 + local13 - 348), *(int*)(local33 + local13 - 352), *(int*)(local33 + local13 - 364), *(int*)(local33 + local13 - 460), *(int*)(local33 + local13 - 464), *(int*)(local33 + local13 - 476), *(int*)(local33 + local13 - 240), *(int*)(local33 + local13 - 332), *(int*)(local33 + local13 - 444), *(int*)local8, *(int*)local13, *(int*)local21, *(int*)local25, *(int*)local33, *(int*)local95, local94); /* Warning: also results in local20, param42, param43, local3, local4, local10, local12, param48, local24 */
    *(int*)(local12 - 4) = param48;
    *(int*)(local12 - 16) = local35;
    (**(int*)(local12 + 4))(local87, local86, local165, local176, local85, local183, local84, local225, local83, local224, local82, local81, local175, local80, local174, local164, local173, local79, local182, local172, local181, local171, local163, local78, local180, local77, local76, local170, local179, local75, local223, local222, local74, local221, local162, *(int*)(local229 - 32), local73, local169, local220, local72, local178, local168, local177, local167, *(int*)(local17 - 16), local219, local35, *(int*)(local13 - 16), local166, *(int*)(local17 - 12), local218, *(int*)(local13 - 12), local217, local70, *(int*)(local16 - 4), *(int*)(local11 - 4), *(int*)(local17 - 4), *(int*)(local229 - 4), param48, *(int*)(local13 - 4), *(int*)(local14 - 4), *(int*)(local15 - 4), local118, local116, local37, local38, local119, local117, local39, local120, local40, param42, param43, local103, local104, local227, local3, local4, local10, local12 - 4, local20, local24, local121, local122, local123, local124, local28, local125, local29, local126, local41, local42, local43, local44, local45, local46, local47, local48, local49, local50, local51, local52, local53, local54, local55, local56, local57, local127, local128, local129, local130, local131, local132, local133, local134, local135, local136, local137, local138, local139, local140, local141, local142, local143, local144, local145, local146, local147, local148, local149, local150, local151, local152, local153, local154, local155, local156, local157, local158, local58, local59, local60, local61, local62, local63, local64, local65, local66, local67, local68, local69, local159, local160, local161, local184, *(int*)(local19 - 60), local30, local185, local186, *(int*)local7, local88, local187, local188, local89, local189, local90, local190, local191, local91, local192, local193, local194, local195, local196, local197, local92, local198, local31, local32, local199, SUBFLAGS32(local12 - 4, 8, local12 - 12), (unsigned)(local12 - 4) < 8);
    *(int*)(local11 - 4) = local2;
    local17 = proc37(*(int*)(local11 + 4), *(int*)(local11 + 8), *(int*)(local11 + 12), param42, param43, local203, local216, param47, param48, local23, local27, *(int*)(local34 + 4), *(int*)(local34 + 8), *(int*)(local34 + 20), *(int*)(local34 + 24), *(int*)(local34 + 28), *(int*)(local34 + 32), *(int*)(local34 + 40), *(int*)(local34 + 44), *(int*)(local34 + 48), *(int*)(local34 + 52), *(int*)(local34 + 56), *(int*)(local34 + 60), *(int*)(local34 + 64), *(int*)(local34 + 68), *(int*)(local34 + 72), *(int*)(local34 + 76), *(int*)(local34 + 80), *(int*)(local216 + local11 - 156), *(int*)(local216 + local11 - 248), *(int*)(local216 + local11 - 360), *(int*)(local34 + local11 - 244), *(int*)(local34 + local11 - 248), *(int*)(local34 + local11 - 260), *(int*)(local34 + local11 - 336), *(int*)(local34 + local11 - 340), *(int*)(local34 + local11 - 352), *(int*)(local34 + local11 - 448), *(int*)(local34 + local11 - 452), *(int*)(local34 + local11 - 464), param121, *(int*)local11, *(int*)local23, *(int*)local27, *(int*)local34, *(int*)local1, param133); /* Warning: also results in param48 */
    *(int*)(local17 - 4) = param48;
    *(int*)(local17 - 12) = *(int*)*(int*)0x40c0e0;
    *(int*)(local17 - 16) = local200;
    param49 = proc46(*(int*)*(int*)0x40c0e0, local17 - 4); /* Warning: also results in local16, param48, param50 */
    *(int*)(local16 - 4) = param48;
    local0 = *(int*)(local16 + 4);
    return local215; /* WARNING: Also returning: param49, param42, param43, *(int*)(local16 + 4), global2, param47, param48, param50 */
}

// address: 0x403f80
int proc46(int param1, int param2) {
    int local0; 		// m[global2{0}]{37}
    int local1; 		// global2{10}
    int local10; 		// r26
    int local11; 		// r27
    int local12; 		// r28
    int local13; 		// r30
    int local14; 		// r31
    int local2; 		// m[global2{10}]{10}
    void *local3; 		// %pc{10}
    void *local4; 		// %pc{14}
    int local5; 		// m[global2]
    int local6; 		// r0
    int local7; 		// r8
    int local8; 		// r24
    int local9; 		// r25

    *(int*)(local12 - 4) = param2;
    (*param1)(pc, param2, param1, local12 - 4, *(int*)*(int*)0x40c0c0, *(int*)local1, SUBFLAGS32(local12 - 4, 8, local12 - 12), (unsigned)(local12 - 4) < 8);
    *(int*)(local12 - 4) = local3;
    param2 = proc37(param1, *(int*)(local12 + 8), *(int*)(local12 + 12), local6, local7, local9, local10, local11, param2, local13, local14, *(int*)(global1 + 4), *(int*)(global1 + 8), *(int*)(global1 + 20), *(int*)(global1 + 24), *(int*)(global1 + 28), *(int*)(global1 + 32), *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), *(int*)(global1 + 56), *(int*)(global1 + 60), *(int*)(global1 + 64), *(int*)(global1 + 68), *(int*)(global1 + 72), *(int*)(global1 + 76), *(int*)(global1 + 80), *(int*)(local10 + local12 - 156), *(int*)(local10 + local12 - 248), *(int*)(local10 + local12 - 360), *(int*)(global1 + local12 - 244), *(int*)(global1 + local12 - 248), *(int*)(global1 + local12 - 260), *(int*)(global1 + local12 - 336), *(int*)(global1 + local12 - 340), *(int*)(global1 + local12 - 352), *(int*)(global1 + local12 - 448), *(int*)(global1 + local12 - 452), *(int*)(global1 + local12 - 464), *(int*)local11, *(int*)local12, *(int*)local13, *(int*)local14, *(int*)global1, *(int*)local1, <all>);
    *(int*)(local12 - 4) = param2;
    *(int*)(local12 - 12) = *(int*)*(int*)0x40c0e0;
    *(int*)(local12 - 16) = local4;
    local13 = proc46(*(int*)*(int*)0x40c0e0, local12 - 4, local2); /* Warning: also results in param2, local14 */
    *(int*)(local12 - 4) = param2;
    local0 = param1;
    return local5; /* WARNING: Also returning: local13, param1, param2, local14 */
}

// address: 0x404fa0
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 local0; 		// r24{461}
    int local1; 		// r24{355}
    int local10; 		// r28{436}
    int local100; 		// m[r28 - 8]{4}
    int local101; 		// m[r28 - 4]{1}
    int local102; 		// m[r28 - 4]
    int local103; 		// m[r28 - 8]
    int local104; 		// m[0x40d140]
    int local105; 		// TlsSetValue
    int local106; 		// m[0x40d128]
    int local107; 		// SetLastError
    int local108; 		// m[0x40d13c]
    int local109; 		// TlsGetValue
    int local11; 		// r28{386}
    int local110; 		// m[0x40d118]
    int local111; 		// GetLastError
    LPVOID local112; 		// r27{247}
    DWORD local113; 		// r30{239}
    int local114; 		// r28{216}
    int local115; 		// r30{216}
    int local116; 		// r31{216}
    int local117; 		// r26{67}
    int local118; 		// r27{67}
    int local119; 		// r28{67}
    int local12; 		// r28{359}
    int local120; 		// r29{67}
    int local121; 		// r30{67}
    int local122; 		// r31{67}
    LPVOID local123; 		// r27{104}
    int local124; 		// r28{112}
    int local125; 		// r29{423}
    DWORD local126; 		// r30{96}
    int local127; 		// r31{425}
    int local128; 		// m[r28 - 48]{529}
    int local129; 		// r28{82}
    int local13; 		// r28{422}
    int local130; 		// r29{409}
    int local131; 		// r30{410}
    int local132; 		// r31{411}
    int local133; 		// m[r28 - 48]{528}
    int local134; 		// r28{72}
    int local135; 		// r29{72}
    int local136; 		// r31{72}
    int local137; 		// m[r28 - 48]{70}
    int local138; 		// r26{252}
    int local139; 		// r28{252}
    int local14; 		// r28{408}
    int local140; 		// r26{285}
    int local141; 		// r28{285}
    int local142; 		// r26{216}
    int local143; 		// r27{216}
    int local144; 		// r29{216}
    int local145; 		// m[r28 - 4]{65}
    int local146; 		// r26{109}
    int local147; 		// r26{82}
    int local148; 		// r26{72}
    int local149; 		// r27{72}
    int local15; 		// r28{375}
    int local150; 		// r30{72}
    int local151; 		// r26{243}
    int local152; 		// r26{100}
    int local153; 		// m[r28 - 48]
    int local154; 		// r26{237}
    int local155; 		// r26{94}
    int local156; 		// r31{89}
    int local157; 		// local89{331}
    int local158; 		// local90{332}
    int local159; 		// local92{334}
    int local16; 		// r28{189}
    int local160; 		// local93{514}
    int local161; 		// local84{345}
    int local162; 		// local85{346}
    int local163; 		// local86{347}
    int local164; 		// local87{348}
    int local165; 		// local88{515}
    LPVOID local166; 		// local6{358}
    int local167; 		// local12{359}
    int local168; 		// local22{360}
    DWORD local169; 		// local27{361}
    int local17; 		// r29{223}
    int local170; 		// local30{362}
    int local171; 		// local43{517}
    int local172; 		// local3{373}
    int local173; 		// local5{374}
    int local174; 		// local15{375}
    int local175; 		// local18{376}
    int local176; 		// local26{377}
    int local177; 		// local31{378}
    int local178; 		// local11{386}
    int local179; 		// local21{387}
    int local18; 		// r29{376}
    int local180; 		// local14{408}
    int local181; 		// local130{409}
    int local182; 		// local132{411}
    int local183; 		// local133{528}
    int local184; 		// local13{422}
    int local185; 		// local125{423}
    int local186; 		// local127{425}
    int local187; 		// local128{529}
    int local188; 		// local10{436}
    int local189; 		// r29{437}
    int local19; 		// r29{478}
    int local190; 		// local9{450}
    int local191; 		// local61{452}
    int local192; 		// local29{453}
    int local193; 		// %pc{454}
    LPVOID local194; 		// local59{464}
    DWORD local195; 		// local25{466}
    int local196; 		// local8{477}
    int local197; 		// local19{478}
    int local198; 		// r26{503}
    int local199; 		// r27{504}
    int local2; 		// r26{152}
    int local20; 		// r29{451}
    int local200; 		// r30{507}
    int local201; 		// r31{508}
    int local202; 		// m[0x40c0d0]{685}
    int local203; 		// m[0x40d118]{686}
    int local204; 		// m[0x40d128]{687}
    int local205; 		// m[0x40d13c]{688}
    int local206; 		// m[0x40d140]{689}
    int local207; 		// GetLastError{690}
    int local208; 		// SetLastError{691}
    int local209; 		// TlsGetValue{692}
    int local21; 		// r29{387}
    int local210; 		// TlsSetValue{693}
    int local211; 		// global1{694}
    char local212; 		// r10
    int local213; 		// r24
    int local214; 		// r28
    int local22; 		// r29{360}
    int local23; 		// r29{189}
    int local24; 		// r30{165}
    int local25; 		// r30{466}
    int local26; 		// r30{377}
    int local27; 		// r30{361}
    int local28; 		// r30{189}
    int local29; 		// r31{453}
    int local3; 		// r26{373}
    int local30; 		// r31{362}
    int local31; 		// r31{378}
    int local32; 		// r31{189}
    int local33; 		// m[m[r28 + 4] + 8]{320}
    int local34; 		// m[m[r28 + 4] + 12]{320}
    int local35; 		// m[m[r28 + 4] + 16]{320}
    int local36; 		// m[m[r29 - 20]{0} + 32]{320}
    int local37; 		// m[m[r29 - 20]{0} + 36]{320}
    int local38; 		// m[m[r29 - 20]{0} + 40]{320}
    int local39; 		// m[m[r29 - 20]{0} + 32]{320}
    int local4; 		// r26{189}
    int local40; 		// m[m[r29 - 20]{0} + 36]{320}
    int local41; 		// m[m[r29 - 20]{0} + 40]{320}
    int local42; 		// m[m[0x40c0d0]{0} + 48]{320}
    int local43; 		// m[r28 - 48]{517}
    int local44; 		// m[r28 - 52]{320}
    int local45;
    int local46; 		// m[m[r29 - 20]]{320}
    int local47; 		// m[0x40c0d0]{320}
    int local48; 		// global1{320}
    int local49; 		// %pc{364}
    int local5; 		// r27{374}
    int local50; 		// r26{306}
    int local51; 		// r31{299}
    int local52; 		// r30{298}
    int local53; 		// r26{297}
    int local54; 		// r28{297}
    int local55; 		// r24{252}
    DWORD local56; 		// r24{237}
    int local57; 		// r28{243}
    int local58; 		// r28{237}
    int local59; 		// r27{464}
    int local6; 		// r27{358}
    int local60; 		// r27{173}
    int local61; 		// r30{452}
    int local62; 		// r28{159}
    int local63; 		// r31{162}
    int local64; 		// %pc{151}
    int local65; 		// m[r28 - 12]{164}
    int local66; 		// m[r28 - 16]{163}
    int local67; 		// r28{152}
    int local68; 		// r24{109}
    int local69; 		// r28{109}
    int local7; 		// r27{189}
    DWORD local70; 		// r24{94}
    int local71; 		// r28{100}
    int local72; 		// r28{94}
    int local73; 		// m[r28 - 4]{521}
    int local74; 		// r26{38}
    int local75; 		// r27{38}
    int local76; 		// r28{38}
    int local77; 		// r29{38}
    int local78; 		// r30{38}
    int local79; 		// r31{38}
    int local8; 		// r28{477}
    int local80; 		// m[r28 - 4]{36}
    int local81; 		// m[r29 - 20]{29}
    int local82; 		// m[r29 - 16]{27}
    int local83; 		// r27{344}
    int local84; 		// r28{345}
    int local85; 		// r29{346}
    int local86; 		// r30{347}
    int local87; 		// r31{348}
    int local88; 		// m[r28 - 48]{515}
    int local89; 		// r28{331}
    int local9; 		// r28{450}
    int local90; 		// r29{332}
    int local91; 		// r30{333}
    int local92; 		// r31{334}
    int local93; 		// m[r28 - 48]{514}
    int local94; 		// r28{11}
    int local95; 		// r29{3}
    int local96; 		// r31{14}
    int local97; 		// m[r28 - 48]{320}
    int local98; 		// m[r28 - 16]{8}
    int local99; 		// m[r28 - 12]{6}

    local101 = param21;
    local95 = local214 - 4;
    local100 = param23;
    local99 = param22;
    local98 = param20;
    local94 = local214 - 44;
    local96 = param3;
    local157 = local94;
    local158 = local95;
    local159 = local96;
    local160 = local153;
    local180 = local94;
    local181 = local95;
    local182 = local96;
    local183 = local153;
    local202 = *(int*)0x40c0d0;
    local202 = *(int*)0x40c0d0;
    local203 = local110;
    local203 = local110;
    local204 = local106;
    local204 = local106;
    local205 = local108;
    local205 = local108;
    local206 = local104;
    local206 = local104;
    local207 = local111;
    local207 = local111;
    local208 = local107;
    local208 = local107;
    local209 = local109;
    local209 = local109;
    local210 = local105;
    local210 = local105;
    local211 = global1;
    local211 = global1;
    if (global1 == 0) {
        param14 = proc32(param14, param15, param18, param20, local214 - 4, param22, param3, param33, param34, param95); /* Warning: also results in param15, param18, local134, local135, local136 */
        local157 = local134;
        local158 = local135;
        local159 = local136;
        local160 = local137;
        local180 = local134;
        local181 = local135;
        local182 = local136;
        local183 = local137;
        if (param33 >= 0) {
L58:
            local89 = local157;
            local90 = local158;
            local91 = param33;
            local92 = local159;
            local93 = local160;
            local161 = local89;
            local162 = local90;
            local163 = local91;
            local164 = local92;
            local165 = local93;
            local184 = local89;
            local185 = local90;
            local186 = local92;
            local187 = local93;
            if (param33 != 0) {
L56:
                local13 = local184;
                local125 = local185;
                local127 = local186;
                local128 = local187;
                local70 = GetLastError();
                local168 = local125;
                local170 = local127;
                local171 = local128;
                local126 = local70;
                local213 = TlsGetValue(param34);
                local169 = local126;
                local123 = local213;
                *(int*)local13 = local70;
                *(int*)(local13 - 4) = local109;
                SetLastError(local70);
                local166 = local123;
                local124 = local13;
                local167 = local124;
            } else {
L57:
                local83 = param33;
                local84 = local161;
                local85 = local162;
                local86 = local163;
                local87 = local164;
                local88 = local165;
                local213 = param32;
                local166 = local83;
                local167 = local84;
                local168 = local85;
                local169 = local86;
                local170 = local87;
                local171 = local88;
            }
        } else {
L61:
            local14 = local180;
            local130 = local181;
            local131 = param33;
            local132 = local182;
            local133 = local183;
            param15 = proc33(param15, param18, param33, param35, param36); /* Warning: also results in local129 */
            local161 = local129;
            local162 = local130;
            local163 = local131;
            local164 = local132;
            local165 = local133;
            local184 = local129;
            local185 = local130;
            local187 = local133;
            if (param33 == 0) {
                goto L57;
            } else {
                local156 = local132;
                local186 = local156;
                goto L56;
            }
        }
    } else {
        if (param33 < 0) {
            goto L61;
        } else {
            goto L58;
        }
    }
    local1 = local213;
    local6 = local166;
    local12 = local167;
    local22 = local168;
    local27 = local169;
    local30 = local170;
    local43 = local171;
    local82 = local1;
    local81 = local1;
    if (*(int*)(local30 + 12) != 0) {
        local145 = local49;
        local213 = proc57(*(int*)(local12 + 4), *(int*)(local12 + 8), *(int*)(local12 + 12), *(int*)(local12 + 16), *(int*)(local12 + 20), param16, local30, *(int*)(local30 + 12), local22 - 20, local6, local22, local27, local30, *(int*)(local30 + 12), *(int*)(local30 + 16), local1, *(int*)(local22 - 24), *(int*)local12, *(int*)local27, param95); /* Warning: also results in local121, param15, param16, param18, local117, local118, local119, local120, local122 */
        local172 = local117;
        local173 = local118;
        local174 = local119;
        local175 = local120;
        local176 = local121;
        local177 = local122;
    } else {
        local80 = local49;
        local213 = proc56(param14, param15, local30, local22 - 20, local6, local22, local27, local30, param33, param34, param35, local1, param95); /* Warning: also results in local78, param17, param18, local74, local75, local76, local77, local79 */
        local172 = local74;
        local173 = local75;
        local174 = local76;
        local175 = local77;
        local176 = local78;
        local177 = local79;
    }
    local3 = local172;
    local5 = local173;
    local15 = local174;
    local18 = local175;
    local26 = local176;
    local31 = local177;
    local73 = local49;
    local178 = local15;
    local179 = local18;
    local188 = local15;
    local189 = local18;
    if (local213 == 7) {
        param20 = *(int*)(local18 - 20);
        if (global1 != 0) {
            if (param33 >= 0) {
L41:
                local11 = local178;
                local21 = local179;
                if (param33 == 0) {
L36:
/* goto m[m[local21 - 20] + 36]*/
                }
                local213 = TlsSetValue(param20, param34);
                if (local213 == 0) {
                    GetLastError();
                    goto L36;
                }
                goto L36;
            }
L43:
            local10 = local188;
            param21 = local189;
            proc33(param15, param18, param33, param35, param36);
            local178 = local214;
            local179 = param21;
            goto L41;
        }
        param15 = proc32(param14, param15, param18, *(int*)(local18 - 20), local18, local26, local31, param33, param34, param95); /* Warning: also results in param18, param20, param21 */
        local178 = local214;
        local179 = param21;
        local188 = local214;
        local189 = param21;
        if (param33 < 0) {
            goto L43;
        }
        goto L41;
    }
    abort();
    local193 = local64;
    local62 = local15 - 44;
    local63 = *(int*)(local15 + 4);
    local66 = local5;
    local65 = local26;
    local24 = *(int*)(*(int*)(local15 + 4) + 12);
    local190 = local62;
    local191 = local24;
    local192 = local63;
    if (local24 == 0) {
        param14 = proc35(*(int*)(local15 - 112), *(int*)(local15 + 4), *(int*)(local15 - 40), *(int*)(local15 - 36), *(int*)(local15 - 32), *(int*)(local15 - 28), *(int*)(local15 - 24), param14, param15, param18, local2, local5, local15 - 4, local24, *(int*)(local15 + 4), *(int*)(*(int*)(local15 + 4) + 12), *(int*)(*(int*)(local15 + 4) + 16), param32, param33, param34, param35, *(int*)(local2 + local15 - 148), *(int*)(local2 + local15 - 208), *(int*)(local2 + local15 - 240), *(int*)(local2 + local15 - 300), *(int*)(local2 + local15 - 352), *(int*)(local2 + local15 - 412), *(int*)(local2 + local15 - 148), *(int*)(local2 + local15 - 240), *(int*)(local2 + local15 - 352), *(int*)(local2 + local15 - 208), *(int*)(local2 + local15 - 300), *(int*)(local2 + local15 - 412), *(int*)(local5 + local15 - 212), *(int*)(local5 + local15 - 304), *(int*)(local5 + local15 - 416), *(int*)local5, *(int*)local24, param95); /* Warning: also results in param18, param19, local17 */
        local198 = param19;
        param20 = *(int*)(local17 - 12);
        param22 = *(int*)(local17 - 8);
        param23 = *(int*)(local17 - 4);
        param21 = *(int*)local17;
        local199 = param20;
        local200 = param22;
        local201 = param23;
    } else {
        if (global1 == 0) {
            local115 = proc32(param14, param15, param18, local5, local15 - 4, local24, *(int*)(local15 + 4), param33, param34, param95); /* Warning: also results in param14, param15, param18, local114, local116 */
            local190 = local114;
            local191 = local115;
            local192 = local116;
        }
        local9 = local190;
        local61 = local191;
        local29 = local192;
        local60 = param33;
        local194 = local60;
        local195 = local61;
        if (param33 < 0) {
            proc33(param15, param18, param33, param35, param36);
        }
        param18 = param33;
        if (param33 != 0) {
            local56 = GetLastError();
            local113 = local56;
            local213 = TlsGetValue(param34);
            local195 = local113;
            local112 = local213;
            *(int*)local9 = local56;
            SetLastError(local56);
            local194 = local112;
        } else {
            local213 = param32;
        }
        local0 = local213;
        local59 = local194;
        local25 = local195;
        local213 = proc57(*(int*)(local9 + 4), *(int*)(local9 + 8), *(int*)(local9 + 12), *(int*)(local9 + 16), *(int*)(local9 + 20), param16, local29, param18, local20 - 20, local59, local20, local25, local29, *(int*)(local29 + 12), *(int*)(local29 + 16), local0, *(int*)(local20 - 24), *(int*)local9, *(int*)local25, param95); /* Warning: also results in local28, param15, param16, local212, param18, local4, local7, local16, local23, local32 */
        local196 = local16;
        local197 = local23;
        local199 = local7;
        if (local213 == 7) {
            param20 = *(int*)(local23 - 20);
            if (global1 != 0) {
L16:
                local8 = local196;
                local19 = local197;
                if (param33 >= 0) {
L13:
                    if (param33 == 0) {
L8:
/* goto m[m[local19 - 20] + 36]*/
                    }
                    local213 = TlsSetValue(param20, param34);
                    if (local213 == 0) {
                        GetLastError();
                        goto L8;
                    }
                    goto L8;
                }
                proc33(param15, param18, param33, param35, param36);
                goto L13;
            }
            param15 = proc32(param14, param15, param18, *(int*)(local23 - 20), local23, local28, local32, param33, param34, param95); /* Warning: also results in param18, param20, param21 */
            local196 = local214;
            local197 = param21;
            goto L16;
        }
        abort();
        local52 = local28;
        local51 = local32;
        local50 = *(int*)(local16 + 4);
        local213 = *(int*)(*(int*)(local16 + 4) + 8);
        local198 = local50;
        local200 = local52;
        local201 = local51;
        if (local213 != 0) {
            (**(int*)(*(int*)(local16 + 4) + 8))(*(int*)(local12 - 72), *(int*)(local214 - 72), *(int*)(local12 - 64), *(int*)(local214 - 64), *(int*)(local15 - 52), param1, *(int*)(local15 - 48), local43, *(int*)(local15 - 44), *(int*)(local214 - 44), *(int*)(local15 - 40), *(int*)(local214 - 40), *(int*)(local15 - 36), *(int*)(local214 - 36), *(int*)(local15 - 32), *(int*)(local214 - 32), *(int*)(local15 - 28), *(int*)(local214 - 28), *(int*)(local15 - 24), *(int*)(local214 - 24), pc + 297, local5, param20, 1, local26, param22, *(int*)(local16 + 4), *(int*)(local9 - 8), *(int*)(local12 - 8), local31, param23, local23, *(int*)(local8 - 4), pc, *(int*)(local10 - 4), *(int*)(local11 - 4), local49, *(int*)(local13 - 4), *(int*)(local14 - 4), local18, param21, *(int*)(local16 + 4), *(int*)(local8 + 4), *(int*)(local9 + 4), *(int*)(local11 + 4), *(int*)(local12 + 4), *(int*)(local15 + 4), param3, *(int*)(local9 + 8), *(int*)(local12 + 8), param10, *(int*)(local9 + 12), *(int*)(local12 + 12), param11, *(int*)(local9 + 16), *(int*)(local12 + 16), param12, *(int*)(local9 + 20), *(int*)(local12 + 20), param13, param14, param15, param16, local212, param17, local213, param18, *(int*)(local16 + 4), local7, local16 - 4, local28, local32, *(int*)(local29 + 12), *(int*)(local29 + 16), *(int*)(local30 + 12), *(int*)(local30 + 16), param24, param25, *(int*)(*(int*)(local16 + 4) + 8), *(int*)(*(int*)(local15 + 4) + 12), *(int*)(*(int*)(local15 + 4) + 16), *(int*)(*(int*)(local19 - 20) + 32), *(int*)(*(int*)(local19 - 20) + 36), *(int*)(*(int*)(local19 - 20) + 40), *(int*)(*(int*)(local21 - 20) + 32), *(int*)(*(int*)(local21 - 20) + 36), *(int*)(*(int*)(local21 - 20) + 40), *(int*)(*(int*)0x40c0d0 + 4), *(int*)(*(int*)0x40c0d0 + 8), *(int*)(*(int*)0x40c0d0 + 20), *(int*)(*(int*)0x40c0d0 + 24), *(int*)(*(int*)0x40c0d0 + 28), *(int*)(*(int*)0x40c0d0 + 32), *(int*)(*(int*)0x40c0d0 + 40), *(int*)(*(int*)0x40c0d0 + 44), *(int*)(*(int*)0x40c0d0 + 48), *(int*)(*(int*)0x40c0d0 + 52), *(int*)(*(int*)0x40c0d0 + 56), *(int*)(*(int*)0x40c0d0 + 60), *(int*)(*(int*)0x40c0d0 + 64), *(int*)(*(int*)0x40c0d0 + 68), *(int*)(*(int*)0x40c0d0 + 72), *(int*)(*(int*)0x40c0d0 + 76), *(int*)(*(int*)0x40c0d0 + 80), param26, param27, param28, param29, param30, param31, param32, param33, param34, param35, param36, param37, param38, param39, param40, param41, param42, *(int*)(local4 + local16 - 100), *(int*)(local4 + local16 - 192), *(int*)(local4 + local16 - 304), *(int*)(local2 + local15 - 144), *(int*)(local2 + local15 - 148), *(int*)(local2 + local15 - 208), *(int*)(local2 + local15 - 236), *(int*)(local2 + local15 - 240), *(int*)(local2 + local15 - 300), *(int*)(local2 + local15 - 348), *(int*)(local2 + local15 - 352), *(int*)(local2 + local15 - 412), *(int*)(local3 + local15 - 100), *(int*)(local3 + local15 - 192), *(int*)(local3 + local15 - 304), param46, param47, param48, param49, param50, param51, param52, param53, param54, param55, param56, param57, *(int*)(local22 + local12 - 184), *(int*)(local22 + local12 - 276), *(int*)(local22 + local12 - 388), param58, param59, param60, *(int*)(local4 + local16 - 100), *(int*)(local4 + local16 - 192), *(int*)(local4 + local16 - 304), *(int*)(local2 + local15 - 144), *(int*)(local2 + local15 - 148), *(int*)(local2 + local15 - 208), *(int*)(local2 + local15 - 236), *(int*)(local2 + local15 - 240), *(int*)(local2 + local15 - 300), *(int*)(local2 + local15 - 348), *(int*)(local2 + local15 - 352), *(int*)(local2 + local15 - 412), *(int*)(local3 + local15 - 100), *(int*)(local3 + local15 - 192), *(int*)(local3 + local15 - 304), param46, param49, param54, param47, param48, param50, param51, param52, param53, param55, param56, param57, *(int*)(local22 + local12 - 184), *(int*)(local22 + local12 - 276), *(int*)(local22 + local12 - 388), param58, param59, param60, *(int*)(local23 - 4), *(int*)(local23 - 8), *(int*)(local23 - 12), *(int*)(local23 - 20), *(int*)(local17 - 4), *(int*)(local17 - 8), *(int*)(local17 - 12), *(int*)(local18 - 4), *(int*)(local18 - 8), *(int*)(local18 - 12), *(int*)(local18 - 20), *(int*)(local19 - 20), local0, local0, *(int*)(local20 - 24), *(int*)(local21 - 20), local1, local1, *(int*)(local22 - 24), param79, param80, param81, param82, param83, *(int*)local5, *(int*)local6, param86, *(int*)local8, *(int*)local9, *(int*)local11, *(int*)local12, *(int*)local13, *(int*)local23, *(int*)local17, *(int*)local18, param87, *(int*)local28, *(int*)local24, *(int*)local25, *(int*)local26, *(int*)local27, param93, *(int*)*(int*)(local23 - 20), *(int*)*(int*)(local18 - 20), *(int*)*(int*)0x40c0d0, param94, param95, LOGICALFLAGS32(local213), LOGICALFLAGS32(local213));
            local198 = param19;
            local199 = param20;
            local200 = param22;
            local201 = param23;
            local202 = local47;
            local203 = local110;
            local204 = local106;
            local205 = local108;
            local206 = local104;
            local207 = local111;
            local208 = local107;
            local209 = local109;
            local210 = local105;
            local211 = local48;
            param21 = param87;
        } else {
            param21 = local23;
        }
    }
    param19 = local198;
    param20 = local199;
    param22 = local200;
    param23 = local201;
    global1 = local202;
    local111 = local203;
    local107 = local204;
    local109 = local205;
    local105 = local206;
    local111 = local207;
    local107 = local208;
    local109 = local209;
    local105 = local210;
    global1 = local211;
    return param22; /* WARNING: Also returning: param14, param16, param17, param18, param19, param20, param21, param23 */
}

// address: 0x4025b0
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 local0; 		// m[r29 + 8]{658}
    int local1; 		// <all>{164}
    int local10; 		// r25{240}
    int local100; 		// m[r28 - 68]{597}
    int local101; 		// m[r28 - 72]{598}
    int local102; 		// m[r28 - 76]{599}
    int local103; 		// m[r28 - 80]{600}
    int local104; 		// m[r28 - 84]{601}
    int local105; 		// m[r28 - 88]{278}
    int local106; 		// m[r28 - 92]{279}
    int local107; 		// m[r28 - 96]{280}
    int local108; 		// m[r28 - 100]{281}
    int local109; 		// m[r28 - 104]{282}
    int local11; 		// r26{70}
    int local110; 		// m[r28 - 108]{602}
    int local111; 		// m[r28 - 120]{603}
    int local112; 		// m[r28 - 124]{604}
    int local113; 		// m[r28 - 128]{605}
    int local114; 		// m[r28 - 172]{283}
    int local115; 		// m[r28 - 176]{284}
    int local116; 		// m[r28 - 180]{606}
    int local117; 		// m[r29 - 116]{384}
    int local118; 		// m[r29 - 64]{385}
    int local119; 		// m[r29 - 120]{386}
    int local12; 		// r26{65}
    int local120; 		// m[r29 - 128]{387}
    int local121; 		// m[r29 - 132]{388}
    int local122; 		// m[r29 - 136]{389}
    int local123;
    int local124; 		// m[m[r29 + 8] - 8]{615}
    int local125; 		// m[m[r29 + 8] - 28]{616}
    int local126; 		// m[m[r29 + 8] - 48]{617}
    int local127; 		// m[m[r29 + 8] - 8]{618}
    int local128; 		// m[m[r29 + 8] - 8]{156}
    int local129; 		// m[m[r29 + 8] - 28]{619}
    int local13; 		// r26{195}
    int local130; 		// m[m[r29 + 8] - 48]{620}
    int local131; 		// m[r27]{623}
    int local132; 		// m[r28]{397}
    int local133; 		// m[r28]{398}
    int local134; 		// m[r30]{630}
    int local135; 		// m[r31]{635}
    int local136; 		// m[m[r29 + 8]]{639}
    int local137; 		// m[m[r29 + 8]]{640}
    int local138; 		// m[m[r29 - 140]]{641}
    int local139; 		// m[m[m[r29 + 8] - 8]]{642}
    int local14; 		// r26{187}
    int local140; 		// m[m[m[r29 + 8] - 8]]{643}
    int local141; 		// <all>{247}
    int local142; 		// global1{820}
    int local143; 		// global1{156}
    int local144; 		// m[r28 - 176]{351}
    int local145; 		// m[r28 - 172]{350}
    int local146; 		// m[r28 - 104]{349}
    int local147; 		// m[r28 - 100]{348}
    int local148; 		// m[r28 - 96]{347}
    int local149; 		// m[r28 - 92]{346}
    int local15; 		// r26{260}
    int local150; 		// m[r28 - 88]{345}
    int local151; 		// m[r28 - 16]{344}
    int local152; 		// m[r28 - 12]{343}
    int local153; 		// m[r28 - 8]{342}
    int local154; 		// m[r28 - 4]{341}
    short local155; 		// r0{152}
    int local156; 		// r24{152}
    int local157; 		// r25{152}
    int local158; 		// r26{152}
    int local159; 		// r27{152}
    int local16; 		// r26{241}
    int local160; 		// r29{152}
    int local161; 		// r30{152}
    int local162; 		// r31{152}
    int local163;
    int local164;
    int local165;
    int local166;
    int local167; 		// m[r29 + 8]{152}
    int local168;
    int local169; 		// m[m[r29 + 8] + 4]{152}
    int local17; 		// r26{222}
    int local170; 		// m[m[r29 - 140]{228} + 4]{152}
    int local171; 		// m[(m[r29 + 8] + r28) - 136]{152}
    int local172; 		// m[(m[r29 + 8] + r28) - 228]{152}
    int local173; 		// m[(m[r29 + 8] + r28) - 340]{152}
    int local174;
    int local175;
    int local176;
    int local177; 		// m[(m[m[r29 + 8] + 4] + r28) - 136]{152}
    int local178; 		// m[(m[m[r29 + 8] + 4] + r28) - 228]{152}
    int local179; 		// m[(m[m[r29 + 8] + 4] + r28) - 340]{152}
    int local18; 		// r26{85}
    int local180;
    int local181;
    int local182; 		// m[r28 - 48]{152}
    int local183; 		// m[r28 - 52]{152}
    int local184; 		// m[r28 - 56]{152}
    int local185; 		// m[r28 - 60]{152}
    int local186; 		// m[r28 - 64]{152}
    int local187; 		// m[r28 - 68]{152}
    int local188; 		// m[r28 - 72]{152}
    int local189; 		// m[r28 - 76]{152}
    int local19; 		// r27{65}
    int local190; 		// m[r28 - 80]{152}
    int local191; 		// m[r28 - 84]{152}
    int local192; 		// m[r28 - 108]{152}
    int local193; 		// m[r28 - 120]{152}
    int local194; 		// m[r28 - 124]{152}
    int local195; 		// m[r28 - 128]{152}
    int local196; 		// m[r28 - 180]{152}
    int local197; 		// m[r29 - 116]{152}
    int local198; 		// m[r29 - 64]{152}
    int local199;
    int local2; 		// <all>{266}
    int local20; 		// r27{29}
    int local200; 		// m[r29 - 128]{152}
    int local201; 		// m[r29 - 132]{152}
    int local202; 		// m[r29 - 136]{152}
    int local203;
    int local204;
    int local205;
    int local206; 		// m[m[r29 + 8] - 8]{152}
    int local207; 		// m[m[r29 + 8] - 28]{152}
    int local208; 		// m[m[r29 + 8] - 48]{152}
    int local209;
    int local21; 		// r27{23}
    int local210;
    int local211;
    int local212;
    int local213;
    int local214;
    int local215; 		// m[m[r29 + 8]]{152}
    int local216; 		// m[m[r29 - 140]]{152}
    int local217;
    int local218; 		// m[m[m[r29 + 8] - 8]]{152}
    int local219; 		// <all>{152}
    int local22; 		// r27{187}
    int local220; 		// global1{152}
    short local221; 		// r0{142}
    int local222; 		// r25{142}
    int local223; 		// r26{142}
    int local224; 		// r28{243}
    int local225; 		// r29{142}
    int local226; 		// r31{142}
    int local227; 		// m[r24 + 4]{152}
    int local228;
    int local229;
    int local23; 		// r27{134}
    int local230;
    int local231;
    int local232; 		// m[r28 + 4]{152}
    int local233; 		// m[r28 + 8]{152}
    int local234;
    int local235; 		// m[r29 + 8]{164}
    int local236;
    int local237; 		// m[r29 + 4]{152}
    int local238; 		// m[m[r29 - 140]{228} + 4]{156}
    int local239; 		// m[global1{0} + 4]{152}
    int local24; 		// r27{242}
    int local240; 		// m[global1{0} + 8]{152}
    int local241; 		// m[global1{0} + 20]{152}
    int local242; 		// m[global1{0} + 24]{152}
    int local243; 		// m[global1{0} + 28]{152}
    int local244; 		// m[global1{0} + 32]{152}
    int local245; 		// m[global1{0} + 40]{152}
    int local246; 		// m[global1{0} + 44]{152}
    int local247; 		// m[global1{0} + 48]{152}
    int local248; 		// m[global1{0} + 52]{152}
    int local249; 		// m[global1{0} + 56]{152}
    int local25; 		// r27{223}
    int local250; 		// m[global1{0} + 60]{152}
    int local251; 		// m[global1{0} + 64]{152}
    int local252; 		// m[global1{0} + 68]{152}
    int local253; 		// m[global1{0} + 72]{152}
    int local254; 		// m[global1{0} + 76]{152}
    int local255; 		// m[global1{0} + 80]{152}
    int local256;
    int local257;
    int local258;
    int local259; 		// m[(r26 + r28) - 104]{152}
    int local26; 		// r27{261}
    int local260; 		// m[(r26 + r28) - 148]{152}
    int local261; 		// m[(r26 + r28) - 152]{152}
    int local262; 		// m[(r26 + r28) - 196]{152}
    int local263; 		// m[(r26 + r28) - 212]{152}
    int local264; 		// m[(r26 + r28) - 240]{152}
    int local265; 		// m[(r26 + r28) - 244]{152}
    int local266; 		// m[(r26 + r28) - 304]{152}
    int local267; 		// m[(r26 + r28) - 308]{152}
    int local268; 		// m[(r26 + r28) - 352]{152}
    int local269; 		// m[(r26 + r28) - 356]{152}
    int local27; 		// r28{85}
    int local270; 		// m[(r26 + r28) - 416]{152}
    int local271; 		// m[(r26 + r28) - 132]{152}
    int local272; 		// m[(r26 + r28) - 224]{152}
    int local273; 		// m[(r26 + r28) - 336]{152}
    int local274; 		// m[(r26 + r28) - 136]{152}
    int local275; 		// m[(r26 + r28) - 228]{152}
    int local276; 		// m[(r26 + r28) - 340]{152}
    int local277; 		// m[(r29 + r28) - 188]{152}
    int local278; 		// m[(r29 + r28) - 280]{152}
    int local279; 		// m[(r29 + r28) - 392]{152}
    int local28; 		// r28{70}
    int local280; 		// m[(m[r29 + 8] + r28) - 136]{156}
    int local281; 		// m[(m[r29 + 8] + r28) - 228]{156}
    int local282; 		// m[(m[r29 + 8] + r28) - 340]{156}
    int local283;
    int local284;
    int local285;
    int local286; 		// m[(m[m[r29 + 8] + 4] + r28) - 136]{156}
    int local287; 		// m[(m[m[r29 + 8] + 4] + r28) - 228]{156}
    int local288; 		// m[(m[m[r29 + 8] + 4] + r28) - 340]{156}
    int local289;
    int local29; 		// r28{65}
    int local290;
    int local291;
    int local292;
    int local293;
    int local294;
    int local295;
    int local296;
    int local297;
    int local298; 		// m[(global1{0} + r28) - 224]{152}
    int local299; 		// m[(global1{0} + r28) - 316]{152}
    int local3; 		// <all>{156}
    int local30; 		// r28{51}
    int local300; 		// m[(global1{0} + r28) - 428]{152}
    int local301;
    int local302;
    int local303;
    int local304; 		// m[(global1{0} + r28) - 228]{152}
    int local305; 		// m[(global1{0} + r28) - 320]{152}
    int local306; 		// m[(global1{0} + r28) - 432]{152}
    int local307; 		// m[(global1{0} + r28) - 304]{152}
    int local308; 		// m[(global1{0} + r28) - 396]{152}
    int local309; 		// m[(global1{0} + r28) - 508]{152}
    int local31; 		// r28{29}
    int local310;
    int local311;
    int local312;
    int local313;
    int local314;
    int local315;
    int local316;
    int local317;
    int local318;
    int local319;
    int local32; 		// r28{23}
    int local320;
    int local321;
    int local322;
    int local323;
    int local324;
    int local325;
    int local326;
    int local327;
    int local328;
    int local329;
    int local33; 		// r28{195}
    int local330;
    int local331;
    int local332;
    int local333;
    int local334; 		// m[r28 - 8]{142}
    int local335; 		// m[r28 - 12]{142}
    int local336; 		// m[r28 - 16]{142}
    int local337; 		// m[r28 - 28]{142}
    int local338; 		// m[r28 - 32]{142}
    int local339; 		// m[r28 - 36]{142}
    int local34; 		// r28{187}
    int local340; 		// m[r28 - 40]{142}
    int local341; 		// m[r28 - 44]{142}
    int local342; 		// m[r28 - 92]{142}
    int local343; 		// m[r28 - 96]{142}
    int local344;
    int local345;
    int local346;
    int local347;
    int local348;
    int local349;
    int local35; 		// r28{164}
    int local350;
    int local351;
    int local352;
    int local353;
    int local354; 		// m[r28 - 12]{152}
    int local355; 		// m[r28 - 24]{152}
    int local356; 		// m[r28 - 28]{152}
    int local357;
    int local358;
    int local359;
    int local36; 		// r28{142}
    int local360;
    int local361; 		// m[r28 - 104]{152}
    int local362; 		// m[r28 - 4]{142}
    int local363; 		// m[r28 - 48]{156}
    int local364; 		// m[r28 - 52]{156}
    int local365; 		// m[r28 - 56]{156}
    int local366; 		// m[r28 - 60]{156}
    int local367; 		// m[r28 - 64]{156}
    int local368; 		// m[r28 - 68]{156}
    int local369; 		// m[r28 - 72]{156}
    int local37; 		// r28{134}
    int local370; 		// m[r28 - 76]{156}
    int local371; 		// m[r28 - 80]{156}
    int local372; 		// m[r28 - 84]{156}
    int local373; 		// m[r28 - 108]{156}
    int local374; 		// m[r28 - 120]{156}
    int local375; 		// m[r28 - 124]{156}
    int local376; 		// m[r28 - 128]{156}
    int local377; 		// m[r28 - 180]{156}
    int local378;
    int local379; 		// m[r29 - 144]{142}
    int local38; 		// r28{119}
    int local380; 		// m[r29 - 148]{142}
    int local381;
    int local382;
    int local383; 		// m[r29 - 96]{142}
    int local384; 		// m[r29 - 116]{142}
    int local385; 		// m[r29 - 64]{142}
    int local386;
    int local387; 		// m[r29 - 128]{142}
    int local388; 		// m[r29 - 132]{142}
    int local389; 		// m[r29 - 136]{142}
    int local39; 		// r28{224}
    int local390;
    int local391;
    int local392;
    int local393;
    int local394; 		// m[r29 - 68]{142}
    int local395; 		// m[r29 - 60]{142}
    int local396;
    int local397; 		// m[r29 - 120]{142}
    int local398; 		// m[r29 - 4]{152}
    int local399; 		// m[r29 - 8]{152}
    short local4; 		// r0{234}
    int local40; 		// r28{262}
    int local400; 		// m[r29 - 12]{152}
    int local401; 		// m[r29 - 68]{152}
    int local402;
    int local403;
    int local404; 		// m[m[r29 + 8] - 28]{156}
    int local405; 		// m[m[r29 + 8] - 48]{156}
    int local406;
    int local407;
    int local408;
    int local409;
    int local41; 		// r28{89}
    int local410; 		// m[r27]{152}
    int local411;
    int local412;
    int local413;
    int local414;
    int local415;
    int local416;
    int local417;
    int local418;
    int local419;
    int local42; 		// r29{70}
    int local420; 		// m[r28]{142}
    int local421;
    int local422; 		// m[r29]{152}
    int local423;
    int local424;
    int local425;
    int local426; 		// m[r30]{152}
    int local427;
    int local428;
    int local429;
    int local43; 		// r29{65}
    int local430; 		// m[r31]{152}
    int local431;
    int local432; 		// m[m[r29 + 8]]{156}
    int local433; 		// m[m[r29 - 140]]{156}
    int local434;
    int local435; 		// m[m[m[r29 + 8] - 8]]{156}
    int local436; 		// m[global1{0}]{152}
    int local437; 		// <all>{142}
    int local438; 		// <all>{29}{645}
    void *local439; 		// %pc{142}
    int local44; 		// r29{51}
    int local440; 		// %flags{142}
    int local441; 		// %CF{142}
    int local442; 		// r27{142}
    int local443; 		// r30{142}
    short local444; 		// r0{89}
    int local445; 		// r25{134}
    int local446; 		// <all>{85}
    char local447; 		// r9{134}
    char local448; 		// r11{134}
    void *local449; 		// m[r28 - 4]{290}
    int local45; 		// r29{29}
    int local450; 		// m[r28 - 4]{291}
    int local451; 		// m[r29 - 116]{317}
    int local452; 		// m[r29 - 64]{318}
    int local453; 		// m[r29 - 120]{319}
    int local454; 		// m[r29 - 128]{320}
    int local455; 		// m[r29 - 132]{321}
    int local456; 		// m[r29 - 136]{322}
    int local457; 		// m[r28]{330}
    int local458; 		// m[r28]{331}
    int local459; 		// <all>{228}
    int local46; 		// r29{23}
    int local460; 		// r24{134}
    int local461; 		// r26{134}
    int local462; 		// r27{119}
    int local463; 		// r30{119}
    int local464; 		// r31{119}
    char local465; 		// r9{119}
    char local466; 		// r11{119}
    int local467; 		// r24{119}
    int local468; 		// r25{119}
    int local469; 		// r26{119}
    int local47; 		// r29{195}
    int local470; 		// m[r28 + 4]{272}
    int local471; 		// m[r28 + 8]{273}
    int local472; 		// m[r28 - 4]{117}
    void *local473; 		// m[r28 - 4]{87}
    void *local474; 		// m[r28 - 4]{287}
    void *local475; 		// m[r28 - 4]{288}
    void *local476; 		// m[r28 - 4]{289}
    int local477; 		// m[r28 - 4]{292}
    int local478; 		// m[r28 - 4]{293}
    int local479; 		// m[r28 - 4]{294}
    int local48; 		// r29{187}
    int local480; 		// m[r28 - 8]{295}
    int local481; 		// m[r28 - 12]{296}
    int local482; 		// m[r28 - 16]{297}
    int local483; 		// m[r28 - 28]{298}
    int local484; 		// m[r28 - 32]{299}
    int local485; 		// m[r28 - 36]{300}
    int local486; 		// m[r28 - 40]{301}
    int local487; 		// m[r28 - 44]{302}
    int local488; 		// m[r28 - 92]{303}
    int local489; 		// m[r28 - 96]{304}
    int local49; 		// r29{134}
    int local490; 		// m[r28 - 4]{305}
    int local491; 		// m[r28 - 4]{306}
    int local492; 		// m[r28 - 4]{307}
    int local493; 		// m[r28 - 4]{83}
    int local494; 		// m[r28 - 4]{309}
    int local495; 		// m[r29 - 120]{93}
    int local496; 		// m[r29 - 144]{95}
    int local497; 		// m[r29 - 148]{100}
    int local498; 		// m[r29 - 120]{314}
    int local499; 		// m[r29 - 120]{315}
    int local5; 		// r24{51}
    int local50; 		// r29{119}
    int local500; 		// m[r29 - 96]{316}
    int local501; 		// m[r29 - 68]{323}
    int local502; 		// m[r29 - 60]{324}
    int local503; 		// m[r29 - 120]{325}
    int local504; 		// m[r29 - 120]{326}
    int local505; 		// m[r24]{327}
    int local506; 		// m[r28]{112}
    int local507; 		// m[r28]{329}
    int local508; 		// m[r28]{332}
    int local509; 		// m[r28]{333}
    int local51; 		// r29{263}
    int local510; 		// m[r28]{334}
    int local511; 		// m[r28]{335}
    int local512; 		// m[r28]{336}
    int local513; 		// m[r28]{81}
    int local514; 		// m[r28]{338}
    int local515; 		// %pc{118}
    int local516; 		// %flags{121}
    int local517; 		// %CF{121}
    int local518; 		// r24{89}
    int local519; 		// r27{89}
    int local52; 		// r29{244}
    int local520; 		// r30{89}
    int local521; 		// r31{89}
    void *local522; 		// %pc{85}
    char local523; 		// r9{107}
    char local524; 		// r11{107}
    int local525; 		// r24{107}
    int local526; 		// r25{107}
    int local527; 		// r26{107}
    int local528; 		// r28{107}
    char local529; 		// r9{85}
    int local53; 		// r29{225}
    int local530; 		// r25{89}
    int local531; 		// r26{89}
    short local532; 		// r0{85}
    int local533; 		// r25{85}
    int local534; 		// r27{85}
    int local535; 		// r29{85}
    int local536; 		// r30{85}
    int local537; 		// r31{85}
    int local538; 		// m[global1{0} + 40]{85}
    int local539; 		// m[global1{0} + 44]{85}
    int local54; 		// r29{89}
    int local540; 		// m[global1{0} + 48]{85}
    int local541; 		// m[global1{0} + 52]{85}
    int local542; 		// m[global1{0} + 68]{85}
    int local543; 		// m[global1{0} + 72]{85}
    char local544; 		// r11{85}
    int local545; 		// r24{85}
    short local546; 		// r0{215}
    int local547; 		// r9{217}
    int local548; 		// r11{219}
    int local549; 		// r25{221}
    int local55; 		// r30{65}
    int local550; 		// %pc{231}
    int local551; 		// m[r28]{152}
    int local552;
    int local553;
    int local554;
    int local555;
    int local556;
    int local557; 		// m[r24]{152}
    int local558; 		// m[r29 - 120]{152}
    int local559;
    int local56; 		// r30{51}
    int local560; 		// m[r29 - 60]{152}
    int local561;
    int local562; 		// m[r28 - 4]{152}
    int local563;
    int local564;
    int local565;
    int local566; 		// m[r28 - 96]{152}
    int local567; 		// m[r28 - 92]{152}
    int local568; 		// m[r28 - 44]{152}
    int local569; 		// m[r28 - 40]{152}
    int local57; 		// r30{23}
    int local570; 		// m[r28 - 36]{152}
    int local571; 		// m[r28 - 32]{152}
    int local572;
    int local573; 		// m[r28 - 16]{152}
    int local574;
    int local575; 		// m[r28 - 8]{152}
    int local576;
    int local577;
    int local578;
    void *local579; 		// %pc{152}
    int local58; 		// r30{187}
    void *local580; 		// %pc{29}
    int local581;
    int local582;
    int local583; 		// <all>{195}
    short local584; 		// r0{78}
    int local585; 		// r25{78}
    int local586; 		// r26{78}
    int local587; 		// r27{78}
    int local588; 		// r28{78}
    int local589; 		// r29{78}
    int local59; 		// r30{134}
    int local590; 		// r30{78}
    int local591; 		// r31{78}
    void *local592; 		// m[r28 - 4]{76}
    void *local593; 		// m[r28 - 4]{68}
    void *local594; 		// m[r28 - 4]{63}
    int local595; 		// m[r29 - 120]{71}
    int local596; 		// m[r29 - 120]{66}
    int local597; 		// m[r29 - 96]{61}
    int local598; 		// m[r28]{74}
    int local599; 		// %pc{77}
    int local6; 		// r24{23}
    int local60; 		// r30{245}
    char local600; 		// r9{78}
    char local601; 		// r10{78}
    char local602; 		// r11{78}
    int local603; 		// r24{78}
    short local604; 		// r0{70}
    int local605; 		// r9{70}
    int local606; 		// r11{70}
    int local607; 		// r25{70}
    int local608; 		// r27{70}
    int local609; 		// r30{70}
    int local61; 		// r30{226}
    int local610; 		// r31{70}
    int local611; 		// m[global1{0} + 4]{70}
    int local612; 		// m[global1{0} + 8]{70}
    int local613; 		// m[global1{0} + 20]{70}
    int local614; 		// m[global1{0} + 24]{70}
    int local615; 		// m[global1{0} + 28]{70}
    int local616; 		// m[global1{0} + 32]{70}
    int local617; 		// m[global1{0} + 40]{70}
    int local618; 		// m[global1{0} + 44]{70}
    int local619; 		// m[global1{0} + 48]{70}
    int local62; 		// r30{264}
    int local620; 		// m[global1{0} + 52]{70}
    int local621; 		// m[global1{0} + 56]{70}
    int local622; 		// m[global1{0} + 60]{70}
    int local623; 		// m[global1{0} + 64]{70}
    int local624; 		// m[global1{0} + 68]{70}
    int local625; 		// m[global1{0} + 72]{70}
    int local626; 		// m[global1{0} + 76]{70}
    int local627; 		// m[global1{0} + 80]{70}
    int local628; 		// m[global1{0}]{70}
    int local629; 		// <all>{70}
    int local63; 		// r31{65}
    void *local630; 		// %pc{70}
    int local631; 		// r24{70}
    short local632; 		// r0{65}
    int local633; 		// r10{65}
    int local634; 		// r25{65}
    int local635; 		// <all>{65}
    void *local636; 		// %pc{65}
    short local637; 		// r0{29}
    int local638; 		// r10{51}
    int local639; 		// r24{43}
    int local64; 		// r31{51}
    int local640; 		// r25{51}
    void *local641; 		// %pc{51}
    int local642; 		// r26{58}
    int local643; 		// r29{54}
    int local644; 		// r30{52}
    int local645;
    int local646;
    int local647;
    int local648;
    int local649;
    int local65; 		// r31{23}
    int local650; 		// m[r29 - 96]{152}
    int local651;
    int local652; 		// %pc{50}
    int local653; 		// m[r29 - 96]{51}
    int local654; 		// m[r29 - 116]{59}
    int local655; 		// r26{51}
    void *local656; 		// m[r28 - 4]{49}
    int local657; 		// m[r28]{47}
    int local658; 		// m[r29 - 64]{46}
    int local659; 		// m[r29 - 120]{45}
    int local66; 		// r31{187}
    int local660; 		// m[r29 - 136]{41}
    int local661; 		// m[r29 - 132]{39}
    int local662; 		// m[r29 - 128]{37}
    char local663; 		// r9{29}
    char local664; 		// r10{29}
    char local665; 		// r11{29}
    int local666; 		// r24{29}
    int local667; 		// r25{29}
    int local668; 		// r26{29}
    int local669; 		// r30{29}
    int local67; 		// r31{134}
    int local670; 		// r31{29}
    short local671; 		// r0{23}
    int local672; 		// r9{142}
    int local673; 		// r10{218}
    int local674; 		// r11{142}
    int local675; 		// r25{23}
    int local676; 		// m[r28 - 4]{27}
    int local677; 		// m[r28]{25}
    int local678; 		// r26{23}
    int local679; 		// r0{253}
    int local68; 		// r31{246}
    int local680; 		// r25{259}
    int local681; 		// m[r28 - 176]{21}
    int local682; 		// m[r28 - 88]{19}
    int local683; 		// m[r28 - 92]{18}
    int local684; 		// m[r28 - 100]{17}
    int local685; 		// m[r28 - 104]{16}
    int local686; 		// m[r28 - 8]{15}
    int local687; 		// m[r28 - 12]{14}
    int local688; 		// m[r28 - 16]{13}
    int local689; 		// m[r28 - 172]{12}
    int local69; 		// r31{227}
    int local690; 		// m[r28 - 96]{9}
    int local691; 		// m[r28 - 4]{1}
    int local692; 		// m[r28 - 4]
    int local693; 		// m[r28 - 8]
    int local694; 		// m[r28 - 12]
    int local695; 		// m[r28 - 16]
    int local696; 		// m[r28 - 88]
    int local697; 		// m[r28 - 92]
    int local698; 		// m[r28 - 96]
    int local699; 		// m[r28 - 104]
    int local7; 		// r24{142}
    int local70; 		// r31{265}
    short local700; 		// local546{215}
    int local701; 		// local549{221}
    int local702; 		// local17{222}
    int local703; 		// local25{223}
    int local704; 		// local39{224}
    int local705; 		// local53{225}
    int local706; 		// local61{226}
    int local707; 		// local69{227}
    int local708; 		// local550{231}
    void *local709; 		// local474{287}
    int local71; 		// m[r28 + 4]{476}
    void *local710; 		// local475{288}
    void *local711; 		// local476{289}
    int local712; 		// local498{314}
    int local713; 		// local499{315}
    int local714; 		// local500{316}
    int local715; 		// local507{329}
    short local716; 		// local4{234}
    char local717; 		// r9{236}
    char local718; 		// r11{238}
    int local719; 		// local8{239}
    int local72; 		// m[r28 + 8]{477}
    int local720; 		// local10{240}
    int local721; 		// local16{241}
    int local722; 		// local24{242}
    int local723; 		// local52{244}
    int local724; 		// local60{245}
    int local725; 		// local68{246}
    int local726; 		// local141{247}
    void *local727; 		// %pc{250}
    int local728; 		// %flags{251}
    int local729; 		// %CF{252}
    int local73; 		// m[r29 + 8]{483}
    int local730; 		// local90{358}
    int local731; 		// local117{384}
    int local732; 		// local118{385}
    int local733; 		// local119{386}
    int local734; 		// local120{387}
    int local735; 		// local121{388}
    int local736; 		// local122{389}
    int local737; 		// local132{397}
    int local738; 		// local133{398}
    int local739; 		// local71{476}
    int local74; 		// m[r29 + 8]{484}
    int local740; 		// local72{477}
    int local741; 		// local73{483}
    int local742; 		// local74{484}
    int local743; 		// local75{487}
    int local744; 		// local77{488}
    int local745; 		// local78{489}
    int local746; 		// local80{490}
    int local747; 		// local81{532}
    int local748; 		// local82{533}
    int local749; 		// local83{534}
    int local75; 		// m[r29 + 8]{487}
    int local750; 		// local84{535}
    int local751; 		// local85{536}
    int local752; 		// local86{537}
    int local753; 		// local87{538}
    int local754; 		// local88{539}
    int local755; 		// local89{540}
    int local756; 		// local95{592}
    int local757; 		// local96{593}
    int local758; 		// local97{594}
    int local759; 		// local98{595}
    int local76;
    int local760; 		// local99{596}
    int local761; 		// local100{597}
    int local762; 		// local101{598}
    int local763; 		// local102{599}
    int local764; 		// local103{600}
    int local765; 		// local104{601}
    int local766; 		// local110{602}
    int local767; 		// local111{603}
    int local768; 		// local112{604}
    int local769; 		// local113{605}
    int local77; 		// m[m[r29 + 8] + 4]{488}
    int local770; 		// local116{606}
    int local771; 		// local124{615}
    int local772; 		// local125{616}
    int local773; 		// local126{617}
    int local774; 		// local127{618}
    int local775; 		// local129{619}
    int local776; 		// local130{620}
    int local777; 		// local131{623}
    int local778; 		// local134{630}
    int local779; 		// local135{635}
    int local78; 		// m[m[r29 + 8] + 4]{489}
    int local780; 		// local136{639}
    int local781; 		// local137{640}
    int local782; 		// local138{641}
    int local783; 		// local139{642}
    int local784; 		// local140{643}
    int local785; 		// global1{646}
    char local786; 		// r9{255}
    char local787; 		// r11{257}
    int local788; 		// local40{262}
    int local789; 		// local51{263}
    int local79; 		// m[m[r29 + 8] + 4]{156}
    int local790; 		// local2{266}
    int local791; 		// local142{820}
    char local792; 		// r8
    char local793; 		// r10
    int local794; 		// r24
    int local795; 		// r26
    int local796; 		// r28
    int local8; 		// r24{239}
    int local80; 		// m[m[r29 - 140]{228} + 4]{490}
    int local81; 		// m[(m[r29 + 8] + r28) - 136]{532}
    int local82; 		// m[(m[r29 + 8] + r28) - 228]{533}
    int local83; 		// m[(m[r29 + 8] + r28) - 340]{534}
    int local84; 		// m[(m[m[r29 + 8] + 4] + r28) - 136]{535}
    int local85; 		// m[(m[m[r29 + 8] + 4] + r28) - 228]{536}
    int local86; 		// m[(m[m[r29 + 8] + 4] + r28) - 340]{537}
    int local87; 		// m[(m[m[r29 + 8] + 4] + r28) - 136]{538}
    int local88; 		// m[(m[m[r29 + 8] + 4] + r28) - 228]{539}
    int local89; 		// m[(m[m[r29 + 8] + 4] + r28) - 340]{540}
    int local9; 		// r24{65}
    int local90; 		// m[r28 - 4]{358}
    int local91; 		// m[r28 - 4]{274}
    int local92; 		// m[r28 - 8]{275}
    int local93; 		// m[r28 - 12]{276}
    int local94; 		// m[r28 - 16]{277}
    int local95; 		// m[r28 - 48]{592}
    int local96; 		// m[r28 - 52]{593}
    int local97; 		// m[r28 - 56]{594}
    int local98; 		// m[r28 - 60]{595}
    int local99; 		// m[r28 - 64]{596}

    local743 = *(int*)(local53 + 8);
    local742 = *(int*)(local48 + 8);
    local741 = *(int*)(local46 + 8);
    local740 = *(int*)(local34 + 8);
    local739 = *(int*)(local34 + 4);
    local715 = *(int*)local28;
    local714 = *(int*)(local44 - 96);
    local713 = *(int*)(local43 - 120);
    local712 = *(int*)(local42 - 120);
    local711 = *(int*)(local30 - 4);
    local710 = *(int*)(local29 - 4);
    local709 = *(int*)(local28 - 4);
    local691 = param44;
    local690 = local796 - 28;
    local689 = local796 - 128;
    local688 = param43;
    local687 = param45;
    local686 = param46;
    local685 = 0x402060;
    local684 = 0x4058dc;
    local683 = 0x402630;
    local682 = local796 - 172;
    local6 = proc2(local796 - 128, param39, (unsigned char) local796 - 128, param42, param43, local796 - 4, param45, param46, param70, param71, param72, param73, param110); /* Warning: also results in local57, local671, local675, local21, local32, local46, local65 */
    local744 = *(int*)(*(int*)(local46 + 8) + 4);
    local745 = *(int*)(*(int*)(local53 + 8) + 4);
    local746 = *(int*)(*(int*)(local53 - 140) + 4);
    local747 = *(int*)(*(int*)(local46 + 8) + local32 - 136);
    local748 = *(int*)(*(int*)(local46 + 8) + local32 - 228);
    local749 = *(int*)(*(int*)(local46 + 8) + local32 - 340);
    local750 = *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 136);
    local751 = *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 228);
    local752 = *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 340);
    local753 = *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 136);
    local754 = *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 228);
    local755 = *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 340);
    local756 = *(int*)(local796 - 48);
    local757 = *(int*)(local796 - 52);
    local758 = *(int*)(local796 - 56);
    local759 = *(int*)(local796 - 60);
    local760 = *(int*)(local796 - 64);
    local761 = *(int*)(local796 - 68);
    local762 = *(int*)(local796 - 72);
    local763 = *(int*)(local796 - 76);
    local764 = *(int*)(local796 - 80);
    local765 = *(int*)(local796 - 84);
    local766 = *(int*)(local796 - 108);
    local767 = *(int*)(local796 - 120);
    local768 = *(int*)(local796 - 124);
    local769 = *(int*)(local796 - 128);
    local770 = *(int*)(local796 - 180);
    local771 = *(int*)(*(int*)(local46 + 8) - 8);
    local772 = *(int*)(*(int*)(local46 + 8) - 28);
    local773 = *(int*)(*(int*)(local46 + 8) - 48);
    local774 = *(int*)(*(int*)(local53 + 8) - 8);
    local775 = *(int*)(*(int*)(local53 + 8) - 28);
    local776 = *(int*)(*(int*)(local53 + 8) - 48);
    local777 = *(int*)local22;
    local778 = *(int*)local58;
    local779 = *(int*)local66;
    local780 = *(int*)*(int*)(local46 + 8);
    local781 = *(int*)*(int*)(local53 + 8);
    local782 = *(int*)*(int*)(local53 - 140);
    local783 = *(int*)*(int*)(*(int*)(local46 + 8) - 8);
    local784 = *(int*)*(int*)(*(int*)(local53 + 8) - 8);
    local785 = global1;
    local791 = global1;
    local677 = *(int*)(local46 + 8);
    local637 = proc36(local671, param40, local793, param41, local675, local21, local46, local57, local65, param70, param71, param72, param73, param110); /* Warning: also results in local20, local31, local45 */
    local700 = local637;
    local703 = local20;
    local662 = *(int*)(*(int*)(local45 + 8) - 16);
    local661 = *(int*)(*(int*)(local45 + 8) - 24);
    local660 = *(int*)(*(int*)(local45 + 8) - 36);
    local639 = *(int*)(*(int*)(local45 + 8) - 40);
    local659 = 2;
    local658 = *(int*)(*(int*)(local45 + 8) - 12);
    local657 = local639;
    local656 = local580;
    local652 = local580 + 0x195e;
    local5 = proc46(local45, local639); /* Warning: also results in local56, local640, local30, local44, local64 */
    local701 = local640;
    local704 = local30;
    local707 = local64;
    local708 = local652;
    local644 = local56;
    local643 = local44 + 24;
    local642 = *(int*)(local44 - 92);
    local654 = *(int*)(local44 - 92);
    local702 = local642;
    local705 = local643;
    local706 = local644;
    if (local653 != 1) {
        local597 = 0;
        local594 = local641;
        local9 = proc59(local637, (unsigned char) local639, local638, local640, local20, local44 + 24, local56, param70, param71, param72, param73, param77, param78, param110); /* Warning: also results in local55, local632, local792, local634, local12, local19, local29, local43, local63 */
        local711 = local594;
        local714 = local597;
        local596 = 0;
        local593 = local636;
        local609 = proc59(local632, local792, local633, local634, local19, local43, local55, param70, param71, param72, param73, param77, param78, local635); /* Warning: also results in local604, local607, local11, local608, local28, local42, local610 */
        local710 = local593;
        local713 = local596;
        local595 = -1;
        local598 = *(int*)(local42 - 140);
        local592 = local630;
        local599 = local630 + 0x293b;
        local590 = proc47(*(int*)(local28 - 56), *(int*)(local28 - 52), *(int*)(local28 + 4), *(int*)(local28 + 8), *(int*)(local28 + 12), *(int*)(local28 + 16), local604, (unsigned char) *(int*)(local42 - 140), local605, local606, local607, local11, local608, local42, local609, local610, *(int*)(local610 + 12), *(int*)(local610 + 16), local611, local612, local613, local614, local615, local616, local617, local618, local619, local620, local621, local622, local623, local624, local625, local626, local627, *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(local42 - 4), *(int*)(local42 - 8), *(int*)(local42 - 12), *(int*)(local42 - 20), *(int*)(local42 - 24), *(int*)local608, *(int*)(local42 - 140), *(int*)local42, *(int*)local609, local628, local629); /* Warning: also results in local584, local585, local586, local587, local588, local589, local591 */
        local700 = local584;
        local701 = local585;
        local702 = local586;
        local703 = local587;
        local704 = local588;
        local705 = local589;
        local706 = local590;
        local707 = local591;
        local708 = local599;
        local709 = local592;
        local712 = local595;
        local715 = local598;
    }
    local546 = local700;
    local549 = local701;
    local17 = local702;
    local25 = local703;
    local39 = local704;
    local53 = local705;
    local61 = local706;
    local69 = local707;
    local459 = param110;
    local550 = local708;
    local470 = *(int*)(local36 + 4);
    local471 = *(int*)(local36 + 8);
    local91 = param44;
    local92 = param46;
    local93 = param45;
    local94 = param43;
    local105 = local796 - 172;
    local106 = 0x402630;
    local107 = local796 - 28;
    local108 = 0x4058dc;
    local109 = 0x402060;
    local114 = local796 - 128;
    local474 = local709;
    local475 = local710;
    local476 = local711;
    local449 = local580;
    local477 = *(int*)(local33 - 4);
    local478 = *(int*)(local34 - 4);
    local479 = *(int*)(local35 - 4);
    local480 = *(int*)(local35 - 8);
    local481 = *(int*)(local35 - 12);
    local482 = *(int*)(local35 - 16);
    local483 = *(int*)(local35 - 28);
    local484 = *(int*)(local35 - 32);
    local485 = *(int*)(local35 - 36);
    local486 = *(int*)(local35 - 40);
    local487 = *(int*)(local35 - 44);
    local488 = *(int*)(local35 - 92);
    local489 = *(int*)(local35 - 96);
    local490 = *(int*)(local36 - 4);
    local491 = *(int*)(local37 - 4);
    local492 = *(int*)(local38 - 4);
    local494 = *(int*)(local40 - 4);
    local498 = local712;
    local499 = local713;
    local500 = local714;
    local451 = *(int*)(local44 - 92);
    local452 = *(int*)(*(int*)(local45 + 8) - 12);
    local453 = 2;
    local454 = *(int*)(*(int*)(local45 + 8) - 16);
    local455 = *(int*)(*(int*)(local45 + 8) - 24);
    local456 = *(int*)(*(int*)(local45 + 8) - 36);
    local501 = *(int*)(local47 - 68);
    local502 = *(int*)(local48 - 60);
    local503 = *(int*)(local50 - 120);
    local504 = *(int*)(local51 - 120);
    local505 = *(int*)local7;
    local507 = local715;
    local457 = *(int*)(*(int*)(local45 + 8) - 40);
    local458 = *(int*)(local46 + 8);
    local508 = *(int*)local33;
    local509 = *(int*)local34;
    local510 = *(int*)local36;
    local511 = *(int*)local37;
    local512 = *(int*)local38;
    local514 = *(int*)local40;
    local513 = *(int*)(local53 - 140);
    local493 = local550;
    local536 = proc36(local546, local547, local673, local548, local549, local25, local53, local61, local69, param70, param71, param72, param73, local459); /* Warning: also results in local532, local792, local529, local533, local18, local534, local27, local535, local537 */
    local726 = local459;
    local730 = local450;
    local731 = local451;
    local732 = local452;
    local733 = local453;
    local734 = local454;
    local735 = local455;
    local736 = local456;
    local737 = local457;
    local738 = local458;
    local790 = local459;
    local473 = local522;
    local518 = proc49(local532, local792, local533, local534, local535, local536, local537, local538, local539, local540, local541, local542, local543, local446); /* Warning: also results in local520, local444, local519, local41, local54, local521 */
    local716 = local444;
    local495 = 1;
    local496 = *(int*)local518;
    local497 = *(int*)local518 + 80;
    proc60(local529, 0, local54 - 72, *(int*)(local54 - 128), local519, *(int*)(*(int*)(local54 - 128) + 1), *(int*)(*(int*)(local54 - 128) + 4 & 0xfffffffc), *(int*)*(int*)(local54 - 128));
    local506 = *(int*)(local54 - 132);
    local472 = local522 + 0xdd9;
    local515 = local522 + 1820;
    local467 = proc61(local54 - 72, *(int*)local518 + 80, *(int*)*(int*)local518, local519, local54, local520, local521, *(int*)(local54 - 60), *(int*)(local54 - 132)); /* Warning: also results in local463, local792, local465, local793, local466, local468, local469, local462, local38, local50, local464 */
    local717 = local465;
    local718 = local466;
    local719 = local467;
    local720 = local468;
    local721 = local469;
    local722 = local462;
    local723 = local50;
    local724 = local463;
    local725 = local464;
    local727 = local515;
    local516 = LOGICALFLAGS8(local792);
    local728 = local516;
    local729 = local517;
    if (local792 != 0) {
L5:
        local4 = local716;
        param40 = local717;
        param41 = local718;
        local8 = local719;
        local10 = local720;
        local16 = local721;
        local24 = local722;
        local52 = local723;
        local60 = local724;
        local68 = local725;
        local141 = local726;
        flags = local728;
        CF = local729;
        local154 = local91;
        local153 = local92;
        local152 = local93;
        local151 = local94;
        local150 = local105;
        local149 = local106;
        local148 = local107;
        local147 = local108;
        local146 = local109;
        local145 = local114;
        local144 = local115;
        local90 = local730;
        local117 = local731;
        local118 = local732;
        local119 = local733;
        local120 = local734;
        local121 = local735;
        local122 = local736;
        local132 = local737;
        local133 = local738;
        local71 = local739;
        local72 = local740;
        local73 = local741;
        local74 = local742;
        local75 = local743;
        local77 = local744;
        local78 = local745;
        local80 = local746;
        local81 = local747;
        local82 = local748;
        local83 = local749;
        local84 = local750;
        local85 = local751;
        local86 = local752;
        local87 = local753;
        local88 = local754;
        local89 = local755;
        local95 = local756;
        local96 = local757;
        local97 = local758;
        local98 = local759;
        local99 = local760;
        local100 = local761;
        local101 = local762;
        local102 = local763;
        local103 = local764;
        local104 = local765;
        local110 = local766;
        local111 = local767;
        local112 = local768;
        local113 = local769;
        local116 = local770;
        local124 = local771;
        local125 = local772;
        local126 = local773;
        local127 = local774;
        local129 = local775;
        local130 = local776;
        local131 = local777;
        local134 = local778;
        local135 = local779;
        local136 = local780;
        local137 = local781;
        local138 = local782;
        local139 = local783;
        local140 = local784;
        global1 = local785;
        param40 = proc62(local116, local115, local114, local113, local112, local111, *(int*)(local29 - 120), *(int*)(local30 - 120), *(int*)(local40 - 120), local110, *(int*)(local40 - 108), local109, *(int*)(local32 - 104), *(int*)(local34 - 104), *(int*)(local37 - 104), *(int*)(local39 - 104), local108, *(int*)(local35 - 96), local107, *(int*)(local35 - 92), local106, local105, *(int*)(local29 - 88), *(int*)(local30 - 88), *(int*)(local40 - 88), local104, *(int*)(local29 - 84), *(int*)(local30 - 84), *(int*)(local40 - 84), local103, *(int*)(local29 - 80), *(int*)(local30 - 80), *(int*)(local32 - 80), *(int*)(local39 - 80), *(int*)(local40 - 80), local102, *(int*)(local29 - 76), *(int*)(local30 - 76), *(int*)(local32 - 76), *(int*)(local39 - 76), *(int*)(local40 - 76), *(int*)(local32 - 72), *(int*)(local34 - 72), *(int*)(local37 - 72), *(int*)(local39 - 72), local101, *(int*)(local40 - 72), *(int*)(local32 - 68), *(int*)(local34 - 68), *(int*)(local37 - 68), *(int*)(local39 - 68), local100, *(int*)(local29 - 68), *(int*)(local30 - 68), *(int*)(local40 - 68), *(int*)(local32 - 64), *(int*)(local34 - 64), *(int*)(local37 - 64), *(int*)(local39 - 64), local99, local98, local97, *(int*)(local40 - 56), *(int*)(local32 - 52), *(int*)(local34 - 52), *(int*)(local37 - 52), *(int*)(local39 - 52), local96, local95, *(int*)(local796 - 44), *(int*)(local35 - 44), *(int*)(local29 - 44), *(int*)(local30 - 44), *(int*)(local40 - 44), *(int*)(local796 - 40), *(int*)(local35 - 40), *(int*)(local29 - 40), *(int*)(local30 - 40), *(int*)(local40 - 40), *(int*)(local796 - 36), *(int*)(local35 - 36), *(int*)(local796 - 32), *(int*)(local35 - 32), *(int*)(local40 - 32), *(int*)(local796 - 28), *(int*)(local35 - 28), *(int*)(local32 - 28), *(int*)(local34 - 28), *(int*)(local37 - 28), *(int*)(local39 - 28), *(int*)(local29 - 28), *(int*)(local30 - 28), *(int*)(local40 - 28), *(int*)(local796 - 24), *(int*)(local32 - 24), *(int*)(local34 - 24), *(int*)(local37 - 24), *(int*)(local39 - 24), *(int*)(local796 - 20), *(int*)(local29 - 20), *(int*)(local30 - 20), *(int*)(local34 - 20), *(int*)(local35 - 16), local94, *(int*)(local29 - 16), *(int*)(local30 - 16), *(int*)(local32 - 16), *(int*)(local34 - 16), *(int*)(local39 - 16), *(int*)(local40 - 16), *(int*)(local35 - 12), local93, *(int*)(local32 - 12), *(int*)(local39 - 12), *(int*)(local29 - 12), *(int*)(local30 - 12), *(int*)(local40 - 12), *(int*)(local35 - 8), local92, *(int*)(local29 - 8), *(int*)(local30 - 8), *(int*)(local34 - 8), *(int*)(local37 - 8), pc, *(int*)(local40 - 4), *(int*)(local39 - 4), *(int*)(local38 - 4), *(int*)(local37 - 4), *(int*)(local36 - 4), *(int*)(local35 - 4), *(int*)(local34 - 4), *(int*)(local33 - 4), local90, *(int*)(local30 - 4), *(int*)(local29 - 4), *(int*)(local28 - 4), *(int*)(local27 - 4), *(int*)(local41 - 4), local91, *(int*)(local796 + 4), *(int*)(local36 + 4), *(int*)(local32 + 4), local71, *(int*)(local37 + 4), *(int*)(local39 + 4), *(int*)(local40 + 4), *(int*)(local796 + 8), *(int*)(local36 + 8), *(int*)(local32 + 8), local72, *(int*)(local37 + 8), *(int*)(local39 + 8), *(int*)(local40 + 8), local4, local792, param40, local793, param41, local8, local10, local16, local24, local52, local60, local68, *(int*)(local9 + 4), *(int*)(local5 + 4), *(int*)(local6 + 4), *(int*)(local794 + 4), *(int*)(local44 + 16), *(int*)(local44 + 20), *(int*)(local44 + 24), *(int*)(local46 + 4), local73, local74, *(int*)(local49 + 8), *(int*)(local51 + 4), *(int*)(local51 + 8), *(int*)(local51 + 12), *(int*)(local51 + 16), *(int*)(local51 + 20), *(int*)(local53 + 4), local75, *(int*)(param44 + 4), *(int*)(param44 + 8), *(int*)(param44 + 12), *(int*)(param44 + 16), *(int*)(param44 + 20), *(int*)(param44 + 24), local77, local78, local80, *(int*)(local142 + 4), *(int*)(local142 + 8), *(int*)(local142 + 20), *(int*)(local142 + 24), *(int*)(local142 + 28), *(int*)(local142 + 32), *(int*)(local142 + 40), *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), *(int*)(local142 + 56), *(int*)(local142 + 60), *(int*)(local142 + 64), *(int*)(local142 + 68), *(int*)(local142 + 72), *(int*)(local142 + 76), *(int*)(local142 + 80), param64, param65, param66, param67, param68, param69, param70, param71, param72, param73, param74, param75, param76, param77, param78, param79, param80, *(int*)(local18 + local27 - 136), *(int*)(local18 + local27 - 228), *(int*)(local18 + local27 - 340), *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local13 + local33 - 132), *(int*)(local13 + local33 - 224), *(int*)(local13 + local33 - 336), *(int*)(local17 + local39 - 136), *(int*)(local17 + local39 - 228), *(int*)(local17 + local39 - 340), *(int*)(local795 + local796 - 104), *(int*)(local795 + local796 - 132), *(int*)(local795 + local796 - 136), *(int*)(local795 + local796 - 148), *(int*)(local795 + local796 - 152), *(int*)(local795 + local796 - 196), *(int*)(local795 + local796 - 212), *(int*)(local795 + local796 - 224), *(int*)(local795 + local796 - 228), *(int*)(local795 + local796 - 240), *(int*)(local795 + local796 - 244), *(int*)(local795 + local796 - 304), *(int*)(local795 + local796 - 308), *(int*)(local795 + local796 - 336), *(int*)(local795 + local796 - 340), *(int*)(local795 + local796 - 352), *(int*)(local795 + local796 - 356), *(int*)(local795 + local796 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(param44 + local796 - 188), *(int*)(param44 + local796 - 280), *(int*)(param44 + local796 - 392), local81, local82, local83, local84, local85, local86, local87, local88, local89, *(int*)(global1 + local27 - 228), *(int*)(global1 + local27 - 320), *(int*)(global1 + local27 - 432), *(int*)(global1 + local32 - 228), *(int*)(global1 + local32 - 320), *(int*)(global1 + local32 - 432), *(int*)(global1 + local34 - 228), *(int*)(global1 + local34 - 320), *(int*)(global1 + local34 - 432), *(int*)(global1 + local35 - 224), *(int*)(global1 + local35 - 316), *(int*)(global1 + local35 - 428), *(int*)(global1 + local37 - 228), *(int*)(global1 + local37 - 320), *(int*)(global1 + local37 - 432), *(int*)(global1 + local39 - 228), *(int*)(global1 + local39 - 320), *(int*)(global1 + local39 - 432), *(int*)(global1 + local796 - 224), *(int*)(global1 + local796 - 228), param81, *(int*)(global1 + local796 - 316), *(int*)(global1 + local796 - 320), param82, *(int*)(global1 + local796 - 428), *(int*)(global1 + local796 - 432), param83, *(int*)(local18 + local27 - 136), *(int*)(local18 + local27 - 228), *(int*)(local18 + local27 - 340), *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local12 + local29 - 152), *(int*)(local12 + local29 - 168), *(int*)(local12 + local29 - 244), *(int*)(local12 + local29 - 260), *(int*)(local12 + local29 - 356), *(int*)(local12 + local29 - 372), *(int*)(local13 + local33 - 132), *(int*)(local13 + local33 - 224), *(int*)(local13 + local33 - 336), *(int*)(local14 + local34 - 136), *(int*)(local14 + local34 - 228), *(int*)(local14 + local34 - 340), *(int*)(local15 + local40 - 140), *(int*)(local15 + local40 - 232), *(int*)(local15 + local40 - 344), *(int*)(local795 + local796 - 104), *(int*)(local795 + local796 - 132), *(int*)(local795 + local796 - 136), *(int*)(local795 + local796 - 140), *(int*)(local795 + local796 - 148), *(int*)(local795 + local796 - 152), *(int*)(local795 + local796 - 168), *(int*)(local795 + local796 - 196), *(int*)(local795 + local796 - 212), *(int*)(local795 + local796 - 224), *(int*)(local795 + local796 - 228), *(int*)(local795 + local796 - 232), *(int*)(local795 + local796 - 240), *(int*)(local795 + local796 - 244), *(int*)(local795 + local796 - 260), *(int*)(local795 + local796 - 304), *(int*)(local795 + local796 - 308), *(int*)(local795 + local796 - 336), *(int*)(local795 + local796 - 340), *(int*)(local795 + local796 - 344), *(int*)(local795 + local796 - 352), *(int*)(local795 + local796 - 356), *(int*)(local795 + local796 - 372), *(int*)(local795 + local796 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(param44 + local796 - 188), *(int*)(param44 + local796 - 280), *(int*)(param44 + local796 - 392), *(int*)(*(int*)(local44 - 92) + local30 - 152), *(int*)(*(int*)(local44 - 92) + local30 - 168), *(int*)(*(int*)(local44 - 92) + local30 - 244), *(int*)(*(int*)(local44 - 92) + local30 - 260), *(int*)(*(int*)(local44 - 92) + local30 - 356), *(int*)(*(int*)(local44 - 92) + local30 - 372), *(int*)(local142 + local34 - 228), *(int*)(local142 + local34 - 320), *(int*)(local142 + local34 - 432), *(int*)(local142 + local35 - 224), *(int*)(local142 + local35 - 316), *(int*)(local142 + local35 - 428), *(int*)(local142 + local40 - 228), *(int*)(local142 + local40 - 232), *(int*)(local142 + local40 - 244), *(int*)(local142 + local40 - 320), *(int*)(local142 + local40 - 324), *(int*)(local142 + local40 - 336), *(int*)(local142 + local40 - 432), *(int*)(local142 + local40 - 436), *(int*)(local142 + local40 - 448), *(int*)(global1 + local27 - 228), *(int*)(global1 + local27 - 320), *(int*)(global1 + local27 - 432), *(int*)(global1 + local29 - 244), *(int*)(global1 + local29 - 260), *(int*)(global1 + local29 - 336), *(int*)(global1 + local29 - 352), *(int*)(global1 + local29 - 448), *(int*)(global1 + local29 - 464), *(int*)(global1 + local30 - 244), *(int*)(global1 + local30 - 260), *(int*)(global1 + local30 - 336), *(int*)(global1 + local30 - 352), *(int*)(global1 + local30 - 448), *(int*)(global1 + local30 - 464), *(int*)(global1 + local796 - 228), *(int*)(global1 + local796 - 232), *(int*)(global1 + local796 - 244), *(int*)(global1 + local796 - 260), *(int*)(global1 + local796 - 320), *(int*)(global1 + local796 - 324), *(int*)(global1 + local796 - 336), *(int*)(global1 + local796 - 352), *(int*)(global1 + local796 - 432), *(int*)(global1 + local796 - 436), *(int*)(global1 + local796 - 448), *(int*)(global1 + local796 - 464), *(int*)(global1 + local796 - 224), *(int*)(global1 + local796 - 316), *(int*)(global1 + local796 - 428), param81, param82, param83, *(int*)(local54 - 120), *(int*)(local54 - 144), *(int*)(local54 - 148), *(int*)(local42 - 120), *(int*)(local43 - 4), *(int*)(local43 - 8), *(int*)(local43 - 120), *(int*)(local44 - 96), local117, local118, local119, local120, local121, local122, *(int*)(local46 - 4), *(int*)(local46 - 8), *(int*)(local46 - 12), *(int*)(local46 - 68), *(int*)(local47 - 68), *(int*)(local48 - 60), *(int*)(local49 - 60), *(int*)(local49 - 72), *(int*)(local50 - 120), *(int*)(local51 - 56), *(int*)(local51 - 120), *(int*)(local53 - 4), *(int*)(local53 - 8), *(int*)(local53 - 12), *(int*)(local53 - 68), *(int*)(param44 - 4), *(int*)(param44 - 8), *(int*)(param44 - 12), *(int*)(param44 - 56), *(int*)(param44 - 60), *(int*)(param44 - 68), *(int*)(param44 - 72), *(int*)(param44 - 96), param140, local124, local125, local126, local127, local129, local130, *(int*)local9, *(int*)local5, *(int*)local6, *(int*)local7, *(int*)local794, *(int*)local19, *(int*)local20, *(int*)local21, local131, *(int*)local23, *(int*)local26, *(int*)local25, param91, *(int*)local41, *(int*)local28, local132, local133, *(int*)local33, *(int*)local34, *(int*)local36, *(int*)local37, *(int*)local38, *(int*)local39, *(int*)local40, *(int*)local43, *(int*)local46, *(int*)local51, *(int*)local53, *(int*)param44, *(int*)local55, *(int*)local56, *(int*)local57, local134, *(int*)local59, *(int*)local62, *(int*)local61, param99, *(int*)local63, *(int*)local64, *(int*)local65, local135, *(int*)local67, *(int*)local69, *(int*)local70, param107, local136, *(int*)local235, local137, local138, local139, local140, *(int*)local142, param109, local141, local438, flags, CF); /* Warning: also results in local793, param41, param44 */
        local786 = param40;
        local787 = param41;
        local788 = local796;
        local789 = param44;
        local790 = local3;
        local791 = local143;
    } else {
        local59 = proc61(local50 - 72, 0, 0x4072c0, local462, local50, local463, local464, *(int*)(local50 - 60), *(int*)(local50 - 132)); /* Warning: also results in local792, local447, local793, local448, local445, local23, local37, local49, local67 */
        local786 = local447;
        local787 = local448;
        local788 = local37;
        local789 = local49;
        if (local792 != 0) {
            local7 = proc29(local444, local793, local445, local23, local49, local59, local67, param70, param71, param72, param73, local446); /* Warning: also results in local221, local792, local793, local222, local223, local36, local225, local226 */
            local156 = proc30(*(int*)(local796 - 180), local115, local114, *(int*)(local796 - 128), *(int*)(local796 - 124), param3, *(int*)(local29 - 120), *(int*)(local30 - 120), *(int*)(local40 - 120), param4, *(int*)(local40 - 108), local109, *(int*)(local32 - 104), *(int*)(local34 - 104), *(int*)(local37 - 104), *(int*)(local39 - 104), local108, local343, local107, local342, local106, local105, *(int*)(local29 - 88), *(int*)(local30 - 88), *(int*)(local40 - 88), param7, *(int*)(local29 - 84), *(int*)(local30 - 84), *(int*)(local40 - 84), param12, *(int*)(local29 - 80), *(int*)(local30 - 80), *(int*)(local32 - 80), *(int*)(local39 - 80), *(int*)(local40 - 80), param17, *(int*)(local29 - 76), *(int*)(local30 - 76), *(int*)(local32 - 76), *(int*)(local39 - 76), *(int*)(local40 - 76), *(int*)(local32 - 72), *(int*)(local34 - 72), *(int*)(local37 - 72), *(int*)(local39 - 72), param22, *(int*)(local40 - 72), *(int*)(local32 - 68), *(int*)(local34 - 68), *(int*)(local37 - 68), *(int*)(local39 - 68), param29, *(int*)(local29 - 68), *(int*)(local30 - 68), *(int*)(local40 - 68), *(int*)(local32 - 64), *(int*)(local34 - 64), *(int*)(local37 - 64), *(int*)(local39 - 64), param31, *(int*)(local796 - 60), param34, *(int*)(local40 - 56), *(int*)(local32 - 52), *(int*)(local34 - 52), *(int*)(local37 - 52), *(int*)(local39 - 52), param36, *(int*)(local796 - 48), *(int*)(local796 - 44), local341, *(int*)(local29 - 44), *(int*)(local30 - 44), *(int*)(local40 - 44), *(int*)(local796 - 40), local340, *(int*)(local29 - 40), *(int*)(local30 - 40), *(int*)(local40 - 40), *(int*)(local796 - 36), local339, *(int*)(local796 - 32), local338, *(int*)(local40 - 32), *(int*)(local796 - 28), local337, *(int*)(local32 - 28), *(int*)(local34 - 28), *(int*)(local37 - 28), *(int*)(local39 - 28), *(int*)(local29 - 28), *(int*)(local30 - 28), *(int*)(local40 - 28), *(int*)(local796 - 24), *(int*)(local32 - 24), *(int*)(local34 - 24), *(int*)(local37 - 24), *(int*)(local39 - 24), *(int*)(local796 - 20), *(int*)(local29 - 20), *(int*)(local30 - 20), *(int*)(local34 - 20), local336, local94, *(int*)(local29 - 16), *(int*)(local30 - 16), *(int*)(local32 - 16), *(int*)(local34 - 16), *(int*)(local39 - 16), *(int*)(local40 - 16), local335, local93, *(int*)(local32 - 12), *(int*)(local39 - 12), *(int*)(local29 - 12), *(int*)(local30 - 12), *(int*)(local40 - 12), local334, local92, *(int*)(local29 - 8), *(int*)(local30 - 8), *(int*)(local34 - 8), *(int*)(local37 - 8), *(int*)(local224 - 4), local362, local353, local352, local344, local439, local333, local325, local324, local315, local314, local313, local312, local311, local310, local91, *(int*)(local796 + 4), 0x4072c0, *(int*)(local32 + 4), *(int*)(local34 + 4), *(int*)(local37 + 4), *(int*)(local39 + 4), *(int*)(local40 + 4), *(int*)(local796 + 8), 0x403800, *(int*)(local32 + 8), *(int*)(local34 + 8), *(int*)(local37 + 8), *(int*)(local39 + 8), *(int*)(local40 + 8), local221, local792, local672, local793, local674, local7, local222, local223, 0x4072c0, local225, 0x403800, local226, *(int*)(local9 + 4), *(int*)(local5 + 4), *(int*)(local6 + 4), *(int*)(local794 + 4), *(int*)(local44 + 16), *(int*)(local44 + 20), *(int*)(local44 + 24), *(int*)(local46 + 4), *(int*)(local46 + 8), *(int*)(local48 + 8), *(int*)(local49 + 8), *(int*)(local51 + 4), *(int*)(local51 + 8), *(int*)(local51 + 12), *(int*)(local51 + 16), *(int*)(local51 + 20), *(int*)(local53 + 4), *(int*)(local53 + 8), *(int*)(param44 + 4), *(int*)(param44 + 8), *(int*)(param44 + 12), *(int*)(param44 + 16), *(int*)(param44 + 20), *(int*)(param44 + 24), *(int*)(*(int*)(local46 + 8) + 4), *(int*)(*(int*)(local53 + 8) + 4), *(int*)(*(int*)(local53 - 140) + 4), *(int*)(local142 + 4), *(int*)(local142 + 8), *(int*)(local142 + 20), *(int*)(local142 + 24), *(int*)(local142 + 28), *(int*)(local142 + 32), *(int*)(local142 + 40), *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), *(int*)(local142 + 56), *(int*)(local142 + 60), *(int*)(local142 + 64), *(int*)(local142 + 68), *(int*)(local142 + 72), *(int*)(local142 + 76), *(int*)(local142 + 80), param64, param65, param66, param67, param68, param69, param70, param71, param72, param73, param74, param75, param76, param77, param78, param79, param80, *(int*)(local18 + local27 - 136), *(int*)(local18 + local27 - 228), *(int*)(local18 + local27 - 340), *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local13 + local33 - 132), *(int*)(local13 + local33 - 224), *(int*)(local13 + local33 - 336), *(int*)(local17 + local39 - 136), *(int*)(local17 + local39 - 228), *(int*)(local17 + local39 - 340), *(int*)(local795 + local796 - 104), *(int*)(local795 + local796 - 132), *(int*)(local795 + local796 - 136), *(int*)(local795 + local796 - 148), *(int*)(local795 + local796 - 152), *(int*)(local795 + local796 - 196), *(int*)(local795 + local796 - 212), *(int*)(local795 + local796 - 224), *(int*)(local795 + local796 - 228), *(int*)(local795 + local796 - 240), *(int*)(local795 + local796 - 244), *(int*)(local795 + local796 - 304), *(int*)(local795 + local796 - 308), *(int*)(local795 + local796 - 336), *(int*)(local795 + local796 - 340), *(int*)(local795 + local796 - 352), *(int*)(local795 + local796 - 356), *(int*)(local795 + local796 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(param44 + local796 - 188), *(int*)(param44 + local796 - 280), *(int*)(param44 + local796 - 392), *(int*)(*(int*)(local46 + 8) + local32 - 136), *(int*)(*(int*)(local46 + 8) + local32 - 228), *(int*)(*(int*)(local46 + 8) + local32 - 340), *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 136), *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 228), *(int*)(*(int*)(*(int*)(local46 + 8) + 4) + local32 - 340), *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 136), *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 228), *(int*)(*(int*)(*(int*)(local53 + 8) + 4) + local39 - 340), *(int*)(global1 + local27 - 228), *(int*)(global1 + local27 - 320), *(int*)(global1 + local27 - 432), *(int*)(global1 + local32 - 228), *(int*)(global1 + local32 - 320), *(int*)(global1 + local32 - 432), *(int*)(global1 + local34 - 228), *(int*)(global1 + local34 - 320), *(int*)(global1 + local34 - 432), *(int*)(global1 + local35 - 224), *(int*)(global1 + local35 - 316), *(int*)(global1 + local35 - 428), *(int*)(global1 + local37 - 228), *(int*)(global1 + local37 - 320), *(int*)(global1 + local37 - 432), *(int*)(global1 + local39 - 228), *(int*)(global1 + local39 - 320), *(int*)(global1 + local39 - 432), *(int*)(global1 + local796 - 224), *(int*)(global1 + local796 - 228), param81, *(int*)(global1 + local796 - 316), *(int*)(global1 + local796 - 320), param82, *(int*)(global1 + local796 - 428), *(int*)(global1 + local796 - 432), param83, *(int*)(local18 + local27 - 136), *(int*)(local18 + local27 - 228), *(int*)(local18 + local27 - 340), *(int*)(local11 + local28 - 104), *(int*)(local11 + local28 - 148), *(int*)(local11 + local28 - 152), *(int*)(local11 + local28 - 196), *(int*)(local11 + local28 - 212), *(int*)(local11 + local28 - 240), *(int*)(local11 + local28 - 244), *(int*)(local11 + local28 - 304), *(int*)(local11 + local28 - 308), *(int*)(local11 + local28 - 352), *(int*)(local11 + local28 - 356), *(int*)(local11 + local28 - 416), *(int*)(local12 + local29 - 152), *(int*)(local12 + local29 - 168), *(int*)(local12 + local29 - 244), *(int*)(local12 + local29 - 260), *(int*)(local12 + local29 - 356), *(int*)(local12 + local29 - 372), *(int*)(local13 + local33 - 132), *(int*)(local13 + local33 - 224), *(int*)(local13 + local33 - 336), *(int*)(local14 + local34 - 136), *(int*)(local14 + local34 - 228), *(int*)(local14 + local34 - 340), *(int*)(local15 + local40 - 140), *(int*)(local15 + local40 - 232), *(int*)(local15 + local40 - 344), *(int*)(local795 + local796 - 104), *(int*)(local795 + local796 - 132), *(int*)(local795 + local796 - 136), *(int*)(local795 + local796 - 140), *(int*)(local795 + local796 - 148), *(int*)(local795 + local796 - 152), *(int*)(local795 + local796 - 168), *(int*)(local795 + local796 - 196), *(int*)(local795 + local796 - 212), *(int*)(local795 + local796 - 224), *(int*)(local795 + local796 - 228), *(int*)(local795 + local796 - 232), *(int*)(local795 + local796 - 240), *(int*)(local795 + local796 - 244), *(int*)(local795 + local796 - 260), *(int*)(local795 + local796 - 304), *(int*)(local795 + local796 - 308), *(int*)(local795 + local796 - 336), *(int*)(local795 + local796 - 340), *(int*)(local795 + local796 - 344), *(int*)(local795 + local796 - 352), *(int*)(local795 + local796 - 356), *(int*)(local795 + local796 - 372), *(int*)(local795 + local796 - 416), *(int*)(local42 + local28 - 188), *(int*)(local42 + local28 - 280), *(int*)(local42 + local28 - 392), *(int*)(param44 + local796 - 188), *(int*)(param44 + local796 - 280), *(int*)(param44 + local796 - 392), *(int*)(*(int*)(local44 - 92) + local30 - 152), *(int*)(*(int*)(local44 - 92) + local30 - 168), *(int*)(*(int*)(local44 - 92) + local30 - 244), *(int*)(*(int*)(local44 - 92) + local30 - 260), *(int*)(*(int*)(local44 - 92) + local30 - 356), *(int*)(*(int*)(local44 - 92) + local30 - 372), *(int*)(local142 + local34 - 228), *(int*)(local142 + local34 - 320), *(int*)(local142 + local34 - 432), *(int*)(local142 + local35 - 224), *(int*)(local142 + local35 - 316), *(int*)(local142 + local35 - 428), *(int*)(local142 + local40 - 228), *(int*)(local142 + local40 - 232), *(int*)(local142 + local40 - 244), *(int*)(local142 + local40 - 320), *(int*)(local142 + local40 - 324), *(int*)(local142 + local40 - 336), *(int*)(local142 + local40 - 432), *(int*)(local142 + local40 - 436), *(int*)(local142 + local40 - 448), *(int*)(global1 + local27 - 228), *(int*)(global1 + local27 - 320), *(int*)(global1 + local27 - 432), *(int*)(global1 + local29 - 244), *(int*)(global1 + local29 - 260), *(int*)(global1 + local29 - 336), *(int*)(global1 + local29 - 352), *(int*)(global1 + local29 - 448), *(int*)(global1 + local29 - 464), *(int*)(global1 + local30 - 244), *(int*)(global1 + local30 - 260), *(int*)(global1 + local30 - 336), *(int*)(global1 + local30 - 352), *(int*)(global1 + local30 - 448), *(int*)(global1 + local30 - 464), *(int*)(global1 + local796 - 228), *(int*)(global1 + local796 - 232), *(int*)(global1 + local796 - 244), *(int*)(global1 + local796 - 260), *(int*)(global1 + local796 - 320), *(int*)(global1 + local796 - 324), *(int*)(global1 + local796 - 336), *(int*)(global1 + local796 - 352), *(int*)(global1 + local796 - 432), *(int*)(global1 + local796 - 436), *(int*)(global1 + local796 - 448), *(int*)(global1 + local796 - 464), *(int*)(global1 + local796 - 224), *(int*)(global1 + local796 - 316), *(int*)(global1 + local796 - 428), param81, param82, param83, local378, local379, local380, local381, *(int*)(local43 - 4), *(int*)(local43 - 8), local382, local383, local384, local385, local386, local387, local388, local389, *(int*)(local46 - 4), *(int*)(local46 - 8), *(int*)(local46 - 12), *(int*)(local46 - 68), local394, local395, *(int*)(local49 - 60), *(int*)(local49 - 72), local396, *(int*)(local51 - 56), local397, *(int*)(local53 - 4), *(int*)(local53 - 8), *(int*)(local53 - 12), *(int*)(local53 - 68), *(int*)(param44 - 4), *(int*)(param44 - 8), *(int*)(param44 - 12), *(int*)(param44 - 56), *(int*)(param44 - 60), *(int*)(param44 - 68), *(int*)(param44 - 72), *(int*)(param44 - 96), param140, *(int*)(*(int*)(local46 + 8) - 8), *(int*)(*(int*)(local46 + 8) - 28), *(int*)(*(int*)(local46 + 8) - 48), *(int*)(*(int*)(local53 + 8) - 8), *(int*)(*(int*)(local53 + 8) - 28), *(int*)(*(int*)(local53 + 8) - 48), *(int*)local9, *(int*)local5, *(int*)local6, 0x4074f4, *(int*)local794, *(int*)local19, *(int*)local20, *(int*)local21, *(int*)local22, *(int*)local23, *(int*)local26, *(int*)local25, param91, local411, local412, local413, local414, local415, local416, local7, local417, local418, local419, local420, *(int*)local43, *(int*)local46, *(int*)local51, *(int*)local53, *(int*)param44, *(int*)local55, *(int*)local56, *(int*)local57, *(int*)local58, *(int*)local59, *(int*)local62, *(int*)local61, param99, *(int*)local63, *(int*)local64, *(int*)local65, *(int*)local66, *(int*)local67, *(int*)local69, *(int*)local70, param107, *(int*)*(int*)(local46 + 8), *(int*)local235, *(int*)*(int*)(local53 + 8), *(int*)*(int*)(local53 - 140), *(int*)*(int*)(*(int*)(local46 + 8) - 8), *(int*)*(int*)(*(int*)(local53 + 8) - 8), *(int*)local142, param109, local437, param110, local440, local441); /* Warning: also results in local161, local155, local792, param40, local793, param41, local157, local158, local159, local160, local162 */
            local716 = local155;
            local717 = param40;
            local718 = param41;
            local719 = local156;
            local720 = local157;
            local721 = local158;
            local722 = local159;
            local723 = local160;
            local724 = local161;
            local725 = local162;
            local726 = local219;
            local727 = local579;
            local728 = flags;
            local729 = CF;
            local730 = local181;
            local731 = local197;
            local732 = local198;
            local733 = local199;
            local734 = local200;
            local735 = local201;
            local736 = local202;
            local737 = local210;
            local738 = local211;
            local739 = local163;
            local740 = local164;
            local741 = local165;
            local742 = local166;
            local743 = local167;
            local744 = local168;
            local745 = local169;
            local746 = local170;
            local747 = local171;
            local748 = local172;
            local749 = local173;
            local750 = local174;
            local751 = local175;
            local752 = local176;
            local753 = local177;
            local754 = local178;
            local755 = local179;
            local756 = local182;
            local757 = local183;
            local758 = local184;
            local759 = local185;
            local760 = local186;
            local761 = local187;
            local762 = local188;
            local763 = local189;
            local764 = local190;
            local765 = local191;
            local766 = local192;
            local767 = local193;
            local768 = local194;
            local769 = local195;
            local770 = local196;
            local771 = local203;
            local772 = local204;
            local773 = local205;
            local774 = local206;
            local775 = local207;
            local776 = local208;
            local777 = local209;
            local778 = local212;
            local779 = local213;
            local780 = local214;
            local781 = local215;
            local782 = local216;
            local783 = local217;
            local784 = local218;
            local785 = local220;
            goto L5;
        }
    }
    param40 = local786;
    param41 = local787;
    local40 = local788;
    local51 = local789;
    local2 = local790;
    local142 = local791;
    param45 = proc45(*(int*)(local40 - 104), *(int*)(local40 - 72), *(int*)(local40 - 68), *(int*)(local40 - 64), *(int*)(local40 - 28), *(int*)(local40 + 4), *(int*)(local40 + 8), local679, (unsigned char) *(int*)(local51 - 136), param40, param41, local680, local26, local51, local62, local70, *(int*)(local142 + 4), *(int*)(local142 + 8), *(int*)(local142 + 20), *(int*)(local142 + 24), *(int*)(local142 + 28), *(int*)(local142 + 32), *(int*)(local142 + 40), *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), *(int*)(local142 + 56), *(int*)(local142 + 60), *(int*)(local142 + 64), *(int*)(local142 + 68), *(int*)(local142 + 72), *(int*)(local142 + 76), *(int*)(local142 + 80), *(int*)(local142 + local40 - 228), *(int*)(local142 + local40 - 320), *(int*)(local142 + local40 - 432), *(int*)(local142 + local40 - 228), *(int*)(local142 + local40 - 320), *(int*)(local142 + local40 - 432), *(int*)local26, *(int*)(local51 - 136), *(int*)local62, *(int*)local70, *(int*)local142, local2); /* Warning: also results in param39, param42, param43, local35, param46 */
    local58 = proc2(local35 - 68, param39, (unsigned char) local35 - 68, param42, param43, local35 - 4, param45, param46, *(int*)(local142 + 40), *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), local1); /* Warning: also results in param39, param42, local14, local22, local34, local48, local66 */
    param39 = proc26(*(int*)(local34 + 4), *(int*)(local34 + 8), param39, (unsigned char) local235, local793, param42, local22, local48, local58, local66, local0, *(int*)(local142 + 4), *(int*)(local142 + 8), *(int*)(local142 + 20), *(int*)(local142 + 24), *(int*)(local142 + 28), *(int*)(local142 + 32), *(int*)(local142 + 40), *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), *(int*)(local142 + 56), *(int*)(local142 + 60), *(int*)(local142 + 64), *(int*)(local142 + 68), *(int*)(local142 + 72), *(int*)(local142 + 76), *(int*)(local142 + 80), *(int*)(local14 + local34 - 136), *(int*)(local14 + local34 - 228), *(int*)(local14 + local34 - 340), *(int*)(local142 + local34 - 228), *(int*)(local142 + local34 - 320), *(int*)(local142 + local34 - 432), *(int*)(local14 + local34 - 136), *(int*)(local14 + local34 - 140), *(int*)(local14 + local34 - 228), *(int*)(local14 + local34 - 232), *(int*)(local14 + local34 - 340), *(int*)(local14 + local34 - 344), *(int*)(local142 + local34 - 232), *(int*)(local142 + local34 - 324), *(int*)(local142 + local34 - 436), *(int*)(local142 + local34 - 228), *(int*)(local142 + local34 - 320), *(int*)(local142 + local34 - 432), 1, *(int*)(local48 - 72), *(int*)local22, local235, *(int*)local58, *(int*)local66, *(int*)local235, *(int*)local142, local1); /* Warning: also results in param42, local13, param43, local33, local47, param46 */
    param39 = proc5(param39, (unsigned char) local47 - 64, param42, param43, local47, param46, *(int*)(local142 + 44), *(int*)(local142 + 48), *(int*)(local142 + 52), local47 - 64, local583); /* Warning: also results in param42, param44 */
    return *(int*)(param44 - 8); /* WARNING: Also returning: param39, (unsigned char) *(int*)(param44 - 68), param40, param41, param42, *(int*)(param44 - 12), *(int*)(param44 - 4) */
}

// address: 0x403cb0
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 local0; 		// r28{53}
    int local1; 		// r29{21}
    int local2; 		// r28{36}
    int local3; 		// r28{60}
    int local4; 		// r24
    int local5; 		// r26
    int local6; 		// r28

    *(int*)(local6 - 4) = param5;
    *(int*)(local6 - 36) = local6 - 16;
    *(int*)(local6 - 16) = param4;
    *(int*)(local6 - 12) = param6;
    *(int*)(local6 - 8) = param7;
    *(int*)(local6 - 44) = 0x402060;
    *(int*)(local6 - 40) = 0x405920;
    *(int*)(local6 - 32) = 0x403d45;
    *(int*)(local6 - 28) = local6 - 92;
    *(int*)(local6 - 92) = local6 - 68;
    param1 = proc2(local6 - 68, param1, param2, param3, param4, local6 - 4, param6, param7, param8, param9, param10, param11, param14); /* Warning: also results in param2, param4, local1, param7 */
    if (param12 != 0) {
        *(int*)local6 = param13;
        local4 = proc43(param13); /* Warning: also results in param3 */
        *(int*)(local1 - 68) = local4;
        *(int*)local6 = local1 - 64;
        param1 = proc5(param1, param2, param3, param4, local1, param7, param9, param10, param11, local1 - 64, param14); /* Warning: also results in param2, param3, local5, param5 */
        local4 = *(int*)(param5 - 68);
        param4 = *(int*)(param5 - 12);
        param6 = *(int*)(param5 - 8);
        param7 = *(int*)(param5 - 4);
        param5 = *(int*)param5;
    } else {
        *(int*)(local1 - 68) = global1 + 60;
        *(int*)local6 = local1 - 64;
        param1 = proc5(param1, param2, param12, param4, local1, param7, param9, param10, param11, local1 - 64, param14); /* Warning: also results in param2, param3, local5, param5 */
        local4 = *(int*)(param5 - 68);
        param4 = *(int*)(param5 - 12);
        param6 = *(int*)(param5 - 8);
        param7 = *(int*)(param5 - 4);
        param5 = *(int*)param5;
    }
    *(int*)local6 = local1 - 64;
    return local4; /* WARNING: Also returning: param6, param1, param2, param3, local5, param4, param5, param7 */
}

// address: 0x405230
int proc50(int param1, int param2) {
    int local0; 		// m[r28 + 4]{23}
    int local1; 		// m[m[r28 + 4] + 8]{23}
    int local10; 		// r26
    int local11; 		// r28
    int local2; 		// m[r28 - 16]{21}
    int local3; 		// m[r28 - 12]{19}
    int local4; 		// m[r28 - 8]{18}
    int local5; 		// m[r28 - 4]{1}
    int local6; 		// m[r28 - 16]
    int local7; 		// m[r28 - 12]
    int local8; 		// m[r28 - 8]
    int local9; 		// r24

    local5 = param2;
    local10 = param1;
    local9 = *(int*)(param1 + 8);
    if (local9 != 0) {
        local4 = param1;
        local3 = 1;
        (**(int*)(param1 + 8))(param3, 1, param1, param2, param1, local9, param1, local11 - 4, *(int*)(param1 + 8), <all>, LOGICALFLAGS32(local9), LOGICALFLAGS32(local9));
        param2 = *(int*)param2;
    } else {
    }
    return local9; /* WARNING: Also returning: local10, param2 */
}

// address: 0x4044c0
int proc51(short param1, int param2, int param3, int param4, int param5, int param6, int param7, int param15) {
    int local0; 		// m[r28 - 104]{70}
    int local1; 		// m[r28 - 104]{79}
    int local10; 		// r28{391}
    int local100; 		// r24{369}
    int local101; 		// r26{369}
    int local102; 		// r28{369}
    int local103; 		// r25{447}
    int local104; 		// local80{448}
    int local105; 		// local84{449}
    int local106; 		// local78{456}
    int local107; 		// r24{462}
    int local108; 		// r26{464}
    int local109; 		// r30{468}
    int local11; 		// r24{378}
    int local110; 		// r31{469}
    short local111; 		// r0{476}
    int local112; 		// local46{502}
    int local113; 		// local47{504}
    int local114; 		// local48{505}
    int local115; 		// local49{506}
    int local116; 		// local40{517}
    int local117; 		// local30{518}
    int local118; 		// local31{520}
    int local119; 		// local32{521}
    int local12; 		// r28{378}
    int local120; 		// local33{522}
    void *local121; 		// local21{534}
    int local122; 		// local23{536}
    int local123; 		// local24{537}
    int local124; 		// local25{538}
    int local125; 		// r26{549}
    int local126; 		// local13{550}
    int local127; 		// local14{552}
    char local128; 		// r8
    void *local129; 		// r24
    int local13; 		// r27{550}
    int local130; 		// r25
    int local131; 		// r26
    int local132; 		// r28
    int local14; 		// r29{552}
    int local15; 		// r27{343}
    int local16; 		// r29{342}
    int local17; 		// r27{342}
    int local18; 		// r28{342}
    int local19; 		// r30{342}
    void *local2; 		// r24{175}
    int local20; 		// r31{342}
    void *local21; 		// r27{534}
    int local22; 		// r28{535}
    int local23; 		// r29{536}
    int local24; 		// r30{537}
    int local25; 		// r31{538}
    int local26; 		// m[r28 - 344]{838}
    int local27; 		// m[r28 - 340]{837}
    int local28; 		// m[r28 - 336]{836}
    int local29; 		// m[r28 - 320]{835}
    void *local3; 		// r24{189}
    void *local30; 		// r27{518}
    int local31; 		// r29{520}
    int local32; 		// r30{521}
    int local33; 		// r31{522}
    ATOM local34; 		// r24{332}
    int local35; 		// r26{332}
    int local36; 		// r28{332}
    int local37; 		// r24{327}
    int local38; 		// r26{327}
    int local39; 		// r28{327}
    int local4; 		// m[r28 - 104]{659}
    int local40; 		// r26{517}
    int local41; 		// m[r28 - 344]{768}
    int local42; 		// m[r28 - 340]{767}
    int local43; 		// m[r28 - 336]{766}
    int local44; 		// m[r28 - 320]{765}
    int local45; 		// r26{318}
    void *local46; 		// r27{502}
    int local47; 		// r29{504}
    int local48; 		// r30{505}
    int local49; 		// r31{506}
    int local5; 		// m[r28 - 104]{729}
    int local50; 		// m[r28 - 344]{698}
    int local51; 		// m[r28 - 340]{697}
    int local52; 		// m[r28 - 336]{696}
    int local53; 		// m[r28 - 320]{695}
    void *local54; 		// r27{178}
    int local55; 		// r29{88}
    int local56; 		// r30{311}
    int local57; 		// r31{116}
    ATOM local58; 		// r24{310}
    int local59; 		// r26{310}
    int local6; 		// m[r28 - 104]{799}
    int local60; 		// r28{310}
    int local61; 		// r26{264}
    int local62; 		// r26{492}
    int local63; 		// r26{189}
    int local64; 		// r28{189}
    int local65; 		// r26{175}
    int local66; 		// r28{175}
    int local67; 		// r27{76}
    int local68; 		// r30{84}
    ATOM local69; 		// r24{161}
    int local7; 		// m[r28 - 104]{869}
    int local70; 		// r26{161}
    int local71; 		// r28{161}
    int local72; 		// r24{83}
    int local73; 		// r26{83}
    int local74; 		// r28{83}
    int local75; 		// r24{74}
    int local76; 		// r26{74}
    int local77; 		// r28{74}
    int local78; 		// r27{456}
    int local79; 		// r26{455}
    int local8; 		// r28{429}
    int local80; 		// r26{448}
    int local81; 		// r25{45}
    int local82; 		// r26{48}
    int local83; 		// r27{42}
    int local84; 		// r27{449}
    int local85; 		// r25{33}
    int local86; 		// r26{36}
    int local87; 		// r26{23}
    int local88; 		// r27{15}
    UINT local89; 		// r24{22}
    int local9; 		// r28{408}
    int local90; 		// r26{22}
    int local91; 		// r28{22}
    int local92; 		// r0{9}
    int local93; 		// r26{533}
    int local94; 		// m[0x40d110]
    int local95; 		// r26{372}
    int local96; 		// r27{369}
    int local97; 		// r29{369}
    int local98; 		// r30{369}
    int local99; 		// r31{369}
    int param14;
    int param15;
    int param16;
    int param17;
    int param18;

    param2 = param3;
    *(int*)(local132 - 8) = param2;
    local92 = (unsigned short) (param1);
    *(int*)(local132 - 100) = 66;
    local88 = 0;
    *(LPWSTR*)(local132 - 104) = local132 - 92;
    *(int*)(local132 - 108) = (param1);
    local89 = GetAtomNameA((param1), local132 - 92, 66);
    local105 = local88;
    local109 = param4;
    local110 = param5;
    local111 = local92;
    local87 = 31;
    local130 = 1;
    local103 = local130;
    local104 = local87;
    if (local89 != 0) {
        do {
L35:
            local130 = local103;
            local80 = local104;
            local84 = local105;
            local105 = local84;
            local106 = local84;
            if (*(int*)(local80 + local132 - 92) == 65) {
                local83 = local84 | local130;
                local81 = local130 + local130;
                local82 = local80 - 1;
                local103 = local81;
                local104 = local82;
                local105 = local83;
                local106 = local83;
                if (local82 >= 0) {
                    goto L35;
                }
                goto L32;
            }
            local85 = local130 + local130;
            local86 = local80 - 1;
            local103 = local85;
            local104 = local86;
        } while (local80 - 1 < 0);
L32:
        local130 += local130;
        local79 = local80 - 1;
        local78 = local106;
        local108 = local79;
        if (*(int*)local78 != 84) {
            *(int*)(local132 - 108) = 0x4071f4;
            param1 = 0x7224;
            *(int*)(local132 - 100) = 247;
            local0 = 0x407224;
            *(int*)(local132 - 112) = GetAtomNameA;
            _assert(0x4071f4);
            local111 = param1;
L29:
            param1 = local111;
            *(int*)(local132 - 108) = 0x407258;
            local67 = 241;
            *(int*)(local132 - 100) = 241;
            local1 = 0x407224;
            _assert(0x407258);
            local107 = local72;
            local108 = local73;
            local121 = local67;
            local68 = param4;
            *(int*)(local132 - 112) = local132 - 4;
            local55 = local132 - 112;
            *(int*)(local132 - 116) = param5;
            *(int*)(local132 - 120) = param4;
            *(int*)(local132 - 124) = 241;
            local109 = local68;
            local109 = local68;
            local113 = local55;
            local122 = local55;
            local123 = local68;
            if (global1 == 0) {
                *(int*)(local132 - 216) = 0x41414141;
                local57 = local132 - 216;
                *(int*)(local132 - 212) = 0x41414141;
                *(int*)(local132 - 208) = 0x41414141;
                *(int*)(local132 - 184) = global4;
                *(int*)(local132 - 204) = 0x41414141;
                *(int*)(local132 - 200) = 0x41414141;
                *(int*)(local132 - 180) = global5;
                *(int*)(local132 - 196) = 0x41414141;
                *(int*)(local132 - 192) = 0x41414141;
                *(int*)(local132 - 176) = global6;
                *(int*)(local132 - 188) = 0x41414141;
                *(int*)(local132 - 172) = global7;
                *(int*)(local132 - 168) = global8;
                *(int*)(local132 - 164) = global9;
                *(int*)(local132 - 160) = global10;
                *(int*)(local132 - 156) = global11;
                *(short*)(local132 - 152) = (unsigned short) (global12);
                *(LPCSTR*)(local132 - 312) = local132 - 216;
                FindAtomA(local132 - 216);
                local110 = local57;
                local110 = local57;
                local115 = local57;
                local124 = local57;
                param1 = (unsigned short) ((unsigned short) (global12));
                if (((unsigned short) (global12)) != 0) {
L3:
                    local21 = local121;
                    local23 = local122;
                    local24 = local123;
                    local25 = local124;
                    param2 = param3;
                    *(int*)(local132 - 8) = param2;
                    *(int*)(local132 - 100) = 241;
                    local6 = 0x407224;
                    *(int*)(local132 - 108) = 0x407258;
                    *(int*)(local132 - 112) = local132 - 4;
                    *(int*)(local132 - 116) = param5;
                    *(int*)(local132 - 120) = param4;
                    *(int*)(local132 - 124) = 241;
                    *(int*)(local132 - 152) = (unsigned short) (global12);
                    *(int*)(local132 - 156) = global11;
                    *(int*)(local132 - 160) = global10;
                    *(int*)(local132 - 164) = global9;
                    *(int*)(local132 - 168) = global8;
                    *(int*)(local132 - 172) = global7;
                    *(int*)(local132 - 176) = global6;
                    *(int*)(local132 - 180) = global5;
                    *(int*)(local132 - 184) = global4;
                    *(int*)(local132 - 188) = 0x41414141;
                    *(int*)(local132 - 192) = 0x41414141;
                    *(int*)(local132 - 196) = 0x41414141;
                    *(int*)(local132 - 200) = 0x41414141;
                    *(int*)(local132 - 204) = 0x41414141;
                    *(int*)(local132 - 208) = 0x41414141;
                    *(int*)(local132 - 212) = 0x41414141;
                    *(int*)(local132 - 216) = 0x41414141;
                    local29 = *(int*)(local132 - 320);
                    local28 = *(int*)(local132 - 336);
                    local27 = *(int*)(local132 - 340);
                    local26 = *(int*)(local132 - 344);
                    local129 = proc51(param1, local21, local23, local24, local25, param6, param7, *(int*)(local93 + local22 - 96), *(int*)(local93 + local22 - 100), *(int*)(local93 + local22 - 412), *local129, *local21, *(int*)local24, param15, param13, param14, param15); /* Warning: also results in local130, local131, local16 */
                    local125 = local131;
                    local127 = local16;
                    local15 = local129;
                    local126 = local15;
L1:
                    local131 = local125;
                    local13 = local126;
                    local14 = local127;
                    param2 = param3;
                    *(int*)(local132 - 8) = param2;
                    *(int*)(local132 - 100) = 241;
                    local7 = 0x407224;
                    *(int*)(local132 - 108) = 0x407258;
                    *(int*)(local132 - 112) = local132 - 4;
                    *(int*)(local132 - 116) = param5;
                    *(int*)(local132 - 120) = param4;
                    *(int*)(local132 - 124) = 241;
                    *(int*)(local132 - 152) = (unsigned short) (global12);
                    *(int*)(local132 - 156) = global11;
                    *(int*)(local132 - 160) = global10;
                    *(int*)(local132 - 164) = global9;
                    *(int*)(local132 - 168) = global8;
                    *(int*)(local132 - 172) = global7;
                    *(int*)(local132 - 176) = global6;
                    *(int*)(local132 - 180) = global5;
                    *(int*)(local132 - 184) = global4;
                    *(int*)(local132 - 188) = 0x41414141;
                    *(int*)(local132 - 192) = 0x41414141;
                    *(int*)(local132 - 196) = 0x41414141;
                    *(int*)(local132 - 200) = 0x41414141;
                    *(int*)(local132 - 204) = 0x41414141;
                    *(int*)(local132 - 208) = 0x41414141;
                    *(int*)(local132 - 212) = 0x41414141;
                    *(int*)(local132 - 216) = 0x41414141;
                    global1 = local13;
                    global2 = local13 + 4;
                    local129 = local13 + 8;
                    param1 = (unsigned short) local13 + 8;
                    global3 = local13 + 8;
                    param2 = *(int*)(local14 - 12);
                    param4 = *(int*)(local14 - 8);
                    param5 = *(int*)(local14 - 4);
                    param3 = *(int*)local14;
                    local107 = local129;
                    local108 = local131;
                    local109 = param4;
                    local110 = param5;
                } else {
                    *(int*)(local132 - 312) = 84;
                    *(int*)(local132 - 316) = FindAtomA;
                    local2 = malloc(84);
                    local54 = local2;
                    local112 = local54;
                    if (local2 == NULL) {
                        *(int*)(local132 - 316) = FindAtomA + 0x1143;
                        abort();
                        *(int*)(local132 - 316) = local132 - 112;
                        *(int*)(local132 - 320) = local2;
                        *(int*)(local132 - 344) = FindAtomA + 0x20b8;
                        local129 = TlsAlloc();
                        local108 = local131;
                        if (local129 == -1) {
                            *(int*)(local132 - 344) = TlsAlloc;
                            local129 = GetLastError();
                            local108 = local131;
                            local128 =  (local129 == NULL) ? 1 : 0;
                            local129 = (local128);
                            param1 = (unsigned short) (local128);
                            param2 = local2;
                            param3 = local132 - 112;
                            local107 = local129;
                        } else {
                            *(int*)(local132 - 336) = 0;
                            *(int*)(local132 - 340) = local129;
                            *(int*)(local132 - 344) = TlsAlloc;
                            local129 = proc53();
                            local128 =  (local129 == NULL) ? 1 : 0;
                            local129 = (local128);
                            param1 = (unsigned short) (local128);
                            param2 = local2;
                            param3 = local132 - 112;
                            local107 = local129;
                        }
                    } else {
                        *(int*)(local132 - 312) = local2;
                        *(int*)(local132 - 308) = 0;
                        *(int*)(local132 - 304) = 84;
                        *(int*)(local132 - 316) = FindAtomA + 0x1143;
                        memset(local2, 0, 84);
                        local130 = 1;
                        *(int*)local2 = 84;
                        do {
                            local130 += local130;
                            local61 = local62 - 1;
                        } while (local61 >= 0);
                        *(int*)(local132 - 264) = global4;
                        *(int*)(local132 - 260) = global5;
                        *(int*)(local132 - 256) = global6;
                        *(int*)(local132 - 252) = global7;
                        *(int*)(local132 - 248) = global8;
                        *(int*)(local132 - 244) = global9;
                        *(int*)(local132 - 240) = global10;
                        *(int*)(local132 - 236) = global11;
                        *(short*)(local132 - 232) = (unsigned short) (global12);
                        param1 = (unsigned short) local132 - 296;
                        *(LPCSTR*)(local132 - 312) = local132 - 296;
                        *(int*)(local132 - 316) = FindAtomA + 0x2255;
                        AddAtomA(local132 - 296);
                        local56 = ((unsigned short) local132 - 296);
                        local114 = local56;
                        if (local56 != 0) {
                            *(int*)(local132 - 316) = AddAtomA;
                            local100 = proc51((unsigned short) local56, local2, local132 - 112, local56, local132 - 216, param6, param7, *(int*)(local59 + local132 - 408), *(int*)(local59 + local132 - 412), *(int*)(local59 + local132 - 724), 84, *(int*)local56, param15, param13, param14, param15); /* Warning: also results in local98, param1, local130, local96, local97, local99 */
                            local112 = local96;
                            local113 = local97;
                            local114 = local98;
                            local115 = local99;
                            local117 = local96;
                            local118 = local97;
                            local119 = local98;
                            local120 = local99;
                            local95 = local98;
                            local116 = local95;
                            if (local100 != local96) {
L15:
                                local46 = local112;
                                local47 = local113;
                                local48 = local114;
                                local49 = local115;
                                param2 = param3;
                                *(int*)(local132 - 8) = param2;
                                *(int*)(local132 - 100) = 241;
                                local4 = 0x407224;
                                *(int*)(local132 - 108) = 0x407258;
                                *(int*)(local132 - 112) = local132 - 4;
                                *(int*)(local132 - 116) = param5;
                                *(int*)(local132 - 120) = param4;
                                *(int*)(local132 - 124) = 241;
                                *(int*)(local132 - 152) = (unsigned short) (global12);
                                *(int*)(local132 - 156) = global11;
                                *(int*)(local132 - 160) = global10;
                                *(int*)(local132 - 164) = global9;
                                *(int*)(local132 - 168) = global8;
                                *(int*)(local132 - 172) = global7;
                                *(int*)(local132 - 176) = global6;
                                *(int*)(local132 - 180) = global5;
                                *(int*)(local132 - 184) = global4;
                                *(int*)(local132 - 188) = 0x41414141;
                                *(int*)(local132 - 192) = 0x41414141;
                                *(int*)(local132 - 196) = 0x41414141;
                                *(int*)(local132 - 200) = 0x41414141;
                                *(int*)(local132 - 204) = 0x41414141;
                                *(int*)(local132 - 208) = 0x41414141;
                                *(int*)(local132 - 212) = 0x41414141;
                                *(int*)(local132 - 216) = 0x41414141;
                                *(int*)(local132 - 232) = (unsigned short) (global12);
                                *(int*)(local132 - 236) = global11;
                                *(int*)(local132 - 240) = global10;
                                *(int*)(local132 - 244) = global9;
                                *(int*)(local132 - 248) = global8;
                                *(int*)(local132 - 252) = global7;
                                *(int*)(local132 - 256) = global6;
                                *(int*)(local132 - 260) = global5;
                                *(int*)(local132 - 264) = global4;
                                *(int*)(local132 - 304) = 84;
                                *(int*)(local132 - 308) = 0;
                                *(int*)(local132 - 312) = local132 - 296;
                                local53 = *(int*)(local132 - 320);
                                local52 = *(int*)(local132 - 336);
                                local51 = *(int*)(local132 - 340);
                                local50 = *(int*)(local132 - 344);
                                local45 = 0;
                                local116 = local45;
                                local117 = local46;
                                local118 = local47;
                                local119 = local48;
                                local120 = local49;
                            }
                        } else {
                            goto L15;
                        }
                        local40 = local116;
                        local30 = local117;
                        local31 = local118;
                        local32 = local119;
                        local33 = local120;
                        param2 = param3;
                        *(int*)(local132 - 8) = param2;
                        *(int*)(local132 - 100) = 241;
                        local5 = 0x407224;
                        *(int*)(local132 - 108) = 0x407258;
                        *(int*)(local132 - 112) = local132 - 4;
                        *(int*)(local132 - 116) = param5;
                        *(int*)(local132 - 120) = param4;
                        *(int*)(local132 - 124) = 241;
                        *(int*)(local132 - 152) = (unsigned short) (global12);
                        *(int*)(local132 - 156) = global11;
                        *(int*)(local132 - 160) = global10;
                        *(int*)(local132 - 164) = global9;
                        *(int*)(local132 - 168) = global8;
                        *(int*)(local132 - 172) = global7;
                        *(int*)(local132 - 176) = global6;
                        *(int*)(local132 - 180) = global5;
                        *(int*)(local132 - 184) = global4;
                        *(int*)(local132 - 188) = 0x41414141;
                        *(int*)(local132 - 192) = 0x41414141;
                        *(int*)(local132 - 196) = 0x41414141;
                        *(int*)(local132 - 200) = 0x41414141;
                        *(int*)(local132 - 204) = 0x41414141;
                        *(int*)(local132 - 208) = 0x41414141;
                        *(int*)(local132 - 212) = 0x41414141;
                        *(int*)(local132 - 216) = 0x41414141;
                        *(int*)(local132 - 232) = (unsigned short) (global12);
                        *(int*)(local132 - 236) = global11;
                        *(int*)(local132 - 240) = global10;
                        *(int*)(local132 - 244) = global9;
                        *(int*)(local132 - 248) = global8;
                        *(int*)(local132 - 252) = global7;
                        *(int*)(local132 - 256) = global6;
                        *(int*)(local132 - 260) = global5;
                        *(int*)(local132 - 264) = global4;
                        *(int*)(local132 - 304) = 84;
                        *(int*)(local132 - 308) = 0;
                        *(int*)(local132 - 312) = local132 - 296;
                        local44 = *(int*)(local132 - 320);
                        local43 = *(int*)(local132 - 336);
                        local42 = *(int*)(local132 - 340);
                        local41 = *(int*)(local132 - 344);
                        local121 = local30;
                        local122 = local31;
                        local123 = local32;
                        local124 = local33;
                        local125 = local40;
                        local126 = local30;
                        local127 = local31;
                        if (local40 == 0) {
                            free(local30);
                            FindAtomA(local33);
                            param1 = (unsigned short) (param1);
                            goto L3;
                        }
                        goto L1;
                    }
                }
            } else {
                param2 = 241;
                param3 = local132 - 4;
                local109 = param4;
                local110 = param5;
            }
        } else {
            local129 = local78;
            param1 = (unsigned short) local78;
            local107 = local129;
        }
    } else {
        goto L29;
    }
    local129 = local107;
    local131 = local108;
    param4 = local109;
    param5 = local110;
    return local129; /* WARNING: Also returning: param4, param1, local130, local131, param2, param3, param5 */
}

// address: 0x405730
void __imp_abort() {
    abort();
    return;
}

// address: 0x405880
int proc53() {
    return 0;
}

// address: 0x405820
void __imp_InterlockedIncrement(int param1) {
    int local3; 		// r28

    InterlockedIncrement(param1);
    return;
}

// address: 0x4047d0
char proc55() {
    int local11; 		// r28
    int local5; 		// r8{52}
    int local6; 		// r8{31}
    int local7; 		// r8
    DWORD local8; 		// r24
    int local9; 		// r25

    local8 = TlsAlloc();
    if (local8 == -1) {
        local8 = GetLastError();
        local5 =  (local8 == 0) ? 1 : 0;
        local7 = (unsigned char) (local5);
        *(int*)(global1 + 44) = (local5);
    } else {
        local8 = proc53();
        local6 =  (local8 == 0) ? 1 : 0;
        local7 = (unsigned char) (local6);
        *(int*)(global1 + 44) = (local6);
    }
    return local7; /* WARNING: Also returning: local9 */
}

// address: 0x404b30
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 local0; 		// r28{86}
    int local1; 		// r26{86}
    int local10; 		// m[m[0x40c0d0]{0} + 20]{244}
    int local100; 		// m[r27]{237}
    int local101; 		// m[r28]{162}
    int local102; 		// m[r30]{22}
    int local103; 		// m[m[0x40c0d0]{0}]{238}
    int local104; 		// m[0x40c0d0]{239}
    int local105; 		// %pc{100}
    int local106; 		// m[r30]{163}
    int local107; 		// r28{13}
    int local108; 		// r29{3}
    int local109;
    int local11; 		// m[m[0x40c0d0]{0} + 24]{245}
    int local110; 		// m[r28 + 8]{61}
    int local111; 		// m[r28 + 12]{61}
    int local112; 		// m[r28 + 16]{61}
    int local113; 		// m[r28 + 20]{61}
    int local114; 		// m[r28 + 4]{61}
    int local115; 		// m[m[0x40c0d0]{0} + 4]{61}
    int local116; 		// m[m[0x40c0d0]{0} + 8]{61}
    int local117; 		// m[m[0x40c0d0]{0} + 20]{61}
    int local118; 		// m[m[0x40c0d0]{0} + 24]{61}
    int local119; 		// m[m[0x40c0d0]{0} + 28]{61}
    int local12; 		// m[m[0x40c0d0]{0} + 28]{246}
    int local120; 		// m[m[0x40c0d0]{0} + 32]{61}
    int local121; 		// m[m[0x40c0d0]{0} + 40]{61}
    int local122; 		// m[m[0x40c0d0]{0} + 44]{61}
    int local123; 		// m[m[0x40c0d0]{0} + 48]{61}
    int local124; 		// m[m[0x40c0d0]{0} + 52]{61}
    int local125; 		// m[m[0x40c0d0]{0} + 56]{61}
    int local126; 		// m[m[0x40c0d0]{0} + 60]{61}
    int local127; 		// m[m[0x40c0d0]{0} + 64]{61}
    int local128; 		// m[m[0x40c0d0]{0} + 68]{61}
    int local129; 		// m[m[0x40c0d0]{0} + 72]{61}
    int local13; 		// m[m[0x40c0d0]{0} + 32]{247}
    int local130; 		// m[m[0x40c0d0]{0} + 76]{61}
    int local131; 		// m[m[0x40c0d0]{0} + 80]{61}
    int local132; 		// m[global1{0} + 44]{61}
    int local133; 		// m[global1{0} + 48]{61}
    int local134; 		// m[global1{0} + 52]{61}
    int local135; 		// m[(r26 + r28) - 160]{61}
    int local136; 		// m[(r26 + r28) - 252]{61}
    int local137; 		// m[(r26 + r28) - 364]{61}
    int local138;
    int local139; 		// m[r28 - 4]{61}
    int local14; 		// m[m[0x40c0d0]{0} + 40]{248}
    int local140; 		// m[r28 - 60]{61}
    int local141; 		// m[r28 - 68]{61}
    int local142; 		// m[r28 - 4]{1}
    int local143; 		// m[r28 - 8]{4}
    int local144; 		// m[r28 - 12]{7}
    int local145; 		// m[r28 - 16]{10}
    int local146; 		// m[r28 - 44]{61}
    int local147; 		// m[r26]{61}
    int local148; 		// m[r27]{61}
    int local149; 		// m[r28]{61}
    int local15; 		// m[m[0x40c0d0]{0} + 44]{249}
    int local150; 		// m[r30]{61}
    int local151; 		// m[m[0x40c0d0]{0}]{61}
    void *local152; 		// %pc{61}
    int local153; 		// r29{95}
    int local154; 		// m[r28 - 4]
    int local155; 		// r26{61}
    int local156; 		// r28{61}
    int local157; 		// local2{93}
    int local158; 		// local3{94}
    int local159; 		// local153{95}
    int local16; 		// m[m[0x40c0d0]{0} + 48]{250}
    void *local160; 		// local105{100}
    int local161; 		// local61{151}
    int local162; 		// local62{152}
    int local163; 		// local63{153}
    int local164; 		// local64{154}
    int local165; 		// local65{155}
    int local166; 		// local94{156}
    int local167; 		// local95{157}
    int local168; 		// local96{158}
    int local169; 		// local97{159}
    int local17; 		// m[m[0x40c0d0]{0} + 52]{251}
    int local170; 		// local90{160}
    int local171; 		// local91{161}
    int local172; 		// local101{162}
    int local173; 		// local106{163}
    int local174; 		// local66{209}
    int local175; 		// local67{210}
    int local176; 		// local68{211}
    int local177; 		// local69{212}
    int local178; 		// local70{213}
    int local179; 		// local71{214}
    int local18; 		// m[m[0x40c0d0]{0} + 56]{252}
    int local180; 		// local72{215}
    int local181; 		// local73{216}
    int local182; 		// local74{217}
    int local183; 		// local75{218}
    int local184; 		// local76{219}
    int local185; 		// local77{220}
    int local186; 		// local78{221}
    int local187; 		// local79{222}
    int local188; 		// local80{223}
    int local189; 		// local81{224}
    int local19; 		// m[m[0x40c0d0]{0} + 60]{253}
    int local190; 		// local82{225}
    int local191; 		// local83{226}
    int local192; 		// local84{227}
    int local193; 		// local85{228}
    int local194; 		// local86{229}
    int local195; 		// local87{230}
    int local196; 		// local88{231}
    int local197; 		// local89{232}
    int local198; 		// local92{233}
    int local199; 		// local93{234}
    int local2; 		// r27{93}
    int local20; 		// m[m[0x40c0d0]{0} + 64]{254}
    int local200; 		// local98{235}
    int local201; 		// local99{236}
    int local202; 		// local100{237}
    int local203; 		// local103{238}
    int local204; 		// local104{239}
    int local205; 		// local45{240}
    int local206; 		// local48{108}
    int local207; 		// local4{109}
    int local208; 		// r30{110}
    int local209; 		// r31{111}
    int local21; 		// m[m[0x40c0d0]{0} + 68]{255}
    int local210; 		// local46{114}
    int local211; 		// local49{166}
    int local212; 		// local50{167}
    int local213; 		// local51{168}
    int local214; 		// local52{169}
    int local215; 		// local53{170}
    int local216; 		// local34{171}
    int local217; 		// local35{172}
    int local218; 		// local36{173}
    int local219; 		// local37{174}
    int local22; 		// m[m[0x40c0d0]{0} + 72]{256}
    int local220; 		// local54{175}
    int local221; 		// local31{176}
    int local222; 		// local55{177}
    int local223; 		// local41{178}
    int local224; 		// local7{241}
    int local225; 		// local8{242}
    int local226; 		// local9{243}
    int local227; 		// local10{244}
    int local228; 		// local11{245}
    int local229; 		// local12{246}
    int local23; 		// m[m[0x40c0d0]{0} + 76]{257}
    int local230; 		// local13{247}
    int local231; 		// local14{248}
    int local232; 		// local15{249}
    int local233; 		// local16{250}
    int local234; 		// local17{251}
    int local235; 		// local18{252}
    int local236; 		// local19{253}
    int local237; 		// local20{254}
    int local238; 		// local21{255}
    int local239; 		// local22{256}
    int local24; 		// m[m[0x40c0d0]{0} + 80]{258}
    int local240; 		// local23{257}
    int local241; 		// local24{258}
    int local242; 		// local25{259}
    int local243; 		// local26{260}
    int local244; 		// local27{261}
    int local245; 		// local28{262}
    int local246; 		// local29{263}
    int local247; 		// local30{264}
    int local248; 		// local32{265}
    int local249; 		// local33{266}
    int local25; 		// m[global1{0} + 44]{259}
    int local250; 		// local38{267}
    int local251; 		// local39{268}
    int local252; 		// local40{269}
    int local253; 		// local42{270}
    int local254; 		// local56{271}
    int local255; 		// local57{272}
    int local256; 		// local58{118}
    int local257; 		// r26{124}
    int local258; 		// r28{126}
    int local259; 		// m[0x40c0d0]{303}
    int local26; 		// m[global1{0} + 48]{260}
    int local260; 		// global1{304}
    int local261; 		// r26{138}
    int local262; 		// r28{140}
    int local263; 		// m[0x40c0d0]{335}
    int local264; 		// global1{336}
    char local265; 		// r11
    int local266; 		// r25
    int local267; 		// r28
    int local27; 		// m[global1{0} + 52]{261}
    int local28; 		// m[(r26 + r28) - 160]{262}
    int local29; 		// m[(r26 + r28) - 252]{263}
    int local3; 		// r28{94}
    int local30; 		// m[(r26 + r28) - 364]{264}
    int local31; 		// m[r28 - 4]{176}
    int local32; 		// m[r28 - 60]{265}
    int local33; 		// m[r28 - 68]{266}
    int local34; 		// m[r28 - 4]{171}
    int local35; 		// m[r28 - 8]{172}
    int local36; 		// m[r28 - 12]{173}
    int local37; 		// m[r28 - 16]{174}
    int local38; 		// m[r28 - 44]{267}
    int local39; 		// m[r26]{268}
    int local4; 		// r29{109}
    int local40; 		// m[r27]{269}
    int local41; 		// m[r30]{178}
    int local42; 		// m[m[0x40c0d0]{0}]{270}
    int local43; 		// m[0x40c0d0]{61}
    int local44; 		// global1{61}
    int local45; 		// global1{240}
    int local46; 		// %pc{114}
    int local47; 		// r27{39}
    int local48; 		// r28{108}
    int local49; 		// m[r28 + 4]{166}
    int local5; 		// r30{96}
    int local50; 		// m[r28 + 8]{167}
    int local51; 		// m[r28 + 12]{168}
    int local52; 		// m[r28 + 16]{169}
    int local53; 		// m[r28 + 20]{170}
    int local54; 		// m[r28 - 4]{175}
    int local55; 		// m[r28]{177}
    int local56; 		// m[0x40c0d0]{271}
    int local57; 		// global1{272}
    int local58; 		// r26{118}
    int local59; 		// r26{30}
    int local6; 		// r31{97}
    int local60; 		// r26{27}
    int local61; 		// m[r28 + 4]{151}
    int local62; 		// m[r28 + 8]{152}
    int local63; 		// m[r28 + 12]{153}
    int local64; 		// m[r28 + 16]{154}
    int local65; 		// m[r28 + 20]{155}
    int local66; 		// m[r28 + 4]{209}
    int local67; 		// m[m[0x40c0d0]{0} + 4]{210}
    int local68; 		// m[m[0x40c0d0]{0} + 8]{211}
    int local69; 		// m[m[0x40c0d0]{0} + 20]{212}
    int local7; 		// m[r28 + 4]{241}
    int local70; 		// m[m[0x40c0d0]{0} + 24]{213}
    int local71; 		// m[m[0x40c0d0]{0} + 28]{214}
    int local72; 		// m[m[0x40c0d0]{0} + 32]{215}
    int local73; 		// m[m[0x40c0d0]{0} + 40]{216}
    int local74; 		// m[m[0x40c0d0]{0} + 44]{217}
    int local75; 		// m[m[0x40c0d0]{0} + 48]{218}
    int local76; 		// m[m[0x40c0d0]{0} + 52]{219}
    int local77; 		// m[m[0x40c0d0]{0} + 56]{220}
    int local78; 		// m[m[0x40c0d0]{0} + 60]{221}
    int local79; 		// m[m[0x40c0d0]{0} + 64]{222}
    int local8; 		// m[m[0x40c0d0]{0} + 4]{242}
    int local80; 		// m[m[0x40c0d0]{0} + 68]{223}
    int local81; 		// m[m[0x40c0d0]{0} + 72]{224}
    int local82; 		// m[m[0x40c0d0]{0} + 76]{225}
    int local83; 		// m[m[0x40c0d0]{0} + 80]{226}
    int local84; 		// m[global1{0} + 44]{227}
    int local85; 		// m[global1{0} + 48]{228}
    int local86; 		// m[global1{0} + 52]{229}
    int local87; 		// m[(r26 + r28) - 160]{230}
    int local88; 		// m[(r26 + r28) - 252]{231}
    int local89; 		// m[(r26 + r28) - 364]{232}
    int local9; 		// m[m[0x40c0d0]{0} + 8]{243}
    int local90; 		// m[r28 - 4]{160}
    int local91; 		// m[r28 - 4]{161}
    int local92; 		// m[r28 - 60]{233}
    int local93; 		// m[r28 - 68]{234}
    int local94; 		// m[r28 - 4]{156}
    int local95; 		// m[r28 - 8]{157}
    int local96; 		// m[r28 - 12]{158}
    int local97; 		// m[r28 - 16]{159}
    int local98; 		// m[r28 - 44]{235}
    int local99; 		// m[r26]{236}

    local142 = param20;
    local108 = local267 - 4;
    local143 = param22;
    param22 = param17;
    local144 = param21;
    param21 = param18;
    local145 = param19;
    local107 = local267 - 44;
    param17 = param40;
    local206 = local107;
    local207 = local108;
    local208 = param21;
    local209 = param22;
    local211 = *(int*)(local48 + 4);
    local212 = *(int*)(local48 + 8);
    local213 = *(int*)(local48 + 12);
    local214 = *(int*)(local48 + 16);
    local215 = *(int*)(local48 + 20);
    local216 = local142;
    local217 = local143;
    local218 = local144;
    local219 = local145;
    local220 = *(int*)(local48 - 4);
    local221 = *(int*)(local3 - 4);
    local222 = *(int*)local48;
    local223 = *(int*)local5;
    local224 = *(int*)(local3 + 4);
    local225 = *(int*)(*(int*)0x40c0d0 + 4);
    local226 = *(int*)(*(int*)0x40c0d0 + 8);
    local227 = *(int*)(*(int*)0x40c0d0 + 20);
    local228 = *(int*)(*(int*)0x40c0d0 + 24);
    local229 = *(int*)(*(int*)0x40c0d0 + 28);
    local230 = *(int*)(*(int*)0x40c0d0 + 32);
    local231 = *(int*)(*(int*)0x40c0d0 + 40);
    local232 = *(int*)(*(int*)0x40c0d0 + 44);
    local233 = *(int*)(*(int*)0x40c0d0 + 48);
    local234 = *(int*)(*(int*)0x40c0d0 + 52);
    local235 = *(int*)(*(int*)0x40c0d0 + 56);
    local236 = *(int*)(*(int*)0x40c0d0 + 60);
    local237 = *(int*)(*(int*)0x40c0d0 + 64);
    local238 = *(int*)(*(int*)0x40c0d0 + 68);
    local239 = *(int*)(*(int*)0x40c0d0 + 72);
    local240 = *(int*)(*(int*)0x40c0d0 + 76);
    local241 = *(int*)(*(int*)0x40c0d0 + 80);
    local242 = *(int*)(global1 + 44);
    local243 = *(int*)(global1 + 48);
    local244 = *(int*)(global1 + 52);
    local245 = *(int*)(local1 + local3 - 160);
    local246 = *(int*)(local1 + local3 - 252);
    local247 = *(int*)(local1 + local3 - 364);
    local248 = *(int*)(local3 - 60);
    local249 = *(int*)(local3 - 68);
    local250 = *(int*)(local267 - 44);
    local251 = *(int*)param18;
    local252 = *(int*)local2;
    local253 = *(int*)*(int*)0x40c0d0;
    local254 = *(int*)0x40c0d0;
    local255 = global1;
    for(;;) {
        local48 = local206;
        local4 = local207;
        param21 = local208;
        param22 = local209;
        local46 = local210;
        local49 = local211;
        local50 = local212;
        local51 = local213;
        local52 = local214;
        local53 = local215;
        local34 = local216;
        local35 = local217;
        local36 = local218;
        local37 = local219;
        local54 = local220;
        local31 = local221;
        local55 = local222;
        local41 = local223;
        local7 = local224;
        local8 = local225;
        local9 = local226;
        local10 = local227;
        local11 = local228;
        local12 = local229;
        local13 = local230;
        local14 = local231;
        local15 = local232;
        local16 = local233;
        local17 = local234;
        local18 = local235;
        local19 = local236;
        local20 = local237;
        local21 = local238;
        local22 = local239;
        local23 = local240;
        local24 = local241;
        local25 = local242;
        local26 = local243;
        local27 = local244;
        local28 = local245;
        local29 = local246;
        local30 = local247;
        local32 = local248;
        local33 = local249;
        local38 = local250;
        local39 = local251;
        local40 = local252;
        local42 = local253;
        local56 = local254;
        local57 = local255;
        local266 = 0;
        local60 = 5;
        local158 = local48;
        local159 = local4;
        local160 = local46;
        local161 = local49;
        local162 = local50;
        local163 = local51;
        local164 = local52;
        local165 = local53;
        local166 = local34;
        local167 = local35;
        local168 = local36;
        local169 = local37;
        local170 = local54;
        local171 = local31;
        local172 = local55;
        local173 = local41;
        local174 = local7;
        local175 = local8;
        local176 = local9;
        local177 = local10;
        local178 = local11;
        local179 = local12;
        local180 = local13;
        local181 = local14;
        local182 = local15;
        local183 = local16;
        local184 = local17;
        local185 = local18;
        local186 = local19;
        local187 = local20;
        local188 = local21;
        local189 = local22;
        local190 = local23;
        local191 = local24;
        local192 = local25;
        local193 = local26;
        local194 = local27;
        local195 = local28;
        local196 = local29;
        local197 = local30;
        local198 = local32;
        local199 = local33;
        local200 = local38;
        local201 = local39;
        local202 = local40;
        local203 = local42;
        local204 = local56;
        local205 = local57;
        local256 = local60;
        local258 = local48;
        local259 = local56;
        local260 = local57;
        if (param17 != 0) {
            local266 = *(int*)(param17 + 24);
            local59 = 0;
            local256 = local59;
        }
        local58 = local256;
        local265 =  (param17 == *(int*)(param22 + 16)) ? 1 : 0;
        param19 = 0 >> 8 & 0xffffff | (local265);
        local47 = param19 * 4;
        local157 = local47;
        local257 = local58;
        if (local58 != 0) {
            break;
        }
        if (local266 != 0) {
            (*local266)(local33, local32, local38, local37, local36, local35, local34, local46, local31, local7, param19 * 4 | 2, *(int*)(local3 + 8), *(int*)param22, *(int*)(local3 + 12), *(int*)(param22 + 4), *(int*)(local3 + 16), param22, *(int*)(local3 + 20), param21, param15, param16, local265, param19 * 4 | 2, local266, *(int*)(param22 + 4), param19 * 4, local4, param21, param22, *(int*)local3, *(int*)(local6 + 12), *(int*)(local6 + 16), local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, local21, local22, local23, local24, local25, local26, local27, *(int*)(local45 + 40), *(int*)(local45 + 44), *(int*)(local45 + 48), *(int*)(local45 + 52), *(int*)(local1 + local3 - 100), local28, *(int*)(local1 + local3 - 192), local29, *(int*)(local1 + local3 - 304), local30, *(int*)(local153 - 20), local39, local40, 1, local41, local42, param44, LOGICALFLAGS32(param19 * 4 | 2), LOGICALFLAGS32(param19 * 4 | 2));
            local157 = param19;
            local158 = local156;
            local159 = param20;
            local160 = local152;
            local161 = local109;
            local162 = local110;
            local163 = local111;
            local164 = local112;
            local165 = local113;
            local166 = *(int*)(local267 - 4);
            local167 = *(int*)(local267 - 8);
            local168 = *(int*)(local267 - 12);
            local169 = *(int*)(local267 - 16);
            local170 = local138;
            local171 = local139;
            local172 = local149;
            local173 = local150;
            local174 = local114;
            local175 = local115;
            local176 = local116;
            local177 = local117;
            local178 = local118;
            local179 = local119;
            local180 = local120;
            local181 = local121;
            local182 = local122;
            local183 = local123;
            local184 = local124;
            local185 = local125;
            local186 = local126;
            local187 = local127;
            local188 = local128;
            local189 = local129;
            local190 = local130;
            local191 = local131;
            local192 = local132;
            local193 = local133;
            local194 = local134;
            local195 = local135;
            local196 = local136;
            local197 = local137;
            local198 = local140;
            local199 = local141;
            local200 = local146;
            local201 = local147;
            local202 = local148;
            local203 = local151;
            local204 = local43;
            local205 = local44;
            local257 = local155;
            local258 = local156;
            local259 = local43;
            local260 = local44;
            local261 = local155;
            local262 = local156;
            local263 = local43;
            local264 = local44;
            if (param17 == 7) {
                goto L0;
            }
            if (param17 != 8) {
                break;
            }
L6:
            local2 = local157;
            local3 = local158;
            local153 = local159;
            local5 = param21;
            local6 = param22;
            local105 = local160;
            local61 = local161;
            local62 = local162;
            local63 = local163;
            local64 = local164;
            local65 = local165;
            local94 = local166;
            local95 = local167;
            local96 = local168;
            local97 = local169;
            local90 = local170;
            local91 = local171;
            local101 = local172;
            local106 = local173;
            local66 = local174;
            local67 = local175;
            local68 = local176;
            local69 = local177;
            local70 = local178;
            local71 = local179;
            local72 = local180;
            local73 = local181;
            local74 = local182;
            local75 = local183;
            local76 = local184;
            local77 = local185;
            local78 = local186;
            local79 = local187;
            local80 = local188;
            local81 = local189;
            local82 = local190;
            local83 = local191;
            local84 = local192;
            local85 = local193;
            local86 = local194;
            local87 = local195;
            local88 = local196;
            local89 = local197;
            local92 = local198;
            local93 = local199;
            local98 = local200;
            local99 = local201;
            local100 = local202;
            local103 = local203;
            local104 = local204;
            local45 = local205;
            local206 = local3;
            local207 = local153;
            local208 = local5;
            local209 = local6;
            local210 = local105;
            local211 = local61;
            local212 = local62;
            local213 = local63;
            local214 = local64;
            local215 = local65;
            local216 = local94;
            local217 = local95;
            local218 = local96;
            local219 = local97;
            local220 = local90;
            local221 = local91;
            local222 = local101;
            local224 = local66;
            local225 = local67;
            local226 = local68;
            local227 = local69;
            local228 = local70;
            local229 = local71;
            local230 = local72;
            local231 = local73;
            local232 = local74;
            local233 = local75;
            local234 = local76;
            local235 = local77;
            local236 = local78;
            local237 = local79;
            local238 = local80;
            local239 = local81;
            local240 = local82;
            local241 = local83;
            local242 = local84;
            local243 = local85;
            local244 = local86;
            local245 = local87;
            local246 = local88;
            local247 = local89;
            local248 = local92;
            local249 = local93;
            local250 = local98;
            local251 = local99;
            local252 = local100;
            local253 = local103;
            local254 = local104;
            local255 = local45;
            if (local2 != 0) {
                abort();
                proc35(*(int*)(local3 - 64), *(int*)(local3 + 4), *(int*)(local3 + 8), *(int*)(local3 + 12), *(int*)(local3 + 16), *(int*)(local3 + 20), param15, param16, local266, local1, local2, local153, local5, local6, *(int*)(local6 + 12), *(int*)(local6 + 16), *(int*)(local45 + 40), *(int*)(local45 + 44), *(int*)(local45 + 48), *(int*)(local45 + 52), *(int*)(local1 + local3 - 100), *(int*)(local1 + local3 - 160), *(int*)(local1 + local3 - 192), *(int*)(local1 + local3 - 252), *(int*)(local1 + local3 - 304), *(int*)(local1 + local3 - 364), *(int*)(local1 + local3 - 100), *(int*)(local1 + local3 - 192), *(int*)(local1 + local3 - 304), *(int*)(local1 + local3 - 160), *(int*)(local1 + local3 - 252), *(int*)(local1 + local3 - 364), *(int*)(local2 + local3 - 164), *(int*)(local2 + local3 - 256), *(int*)(local2 + local3 - 368), *(int*)(local153 - 20), *(int*)local2, local106, param44);
                return;
            }
            goto L5;
        }
        goto L6;
L5:
        param17 = *(int*)local106;
        local102 = *(int*)local106;
        local223 = local102;
    }
    param18 = local257;
    local267 = local258;
    global1 = local259;
    global1 = local260;
    param17 = 2;
    local261 = param18;
    local262 = local267;
    local263 = *(int*)0x40c0d0;
    local264 = global1;
L0:
    param18 = local261;
    local267 = local262;
    global1 = local263;
    global1 = local264;
    return param17; /* WARNING: Also returning: *(int*)(local267 + 32), local265, local266, param18, *(int*)(local267 + 28), *(int*)(local267 + 40), *(int*)(local267 + 36) */
}

// address: 0x404d50
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) {
    int local0; 		// r28{156}
    int local1; 		// r29{157}
    int local10;
    int local100; 		// r29{141}
    int local101; 		// m[r24 + 12]{333}
    int local102; 		// m[r24 + 16]{334}
    int local103; 		// m[r28 + 4]{217}
    int local104; 		// m[r28 + 8]{218}
    int local105; 		// m[r28 + 12]{219}
    int local106; 		// m[r28 + 16]{220}
    int local107; 		// m[r28 + 20]{221}
    int local108; 		// m[r28 + 4]{222}
    int local109; 		// m[r28 + 8]{223}
    int local11;
    int local110; 		// m[r28 + 12]{224}
    int local111; 		// m[r28 + 16]{225}
    int local112; 		// m[r28 + 20]{226}
    int local113; 		// m[r28 + 24]{227}
    int local114; 		// m[r28 - 4]{234}
    int local115; 		// m[r28 - 4]{235}
    int local116; 		// m[r28 - 4]{228}
    int local117; 		// m[r28 - 8]{229}
    int local118; 		// m[r28 - 12]{230}
    int local119; 		// m[r28 - 16]{231}
    int local12;
    int local120; 		// m[r28 - 20]{232}
    int local121; 		// m[r28 - 24]{233}
    int local122; 		// m[r28 - 60]{335}
    int local123; 		// m[r29 - 24]{236}
    int local124; 		// m[r26]{336}
    int local125; 		// m[r28]{237}
    int local126; 		// m[r28]{238}
    int local127; 		// m[r30]{23}
    int local128; 		// %pc{146}
    int local129; 		// m[r30]{239}
    int local13;
    int local130; 		// r24{19}
    int local131; 		// r28{13}
    int local132; 		// r29{3}
    int local133; 		// r30{9}
    int local134; 		// m[r24 + 12]{97}
    int local135; 		// m[r24 + 16]{97}
    int local136;
    int local137;
    int local138;
    int local139;
    int local14; 		// m[r28 - 4]{74}
    int local140;
    int local141; 		// m[r28 + 4]{97}
    int local142; 		// m[r28 + 8]{97}
    int local143; 		// m[r28 + 12]{97}
    int local144; 		// m[r28 + 16]{97}
    int local145; 		// m[r28 + 20]{97}
    int local146; 		// m[r28 + 24]{97}
    int local147;
    int local148;
    int local149; 		// m[r28 - 4]{1}
    int local15; 		// m[r28 - 8]{74}
    int local150; 		// m[r28 - 8]{4}
    int local151; 		// m[r28 - 12]{7}
    int local152; 		// m[r28 - 16]{10}
    int local153; 		// m[r28 - 20]{16}
    int local154; 		// m[r28 - 24]{18}
    int local155; 		// m[r28 - 60]{97}
    int local156; 		// m[r29 - 24]{97}
    int local157; 		// m[r26]{97}
    int local158;
    int local159; 		// m[r28]{97}
    int local16; 		// m[r28 - 12]{74}
    int local160; 		// m[r30]{97}
    void *local161; 		// %pc{97}
    int local162; 		// m[r28 - 4]
    int local163; 		// %pc
    int local164; 		// r26{97}
    int local165; 		// r28{97}
    int local166; 		// r29{97}
    int local167; 		// r30{97}
    int local168; 		// m[r28 - 4]{97}
    int local169; 		// m[r28 - 8]{97}
    int local17; 		// m[r28 - 16]{74}
    int local170; 		// m[r28 - 12]{97}
    int local171; 		// m[r28 - 16]{97}
    int local172; 		// m[r28 - 20]{97}
    int local173; 		// m[r28 - 24]{97}
    int local174; 		// r24{97}
    int local175; 		// local99{140}
    int local176; 		// local100{141}
    int local177; 		// local3{142}
    void *local178; 		// local128{146}
    int local179; 		// local103{217}
    int local18; 		// m[r28 - 20]{74}
    int local180; 		// local104{218}
    int local181; 		// local105{219}
    int local182; 		// local106{220}
    int local183; 		// local107{221}
    int local184; 		// local108{222}
    int local185; 		// local109{223}
    int local186; 		// local110{224}
    int local187; 		// local111{225}
    int local188; 		// local112{226}
    int local189; 		// local113{227}
    int local19; 		// m[r28 - 24]{74}
    int local190; 		// local116{228}
    int local191; 		// local117{229}
    int local192; 		// local118{230}
    int local193; 		// local119{231}
    int local194; 		// local120{232}
    int local195; 		// local121{233}
    int local196; 		// local114{234}
    int local197; 		// local115{235}
    int local198; 		// local123{236}
    int local199; 		// local125{237}
    int local2; 		// r29{74}
    int local20; 		// m[r28 - 60]{74}
    int local200; 		// local126{238}
    int local201; 		// local129{239}
    int local202; 		// local101{333}
    int local203; 		// local102{334}
    int local204; 		// local122{335}
    int local205; 		// local124{336}
    int local206; 		// local95{152}
    int local207; 		// local0{156}
    int local208; 		// local1{157}
    int local209; 		// local45{158}
    int local21;
    int local210; 		// local73{162}
    int local211; 		// local48{240}
    int local212; 		// local49{241}
    int local213; 		// local50{242}
    int local214; 		// local51{243}
    int local215; 		// local52{244}
    int local216; 		// local83{245}
    int local217; 		// local84{246}
    int local218; 		// local85{247}
    int local219; 		// local86{248}
    int local22; 		// m[r26]{74}
    int local220; 		// local87{249}
    int local221; 		// local88{250}
    int local222; 		// local60{251}
    int local223; 		// local61{252}
    int local224; 		// local62{253}
    int local225; 		// local63{254}
    int local226; 		// local64{255}
    int local227; 		// local65{256}
    int local228; 		// local59{257}
    int local229; 		// local89{258}
    int local23; 		// m[r28]{74}
    int local230; 		// local70{260}
    int local231; 		// local90{261}
    int local232; 		// local71{262}
    int local233; 		// local46{337}
    int local234; 		// local47{338}
    int local235; 		// local66{339}
    int local236; 		// local69{340}
    int local237; 		// local91{165}
    int local238; 		// local44{166}
    int local239; 		// local67{263}
    int local24;
    int local240; 		// r26{174}
    int local241; 		// r28{176}
    int local242; 		// r26{206}
    int local243; 		// r28{208}
    char local244; 		// r8
    char local245; 		// r10
    int local246; 		// r28
    void *local25; 		// %pc{74}
    void *local26; 		// m[r28 - 4]{95}
    int local27; 		// r28{74}
    int local28; 		// m[r28]{93}
    int local29; 		// m[r28 + 12]{92}
    int local3; 		// r30{142}
    int local30; 		// m[r28 + 8]{91}
    int local31; 		// m[r28 + 4]{90}
    int local32; 		// m[r28 + 16]{87}
    int local33; 		// m[r28 + 20]{85}
    int local34;
    int local35;
    int local36;
    int local37;
    int local38;
    int local39;
    int local4; 		// r30{74}
    int local40;
    int local41; 		// r26{74}
    int local42; 		// r24{74}
    int local43; 		// r25{54}
    int local44; 		// r26{166}
    int local45; 		// r30{158}
    int local46; 		// m[r24 + 12]{337}
    int local47; 		// m[r24 + 16]{338}
    int local48; 		// m[r28 + 4]{240}
    int local49; 		// m[r28 + 8]{241}
    int local5; 		// m[r24 + 12]{74}
    int local50; 		// m[r28 + 12]{242}
    int local51; 		// m[r28 + 16]{243}
    int local52; 		// m[r28 + 20]{244}
    int local53; 		// m[r28 + 4]{74}
    int local54; 		// m[r28 + 8]{74}
    int local55; 		// m[r28 + 12]{74}
    int local56; 		// m[r28 + 16]{74}
    int local57; 		// m[r28 + 20]{74}
    int local58; 		// m[r28 + 24]{74}
    int local59; 		// m[r28 - 4]{257}
    int local6; 		// m[r24 + 16]{74}
    int local60; 		// m[r28 - 4]{251}
    int local61; 		// m[r28 - 8]{252}
    int local62; 		// m[r28 - 12]{253}
    int local63; 		// m[r28 - 16]{254}
    int local64; 		// m[r28 - 20]{255}
    int local65; 		// m[r28 - 24]{256}
    int local66; 		// m[r28 - 60]{339}
    int local67; 		// m[r29 - 24]{263}
    int local68; 		// m[r29 - 24]{74}
    int local69; 		// m[r26]{340}
    int local7;
    int local70; 		// m[r28]{260}
    int local71; 		// m[r30]{262}
    int local72; 		// m[r30]{74}
    int local73; 		// %pc{162}
    int local74; 		// m[r28 - 4]{72}
    int local75; 		// m[r28]{70}
    int local76; 		// m[r28 + 12]{69}
    int local77; 		// m[r28 + 8]{68}
    int local78; 		// m[r28 + 4]{67}
    int local79; 		// m[r28 + 16]{64}
    int local8;
    int local80; 		// m[r28 + 24]{58}
    int local81; 		// m[r28 + 20]{52}
    int local82; 		// r26{43}
    int local83; 		// m[r28 + 4]{245}
    int local84; 		// m[r28 + 8]{246}
    int local85; 		// m[r28 + 12]{247}
    int local86; 		// m[r28 + 16]{248}
    int local87; 		// m[r28 + 20]{249}
    int local88; 		// m[r28 + 24]{250}
    int local89; 		// m[r28 - 4]{258}
    int local9;
    int local90; 		// m[r28]{261}
    int local91; 		// r24{165}
    int local92; 		// r24{29}
    int local93; 		// r26{30}
    int local94; 		// m[r29 - 24]{32}
    int local95; 		// r24{152}
    int local96; 		// r26{27}
    int local97; 		// m[r29 - 24]{24}
    int local98; 		// r24{22}
    int local99; 		// r28{140}

    local232 = *(int*)local3;
    local231 = *(int*)local0;
    local230 = *(int*)local27;
    local229 = *(int*)(local0 - 4);
    local228 = *(int*)(local27 - 4);
    local221 = *(int*)(local0 + 24);
    local220 = *(int*)(local0 + 20);
    local219 = *(int*)(local0 + 16);
    local218 = *(int*)(local0 + 12);
    local217 = *(int*)(local0 + 8);
    local216 = *(int*)(local0 + 4);
    local215 = *(int*)(local27 + 20);
    local214 = *(int*)(local27 + 16);
    local213 = *(int*)(local27 + 12);
    local212 = *(int*)(local27 + 8);
    local211 = *(int*)(local27 + 4);
    local149 = param12;
    local132 = local246 - 4;
    local150 = param14;
    param14 = param8;
    local151 = param13;
    local133 = param10;
    local152 = param11;
    local131 = local246 - 60;
    local153 = param15;
    local154 = param16;
    local130 = param18;
    local206 = local130;
    local207 = local131;
    local208 = local132;
    local209 = local133;
    local210 = local163;
    local222 = local149;
    local223 = local150;
    local224 = local151;
    local225 = local152;
    local226 = local153;
    local227 = local154;
    local233 = *(int*)(param8 + 12);
    local234 = *(int*)(param8 + 16);
    local235 = *(int*)(local246 - 60);
    local236 = *(int*)param10;
    for(;;) {
        local95 = local206;
        local0 = local207;
        local1 = local208;
        local45 = local209;
        local73 = local210;
        local48 = local211;
        local49 = local212;
        local50 = local213;
        local51 = local214;
        local52 = local215;
        local83 = local216;
        local84 = local217;
        local85 = local218;
        local86 = local219;
        local87 = local220;
        local88 = local221;
        local60 = local222;
        local61 = local223;
        local62 = local224;
        local63 = local225;
        local64 = local226;
        local65 = local227;
        local59 = local228;
        local89 = local229;
        local70 = local230;
        local90 = local231;
        local71 = local232;
        local46 = local233;
        local47 = local234;
        local66 = local235;
        local69 = local236;
        local97 = 0;
        local96 = 5;
        local237 = local95;
        local238 = local96;
        local239 = local97;
        local241 = local0;
        if (local95 != 0) {
            local92 = *(int*)(local95 + 24);
            local93 = 0;
            local94 = *(int*)(local95 + 24);
            local237 = local92;
            local238 = local93;
            local239 = local94;
        }
        local91 = local237;
        local44 = local238;
        local67 = local239;
        local244 =  (local44 != 0) ? 1 : 0;
        local245 =  (local44 != 5) ? 1 : 0;
        local82 = 0 >> 8 & 0xffffff | (local245);
        local240 = local82;
        if (((local91 >> 8 & 0xffffff | (local244)) & (0 >> 8 & 0xffffff | (local245))) != 0) {
L1:
            param10 = local240;
            local246 = local241;
            param8 = 2;
            param11 = *(int*)(local246 + 44);
            param13 = *(int*)(local246 + 48);
            param14 = *(int*)(local246 + 52);
            param12 = *(int*)(local246 + 56);
            goto L0;
        }
        local81 = local45;
        param7 =  (local44 == 5) ? 1 : 0;
        local43 = 0 >> 8 & 0xffffff | (param7);
        local80 = *(int*)(local1 - 20);
        param9 = (local43 - 1 & 0xfffffff0) + 26;
        local79 = param14;
        local78 = param9;
        local77 = *(int*)param14;
        local76 = *(int*)(param14 + 4);
        local75 = 1;
        local74 = local73;
        (**(int*)(local1 - 16))(local66, local65, local64, local63, local62, local61, local59, local73, local60, param1, local48, param9, param2, local49, *(int*)param14, param3, local50, *(int*)(param14 + 4), param4, local51, param14, param5, local52, local45, param6, *(int*)(local1 - 20), local244, param7, local245, *(int*)param14, param9, *(int*)(param14 + 4), local44, local1, local45, param14, local46, local47, local67, param17, local69, local70, 1, local71, param19, param20, ADDFLAGS32(local43 - 1 & 0xfffffff0, 26, param9), ADDFLAGS32(local43 - 1 & 0xfffffff0, 26, param9));
        local175 = local27;
        local176 = local2;
        local177 = local4;
        local178 = local25;
        local179 = local34;
        local180 = local35;
        local181 = local36;
        local182 = local37;
        local183 = local38;
        local184 = local7;
        local185 = local8;
        local186 = local9;
        local187 = local10;
        local188 = local11;
        local189 = local12;
        local190 = local14;
        local191 = local15;
        local192 = local16;
        local193 = local17;
        local194 = local18;
        local195 = local19;
        local196 = local39;
        local197 = local13;
        local198 = local21;
        local199 = local40;
        local200 = local23;
        local201 = local24;
        local202 = local5;
        local203 = local6;
        local204 = local20;
        local205 = local22;
        local240 = local41;
        local241 = local27;
        local242 = local41;
        local243 = local27;
        if (local42 != 0) {
            goto L1;
        }
        if (param11 == 5) {
            break;
        }
        if (*(int*)(local2 - 24) != 0) {
            local33 = local4;
            local32 = param14;
            local31 = 10;
            local30 = *(int*)param14;
            local29 = *(int*)(param14 + 4);
            local28 = 1;
            local26 = local25;
            (**(int*)(local2 - 24))(local20, local19, local18, local17, local16, local15, local14, local25, local13, local53, 10, local7, local54, *(int*)param14, local8, local55, *(int*)(param14 + 4), local9, local56, param14, local10, local57, local4, local11, local58, local12, local244, param7, local245, *(int*)param14, param9, *(int*)(param14 + 4), 10, local2, local4, param14, local5, local6, local21, local68, local22, 1, local23, local24, local72, param20, LOGICALFLAGS32(*(int*)(local2 - 24)), LOGICALFLAGS32(*(int*)(local2 - 24)));
            local175 = local165;
            local176 = local166;
            local177 = local167;
            local178 = local161;
            local179 = local136;
            local180 = local137;
            local181 = local138;
            local182 = local139;
            local183 = local140;
            local184 = local141;
            local185 = local142;
            local186 = local143;
            local187 = local144;
            local188 = local145;
            local189 = local146;
            local190 = local168;
            local191 = local169;
            local192 = local170;
            local193 = local171;
            local194 = local172;
            local195 = local173;
            local196 = local147;
            local197 = local148;
            local198 = local156;
            local199 = local158;
            local200 = local159;
            local201 = local160;
            local202 = local134;
            local203 = local135;
            local204 = local155;
            local205 = local157;
            local240 = local164;
            local241 = local165;
            local242 = local164;
            local243 = local165;
            param11 = local174;
            if (local174 == 7) {
                break;
            }
            if (local174 != 8) {
                goto L1;
            }
            goto L3;
        }
L3:
        local99 = local175;
        local100 = local176;
        local3 = local177;
        local128 = local178;
        local103 = local179;
        local104 = local180;
        local105 = local181;
        local106 = local182;
        local107 = local183;
        local108 = local184;
        local109 = local185;
        local110 = local186;
        local111 = local187;
        local112 = local188;
        local113 = local189;
        local116 = local190;
        local117 = local191;
        local118 = local192;
        local119 = local193;
        local120 = local194;
        local121 = local195;
        local114 = local196;
        local115 = local197;
        local123 = local198;
        local125 = local199;
        local126 = local200;
        local129 = local201;
        local101 = local202;
        local102 = local203;
        local122 = local204;
        local124 = local205;
        local98 = *(int*)local129;
        local127 = *(int*)local129;
        local206 = local98;
        local207 = local99;
        local208 = local100;
        local209 = local3;
        local210 = local128;
        local211 = local103;
        local212 = local104;
        local213 = local105;
        local214 = local106;
        local215 = local107;
        local216 = local108;
        local217 = local109;
        local218 = local110;
        local219 = local111;
        local220 = local112;
        local221 = local113;
        local222 = local116;
        local223 = local117;
        local224 = local118;
        local225 = local119;
        local226 = local120;
        local227 = local121;
        local228 = local114;
        local229 = local115;
        local230 = local125;
        local231 = local126;
        local232 = local127;
        local233 = local101;
        local234 = local102;
        local235 = local122;
        local236 = local124;
    }
    param10 = local242;
    local246 = local243;
    param8 = param11;
    param11 = *(int*)(local246 + 44);
    param13 = *(int*)(local246 + 48);
    param14 = *(int*)(local246 + 52);
    param12 = *(int*)(local246 + 56);
L0:
    return param8; /* WARNING: Also returning: param13, local244, param7, local245, param9, param10, param11, param12, param14 */
}

// address: 0x405870
void __imp_InterlockedDecrement(int param1) {
    int local3; 		// r28

    InterlockedDecrement(param1);
    return;
}

// address: 0x404100
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) {
    int local0; 		// r24{12}
    int local1; 		// r24{82}
    int local10; 		// r29{45}
    int local11; 		// r30{43}
    int local12; 		// r29{12}
    int local13; 		// r26{35}
    int local14; 		// r24{19}
    int local15; 		// r27{12}
    int local16; 		// r28{12}
    int local17; 		// r30{12}
    int local18; 		// r27{58}
    int local19; 		// r29{61}
    int local2; 		// r26{18}
    int local20; 		// r30{59}
    int local21; 		// r29{57}
    int local22; 		// r27{93}
    int local23; 		// r29{97}
    int local24; 		// r30{93}
    int local25; 		// r29{93}
    int local26; 		// r28{57}
    int local27; 		// r28{93}
    int local28; 		// r28{82}
    int local29; 		// r30{82}
    int local3; 		// <all>{82}
    int local30; 		// r29{82}
    int local31; 		// r24{107}
    int local32; 		// r26{108}
    int local33; 		// r24{113}
    int local34; 		// local6{124}
    int local35; 		// local8{126}
    int local36; 		// local7{127}
    int local37; 		// r24
    int local38; 		// r26
    int local39; 		// r28
    int local4; 		// r24{24}
    int local40; 		// r31
    int local5; 		// r26{30}
    int local6; 		// r27{124}
    int local7; 		// r30{127}
    int local8; 		// r29{126}
    int local9; 		// r27{42}

    param14 = param6;
    param5 = param5;
    param6 = param7;
    local0 = proc49(param1, param2, param4, param5, local39 - 4, param7, local40, param8, param9, param10, param11, param12, param13, param18); /* Warning: also results in param1, param2, param4, local38, local16, local12, local40 */
    local33 = local0;
    if (*(int*)local0 == 0) {
L1:
        local37 = local33;
        local9 = *(int*)(local12 - 8);
        local11 = *(int*)(local12 - 4);
        local10 = *(int*)local12;
        local34 = local9;
        local35 = local10;
        local36 = local11;
    } else {
        local2 = *(int*)(*(int*)local0 + 52);
        local14 = *(int*)(*(int*)local0 + 48);
        local4 = local14 ^ 0x432b2b00;
        param2 = (unsigned char) local14 ^ 0x432b2b00;
        param4 = local2 ^ 0x474e5543 | local14 ^ 0x432b2b00;
        local31 = local4;
        local31 = local4;
        if ((local2 ^ 0x474e5543 | local14 ^ 0x432b2b00) != 0) {
L3:
            param2 = (unsigned char) *(int*)local0 + 48;
            local37 = proc50(local12, *(int*)local0 + 48); /* Warning: also results in local38, local21 */
            local18 = *(int*)(local21 - 8);
            local20 = *(int*)(local21 - 4);
            local19 = *(int*)local21;
            local34 = local18;
            local35 = local19;
            local36 = local20;
        } else {
            local5 = *(int*)(*(int*)local0 + 20);
            if (local5 < 0) {
                local38 = local5 + 1;
                local32 = local38;
                local32 = local38;
                if (local5 + 1 == 0) {
                    local37 = *(int*)(*(int*)local0 + 16);
                    param2 = (unsigned char) local37;
                    local31 = local37;
                }
L5:
                local37 = local31;
                local38 = local32;
                *(int*)(*(int*)local0 + 20) = local38;
                local33 = local37;
                goto L1;
            } else {
                local13 = local5 - 1;
                local32 = local13;
                if (local5 - 1 == 0) {
                    goto L3;
                } else {
                    if (local5 - 1 < 0) {
                        local29 = proc37(*(int*)(local16 + 4), *(int*)(local16 + 8), *(int*)(local16 + 12), param1, (unsigned char) local14 ^ 0x432b2b00, local2 ^ 0x474e5543 | local14 ^ 0x432b2b00, local5 - 1, *(int*)local0, local12, local0, local40, param15, param16, param17, param18, param19, param20, param8, param9, param10, param11, param25, param26, param27, param12, param13, param30, param31, *(int*)(local5 + local16 - 157), *(int*)(local5 + local16 - 249), *(int*)(local5 + local16 - 361), *(int*)(global1 + local16 - 244), *(int*)(global1 + local16 - 248), *(int*)(global1 + local16 - 260), *(int*)(global1 + local16 - 336), *(int*)(global1 + local16 - 340), *(int*)(global1 + local16 - 352), *(int*)(global1 + local16 - 448), *(int*)(global1 + local16 - 452), *(int*)(global1 + local16 - 464), *(int*)local0, *(int*)local16, param44, *(int*)*(int*)local0, param45, *(int*)global2, param18); /* Warning: also results in param4, local28, local40 */
                        local37 = proc34(param1, (unsigned char) local14 ^ 0x432b2b00, param3, param4, *(int*)local0, local28 - 4, local29, local40, param8, param9, param10, param11, param12, param13, local3); /* Warning: also results in local24, param1, param4, local38, local22, local25, local40 */
                        local34 = local22;
                        local36 = local24;
                        local23 = *(int*)local25;
                        param2 =  (param23 != 0) ? 1 : 0;
                        local37 = (param2);
                        param2 = (unsigned char) (param2);
                        local35 = local23;
                    } else {
                        goto L5;
                    }
                }
            }
        }
    }
    local6 = local34;
    local8 = local35;
    local7 = local36;
    param14 = param6;
    param6 = param7;
    param5 = param5;
    return local37; /* WARNING: Also returning: local7, param1, param2, param4, local38, local6, local8, local40 */
}

// address: 0x401e40
void proc60(char param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8) {
    int local10; 		// r25{196}
    int local13; 		// r25{181}
    int local14; 		// r25{87}
    int local15; 		// r31{170}
    int local17; 		// r25{166}
    int local18; 		// r25{65}
    int local23; 		// r24{158}
    int local24; 		// r24{26}
    int local26; 		// r24{10}
    int local27; 		// local23{158}
    int local28; 		// local17{166}
    int local29; 		// local13{181}
    int local30; 		// local10{196}
    int local34; 		// r28
    int local36; 		// r31
    int local4; 		// m[r28 - 20]

    local26 = 0;
    local27 = local26;
    local28 = param3;
    local30 = param3;
    if (param2 != 0) {
        local24 = proc63();
        local27 = local24;
    }
    local23 = local27;
    *(int*)param3 = local23;
    if ((unsigned char) *(unsigned char*)param4 == -1) {
        param2 = *(unsigned char*)(param4 + 1);
        local36 = param4 + 2;
        *(char*)(param3 + 20) = (unsigned char) param2;
        if ((unsigned char) param2 + 1 != 0) {
L3:
            local17 = local28;
            local15 = local36;
            local14 = proc66(local15, local17, local34 - 20, param5);
            local29 = local14;
            param5 = local4;
            local36 = local15;
            *(int*)(param3 + 12) = local15 + local4;
        } else {
L4:
            local10 = local30;
            *(int*)(param3 + 12) = 0;
            local29 = local10;
        }
    } else {
        param5 = ((unsigned char) *(unsigned char*)param4);
        param2 = proc64((unsigned char) ((unsigned char) *(unsigned char*)param4), ((unsigned char) *(unsigned char*)param4), param2, param4 + 1);
        param2 = proc65(param3 + 4, (unsigned char) ((unsigned char) *(unsigned char*)param4), param1, (unsigned char) param2, param4 + 1, ((unsigned char) *(unsigned char*)param4), param6, param7); /* Warning: also results in local18 */
        local28 = local18;
        local30 = local18;
        local36 = param2 + 1;
        *(char*)(param3 + 20) = (unsigned char) *(unsigned char*)param2;
        if ((unsigned char) *(unsigned char*)param2 + 1 == 0) {
            goto L4;
        } else {
            goto L3;
        }
    }
    local13 = local29;
    *(char*)(param3 + 21) = (unsigned char) *(unsigned char*)local36;
    proc66(local36 + 1, local13, local34 - 20, param5);
    *(int*)(param3 + 16) = local36 + local4 + 1;
    return;
}

// address: 0x402000
int proc61(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9) {
    int local2; 		// r28{13}
    int local3; 		// r28{91}
    char local4; 		// r8
    char local5; 		// r9
    char local6; 		// r10
    char local7; 		// r11
    int local8; 		// r28

    *(int*)(local8 - 4) = param6;
    param6 = local8 - 4;
    *(int*)(local8 - 8) = param8;
    param8 = param4;
    *(int*)(local8 - 12) = param7;
    *(int*)(local8 - 16) = param5;
    local2 = local8 - 28;
    *(int*)(local8 - 24) = param3;
    param3 = param1;
    param5 = param9 - param1 - 1;
    param7 = param2;
    local3 = local2;
    do {
        local8 = local3;
        local5 = proc66(param5, param3, param6 - 16, param5); /* Warning: also results in local6, local7, param3 */
        param4 = *(int*)(param6 - 16);
        if (*(int*)(param6 - 16) == 0) {
            param2 = 0;
            local4 = 0;
            param5 = *(int*)(local8 + 12);
            param7 = *(int*)(local8 + 16);
            param8 = *(int*)(local8 + 20);
            param6 = *(int*)(local8 + 24);
            goto L0;
        }
        param2 = proc67(local5, local6, param7, *(int*)(param6 - 16), *(int*)(param7 + 12), *(int*)(param7 + 20)); /* Warning: also results in local5, local6, local7 */
        param3 = param6 - 20;
        param7 = proc68(param2, param6 - 20, param8, param5, param6, param7, param8, *(int*)(param6 - 16), *(int*)(param6 - 20), *(int*)param8); /* Warning: also results in local4, param4, param5, param6, param8 */
        local3 = local8;
    } while (local4 == 0);
    param2 = 1;
    local4 = 1;
    param5 = *(int*)(local8 + 12);
    param7 = *(int*)(local8 + 16);
    param8 = *(int*)(local8 + 20);
    param6 = *(int*)(local8 + 24);
L0:
    return param2; /* WARNING: Also returning: param7, local4, local5, local6, local7, param3, param4, param5, param6, param8 */
}

// address: 0x403920
void proc62(int param4, int param5, char param6, int param7, int param8, int param9, int param10, int param11, int param12, int param32) {
    int local0; 		// m[r28 - 132]
    int local1; 		// m[r28 - 100]
    int local10; 		// m[r28 - 24]
    int local100; 		// local45{54}
    int local101; 		// local46{56}
    int local102; 		// local47{57}
    int local103; 		// local48{58}
    int local104; 		// local49{59}
    int local105; 		// local51{62}
    int local106; 		// local87{90}
    int local107; 		// local88{91}
    int local108; 		// local90{93}
    int local109; 		// local91{96}
    int local11; 		// m[r28 - 20]
    int local110; 		// r24
    int local111; 		// r26
    int local112; 		// r28
    int local113; 		// r31
    int local12; 		// m[r28 - 16]
    int local13[41]; 		// m[r28 - 164]
    int local14[64]; 		// m[r28 - 256]
    int local15[92]; 		// m[r28 - 368]
    int local16[115];
    int local17[115]; 		// m[r28 - 460]
    int local18; 		// r30{47}
    int local19; 		// r0{68}
    int local2; 		// m[r28 - 96]
    int local20; 		// r8{69}
    int local21; 		// r27{75}
    int local22; 		// r28{76}
    int local23; 		// r30{78}
    short local24; 		// r0{43}
    char local25; 		// r8{43}
    char local26; 		// r9{43}
    char local27; 		// r10{43}
    int local28; 		// r25{43}
    int local29; 		// r26{43}
    int local3; 		// m[r28 - 92]
    int local30; 		// r27{43}
    int local31; 		// r30{43}
    int local32; 		// r31{43}
    short local33; 		// r0{38}
    char local34; 		// r9{38}
    char local35; 		// r10{38}
    int local36; 		// r25{38}
    int local37; 		// r27{38}
    int local38; 		// r30{38}
    int local39; 		// r31{38}
    int local4; 		// m[r28 - 80]
    char local40; 		// r8{38}
    int local41; 		// r26{38}
    int local42; 		// r0{51}
    int local43; 		// r8{52}
    char local44; 		// r9{53}
    int local45; 		// r10{54}
    int local46; 		// r25{56}
    int local47; 		// r26{57}
    int local48; 		// r27{58}
    int local49; 		// r28{59}
    int local5; 		// m[r28 - 72]
    int local50; 		// r30{61}
    int local51; 		// r31{62}
    int local52; 		// m[global1{0} + 4]{63}
    int local53; 		// m[global1{0} + 8]{63}
    int local54; 		// m[global1{0} + 20]{63}
    int local55; 		// m[global1{0} + 24]{63}
    int local56; 		// m[global1{0} + 28]{63}
    int local57; 		// m[global1{0} + 32]{63}
    int local58; 		// m[global1{0} + 40]{63}
    int local59; 		// m[global1{0} + 44]{63}
    int local6; 		// m[r28 - 56]
    int local60; 		// m[global1{0} + 48]{63}
    int local61; 		// m[global1{0} + 52]{63}
    int local62; 		// m[global1{0} + 56]{63}
    int local63; 		// m[global1{0} + 60]{63}
    int local64; 		// m[global1{0} + 64]{63}
    int local65; 		// m[global1{0} + 68]{63}
    int local66; 		// m[global1{0} + 72]{63}
    int local67; 		// m[global1{0} + 76]{63}
    int local68; 		// m[global1{0} + 80]{63}
    int local69; 		// m[global1{0}]{63}
    int local7; 		// m[r28 - 52]
    int local70; 		// r25{25}
    int local71; 		// r26{18}
    int local72; 		// r28{9}
    int local73; 		// r31{12}
    int local74; 		// m[m[r24]{12} + 20]{12}
    int local75; 		// r24{19}
    int local76; 		// r25{12}
    int local77; 		// r26{12}
    int local78; 		// r25{73}
    int local79; 		// r31{79}
    int local8; 		// m[r28 - 40]
    int local80; 		// r26{74}
    int local81; 		// r29{38}
    int local82; 		// r28{38}
    int local83; 		// r0{85}
    int local84; 		// r8{86}
    char local85; 		// r9{87}
    int local86; 		// r10{88}
    int local87; 		// r25{90}
    int local88; 		// r26{91}
    int local89; 		// r27{92}
    int local9; 		// m[r28 - 28]
    int local90; 		// r28{93}
    int local91; 		// r31{96}
    int local92; 		// r25{47}
    int local93; 		// r26{47}
    int local94; 		// r28{44}
    int local95; 		// r31{47}
    char local96; 		// r11{43}
    int local97; 		// local42{51}
    int local98; 		// local43{52}
    char local99; 		// local44{53}

L-1:
    param11 = param11;
    param4 = param10;
    *(int*)(local112 - 8) = param12;
    local72 = local112 - 32;
    local110 = proc34(param4, param5, param7, param9, param10, local112 - 4, param12, local113, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), *(int*)(global1 + 68), *(int*)(global1 + 72), param32); /* Warning: also results in param4, param5, param7, param11, local73 */
    local97 = param4;
    local98 = param5;
    local99 = param6;
    local100 = param7;
    local104 = local72;
    local105 = local73;
    local108 = local72;
    local109 = local73;
L-1:
    param10 = param39;
    param12 = local110;
    local103 = param10;
    if (param39 == 0) {
L-1:
        local94 = local22 - 4;
        local92 = proc37(*(int*)(local22 + 4), *(int*)(local22 + 8), *(int*)(local22 + 12), local19, local20, local78, local80, local21, param11, local23, local79, param18, param19, param20, param21, param22, param23, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), param28, param29, param30, *(int*)(global1 + 68), *(int*)(global1 + 72), param33, param34, *(int*)(local80 + local22 - 156), *(int*)(local80 + local22 - 248), *(int*)(local80 + local22 - 360), *(int*)(global1 + local22 - 244), *(int*)(global1 + local22 - 248), *(int*)(global1 + local22 - 260), *(int*)(global1 + local22 - 336), *(int*)(global1 + local22 - 340), *(int*)(global1 + local22 - 352), *(int*)(global1 + local22 - 448), *(int*)(global1 + local22 - 452), *(int*)(global1 + local22 - 464), *(int*)local21, *(int*)local22, *(int*)local23, *(int*)local79, param47, *(int*)global2, param32); /* Warning: also results in local93, param11, local95 */
        local106 = local92;
        local107 = local93;
        local108 = local94;
        local109 = local95;
L-1:
L-1:
        local83 = param4;
        local84 = param5;
        local85 = param6;
        local86 = param7;
        local87 = local106;
        local88 = local107;
        local89 = param10;
        local90 = local108;
        local91 = local109;
        local97 = local83;
        local98 = local84;
        local99 = local85;
        local100 = local86;
        local101 = local87;
        local102 = local88;
        local103 = local89;
        local104 = local90;
        local105 = local91;
L-1:
        local42 = local97;
        local43 = local98;
        local44 = local99;
        local45 = local100;
        local46 = local101;
        local47 = local102;
        local48 = local103;
        local49 = local104;
        local50 = param12;
        local51 = local105;
        local38 = proc38(*(int*)(local49 + 4), *(int*)(local49 + 8), *(int*)(local49 + 12), *(int*)(local49 + 16), local42, local43, local44, local45, local46, local47, local48 + 48, param11, local50, local51, *(int*)(local48 + 48), *(int*)(local51 + 12), *(int*)(local51 + 16), local52, local53, local54, local55, local56, local57, local58, local59, local60, local61, local62, local63, local64, local65, local66, local67, local68, *(int*)(local47 + local49 - 104), *(int*)(local47 + local49 - 148), *(int*)(local47 + local49 - 152), *(int*)(local47 + local49 - 196), *(int*)(local47 + local49 - 212), *(int*)(local47 + local49 - 240), *(int*)(local47 + local49 - 244), *(int*)(local47 + local49 - 304), *(int*)(local47 + local49 - 308), *(int*)(local47 + local49 - 352), *(int*)(local47 + local49 - 356), *(int*)(local47 + local49 - 416), *(int*)(local47 + local49 - 104), *(int*)(local47 + local49 - 196), *(int*)(local47 + local49 - 308), *(int*)(local47 + local49 - 148), *(int*)(local47 + local49 - 152), *(int*)(local47 + local49 - 212), *(int*)(local47 + local49 - 240), *(int*)(local47 + local49 - 244), *(int*)(local47 + local49 - 304), *(int*)(local47 + local49 - 352), *(int*)(local47 + local49 - 356), *(int*)(local47 + local49 - 416), param35, param36, param37, *(int*)(param11 - 20), *(int*)(param11 - 24), local48 + 48, param42, *(int*)local50, local69, param32); /* Warning: also results in local33, local34, local35, local36, local37, local81, local39 */
L-1:
        param11 = proc36(local33, local34, local35, param8, local36, local37, local81, local38, local39, *(int*)(global1 + 40), *(int*)(global1 + 44), *(int*)(global1 + 48), *(int*)(global1 + 52), param32);
        goto L-1;
    }
L-1:
    local71 = *(int*)(param39 + 52);
    local75 = *(int*)(param39 + 48);
    local70 = local71 ^ 0x474e5543 | local75 ^ 0x432b2b00;
    local101 = local70;
    local102 = local71;
    local106 = local70;
    local107 = local71;
    if ((local71 ^ 0x474e5543 | local75 ^ 0x432b2b00) != 0) {
        goto L-1;
    }
L-1:
    *(int*)(param39 + 20) = 0 - local74;
    goto L-1;
}

// address: 0x404af0
int proc63() {
    return 0;
}

// address: 0x401c30
int proc64(char param1, int param2, int param3, int param4) {
    int local3; 		// r24{12}
    int local4; 		// r24{88}
    int local5; 		// r25
    int local7; 		// r28

    local7 = local7 - 12;
    if (param1 == -1) {
L1:
        param2 = 0;
    } else {
        local3 = param2 & 0x70;
        local4 = local3;
        if ((param2 & 0x70) == 32) {
            param2 = proc69();
            local5 = param2;
L2:
            param2 = local5;
        } else {
            if ((param2 & 0x70) <= 32) {
                param2 = local4;
                while (param2 != 0) {
                    flags = SUBFLAGS32(param2, 16, param2 - 16);
L8:
                    if (flags) {
                        goto L6;
                    }
                    goto L5;
L6:
                    abort();
                    local4 = param2;
                    param2 = local4;
                }
L5:
                goto L1;
            } else {
                if ((param2 & 0x70) == 64) {
                    param2 = proc63();
                    local5 = param2;
                    goto L2;
                } else {
                    if ((param2 & 0x70) > 64) {
                        flags = SUBFLAGS32(param2 & 0x70, 80, (param2 & 0x70) - 80);
                        goto L8;
                    } else {
                        if ((param2 & 0x70) == 48) {
                            param2 = proc70();
                            local5 = param2;
                            goto L2;
                        } else {
                            goto L6;
                        }
                    }
                }
            }
        }
    }
    return param2;
}

// address: 0x401d70
int proc65(int param1, char param2, char param3, char param4, int param5, int param6, int param7, int ??, int param9) {
    int local1; 		// m[r28 - 20]
    int local11; 		// r25{65}
    int local12; 		// r27{11}
    int local13; 		// r25{163}
    int local15; 		// r25{150}
    char local16; 		// r11
    int local17; 		// r24
    int local18; 		// r26
    int local19; 		// r28
    int local2; 		// m[r28 - 24]

    local16 = param2;
    local12 = param6 >> 8 & 0xffffff | (param2);
    if (param2 == 80) {
        local11 = (param5 + 3 & 0xfffffffc) + 4;
        *(int*)param1 = param7;
        local17 = (param5 + 3 & 0xfffffffc) + 4;
        local15 = local11;
    } else {
        if ((unsigned)(local12 & 0xf) > 12) {
L10:
            abort();
L9:
            local13 = param5;
            local18 = (int) *(int*)local13;
            param5 = local13 + 2;
L8:
            local15 = param5;
            if (local18 != 0) {
                if ((local12 & 0x70) == 16) {
                } else {
                }
                if (local16 < 0) {
                    local18 = *(int*)local18;
                }
            }
            *(int*)param1 = local18;
            local17 = param5;
            goto L0;
        }
        switch((param6 >> 8 & 0xffffff | (param2)) & 0xf) {
        case 0:
L11:
            local18 = param9;
            param5 += 4;
            goto L8;
            break;
        case 1:
            param3 = proc66(param5, param5, local19 - 20, local12); /* Warning: also results in param4, local16 */
            local18 = local1;
            goto L8;
            break;
        case 2:
            local18 = *(unsigned short*)param5;
            param5 += 2;
            goto L8;
            break;
        case 3:
            goto L11;
            break;
        case 4:
L15:
            local18 = param9;
            param5 += 8;
            goto L8;
            break;
        case 5:
            goto L10;
            break;
        case 6:
            goto L10;
            break;
        case 7:
            goto L10;
            break;
        case 8:
            goto L10;
            break;
        case 9:
            param4 = proc71(param5, local19 - 24, local12); /* Warning: also results in local16 */
            local18 = local2;
            goto L8;
            break;
        case 10:
            goto L9;
            break;
        case 11:
            goto L11;
            break;
        case 12:
            goto L15;
            break;
        }
        goto L8;
    }
L0:
    param5 = local15;
    return local17; /* WARNING: Also returning: param3, param4, (unsigned char) param6, param5 */
}

// address: 0x401cb0
char proc66(int param1, int param2, int param3, int param4) {
    int local10; 		// r27{16}
    int local11; 		// r11{65}
    int local12; 		// local9{69}
    int local13; 		// local8{75}
    char local16; 		// r11
    int local17; 		// r28
    int local18; 		// r30
    int local5; 		// r11{27}
    int local6; 		// r27{26}
    int local7; 		// m[r28 - 20]{34}
    int local8; 		// m[r28 - 20]{75}
    int local9; 		// r27{69}

    local10 = 0;
    local16 = 0;
    local18 = 0;
    local11 = local16;
    local12 = local10;
    local13 = *(int*)(local17 - 20);
    do {
        local16 = local11;
        local9 = local12;
        local8 = local13;
        param2 = param2 >> 8 & 0xffffff | (local16);
        local6 = local9 + 1;
        local5 = (unsigned char) (local9 + 1) * 7;
        local7 = local8 + 1;
        local18 = local18 | (*(unsigned char*)local8 & 0x7f) << param2;
        local11 = local5;
        local12 = local6;
        local13 = local7;
    } while ((unsigned char) *(unsigned char*)local8 < 0);
    *(int*)param3 = local18;
    return local16; /* WARNING: Also returning: (unsigned char) local8 + 1, (unsigned char) param4, param2 */
}

// address: 0x401f10
int proc67(char param1, char param2, int param3, int param4, int param5, int param6) {
    int local1; 		// m[r28 - 16]
    int local11; 		// r28{77}
    int local12; 		// r28{11}
    int local13; 		// r26{94}
    int local14; 		// local11{77}
    int local15; 		// local8{86}
    int local16; 		// local7{95}
    char local18; 		// r11
    int local19; 		// r25
    int local21; 		// r28
    int local22; 		// r30
    int local6; 		// r24{14}
    int local7; 		// r28{95}
    int local8; 		// r28{86}
    int local9; 		// r28{34}

    local22 = 0;
    local12 = local21 - 28;
    local6 = *(unsigned char*)(param3 + 20);
    local14 = local12;
    local15 = local12;
    local16 = local12;
    local16 = local12;
    local16 = local12;
    if ((unsigned char) local6 != -1) {
        local22 = 2;
        local19 = local6 & 0x7;
        if ((local6 & 0x7) != 2) {
            if ((local6 & 0x7) > 2) {
                local8 = local15;
                local22 = 4;
                local14 = local8;
                local16 = local8;
                local16 = local8;
                while (local19 != 3) {
                    if (local19 != 4) {
                        goto L2;
                    }
                    local22 = 8;
                    goto L1;
L2:
                    local11 = local14;
                    abort();
                    local15 = local9;
                    local8 = local15;
                    local22 = 4;
                    local14 = local8;
                    local16 = local8;
                    local16 = local8;
                }
            } else {
                local22 = 4;
                if ((local6 & 0x7) != 0) {
                    goto L2;
                }
            }
        }
    }
L1:
    local13 = param4;
    local7 = local16;
    *(int*)local7 = local21 - 16;
    param1 = proc65((unsigned char) ((unsigned char) local6), param1, param2, param5 - local22 * local13, local21 - 16, *(int*)(param5 - local22 * local13), *(int*)(param5 - local22 * local13 + 3 & 0xfffffffc), local21 - 16); /* Warning: also results in param2, local18 */
    return local1; /* WARNING: Also returning: param1, param2, local18 */
}

// address: 0x401f90
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 local0; 		// r25{22}
    int local1; 		// r29{22}
    int local10; 		// m[r25]{22}
    int local11; 		// m[r31]{42}
    int local12; 		// m[r31]{22}
    void *local13; 		// %pc{22}
    int local14; 		// m[r28 - 48]{20}
    int local15; 		// m[r28 - 44]{18}
    int local16; 		// m[r28 - 20]{15}
    int local17; 		// m[r28 - 8]{13}
    int local18; 		// m[r28 - 16]{11}
    int local19; 		// m[r28 - 12]{7}
    int local2; 		// r31{22}
    int local20; 		// m[r28 - 4]{1}
    char local21; 		// r8
    int local22; 		// r28
    int local3; 		// r31{42}
    int local4; 		// m[r26]{22}
    int local5;
    int local6; 		// r28{22}
    int local7; 		// m[m[r26]{0} + 8]{22}
    int local8;
    int local9; 		// m[r29 - 16]{22}

    local20 = param5;
    local19 = param6;
    local18 = param4;
    local17 = param7;
    local16 = param9;
    local15 = param3;
    (**(int*)(param10 + 8))(pc, param3, param9, param4, param6, param7, param5, (unsigned char) param10, param10, param2, param3, param3, local22 - 4, param1, param2, *(int*)(param10 + 8), *(int*)(local1 - 16), param8, param9, param10, *(int*)local3, param11, SUBFLAGS32(local22 - 4, 40, local22 - 44), (unsigned)(local22 - 4) < 40);
    if (local21 != 0) {
        param1 = *(int*)local8;
        *(int*)(local1 - 16) = param1;
    }
    *(int*)(local6 + 4) = param4;
    *(int*)(local6 + 12) = 1;
    *(int*)(local6 + 8) = local1 - 16;
    *(int*)local6 = param6;
    *(int*)(local6 - 4) = local13;
    (**(int*)(*(int*)param6 + 16))(*(int*)(local22 - 48), *(int*)(local22 - 44), *(int*)(local22 - 20), *(int*)(local22 - 16), *(int*)(local22 - 12), *(int*)(local22 - 8), *(int*)(local22 - 4), local13, param4, local1 - 16, 1, (unsigned char) *(int*)param6, *(int*)param6, local0, local1 - 16, param4, local1, param6, local2, local7, *(int*)(local1 - 16), local9, local10, local4, param6, local5, local12, <all>, LOGICALFLAGS8(local21), LOGICALFLAGS8(local21));
    param3 = 0;
    if (local21 != 0) {
        param3 = 1;
        *(int*)local3 = param8;
    }
    return *(int*)(param5 - 8); /* WARNING: Also returning: (unsigned char) param3, param3, *(int*)(param5 - 12), *(int*)param5, *(int*)(param5 - 4) */
}

// address: 0x404b20
int proc69() {
    return 0;
}

// address: 0x404b10
int proc70() {
    return 0;
}

// address: 0x401d00
char proc71(int param1, int param2, int param3) {
    int local10; 		// r30{84}
    int local11; 		// local10{84}
    int local12; 		// r31{85}
    int local13; 		// local9{98}
    int local14; 		// r31{93}
    int local17; 		// r28
    int local18; 		// r30
    int local19; 		// r31
    int local6; 		// r31{40}
    int local7; 		// r30{24}
    int local8; 		// m[r28 - 24]{31}
    int local9; 		// m[r28 - 24]{98}

    local18 = 0;
    local19 = 0;
    local11 = local18;
    local12 = local19;
    local13 = *(int*)(local17 - 24);
    do {
        local10 = local11;
        local19 = local12;
        local9 = local13;
        local7 = local10 + 1;
        local8 = local9 + 1;
        param1 = ((unsigned char) *(unsigned char*)local9) & 0x7f;
        local6 = local19 | param1 << local10 * 7;
        local11 = local7;
        local12 = local6;
        local13 = local8;
        local14 = local6;
    } while ((unsigned char) *(unsigned char*)local9 < 0);
    if ( !((unsigned)((local10 + 1) * 7) > 31 || ((unsigned char) ((unsigned char) *(unsigned char*)local9) & 0x40) == 0)) {
        local19 = local19 | param1 << local10 * 7 | -1 << (local10 + 1) * 7;
        local14 = local19;
        local14 = local19;
    }
    local19 = local14;
    *(int*)param2 = local19;
    return (unsigned char) *(unsigned char*)local9; /* WARNING: Also returning: (unsigned char) param3 */
}

